import { queryParams, type RouteQueryOptions, type RouteDefinition, type RouteFormDefinition, applyUrlDefaults } from './../../../../../wayfinder'
/**
* @see \App\Http\Controllers\Booking\AdminBookingController::bookingsIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:59
* @route '/admin/bookings'
*/
export const bookingsIndex = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: bookingsIndex.url(options),
    method: 'get',
})

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

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::bookingsIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:59
* @route '/admin/bookings'
*/
bookingsIndex.url = (options?: RouteQueryOptions) => {
    return bookingsIndex.definition.url + queryParams(options)
}

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::bookingsIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:59
* @route '/admin/bookings'
*/
bookingsIndex.get = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: bookingsIndex.url(options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::bookingsIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:59
* @route '/admin/bookings'
*/
bookingsIndex.head = (options?: RouteQueryOptions): RouteDefinition<'head'> => ({
    url: bookingsIndex.url(options),
    method: 'head',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::bookingsIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:59
* @route '/admin/bookings'
*/
const bookingsIndexForm = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: bookingsIndex.url(options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::bookingsIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:59
* @route '/admin/bookings'
*/
bookingsIndexForm.get = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: bookingsIndex.url(options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::bookingsIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:59
* @route '/admin/bookings'
*/
bookingsIndexForm.head = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: bookingsIndex.url({
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'HEAD',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'get',
})

bookingsIndex.form = bookingsIndexForm

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::reportsIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:152
* @route '/admin/reports'
*/
export const reportsIndex = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: reportsIndex.url(options),
    method: 'get',
})

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

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::reportsIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:152
* @route '/admin/reports'
*/
reportsIndex.url = (options?: RouteQueryOptions) => {
    return reportsIndex.definition.url + queryParams(options)
}

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::reportsIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:152
* @route '/admin/reports'
*/
reportsIndex.get = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: reportsIndex.url(options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::reportsIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:152
* @route '/admin/reports'
*/
reportsIndex.head = (options?: RouteQueryOptions): RouteDefinition<'head'> => ({
    url: reportsIndex.url(options),
    method: 'head',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::reportsIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:152
* @route '/admin/reports'
*/
const reportsIndexForm = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: reportsIndex.url(options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::reportsIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:152
* @route '/admin/reports'
*/
reportsIndexForm.get = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: reportsIndex.url(options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::reportsIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:152
* @route '/admin/reports'
*/
reportsIndexForm.head = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: reportsIndex.url({
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'HEAD',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'get',
})

reportsIndex.form = reportsIndexForm

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::exportReports
* @see app/Http/Controllers/Booking/AdminBookingController.php:174
* @route '/admin/reports/export/{format}'
*/
export const exportReports = (args: { format: string | number } | [format: string | number ] | string | number, options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: exportReports.url(args, options),
    method: 'get',
})

exportReports.definition = {
    methods: ["get","head"],
    url: '/admin/reports/export/{format}',
} satisfies RouteDefinition<["get","head"]>

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::exportReports
* @see app/Http/Controllers/Booking/AdminBookingController.php:174
* @route '/admin/reports/export/{format}'
*/
exportReports.url = (args: { format: string | number } | [format: string | number ] | string | number, options?: RouteQueryOptions) => {
    if (typeof args === 'string' || typeof args === 'number') {
        args = { format: args }
    }

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

    args = applyUrlDefaults(args)

    const parsedArgs = {
        format: args.format,
    }

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

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::exportReports
* @see app/Http/Controllers/Booking/AdminBookingController.php:174
* @route '/admin/reports/export/{format}'
*/
exportReports.get = (args: { format: string | number } | [format: string | number ] | string | number, options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: exportReports.url(args, options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::exportReports
* @see app/Http/Controllers/Booking/AdminBookingController.php:174
* @route '/admin/reports/export/{format}'
*/
exportReports.head = (args: { format: string | number } | [format: string | number ] | string | number, options?: RouteQueryOptions): RouteDefinition<'head'> => ({
    url: exportReports.url(args, options),
    method: 'head',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::exportReports
* @see app/Http/Controllers/Booking/AdminBookingController.php:174
* @route '/admin/reports/export/{format}'
*/
const exportReportsForm = (args: { format: string | number } | [format: string | number ] | string | number, options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: exportReports.url(args, options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::exportReports
* @see app/Http/Controllers/Booking/AdminBookingController.php:174
* @route '/admin/reports/export/{format}'
*/
exportReportsForm.get = (args: { format: string | number } | [format: string | number ] | string | number, options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: exportReports.url(args, options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::exportReports
* @see app/Http/Controllers/Booking/AdminBookingController.php:174
* @route '/admin/reports/export/{format}'
*/
exportReportsForm.head = (args: { format: string | number } | [format: string | number ] | string | number, options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: exportReports.url(args, {
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'HEAD',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'get',
})

exportReports.form = exportReportsForm

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::storeWalkInBooking
* @see app/Http/Controllers/Booking/AdminBookingController.php:216
* @route '/admin/bookings'
*/
export const storeWalkInBooking = (options?: RouteQueryOptions): RouteDefinition<'post'> => ({
    url: storeWalkInBooking.url(options),
    method: 'post',
})

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

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::storeWalkInBooking
* @see app/Http/Controllers/Booking/AdminBookingController.php:216
* @route '/admin/bookings'
*/
storeWalkInBooking.url = (options?: RouteQueryOptions) => {
    return storeWalkInBooking.definition.url + queryParams(options)
}

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::storeWalkInBooking
* @see app/Http/Controllers/Booking/AdminBookingController.php:216
* @route '/admin/bookings'
*/
storeWalkInBooking.post = (options?: RouteQueryOptions): RouteDefinition<'post'> => ({
    url: storeWalkInBooking.url(options),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::storeWalkInBooking
* @see app/Http/Controllers/Booking/AdminBookingController.php:216
* @route '/admin/bookings'
*/
const storeWalkInBookingForm = (options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: storeWalkInBooking.url(options),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::storeWalkInBooking
* @see app/Http/Controllers/Booking/AdminBookingController.php:216
* @route '/admin/bookings'
*/
storeWalkInBookingForm.post = (options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: storeWalkInBooking.url(options),
    method: 'post',
})

storeWalkInBooking.form = storeWalkInBookingForm

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::updateBooking
* @see app/Http/Controllers/Booking/AdminBookingController.php:422
* @route '/admin/bookings/{booking}'
*/
export const updateBooking = (args: { booking: number | { id: number } } | [booking: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'post'> => ({
    url: updateBooking.url(args, options),
    method: 'post',
})

updateBooking.definition = {
    methods: ["post"],
    url: '/admin/bookings/{booking}',
} satisfies RouteDefinition<["post"]>

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::updateBooking
* @see app/Http/Controllers/Booking/AdminBookingController.php:422
* @route '/admin/bookings/{booking}'
*/
updateBooking.url = (args: { booking: number | { id: number } } | [booking: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions) => {
    if (typeof args === 'string' || typeof args === 'number') {
        args = { booking: args }
    }

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

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

    args = applyUrlDefaults(args)

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

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

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::updateBooking
* @see app/Http/Controllers/Booking/AdminBookingController.php:422
* @route '/admin/bookings/{booking}'
*/
updateBooking.post = (args: { booking: number | { id: number } } | [booking: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'post'> => ({
    url: updateBooking.url(args, options),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::updateBooking
* @see app/Http/Controllers/Booking/AdminBookingController.php:422
* @route '/admin/bookings/{booking}'
*/
const updateBookingForm = (args: { booking: number | { id: number } } | [booking: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: updateBooking.url(args, options),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::updateBooking
* @see app/Http/Controllers/Booking/AdminBookingController.php:422
* @route '/admin/bookings/{booking}'
*/
updateBookingForm.post = (args: { booking: number | { id: number } } | [booking: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: updateBooking.url(args, options),
    method: 'post',
})

updateBooking.form = updateBookingForm

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::cancelBooking
* @see app/Http/Controllers/Booking/AdminBookingController.php:557
* @route '/admin/bookings/{booking}'
*/
export const cancelBooking = (args: { booking: number | { id: number } } | [booking: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'delete'> => ({
    url: cancelBooking.url(args, options),
    method: 'delete',
})

cancelBooking.definition = {
    methods: ["delete"],
    url: '/admin/bookings/{booking}',
} satisfies RouteDefinition<["delete"]>

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::cancelBooking
* @see app/Http/Controllers/Booking/AdminBookingController.php:557
* @route '/admin/bookings/{booking}'
*/
cancelBooking.url = (args: { booking: number | { id: number } } | [booking: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions) => {
    if (typeof args === 'string' || typeof args === 'number') {
        args = { booking: args }
    }

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

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

    args = applyUrlDefaults(args)

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

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

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::cancelBooking
* @see app/Http/Controllers/Booking/AdminBookingController.php:557
* @route '/admin/bookings/{booking}'
*/
cancelBooking.delete = (args: { booking: number | { id: number } } | [booking: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'delete'> => ({
    url: cancelBooking.url(args, options),
    method: 'delete',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::cancelBooking
* @see app/Http/Controllers/Booking/AdminBookingController.php:557
* @route '/admin/bookings/{booking}'
*/
const cancelBookingForm = (args: { booking: number | { id: number } } | [booking: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: cancelBooking.url(args, {
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'DELETE',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::cancelBooking
* @see app/Http/Controllers/Booking/AdminBookingController.php:557
* @route '/admin/bookings/{booking}'
*/
cancelBookingForm.delete = (args: { booking: number | { id: number } } | [booking: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: cancelBooking.url(args, {
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'DELETE',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'post',
})

cancelBooking.form = cancelBookingForm

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::calendarEvents
* @see app/Http/Controllers/Booking/AdminBookingController.php:402
* @route '/admin/calendar/events'
*/
export const calendarEvents = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: calendarEvents.url(options),
    method: 'get',
})

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

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::calendarEvents
* @see app/Http/Controllers/Booking/AdminBookingController.php:402
* @route '/admin/calendar/events'
*/
calendarEvents.url = (options?: RouteQueryOptions) => {
    return calendarEvents.definition.url + queryParams(options)
}

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::calendarEvents
* @see app/Http/Controllers/Booking/AdminBookingController.php:402
* @route '/admin/calendar/events'
*/
calendarEvents.get = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: calendarEvents.url(options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::calendarEvents
* @see app/Http/Controllers/Booking/AdminBookingController.php:402
* @route '/admin/calendar/events'
*/
calendarEvents.head = (options?: RouteQueryOptions): RouteDefinition<'head'> => ({
    url: calendarEvents.url(options),
    method: 'head',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::calendarEvents
* @see app/Http/Controllers/Booking/AdminBookingController.php:402
* @route '/admin/calendar/events'
*/
const calendarEventsForm = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: calendarEvents.url(options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::calendarEvents
* @see app/Http/Controllers/Booking/AdminBookingController.php:402
* @route '/admin/calendar/events'
*/
calendarEventsForm.get = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: calendarEvents.url(options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::calendarEvents
* @see app/Http/Controllers/Booking/AdminBookingController.php:402
* @route '/admin/calendar/events'
*/
calendarEventsForm.head = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: calendarEvents.url({
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'HEAD',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'get',
})

calendarEvents.form = calendarEventsForm

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::locationsIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:592
* @route '/admin/locations'
*/
export const locationsIndex = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: locationsIndex.url(options),
    method: 'get',
})

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

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::locationsIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:592
* @route '/admin/locations'
*/
locationsIndex.url = (options?: RouteQueryOptions) => {
    return locationsIndex.definition.url + queryParams(options)
}

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::locationsIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:592
* @route '/admin/locations'
*/
locationsIndex.get = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: locationsIndex.url(options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::locationsIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:592
* @route '/admin/locations'
*/
locationsIndex.head = (options?: RouteQueryOptions): RouteDefinition<'head'> => ({
    url: locationsIndex.url(options),
    method: 'head',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::locationsIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:592
* @route '/admin/locations'
*/
const locationsIndexForm = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: locationsIndex.url(options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::locationsIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:592
* @route '/admin/locations'
*/
locationsIndexForm.get = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: locationsIndex.url(options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::locationsIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:592
* @route '/admin/locations'
*/
locationsIndexForm.head = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: locationsIndex.url({
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'HEAD',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'get',
})

locationsIndex.form = locationsIndexForm

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::reorderLocations
* @see app/Http/Controllers/Booking/AdminBookingController.php:602
* @route '/admin/locations/reorder'
*/
export const reorderLocations = (options?: RouteQueryOptions): RouteDefinition<'post'> => ({
    url: reorderLocations.url(options),
    method: 'post',
})

reorderLocations.definition = {
    methods: ["post"],
    url: '/admin/locations/reorder',
} satisfies RouteDefinition<["post"]>

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::reorderLocations
* @see app/Http/Controllers/Booking/AdminBookingController.php:602
* @route '/admin/locations/reorder'
*/
reorderLocations.url = (options?: RouteQueryOptions) => {
    return reorderLocations.definition.url + queryParams(options)
}

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::reorderLocations
* @see app/Http/Controllers/Booking/AdminBookingController.php:602
* @route '/admin/locations/reorder'
*/
reorderLocations.post = (options?: RouteQueryOptions): RouteDefinition<'post'> => ({
    url: reorderLocations.url(options),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::reorderLocations
* @see app/Http/Controllers/Booking/AdminBookingController.php:602
* @route '/admin/locations/reorder'
*/
const reorderLocationsForm = (options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: reorderLocations.url(options),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::reorderLocations
* @see app/Http/Controllers/Booking/AdminBookingController.php:602
* @route '/admin/locations/reorder'
*/
reorderLocationsForm.post = (options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: reorderLocations.url(options),
    method: 'post',
})

reorderLocations.form = reorderLocationsForm

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::storeLocation
* @see app/Http/Controllers/Booking/AdminBookingController.php:611
* @route '/admin/locations'
*/
export const storeLocation = (options?: RouteQueryOptions): RouteDefinition<'post'> => ({
    url: storeLocation.url(options),
    method: 'post',
})

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

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::storeLocation
* @see app/Http/Controllers/Booking/AdminBookingController.php:611
* @route '/admin/locations'
*/
storeLocation.url = (options?: RouteQueryOptions) => {
    return storeLocation.definition.url + queryParams(options)
}

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::storeLocation
* @see app/Http/Controllers/Booking/AdminBookingController.php:611
* @route '/admin/locations'
*/
storeLocation.post = (options?: RouteQueryOptions): RouteDefinition<'post'> => ({
    url: storeLocation.url(options),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::storeLocation
* @see app/Http/Controllers/Booking/AdminBookingController.php:611
* @route '/admin/locations'
*/
const storeLocationForm = (options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: storeLocation.url(options),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::storeLocation
* @see app/Http/Controllers/Booking/AdminBookingController.php:611
* @route '/admin/locations'
*/
storeLocationForm.post = (options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: storeLocation.url(options),
    method: 'post',
})

storeLocation.form = storeLocationForm

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::updateLocation
* @see app/Http/Controllers/Booking/AdminBookingController.php:631
* @route '/admin/locations/{location}'
*/
export const updateLocation = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'patch'> => ({
    url: updateLocation.url(args, options),
    method: 'patch',
})

updateLocation.definition = {
    methods: ["patch"],
    url: '/admin/locations/{location}',
} satisfies RouteDefinition<["patch"]>

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::updateLocation
* @see app/Http/Controllers/Booking/AdminBookingController.php:631
* @route '/admin/locations/{location}'
*/
updateLocation.url = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions) => {
    if (typeof args === 'string' || typeof args === 'number') {
        args = { location: args }
    }

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

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

    args = applyUrlDefaults(args)

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

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

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::updateLocation
* @see app/Http/Controllers/Booking/AdminBookingController.php:631
* @route '/admin/locations/{location}'
*/
updateLocation.patch = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'patch'> => ({
    url: updateLocation.url(args, options),
    method: 'patch',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::updateLocation
* @see app/Http/Controllers/Booking/AdminBookingController.php:631
* @route '/admin/locations/{location}'
*/
const updateLocationForm = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: updateLocation.url(args, {
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'PATCH',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::updateLocation
* @see app/Http/Controllers/Booking/AdminBookingController.php:631
* @route '/admin/locations/{location}'
*/
updateLocationForm.patch = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: updateLocation.url(args, {
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'PATCH',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'post',
})

updateLocation.form = updateLocationForm

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::destroyLocation
* @see app/Http/Controllers/Booking/AdminBookingController.php:651
* @route '/admin/locations/{location}'
*/
export const destroyLocation = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'delete'> => ({
    url: destroyLocation.url(args, options),
    method: 'delete',
})

destroyLocation.definition = {
    methods: ["delete"],
    url: '/admin/locations/{location}',
} satisfies RouteDefinition<["delete"]>

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::destroyLocation
* @see app/Http/Controllers/Booking/AdminBookingController.php:651
* @route '/admin/locations/{location}'
*/
destroyLocation.url = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions) => {
    if (typeof args === 'string' || typeof args === 'number') {
        args = { location: args }
    }

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

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

    args = applyUrlDefaults(args)

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

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

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::destroyLocation
* @see app/Http/Controllers/Booking/AdminBookingController.php:651
* @route '/admin/locations/{location}'
*/
destroyLocation.delete = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'delete'> => ({
    url: destroyLocation.url(args, options),
    method: 'delete',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::destroyLocation
* @see app/Http/Controllers/Booking/AdminBookingController.php:651
* @route '/admin/locations/{location}'
*/
const destroyLocationForm = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: destroyLocation.url(args, {
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'DELETE',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::destroyLocation
* @see app/Http/Controllers/Booking/AdminBookingController.php:651
* @route '/admin/locations/{location}'
*/
destroyLocationForm.delete = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: destroyLocation.url(args, {
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'DELETE',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'post',
})

destroyLocation.form = destroyLocationForm

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::storeLocationType
* @see app/Http/Controllers/Booking/AdminBookingController.php:661
* @route '/admin/location-types'
*/
export const storeLocationType = (options?: RouteQueryOptions): RouteDefinition<'post'> => ({
    url: storeLocationType.url(options),
    method: 'post',
})

storeLocationType.definition = {
    methods: ["post"],
    url: '/admin/location-types',
} satisfies RouteDefinition<["post"]>

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::storeLocationType
* @see app/Http/Controllers/Booking/AdminBookingController.php:661
* @route '/admin/location-types'
*/
storeLocationType.url = (options?: RouteQueryOptions) => {
    return storeLocationType.definition.url + queryParams(options)
}

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::storeLocationType
* @see app/Http/Controllers/Booking/AdminBookingController.php:661
* @route '/admin/location-types'
*/
storeLocationType.post = (options?: RouteQueryOptions): RouteDefinition<'post'> => ({
    url: storeLocationType.url(options),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::storeLocationType
* @see app/Http/Controllers/Booking/AdminBookingController.php:661
* @route '/admin/location-types'
*/
const storeLocationTypeForm = (options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: storeLocationType.url(options),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::storeLocationType
* @see app/Http/Controllers/Booking/AdminBookingController.php:661
* @route '/admin/location-types'
*/
storeLocationTypeForm.post = (options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: storeLocationType.url(options),
    method: 'post',
})

storeLocationType.form = storeLocationTypeForm

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::updateLocationType
* @see app/Http/Controllers/Booking/AdminBookingController.php:683
* @route '/admin/location-types/{locationType}'
*/
export const updateLocationType = (args: { locationType: number | { id: number } } | [locationType: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'patch'> => ({
    url: updateLocationType.url(args, options),
    method: 'patch',
})

updateLocationType.definition = {
    methods: ["patch"],
    url: '/admin/location-types/{locationType}',
} satisfies RouteDefinition<["patch"]>

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::updateLocationType
* @see app/Http/Controllers/Booking/AdminBookingController.php:683
* @route '/admin/location-types/{locationType}'
*/
updateLocationType.url = (args: { locationType: number | { id: number } } | [locationType: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions) => {
    if (typeof args === 'string' || typeof args === 'number') {
        args = { locationType: args }
    }

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

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

    args = applyUrlDefaults(args)

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

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

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::updateLocationType
* @see app/Http/Controllers/Booking/AdminBookingController.php:683
* @route '/admin/location-types/{locationType}'
*/
updateLocationType.patch = (args: { locationType: number | { id: number } } | [locationType: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'patch'> => ({
    url: updateLocationType.url(args, options),
    method: 'patch',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::updateLocationType
* @see app/Http/Controllers/Booking/AdminBookingController.php:683
* @route '/admin/location-types/{locationType}'
*/
const updateLocationTypeForm = (args: { locationType: number | { id: number } } | [locationType: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: updateLocationType.url(args, {
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'PATCH',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::updateLocationType
* @see app/Http/Controllers/Booking/AdminBookingController.php:683
* @route '/admin/location-types/{locationType}'
*/
updateLocationTypeForm.patch = (args: { locationType: number | { id: number } } | [locationType: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: updateLocationType.url(args, {
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'PATCH',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'post',
})

updateLocationType.form = updateLocationTypeForm

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::destroyLocationType
* @see app/Http/Controllers/Booking/AdminBookingController.php:699
* @route '/admin/location-types/{locationType}'
*/
export const destroyLocationType = (args: { locationType: number | { id: number } } | [locationType: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'delete'> => ({
    url: destroyLocationType.url(args, options),
    method: 'delete',
})

destroyLocationType.definition = {
    methods: ["delete"],
    url: '/admin/location-types/{locationType}',
} satisfies RouteDefinition<["delete"]>

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::destroyLocationType
* @see app/Http/Controllers/Booking/AdminBookingController.php:699
* @route '/admin/location-types/{locationType}'
*/
destroyLocationType.url = (args: { locationType: number | { id: number } } | [locationType: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions) => {
    if (typeof args === 'string' || typeof args === 'number') {
        args = { locationType: args }
    }

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

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

    args = applyUrlDefaults(args)

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

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

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::destroyLocationType
* @see app/Http/Controllers/Booking/AdminBookingController.php:699
* @route '/admin/location-types/{locationType}'
*/
destroyLocationType.delete = (args: { locationType: number | { id: number } } | [locationType: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'delete'> => ({
    url: destroyLocationType.url(args, options),
    method: 'delete',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::destroyLocationType
* @see app/Http/Controllers/Booking/AdminBookingController.php:699
* @route '/admin/location-types/{locationType}'
*/
const destroyLocationTypeForm = (args: { locationType: number | { id: number } } | [locationType: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: destroyLocationType.url(args, {
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'DELETE',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::destroyLocationType
* @see app/Http/Controllers/Booking/AdminBookingController.php:699
* @route '/admin/location-types/{locationType}'
*/
destroyLocationTypeForm.delete = (args: { locationType: number | { id: number } } | [locationType: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: destroyLocationType.url(args, {
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'DELETE',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'post',
})

destroyLocationType.form = destroyLocationTypeForm

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::availabilityShow
* @see app/Http/Controllers/Booking/AdminBookingController.php:716
* @route '/admin/locations/{location}/availability'
*/
export const availabilityShow = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: availabilityShow.url(args, options),
    method: 'get',
})

availabilityShow.definition = {
    methods: ["get","head"],
    url: '/admin/locations/{location}/availability',
} satisfies RouteDefinition<["get","head"]>

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::availabilityShow
* @see app/Http/Controllers/Booking/AdminBookingController.php:716
* @route '/admin/locations/{location}/availability'
*/
availabilityShow.url = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions) => {
    if (typeof args === 'string' || typeof args === 'number') {
        args = { location: args }
    }

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

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

    args = applyUrlDefaults(args)

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

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

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::availabilityShow
* @see app/Http/Controllers/Booking/AdminBookingController.php:716
* @route '/admin/locations/{location}/availability'
*/
availabilityShow.get = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: availabilityShow.url(args, options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::availabilityShow
* @see app/Http/Controllers/Booking/AdminBookingController.php:716
* @route '/admin/locations/{location}/availability'
*/
availabilityShow.head = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'head'> => ({
    url: availabilityShow.url(args, options),
    method: 'head',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::availabilityShow
* @see app/Http/Controllers/Booking/AdminBookingController.php:716
* @route '/admin/locations/{location}/availability'
*/
const availabilityShowForm = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: availabilityShow.url(args, options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::availabilityShow
* @see app/Http/Controllers/Booking/AdminBookingController.php:716
* @route '/admin/locations/{location}/availability'
*/
availabilityShowForm.get = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: availabilityShow.url(args, options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::availabilityShow
* @see app/Http/Controllers/Booking/AdminBookingController.php:716
* @route '/admin/locations/{location}/availability'
*/
availabilityShowForm.head = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: availabilityShow.url(args, {
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'HEAD',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'get',
})

availabilityShow.form = availabilityShowForm

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::availabilitySync
* @see app/Http/Controllers/Booking/AdminBookingController.php:775
* @route '/admin/locations/{location}/availability'
*/
export const availabilitySync = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'post'> => ({
    url: availabilitySync.url(args, options),
    method: 'post',
})

availabilitySync.definition = {
    methods: ["post"],
    url: '/admin/locations/{location}/availability',
} satisfies RouteDefinition<["post"]>

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::availabilitySync
* @see app/Http/Controllers/Booking/AdminBookingController.php:775
* @route '/admin/locations/{location}/availability'
*/
availabilitySync.url = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions) => {
    if (typeof args === 'string' || typeof args === 'number') {
        args = { location: args }
    }

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

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

    args = applyUrlDefaults(args)

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

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

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::availabilitySync
* @see app/Http/Controllers/Booking/AdminBookingController.php:775
* @route '/admin/locations/{location}/availability'
*/
availabilitySync.post = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'post'> => ({
    url: availabilitySync.url(args, options),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::availabilitySync
* @see app/Http/Controllers/Booking/AdminBookingController.php:775
* @route '/admin/locations/{location}/availability'
*/
const availabilitySyncForm = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: availabilitySync.url(args, options),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::availabilitySync
* @see app/Http/Controllers/Booking/AdminBookingController.php:775
* @route '/admin/locations/{location}/availability'
*/
availabilitySyncForm.post = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: availabilitySync.url(args, options),
    method: 'post',
})

availabilitySync.form = availabilitySyncForm

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::closedDatesStore
* @see app/Http/Controllers/Booking/AdminBookingController.php:745
* @route '/admin/locations/{location}/closed-dates'
*/
export const closedDatesStore = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'post'> => ({
    url: closedDatesStore.url(args, options),
    method: 'post',
})

closedDatesStore.definition = {
    methods: ["post"],
    url: '/admin/locations/{location}/closed-dates',
} satisfies RouteDefinition<["post"]>

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::closedDatesStore
* @see app/Http/Controllers/Booking/AdminBookingController.php:745
* @route '/admin/locations/{location}/closed-dates'
*/
closedDatesStore.url = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions) => {
    if (typeof args === 'string' || typeof args === 'number') {
        args = { location: args }
    }

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

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

    args = applyUrlDefaults(args)

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

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

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::closedDatesStore
* @see app/Http/Controllers/Booking/AdminBookingController.php:745
* @route '/admin/locations/{location}/closed-dates'
*/
closedDatesStore.post = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'post'> => ({
    url: closedDatesStore.url(args, options),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::closedDatesStore
* @see app/Http/Controllers/Booking/AdminBookingController.php:745
* @route '/admin/locations/{location}/closed-dates'
*/
const closedDatesStoreForm = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: closedDatesStore.url(args, options),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::closedDatesStore
* @see app/Http/Controllers/Booking/AdminBookingController.php:745
* @route '/admin/locations/{location}/closed-dates'
*/
closedDatesStoreForm.post = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: closedDatesStore.url(args, options),
    method: 'post',
})

closedDatesStore.form = closedDatesStoreForm

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::closedDatesDestroy
* @see app/Http/Controllers/Booking/AdminBookingController.php:762
* @route '/admin/locations/{location}/closed-dates/{closedDate}'
*/
export const closedDatesDestroy = (args: { location: number | { id: number }, closedDate: number | { id: number } } | [location: number | { id: number }, closedDate: number | { id: number } ], options?: RouteQueryOptions): RouteDefinition<'delete'> => ({
    url: closedDatesDestroy.url(args, options),
    method: 'delete',
})

closedDatesDestroy.definition = {
    methods: ["delete"],
    url: '/admin/locations/{location}/closed-dates/{closedDate}',
} satisfies RouteDefinition<["delete"]>

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::closedDatesDestroy
* @see app/Http/Controllers/Booking/AdminBookingController.php:762
* @route '/admin/locations/{location}/closed-dates/{closedDate}'
*/
closedDatesDestroy.url = (args: { location: number | { id: number }, closedDate: number | { id: number } } | [location: number | { id: number }, closedDate: number | { id: number } ], options?: RouteQueryOptions) => {
    if (Array.isArray(args)) {
        args = {
            location: args[0],
            closedDate: args[1],
        }
    }

    args = applyUrlDefaults(args)

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

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

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::closedDatesDestroy
* @see app/Http/Controllers/Booking/AdminBookingController.php:762
* @route '/admin/locations/{location}/closed-dates/{closedDate}'
*/
closedDatesDestroy.delete = (args: { location: number | { id: number }, closedDate: number | { id: number } } | [location: number | { id: number }, closedDate: number | { id: number } ], options?: RouteQueryOptions): RouteDefinition<'delete'> => ({
    url: closedDatesDestroy.url(args, options),
    method: 'delete',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::closedDatesDestroy
* @see app/Http/Controllers/Booking/AdminBookingController.php:762
* @route '/admin/locations/{location}/closed-dates/{closedDate}'
*/
const closedDatesDestroyForm = (args: { location: number | { id: number }, closedDate: number | { id: number } } | [location: number | { id: number }, closedDate: number | { id: number } ], options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: closedDatesDestroy.url(args, {
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'DELETE',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::closedDatesDestroy
* @see app/Http/Controllers/Booking/AdminBookingController.php:762
* @route '/admin/locations/{location}/closed-dates/{closedDate}'
*/
closedDatesDestroyForm.delete = (args: { location: number | { id: number }, closedDate: number | { id: number } } | [location: number | { id: number }, closedDate: number | { id: number } ], options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: closedDatesDestroy.url(args, {
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'DELETE',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'post',
})

closedDatesDestroy.form = closedDatesDestroyForm

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::techniciansShow
* @see app/Http/Controllers/Booking/AdminBookingController.php:798
* @route '/admin/locations/{location}/technicians'
*/
export const techniciansShow = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: techniciansShow.url(args, options),
    method: 'get',
})

techniciansShow.definition = {
    methods: ["get","head"],
    url: '/admin/locations/{location}/technicians',
} satisfies RouteDefinition<["get","head"]>

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::techniciansShow
* @see app/Http/Controllers/Booking/AdminBookingController.php:798
* @route '/admin/locations/{location}/technicians'
*/
techniciansShow.url = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions) => {
    if (typeof args === 'string' || typeof args === 'number') {
        args = { location: args }
    }

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

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

    args = applyUrlDefaults(args)

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

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

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::techniciansShow
* @see app/Http/Controllers/Booking/AdminBookingController.php:798
* @route '/admin/locations/{location}/technicians'
*/
techniciansShow.get = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: techniciansShow.url(args, options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::techniciansShow
* @see app/Http/Controllers/Booking/AdminBookingController.php:798
* @route '/admin/locations/{location}/technicians'
*/
techniciansShow.head = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'head'> => ({
    url: techniciansShow.url(args, options),
    method: 'head',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::techniciansShow
* @see app/Http/Controllers/Booking/AdminBookingController.php:798
* @route '/admin/locations/{location}/technicians'
*/
const techniciansShowForm = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: techniciansShow.url(args, options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::techniciansShow
* @see app/Http/Controllers/Booking/AdminBookingController.php:798
* @route '/admin/locations/{location}/technicians'
*/
techniciansShowForm.get = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: techniciansShow.url(args, options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::techniciansShow
* @see app/Http/Controllers/Booking/AdminBookingController.php:798
* @route '/admin/locations/{location}/technicians'
*/
techniciansShowForm.head = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: techniciansShow.url(args, {
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'HEAD',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'get',
})

techniciansShow.form = techniciansShowForm

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::techniciansSync
* @see app/Http/Controllers/Booking/AdminBookingController.php:811
* @route '/admin/locations/{location}/technicians/sync'
*/
export const techniciansSync = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'post'> => ({
    url: techniciansSync.url(args, options),
    method: 'post',
})

techniciansSync.definition = {
    methods: ["post"],
    url: '/admin/locations/{location}/technicians/sync',
} satisfies RouteDefinition<["post"]>

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::techniciansSync
* @see app/Http/Controllers/Booking/AdminBookingController.php:811
* @route '/admin/locations/{location}/technicians/sync'
*/
techniciansSync.url = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions) => {
    if (typeof args === 'string' || typeof args === 'number') {
        args = { location: args }
    }

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

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

    args = applyUrlDefaults(args)

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

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

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::techniciansSync
* @see app/Http/Controllers/Booking/AdminBookingController.php:811
* @route '/admin/locations/{location}/technicians/sync'
*/
techniciansSync.post = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'post'> => ({
    url: techniciansSync.url(args, options),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::techniciansSync
* @see app/Http/Controllers/Booking/AdminBookingController.php:811
* @route '/admin/locations/{location}/technicians/sync'
*/
const techniciansSyncForm = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: techniciansSync.url(args, options),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::techniciansSync
* @see app/Http/Controllers/Booking/AdminBookingController.php:811
* @route '/admin/locations/{location}/technicians/sync'
*/
techniciansSyncForm.post = (args: { location: number | { id: number } } | [location: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: techniciansSync.url(args, options),
    method: 'post',
})

techniciansSync.form = techniciansSyncForm

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::packagesIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:837
* @route '/admin/packages'
*/
export const packagesIndex = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: packagesIndex.url(options),
    method: 'get',
})

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

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::packagesIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:837
* @route '/admin/packages'
*/
packagesIndex.url = (options?: RouteQueryOptions) => {
    return packagesIndex.definition.url + queryParams(options)
}

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::packagesIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:837
* @route '/admin/packages'
*/
packagesIndex.get = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: packagesIndex.url(options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::packagesIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:837
* @route '/admin/packages'
*/
packagesIndex.head = (options?: RouteQueryOptions): RouteDefinition<'head'> => ({
    url: packagesIndex.url(options),
    method: 'head',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::packagesIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:837
* @route '/admin/packages'
*/
const packagesIndexForm = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: packagesIndex.url(options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::packagesIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:837
* @route '/admin/packages'
*/
packagesIndexForm.get = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: packagesIndex.url(options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::packagesIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:837
* @route '/admin/packages'
*/
packagesIndexForm.head = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: packagesIndex.url({
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'HEAD',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'get',
})

packagesIndex.form = packagesIndexForm

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::reorderPackages
* @see app/Http/Controllers/Booking/AdminBookingController.php:957
* @route '/admin/packages/reorder'
*/
export const reorderPackages = (options?: RouteQueryOptions): RouteDefinition<'post'> => ({
    url: reorderPackages.url(options),
    method: 'post',
})

reorderPackages.definition = {
    methods: ["post"],
    url: '/admin/packages/reorder',
} satisfies RouteDefinition<["post"]>

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::reorderPackages
* @see app/Http/Controllers/Booking/AdminBookingController.php:957
* @route '/admin/packages/reorder'
*/
reorderPackages.url = (options?: RouteQueryOptions) => {
    return reorderPackages.definition.url + queryParams(options)
}

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::reorderPackages
* @see app/Http/Controllers/Booking/AdminBookingController.php:957
* @route '/admin/packages/reorder'
*/
reorderPackages.post = (options?: RouteQueryOptions): RouteDefinition<'post'> => ({
    url: reorderPackages.url(options),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::reorderPackages
* @see app/Http/Controllers/Booking/AdminBookingController.php:957
* @route '/admin/packages/reorder'
*/
const reorderPackagesForm = (options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: reorderPackages.url(options),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::reorderPackages
* @see app/Http/Controllers/Booking/AdminBookingController.php:957
* @route '/admin/packages/reorder'
*/
reorderPackagesForm.post = (options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: reorderPackages.url(options),
    method: 'post',
})

reorderPackages.form = reorderPackagesForm

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::storePackage
* @see app/Http/Controllers/Booking/AdminBookingController.php:867
* @route '/admin/packages'
*/
export const storePackage = (options?: RouteQueryOptions): RouteDefinition<'post'> => ({
    url: storePackage.url(options),
    method: 'post',
})

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

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::storePackage
* @see app/Http/Controllers/Booking/AdminBookingController.php:867
* @route '/admin/packages'
*/
storePackage.url = (options?: RouteQueryOptions) => {
    return storePackage.definition.url + queryParams(options)
}

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::storePackage
* @see app/Http/Controllers/Booking/AdminBookingController.php:867
* @route '/admin/packages'
*/
storePackage.post = (options?: RouteQueryOptions): RouteDefinition<'post'> => ({
    url: storePackage.url(options),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::storePackage
* @see app/Http/Controllers/Booking/AdminBookingController.php:867
* @route '/admin/packages'
*/
const storePackageForm = (options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: storePackage.url(options),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::storePackage
* @see app/Http/Controllers/Booking/AdminBookingController.php:867
* @route '/admin/packages'
*/
storePackageForm.post = (options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: storePackage.url(options),
    method: 'post',
})

storePackage.form = storePackageForm

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::editPackage
* @see app/Http/Controllers/Booking/AdminBookingController.php:854
* @route '/admin/packages/{package}/edit'
*/
export const editPackage = (args: { package: number | { id: number } } | [packageParam: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: editPackage.url(args, options),
    method: 'get',
})

editPackage.definition = {
    methods: ["get","head"],
    url: '/admin/packages/{package}/edit',
} satisfies RouteDefinition<["get","head"]>

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::editPackage
* @see app/Http/Controllers/Booking/AdminBookingController.php:854
* @route '/admin/packages/{package}/edit'
*/
editPackage.url = (args: { package: number | { id: number } } | [packageParam: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions) => {
    if (typeof args === 'string' || typeof args === 'number') {
        args = { package: args }
    }

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

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

    args = applyUrlDefaults(args)

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

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

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::editPackage
* @see app/Http/Controllers/Booking/AdminBookingController.php:854
* @route '/admin/packages/{package}/edit'
*/
editPackage.get = (args: { package: number | { id: number } } | [packageParam: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: editPackage.url(args, options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::editPackage
* @see app/Http/Controllers/Booking/AdminBookingController.php:854
* @route '/admin/packages/{package}/edit'
*/
editPackage.head = (args: { package: number | { id: number } } | [packageParam: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'head'> => ({
    url: editPackage.url(args, options),
    method: 'head',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::editPackage
* @see app/Http/Controllers/Booking/AdminBookingController.php:854
* @route '/admin/packages/{package}/edit'
*/
const editPackageForm = (args: { package: number | { id: number } } | [packageParam: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: editPackage.url(args, options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::editPackage
* @see app/Http/Controllers/Booking/AdminBookingController.php:854
* @route '/admin/packages/{package}/edit'
*/
editPackageForm.get = (args: { package: number | { id: number } } | [packageParam: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: editPackage.url(args, options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::editPackage
* @see app/Http/Controllers/Booking/AdminBookingController.php:854
* @route '/admin/packages/{package}/edit'
*/
editPackageForm.head = (args: { package: number | { id: number } } | [packageParam: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: editPackage.url(args, {
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'HEAD',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'get',
})

editPackage.form = editPackageForm

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::updatePackage
* @see app/Http/Controllers/Booking/AdminBookingController.php:904
* @route '/admin/packages/{package}'
*/
export const updatePackage = (args: { package: number | { id: number } } | [packageParam: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'patch'> => ({
    url: updatePackage.url(args, options),
    method: 'patch',
})

updatePackage.definition = {
    methods: ["patch"],
    url: '/admin/packages/{package}',
} satisfies RouteDefinition<["patch"]>

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::updatePackage
* @see app/Http/Controllers/Booking/AdminBookingController.php:904
* @route '/admin/packages/{package}'
*/
updatePackage.url = (args: { package: number | { id: number } } | [packageParam: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions) => {
    if (typeof args === 'string' || typeof args === 'number') {
        args = { package: args }
    }

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

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

    args = applyUrlDefaults(args)

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

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

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::updatePackage
* @see app/Http/Controllers/Booking/AdminBookingController.php:904
* @route '/admin/packages/{package}'
*/
updatePackage.patch = (args: { package: number | { id: number } } | [packageParam: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'patch'> => ({
    url: updatePackage.url(args, options),
    method: 'patch',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::updatePackage
* @see app/Http/Controllers/Booking/AdminBookingController.php:904
* @route '/admin/packages/{package}'
*/
const updatePackageForm = (args: { package: number | { id: number } } | [packageParam: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: updatePackage.url(args, {
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'PATCH',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::updatePackage
* @see app/Http/Controllers/Booking/AdminBookingController.php:904
* @route '/admin/packages/{package}'
*/
updatePackageForm.patch = (args: { package: number | { id: number } } | [packageParam: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: updatePackage.url(args, {
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'PATCH',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'post',
})

updatePackage.form = updatePackageForm

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::destroyPackage
* @see app/Http/Controllers/Booking/AdminBookingController.php:941
* @route '/admin/packages/{package}'
*/
export const destroyPackage = (args: { package: number | { id: number } } | [packageParam: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'delete'> => ({
    url: destroyPackage.url(args, options),
    method: 'delete',
})

destroyPackage.definition = {
    methods: ["delete"],
    url: '/admin/packages/{package}',
} satisfies RouteDefinition<["delete"]>

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::destroyPackage
* @see app/Http/Controllers/Booking/AdminBookingController.php:941
* @route '/admin/packages/{package}'
*/
destroyPackage.url = (args: { package: number | { id: number } } | [packageParam: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions) => {
    if (typeof args === 'string' || typeof args === 'number') {
        args = { package: args }
    }

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

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

    args = applyUrlDefaults(args)

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

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

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::destroyPackage
* @see app/Http/Controllers/Booking/AdminBookingController.php:941
* @route '/admin/packages/{package}'
*/
destroyPackage.delete = (args: { package: number | { id: number } } | [packageParam: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'delete'> => ({
    url: destroyPackage.url(args, options),
    method: 'delete',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::destroyPackage
* @see app/Http/Controllers/Booking/AdminBookingController.php:941
* @route '/admin/packages/{package}'
*/
const destroyPackageForm = (args: { package: number | { id: number } } | [packageParam: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: destroyPackage.url(args, {
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'DELETE',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::destroyPackage
* @see app/Http/Controllers/Booking/AdminBookingController.php:941
* @route '/admin/packages/{package}'
*/
destroyPackageForm.delete = (args: { package: number | { id: number } } | [packageParam: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: destroyPackage.url(args, {
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'DELETE',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'post',
})

destroyPackage.form = destroyPackageForm

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::addonsIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:966
* @route '/admin/addons'
*/
export const addonsIndex = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: addonsIndex.url(options),
    method: 'get',
})

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

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::addonsIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:966
* @route '/admin/addons'
*/
addonsIndex.url = (options?: RouteQueryOptions) => {
    return addonsIndex.definition.url + queryParams(options)
}

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::addonsIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:966
* @route '/admin/addons'
*/
addonsIndex.get = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: addonsIndex.url(options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::addonsIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:966
* @route '/admin/addons'
*/
addonsIndex.head = (options?: RouteQueryOptions): RouteDefinition<'head'> => ({
    url: addonsIndex.url(options),
    method: 'head',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::addonsIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:966
* @route '/admin/addons'
*/
const addonsIndexForm = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: addonsIndex.url(options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::addonsIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:966
* @route '/admin/addons'
*/
addonsIndexForm.get = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: addonsIndex.url(options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::addonsIndex
* @see app/Http/Controllers/Booking/AdminBookingController.php:966
* @route '/admin/addons'
*/
addonsIndexForm.head = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: addonsIndex.url({
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'HEAD',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'get',
})

addonsIndex.form = addonsIndexForm

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::reorderAddons
* @see app/Http/Controllers/Booking/AdminBookingController.php:1047
* @route '/admin/addons/reorder'
*/
export const reorderAddons = (options?: RouteQueryOptions): RouteDefinition<'post'> => ({
    url: reorderAddons.url(options),
    method: 'post',
})

reorderAddons.definition = {
    methods: ["post"],
    url: '/admin/addons/reorder',
} satisfies RouteDefinition<["post"]>

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::reorderAddons
* @see app/Http/Controllers/Booking/AdminBookingController.php:1047
* @route '/admin/addons/reorder'
*/
reorderAddons.url = (options?: RouteQueryOptions) => {
    return reorderAddons.definition.url + queryParams(options)
}

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::reorderAddons
* @see app/Http/Controllers/Booking/AdminBookingController.php:1047
* @route '/admin/addons/reorder'
*/
reorderAddons.post = (options?: RouteQueryOptions): RouteDefinition<'post'> => ({
    url: reorderAddons.url(options),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::reorderAddons
* @see app/Http/Controllers/Booking/AdminBookingController.php:1047
* @route '/admin/addons/reorder'
*/
const reorderAddonsForm = (options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: reorderAddons.url(options),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::reorderAddons
* @see app/Http/Controllers/Booking/AdminBookingController.php:1047
* @route '/admin/addons/reorder'
*/
reorderAddonsForm.post = (options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: reorderAddons.url(options),
    method: 'post',
})

reorderAddons.form = reorderAddonsForm

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::storeAddon
* @see app/Http/Controllers/Booking/AdminBookingController.php:981
* @route '/admin/addons'
*/
export const storeAddon = (options?: RouteQueryOptions): RouteDefinition<'post'> => ({
    url: storeAddon.url(options),
    method: 'post',
})

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

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::storeAddon
* @see app/Http/Controllers/Booking/AdminBookingController.php:981
* @route '/admin/addons'
*/
storeAddon.url = (options?: RouteQueryOptions) => {
    return storeAddon.definition.url + queryParams(options)
}

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::storeAddon
* @see app/Http/Controllers/Booking/AdminBookingController.php:981
* @route '/admin/addons'
*/
storeAddon.post = (options?: RouteQueryOptions): RouteDefinition<'post'> => ({
    url: storeAddon.url(options),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::storeAddon
* @see app/Http/Controllers/Booking/AdminBookingController.php:981
* @route '/admin/addons'
*/
const storeAddonForm = (options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: storeAddon.url(options),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::storeAddon
* @see app/Http/Controllers/Booking/AdminBookingController.php:981
* @route '/admin/addons'
*/
storeAddonForm.post = (options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: storeAddon.url(options),
    method: 'post',
})

storeAddon.form = storeAddonForm

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::updateAddon
* @see app/Http/Controllers/Booking/AdminBookingController.php:1006
* @route '/admin/addons/{addon}'
*/
export const updateAddon = (args: { addon: number | { id: number } } | [addon: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'patch'> => ({
    url: updateAddon.url(args, options),
    method: 'patch',
})

updateAddon.definition = {
    methods: ["patch"],
    url: '/admin/addons/{addon}',
} satisfies RouteDefinition<["patch"]>

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::updateAddon
* @see app/Http/Controllers/Booking/AdminBookingController.php:1006
* @route '/admin/addons/{addon}'
*/
updateAddon.url = (args: { addon: number | { id: number } } | [addon: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions) => {
    if (typeof args === 'string' || typeof args === 'number') {
        args = { addon: args }
    }

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

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

    args = applyUrlDefaults(args)

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

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

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::updateAddon
* @see app/Http/Controllers/Booking/AdminBookingController.php:1006
* @route '/admin/addons/{addon}'
*/
updateAddon.patch = (args: { addon: number | { id: number } } | [addon: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'patch'> => ({
    url: updateAddon.url(args, options),
    method: 'patch',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::updateAddon
* @see app/Http/Controllers/Booking/AdminBookingController.php:1006
* @route '/admin/addons/{addon}'
*/
const updateAddonForm = (args: { addon: number | { id: number } } | [addon: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: updateAddon.url(args, {
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'PATCH',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::updateAddon
* @see app/Http/Controllers/Booking/AdminBookingController.php:1006
* @route '/admin/addons/{addon}'
*/
updateAddonForm.patch = (args: { addon: number | { id: number } } | [addon: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: updateAddon.url(args, {
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'PATCH',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'post',
})

updateAddon.form = updateAddonForm

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::destroyAddon
* @see app/Http/Controllers/Booking/AdminBookingController.php:1031
* @route '/admin/addons/{addon}'
*/
export const destroyAddon = (args: { addon: number | { id: number } } | [addon: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'delete'> => ({
    url: destroyAddon.url(args, options),
    method: 'delete',
})

destroyAddon.definition = {
    methods: ["delete"],
    url: '/admin/addons/{addon}',
} satisfies RouteDefinition<["delete"]>

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::destroyAddon
* @see app/Http/Controllers/Booking/AdminBookingController.php:1031
* @route '/admin/addons/{addon}'
*/
destroyAddon.url = (args: { addon: number | { id: number } } | [addon: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions) => {
    if (typeof args === 'string' || typeof args === 'number') {
        args = { addon: args }
    }

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

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

    args = applyUrlDefaults(args)

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

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

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::destroyAddon
* @see app/Http/Controllers/Booking/AdminBookingController.php:1031
* @route '/admin/addons/{addon}'
*/
destroyAddon.delete = (args: { addon: number | { id: number } } | [addon: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<'delete'> => ({
    url: destroyAddon.url(args, options),
    method: 'delete',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::destroyAddon
* @see app/Http/Controllers/Booking/AdminBookingController.php:1031
* @route '/admin/addons/{addon}'
*/
const destroyAddonForm = (args: { addon: number | { id: number } } | [addon: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: destroyAddon.url(args, {
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'DELETE',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'post',
})

/**
* @see \App\Http\Controllers\Booking\AdminBookingController::destroyAddon
* @see app/Http/Controllers/Booking/AdminBookingController.php:1031
* @route '/admin/addons/{addon}'
*/
destroyAddonForm.delete = (args: { addon: number | { id: number } } | [addon: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: destroyAddon.url(args, {
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'DELETE',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'post',
})

destroyAddon.form = destroyAddonForm

const AdminBookingController = { bookingsIndex, reportsIndex, exportReports, storeWalkInBooking, updateBooking, cancelBooking, calendarEvents, locationsIndex, reorderLocations, storeLocation, updateLocation, destroyLocation, storeLocationType, updateLocationType, destroyLocationType, availabilityShow, availabilitySync, closedDatesStore, closedDatesDestroy, techniciansShow, techniciansSync, packagesIndex, reorderPackages, storePackage, editPackage, updatePackage, destroyPackage, addonsIndex, reorderAddons, storeAddon, updateAddon, destroyAddon }

export default AdminBookingController