import { queryParams, type RouteQueryOptions, type RouteDefinition, type RouteFormDefinition } from './../../wayfinder'
import news from './news'
/**
* @see routes/tenant.php:200
* @route '/tools/chats'
*/
export const chats = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: chats.url(options),
    method: 'get',
})

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

/**
* @see routes/tenant.php:200
* @route '/tools/chats'
*/
chats.url = (options?: RouteQueryOptions) => {
    return chats.definition.url + queryParams(options)
}

/**
* @see routes/tenant.php:200
* @route '/tools/chats'
*/
chats.get = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: chats.url(options),
    method: 'get',
})

/**
* @see routes/tenant.php:200
* @route '/tools/chats'
*/
chats.head = (options?: RouteQueryOptions): RouteDefinition<'head'> => ({
    url: chats.url(options),
    method: 'head',
})

/**
* @see routes/tenant.php:200
* @route '/tools/chats'
*/
const chatsForm = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: chats.url(options),
    method: 'get',
})

/**
* @see routes/tenant.php:200
* @route '/tools/chats'
*/
chatsForm.get = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: chats.url(options),
    method: 'get',
})

/**
* @see routes/tenant.php:200
* @route '/tools/chats'
*/
chatsForm.head = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: chats.url({
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'HEAD',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'get',
})

chats.form = chatsForm

/**
* @see routes/tenant.php:204
* @route '/tools/emails'
*/
export const emails = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: emails.url(options),
    method: 'get',
})

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

/**
* @see routes/tenant.php:204
* @route '/tools/emails'
*/
emails.url = (options?: RouteQueryOptions) => {
    return emails.definition.url + queryParams(options)
}

/**
* @see routes/tenant.php:204
* @route '/tools/emails'
*/
emails.get = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: emails.url(options),
    method: 'get',
})

/**
* @see routes/tenant.php:204
* @route '/tools/emails'
*/
emails.head = (options?: RouteQueryOptions): RouteDefinition<'head'> => ({
    url: emails.url(options),
    method: 'head',
})

/**
* @see routes/tenant.php:204
* @route '/tools/emails'
*/
const emailsForm = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: emails.url(options),
    method: 'get',
})

/**
* @see routes/tenant.php:204
* @route '/tools/emails'
*/
emailsForm.get = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: emails.url(options),
    method: 'get',
})

/**
* @see routes/tenant.php:204
* @route '/tools/emails'
*/
emailsForm.head = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: emails.url({
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'HEAD',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'get',
})

emails.form = emailsForm

/**
* @see routes/tenant.php:208
* @route '/tools/events'
*/
export const events = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: events.url(options),
    method: 'get',
})

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

/**
* @see routes/tenant.php:208
* @route '/tools/events'
*/
events.url = (options?: RouteQueryOptions) => {
    return events.definition.url + queryParams(options)
}

/**
* @see routes/tenant.php:208
* @route '/tools/events'
*/
events.get = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: events.url(options),
    method: 'get',
})

/**
* @see routes/tenant.php:208
* @route '/tools/events'
*/
events.head = (options?: RouteQueryOptions): RouteDefinition<'head'> => ({
    url: events.url(options),
    method: 'head',
})

/**
* @see routes/tenant.php:208
* @route '/tools/events'
*/
const eventsForm = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: events.url(options),
    method: 'get',
})

/**
* @see routes/tenant.php:208
* @route '/tools/events'
*/
eventsForm.get = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: events.url(options),
    method: 'get',
})

/**
* @see routes/tenant.php:208
* @route '/tools/events'
*/
eventsForm.head = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: events.url({
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'HEAD',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'get',
})

events.form = eventsForm

/**
* @see routes/tenant.php:212
* @route '/tools/notes'
*/
export const notes = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: notes.url(options),
    method: 'get',
})

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

/**
* @see routes/tenant.php:212
* @route '/tools/notes'
*/
notes.url = (options?: RouteQueryOptions) => {
    return notes.definition.url + queryParams(options)
}

/**
* @see routes/tenant.php:212
* @route '/tools/notes'
*/
notes.get = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: notes.url(options),
    method: 'get',
})

/**
* @see routes/tenant.php:212
* @route '/tools/notes'
*/
notes.head = (options?: RouteQueryOptions): RouteDefinition<'head'> => ({
    url: notes.url(options),
    method: 'head',
})

/**
* @see routes/tenant.php:212
* @route '/tools/notes'
*/
const notesForm = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: notes.url(options),
    method: 'get',
})

/**
* @see routes/tenant.php:212
* @route '/tools/notes'
*/
notesForm.get = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: notes.url(options),
    method: 'get',
})

/**
* @see routes/tenant.php:212
* @route '/tools/notes'
*/
notesForm.head = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: notes.url({
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'HEAD',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'get',
})

notes.form = notesForm

/**
* @see routes/tenant.php:216
* @route '/tools/reminders'
*/
export const reminders = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: reminders.url(options),
    method: 'get',
})

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

/**
* @see routes/tenant.php:216
* @route '/tools/reminders'
*/
reminders.url = (options?: RouteQueryOptions) => {
    return reminders.definition.url + queryParams(options)
}

/**
* @see routes/tenant.php:216
* @route '/tools/reminders'
*/
reminders.get = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: reminders.url(options),
    method: 'get',
})

/**
* @see routes/tenant.php:216
* @route '/tools/reminders'
*/
reminders.head = (options?: RouteQueryOptions): RouteDefinition<'head'> => ({
    url: reminders.url(options),
    method: 'head',
})

/**
* @see routes/tenant.php:216
* @route '/tools/reminders'
*/
const remindersForm = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: reminders.url(options),
    method: 'get',
})

/**
* @see routes/tenant.php:216
* @route '/tools/reminders'
*/
remindersForm.get = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: reminders.url(options),
    method: 'get',
})

/**
* @see routes/tenant.php:216
* @route '/tools/reminders'
*/
remindersForm.head = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: reminders.url({
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'HEAD',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'get',
})

reminders.form = remindersForm

/**
* @see routes/tenant.php:220
* @route '/tools/tasks'
*/
export const tasks = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: tasks.url(options),
    method: 'get',
})

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

/**
* @see routes/tenant.php:220
* @route '/tools/tasks'
*/
tasks.url = (options?: RouteQueryOptions) => {
    return tasks.definition.url + queryParams(options)
}

/**
* @see routes/tenant.php:220
* @route '/tools/tasks'
*/
tasks.get = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
    url: tasks.url(options),
    method: 'get',
})

/**
* @see routes/tenant.php:220
* @route '/tools/tasks'
*/
tasks.head = (options?: RouteQueryOptions): RouteDefinition<'head'> => ({
    url: tasks.url(options),
    method: 'head',
})

/**
* @see routes/tenant.php:220
* @route '/tools/tasks'
*/
const tasksForm = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: tasks.url(options),
    method: 'get',
})

/**
* @see routes/tenant.php:220
* @route '/tools/tasks'
*/
tasksForm.get = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: tasks.url(options),
    method: 'get',
})

/**
* @see routes/tenant.php:220
* @route '/tools/tasks'
*/
tasksForm.head = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
    action: tasks.url({
        [options?.mergeQuery ? 'mergeQuery' : 'query']: {
            _method: 'HEAD',
            ...(options?.query ?? options?.mergeQuery ?? {}),
        }
    }),
    method: 'get',
})

tasks.form = tasksForm

const tools = {
    chats: Object.assign(chats, chats),
    emails: Object.assign(emails, emails),
    events: Object.assign(events, events),
    notes: Object.assign(notes, notes),
    reminders: Object.assign(reminders, reminders),
    tasks: Object.assign(tasks, tasks),
    news: Object.assign(news, news),
}

export default tools