// 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 /[serialized-closure]:2
 * @route "/storage/{path}"
 */
export const upload = (args: { path: string | number } | [ path: string | number ] | string | number, options?: RouteQueryOptions): RouteDefinition<"put"> => ({
    url: upload.url(args, options),
    method: "put",
})

upload.definition = {
    methods: ["put"],
    url: "/storage/{path}",
} satisfies RouteDefinition<["put"]>

/**
 * @see /[serialized-closure]:2
 * @route "/storage/{path}"
 */
upload.url = (args: { path: string | number } | [ path: string | number ] | string | number, options?: RouteQueryOptions) => {
    if (typeof args === "string" || typeof args === "number") {
        args = { path: args }
    }
    
    if (Array.isArray(args)) {
        args = {
        path: args[0],
    }
    }
    
    args = applyUrlDefaults(args)
    
    const parsedArgs = {
        path: args.path,
    }
    
    return upload.definition.url
        .replace("{path}", parsedArgs.path.toString())
        .replace(/\/+$/, "") + queryParams(options)
}

/**
 * @see /[serialized-closure]:2
 * @route "/storage/{path}"
 */
upload.put = (args: { path: string | number } | [ path: string | number ] | string | number, options?: RouteQueryOptions): RouteDefinition<"put"> => ({
    url: upload.url(args, options),
    method: "put",
})



/**
 * @see /[serialized-closure]:2
 * @route "/storage/{path}"
 */
const uploadForm = (args: { path: string | number } | [ path: string | number ] | string | number, options?: RouteQueryOptions): RouteFormDefinition<"post"> => ({
    action: upload.url(args, formSafeOptions("put", options)),
    method: "post",
})

/**
 * @see /[serialized-closure]:2
 * @route "/storage/{path}"
 */
uploadForm.put = (args: { path: string | number } | [ path: string | number ] | string | number, options?: RouteQueryOptions): RouteFormDefinition<"post"> => ({
    action: upload.url(args, formSafeOptions("put", options)),
    method: "post",
})



upload.form = uploadForm

const local = {
    upload,
}

export default local