import { queryParams, type RouteQueryOptions, type RouteDefinition, type RouteFormDefinition } from './../../wayfinder'
/**
* @see \App\Http\Controllers\EmailOtpController::challenge
* @see app/Http/Controllers/EmailOtpController.php:13
* @route '/otp/challenge'
*/
export const challenge = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: challenge.url(options),
    method: 'get',
})

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

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

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

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

/**
* @see \App\Http\Controllers\EmailOtpController::challenge
* @see app/Http/Controllers/EmailOtpController.php:13
* @route '/otp/challenge'
*/
const challengeForm = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: challenge.url(options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\EmailOtpController::challenge
* @see app/Http/Controllers/EmailOtpController.php:13
* @route '/otp/challenge'
*/
challengeForm.get = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: challenge.url(options),
    method: 'get',
})

/**
* @see \App\Http\Controllers\EmailOtpController::challenge
* @see app/Http/Controllers/EmailOtpController.php:13
* @route '/otp/challenge'
*/
challengeForm.head = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: challenge.url({
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'HEAD',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'get',
})

challenge.form = challengeForm

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

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

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

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

/**
* @see \App\Http\Controllers\EmailOtpController::verify
* @see app/Http/Controllers/EmailOtpController.php:22
* @route '/otp/verify'
*/
const verifyForm = (options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: verify.url(options),
    method: 'post',
})

/**
* @see \App\Http\Controllers\EmailOtpController::verify
* @see app/Http/Controllers/EmailOtpController.php:22
* @route '/otp/verify'
*/
verifyForm.post = (options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: verify.url(options),
    method: 'post',
})

verify.form = verifyForm

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

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

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

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

/**
* @see \App\Http\Controllers\EmailOtpController::resend
* @see app/Http/Controllers/EmailOtpController.php:36
* @route '/otp/resend'
*/
const resendForm = (options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: resend.url(options),
    method: 'post',
})

/**
* @see \App\Http\Controllers\EmailOtpController::resend
* @see app/Http/Controllers/EmailOtpController.php:36
* @route '/otp/resend'
*/
resendForm.post = (options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: resend.url(options),
    method: 'post',
})

resend.form = resendForm

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

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

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

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

/**
* @see \App\Http\Controllers\EmailOtpController::toggle
* @see app/Http/Controllers/EmailOtpController.php:46
* @route '/otp/toggle'
*/
const toggleForm = (options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: toggle.url(options),
    method: 'post',
})

/**
* @see \App\Http\Controllers\EmailOtpController::toggle
* @see app/Http/Controllers/EmailOtpController.php:46
* @route '/otp/toggle'
*/
toggleForm.post = (options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
    action: toggle.url(options),
    method: 'post',
})

toggle.form = toggleForm

const otp = {
    challenge: Object.assign(challenge, challenge),
    verify: Object.assign(verify, verify),
    resend: Object.assign(resend, resend),
    toggle: Object.assign(toggle, toggle),
}

export default otp