// 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";

/**
 * @see \App\Http\Controllers\CustomerNextOfKinController::store
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/CustomerNextOfKinController.php:36
 * @route "/customers/{customer}/next-of-kins"
 */
export const store = (args: { customer: number | { id: number } } | [ customer: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<"post"> => ({
    url: store.url(args, options),
    method: "post",
})

store.definition = {
    methods: ["post"],
    url: "/customers/{customer}/next-of-kins",
} satisfies RouteDefinition<["post"]>

/**
 * @see \App\Http\Controllers\CustomerNextOfKinController::store
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/CustomerNextOfKinController.php:36
 * @route "/customers/{customer}/next-of-kins"
 */
store.url = (args: { customer: number | { id: number } } | [ customer: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions) => {
    if (typeof args === "string" || typeof args === "number") {
        args = { customer: args }
    }
    
    if (typeof args === "object" && !Array.isArray(args) && "id" in args) {
        args = { customer: args.id }
    }
    
    if (Array.isArray(args)) {
        args = {
        customer: args[0],
    }
    }
    
    args = applyUrlDefaults(args)
    
    const parsedArgs = {
        customer: typeof args.customer === "object" ? args.customer.id : args.customer,
    }
    
    return store.definition.url
        .replace("{customer}", parsedArgs.customer.toString())
        .replace(/\/+$/, "") + queryParams(options)
}

/**
 * @see \App\Http\Controllers\CustomerNextOfKinController::store
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/CustomerNextOfKinController.php:36
 * @route "/customers/{customer}/next-of-kins"
 */
store.post = (args: { customer: number | { id: number } } | [ customer: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<"post"> => ({
    url: store.url(args, options),
    method: "post",
})



/**
 * @see \App\Http\Controllers\CustomerNextOfKinController::store
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/CustomerNextOfKinController.php:36
 * @route "/customers/{customer}/next-of-kins"
 */
const storeForm = (args: { customer: number | { id: number } } | [ customer: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<"post"> => ({
    action: store.url(args, options),
    method: "post",
})

/**
 * @see \App\Http\Controllers\CustomerNextOfKinController::store
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/CustomerNextOfKinController.php:36
 * @route "/customers/{customer}/next-of-kins"
 */
storeForm.post = (args: { customer: number | { id: number } } | [ customer: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<"post"> => ({
    action: store.url(args, options),
    method: "post",
})



store.form = storeForm
/**
 * @see \App\Http\Controllers\CustomerNextOfKinController::update
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/CustomerNextOfKinController.php:110
 * @route "/customers/{customer}/next-of-kins/{next_of_kin}"
 */
export const update = (args: { customer: string | number, next_of_kin: string | number } | [ customer: string | number, next_of_kin: string | number ], options?: RouteQueryOptions): RouteDefinition<"put"> => ({
    url: update.url(args, options),
    method: "put",
})

update.definition = {
    methods: ["put","patch"],
    url: "/customers/{customer}/next-of-kins/{next_of_kin}",
} satisfies RouteDefinition<["put","patch"]>

/**
 * @see \App\Http\Controllers\CustomerNextOfKinController::update
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/CustomerNextOfKinController.php:110
 * @route "/customers/{customer}/next-of-kins/{next_of_kin}"
 */
update.url = (args: { customer: string | number, next_of_kin: string | number } | [ customer: string | number, next_of_kin: string | number ], options?: RouteQueryOptions) => {
    if (Array.isArray(args)) {
        args = {
        customer: args[0],
        next_of_kin: args[1],
    }
    }
    
    args = applyUrlDefaults(args)
    
    const parsedArgs = {
        customer: args.customer,
        next_of_kin: args.next_of_kin,
    }
    
    return update.definition.url
        .replace("{customer}", parsedArgs.customer.toString())
        .replace("{next_of_kin}", parsedArgs.next_of_kin.toString())
        .replace(/\/+$/, "") + queryParams(options)
}

/**
 * @see \App\Http\Controllers\CustomerNextOfKinController::update
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/CustomerNextOfKinController.php:110
 * @route "/customers/{customer}/next-of-kins/{next_of_kin}"
 */
update.put = (args: { customer: string | number, next_of_kin: string | number } | [ customer: string | number, next_of_kin: string | number ], options?: RouteQueryOptions): RouteDefinition<"put"> => ({
    url: update.url(args, options),
    method: "put",
})

/**
 * @see \App\Http\Controllers\CustomerNextOfKinController::update
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/CustomerNextOfKinController.php:110
 * @route "/customers/{customer}/next-of-kins/{next_of_kin}"
 */
update.patch = (args: { customer: string | number, next_of_kin: string | number } | [ customer: string | number, next_of_kin: string | number ], options?: RouteQueryOptions): RouteDefinition<"patch"> => ({
    url: update.url(args, options),
    method: "patch",
})



/**
 * @see \App\Http\Controllers\CustomerNextOfKinController::update
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/CustomerNextOfKinController.php:110
 * @route "/customers/{customer}/next-of-kins/{next_of_kin}"
 */
const updateForm = (args: { customer: string | number, next_of_kin: string | number } | [ customer: string | number, next_of_kin: string | number ], options?: RouteQueryOptions): RouteFormDefinition<"post"> => ({
    action: update.url(args, formSafeOptions("put", options)),
    method: "post",
})

/**
 * @see \App\Http\Controllers\CustomerNextOfKinController::update
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/CustomerNextOfKinController.php:110
 * @route "/customers/{customer}/next-of-kins/{next_of_kin}"
 */
updateForm.put = (args: { customer: string | number, next_of_kin: string | number } | [ customer: string | number, next_of_kin: string | number ], options?: RouteQueryOptions): RouteFormDefinition<"post"> => ({
    action: update.url(args, formSafeOptions("put", options)),
    method: "post",
})

/**
 * @see \App\Http\Controllers\CustomerNextOfKinController::update
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/CustomerNextOfKinController.php:110
 * @route "/customers/{customer}/next-of-kins/{next_of_kin}"
 */
updateForm.patch = (args: { customer: string | number, next_of_kin: string | number } | [ customer: string | number, next_of_kin: string | number ], options?: RouteQueryOptions): RouteFormDefinition<"post"> => ({
    action: update.url(args, formSafeOptions("patch", options)),
    method: "post",
})



update.form = updateForm
/**
 * @see \App\Http\Controllers\CustomerNextOfKinController::destroy
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/CustomerNextOfKinController.php:118
 * @route "/customers/{customer}/next-of-kins/{next_of_kin}"
 */
export const destroy = (args: { customer: string | number, next_of_kin: string | number } | [ customer: string | number, next_of_kin: string | number ], options?: RouteQueryOptions): RouteDefinition<"delete"> => ({
    url: destroy.url(args, options),
    method: "delete",
})

destroy.definition = {
    methods: ["delete"],
    url: "/customers/{customer}/next-of-kins/{next_of_kin}",
} satisfies RouteDefinition<["delete"]>

/**
 * @see \App\Http\Controllers\CustomerNextOfKinController::destroy
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/CustomerNextOfKinController.php:118
 * @route "/customers/{customer}/next-of-kins/{next_of_kin}"
 */
destroy.url = (args: { customer: string | number, next_of_kin: string | number } | [ customer: string | number, next_of_kin: string | number ], options?: RouteQueryOptions) => {
    if (Array.isArray(args)) {
        args = {
        customer: args[0],
        next_of_kin: args[1],
    }
    }
    
    args = applyUrlDefaults(args)
    
    const parsedArgs = {
        customer: args.customer,
        next_of_kin: args.next_of_kin,
    }
    
    return destroy.definition.url
        .replace("{customer}", parsedArgs.customer.toString())
        .replace("{next_of_kin}", parsedArgs.next_of_kin.toString())
        .replace(/\/+$/, "") + queryParams(options)
}

/**
 * @see \App\Http\Controllers\CustomerNextOfKinController::destroy
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/CustomerNextOfKinController.php:118
 * @route "/customers/{customer}/next-of-kins/{next_of_kin}"
 */
destroy.delete = (args: { customer: string | number, next_of_kin: string | number } | [ customer: string | number, next_of_kin: string | number ], options?: RouteQueryOptions): RouteDefinition<"delete"> => ({
    url: destroy.url(args, options),
    method: "delete",
})



/**
 * @see \App\Http\Controllers\CustomerNextOfKinController::destroy
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/CustomerNextOfKinController.php:118
 * @route "/customers/{customer}/next-of-kins/{next_of_kin}"
 */
const destroyForm = (args: { customer: string | number, next_of_kin: string | number } | [ customer: string | number, next_of_kin: string | number ], options?: RouteQueryOptions): RouteFormDefinition<"post"> => ({
    action: destroy.url(args, formSafeOptions("delete", options)),
    method: "post",
})

/**
 * @see \App\Http\Controllers\CustomerNextOfKinController::destroy
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/CustomerNextOfKinController.php:118
 * @route "/customers/{customer}/next-of-kins/{next_of_kin}"
 */
destroyForm.delete = (args: { customer: string | number, next_of_kin: string | number } | [ customer: string | number, next_of_kin: string | number ], options?: RouteQueryOptions): RouteFormDefinition<"post"> => ({
    action: destroy.url(args, formSafeOptions("delete", options)),
    method: "post",
})



destroy.form = destroyForm

const nextOfKins = {
    store,
    update,
    destroy,
}

export default nextOfKins