// This file is auto-generated by Laravel Wayfinder.
// Do not edit this file directly, any changes will be overwritten.

import { applyUrlDefaults, formSafeOptions, queryParams, type RouteDefinition, type RouteFormDefinition, type RouteQueryOptions } from "./../../index";
import statements from "./statements";
import salesPayments from "./sales-payments";

/**
 * @see \App\Http\Controllers\LoanSaleAgreementController::index
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/LoanSaleAgreementController.php:18
 * @route "/loan-sale-agreements"
 */
export const index = (options?: RouteQueryOptions): RouteDefinition<"get"> => ({
    url: index.url(options),
    method: "get",
})

index.definition = {
    methods: ["get","head"],
    url: "/loan-sale-agreements",
} satisfies RouteDefinition<["get","head"]>

/**
 * @see \App\Http\Controllers\LoanSaleAgreementController::index
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/LoanSaleAgreementController.php:18
 * @route "/loan-sale-agreements"
 */
index.url = (options?: RouteQueryOptions) => {
    return index.definition.url + queryParams(options)
}

/**
 * @see \App\Http\Controllers\LoanSaleAgreementController::index
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/LoanSaleAgreementController.php:18
 * @route "/loan-sale-agreements"
 */
index.get = (options?: RouteQueryOptions): RouteDefinition<"get"> => ({
    url: index.url(options),
    method: "get",
})

/**
 * @see \App\Http\Controllers\LoanSaleAgreementController::index
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/LoanSaleAgreementController.php:18
 * @route "/loan-sale-agreements"
 */
index.head = (options?: RouteQueryOptions): RouteDefinition<"head"> => ({
    url: index.url(options),
    method: "head",
})



/**
 * @see \App\Http\Controllers\LoanSaleAgreementController::index
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/LoanSaleAgreementController.php:18
 * @route "/loan-sale-agreements"
 */
const indexForm = (options?: RouteQueryOptions): RouteFormDefinition<"get"> => ({
    action: index.url(options),
    method: "get",
})

/**
 * @see \App\Http\Controllers\LoanSaleAgreementController::index
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/LoanSaleAgreementController.php:18
 * @route "/loan-sale-agreements"
 */
indexForm.get = (options?: RouteQueryOptions): RouteFormDefinition<"get"> => ({
    action: index.url(options),
    method: "get",
})

/**
 * @see \App\Http\Controllers\LoanSaleAgreementController::index
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/LoanSaleAgreementController.php:18
 * @route "/loan-sale-agreements"
 */
indexForm.head = (options?: RouteQueryOptions): RouteFormDefinition<"get"> => ({
    action: index.url(formSafeOptions("head", options)),
    method: "get",
})



index.form = indexForm
/**
 * @see \App\Http\Controllers\LoanSaleAgreementController::show
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/LoanSaleAgreementController.php:93
 * @route "/loan-sale-agreements/{loan_sale_agreement}"
 */
export const show = (args: { loan_sale_agreement: number | { id: number } } | [ loan_sale_agreement: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<"get"> => ({
    url: show.url(args, options),
    method: "get",
})

show.definition = {
    methods: ["get","head"],
    url: "/loan-sale-agreements/{loan_sale_agreement}",
} satisfies RouteDefinition<["get","head"]>

/**
 * @see \App\Http\Controllers\LoanSaleAgreementController::show
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/LoanSaleAgreementController.php:93
 * @route "/loan-sale-agreements/{loan_sale_agreement}"
 */
show.url = (args: { loan_sale_agreement: number | { id: number } } | [ loan_sale_agreement: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions) => {
    if (typeof args === "string" || typeof args === "number") {
        args = { loan_sale_agreement: args }
    }
    
    if (typeof args === "object" && !Array.isArray(args) && "id" in args) {
        args = { loan_sale_agreement: args.id }
    }
    
    if (Array.isArray(args)) {
        args = {
        loan_sale_agreement: args[0],
    }
    }
    
    args = applyUrlDefaults(args)
    
    const parsedArgs = {
        loan_sale_agreement: typeof args.loan_sale_agreement === "object" ? args.loan_sale_agreement.id : args.loan_sale_agreement,
    }
    
    return show.definition.url
        .replace("{loan_sale_agreement}", parsedArgs.loan_sale_agreement.toString())
        .replace(/\/+$/, "") + queryParams(options)
}

/**
 * @see \App\Http\Controllers\LoanSaleAgreementController::show
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/LoanSaleAgreementController.php:93
 * @route "/loan-sale-agreements/{loan_sale_agreement}"
 */
show.get = (args: { loan_sale_agreement: number | { id: number } } | [ loan_sale_agreement: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<"get"> => ({
    url: show.url(args, options),
    method: "get",
})

/**
 * @see \App\Http\Controllers\LoanSaleAgreementController::show
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/LoanSaleAgreementController.php:93
 * @route "/loan-sale-agreements/{loan_sale_agreement}"
 */
show.head = (args: { loan_sale_agreement: number | { id: number } } | [ loan_sale_agreement: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<"head"> => ({
    url: show.url(args, options),
    method: "head",
})



/**
 * @see \App\Http\Controllers\LoanSaleAgreementController::show
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/LoanSaleAgreementController.php:93
 * @route "/loan-sale-agreements/{loan_sale_agreement}"
 */
const showForm = (args: { loan_sale_agreement: number | { id: number } } | [ loan_sale_agreement: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<"get"> => ({
    action: show.url(args, options),
    method: "get",
})

/**
 * @see \App\Http\Controllers\LoanSaleAgreementController::show
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/LoanSaleAgreementController.php:93
 * @route "/loan-sale-agreements/{loan_sale_agreement}"
 */
showForm.get = (args: { loan_sale_agreement: number | { id: number } } | [ loan_sale_agreement: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<"get"> => ({
    action: show.url(args, options),
    method: "get",
})

/**
 * @see \App\Http\Controllers\LoanSaleAgreementController::show
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/LoanSaleAgreementController.php:93
 * @route "/loan-sale-agreements/{loan_sale_agreement}"
 */
showForm.head = (args: { loan_sale_agreement: number | { id: number } } | [ loan_sale_agreement: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<"get"> => ({
    action: show.url(args, formSafeOptions("head", options)),
    method: "get",
})



show.form = showForm

const loanSaleAgreements = {
    index,
    show,
    statements,
    salesPayments,
}

export default loanSaleAgreements