// This file is auto-generated by Laravel Wayfinder.
// Do not edit this file directly, any changes will be overwritten.

import { applyUrlDefaults, formSafeOptions, queryParams, type RouteDefinition, type RouteFormDefinition, type RouteQueryOptions } from "./../../index";

/**
 * @see \App\Http\Controllers\RoleController::index
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:26
 * @route "/roles"
 */
export const index = (options?: RouteQueryOptions): RouteDefinition<"get"> => ({
    url: index.url(options),
    method: "get",
})

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

/**
 * @see \App\Http\Controllers\RoleController::index
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:26
 * @route "/roles"
 */
index.url = (options?: RouteQueryOptions) => {
    return index.definition.url + queryParams(options)
}

/**
 * @see \App\Http\Controllers\RoleController::index
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:26
 * @route "/roles"
 */
index.get = (options?: RouteQueryOptions): RouteDefinition<"get"> => ({
    url: index.url(options),
    method: "get",
})

/**
 * @see \App\Http\Controllers\RoleController::index
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:26
 * @route "/roles"
 */
index.head = (options?: RouteQueryOptions): RouteDefinition<"head"> => ({
    url: index.url(options),
    method: "head",
})



/**
 * @see \App\Http\Controllers\RoleController::index
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:26
 * @route "/roles"
 */
const indexForm = (options?: RouteQueryOptions): RouteFormDefinition<"get"> => ({
    action: index.url(options),
    method: "get",
})

/**
 * @see \App\Http\Controllers\RoleController::index
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:26
 * @route "/roles"
 */
indexForm.get = (options?: RouteQueryOptions): RouteFormDefinition<"get"> => ({
    action: index.url(options),
    method: "get",
})

/**
 * @see \App\Http\Controllers\RoleController::index
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:26
 * @route "/roles"
 */
indexForm.head = (options?: RouteQueryOptions): RouteFormDefinition<"get"> => ({
    action: index.url(formSafeOptions("head", options)),
    method: "get",
})



index.form = indexForm
/**
 * @see \App\Http\Controllers\RoleController::create
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:56
 * @route "/roles/create"
 */
export const create = (options?: RouteQueryOptions): RouteDefinition<"get"> => ({
    url: create.url(options),
    method: "get",
})

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

/**
 * @see \App\Http\Controllers\RoleController::create
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:56
 * @route "/roles/create"
 */
create.url = (options?: RouteQueryOptions) => {
    return create.definition.url + queryParams(options)
}

/**
 * @see \App\Http\Controllers\RoleController::create
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:56
 * @route "/roles/create"
 */
create.get = (options?: RouteQueryOptions): RouteDefinition<"get"> => ({
    url: create.url(options),
    method: "get",
})

/**
 * @see \App\Http\Controllers\RoleController::create
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:56
 * @route "/roles/create"
 */
create.head = (options?: RouteQueryOptions): RouteDefinition<"head"> => ({
    url: create.url(options),
    method: "head",
})



/**
 * @see \App\Http\Controllers\RoleController::create
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:56
 * @route "/roles/create"
 */
const createForm = (options?: RouteQueryOptions): RouteFormDefinition<"get"> => ({
    action: create.url(options),
    method: "get",
})

/**
 * @see \App\Http\Controllers\RoleController::create
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:56
 * @route "/roles/create"
 */
createForm.get = (options?: RouteQueryOptions): RouteFormDefinition<"get"> => ({
    action: create.url(options),
    method: "get",
})

/**
 * @see \App\Http\Controllers\RoleController::create
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:56
 * @route "/roles/create"
 */
createForm.head = (options?: RouteQueryOptions): RouteFormDefinition<"get"> => ({
    action: create.url(formSafeOptions("head", options)),
    method: "get",
})



create.form = createForm
/**
 * @see \App\Http\Controllers\RoleController::store
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:70
 * @route "/roles"
 */
export const store = (options?: RouteQueryOptions): RouteDefinition<"post"> => ({
    url: store.url(options),
    method: "post",
})

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

/**
 * @see \App\Http\Controllers\RoleController::store
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:70
 * @route "/roles"
 */
store.url = (options?: RouteQueryOptions) => {
    return store.definition.url + queryParams(options)
}

/**
 * @see \App\Http\Controllers\RoleController::store
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:70
 * @route "/roles"
 */
store.post = (options?: RouteQueryOptions): RouteDefinition<"post"> => ({
    url: store.url(options),
    method: "post",
})



/**
 * @see \App\Http\Controllers\RoleController::store
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:70
 * @route "/roles"
 */
const storeForm = (options?: RouteQueryOptions): RouteFormDefinition<"post"> => ({
    action: store.url(options),
    method: "post",
})

/**
 * @see \App\Http\Controllers\RoleController::store
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:70
 * @route "/roles"
 */
storeForm.post = (options?: RouteQueryOptions): RouteFormDefinition<"post"> => ({
    action: store.url(options),
    method: "post",
})



store.form = storeForm
/**
 * @see \App\Http\Controllers\RoleController::show
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:124
 * @route "/roles/{role}"
 */
export const show = (args: { role: number | { id: number } } | [ role: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<"get"> => ({
    url: show.url(args, options),
    method: "get",
})

show.definition = {
    methods: ["get","head"],
    url: "/roles/{role}",
} satisfies RouteDefinition<["get","head"]>

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

/**
 * @see \App\Http\Controllers\RoleController::show
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:124
 * @route "/roles/{role}"
 */
show.get = (args: { role: number | { id: number } } | [ role: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<"get"> => ({
    url: show.url(args, options),
    method: "get",
})

/**
 * @see \App\Http\Controllers\RoleController::show
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:124
 * @route "/roles/{role}"
 */
show.head = (args: { role: number | { id: number } } | [ role: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<"head"> => ({
    url: show.url(args, options),
    method: "head",
})



/**
 * @see \App\Http\Controllers\RoleController::show
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:124
 * @route "/roles/{role}"
 */
const showForm = (args: { role: number | { id: number } } | [ role: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<"get"> => ({
    action: show.url(args, options),
    method: "get",
})

/**
 * @see \App\Http\Controllers\RoleController::show
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:124
 * @route "/roles/{role}"
 */
showForm.get = (args: { role: number | { id: number } } | [ role: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<"get"> => ({
    action: show.url(args, options),
    method: "get",
})

/**
 * @see \App\Http\Controllers\RoleController::show
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:124
 * @route "/roles/{role}"
 */
showForm.head = (args: { role: number | { id: number } } | [ role: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<"get"> => ({
    action: show.url(args, formSafeOptions("head", options)),
    method: "get",
})



show.form = showForm
/**
 * @see \App\Http\Controllers\RoleController::edit
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:138
 * @route "/roles/{role}/edit"
 */
export const edit = (args: { role: number | { id: number } } | [ role: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<"get"> => ({
    url: edit.url(args, options),
    method: "get",
})

edit.definition = {
    methods: ["get","head"],
    url: "/roles/{role}/edit",
} satisfies RouteDefinition<["get","head"]>

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

/**
 * @see \App\Http\Controllers\RoleController::edit
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:138
 * @route "/roles/{role}/edit"
 */
edit.get = (args: { role: number | { id: number } } | [ role: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<"get"> => ({
    url: edit.url(args, options),
    method: "get",
})

/**
 * @see \App\Http\Controllers\RoleController::edit
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:138
 * @route "/roles/{role}/edit"
 */
edit.head = (args: { role: number | { id: number } } | [ role: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<"head"> => ({
    url: edit.url(args, options),
    method: "head",
})



/**
 * @see \App\Http\Controllers\RoleController::edit
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:138
 * @route "/roles/{role}/edit"
 */
const editForm = (args: { role: number | { id: number } } | [ role: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<"get"> => ({
    action: edit.url(args, options),
    method: "get",
})

/**
 * @see \App\Http\Controllers\RoleController::edit
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:138
 * @route "/roles/{role}/edit"
 */
editForm.get = (args: { role: number | { id: number } } | [ role: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<"get"> => ({
    action: edit.url(args, options),
    method: "get",
})

/**
 * @see \App\Http\Controllers\RoleController::edit
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:138
 * @route "/roles/{role}/edit"
 */
editForm.head = (args: { role: number | { id: number } } | [ role: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<"get"> => ({
    action: edit.url(args, formSafeOptions("head", options)),
    method: "get",
})



edit.form = editForm
/**
 * @see \App\Http\Controllers\RoleController::update
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:155
 * @route "/roles/{role}"
 */
export const update = (args: { role: number | { id: number } } | [ role: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<"put"> => ({
    url: update.url(args, options),
    method: "put",
})

update.definition = {
    methods: ["put","patch"],
    url: "/roles/{role}",
} satisfies RouteDefinition<["put","patch"]>

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

/**
 * @see \App\Http\Controllers\RoleController::update
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:155
 * @route "/roles/{role}"
 */
update.put = (args: { role: number | { id: number } } | [ role: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<"put"> => ({
    url: update.url(args, options),
    method: "put",
})

/**
 * @see \App\Http\Controllers\RoleController::update
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:155
 * @route "/roles/{role}"
 */
update.patch = (args: { role: number | { id: number } } | [ role: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteDefinition<"patch"> => ({
    url: update.url(args, options),
    method: "patch",
})



/**
 * @see \App\Http\Controllers\RoleController::update
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:155
 * @route "/roles/{role}"
 */
const updateForm = (args: { role: number | { id: number } } | [ role: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<"post"> => ({
    action: update.url(args, formSafeOptions("put", options)),
    method: "post",
})

/**
 * @see \App\Http\Controllers\RoleController::update
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:155
 * @route "/roles/{role}"
 */
updateForm.put = (args: { role: number | { id: number } } | [ role: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<"post"> => ({
    action: update.url(args, formSafeOptions("put", options)),
    method: "post",
})

/**
 * @see \App\Http\Controllers\RoleController::update
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:155
 * @route "/roles/{role}"
 */
updateForm.patch = (args: { role: number | { id: number } } | [ role: number | { id: number } ] | number | { id: number }, options?: RouteQueryOptions): RouteFormDefinition<"post"> => ({
    action: update.url(args, formSafeOptions("patch", options)),
    method: "post",
})



update.form = updateForm
/**
 * @see \App\Http\Controllers\RoleController::destroy
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:203
 * @route "/roles/{role}"
 */
export const destroy = (args: { role: string | number } | [ role: string | number ] | string | number, options?: RouteQueryOptions): RouteDefinition<"delete"> => ({
    url: destroy.url(args, options),
    method: "delete",
})

destroy.definition = {
    methods: ["delete"],
    url: "/roles/{role}",
} satisfies RouteDefinition<["delete"]>

/**
 * @see \App\Http\Controllers\RoleController::destroy
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:203
 * @route "/roles/{role}"
 */
destroy.url = (args: { role: string | number } | [ role: string | number ] | string | number, options?: RouteQueryOptions) => {
    if (typeof args === "string" || typeof args === "number") {
        args = { role: args }
    }
    
    if (Array.isArray(args)) {
        args = {
        role: args[0],
    }
    }
    
    args = applyUrlDefaults(args)
    
    const parsedArgs = {
        role: args.role,
    }
    
    return destroy.definition.url
        .replace("{role}", parsedArgs.role.toString())
        .replace(/\/+$/, "") + queryParams(options)
}

/**
 * @see \App\Http\Controllers\RoleController::destroy
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:203
 * @route "/roles/{role}"
 */
destroy.delete = (args: { role: string | number } | [ role: string | number ] | string | number, options?: RouteQueryOptions): RouteDefinition<"delete"> => ({
    url: destroy.url(args, options),
    method: "delete",
})



/**
 * @see \App\Http\Controllers\RoleController::destroy
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:203
 * @route "/roles/{role}"
 */
const destroyForm = (args: { role: string | number } | [ role: string | number ] | string | number, options?: RouteQueryOptions): RouteFormDefinition<"post"> => ({
    action: destroy.url(args, formSafeOptions("delete", options)),
    method: "post",
})

/**
 * @see \App\Http\Controllers\RoleController::destroy
 * @see /var/www/html/faraja-vendible/app/Http/Controllers/RoleController.php:203
 * @route "/roles/{role}"
 */
destroyForm.delete = (args: { role: string | number } | [ role: string | number ] | string | number, options?: RouteQueryOptions): RouteFormDefinition<"post"> => ({
    action: destroy.url(args, formSafeOptions("delete", options)),
    method: "post",
})



destroy.form = destroyForm

const roles = {
    index,
    create,
    store,
    show,
    edit,
    update,
    destroy,
}

export default roles