import { queryParams, type RouteQueryOptions, type RouteDefinition, applyUrlDefaults } from './../wayfinder'
/**
* @see \App\Http\Controllers\Auth\AuthenticatedSessionController::login
* @see app/Http/Controllers/Auth/AuthenticatedSessionController.php:20
* @route '/login'
*/
export const login = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: login.url(options),
    method: 'get',
})

login.definition = {
    methods: ["get","head"],
    url: '/login',
} satisfies RouteDefinition<["get","head"]>

/**
* @see \App\Http\Controllers\Auth\AuthenticatedSessionController::login
* @see app/Http/Controllers/Auth/AuthenticatedSessionController.php:20
* @route '/login'
*/
login.url = (options?: RouteQueryOptions) => {
    return login.definition.url + queryParams(options)
}

/**
* @see \App\Http\Controllers\Auth\AuthenticatedSessionController::login
* @see app/Http/Controllers/Auth/AuthenticatedSessionController.php:20
* @route '/login'
*/
login.get = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: login.url(options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\Auth\AuthenticatedSessionController::login
* @see app/Http/Controllers/Auth/AuthenticatedSessionController.php:20
* @route '/login'
*/
login.head = (options?: RouteQueryOptions): RouteDefinition<'head'> => ({
    url: login.url(options),
    method: 'head',
})

/**
* @see \App\Http\Controllers\Auth\AuthenticatedSessionController::logout
* @see app/Http/Controllers/Auth/AuthenticatedSessionController.php:43
* @route '/logout'
*/
export const logout = (options?: RouteQueryOptions): RouteDefinition<'post'> => ({
    url: logout.url(options),
    method: 'post',
})

logout.definition = {
    methods: ["post"],
    url: '/logout',
} satisfies RouteDefinition<["post"]>

/**
* @see \App\Http\Controllers\Auth\AuthenticatedSessionController::logout
* @see app/Http/Controllers/Auth/AuthenticatedSessionController.php:43
* @route '/logout'
*/
logout.url = (options?: RouteQueryOptions) => {
    return logout.definition.url + queryParams(options)
}

/**
* @see \App\Http\Controllers\Auth\AuthenticatedSessionController::logout
* @see app/Http/Controllers/Auth/AuthenticatedSessionController.php:43
* @route '/logout'
*/
logout.post = (options?: RouteQueryOptions): RouteDefinition<'post'> => ({
    url: logout.url(options),
    method: 'post',
})

/**
* @see \App\Http\Controllers\HomeController::dashboard
* @see app/Http/Controllers/HomeController.php:47
* @route '/'
*/
export const dashboard = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: dashboard.url(options),
    method: 'get',
})

dashboard.definition = {
    methods: ["get","head"],
    url: '/',
} satisfies RouteDefinition<["get","head"]>

/**
* @see \App\Http\Controllers\HomeController::dashboard
* @see app/Http/Controllers/HomeController.php:47
* @route '/'
*/
dashboard.url = (options?: RouteQueryOptions) => {
    return dashboard.definition.url + queryParams(options)
}

/**
* @see \App\Http\Controllers\HomeController::dashboard
* @see app/Http/Controllers/HomeController.php:47
* @route '/'
*/
dashboard.get = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: dashboard.url(options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\HomeController::dashboard
* @see app/Http/Controllers/HomeController.php:47
* @route '/'
*/
dashboard.head = (options?: RouteQueryOptions): RouteDefinition<'head'> => ({
    url: dashboard.url(options),
    method: 'head',
})

/**
* @see \App\Http\Controllers\QuiltController::printQuiltTag
* @see app/Http/Controllers/QuiltController.php:57
* @route '/printQuilt/{quilt}'
*/
export const printQuiltTag = (args: { quilt: number | { id: number } } | [quilt: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: printQuiltTag.url(args, options),
    method: 'get',
})

printQuiltTag.definition = {
    methods: ["get","head"],
    url: '/printQuilt/{quilt}',
} satisfies RouteDefinition<["get","head"]>

/**
* @see \App\Http\Controllers\QuiltController::printQuiltTag
* @see app/Http/Controllers/QuiltController.php:57
* @route '/printQuilt/{quilt}'
*/
printQuiltTag.url = (args: { quilt: number | { id: number } } | [quilt: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions) => {
    if (typeof args === 'string' || typeof args === 'number') {
        args = { quilt: args }
    }

    if (typeof args === 'object' && !Array.isArray(args) && 'id' in args) {
        args = { quilt: args.id }
    }

    if (Array.isArray(args)) {
        args = {
            quilt: args[0],
        }
    }

    args = applyUrlDefaults(args)

    const parsedArgs = {
        quilt: typeof args.quilt === 'object'
        ? args.quilt.id
        : args.quilt,
    }

    return printQuiltTag.definition.url
            .replace('{quilt}', parsedArgs.quilt.toString())
            .replace(/\/+$/, '') + queryParams(options)
}

/**
* @see \App\Http\Controllers\QuiltController::printQuiltTag
* @see app/Http/Controllers/QuiltController.php:57
* @route '/printQuilt/{quilt}'
*/
printQuiltTag.get = (args: { quilt: number | { id: number } } | [quilt: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: printQuiltTag.url(args, options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\QuiltController::printQuiltTag
* @see app/Http/Controllers/QuiltController.php:57
* @route '/printQuilt/{quilt}'
*/
printQuiltTag.head = (args: { quilt: number | { id: number } } | [quilt: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'head'> => ({
    url: printQuiltTag.url(args, options),
    method: 'head',
})

/**
* @see \App\Http\Controllers\QuiltController::printQueue
* @see app/Http/Controllers/QuiltController.php:77
* @route '/printQueue'
*/
export const printQueue = (options?: RouteQueryOptions): RouteDefinition<'post'> => ({
    url: printQueue.url(options),
    method: 'post',
})

printQueue.definition = {
    methods: ["post"],
    url: '/printQueue',
} satisfies RouteDefinition<["post"]>

/**
* @see \App\Http\Controllers\QuiltController::printQueue
* @see app/Http/Controllers/QuiltController.php:77
* @route '/printQueue'
*/
printQueue.url = (options?: RouteQueryOptions) => {
    return printQueue.definition.url + queryParams(options)
}

/**
* @see \App\Http\Controllers\QuiltController::printQueue
* @see app/Http/Controllers/QuiltController.php:77
* @route '/printQueue'
*/
printQueue.post = (options?: RouteQueryOptions): RouteDefinition<'post'> => ({
    url: printQueue.url(options),
    method: 'post',
})

/**
* @see \App\Http\Controllers\StorefrontSettingController::storefront
* @see app/Http/Controllers/StorefrontSettingController.php:11
* @route '/storefront'
*/
export const storefront = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: storefront.url(options),
    method: 'get',
})

storefront.definition = {
    methods: ["get","head"],
    url: '/storefront',
} satisfies RouteDefinition<["get","head"]>

/**
* @see \App\Http\Controllers\StorefrontSettingController::storefront
* @see app/Http/Controllers/StorefrontSettingController.php:11
* @route '/storefront'
*/
storefront.url = (options?: RouteQueryOptions) => {
    return storefront.definition.url + queryParams(options)
}

/**
* @see \App\Http\Controllers\StorefrontSettingController::storefront
* @see app/Http/Controllers/StorefrontSettingController.php:11
* @route '/storefront'
*/
storefront.get = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: storefront.url(options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\StorefrontSettingController::storefront
* @see app/Http/Controllers/StorefrontSettingController.php:11
* @route '/storefront'
*/
storefront.head = (options?: RouteQueryOptions): RouteDefinition<'head'> => ({
    url: storefront.url(options),
    method: 'head',
})

/**
* @see \App\Http\Controllers\HomeController::settings
* @see app/Http/Controllers/HomeController.php:28
* @route '/settings'
*/
export const settings = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: settings.url(options),
    method: 'get',
})

settings.definition = {
    methods: ["get","head"],
    url: '/settings',
} satisfies RouteDefinition<["get","head"]>

/**
* @see \App\Http\Controllers\HomeController::settings
* @see app/Http/Controllers/HomeController.php:28
* @route '/settings'
*/
settings.url = (options?: RouteQueryOptions) => {
    return settings.definition.url + queryParams(options)
}

/**
* @see \App\Http\Controllers\HomeController::settings
* @see app/Http/Controllers/HomeController.php:28
* @route '/settings'
*/
settings.get = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: settings.url(options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\HomeController::settings
* @see app/Http/Controllers/HomeController.php:28
* @route '/settings'
*/
settings.head = (options?: RouteQueryOptions): RouteDefinition<'head'> => ({
    url: settings.url(options),
    method: 'head',
})

/**
* @see \App\Http\Controllers\QuiltController::search
* @see app/Http/Controllers/QuiltController.php:138
* @route '/search'
*/
export const search = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: search.url(options),
    method: 'get',
})

search.definition = {
    methods: ["get","head"],
    url: '/search',
} satisfies RouteDefinition<["get","head"]>

/**
* @see \App\Http\Controllers\QuiltController::search
* @see app/Http/Controllers/QuiltController.php:138
* @route '/search'
*/
search.url = (options?: RouteQueryOptions) => {
    return search.definition.url + queryParams(options)
}

/**
* @see \App\Http\Controllers\QuiltController::search
* @see app/Http/Controllers/QuiltController.php:138
* @route '/search'
*/
search.get = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: search.url(options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\QuiltController::search
* @see app/Http/Controllers/QuiltController.php:138
* @route '/search'
*/
search.head = (options?: RouteQueryOptions): RouteDefinition<'head'> => ({
    url: search.url(options),
    method: 'head',
})

/**
* @see \App\Http\Controllers\QuiltController::quilts
* @see app/Http/Controllers/QuiltController.php:43
* @route '/quilts'
*/
export const quilts = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: quilts.url(options),
    method: 'get',
})

quilts.definition = {
    methods: ["get","head"],
    url: '/quilts',
} satisfies RouteDefinition<["get","head"]>

/**
* @see \App\Http\Controllers\QuiltController::quilts
* @see app/Http/Controllers/QuiltController.php:43
* @route '/quilts'
*/
quilts.url = (options?: RouteQueryOptions) => {
    return quilts.definition.url + queryParams(options)
}

/**
* @see \App\Http\Controllers\QuiltController::quilts
* @see app/Http/Controllers/QuiltController.php:43
* @route '/quilts'
*/
quilts.get = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: quilts.url(options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\QuiltController::quilts
* @see app/Http/Controllers/QuiltController.php:43
* @route '/quilts'
*/
quilts.head = (options?: RouteQueryOptions): RouteDefinition<'head'> => ({
    url: quilts.url(options),
    method: 'head',
})

/**
* @see \App\Http\Controllers\QuiltController::quilt
* @see app/Http/Controllers/QuiltController.php:22
* @route '/quilts/{quilt}'
*/
export const quilt = (args: { quilt: number | { id: number } } | [quilt: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: quilt.url(args, options),
    method: 'get',
})

quilt.definition = {
    methods: ["get","head"],
    url: '/quilts/{quilt}',
} satisfies RouteDefinition<["get","head"]>

/**
* @see \App\Http\Controllers\QuiltController::quilt
* @see app/Http/Controllers/QuiltController.php:22
* @route '/quilts/{quilt}'
*/
quilt.url = (args: { quilt: number | { id: number } } | [quilt: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions) => {
    if (typeof args === 'string' || typeof args === 'number') {
        args = { quilt: args }
    }

    if (typeof args === 'object' && !Array.isArray(args) && 'id' in args) {
        args = { quilt: args.id }
    }

    if (Array.isArray(args)) {
        args = {
            quilt: args[0],
        }
    }

    args = applyUrlDefaults(args)

    const parsedArgs = {
        quilt: typeof args.quilt === 'object'
        ? args.quilt.id
        : args.quilt,
    }

    return quilt.definition.url
            .replace('{quilt}', parsedArgs.quilt.toString())
            .replace(/\/+$/, '') + queryParams(options)
}

/**
* @see \App\Http\Controllers\QuiltController::quilt
* @see app/Http/Controllers/QuiltController.php:22
* @route '/quilts/{quilt}'
*/
quilt.get = (args: { quilt: number | { id: number } } | [quilt: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: quilt.url(args, options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\QuiltController::quilt
* @see app/Http/Controllers/QuiltController.php:22
* @route '/quilts/{quilt}'
*/
quilt.head = (args: { quilt: number | { id: number } } | [quilt: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'head'> => ({
    url: quilt.url(args, options),
    method: 'head',
})

/**
* @see \App\Http\Controllers\OrderController::order
* @see app/Http/Controllers/OrderController.php:21
* @route '/orders/{order}'
*/
export const order = (args: { order: number | { id: number } } | [order: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: order.url(args, options),
    method: 'get',
})

order.definition = {
    methods: ["get","head"],
    url: '/orders/{order}',
} satisfies RouteDefinition<["get","head"]>

/**
* @see \App\Http\Controllers\OrderController::order
* @see app/Http/Controllers/OrderController.php:21
* @route '/orders/{order}'
*/
order.url = (args: { order: number | { id: number } } | [order: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions) => {
    if (typeof args === 'string' || typeof args === 'number') {
        args = { order: args }
    }

    if (typeof args === 'object' && !Array.isArray(args) && 'id' in args) {
        args = { order: args.id }
    }

    if (Array.isArray(args)) {
        args = {
            order: args[0],
        }
    }

    args = applyUrlDefaults(args)

    const parsedArgs = {
        order: typeof args.order === 'object'
        ? args.order.id
        : args.order,
    }

    return order.definition.url
            .replace('{order}', parsedArgs.order.toString())
            .replace(/\/+$/, '') + queryParams(options)
}

/**
* @see \App\Http\Controllers\OrderController::order
* @see app/Http/Controllers/OrderController.php:21
* @route '/orders/{order}'
*/
order.get = (args: { order: number | { id: number } } | [order: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: order.url(args, options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\OrderController::order
* @see app/Http/Controllers/OrderController.php:21
* @route '/orders/{order}'
*/
order.head = (args: { order: number | { id: number } } | [order: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'head'> => ({
    url: order.url(args, options),
    method: 'head',
})

