tsarr 2.9.1 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +120 -233
  3. package/dist/cli/commands/doctor.d.ts.map +1 -1
  4. package/dist/cli/commands/manual-import.d.ts +30 -0
  5. package/dist/cli/commands/manual-import.d.ts.map +1 -0
  6. package/dist/cli/commands/radarr.d.ts.map +1 -1
  7. package/dist/cli/commands/sonarr.d.ts.map +1 -1
  8. package/dist/cli/index.js +5230 -4783
  9. package/dist/cli/index.js.map +133 -0
  10. package/dist/clients/base.d.ts +8 -3
  11. package/dist/clients/base.d.ts.map +1 -1
  12. package/dist/clients/bazarr.d.ts +125 -124
  13. package/dist/clients/bazarr.d.ts.map +1 -1
  14. package/dist/clients/bazarr.js +183 -100
  15. package/dist/clients/bazarr.js.map +22 -0
  16. package/dist/clients/lidarr.d.ts +148 -147
  17. package/dist/clients/lidarr.d.ts.map +1 -1
  18. package/dist/clients/lidarr.js +190 -102
  19. package/dist/clients/lidarr.js.map +23 -0
  20. package/dist/clients/prowlarr.d.ts +30 -29
  21. package/dist/clients/prowlarr.d.ts.map +1 -1
  22. package/dist/clients/prowlarr.js +190 -102
  23. package/dist/clients/prowlarr.js.map +23 -0
  24. package/dist/clients/qbittorrent.d.ts +3 -1
  25. package/dist/clients/qbittorrent.d.ts.map +1 -1
  26. package/dist/clients/qbittorrent.js +213 -107
  27. package/dist/clients/qbittorrent.js.map +21 -0
  28. package/dist/clients/radarr.d.ts +195 -150
  29. package/dist/clients/radarr.d.ts.map +1 -1
  30. package/dist/clients/radarr.js +230 -102
  31. package/dist/clients/radarr.js.map +23 -0
  32. package/dist/clients/readarr.d.ts +150 -149
  33. package/dist/clients/readarr.d.ts.map +1 -1
  34. package/dist/clients/readarr.js +190 -102
  35. package/dist/clients/readarr.js.map +23 -0
  36. package/dist/clients/seerr-types.d.ts +1 -1
  37. package/dist/clients/seerr-types.d.ts.map +1 -1
  38. package/dist/clients/seerr.d.ts +17 -16
  39. package/dist/clients/seerr.d.ts.map +1 -1
  40. package/dist/clients/seerr.js +183 -100
  41. package/dist/clients/seerr.js.map +22 -0
  42. package/dist/clients/sonarr.d.ts +203 -168
  43. package/dist/clients/sonarr.d.ts.map +1 -1
  44. package/dist/clients/sonarr.js +206 -112
  45. package/dist/clients/sonarr.js.map +23 -0
  46. package/dist/core/client.d.ts +2 -0
  47. package/dist/core/client.d.ts.map +1 -1
  48. package/dist/core/fetch.d.ts +23 -0
  49. package/dist/core/fetch.d.ts.map +1 -0
  50. package/dist/core/index.d.ts +1 -0
  51. package/dist/core/index.d.ts.map +1 -1
  52. package/dist/core/types.d.ts +7 -0
  53. package/dist/core/types.d.ts.map +1 -1
  54. package/dist/generated/bazarr/client/client.gen.d.ts.map +1 -1
  55. package/dist/generated/bazarr/client/types.gen.d.ts +5 -2
  56. package/dist/generated/bazarr/client/types.gen.d.ts.map +1 -1
  57. package/dist/generated/bazarr/client/utils.gen.d.ts +5 -1
  58. package/dist/generated/bazarr/client/utils.gen.d.ts.map +1 -1
  59. package/dist/generated/lidarr/client/client.gen.d.ts.map +1 -1
  60. package/dist/generated/lidarr/client/types.gen.d.ts +5 -2
  61. package/dist/generated/lidarr/client/types.gen.d.ts.map +1 -1
  62. package/dist/generated/lidarr/client/utils.gen.d.ts +5 -1
  63. package/dist/generated/lidarr/client/utils.gen.d.ts.map +1 -1
  64. package/dist/generated/prowlarr/client/client.gen.d.ts.map +1 -1
  65. package/dist/generated/prowlarr/client/types.gen.d.ts +5 -2
  66. package/dist/generated/prowlarr/client/types.gen.d.ts.map +1 -1
  67. package/dist/generated/prowlarr/client/utils.gen.d.ts +5 -1
  68. package/dist/generated/prowlarr/client/utils.gen.d.ts.map +1 -1
  69. package/dist/generated/qbittorrent/client/client.gen.d.ts.map +1 -1
  70. package/dist/generated/qbittorrent/client/types.gen.d.ts +5 -2
  71. package/dist/generated/qbittorrent/client/types.gen.d.ts.map +1 -1
  72. package/dist/generated/qbittorrent/client/utils.gen.d.ts +5 -1
  73. package/dist/generated/qbittorrent/client/utils.gen.d.ts.map +1 -1
  74. package/dist/generated/radarr/client/client.gen.d.ts.map +1 -1
  75. package/dist/generated/radarr/client/types.gen.d.ts +5 -2
  76. package/dist/generated/radarr/client/types.gen.d.ts.map +1 -1
  77. package/dist/generated/radarr/client/utils.gen.d.ts +5 -1
  78. package/dist/generated/radarr/client/utils.gen.d.ts.map +1 -1
  79. package/dist/generated/readarr/client/client.gen.d.ts.map +1 -1
  80. package/dist/generated/readarr/client/types.gen.d.ts +5 -2
  81. package/dist/generated/readarr/client/types.gen.d.ts.map +1 -1
  82. package/dist/generated/readarr/client/utils.gen.d.ts +5 -1
  83. package/dist/generated/readarr/client/utils.gen.d.ts.map +1 -1
  84. package/dist/generated/seerr/client/client.gen.d.ts.map +1 -1
  85. package/dist/generated/seerr/client/types.gen.d.ts +5 -2
  86. package/dist/generated/seerr/client/types.gen.d.ts.map +1 -1
  87. package/dist/generated/seerr/client/utils.gen.d.ts +5 -1
  88. package/dist/generated/seerr/client/utils.gen.d.ts.map +1 -1
  89. package/dist/generated/seerr/index.d.ts +2 -2
  90. package/dist/generated/seerr/index.d.ts.map +1 -1
  91. package/dist/generated/seerr/sdk.gen.d.ts +13 -1
  92. package/dist/generated/seerr/sdk.gen.d.ts.map +1 -1
  93. package/dist/generated/seerr/types.gen.d.ts +78 -7
  94. package/dist/generated/seerr/types.gen.d.ts.map +1 -1
  95. package/dist/generated/sonarr/client/client.gen.d.ts.map +1 -1
  96. package/dist/generated/sonarr/client/types.gen.d.ts +5 -2
  97. package/dist/generated/sonarr/client/types.gen.d.ts.map +1 -1
  98. package/dist/generated/sonarr/client/utils.gen.d.ts +5 -1
  99. package/dist/generated/sonarr/client/utils.gen.d.ts.map +1 -1
  100. package/dist/index.js +4 -1
  101. package/dist/index.js.map +12 -0
  102. package/dist/tsarr-2.11.0.tgz +0 -0
  103. package/package.json +18 -9
  104. package/dist/tsarr-2.9.1.tgz +0 -0
@@ -0,0 +1,22 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/core/errors.ts", "../../src/core/fetch.ts", "../../src/core/client.ts", "../../src/generated/seerr/core/serverSentEvents.gen.ts", "../../src/generated/seerr/core/pathSerializer.gen.ts", "../../src/generated/seerr/core/utils.gen.ts", "../../src/generated/seerr/core/auth.gen.ts", "../../src/generated/seerr/core/bodySerializer.gen.ts", "../../src/generated/seerr/client/utils.gen.ts", "../../src/generated/seerr/client/client.gen.ts", "../../src/generated/seerr/client.gen.ts", "../../src/generated/seerr/sdk.gen.ts", "../../src/clients/seerr.ts"],
4
+ "sourcesContent": [
5
+ "export class TsarrError extends Error {\n constructor(\n message: string,\n public code?: string,\n public statusCode?: number,\n public details?: unknown\n ) {\n super(message);\n this.name = 'TsarrError';\n }\n}\n\nexport class ApiKeyError extends TsarrError {\n constructor(message = 'Invalid or missing API key') {\n super(message, 'API_KEY_ERROR', 401);\n this.name = 'ApiKeyError';\n }\n}\n\nexport class ConnectionError extends TsarrError {\n constructor(message: string, details?: unknown) {\n super(message, 'CONNECTION_ERROR', undefined, details);\n this.name = 'ConnectionError';\n }\n}\n\nexport class ValidationError extends TsarrError {\n constructor(message: string, details?: unknown) {\n super(message, 'VALIDATION_ERROR', undefined, details);\n this.name = 'ValidationError';\n }\n}\n\nexport class NotFoundError extends TsarrError {\n constructor(resource: string) {\n super(`Resource not found: ${resource}`, 'NOT_FOUND', 404);\n this.name = 'NotFoundError';\n }\n}\n",
6
+ "import { ConnectionError } from './errors';\n\nexport interface RetryOptions {\n /** Maximum number of retry attempts for transient failures (default: 3) */\n maxRetries?: number;\n /** Initial delay in ms before the first retry (default: 1000) */\n initialDelayMs?: number;\n /** Maximum delay in ms between retries (default: 10000) */\n maxDelayMs?: number;\n}\n\nexport interface ResilientFetchOptions {\n /** Request timeout in milliseconds (default: 30000) */\n timeout?: number;\n /** Retry configuration for transient failures. Omit to disable retries. */\n retry?: RetryOptions;\n}\n\nconst DEFAULT_TIMEOUT = 30_000;\nconst DEFAULT_MAX_RETRIES = 3;\nconst DEFAULT_INITIAL_DELAY = 1_000;\nconst DEFAULT_MAX_DELAY = 10_000;\n\nconst RETRYABLE_STATUS_CODES = new Set([408, 429, 502, 503, 504]);\n\nfunction isRetryable(error: unknown): boolean {\n if (error instanceof DOMException && error.name === 'AbortError') {\n return false;\n }\n if (error instanceof TypeError) {\n // Network errors from fetch (e.g. DNS failure, connection refused)\n return true;\n }\n return false;\n}\n\nfunction getRetryDelay(attempt: number, initialDelayMs: number, maxDelayMs: number): number {\n const delay = initialDelayMs * 2 ** attempt;\n const jitter = delay * 0.2 * Math.random();\n return Math.min(delay + jitter, maxDelayMs);\n}\n\n/**\n * Creates a fetch function with timeout and retry support.\n *\n * - Timeout uses AbortController to cancel requests that exceed the limit.\n * - Retry uses exponential backoff with jitter for transient failures\n * (network errors and 408/429/502/503/504 status codes).\n */\nexport function createResilientFetch(options: ResilientFetchOptions = {}): typeof fetch {\n const timeout = options.timeout ?? DEFAULT_TIMEOUT;\n const maxRetries = options.retry ? (options.retry.maxRetries ?? DEFAULT_MAX_RETRIES) : 0;\n const initialDelayMs = options.retry?.initialDelayMs ?? DEFAULT_INITIAL_DELAY;\n const maxDelayMs = options.retry?.maxDelayMs ?? DEFAULT_MAX_DELAY;\n\n const resilientFetch = async (\n input: RequestInfo | URL,\n init?: RequestInit\n ): Promise<Response> => {\n let lastError: unknown;\n const template = createRequestTemplate(input, init);\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeout);\n\n // Merge abort signals: respect caller's signal and our timeout\n const callerSignal = init?.signal;\n if (callerSignal?.aborted) {\n clearTimeout(timeoutId);\n throw callerSignal.reason ?? new DOMException('The operation was aborted.', 'AbortError');\n }\n\n const onCallerAbort = () => controller.abort(callerSignal!.reason);\n callerSignal?.addEventListener('abort', onCallerAbort, { once: true });\n\n try {\n const response = await globalThis.fetch(\n new Request(template.clone(), { signal: controller.signal })\n );\n\n clearTimeout(timeoutId);\n callerSignal?.removeEventListener('abort', onCallerAbort);\n\n if (RETRYABLE_STATUS_CODES.has(response.status) && attempt < maxRetries) {\n lastError = new ConnectionError(`Request failed with status ${response.status}`);\n const delay = getRetryDelay(attempt, initialDelayMs, maxDelayMs);\n await new Promise(resolve => setTimeout(resolve, delay));\n continue;\n }\n\n return response;\n } catch (error) {\n clearTimeout(timeoutId);\n callerSignal?.removeEventListener('abort', onCallerAbort);\n\n // If the caller aborted, don't retry\n if (callerSignal?.aborted) {\n throw callerSignal.reason ?? new DOMException('The operation was aborted.', 'AbortError');\n }\n\n // Timeout: wrap as ConnectionError\n if (error instanceof DOMException && error.name === 'AbortError') {\n lastError = new ConnectionError(`Request timed out after ${timeout}ms`);\n if (attempt < maxRetries) {\n const delay = getRetryDelay(attempt, initialDelayMs, maxDelayMs);\n await new Promise(resolve => setTimeout(resolve, delay));\n continue;\n }\n throw lastError;\n }\n\n if (isRetryable(error) && attempt < maxRetries) {\n lastError = error;\n const delay = getRetryDelay(attempt, initialDelayMs, maxDelayMs);\n await new Promise(resolve => setTimeout(resolve, delay));\n continue;\n }\n\n throw error;\n }\n }\n\n throw lastError;\n };\n\n return Object.assign(resilientFetch, {\n preconnect: globalThis.fetch.preconnect?.bind(globalThis.fetch),\n }) as typeof fetch;\n}\n\nfunction createRequestTemplate(input: RequestInfo | URL, init?: RequestInit): Request {\n const { signal: _signal, ...requestInit } = init ?? {};\n\n if (input instanceof Request) {\n return init ? new Request(input.clone(), requestInit) : input.clone();\n }\n\n return new Request(input, requestInit);\n}\n",
7
+ "import { ApiKeyError, ConnectionError } from './errors';\nimport { createResilientFetch } from './fetch';\nimport type { ServarrClientConfig } from './types';\n\nconst DEFAULT_TIMEOUT_MS = 30_000;\n\nexport function createServarrClient(config: ServarrClientConfig) {\n if (!config.apiKey) {\n throw new ApiKeyError();\n }\n\n if (!config.baseUrl) {\n throw new ConnectionError('No base URL provided');\n }\n\n const validatedConfig = {\n ...config,\n baseUrl: config.baseUrl.replace(/\\/$/, ''),\n };\n\n const timeoutMs = validatedConfig.timeout ?? DEFAULT_TIMEOUT_MS;\n\n const resilientFetch = createResilientFetch({\n timeout: timeoutMs,\n retry: validatedConfig.retry,\n });\n\n return {\n config: validatedConfig,\n getHeaders: () => ({\n 'X-Api-Key': validatedConfig.apiKey,\n 'Content-Type': 'application/json',\n ...validatedConfig.headers,\n }),\n getBaseUrl: () => validatedConfig.baseUrl,\n getTimeout: () => timeoutMs,\n getFetch: () => resilientFetch,\n };\n}\n\nexport function validateApiKey(apiKey: string | undefined): string {\n if (!apiKey || apiKey.trim() === '') {\n throw new ApiKeyError();\n }\n return apiKey.trim();\n}\n\nexport function validateBaseUrl(baseUrl: string | undefined): string {\n if (!baseUrl || baseUrl.trim() === '') {\n throw new ConnectionError('No base URL provided');\n }\n\n let parsed: URL;\n try {\n parsed = new URL(baseUrl);\n } catch {\n throw new ConnectionError(`Failed to connect: Invalid URL: ${baseUrl}`);\n }\n\n if (parsed.protocol === 'http:' && !isLocalhost(parsed.hostname)) {\n console.warn(\n `Warning: Using unencrypted HTTP for remote URL \"${parsed.host}\". Consider using HTTPS to protect your API key in transit.`\n );\n }\n\n return baseUrl.trim().replace(/\\/$/, '');\n}\n\nfunction isLocalhost(hostname: string): boolean {\n return (\n hostname === 'localhost' ||\n hostname === '127.0.0.1' ||\n hostname === '::1' ||\n hostname === '0.0.0.0' ||\n hostname.endsWith('.local') ||\n /^(10\\.|172\\.(1[6-9]|2\\d|3[01])\\.|192\\.168\\.)/.test(hostname)\n );\n}\n",
8
+ "// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Config } from './types.gen';\n\nexport type ServerSentEventsOptions<TData = unknown> = Omit<RequestInit, 'method'> &\n Pick<Config, 'method' | 'responseTransformer' | 'responseValidator'> & {\n /**\n * Fetch API implementation. You can use this option to provide a custom\n * fetch instance.\n *\n * @default globalThis.fetch\n */\n fetch?: typeof fetch;\n /**\n * Implementing clients can call request interceptors inside this hook.\n */\n onRequest?: (url: string, init: RequestInit) => Promise<Request>;\n /**\n * Callback invoked when a network or parsing error occurs during streaming.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @param error The error that occurred.\n */\n onSseError?: (error: unknown) => void;\n /**\n * Callback invoked when an event is streamed from the server.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @param event Event streamed from the server.\n * @returns Nothing (void).\n */\n onSseEvent?: (event: StreamEvent<TData>) => void;\n serializedBody?: RequestInit['body'];\n /**\n * Default retry delay in milliseconds.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @default 3000\n */\n sseDefaultRetryDelay?: number;\n /**\n * Maximum number of retry attempts before giving up.\n */\n sseMaxRetryAttempts?: number;\n /**\n * Maximum retry delay in milliseconds.\n *\n * Applies only when exponential backoff is used.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @default 30000\n */\n sseMaxRetryDelay?: number;\n /**\n * Optional sleep function for retry backoff.\n *\n * Defaults to using `setTimeout`.\n */\n sseSleepFn?: (ms: number) => Promise<void>;\n url: string;\n };\n\nexport interface StreamEvent<TData = unknown> {\n data: TData;\n event?: string;\n id?: string;\n retry?: number;\n}\n\nexport type ServerSentEventsResult<TData = unknown, TReturn = void, TNext = unknown> = {\n stream: AsyncGenerator<\n TData extends Record<string, unknown> ? TData[keyof TData] : TData,\n TReturn,\n TNext\n >;\n};\n\nexport function createSseClient<TData = unknown>({\n onRequest,\n onSseError,\n onSseEvent,\n responseTransformer,\n responseValidator,\n sseDefaultRetryDelay,\n sseMaxRetryAttempts,\n sseMaxRetryDelay,\n sseSleepFn,\n url,\n ...options\n}: ServerSentEventsOptions): ServerSentEventsResult<TData> {\n let lastEventId: string | undefined;\n\n const sleep = sseSleepFn ?? ((ms: number) => new Promise((resolve) => setTimeout(resolve, ms)));\n\n const createStream = async function* () {\n let retryDelay: number = sseDefaultRetryDelay ?? 3000;\n let attempt = 0;\n const signal = options.signal ?? new AbortController().signal;\n\n while (true) {\n if (signal.aborted) break;\n\n attempt++;\n\n const headers =\n options.headers instanceof Headers\n ? options.headers\n : new Headers(options.headers as Record<string, string> | undefined);\n\n if (lastEventId !== undefined) {\n headers.set('Last-Event-ID', lastEventId);\n }\n\n try {\n const requestInit: RequestInit = {\n redirect: 'follow',\n ...options,\n body: options.serializedBody,\n headers,\n signal,\n };\n let request = new Request(url, requestInit);\n if (onRequest) {\n request = await onRequest(url, requestInit);\n }\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = options.fetch ?? globalThis.fetch;\n const response = await _fetch(request);\n\n if (!response.ok) throw new Error(`SSE failed: ${response.status} ${response.statusText}`);\n\n if (!response.body) throw new Error('No body in SSE response');\n\n const reader = response.body.pipeThrough(new TextDecoderStream()).getReader();\n\n let buffer = '';\n\n const abortHandler = () => {\n try {\n reader.cancel();\n } catch {\n // noop\n }\n };\n\n signal.addEventListener('abort', abortHandler);\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += value;\n buffer = buffer.replace(/\\r\\n?/g, '\\n'); // normalize line endings\n\n const chunks = buffer.split('\\n\\n');\n buffer = chunks.pop() ?? '';\n\n for (const chunk of chunks) {\n const lines = chunk.split('\\n');\n const dataLines: Array<string> = [];\n let eventName: string | undefined;\n\n for (const line of lines) {\n if (line.startsWith('data:')) {\n dataLines.push(line.replace(/^data:\\s*/, ''));\n } else if (line.startsWith('event:')) {\n eventName = line.replace(/^event:\\s*/, '');\n } else if (line.startsWith('id:')) {\n lastEventId = line.replace(/^id:\\s*/, '');\n } else if (line.startsWith('retry:')) {\n const parsed = Number.parseInt(line.replace(/^retry:\\s*/, ''), 10);\n if (!Number.isNaN(parsed)) {\n retryDelay = parsed;\n }\n }\n }\n\n let data: unknown;\n let parsedJson = false;\n\n if (dataLines.length) {\n const rawData = dataLines.join('\\n');\n try {\n data = JSON.parse(rawData);\n parsedJson = true;\n } catch {\n data = rawData;\n }\n }\n\n if (parsedJson) {\n if (responseValidator) {\n await responseValidator(data);\n }\n\n if (responseTransformer) {\n data = await responseTransformer(data);\n }\n }\n\n onSseEvent?.({\n data,\n event: eventName,\n id: lastEventId,\n retry: retryDelay,\n });\n\n if (dataLines.length) {\n yield data as any;\n }\n }\n }\n } finally {\n signal.removeEventListener('abort', abortHandler);\n reader.releaseLock();\n }\n\n break; // exit loop on normal completion\n } catch (error) {\n // connection failed or aborted; retry after delay\n onSseError?.(error);\n\n if (sseMaxRetryAttempts !== undefined && attempt >= sseMaxRetryAttempts) {\n break; // stop after firing error\n }\n\n // exponential backoff: double retry each attempt, cap at 30s\n const backoff = Math.min(retryDelay * 2 ** (attempt - 1), sseMaxRetryDelay ?? 30000);\n await sleep(backoff);\n }\n }\n };\n\n const stream = createStream();\n\n return { stream };\n}\n",
9
+ "// This file is auto-generated by @hey-api/openapi-ts\n\ninterface SerializeOptions<T> extends SerializePrimitiveOptions, SerializerOptions<T> {}\n\ninterface SerializePrimitiveOptions {\n allowReserved?: boolean;\n name: string;\n}\n\nexport interface SerializerOptions<T> {\n /**\n * @default true\n */\n explode: boolean;\n style: T;\n}\n\nexport type ArrayStyle = 'form' | 'spaceDelimited' | 'pipeDelimited';\nexport type ArraySeparatorStyle = ArrayStyle | MatrixStyle;\ntype MatrixStyle = 'label' | 'matrix' | 'simple';\nexport type ObjectStyle = 'form' | 'deepObject';\ntype ObjectSeparatorStyle = ObjectStyle | MatrixStyle;\n\ninterface SerializePrimitiveParam extends SerializePrimitiveOptions {\n value: string;\n}\n\nexport const separatorArrayExplode = (style: ArraySeparatorStyle) => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\n\nexport const separatorArrayNoExplode = (style: ArraySeparatorStyle) => {\n switch (style) {\n case 'form':\n return ',';\n case 'pipeDelimited':\n return '|';\n case 'spaceDelimited':\n return '%20';\n default:\n return ',';\n }\n};\n\nexport const separatorObjectExplode = (style: ObjectSeparatorStyle) => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\n\nexport const serializeArrayParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n}: SerializeOptions<ArraySeparatorStyle> & {\n value: unknown[];\n}) => {\n if (!explode) {\n const joinedValues = (\n allowReserved ? value : value.map((v) => encodeURIComponent(v as string))\n ).join(separatorArrayNoExplode(style));\n switch (style) {\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n case 'simple':\n return joinedValues;\n default:\n return `${name}=${joinedValues}`;\n }\n }\n\n const separator = separatorArrayExplode(style);\n const joinedValues = value\n .map((v) => {\n if (style === 'label' || style === 'simple') {\n return allowReserved ? v : encodeURIComponent(v as string);\n }\n\n return serializePrimitiveParam({\n allowReserved,\n name,\n value: v as string,\n });\n })\n .join(separator);\n return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;\n};\n\nexport const serializePrimitiveParam = ({\n allowReserved,\n name,\n value,\n}: SerializePrimitiveParam) => {\n if (value === undefined || value === null) {\n return '';\n }\n\n if (typeof value === 'object') {\n throw new Error(\n 'Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.',\n );\n }\n\n return `${name}=${allowReserved ? value : encodeURIComponent(value)}`;\n};\n\nexport const serializeObjectParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n valueOnly,\n}: SerializeOptions<ObjectSeparatorStyle> & {\n value: Record<string, unknown> | Date;\n valueOnly?: boolean;\n}) => {\n if (value instanceof Date) {\n return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}`;\n }\n\n if (style !== 'deepObject' && !explode) {\n let values: string[] = [];\n Object.entries(value).forEach(([key, v]) => {\n values = [...values, key, allowReserved ? (v as string) : encodeURIComponent(v as string)];\n });\n const joinedValues = values.join(',');\n switch (style) {\n case 'form':\n return `${name}=${joinedValues}`;\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n default:\n return joinedValues;\n }\n }\n\n const separator = separatorObjectExplode(style);\n const joinedValues = Object.entries(value)\n .map(([key, v]) =>\n serializePrimitiveParam({\n allowReserved,\n name: style === 'deepObject' ? `${name}[${key}]` : key,\n value: v as string,\n }),\n )\n .join(separator);\n return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;\n};\n",
10
+ "// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { BodySerializer, QuerySerializer } from './bodySerializer.gen';\nimport {\n type ArraySeparatorStyle,\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from './pathSerializer.gen';\n\nexport interface PathSerializer {\n path: Record<string, unknown>;\n url: string;\n}\n\nexport const PATH_PARAM_RE = /\\{[^{}]+\\}/g;\n\nexport const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => {\n let url = _url;\n const matches = _url.match(PATH_PARAM_RE);\n if (matches) {\n for (const match of matches) {\n let explode = false;\n let name = match.substring(1, match.length - 1);\n let style: ArraySeparatorStyle = 'simple';\n\n if (name.endsWith('*')) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n\n if (name.startsWith('.')) {\n name = name.substring(1);\n style = 'label';\n } else if (name.startsWith(';')) {\n name = name.substring(1);\n style = 'matrix';\n }\n\n const value = path[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n if (Array.isArray(value)) {\n url = url.replace(match, serializeArrayParam({ explode, name, style, value }));\n continue;\n }\n\n if (typeof value === 'object') {\n url = url.replace(\n match,\n serializeObjectParam({\n explode,\n name,\n style,\n value: value as Record<string, unknown>,\n valueOnly: true,\n }),\n );\n continue;\n }\n\n if (style === 'matrix') {\n url = url.replace(\n match,\n `;${serializePrimitiveParam({\n name,\n value: value as string,\n })}`,\n );\n continue;\n }\n\n const replaceValue = encodeURIComponent(\n style === 'label' ? `.${value as string}` : (value as string),\n );\n url = url.replace(match, replaceValue);\n }\n }\n return url;\n};\n\nexport const getUrl = ({\n baseUrl,\n path,\n query,\n querySerializer,\n url: _url,\n}: {\n baseUrl?: string;\n path?: Record<string, unknown>;\n query?: Record<string, unknown>;\n querySerializer: QuerySerializer;\n url: string;\n}) => {\n const pathUrl = _url.startsWith('/') ? _url : `/${_url}`;\n let url = (baseUrl ?? '') + pathUrl;\n if (path) {\n url = defaultPathSerializer({ path, url });\n }\n let search = query ? querySerializer(query) : '';\n if (search.startsWith('?')) {\n search = search.substring(1);\n }\n if (search) {\n url += `?${search}`;\n }\n return url;\n};\n\nexport function getValidRequestBody(options: {\n body?: unknown;\n bodySerializer?: BodySerializer | null;\n serializedBody?: unknown;\n}) {\n const hasBody = options.body !== undefined;\n const isSerializedBody = hasBody && options.bodySerializer;\n\n if (isSerializedBody) {\n if ('serializedBody' in options) {\n const hasSerializedBody =\n options.serializedBody !== undefined && options.serializedBody !== '';\n\n return hasSerializedBody ? options.serializedBody : null;\n }\n\n // not all clients implement a serializedBody property (i.e., client-axios)\n return options.body !== '' ? options.body : null;\n }\n\n // plain/text body\n if (hasBody) {\n return options.body;\n }\n\n // no body was provided\n return undefined;\n}\n",
11
+ "// This file is auto-generated by @hey-api/openapi-ts\n\nexport type AuthToken = string | undefined;\n\nexport interface Auth {\n /**\n * Which part of the request do we use to send the auth?\n *\n * @default 'header'\n */\n in?: 'header' | 'query' | 'cookie';\n /**\n * Header or query parameter name.\n *\n * @default 'Authorization'\n */\n name?: string;\n scheme?: 'basic' | 'bearer';\n type: 'apiKey' | 'http';\n}\n\nexport const getAuthToken = async (\n auth: Auth,\n callback: ((auth: Auth) => Promise<AuthToken> | AuthToken) | AuthToken,\n): Promise<string | undefined> => {\n const token = typeof callback === 'function' ? await callback(auth) : callback;\n\n if (!token) {\n return;\n }\n\n if (auth.scheme === 'bearer') {\n return `Bearer ${token}`;\n }\n\n if (auth.scheme === 'basic') {\n return `Basic ${btoa(token)}`;\n }\n\n return token;\n};\n",
12
+ "// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { ArrayStyle, ObjectStyle, SerializerOptions } from './pathSerializer.gen';\n\nexport type QuerySerializer = (query: Record<string, unknown>) => string;\n\nexport type BodySerializer = (body: unknown) => unknown;\n\ntype QuerySerializerOptionsObject = {\n allowReserved?: boolean;\n array?: Partial<SerializerOptions<ArrayStyle>>;\n object?: Partial<SerializerOptions<ObjectStyle>>;\n};\n\nexport type QuerySerializerOptions = QuerySerializerOptionsObject & {\n /**\n * Per-parameter serialization overrides. When provided, these settings\n * override the global array/object settings for specific parameter names.\n */\n parameters?: Record<string, QuerySerializerOptionsObject>;\n};\n\nconst serializeFormDataPair = (data: FormData, key: string, value: unknown): void => {\n if (typeof value === 'string' || value instanceof Blob) {\n data.append(key, value);\n } else if (value instanceof Date) {\n data.append(key, value.toISOString());\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nconst serializeUrlSearchParamsPair = (data: URLSearchParams, key: string, value: unknown): void => {\n if (typeof value === 'string') {\n data.append(key, value);\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nexport const formDataBodySerializer = {\n bodySerializer: (body: unknown): FormData => {\n const data = new FormData();\n\n Object.entries(body as Record<string, unknown>).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeFormDataPair(data, key, v));\n } else {\n serializeFormDataPair(data, key, value);\n }\n });\n\n return data;\n },\n};\n\nexport const jsonBodySerializer = {\n bodySerializer: (body: unknown): string =>\n JSON.stringify(body, (_key, value) => (typeof value === 'bigint' ? value.toString() : value)),\n};\n\nexport const urlSearchParamsBodySerializer = {\n bodySerializer: (body: unknown): string => {\n const data = new URLSearchParams();\n\n Object.entries(body as Record<string, unknown>).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeUrlSearchParamsPair(data, key, v));\n } else {\n serializeUrlSearchParamsPair(data, key, value);\n }\n });\n\n return data.toString();\n },\n};\n",
13
+ "// This file is auto-generated by @hey-api/openapi-ts\n\nimport { getAuthToken } from '../core/auth.gen';\nimport type { QuerySerializerOptions } from '../core/bodySerializer.gen';\nimport { jsonBodySerializer } from '../core/bodySerializer.gen';\nimport {\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from '../core/pathSerializer.gen';\nimport { getUrl } from '../core/utils.gen';\nimport type { Client, ClientOptions, Config, RequestOptions } from './types.gen';\n\nexport const createQuerySerializer = <T = unknown>({\n parameters = {},\n ...args\n}: QuerySerializerOptions = {}) => {\n const querySerializer = (queryParams: T) => {\n const search: string[] = [];\n if (queryParams && typeof queryParams === 'object') {\n for (const name in queryParams) {\n const value = queryParams[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n const options = parameters[name] || args;\n\n if (Array.isArray(value)) {\n const serializedArray = serializeArrayParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'form',\n value,\n ...options.array,\n });\n if (serializedArray) search.push(serializedArray);\n } else if (typeof value === 'object') {\n const serializedObject = serializeObjectParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'deepObject',\n value: value as Record<string, unknown>,\n ...options.object,\n });\n if (serializedObject) search.push(serializedObject);\n } else {\n const serializedPrimitive = serializePrimitiveParam({\n allowReserved: options.allowReserved,\n name,\n value: value as string,\n });\n if (serializedPrimitive) search.push(serializedPrimitive);\n }\n }\n }\n return search.join('&');\n };\n return querySerializer;\n};\n\n/**\n * Infers parseAs value from provided Content-Type header.\n */\nexport const getParseAs = (contentType: string | null): Exclude<Config['parseAs'], 'auto'> => {\n if (!contentType) {\n // If no Content-Type header is provided, the best we can do is return the raw response body,\n // which is effectively the same as the 'stream' option.\n return 'stream';\n }\n\n const cleanContent = contentType.split(';')[0]?.trim();\n\n if (!cleanContent) {\n return;\n }\n\n if (cleanContent.startsWith('application/json') || cleanContent.endsWith('+json')) {\n return 'json';\n }\n\n if (cleanContent === 'multipart/form-data') {\n return 'formData';\n }\n\n if (\n ['application/', 'audio/', 'image/', 'video/'].some((type) => cleanContent.startsWith(type))\n ) {\n return 'blob';\n }\n\n if (cleanContent.startsWith('text/')) {\n return 'text';\n }\n\n return;\n};\n\nconst checkForExistence = (\n options: Pick<RequestOptions, 'auth' | 'query'> & {\n headers: Headers;\n },\n name?: string,\n): boolean => {\n if (!name) {\n return false;\n }\n if (\n options.headers.has(name) ||\n options.query?.[name] ||\n options.headers.get('Cookie')?.includes(`${name}=`)\n ) {\n return true;\n }\n return false;\n};\n\nexport const setAuthParams = async ({\n security,\n ...options\n}: Pick<Required<RequestOptions>, 'security'> &\n Pick<RequestOptions, 'auth' | 'query'> & {\n headers: Headers;\n }) => {\n for (const auth of security) {\n if (checkForExistence(options, auth.name)) {\n continue;\n }\n\n const token = await getAuthToken(auth, options.auth);\n\n if (!token) {\n continue;\n }\n\n const name = auth.name ?? 'Authorization';\n\n switch (auth.in) {\n case 'query':\n if (!options.query) {\n options.query = {};\n }\n options.query[name] = token;\n break;\n case 'cookie':\n options.headers.append('Cookie', `${name}=${token}`);\n break;\n case 'header':\n default:\n options.headers.set(name, token);\n break;\n }\n }\n};\n\nexport const buildUrl: Client['buildUrl'] = (options) =>\n getUrl({\n baseUrl: options.baseUrl as string,\n path: options.path,\n query: options.query,\n querySerializer:\n typeof options.querySerializer === 'function'\n ? options.querySerializer\n : createQuerySerializer(options.querySerializer),\n url: options.url,\n });\n\nexport const mergeConfigs = (a: Config, b: Config): Config => {\n const config = { ...a, ...b };\n if (config.baseUrl?.endsWith('/')) {\n config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1);\n }\n config.headers = mergeHeaders(a.headers, b.headers);\n return config;\n};\n\nconst headersEntries = (headers: Headers): Array<[string, string]> => {\n const entries: Array<[string, string]> = [];\n headers.forEach((value, key) => {\n entries.push([key, value]);\n });\n return entries;\n};\n\nexport const mergeHeaders = (\n ...headers: Array<Required<Config>['headers'] | undefined>\n): Headers => {\n const mergedHeaders = new Headers();\n for (const header of headers) {\n if (!header) {\n continue;\n }\n\n const iterator = header instanceof Headers ? headersEntries(header) : Object.entries(header);\n\n for (const [key, value] of iterator) {\n if (value === null) {\n mergedHeaders.delete(key);\n } else if (Array.isArray(value)) {\n for (const v of value) {\n mergedHeaders.append(key, v as string);\n }\n } else if (value !== undefined) {\n // assume object headers are meant to be JSON stringified, i.e., their\n // content value in OpenAPI specification is 'application/json'\n mergedHeaders.set(\n key,\n typeof value === 'object' ? JSON.stringify(value) : (value as string),\n );\n }\n }\n }\n return mergedHeaders;\n};\n\ntype ErrInterceptor<Err, Res, Req, Options> = (\n error: Err,\n /** response may be undefined due to a network error where no response object is produced */\n response: Res | undefined,\n /** request may be undefined, because error may be from building the request object itself */\n request: Req | undefined,\n options: Options,\n) => Err | Promise<Err>;\n\ntype ReqInterceptor<Req, Options> = (request: Req, options: Options) => Req | Promise<Req>;\n\ntype ResInterceptor<Res, Req, Options> = (\n response: Res,\n request: Req,\n options: Options,\n) => Res | Promise<Res>;\n\nclass Interceptors<Interceptor> {\n fns: Array<Interceptor | null> = [];\n\n clear(): void {\n this.fns = [];\n }\n\n eject(id: number | Interceptor): void {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = null;\n }\n }\n\n exists(id: number | Interceptor): boolean {\n const index = this.getInterceptorIndex(id);\n return Boolean(this.fns[index]);\n }\n\n getInterceptorIndex(id: number | Interceptor): number {\n if (typeof id === 'number') {\n return this.fns[id] ? id : -1;\n }\n return this.fns.indexOf(id);\n }\n\n update(id: number | Interceptor, fn: Interceptor): number | Interceptor | false {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = fn;\n return id;\n }\n return false;\n }\n\n use(fn: Interceptor): number {\n this.fns.push(fn);\n return this.fns.length - 1;\n }\n}\n\nexport interface Middleware<Req, Res, Err, Options> {\n error: Interceptors<ErrInterceptor<Err, Res, Req, Options>>;\n request: Interceptors<ReqInterceptor<Req, Options>>;\n response: Interceptors<ResInterceptor<Res, Req, Options>>;\n}\n\nexport const createInterceptors = <Req, Res, Err, Options>(): Middleware<\n Req,\n Res,\n Err,\n Options\n> => ({\n error: new Interceptors<ErrInterceptor<Err, Res, Req, Options>>(),\n request: new Interceptors<ReqInterceptor<Req, Options>>(),\n response: new Interceptors<ResInterceptor<Res, Req, Options>>(),\n});\n\nconst defaultQuerySerializer = createQuerySerializer({\n allowReserved: false,\n array: {\n explode: true,\n style: 'form',\n },\n object: {\n explode: true,\n style: 'deepObject',\n },\n});\n\nconst defaultHeaders = {\n 'Content-Type': 'application/json',\n};\n\nexport const createConfig = <T extends ClientOptions = ClientOptions>(\n override: Config<Omit<ClientOptions, keyof T> & T> = {},\n): Config<Omit<ClientOptions, keyof T> & T> => ({\n ...jsonBodySerializer,\n headers: defaultHeaders,\n parseAs: 'auto',\n querySerializer: defaultQuerySerializer,\n ...override,\n});\n",
14
+ "// This file is auto-generated by @hey-api/openapi-ts\n\nimport { createSseClient } from '../core/serverSentEvents.gen';\nimport type { HttpMethod } from '../core/types.gen';\nimport { getValidRequestBody } from '../core/utils.gen';\nimport type { Client, Config, RequestOptions, ResolvedRequestOptions } from './types.gen';\nimport {\n buildUrl,\n createConfig,\n createInterceptors,\n getParseAs,\n mergeConfigs,\n mergeHeaders,\n setAuthParams,\n} from './utils.gen';\n\ntype ReqInit = Omit<RequestInit, 'body' | 'headers'> & {\n body?: any;\n headers: ReturnType<typeof mergeHeaders>;\n};\n\nexport const createClient = (config: Config = {}): Client => {\n let _config = mergeConfigs(createConfig(), config);\n\n const getConfig = (): Config => ({ ..._config });\n\n const setConfig = (config: Config): Config => {\n _config = mergeConfigs(_config, config);\n return getConfig();\n };\n\n const interceptors = createInterceptors<Request, Response, unknown, ResolvedRequestOptions>();\n\n const beforeRequest = async <\n TData = unknown,\n TResponseStyle extends 'data' | 'fields' = 'fields',\n ThrowOnError extends boolean = boolean,\n Url extends string = string,\n >(\n options: RequestOptions<TData, TResponseStyle, ThrowOnError, Url>,\n ) => {\n const opts = {\n ..._config,\n ...options,\n fetch: options.fetch ?? _config.fetch ?? globalThis.fetch,\n headers: mergeHeaders(_config.headers, options.headers),\n serializedBody: undefined as string | undefined,\n };\n\n if (opts.security) {\n await setAuthParams({\n ...opts,\n security: opts.security,\n });\n }\n\n if (opts.requestValidator) {\n await opts.requestValidator(opts);\n }\n\n if (opts.body !== undefined && opts.bodySerializer) {\n opts.serializedBody = opts.bodySerializer(opts.body) as string | undefined;\n }\n\n // remove Content-Type header if body is empty to avoid sending invalid requests\n if (opts.body === undefined || opts.serializedBody === '') {\n opts.headers.delete('Content-Type');\n }\n\n const resolvedOpts = opts as typeof opts &\n ResolvedRequestOptions<TResponseStyle, ThrowOnError, Url>;\n const url = buildUrl(resolvedOpts);\n\n return { opts: resolvedOpts, url };\n };\n\n const request: Client['request'] = async (options) => {\n const throwOnError = options.throwOnError ?? _config.throwOnError;\n const responseStyle = options.responseStyle ?? _config.responseStyle;\n\n let request: Request | undefined;\n let response: Response | undefined;\n\n try {\n const { opts, url } = await beforeRequest(options);\n const requestInit: ReqInit = {\n redirect: 'follow',\n ...opts,\n body: getValidRequestBody(opts),\n };\n\n request = new Request(url, requestInit);\n\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = opts.fetch!;\n\n response = await _fetch(request);\n\n for (const fn of interceptors.response.fns) {\n if (fn) {\n response = await fn(response, request, opts);\n }\n }\n\n const result = {\n request,\n response,\n };\n\n if (response.ok) {\n const parseAs =\n (opts.parseAs === 'auto'\n ? getParseAs(response.headers.get('Content-Type'))\n : opts.parseAs) ?? 'json';\n\n if (response.status === 204 || response.headers.get('Content-Length') === '0') {\n let emptyData: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'text':\n emptyData = await response[parseAs]();\n break;\n case 'formData':\n emptyData = new FormData();\n break;\n case 'stream':\n emptyData = response.body;\n break;\n case 'json':\n default:\n emptyData = {};\n break;\n }\n return opts.responseStyle === 'data'\n ? emptyData\n : {\n data: emptyData,\n ...result,\n };\n }\n\n let data: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'formData':\n case 'text':\n data = await response[parseAs]();\n break;\n case 'json': {\n // Some servers return 200 with no Content-Length and empty body.\n // response.json() would throw; read as text and parse if non-empty.\n const text = await response.text();\n data = text ? JSON.parse(text) : {};\n break;\n }\n case 'stream':\n return opts.responseStyle === 'data'\n ? response.body\n : {\n data: response.body,\n ...result,\n };\n }\n\n if (parseAs === 'json') {\n if (opts.responseValidator) {\n await opts.responseValidator(data);\n }\n\n if (opts.responseTransformer) {\n data = await opts.responseTransformer(data);\n }\n }\n\n return opts.responseStyle === 'data'\n ? data\n : {\n data,\n ...result,\n };\n }\n\n const textError = await response.text();\n let jsonError: unknown;\n\n try {\n jsonError = JSON.parse(textError);\n } catch {\n // noop\n }\n\n throw jsonError ?? textError;\n } catch (error) {\n let finalError = error;\n\n for (const fn of interceptors.error.fns) {\n if (fn) {\n finalError = await fn(finalError, response, request, options as ResolvedRequestOptions);\n }\n }\n\n finalError = finalError || {};\n\n if (throwOnError) {\n throw finalError;\n }\n\n // TODO: we probably want to return error and improve types\n return responseStyle === 'data'\n ? undefined\n : {\n error: finalError,\n request,\n response,\n };\n }\n };\n\n const makeMethodFn = (method: Uppercase<HttpMethod>) => (options: RequestOptions) =>\n request({ ...options, method });\n\n const makeSseFn = (method: Uppercase<HttpMethod>) => async (options: RequestOptions) => {\n const { opts, url } = await beforeRequest(options);\n return createSseClient({\n ...opts,\n body: opts.body as BodyInit | null | undefined,\n method,\n onRequest: async (url, init) => {\n let request = new Request(url, init);\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n return request;\n },\n serializedBody: getValidRequestBody(opts) as BodyInit | null | undefined,\n url,\n });\n };\n\n const _buildUrl: Client['buildUrl'] = (options) => buildUrl({ ..._config, ...options });\n\n return {\n buildUrl: _buildUrl,\n connect: makeMethodFn('CONNECT'),\n delete: makeMethodFn('DELETE'),\n get: makeMethodFn('GET'),\n getConfig,\n head: makeMethodFn('HEAD'),\n interceptors,\n options: makeMethodFn('OPTIONS'),\n patch: makeMethodFn('PATCH'),\n post: makeMethodFn('POST'),\n put: makeMethodFn('PUT'),\n request,\n setConfig,\n sse: {\n connect: makeSseFn('CONNECT'),\n delete: makeSseFn('DELETE'),\n get: makeSseFn('GET'),\n head: makeSseFn('HEAD'),\n options: makeSseFn('OPTIONS'),\n patch: makeSseFn('PATCH'),\n post: makeSseFn('POST'),\n put: makeSseFn('PUT'),\n trace: makeSseFn('TRACE'),\n },\n trace: makeMethodFn('TRACE'),\n } as Client;\n};\n",
15
+ "// This file is auto-generated by @hey-api/openapi-ts\n\nimport { type ClientOptions, type Config, createClient, createConfig } from './client';\nimport type { ClientOptions as ClientOptions2 } from './types.gen';\n\n/**\n * The `createClientConfig()` function will be called on client initialization\n * and the returned object will become the client's initial configuration.\n *\n * You may want to initialize your client this way instead of calling\n * `setConfig()`. This is useful for example if you're using Next.js\n * to ensure your client always has the correct values.\n */\nexport type CreateClientConfig<T extends ClientOptions = ClientOptions2> = (override?: Config<ClientOptions & T>) => Config<Required<ClientOptions> & T>;\n\nexport const client = createClient(createConfig<ClientOptions2>());\n",
16
+ "// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Client, Options as Options2, TDataShape } from './client';\nimport { client } from './client.gen';\nimport type { DeleteBlacklistByTmdbIdData, DeleteBlacklistByTmdbIdResponses, DeleteBlocklistByTmdbIdData, DeleteBlocklistByTmdbIdResponses, DeleteBlocklistCollectionByCollectionIdData, DeleteBlocklistCollectionByCollectionIdErrors, DeleteBlocklistCollectionByCollectionIdResponses, DeleteIssueByIssueIdData, DeleteIssueByIssueIdResponses, DeleteIssueCommentByCommentIdData, DeleteIssueCommentByCommentIdResponses, DeleteMediaByMediaIdData, DeleteMediaByMediaIdFileData, DeleteMediaByMediaIdFileResponses, DeleteMediaByMediaIdResponses, DeleteOverrideRuleByRuleIdData, DeleteOverrideRuleByRuleIdResponses, DeleteRequestByRequestIdData, DeleteRequestByRequestIdResponses, DeleteSettingsDiscoverBySliderIdData, DeleteSettingsDiscoverBySliderIdResponses, DeleteSettingsRadarrByRadarrIdData, DeleteSettingsRadarrByRadarrIdResponses, DeleteSettingsSonarrBySonarrIdData, DeleteSettingsSonarrBySonarrIdResponses, DeleteUserByUserIdData, DeleteUserByUserIdPushSubscriptionByEndpointData, DeleteUserByUserIdPushSubscriptionByEndpointResponses, DeleteUserByUserIdResponses, DeleteUserByUserIdSettingsLinkedAccountsJellyfinData, DeleteUserByUserIdSettingsLinkedAccountsJellyfinErrors, DeleteUserByUserIdSettingsLinkedAccountsJellyfinResponses, DeleteUserByUserIdSettingsLinkedAccountsPlexData, DeleteUserByUserIdSettingsLinkedAccountsPlexErrors, DeleteUserByUserIdSettingsLinkedAccountsPlexResponses, DeleteWatchlistByTmdbIdData, DeleteWatchlistByTmdbIdResponses, GetAuthMeData, GetAuthMeResponses, GetBackdropsData, GetBackdropsResponses, GetBlacklistByTmdbIdData, GetBlacklistByTmdbIdResponses, GetBlacklistData, GetBlacklistResponses, GetBlocklistByTmdbIdData, GetBlocklistByTmdbIdResponses, GetBlocklistData, GetBlocklistResponses, GetCertificationsMovieData, GetCertificationsMovieErrors, GetCertificationsMovieResponses, GetCertificationsTvData, GetCertificationsTvErrors, GetCertificationsTvResponses, GetCollectionByCollectionIdData, GetCollectionByCollectionIdResponses, GetDiscoverGenresliderMovieData, GetDiscoverGenresliderMovieResponses, GetDiscoverGenresliderTvData, GetDiscoverGenresliderTvResponses, GetDiscoverKeywordByKeywordIdMoviesData, GetDiscoverKeywordByKeywordIdMoviesResponses, GetDiscoverMoviesData, GetDiscoverMoviesGenreByGenreIdData, GetDiscoverMoviesGenreByGenreIdResponses, GetDiscoverMoviesLanguageByLanguageData, GetDiscoverMoviesLanguageByLanguageResponses, GetDiscoverMoviesResponses, GetDiscoverMoviesStudioByStudioIdData, GetDiscoverMoviesStudioByStudioIdResponses, GetDiscoverMoviesUpcomingData, GetDiscoverMoviesUpcomingResponses, GetDiscoverTrendingData, GetDiscoverTrendingResponses, GetDiscoverTvData, GetDiscoverTvGenreByGenreIdData, GetDiscoverTvGenreByGenreIdResponses, GetDiscoverTvLanguageByLanguageData, GetDiscoverTvLanguageByLanguageResponses, GetDiscoverTvNetworkByNetworkIdData, GetDiscoverTvNetworkByNetworkIdResponses, GetDiscoverTvResponses, GetDiscoverTvUpcomingData, GetDiscoverTvUpcomingResponses, GetDiscoverWatchlistData, GetDiscoverWatchlistResponses, GetGenresMovieData, GetGenresMovieResponses, GetGenresTvData, GetGenresTvResponses, GetIssueByIssueIdData, GetIssueByIssueIdResponses, GetIssueCommentByCommentIdData, GetIssueCommentByCommentIdResponses, GetIssueCountData, GetIssueCountResponses, GetIssueData, GetIssueResponses, GetKeywordByKeywordIdData, GetKeywordByKeywordIdErrors, GetKeywordByKeywordIdResponses, GetLanguagesData, GetLanguagesResponses, GetMediaByMediaIdWatchDataData, GetMediaByMediaIdWatchDataResponses, GetMediaData, GetMediaResponses, GetMovieByMovieIdData, GetMovieByMovieIdRatingscombinedData, GetMovieByMovieIdRatingscombinedResponses, GetMovieByMovieIdRatingsData, GetMovieByMovieIdRatingsResponses, GetMovieByMovieIdRecommendationsData, GetMovieByMovieIdRecommendationsResponses, GetMovieByMovieIdResponses, GetMovieByMovieIdSimilarData, GetMovieByMovieIdSimilarResponses, GetNetworkByNetworkIdData, GetNetworkByNetworkIdResponses, GetOverrideRuleData, GetOverrideRuleResponses, GetPersonByPersonIdCombinedCreditsData, GetPersonByPersonIdCombinedCreditsResponses, GetPersonByPersonIdData, GetPersonByPersonIdResponses, GetRegionsData, GetRegionsResponses, GetRequestByRequestIdData, GetRequestByRequestIdResponses, GetRequestCountData, GetRequestCountResponses, GetRequestData, GetRequestResponses, GetSearchCompanyData, GetSearchCompanyResponses, GetSearchData, GetSearchKeywordData, GetSearchKeywordResponses, GetSearchResponses, GetServiceRadarrByRadarrIdData, GetServiceRadarrByRadarrIdResponses, GetServiceRadarrData, GetServiceRadarrResponses, GetServiceSonarrBySonarrIdData, GetServiceSonarrBySonarrIdResponses, GetServiceSonarrData, GetServiceSonarrLookupByTmdbIdData, GetServiceSonarrLookupByTmdbIdResponses, GetServiceSonarrResponses, GetSettingsAboutData, GetSettingsAboutResponses, GetSettingsCacheData, GetSettingsCacheResponses, GetSettingsDiscoverData, GetSettingsDiscoverResetData, GetSettingsDiscoverResetResponses, GetSettingsDiscoverResponses, GetSettingsJellyfinData, GetSettingsJellyfinLibraryData, GetSettingsJellyfinLibraryResponses, GetSettingsJellyfinResponses, GetSettingsJellyfinSyncData, GetSettingsJellyfinSyncResponses, GetSettingsJellyfinUsersData, GetSettingsJellyfinUsersResponses, GetSettingsJobsData, GetSettingsJobsResponses, GetSettingsLogsData, GetSettingsLogsResponses, GetSettingsMainData, GetSettingsMainResponses, GetSettingsMetadatasData, GetSettingsMetadatasResponses, GetSettingsNetworkData, GetSettingsNetworkResponses, GetSettingsNotificationsDiscordData, GetSettingsNotificationsDiscordResponses, GetSettingsNotificationsEmailData, GetSettingsNotificationsEmailResponses, GetSettingsNotificationsGotifyData, GetSettingsNotificationsGotifyResponses, GetSettingsNotificationsNtfyData, GetSettingsNotificationsNtfyResponses, GetSettingsNotificationsPushbulletData, GetSettingsNotificationsPushbulletResponses, GetSettingsNotificationsPushoverData, GetSettingsNotificationsPushoverResponses, GetSettingsNotificationsPushoverSoundsData, GetSettingsNotificationsPushoverSoundsResponses, GetSettingsNotificationsSlackData, GetSettingsNotificationsSlackResponses, GetSettingsNotificationsTelegramData, GetSettingsNotificationsTelegramResponses, GetSettingsNotificationsWebhookData, GetSettingsNotificationsWebhookResponses, GetSettingsNotificationsWebpushData, GetSettingsNotificationsWebpushResponses, GetSettingsPlexData, GetSettingsPlexDevicesServersData, GetSettingsPlexDevicesServersResponses, GetSettingsPlexLibraryData, GetSettingsPlexLibraryResponses, GetSettingsPlexResponses, GetSettingsPlexSyncData, GetSettingsPlexSyncResponses, GetSettingsPlexUsersData, GetSettingsPlexUsersResponses, GetSettingsPublicData, GetSettingsPublicResponses, GetSettingsRadarrByRadarrIdProfilesData, GetSettingsRadarrByRadarrIdProfilesResponses, GetSettingsRadarrData, GetSettingsRadarrResponses, GetSettingsSonarrData, GetSettingsSonarrResponses, GetSettingsTautulliData, GetSettingsTautulliResponses, GetStatusAppdataData, GetStatusAppdataResponses, GetStatusData, GetStatusResponses, GetStudioByStudioIdData, GetStudioByStudioIdResponses, GetTvByTvIdData, GetTvByTvIdRatingsData, GetTvByTvIdRatingsResponses, GetTvByTvIdRecommendationsData, GetTvByTvIdRecommendationsResponses, GetTvByTvIdResponses, GetTvByTvIdSeasonBySeasonNumberData, GetTvByTvIdSeasonBySeasonNumberResponses, GetTvByTvIdSimilarData, GetTvByTvIdSimilarResponses, GetUserByUserIdData, GetUserByUserIdPushSubscriptionByEndpointData, GetUserByUserIdPushSubscriptionByEndpointResponses, GetUserByUserIdPushSubscriptionsData, GetUserByUserIdPushSubscriptionsResponses, GetUserByUserIdQuotaData, GetUserByUserIdQuotaResponses, GetUserByUserIdRequestsData, GetUserByUserIdRequestsResponses, GetUserByUserIdResponses, GetUserByUserIdSettingsMainData, GetUserByUserIdSettingsMainResponses, GetUserByUserIdSettingsNotificationsData, GetUserByUserIdSettingsNotificationsResponses, GetUserByUserIdSettingsPasswordData, GetUserByUserIdSettingsPasswordResponses, GetUserByUserIdSettingsPermissionsData, GetUserByUserIdSettingsPermissionsResponses, GetUserByUserIdWatchDataData, GetUserByUserIdWatchDataResponses, GetUserByUserIdWatchlistData, GetUserByUserIdWatchlistResponses, GetUserData, GetUserResponses, GetWatchprovidersMoviesData, GetWatchprovidersMoviesResponses, GetWatchprovidersRegionsData, GetWatchprovidersRegionsResponses, GetWatchprovidersTvData, GetWatchprovidersTvResponses, PostAuthJellyfinData, PostAuthJellyfinResponses, PostAuthLocalData, PostAuthLocalResponses, PostAuthLogoutData, PostAuthLogoutResponses, PostAuthPlexData, PostAuthPlexResponses, PostAuthResetPasswordByGuidData, PostAuthResetPasswordByGuidResponses, PostAuthResetPasswordData, PostAuthResetPasswordResponses, PostBlacklistData, PostBlacklistErrors, PostBlacklistResponses, PostBlocklistCollectionByCollectionIdData, PostBlocklistCollectionByCollectionIdErrors, PostBlocklistCollectionByCollectionIdResponses, PostBlocklistData, PostBlocklistErrors, PostBlocklistResponses, PostIssueByIssueIdByStatusData, PostIssueByIssueIdByStatusResponses, PostIssueByIssueIdCommentData, PostIssueByIssueIdCommentResponses, PostIssueData, PostIssueResponses, PostMediaByMediaIdByStatusData, PostMediaByMediaIdByStatusResponses, PostOverrideRuleData, PostOverrideRuleResponses, PostRequestByRequestIdByStatusData, PostRequestByRequestIdByStatusResponses, PostRequestByRequestIdRetryData, PostRequestByRequestIdRetryResponses, PostRequestData, PostRequestResponses, PostSettingsCacheByCacheIdFlushData, PostSettingsCacheByCacheIdFlushResponses, PostSettingsCacheDnsByDnsEntryFlushData, PostSettingsCacheDnsByDnsEntryFlushResponses, PostSettingsDiscoverAddData, PostSettingsDiscoverAddResponses, PostSettingsDiscoverData, PostSettingsDiscoverResponses, PostSettingsInitializeData, PostSettingsInitializeResponses, PostSettingsJellyfinData, PostSettingsJellyfinResponses, PostSettingsJellyfinSyncData, PostSettingsJellyfinSyncResponses, PostSettingsJobsByJobIdCancelData, PostSettingsJobsByJobIdCancelResponses, PostSettingsJobsByJobIdRunData, PostSettingsJobsByJobIdRunResponses, PostSettingsJobsByJobIdScheduleData, PostSettingsJobsByJobIdScheduleResponses, PostSettingsMainData, PostSettingsMainRegenerateData, PostSettingsMainRegenerateResponses, PostSettingsMainResponses, PostSettingsMetadatasTestData, PostSettingsMetadatasTestResponses, PostSettingsNetworkData, PostSettingsNetworkResponses, PostSettingsNotificationsDiscordData, PostSettingsNotificationsDiscordResponses, PostSettingsNotificationsDiscordTestData, PostSettingsNotificationsDiscordTestResponses, PostSettingsNotificationsEmailData, PostSettingsNotificationsEmailResponses, PostSettingsNotificationsEmailTestData, PostSettingsNotificationsEmailTestResponses, PostSettingsNotificationsGotifyData, PostSettingsNotificationsGotifyResponses, PostSettingsNotificationsGotifyTestData, PostSettingsNotificationsGotifyTestResponses, PostSettingsNotificationsNtfyData, PostSettingsNotificationsNtfyResponses, PostSettingsNotificationsNtfyTestData, PostSettingsNotificationsNtfyTestResponses, PostSettingsNotificationsPushbulletData, PostSettingsNotificationsPushbulletResponses, PostSettingsNotificationsPushbulletTestData, PostSettingsNotificationsPushbulletTestResponses, PostSettingsNotificationsPushoverData, PostSettingsNotificationsPushoverResponses, PostSettingsNotificationsPushoverTestData, PostSettingsNotificationsPushoverTestResponses, PostSettingsNotificationsSlackData, PostSettingsNotificationsSlackResponses, PostSettingsNotificationsSlackTestData, PostSettingsNotificationsSlackTestResponses, PostSettingsNotificationsTelegramData, PostSettingsNotificationsTelegramResponses, PostSettingsNotificationsTelegramTestData, PostSettingsNotificationsTelegramTestResponses, PostSettingsNotificationsWebhookData, PostSettingsNotificationsWebhookResponses, PostSettingsNotificationsWebhookTestData, PostSettingsNotificationsWebhookTestResponses, PostSettingsNotificationsWebpushData, PostSettingsNotificationsWebpushResponses, PostSettingsNotificationsWebpushTestData, PostSettingsNotificationsWebpushTestResponses, PostSettingsPlexData, PostSettingsPlexResponses, PostSettingsPlexSyncData, PostSettingsPlexSyncResponses, PostSettingsRadarrData, PostSettingsRadarrResponses, PostSettingsRadarrTestData, PostSettingsRadarrTestResponses, PostSettingsSonarrData, PostSettingsSonarrResponses, PostSettingsSonarrTestData, PostSettingsSonarrTestResponses, PostSettingsTautulliData, PostSettingsTautulliResponses, PostUserByUserIdSettingsLinkedAccountsJellyfinData, PostUserByUserIdSettingsLinkedAccountsJellyfinErrors, PostUserByUserIdSettingsLinkedAccountsJellyfinResponses, PostUserByUserIdSettingsLinkedAccountsPlexData, PostUserByUserIdSettingsLinkedAccountsPlexErrors, PostUserByUserIdSettingsLinkedAccountsPlexResponses, PostUserByUserIdSettingsMainData, PostUserByUserIdSettingsMainResponses, PostUserByUserIdSettingsNotificationsData, PostUserByUserIdSettingsNotificationsResponses, PostUserByUserIdSettingsPasswordData, PostUserByUserIdSettingsPasswordResponses, PostUserByUserIdSettingsPermissionsData, PostUserByUserIdSettingsPermissionsResponses, PostUserData, PostUserImportFromJellyfinData, PostUserImportFromJellyfinResponses, PostUserImportFromPlexData, PostUserImportFromPlexResponses, PostUserRegisterPushSubscriptionData, PostUserRegisterPushSubscriptionResponses, PostUserResponses, PostWatchlistData, PostWatchlistResponses, PutIssueCommentByCommentIdData, PutIssueCommentByCommentIdResponses, PutOverrideRuleByRuleIdData, PutOverrideRuleByRuleIdResponses, PutRequestByRequestIdData, PutRequestByRequestIdResponses, PutSettingsDiscoverBySliderIdData, PutSettingsDiscoverBySliderIdResponses, PutSettingsMetadatasData, PutSettingsMetadatasResponses, PutSettingsRadarrByRadarrIdData, PutSettingsRadarrByRadarrIdResponses, PutSettingsSonarrBySonarrIdData, PutSettingsSonarrBySonarrIdResponses, PutUserByUserIdData, PutUserByUserIdResponses, PutUserData, PutUserResponses } from './types.gen';\n\nexport type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean, TResponse = unknown> = Options2<TData, ThrowOnError, TResponse> & {\n /**\n * You can provide a client instance returned by `createClient()` instead of\n * individual options. This might be also useful if you want to implement a\n * custom client.\n */\n client?: Client;\n /**\n * You can pass arbitrary values through the `meta` object. This can be\n * used to access values that aren't defined as part of the SDK function.\n */\n meta?: Record<string, unknown>;\n};\n\n/**\n * Get Seerr status\n *\n * Returns the current Seerr status in a JSON object.\n */\nexport const getStatus = <ThrowOnError extends boolean = false>(options?: Options<GetStatusData, ThrowOnError>) => (options?.client ?? client).get<GetStatusResponses, unknown, ThrowOnError>({ url: '/status', ...options });\n\n/**\n * Get application data volume status\n *\n * For Docker installs, returns whether or not the volume mount was configured properly. Always returns true for non-Docker installs.\n */\nexport const getStatusAppdata = <ThrowOnError extends boolean = false>(options?: Options<GetStatusAppdataData, ThrowOnError>) => (options?.client ?? client).get<GetStatusAppdataResponses, unknown, ThrowOnError>({ url: '/status/appdata', ...options });\n\n/**\n * Get main settings\n *\n * Retrieves all main settings in a JSON object.\n */\nexport const getSettingsMain = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsMainData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsMainResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/main',\n ...options\n});\n\n/**\n * Update main settings\n *\n * Updates main settings with the provided values.\n */\nexport const postSettingsMain = <ThrowOnError extends boolean = false>(options: Options<PostSettingsMainData, ThrowOnError>) => (options.client ?? client).post<PostSettingsMainResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/main',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get network settings\n *\n * Retrieves all network settings in a JSON object.\n */\nexport const getSettingsNetwork = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsNetworkData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsNetworkResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/network',\n ...options\n});\n\n/**\n * Update network settings\n *\n * Updates network settings with the provided values.\n */\nexport const postSettingsNetwork = <ThrowOnError extends boolean = false>(options: Options<PostSettingsNetworkData, ThrowOnError>) => (options.client ?? client).post<PostSettingsNetworkResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/network',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get main settings with newly-generated API key\n *\n * Returns main settings in a JSON object, using the new API key.\n */\nexport const postSettingsMainRegenerate = <ThrowOnError extends boolean = false>(options?: Options<PostSettingsMainRegenerateData, ThrowOnError>) => (options?.client ?? client).post<PostSettingsMainRegenerateResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/main/regenerate',\n ...options\n});\n\n/**\n * Get Jellyfin settings\n *\n * Retrieves current Jellyfin settings.\n */\nexport const getSettingsJellyfin = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsJellyfinData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsJellyfinResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/jellyfin',\n ...options\n});\n\n/**\n * Update Jellyfin settings\n *\n * Updates Jellyfin settings with the provided values.\n */\nexport const postSettingsJellyfin = <ThrowOnError extends boolean = false>(options: Options<PostSettingsJellyfinData, ThrowOnError>) => (options.client ?? client).post<PostSettingsJellyfinResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/jellyfin',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get Jellyfin libraries\n *\n * Returns a list of Jellyfin libraries in a JSON array.\n */\nexport const getSettingsJellyfinLibrary = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsJellyfinLibraryData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsJellyfinLibraryResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/jellyfin/library',\n ...options\n});\n\n/**\n * Get Jellyfin Users\n *\n * Returns a list of Jellyfin Users in a JSON array.\n */\nexport const getSettingsJellyfinUsers = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsJellyfinUsersData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsJellyfinUsersResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/jellyfin/users',\n ...options\n});\n\n/**\n * Get status of full Jellyfin library sync\n *\n * Returns sync progress in a JSON array.\n */\nexport const getSettingsJellyfinSync = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsJellyfinSyncData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsJellyfinSyncResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/jellyfin/sync',\n ...options\n});\n\n/**\n * Start full Jellyfin library sync\n *\n * Runs a full Jellyfin library sync and returns the progress in a JSON array.\n */\nexport const postSettingsJellyfinSync = <ThrowOnError extends boolean = false>(options?: Options<PostSettingsJellyfinSyncData, ThrowOnError>) => (options?.client ?? client).post<PostSettingsJellyfinSyncResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/jellyfin/sync',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options?.headers\n }\n});\n\n/**\n * Get Plex settings\n *\n * Retrieves current Plex settings.\n */\nexport const getSettingsPlex = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsPlexData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsPlexResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/plex',\n ...options\n});\n\n/**\n * Update Plex settings\n *\n * Updates Plex settings with the provided values.\n */\nexport const postSettingsPlex = <ThrowOnError extends boolean = false>(options: Options<PostSettingsPlexData, ThrowOnError>) => (options.client ?? client).post<PostSettingsPlexResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/plex',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get Plex libraries\n *\n * Returns a list of Plex libraries in a JSON array.\n */\nexport const getSettingsPlexLibrary = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsPlexLibraryData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsPlexLibraryResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/plex/library',\n ...options\n});\n\n/**\n * Get status of full Plex library scan\n *\n * Returns scan progress in a JSON array.\n */\nexport const getSettingsPlexSync = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsPlexSyncData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsPlexSyncResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/plex/sync',\n ...options\n});\n\n/**\n * Start full Plex library scan\n *\n * Runs a full Plex library scan and returns the progress in a JSON array.\n */\nexport const postSettingsPlexSync = <ThrowOnError extends boolean = false>(options?: Options<PostSettingsPlexSyncData, ThrowOnError>) => (options?.client ?? client).post<PostSettingsPlexSyncResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/plex/sync',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options?.headers\n }\n});\n\n/**\n * Gets the user's available Plex servers\n *\n * Returns a list of available Plex servers and their connectivity state\n */\nexport const getSettingsPlexDevicesServers = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsPlexDevicesServersData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsPlexDevicesServersResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/plex/devices/servers',\n ...options\n});\n\n/**\n * Get Plex users\n *\n * Returns a list of Plex users in a JSON array.\n *\n * Requires the `MANAGE_USERS` permission.\n *\n */\nexport const getSettingsPlexUsers = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsPlexUsersData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsPlexUsersResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/plex/users',\n ...options\n});\n\n/**\n * Get Metadata settings\n *\n * Retrieves current Metadata settings.\n */\nexport const getSettingsMetadatas = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsMetadatasData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsMetadatasResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/metadatas',\n ...options\n});\n\n/**\n * Update Metadata settings\n *\n * Updates Metadata settings with the provided values.\n */\nexport const putSettingsMetadatas = <ThrowOnError extends boolean = false>(options: Options<PutSettingsMetadatasData, ThrowOnError>) => (options.client ?? client).put<PutSettingsMetadatasResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/metadatas',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Test Provider configuration\n *\n * Tests if the TVDB configuration is valid. Returns a list of available languages on success.\n */\nexport const postSettingsMetadatasTest = <ThrowOnError extends boolean = false>(options: Options<PostSettingsMetadatasTestData, ThrowOnError>) => (options.client ?? client).post<PostSettingsMetadatasTestResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/metadatas/test',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get Tautulli settings\n *\n * Retrieves current Tautulli settings.\n */\nexport const getSettingsTautulli = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsTautulliData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsTautulliResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/tautulli',\n ...options\n});\n\n/**\n * Update Tautulli settings\n *\n * Updates Tautulli settings with the provided values.\n */\nexport const postSettingsTautulli = <ThrowOnError extends boolean = false>(options: Options<PostSettingsTautulliData, ThrowOnError>) => (options.client ?? client).post<PostSettingsTautulliResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/tautulli',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get Radarr settings\n *\n * Returns all Radarr settings in a JSON array.\n */\nexport const getSettingsRadarr = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsRadarrData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsRadarrResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/radarr',\n ...options\n});\n\n/**\n * Create Radarr instance\n *\n * Creates a new Radarr instance from the request body.\n */\nexport const postSettingsRadarr = <ThrowOnError extends boolean = false>(options: Options<PostSettingsRadarrData, ThrowOnError>) => (options.client ?? client).post<PostSettingsRadarrResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/radarr',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Test Radarr configuration\n *\n * Tests if the Radarr configuration is valid. Returns profiles and root folders on success.\n */\nexport const postSettingsRadarrTest = <ThrowOnError extends boolean = false>(options: Options<PostSettingsRadarrTestData, ThrowOnError>) => (options.client ?? client).post<PostSettingsRadarrTestResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/radarr/test',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Delete Radarr instance\n *\n * Deletes an existing Radarr instance based on the radarrId parameter.\n */\nexport const deleteSettingsRadarrByRadarrId = <ThrowOnError extends boolean = false>(options: Options<DeleteSettingsRadarrByRadarrIdData, ThrowOnError>) => (options.client ?? client).delete<DeleteSettingsRadarrByRadarrIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/radarr/{radarrId}',\n ...options\n});\n\n/**\n * Update Radarr instance\n *\n * Updates an existing Radarr instance with the provided values.\n */\nexport const putSettingsRadarrByRadarrId = <ThrowOnError extends boolean = false>(options: Options<PutSettingsRadarrByRadarrIdData, ThrowOnError>) => (options.client ?? client).put<PutSettingsRadarrByRadarrIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/radarr/{radarrId}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get available Radarr profiles\n *\n * Returns a list of profiles available on the Radarr server instance in a JSON array.\n */\nexport const getSettingsRadarrByRadarrIdProfiles = <ThrowOnError extends boolean = false>(options: Options<GetSettingsRadarrByRadarrIdProfilesData, ThrowOnError>) => (options.client ?? client).get<GetSettingsRadarrByRadarrIdProfilesResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/radarr/{radarrId}/profiles',\n ...options\n});\n\n/**\n * Get Sonarr settings\n *\n * Returns all Sonarr settings in a JSON array.\n */\nexport const getSettingsSonarr = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsSonarrData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsSonarrResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/sonarr',\n ...options\n});\n\n/**\n * Create Sonarr instance\n *\n * Creates a new Sonarr instance from the request body.\n */\nexport const postSettingsSonarr = <ThrowOnError extends boolean = false>(options: Options<PostSettingsSonarrData, ThrowOnError>) => (options.client ?? client).post<PostSettingsSonarrResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/sonarr',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Test Sonarr configuration\n *\n * Tests if the Sonarr configuration is valid. Returns profiles and root folders on success.\n */\nexport const postSettingsSonarrTest = <ThrowOnError extends boolean = false>(options: Options<PostSettingsSonarrTestData, ThrowOnError>) => (options.client ?? client).post<PostSettingsSonarrTestResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/sonarr/test',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Delete Sonarr instance\n *\n * Deletes an existing Sonarr instance based on the sonarrId parameter.\n */\nexport const deleteSettingsSonarrBySonarrId = <ThrowOnError extends boolean = false>(options: Options<DeleteSettingsSonarrBySonarrIdData, ThrowOnError>) => (options.client ?? client).delete<DeleteSettingsSonarrBySonarrIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/sonarr/{sonarrId}',\n ...options\n});\n\n/**\n * Update Sonarr instance\n *\n * Updates an existing Sonarr instance with the provided values.\n */\nexport const putSettingsSonarrBySonarrId = <ThrowOnError extends boolean = false>(options: Options<PutSettingsSonarrBySonarrIdData, ThrowOnError>) => (options.client ?? client).put<PutSettingsSonarrBySonarrIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/sonarr/{sonarrId}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get public settings\n *\n * Returns settings that are not protected or sensitive. Mainly used to determine if the application has been configured for the first time.\n */\nexport const getSettingsPublic = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsPublicData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsPublicResponses, unknown, ThrowOnError>({ url: '/settings/public', ...options });\n\n/**\n * Initialize application\n *\n * Sets the app as initialized, allowing the user to navigate to pages other than the setup page.\n */\nexport const postSettingsInitialize = <ThrowOnError extends boolean = false>(options?: Options<PostSettingsInitializeData, ThrowOnError>) => (options?.client ?? client).post<PostSettingsInitializeResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/initialize',\n ...options\n});\n\n/**\n * Get scheduled jobs\n *\n * Returns list of all scheduled jobs and details about their next execution time in a JSON array.\n */\nexport const getSettingsJobs = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsJobsData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsJobsResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/jobs',\n ...options\n});\n\n/**\n * Invoke a specific job\n *\n * Invokes a specific job to run. Will return the new job status in JSON format.\n */\nexport const postSettingsJobsByJobIdRun = <ThrowOnError extends boolean = false>(options: Options<PostSettingsJobsByJobIdRunData, ThrowOnError>) => (options.client ?? client).post<PostSettingsJobsByJobIdRunResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/jobs/{jobId}/run',\n ...options\n});\n\n/**\n * Cancel a specific job\n *\n * Cancels a specific job. Will return the new job status in JSON format.\n */\nexport const postSettingsJobsByJobIdCancel = <ThrowOnError extends boolean = false>(options: Options<PostSettingsJobsByJobIdCancelData, ThrowOnError>) => (options.client ?? client).post<PostSettingsJobsByJobIdCancelResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/jobs/{jobId}/cancel',\n ...options\n});\n\n/**\n * Modify job schedule\n *\n * Re-registers the job with the schedule specified. Will return the job in JSON format.\n */\nexport const postSettingsJobsByJobIdSchedule = <ThrowOnError extends boolean = false>(options: Options<PostSettingsJobsByJobIdScheduleData, ThrowOnError>) => (options.client ?? client).post<PostSettingsJobsByJobIdScheduleResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/jobs/{jobId}/schedule',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get a list of active caches\n *\n * Retrieves a list of all active caches and their current stats.\n */\nexport const getSettingsCache = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsCacheData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsCacheResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/cache',\n ...options\n});\n\n/**\n * Flush a specific cache\n *\n * Flushes all data from the cache ID provided\n */\nexport const postSettingsCacheByCacheIdFlush = <ThrowOnError extends boolean = false>(options: Options<PostSettingsCacheByCacheIdFlushData, ThrowOnError>) => (options.client ?? client).post<PostSettingsCacheByCacheIdFlushResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/cache/{cacheId}/flush',\n ...options\n});\n\n/**\n * Flush a specific DNS cache entry\n *\n * Flushes a specific DNS cache entry\n */\nexport const postSettingsCacheDnsByDnsEntryFlush = <ThrowOnError extends boolean = false>(options: Options<PostSettingsCacheDnsByDnsEntryFlushData, ThrowOnError>) => (options.client ?? client).post<PostSettingsCacheDnsByDnsEntryFlushResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/cache/dns/{dnsEntry}/flush',\n ...options\n});\n\n/**\n * Returns logs\n *\n * Returns list of all log items and details\n */\nexport const getSettingsLogs = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsLogsData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsLogsResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/logs',\n ...options\n});\n\n/**\n * Get email notification settings\n *\n * Returns current email notification settings in a JSON object.\n */\nexport const getSettingsNotificationsEmail = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsNotificationsEmailData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsNotificationsEmailResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/notifications/email',\n ...options\n});\n\n/**\n * Update email notification settings\n *\n * Updates email notification settings with provided values\n */\nexport const postSettingsNotificationsEmail = <ThrowOnError extends boolean = false>(options: Options<PostSettingsNotificationsEmailData, ThrowOnError>) => (options.client ?? client).post<PostSettingsNotificationsEmailResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/notifications/email',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Test email settings\n *\n * Sends a test notification to the email agent.\n */\nexport const postSettingsNotificationsEmailTest = <ThrowOnError extends boolean = false>(options: Options<PostSettingsNotificationsEmailTestData, ThrowOnError>) => (options.client ?? client).post<PostSettingsNotificationsEmailTestResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/notifications/email/test',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get Discord notification settings\n *\n * Returns current Discord notification settings in a JSON object.\n */\nexport const getSettingsNotificationsDiscord = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsNotificationsDiscordData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsNotificationsDiscordResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/notifications/discord',\n ...options\n});\n\n/**\n * Update Discord notification settings\n *\n * Updates Discord notification settings with the provided values.\n */\nexport const postSettingsNotificationsDiscord = <ThrowOnError extends boolean = false>(options: Options<PostSettingsNotificationsDiscordData, ThrowOnError>) => (options.client ?? client).post<PostSettingsNotificationsDiscordResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/notifications/discord',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Test Discord settings\n *\n * Sends a test notification to the Discord agent.\n */\nexport const postSettingsNotificationsDiscordTest = <ThrowOnError extends boolean = false>(options: Options<PostSettingsNotificationsDiscordTestData, ThrowOnError>) => (options.client ?? client).post<PostSettingsNotificationsDiscordTestResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/notifications/discord/test',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get Pushbullet notification settings\n *\n * Returns current Pushbullet notification settings in a JSON object.\n */\nexport const getSettingsNotificationsPushbullet = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsNotificationsPushbulletData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsNotificationsPushbulletResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/notifications/pushbullet',\n ...options\n});\n\n/**\n * Update Pushbullet notification settings\n *\n * Update Pushbullet notification settings with the provided values.\n */\nexport const postSettingsNotificationsPushbullet = <ThrowOnError extends boolean = false>(options: Options<PostSettingsNotificationsPushbulletData, ThrowOnError>) => (options.client ?? client).post<PostSettingsNotificationsPushbulletResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/notifications/pushbullet',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Test Pushbullet settings\n *\n * Sends a test notification to the Pushbullet agent.\n */\nexport const postSettingsNotificationsPushbulletTest = <ThrowOnError extends boolean = false>(options: Options<PostSettingsNotificationsPushbulletTestData, ThrowOnError>) => (options.client ?? client).post<PostSettingsNotificationsPushbulletTestResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/notifications/pushbullet/test',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get Pushover notification settings\n *\n * Returns current Pushover notification settings in a JSON object.\n */\nexport const getSettingsNotificationsPushover = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsNotificationsPushoverData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsNotificationsPushoverResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/notifications/pushover',\n ...options\n});\n\n/**\n * Update Pushover notification settings\n *\n * Update Pushover notification settings with the provided values.\n */\nexport const postSettingsNotificationsPushover = <ThrowOnError extends boolean = false>(options: Options<PostSettingsNotificationsPushoverData, ThrowOnError>) => (options.client ?? client).post<PostSettingsNotificationsPushoverResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/notifications/pushover',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Test Pushover settings\n *\n * Sends a test notification to the Pushover agent.\n */\nexport const postSettingsNotificationsPushoverTest = <ThrowOnError extends boolean = false>(options: Options<PostSettingsNotificationsPushoverTestData, ThrowOnError>) => (options.client ?? client).post<PostSettingsNotificationsPushoverTestResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/notifications/pushover/test',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get Pushover sounds\n *\n * Returns valid Pushover sound options in a JSON array.\n */\nexport const getSettingsNotificationsPushoverSounds = <ThrowOnError extends boolean = false>(options: Options<GetSettingsNotificationsPushoverSoundsData, ThrowOnError>) => (options.client ?? client).get<GetSettingsNotificationsPushoverSoundsResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/notifications/pushover/sounds',\n ...options\n});\n\n/**\n * Get Gotify notification settings\n *\n * Returns current Gotify notification settings in a JSON object.\n */\nexport const getSettingsNotificationsGotify = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsNotificationsGotifyData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsNotificationsGotifyResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/notifications/gotify',\n ...options\n});\n\n/**\n * Update Gotify notification settings\n *\n * Update Gotify notification settings with the provided values.\n */\nexport const postSettingsNotificationsGotify = <ThrowOnError extends boolean = false>(options: Options<PostSettingsNotificationsGotifyData, ThrowOnError>) => (options.client ?? client).post<PostSettingsNotificationsGotifyResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/notifications/gotify',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Test Gotify settings\n *\n * Sends a test notification to the Gotify agent.\n */\nexport const postSettingsNotificationsGotifyTest = <ThrowOnError extends boolean = false>(options: Options<PostSettingsNotificationsGotifyTestData, ThrowOnError>) => (options.client ?? client).post<PostSettingsNotificationsGotifyTestResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/notifications/gotify/test',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get ntfy.sh notification settings\n *\n * Returns current ntfy.sh notification settings in a JSON object.\n */\nexport const getSettingsNotificationsNtfy = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsNotificationsNtfyData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsNotificationsNtfyResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/notifications/ntfy',\n ...options\n});\n\n/**\n * Update ntfy.sh notification settings\n *\n * Update ntfy.sh notification settings with the provided values.\n */\nexport const postSettingsNotificationsNtfy = <ThrowOnError extends boolean = false>(options: Options<PostSettingsNotificationsNtfyData, ThrowOnError>) => (options.client ?? client).post<PostSettingsNotificationsNtfyResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/notifications/ntfy',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Test ntfy.sh settings\n *\n * Sends a test notification to the ntfy.sh agent.\n */\nexport const postSettingsNotificationsNtfyTest = <ThrowOnError extends boolean = false>(options: Options<PostSettingsNotificationsNtfyTestData, ThrowOnError>) => (options.client ?? client).post<PostSettingsNotificationsNtfyTestResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/notifications/ntfy/test',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get Slack notification settings\n *\n * Returns current Slack notification settings in a JSON object.\n */\nexport const getSettingsNotificationsSlack = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsNotificationsSlackData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsNotificationsSlackResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/notifications/slack',\n ...options\n});\n\n/**\n * Update Slack notification settings\n *\n * Updates Slack notification settings with the provided values.\n */\nexport const postSettingsNotificationsSlack = <ThrowOnError extends boolean = false>(options: Options<PostSettingsNotificationsSlackData, ThrowOnError>) => (options.client ?? client).post<PostSettingsNotificationsSlackResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/notifications/slack',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Test Slack settings\n *\n * Sends a test notification to the Slack agent.\n */\nexport const postSettingsNotificationsSlackTest = <ThrowOnError extends boolean = false>(options: Options<PostSettingsNotificationsSlackTestData, ThrowOnError>) => (options.client ?? client).post<PostSettingsNotificationsSlackTestResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/notifications/slack/test',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get Telegram notification settings\n *\n * Returns current Telegram notification settings in a JSON object.\n */\nexport const getSettingsNotificationsTelegram = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsNotificationsTelegramData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsNotificationsTelegramResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/notifications/telegram',\n ...options\n});\n\n/**\n * Update Telegram notification settings\n *\n * Update Telegram notification settings with the provided values.\n */\nexport const postSettingsNotificationsTelegram = <ThrowOnError extends boolean = false>(options: Options<PostSettingsNotificationsTelegramData, ThrowOnError>) => (options.client ?? client).post<PostSettingsNotificationsTelegramResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/notifications/telegram',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Test Telegram settings\n *\n * Sends a test notification to the Telegram agent.\n */\nexport const postSettingsNotificationsTelegramTest = <ThrowOnError extends boolean = false>(options: Options<PostSettingsNotificationsTelegramTestData, ThrowOnError>) => (options.client ?? client).post<PostSettingsNotificationsTelegramTestResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/notifications/telegram/test',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get Web Push notification settings\n *\n * Returns current Web Push notification settings in a JSON object.\n */\nexport const getSettingsNotificationsWebpush = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsNotificationsWebpushData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsNotificationsWebpushResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/notifications/webpush',\n ...options\n});\n\n/**\n * Update Web Push notification settings\n *\n * Updates Web Push notification settings with the provided values.\n */\nexport const postSettingsNotificationsWebpush = <ThrowOnError extends boolean = false>(options: Options<PostSettingsNotificationsWebpushData, ThrowOnError>) => (options.client ?? client).post<PostSettingsNotificationsWebpushResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/notifications/webpush',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Test Web Push settings\n *\n * Sends a test notification to the Web Push agent.\n */\nexport const postSettingsNotificationsWebpushTest = <ThrowOnError extends boolean = false>(options: Options<PostSettingsNotificationsWebpushTestData, ThrowOnError>) => (options.client ?? client).post<PostSettingsNotificationsWebpushTestResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/notifications/webpush/test',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get webhook notification settings\n *\n * Returns current webhook notification settings in a JSON object.\n */\nexport const getSettingsNotificationsWebhook = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsNotificationsWebhookData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsNotificationsWebhookResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/notifications/webhook',\n ...options\n});\n\n/**\n * Update webhook notification settings\n *\n * Updates webhook notification settings with the provided values.\n */\nexport const postSettingsNotificationsWebhook = <ThrowOnError extends boolean = false>(options: Options<PostSettingsNotificationsWebhookData, ThrowOnError>) => (options.client ?? client).post<PostSettingsNotificationsWebhookResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/notifications/webhook',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Test webhook settings\n *\n * Sends a test notification to the webhook agent.\n */\nexport const postSettingsNotificationsWebhookTest = <ThrowOnError extends boolean = false>(options: Options<PostSettingsNotificationsWebhookTestData, ThrowOnError>) => (options.client ?? client).post<PostSettingsNotificationsWebhookTestResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/notifications/webhook/test',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get all discover sliders\n *\n * Returns all discovery sliders. Built-in and custom made.\n */\nexport const getSettingsDiscover = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsDiscoverData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsDiscoverResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/discover',\n ...options\n});\n\n/**\n * Batch update all sliders.\n *\n * Batch update all sliders at once. Should also be used for creation. Will only update sliders provided\n * and will not delete any sliders not present in the request. If a slider is missing a required field,\n * it will be ignored. Requires the `ADMIN` permission.\n *\n */\nexport const postSettingsDiscover = <ThrowOnError extends boolean = false>(options: Options<PostSettingsDiscoverData, ThrowOnError>) => (options.client ?? client).post<PostSettingsDiscoverResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/discover',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Delete slider by ID\n *\n * Deletes the slider with the provided sliderId. Requires the `ADMIN` permission.\n */\nexport const deleteSettingsDiscoverBySliderId = <ThrowOnError extends boolean = false>(options: Options<DeleteSettingsDiscoverBySliderIdData, ThrowOnError>) => (options.client ?? client).delete<DeleteSettingsDiscoverBySliderIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/discover/{sliderId}',\n ...options\n});\n\n/**\n * Update a single slider\n *\n * Updates a single slider and return the newly updated slider. Requires the `ADMIN` permission.\n *\n */\nexport const putSettingsDiscoverBySliderId = <ThrowOnError extends boolean = false>(options: Options<PutSettingsDiscoverBySliderIdData, ThrowOnError>) => (options.client ?? client).put<PutSettingsDiscoverBySliderIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/discover/{sliderId}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Add a new slider\n *\n * Add a single slider and return the newly created slider. Requires the `ADMIN` permission.\n *\n */\nexport const postSettingsDiscoverAdd = <ThrowOnError extends boolean = false>(options: Options<PostSettingsDiscoverAddData, ThrowOnError>) => (options.client ?? client).post<PostSettingsDiscoverAddResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/discover/add',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Reset all discover sliders\n *\n * Resets all discovery sliders to the default values. Requires the `ADMIN` permission.\n */\nexport const getSettingsDiscoverReset = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsDiscoverResetData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsDiscoverResetResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/discover/reset',\n ...options\n});\n\n/**\n * Get server stats\n *\n * Returns current server stats in a JSON object.\n */\nexport const getSettingsAbout = <ThrowOnError extends boolean = false>(options?: Options<GetSettingsAboutData, ThrowOnError>) => (options?.client ?? client).get<GetSettingsAboutResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/settings/about',\n ...options\n});\n\n/**\n * Get logged-in user\n *\n * Returns the currently logged-in user.\n */\nexport const getAuthMe = <ThrowOnError extends boolean = false>(options?: Options<GetAuthMeData, ThrowOnError>) => (options?.client ?? client).get<GetAuthMeResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/auth/me',\n ...options\n});\n\n/**\n * Sign in using a Plex token\n *\n * Takes an `authToken` (Plex token) to log the user in. Generates a session cookie for use in further requests. If the user does not exist, and there are no other users, then a user will be created with full admin privileges. If a user logs in with access to the main Plex server, they will also have an account created, but without any permissions.\n */\nexport const postAuthPlex = <ThrowOnError extends boolean = false>(options: Options<PostAuthPlexData, ThrowOnError>) => (options.client ?? client).post<PostAuthPlexResponses, unknown, ThrowOnError>({\n url: '/auth/plex',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Sign in using a Jellyfin username and password\n *\n * Takes the user's username and password to log the user in. Generates a session cookie for use in further requests. If the user does not exist, and there are no other users, then a user will be created with full admin privileges. If a user logs in with access to the Jellyfin server, they will also have an account created, but without any permissions.\n */\nexport const postAuthJellyfin = <ThrowOnError extends boolean = false>(options: Options<PostAuthJellyfinData, ThrowOnError>) => (options.client ?? client).post<PostAuthJellyfinResponses, unknown, ThrowOnError>({\n url: '/auth/jellyfin',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Sign in using a local account\n *\n * Takes an `email` and a `password` to log the user in. Generates a session cookie for use in further requests.\n */\nexport const postAuthLocal = <ThrowOnError extends boolean = false>(options: Options<PostAuthLocalData, ThrowOnError>) => (options.client ?? client).post<PostAuthLocalResponses, unknown, ThrowOnError>({\n url: '/auth/local',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Sign out and clear session cookie\n *\n * Completely clear the session cookie and associated values, effectively signing the user out.\n */\nexport const postAuthLogout = <ThrowOnError extends boolean = false>(options?: Options<PostAuthLogoutData, ThrowOnError>) => (options?.client ?? client).post<PostAuthLogoutResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/auth/logout',\n ...options\n});\n\n/**\n * Send a reset password email\n *\n * Sends a reset password email to the email if the user exists\n */\nexport const postAuthResetPassword = <ThrowOnError extends boolean = false>(options: Options<PostAuthResetPasswordData, ThrowOnError>) => (options.client ?? client).post<PostAuthResetPasswordResponses, unknown, ThrowOnError>({\n url: '/auth/reset-password',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Reset the password for a user\n *\n * Resets the password for a user if the given guid is connected to a user\n */\nexport const postAuthResetPasswordByGuid = <ThrowOnError extends boolean = false>(options: Options<PostAuthResetPasswordByGuidData, ThrowOnError>) => (options.client ?? client).post<PostAuthResetPasswordByGuidResponses, unknown, ThrowOnError>({\n url: '/auth/reset-password/{guid}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get all users\n *\n * Returns all users in a JSON object.\n */\nexport const getUser = <ThrowOnError extends boolean = false>(options?: Options<GetUserData, ThrowOnError>) => (options?.client ?? client).get<GetUserResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/user',\n ...options\n});\n\n/**\n * Create new user\n *\n * Creates a new user. Requires the `MANAGE_USERS` permission.\n *\n */\nexport const postUser = <ThrowOnError extends boolean = false>(options: Options<PostUserData, ThrowOnError>) => (options.client ?? client).post<PostUserResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/user',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Update batch of users\n *\n * Update users with given IDs with provided values in request `body.settings`. You cannot update users' Plex tokens through this request.\n *\n * Requires the `MANAGE_USERS` permission.\n *\n */\nexport const putUser = <ThrowOnError extends boolean = false>(options: Options<PutUserData, ThrowOnError>) => (options.client ?? client).put<PutUserResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/user',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Import all users from Plex\n *\n * Fetches and imports users from the Plex server. If a list of Plex IDs is provided in the request body, only the specified users will be imported. Otherwise, all users will be imported.\n *\n * Requires the `MANAGE_USERS` permission.\n *\n */\nexport const postUserImportFromPlex = <ThrowOnError extends boolean = false>(options?: Options<PostUserImportFromPlexData, ThrowOnError>) => (options?.client ?? client).post<PostUserImportFromPlexResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/user/import-from-plex',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options?.headers\n }\n});\n\n/**\n * Import all users from Jellyfin\n *\n * Fetches and imports users from the Jellyfin server.\n *\n * Requires the `MANAGE_USERS` permission.\n *\n */\nexport const postUserImportFromJellyfin = <ThrowOnError extends boolean = false>(options?: Options<PostUserImportFromJellyfinData, ThrowOnError>) => (options?.client ?? client).post<PostUserImportFromJellyfinResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/user/import-from-jellyfin',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options?.headers\n }\n});\n\n/**\n * Register a web push /user/registerPushSubscription\n *\n * Registers a web push subscription for the logged-in user\n */\nexport const postUserRegisterPushSubscription = <ThrowOnError extends boolean = false>(options: Options<PostUserRegisterPushSubscriptionData, ThrowOnError>) => (options.client ?? client).post<PostUserRegisterPushSubscriptionResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/user/registerPushSubscription',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get all web push notification settings for a user\n *\n * Returns all web push notification settings for a user in a JSON object.\n *\n */\nexport const getUserByUserIdPushSubscriptions = <ThrowOnError extends boolean = false>(options: Options<GetUserByUserIdPushSubscriptionsData, ThrowOnError>) => (options.client ?? client).get<GetUserByUserIdPushSubscriptionsResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/user/{userId}/pushSubscriptions',\n ...options\n});\n\n/**\n * Delete user push subscription by key\n *\n * Deletes the user push subscription with the provided key.\n */\nexport const deleteUserByUserIdPushSubscriptionByEndpoint = <ThrowOnError extends boolean = false>(options: Options<DeleteUserByUserIdPushSubscriptionByEndpointData, ThrowOnError>) => (options.client ?? client).delete<DeleteUserByUserIdPushSubscriptionByEndpointResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/user/{userId}/pushSubscription/{endpoint}',\n ...options\n});\n\n/**\n * Get web push notification settings for a user\n *\n * Returns web push notification settings for a user in a JSON object.\n *\n */\nexport const getUserByUserIdPushSubscriptionByEndpoint = <ThrowOnError extends boolean = false>(options: Options<GetUserByUserIdPushSubscriptionByEndpointData, ThrowOnError>) => (options.client ?? client).get<GetUserByUserIdPushSubscriptionByEndpointResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/user/{userId}/pushSubscription/{endpoint}',\n ...options\n});\n\n/**\n * Delete user by ID\n *\n * Deletes the user with the provided userId. Requires the `MANAGE_USERS` permission.\n */\nexport const deleteUserByUserId = <ThrowOnError extends boolean = false>(options: Options<DeleteUserByUserIdData, ThrowOnError>) => (options.client ?? client).delete<DeleteUserByUserIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/user/{userId}',\n ...options\n});\n\n/**\n * Get user by ID\n *\n * Retrieves user details in a JSON object. Requires the `MANAGE_USERS` permission.\n *\n */\nexport const getUserByUserId = <ThrowOnError extends boolean = false>(options: Options<GetUserByUserIdData, ThrowOnError>) => (options.client ?? client).get<GetUserByUserIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/user/{userId}',\n ...options\n});\n\n/**\n * Update a user by user ID\n *\n * Update a user with the provided values. You cannot update a user's Plex token through this request.\n *\n * Requires the `MANAGE_USERS` permission.\n *\n */\nexport const putUserByUserId = <ThrowOnError extends boolean = false>(options: Options<PutUserByUserIdData, ThrowOnError>) => (options.client ?? client).put<PutUserByUserIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/user/{userId}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get requests for a specific user\n *\n * Retrieves a user's requests in a JSON object.\n *\n */\nexport const getUserByUserIdRequests = <ThrowOnError extends boolean = false>(options: Options<GetUserByUserIdRequestsData, ThrowOnError>) => (options.client ?? client).get<GetUserByUserIdRequestsResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/user/{userId}/requests',\n ...options\n});\n\n/**\n * Get quotas for a specific user\n *\n * Returns quota details for a user in a JSON object. Requires `MANAGE_USERS` permission if viewing other users.\n *\n */\nexport const getUserByUserIdQuota = <ThrowOnError extends boolean = false>(options: Options<GetUserByUserIdQuotaData, ThrowOnError>) => (options.client ?? client).get<GetUserByUserIdQuotaResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/user/{userId}/quota',\n ...options\n});\n\n/**\n * Returns blocklisted items\n *\n * Returns list of all blocklisted media\n */\nexport const getBlocklist = <ThrowOnError extends boolean = false>(options?: Options<GetBlocklistData, ThrowOnError>) => (options?.client ?? client).get<GetBlocklistResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/blocklist',\n ...options\n});\n\n/**\n * Add media to blocklist\n */\nexport const postBlocklist = <ThrowOnError extends boolean = false>(options: Options<PostBlocklistData, ThrowOnError>) => (options.client ?? client).post<PostBlocklistResponses, PostBlocklistErrors, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/blocklist',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Remove media from blocklist\n */\nexport const deleteBlocklistByTmdbId = <ThrowOnError extends boolean = false>(options: Options<DeleteBlocklistByTmdbIdData, ThrowOnError>) => (options.client ?? client).delete<DeleteBlocklistByTmdbIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/blocklist/{tmdbId}',\n ...options\n});\n\n/**\n * Get media from blocklist\n */\nexport const getBlocklistByTmdbId = <ThrowOnError extends boolean = false>(options: Options<GetBlocklistByTmdbIdData, ThrowOnError>) => (options.client ?? client).get<GetBlocklistByTmdbIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/blocklist/{tmdbId}',\n ...options\n});\n\n/**\n * Returns blocklisted items\n *\n * **DEPRECATED**: Use `/blocklist` instead. This endpoint will be deprecated soon.\n *\n *\n * @deprecated\n */\nexport const getBlacklist = <ThrowOnError extends boolean = false>(options?: Options<GetBlacklistData, ThrowOnError>) => (options?.client ?? client).get<GetBlacklistResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/blacklist',\n ...options\n});\n\n/**\n * Add media to blocklist\n *\n * **DEPRECATED**: Use `/blocklist` instead. This endpoint will be deprecated soon.\n *\n *\n * @deprecated\n */\nexport const postBlacklist = <ThrowOnError extends boolean = false>(options: Options<PostBlacklistData, ThrowOnError>) => (options.client ?? client).post<PostBlacklistResponses, PostBlacklistErrors, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/blacklist',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Remove media from blocklist\n *\n * **DEPRECATED**: Use `/blocklist/{tmdbId}` instead. This endpoint will be deprecated soon.\n *\n *\n * @deprecated\n */\nexport const deleteBlacklistByTmdbId = <ThrowOnError extends boolean = false>(options: Options<DeleteBlacklistByTmdbIdData, ThrowOnError>) => (options.client ?? client).delete<DeleteBlacklistByTmdbIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/blacklist/{tmdbId}',\n ...options\n});\n\n/**\n * Get media from blocklist\n *\n * **DEPRECATED**: Use `/blocklist/{tmdbId}` instead. This endpoint will be deprecated soon.\n *\n *\n * @deprecated\n */\nexport const getBlacklistByTmdbId = <ThrowOnError extends boolean = false>(options: Options<GetBlacklistByTmdbIdData, ThrowOnError>) => (options.client ?? client).get<GetBlacklistByTmdbIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/blacklist/{tmdbId}',\n ...options\n});\n\n/**\n * Remove collection from blocklist\n *\n * Removes all movies in a collection from the blocklist\n */\nexport const deleteBlocklistCollectionByCollectionId = <ThrowOnError extends boolean = false>(options: Options<DeleteBlocklistCollectionByCollectionIdData, ThrowOnError>) => (options.client ?? client).delete<DeleteBlocklistCollectionByCollectionIdResponses, DeleteBlocklistCollectionByCollectionIdErrors, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/blocklist/collection/{collectionId}',\n ...options\n});\n\n/**\n * Add collection to blocklist\n *\n * Adds all movies in a collection to the blocklist\n */\nexport const postBlocklistCollectionByCollectionId = <ThrowOnError extends boolean = false>(options: Options<PostBlocklistCollectionByCollectionIdData, ThrowOnError>) => (options.client ?? client).post<PostBlocklistCollectionByCollectionIdResponses, PostBlocklistCollectionByCollectionIdErrors, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/blocklist/collection/{collectionId}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Add media to watchlist\n */\nexport const postWatchlist = <ThrowOnError extends boolean = false>(options: Options<PostWatchlistData, ThrowOnError>) => (options.client ?? client).post<PostWatchlistResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/watchlist',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Delete watchlist item\n *\n * Removes a watchlist item.\n */\nexport const deleteWatchlistByTmdbId = <ThrowOnError extends boolean = false>(options: Options<DeleteWatchlistByTmdbIdData, ThrowOnError>) => (options.client ?? client).delete<DeleteWatchlistByTmdbIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/watchlist/{tmdbId}',\n ...options\n});\n\n/**\n * Get the Plex watchlist for a specific user\n *\n * Retrieves a user's Plex Watchlist in a JSON object.\n *\n */\nexport const getUserByUserIdWatchlist = <ThrowOnError extends boolean = false>(options: Options<GetUserByUserIdWatchlistData, ThrowOnError>) => (options.client ?? client).get<GetUserByUserIdWatchlistResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/user/{userId}/watchlist',\n ...options\n});\n\n/**\n * Get general settings for a user\n *\n * Returns general settings for a specific user. Requires `MANAGE_USERS` permission if viewing other users.\n */\nexport const getUserByUserIdSettingsMain = <ThrowOnError extends boolean = false>(options: Options<GetUserByUserIdSettingsMainData, ThrowOnError>) => (options.client ?? client).get<GetUserByUserIdSettingsMainResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/user/{userId}/settings/main',\n ...options\n});\n\n/**\n * Update general settings for a user\n *\n * Updates and returns general settings for a specific user. Requires `MANAGE_USERS` permission if editing other users.\n */\nexport const postUserByUserIdSettingsMain = <ThrowOnError extends boolean = false>(options: Options<PostUserByUserIdSettingsMainData, ThrowOnError>) => (options.client ?? client).post<PostUserByUserIdSettingsMainResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/user/{userId}/settings/main',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get password page informatiom\n *\n * Returns important data for the password page to function correctly. Requires `MANAGE_USERS` permission if viewing other users.\n */\nexport const getUserByUserIdSettingsPassword = <ThrowOnError extends boolean = false>(options: Options<GetUserByUserIdSettingsPasswordData, ThrowOnError>) => (options.client ?? client).get<GetUserByUserIdSettingsPasswordResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/user/{userId}/settings/password',\n ...options\n});\n\n/**\n * Update password for a user\n *\n * Updates a user's password. Requires `MANAGE_USERS` permission if editing other users.\n */\nexport const postUserByUserIdSettingsPassword = <ThrowOnError extends boolean = false>(options: Options<PostUserByUserIdSettingsPasswordData, ThrowOnError>) => (options.client ?? client).post<PostUserByUserIdSettingsPasswordResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/user/{userId}/settings/password',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Remove the linked Plex account for a user\n *\n * Removes the linked Plex account for a specific user. Requires `MANAGE_USERS` permission if editing other users.\n */\nexport const deleteUserByUserIdSettingsLinkedAccountsPlex = <ThrowOnError extends boolean = false>(options: Options<DeleteUserByUserIdSettingsLinkedAccountsPlexData, ThrowOnError>) => (options.client ?? client).delete<DeleteUserByUserIdSettingsLinkedAccountsPlexResponses, DeleteUserByUserIdSettingsLinkedAccountsPlexErrors, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/user/{userId}/settings/linked-accounts/plex',\n ...options\n});\n\n/**\n * Link the provided Plex account to the current user\n *\n * Logs in to Plex with the provided auth token, then links the associated Plex account with the user's account. Users can only link external accounts to their own account.\n */\nexport const postUserByUserIdSettingsLinkedAccountsPlex = <ThrowOnError extends boolean = false>(options: Options<PostUserByUserIdSettingsLinkedAccountsPlexData, ThrowOnError>) => (options.client ?? client).post<PostUserByUserIdSettingsLinkedAccountsPlexResponses, PostUserByUserIdSettingsLinkedAccountsPlexErrors, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/user/{userId}/settings/linked-accounts/plex',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Remove the linked Jellyfin account for a user\n *\n * Removes the linked Jellyfin account for a specific user. Requires `MANAGE_USERS` permission if editing other users.\n */\nexport const deleteUserByUserIdSettingsLinkedAccountsJellyfin = <ThrowOnError extends boolean = false>(options: Options<DeleteUserByUserIdSettingsLinkedAccountsJellyfinData, ThrowOnError>) => (options.client ?? client).delete<DeleteUserByUserIdSettingsLinkedAccountsJellyfinResponses, DeleteUserByUserIdSettingsLinkedAccountsJellyfinErrors, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/user/{userId}/settings/linked-accounts/jellyfin',\n ...options\n});\n\n/**\n * Link the provided Jellyfin account to the current user\n *\n * Logs in to Jellyfin with the provided credentials, then links the associated Jellyfin account with the user's account. Users can only link external accounts to their own account.\n */\nexport const postUserByUserIdSettingsLinkedAccountsJellyfin = <ThrowOnError extends boolean = false>(options: Options<PostUserByUserIdSettingsLinkedAccountsJellyfinData, ThrowOnError>) => (options.client ?? client).post<PostUserByUserIdSettingsLinkedAccountsJellyfinResponses, PostUserByUserIdSettingsLinkedAccountsJellyfinErrors, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/user/{userId}/settings/linked-accounts/jellyfin',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get notification settings for a user\n *\n * Returns notification settings for a specific user. Requires `MANAGE_USERS` permission if viewing other users.\n */\nexport const getUserByUserIdSettingsNotifications = <ThrowOnError extends boolean = false>(options: Options<GetUserByUserIdSettingsNotificationsData, ThrowOnError>) => (options.client ?? client).get<GetUserByUserIdSettingsNotificationsResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/user/{userId}/settings/notifications',\n ...options\n});\n\n/**\n * Update notification settings for a user\n *\n * Updates and returns notification settings for a specific user. Requires `MANAGE_USERS` permission if editing other users.\n */\nexport const postUserByUserIdSettingsNotifications = <ThrowOnError extends boolean = false>(options: Options<PostUserByUserIdSettingsNotificationsData, ThrowOnError>) => (options.client ?? client).post<PostUserByUserIdSettingsNotificationsResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/user/{userId}/settings/notifications',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get permission settings for a user\n *\n * Returns permission settings for a specific user. Requires `MANAGE_USERS` permission if viewing other users.\n */\nexport const getUserByUserIdSettingsPermissions = <ThrowOnError extends boolean = false>(options: Options<GetUserByUserIdSettingsPermissionsData, ThrowOnError>) => (options.client ?? client).get<GetUserByUserIdSettingsPermissionsResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/user/{userId}/settings/permissions',\n ...options\n});\n\n/**\n * Update permission settings for a user\n *\n * Updates and returns permission settings for a specific user. Requires `MANAGE_USERS` permission if editing other users.\n */\nexport const postUserByUserIdSettingsPermissions = <ThrowOnError extends boolean = false>(options: Options<PostUserByUserIdSettingsPermissionsData, ThrowOnError>) => (options.client ?? client).post<PostUserByUserIdSettingsPermissionsResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/user/{userId}/settings/permissions',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get watch data\n *\n * Returns play count, play duration, and recently watched media.\n *\n * Requires the `ADMIN` permission to fetch results for other users.\n *\n */\nexport const getUserByUserIdWatchData = <ThrowOnError extends boolean = false>(options: Options<GetUserByUserIdWatchDataData, ThrowOnError>) => (options.client ?? client).get<GetUserByUserIdWatchDataResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/user/{userId}/watch_data',\n ...options\n});\n\n/**\n * Search for movies, TV shows, or people\n *\n * Returns a list of movies, TV shows, or people a JSON object.\n */\nexport const getSearch = <ThrowOnError extends boolean = false>(options: Options<GetSearchData, ThrowOnError>) => (options.client ?? client).get<GetSearchResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/search',\n ...options\n});\n\n/**\n * Search for keywords\n *\n * Returns a list of TMDB keywords matching the search query\n */\nexport const getSearchKeyword = <ThrowOnError extends boolean = false>(options: Options<GetSearchKeywordData, ThrowOnError>) => (options.client ?? client).get<GetSearchKeywordResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/search/keyword',\n ...options\n});\n\n/**\n * Search for companies\n *\n * Returns a list of TMDB companies matching the search query. (Will not return origin country)\n */\nexport const getSearchCompany = <ThrowOnError extends boolean = false>(options: Options<GetSearchCompanyData, ThrowOnError>) => (options.client ?? client).get<GetSearchCompanyResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/search/company',\n ...options\n});\n\n/**\n * Discover movies\n *\n * Returns a list of movies in a JSON object.\n */\nexport const getDiscoverMovies = <ThrowOnError extends boolean = false>(options?: Options<GetDiscoverMoviesData, ThrowOnError>) => (options?.client ?? client).get<GetDiscoverMoviesResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/discover/movies',\n ...options\n});\n\n/**\n * Discover movies by genre\n *\n * Returns a list of movies based on the provided genre ID in a JSON object.\n */\nexport const getDiscoverMoviesGenreByGenreId = <ThrowOnError extends boolean = false>(options: Options<GetDiscoverMoviesGenreByGenreIdData, ThrowOnError>) => (options.client ?? client).get<GetDiscoverMoviesGenreByGenreIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/discover/movies/genre/{genreId}',\n ...options\n});\n\n/**\n * Discover movies by original language\n *\n * Returns a list of movies based on the provided ISO 639-1 language code in a JSON object.\n */\nexport const getDiscoverMoviesLanguageByLanguage = <ThrowOnError extends boolean = false>(options: Options<GetDiscoverMoviesLanguageByLanguageData, ThrowOnError>) => (options.client ?? client).get<GetDiscoverMoviesLanguageByLanguageResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/discover/movies/language/{language}',\n ...options\n});\n\n/**\n * Discover movies by studio\n *\n * Returns a list of movies based on the provided studio ID in a JSON object.\n */\nexport const getDiscoverMoviesStudioByStudioId = <ThrowOnError extends boolean = false>(options: Options<GetDiscoverMoviesStudioByStudioIdData, ThrowOnError>) => (options.client ?? client).get<GetDiscoverMoviesStudioByStudioIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/discover/movies/studio/{studioId}',\n ...options\n});\n\n/**\n * Upcoming movies\n *\n * Returns a list of movies in a JSON object.\n */\nexport const getDiscoverMoviesUpcoming = <ThrowOnError extends boolean = false>(options?: Options<GetDiscoverMoviesUpcomingData, ThrowOnError>) => (options?.client ?? client).get<GetDiscoverMoviesUpcomingResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/discover/movies/upcoming',\n ...options\n});\n\n/**\n * Discover TV shows\n *\n * Returns a list of TV shows in a JSON object.\n */\nexport const getDiscoverTv = <ThrowOnError extends boolean = false>(options?: Options<GetDiscoverTvData, ThrowOnError>) => (options?.client ?? client).get<GetDiscoverTvResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/discover/tv',\n ...options\n});\n\n/**\n * Discover TV shows by original language\n *\n * Returns a list of TV shows based on the provided ISO 639-1 language code in a JSON object.\n */\nexport const getDiscoverTvLanguageByLanguage = <ThrowOnError extends boolean = false>(options: Options<GetDiscoverTvLanguageByLanguageData, ThrowOnError>) => (options.client ?? client).get<GetDiscoverTvLanguageByLanguageResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/discover/tv/language/{language}',\n ...options\n});\n\n/**\n * Discover TV shows by genre\n *\n * Returns a list of TV shows based on the provided genre ID in a JSON object.\n */\nexport const getDiscoverTvGenreByGenreId = <ThrowOnError extends boolean = false>(options: Options<GetDiscoverTvGenreByGenreIdData, ThrowOnError>) => (options.client ?? client).get<GetDiscoverTvGenreByGenreIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/discover/tv/genre/{genreId}',\n ...options\n});\n\n/**\n * Discover TV shows by network\n *\n * Returns a list of TV shows based on the provided network ID in a JSON object.\n */\nexport const getDiscoverTvNetworkByNetworkId = <ThrowOnError extends boolean = false>(options: Options<GetDiscoverTvNetworkByNetworkIdData, ThrowOnError>) => (options.client ?? client).get<GetDiscoverTvNetworkByNetworkIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/discover/tv/network/{networkId}',\n ...options\n});\n\n/**\n * Discover Upcoming TV shows\n *\n * Returns a list of upcoming TV shows in a JSON object.\n */\nexport const getDiscoverTvUpcoming = <ThrowOnError extends boolean = false>(options?: Options<GetDiscoverTvUpcomingData, ThrowOnError>) => (options?.client ?? client).get<GetDiscoverTvUpcomingResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/discover/tv/upcoming',\n ...options\n});\n\n/**\n * Trending movies and TV\n *\n * Returns a list of movies and TV shows in a JSON object.\n */\nexport const getDiscoverTrending = <ThrowOnError extends boolean = false>(options?: Options<GetDiscoverTrendingData, ThrowOnError>) => (options?.client ?? client).get<GetDiscoverTrendingResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/discover/trending',\n ...options\n});\n\n/**\n * Get movies from keyword\n *\n * Returns list of movies based on the provided keyword ID a JSON object.\n */\nexport const getDiscoverKeywordByKeywordIdMovies = <ThrowOnError extends boolean = false>(options: Options<GetDiscoverKeywordByKeywordIdMoviesData, ThrowOnError>) => (options.client ?? client).get<GetDiscoverKeywordByKeywordIdMoviesResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/discover/keyword/{keywordId}/movies',\n ...options\n});\n\n/**\n * Get genre slider data for movies\n *\n * Returns a list of genres with backdrops attached\n */\nexport const getDiscoverGenresliderMovie = <ThrowOnError extends boolean = false>(options?: Options<GetDiscoverGenresliderMovieData, ThrowOnError>) => (options?.client ?? client).get<GetDiscoverGenresliderMovieResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/discover/genreslider/movie',\n ...options\n});\n\n/**\n * Get genre slider data for TV series\n *\n * Returns a list of genres with backdrops attached\n */\nexport const getDiscoverGenresliderTv = <ThrowOnError extends boolean = false>(options?: Options<GetDiscoverGenresliderTvData, ThrowOnError>) => (options?.client ?? client).get<GetDiscoverGenresliderTvResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/discover/genreslider/tv',\n ...options\n});\n\n/**\n * Get the Plex watchlist.\n */\nexport const getDiscoverWatchlist = <ThrowOnError extends boolean = false>(options?: Options<GetDiscoverWatchlistData, ThrowOnError>) => (options?.client ?? client).get<GetDiscoverWatchlistResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/discover/watchlist',\n ...options\n});\n\n/**\n * Get all requests\n *\n * Returns all requests if the user has the `ADMIN` or `MANAGE_REQUESTS` permissions. Otherwise, only the logged-in user's requests are returned.\n *\n * If the `requestedBy` parameter is specified, only requests from that particular user ID will be returned.\n *\n */\nexport const getRequest = <ThrowOnError extends boolean = false>(options?: Options<GetRequestData, ThrowOnError>) => (options?.client ?? client).get<GetRequestResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/request',\n ...options\n});\n\n/**\n * Create new request\n *\n * Creates a new request with the provided media ID and type. The `REQUEST` permission is required.\n *\n * If the user has the `ADMIN` or `AUTO_APPROVE` permissions, their request will be auomatically approved.\n *\n */\nexport const postRequest = <ThrowOnError extends boolean = false>(options: Options<PostRequestData, ThrowOnError>) => (options.client ?? client).post<PostRequestResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/request',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Gets request counts\n *\n * Returns the number of requests by status including pending, approved, available, and completed requests.\n *\n */\nexport const getRequestCount = <ThrowOnError extends boolean = false>(options?: Options<GetRequestCountData, ThrowOnError>) => (options?.client ?? client).get<GetRequestCountResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/request/count',\n ...options\n});\n\n/**\n * Delete request\n *\n * Removes a request. If the user has the `MANAGE_REQUESTS` permission, any request can be removed. Otherwise, only pending requests can be removed.\n */\nexport const deleteRequestByRequestId = <ThrowOnError extends boolean = false>(options: Options<DeleteRequestByRequestIdData, ThrowOnError>) => (options.client ?? client).delete<DeleteRequestByRequestIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/request/{requestId}',\n ...options\n});\n\n/**\n * Get MediaRequest\n *\n * Returns a specific MediaRequest in a JSON object.\n */\nexport const getRequestByRequestId = <ThrowOnError extends boolean = false>(options: Options<GetRequestByRequestIdData, ThrowOnError>) => (options.client ?? client).get<GetRequestByRequestIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/request/{requestId}',\n ...options\n});\n\n/**\n * Update MediaRequest\n *\n * Updates a specific media request and returns the request in a JSON object. Requires the `MANAGE_REQUESTS` permission.\n */\nexport const putRequestByRequestId = <ThrowOnError extends boolean = false>(options: Options<PutRequestByRequestIdData, ThrowOnError>) => (options.client ?? client).put<PutRequestByRequestIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/request/{requestId}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Retry failed request\n *\n * Retries a request by resending requests to Sonarr or Radarr.\n *\n * Requires the `MANAGE_REQUESTS` permission or `ADMIN`.\n *\n */\nexport const postRequestByRequestIdRetry = <ThrowOnError extends boolean = false>(options: Options<PostRequestByRequestIdRetryData, ThrowOnError>) => (options.client ?? client).post<PostRequestByRequestIdRetryResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/request/{requestId}/retry',\n ...options\n});\n\n/**\n * Update a request's status\n *\n * Updates a request's status to approved or declined. Also returns the request in a JSON object.\n *\n * Requires the `MANAGE_REQUESTS` permission or `ADMIN`.\n *\n */\nexport const postRequestByRequestIdByStatus = <ThrowOnError extends boolean = false>(options: Options<PostRequestByRequestIdByStatusData, ThrowOnError>) => (options.client ?? client).post<PostRequestByRequestIdByStatusResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/request/{requestId}/{status}',\n ...options\n});\n\n/**\n * Get movie details\n *\n * Returns full movie details in a JSON object.\n */\nexport const getMovieByMovieId = <ThrowOnError extends boolean = false>(options: Options<GetMovieByMovieIdData, ThrowOnError>) => (options.client ?? client).get<GetMovieByMovieIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/movie/{movieId}',\n ...options\n});\n\n/**\n * Get recommended movies\n *\n * Returns list of recommended movies based on provided movie ID in a JSON object.\n */\nexport const getMovieByMovieIdRecommendations = <ThrowOnError extends boolean = false>(options: Options<GetMovieByMovieIdRecommendationsData, ThrowOnError>) => (options.client ?? client).get<GetMovieByMovieIdRecommendationsResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/movie/{movieId}/recommendations',\n ...options\n});\n\n/**\n * Get similar movies\n *\n * Returns list of similar movies based on the provided movieId in a JSON object.\n */\nexport const getMovieByMovieIdSimilar = <ThrowOnError extends boolean = false>(options: Options<GetMovieByMovieIdSimilarData, ThrowOnError>) => (options.client ?? client).get<GetMovieByMovieIdSimilarResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/movie/{movieId}/similar',\n ...options\n});\n\n/**\n * Get movie ratings\n *\n * Returns ratings based on the provided movieId in a JSON object.\n */\nexport const getMovieByMovieIdRatings = <ThrowOnError extends boolean = false>(options: Options<GetMovieByMovieIdRatingsData, ThrowOnError>) => (options.client ?? client).get<GetMovieByMovieIdRatingsResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/movie/{movieId}/ratings',\n ...options\n});\n\n/**\n * Get RT and IMDB movie ratings combined\n *\n * Returns ratings from RottenTomatoes and IMDB based on the provided movieId in a JSON object.\n */\nexport const getMovieByMovieIdRatingscombined = <ThrowOnError extends boolean = false>(options: Options<GetMovieByMovieIdRatingscombinedData, ThrowOnError>) => (options.client ?? client).get<GetMovieByMovieIdRatingscombinedResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/movie/{movieId}/ratingscombined',\n ...options\n});\n\n/**\n * Get TV details\n *\n * Returns full TV details in a JSON object.\n */\nexport const getTvByTvId = <ThrowOnError extends boolean = false>(options: Options<GetTvByTvIdData, ThrowOnError>) => (options.client ?? client).get<GetTvByTvIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/tv/{tvId}',\n ...options\n});\n\n/**\n * Get season details and episode list\n *\n * Returns season details with a list of episodes in a JSON object.\n */\nexport const getTvByTvIdSeasonBySeasonNumber = <ThrowOnError extends boolean = false>(options: Options<GetTvByTvIdSeasonBySeasonNumberData, ThrowOnError>) => (options.client ?? client).get<GetTvByTvIdSeasonBySeasonNumberResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/tv/{tvId}/season/{seasonNumber}',\n ...options\n});\n\n/**\n * Get recommended TV series\n *\n * Returns list of recommended TV series based on the provided tvId in a JSON object.\n */\nexport const getTvByTvIdRecommendations = <ThrowOnError extends boolean = false>(options: Options<GetTvByTvIdRecommendationsData, ThrowOnError>) => (options.client ?? client).get<GetTvByTvIdRecommendationsResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/tv/{tvId}/recommendations',\n ...options\n});\n\n/**\n * Get similar TV series\n *\n * Returns list of similar TV series based on the provided tvId in a JSON object.\n */\nexport const getTvByTvIdSimilar = <ThrowOnError extends boolean = false>(options: Options<GetTvByTvIdSimilarData, ThrowOnError>) => (options.client ?? client).get<GetTvByTvIdSimilarResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/tv/{tvId}/similar',\n ...options\n});\n\n/**\n * Get TV ratings\n *\n * Returns ratings based on provided tvId in a JSON object.\n */\nexport const getTvByTvIdRatings = <ThrowOnError extends boolean = false>(options: Options<GetTvByTvIdRatingsData, ThrowOnError>) => (options.client ?? client).get<GetTvByTvIdRatingsResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/tv/{tvId}/ratings',\n ...options\n});\n\n/**\n * Get person details\n *\n * Returns person details based on provided personId in a JSON object.\n */\nexport const getPersonByPersonId = <ThrowOnError extends boolean = false>(options: Options<GetPersonByPersonIdData, ThrowOnError>) => (options.client ?? client).get<GetPersonByPersonIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/person/{personId}',\n ...options\n});\n\n/**\n * Get combined credits\n *\n * Returns the person's combined credits based on the provided personId in a JSON object.\n */\nexport const getPersonByPersonIdCombinedCredits = <ThrowOnError extends boolean = false>(options: Options<GetPersonByPersonIdCombinedCreditsData, ThrowOnError>) => (options.client ?? client).get<GetPersonByPersonIdCombinedCreditsResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/person/{personId}/combined_credits',\n ...options\n});\n\n/**\n * Get media\n *\n * Returns all media (can be filtered and limited) in a JSON object.\n */\nexport const getMedia = <ThrowOnError extends boolean = false>(options?: Options<GetMediaData, ThrowOnError>) => (options?.client ?? client).get<GetMediaResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/media',\n ...options\n});\n\n/**\n * Delete media item\n *\n * Removes a media item. The `MANAGE_REQUESTS` permission is required to perform this action.\n */\nexport const deleteMediaByMediaId = <ThrowOnError extends boolean = false>(options: Options<DeleteMediaByMediaIdData, ThrowOnError>) => (options.client ?? client).delete<DeleteMediaByMediaIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/media/{mediaId}',\n ...options\n});\n\n/**\n * Delete media file\n *\n * Removes a media file from radarr/sonarr. The `ADMIN` permission is required to perform this action.\n */\nexport const deleteMediaByMediaIdFile = <ThrowOnError extends boolean = false>(options: Options<DeleteMediaByMediaIdFileData, ThrowOnError>) => (options.client ?? client).delete<DeleteMediaByMediaIdFileResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/media/{mediaId}/file',\n ...options\n});\n\n/**\n * Update media status\n *\n * Updates a media item's status and returns the media in JSON format\n */\nexport const postMediaByMediaIdByStatus = <ThrowOnError extends boolean = false>(options: Options<PostMediaByMediaIdByStatusData, ThrowOnError>) => (options.client ?? client).post<PostMediaByMediaIdByStatusResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/media/{mediaId}/{status}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get watch data\n *\n * Returns play count, play duration, and users who have watched the media.\n *\n * Requires the `ADMIN` permission.\n *\n */\nexport const getMediaByMediaIdWatchData = <ThrowOnError extends boolean = false>(options: Options<GetMediaByMediaIdWatchDataData, ThrowOnError>) => (options.client ?? client).get<GetMediaByMediaIdWatchDataResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/media/{mediaId}/watch_data',\n ...options\n});\n\n/**\n * Get collection details\n *\n * Returns full collection details in a JSON object.\n */\nexport const getCollectionByCollectionId = <ThrowOnError extends boolean = false>(options: Options<GetCollectionByCollectionIdData, ThrowOnError>) => (options.client ?? client).get<GetCollectionByCollectionIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/collection/{collectionId}',\n ...options\n});\n\n/**\n * Get non-sensitive Radarr server list\n *\n * Returns a list of Radarr server IDs and names in a JSON object.\n */\nexport const getServiceRadarr = <ThrowOnError extends boolean = false>(options?: Options<GetServiceRadarrData, ThrowOnError>) => (options?.client ?? client).get<GetServiceRadarrResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/service/radarr',\n ...options\n});\n\n/**\n * Get Radarr server quality profiles and root folders\n *\n * Returns a Radarr server's quality profile and root folder details in a JSON object.\n */\nexport const getServiceRadarrByRadarrId = <ThrowOnError extends boolean = false>(options: Options<GetServiceRadarrByRadarrIdData, ThrowOnError>) => (options.client ?? client).get<GetServiceRadarrByRadarrIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/service/radarr/{radarrId}',\n ...options\n});\n\n/**\n * Get non-sensitive Sonarr server list\n *\n * Returns a list of Sonarr server IDs and names in a JSON object.\n */\nexport const getServiceSonarr = <ThrowOnError extends boolean = false>(options?: Options<GetServiceSonarrData, ThrowOnError>) => (options?.client ?? client).get<GetServiceSonarrResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/service/sonarr',\n ...options\n});\n\n/**\n * Get Sonarr server quality profiles and root folders\n *\n * Returns a Sonarr server's quality profile and root folder details in a JSON object.\n */\nexport const getServiceSonarrBySonarrId = <ThrowOnError extends boolean = false>(options: Options<GetServiceSonarrBySonarrIdData, ThrowOnError>) => (options.client ?? client).get<GetServiceSonarrBySonarrIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/service/sonarr/{sonarrId}',\n ...options\n});\n\n/**\n * Get series from Sonarr\n *\n * Returns a list of series returned by searching for the name in Sonarr.\n */\nexport const getServiceSonarrLookupByTmdbId = <ThrowOnError extends boolean = false>(options: Options<GetServiceSonarrLookupByTmdbIdData, ThrowOnError>) => (options.client ?? client).get<GetServiceSonarrLookupByTmdbIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/service/sonarr/lookup/{tmdbId}',\n ...options\n});\n\n/**\n * Regions supported by TMDB\n *\n * Returns a list of regions in a JSON object.\n */\nexport const getRegions = <ThrowOnError extends boolean = false>(options?: Options<GetRegionsData, ThrowOnError>) => (options?.client ?? client).get<GetRegionsResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/regions',\n ...options\n});\n\n/**\n * Languages supported by TMDB\n *\n * Returns a list of languages in a JSON object.\n */\nexport const getLanguages = <ThrowOnError extends boolean = false>(options?: Options<GetLanguagesData, ThrowOnError>) => (options?.client ?? client).get<GetLanguagesResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/languages',\n ...options\n});\n\n/**\n * Get movie studio details\n *\n * Returns movie studio details in a JSON object.\n */\nexport const getStudioByStudioId = <ThrowOnError extends boolean = false>(options: Options<GetStudioByStudioIdData, ThrowOnError>) => (options.client ?? client).get<GetStudioByStudioIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/studio/{studioId}',\n ...options\n});\n\n/**\n * Get TV network details\n *\n * Returns TV network details in a JSON object.\n */\nexport const getNetworkByNetworkId = <ThrowOnError extends boolean = false>(options: Options<GetNetworkByNetworkIdData, ThrowOnError>) => (options.client ?? client).get<GetNetworkByNetworkIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/network/{networkId}',\n ...options\n});\n\n/**\n * Get list of official TMDB movie genres\n *\n * Returns a list of genres in a JSON array.\n */\nexport const getGenresMovie = <ThrowOnError extends boolean = false>(options?: Options<GetGenresMovieData, ThrowOnError>) => (options?.client ?? client).get<GetGenresMovieResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/genres/movie',\n ...options\n});\n\n/**\n * Get list of official TMDB movie genres\n *\n * Returns a list of genres in a JSON array.\n */\nexport const getGenresTv = <ThrowOnError extends boolean = false>(options?: Options<GetGenresTvData, ThrowOnError>) => (options?.client ?? client).get<GetGenresTvResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/genres/tv',\n ...options\n});\n\n/**\n * Get backdrops of trending items\n *\n * Returns a list of backdrop image paths in a JSON array.\n */\nexport const getBackdrops = <ThrowOnError extends boolean = false>(options?: Options<GetBackdropsData, ThrowOnError>) => (options?.client ?? client).get<GetBackdropsResponses, unknown, ThrowOnError>({ url: '/backdrops', ...options });\n\n/**\n * Get all issues\n *\n * Returns a list of issues in JSON format.\n *\n */\nexport const getIssue = <ThrowOnError extends boolean = false>(options?: Options<GetIssueData, ThrowOnError>) => (options?.client ?? client).get<GetIssueResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/issue',\n ...options\n});\n\n/**\n * Create new issue\n *\n * Creates a new issue\n *\n */\nexport const postIssue = <ThrowOnError extends boolean = false>(options: Options<PostIssueData, ThrowOnError>) => (options.client ?? client).post<PostIssueResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/issue',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Gets issue counts\n *\n * Returns the number of open and closed issues, as well as the number of issues of each type.\n *\n */\nexport const getIssueCount = <ThrowOnError extends boolean = false>(options?: Options<GetIssueCountData, ThrowOnError>) => (options?.client ?? client).get<GetIssueCountResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/issue/count',\n ...options\n});\n\n/**\n * Delete issue\n *\n * Removes an issue. If the user has the `MANAGE_ISSUES` permission, any issue can be removed. Otherwise, only a users own issues can be removed.\n */\nexport const deleteIssueByIssueId = <ThrowOnError extends boolean = false>(options: Options<DeleteIssueByIssueIdData, ThrowOnError>) => (options.client ?? client).delete<DeleteIssueByIssueIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/issue/{issueId}',\n ...options\n});\n\n/**\n * Get issue\n *\n * Returns a single issue in JSON format.\n *\n */\nexport const getIssueByIssueId = <ThrowOnError extends boolean = false>(options: Options<GetIssueByIssueIdData, ThrowOnError>) => (options.client ?? client).get<GetIssueByIssueIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/issue/{issueId}',\n ...options\n});\n\n/**\n * Create a comment\n *\n * Creates a comment and returns associated issue in JSON format.\n *\n */\nexport const postIssueByIssueIdComment = <ThrowOnError extends boolean = false>(options: Options<PostIssueByIssueIdCommentData, ThrowOnError>) => (options.client ?? client).post<PostIssueByIssueIdCommentResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/issue/{issueId}/comment',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Delete issue comment\n *\n * Deletes an issue comment. Only users with `MANAGE_ISSUES` or the user who created the comment can perform this action.\n *\n */\nexport const deleteIssueCommentByCommentId = <ThrowOnError extends boolean = false>(options: Options<DeleteIssueCommentByCommentIdData, ThrowOnError>) => (options.client ?? client).delete<DeleteIssueCommentByCommentIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/issueComment/{commentId}',\n ...options\n});\n\n/**\n * Get issue comment\n *\n * Returns a single issue comment in JSON format.\n *\n */\nexport const getIssueCommentByCommentId = <ThrowOnError extends boolean = false>(options: Options<GetIssueCommentByCommentIdData, ThrowOnError>) => (options.client ?? client).get<GetIssueCommentByCommentIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/issueComment/{commentId}',\n ...options\n});\n\n/**\n * Update issue comment\n *\n * Updates and returns a single issue comment in JSON format.\n *\n */\nexport const putIssueCommentByCommentId = <ThrowOnError extends boolean = false>(options: Options<PutIssueCommentByCommentIdData, ThrowOnError>) => (options.client ?? client).put<PutIssueCommentByCommentIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/issueComment/{commentId}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Update an issue's status\n *\n * Updates an issue's status to approved or declined. Also returns the issue in a JSON object.\n *\n * Requires the `MANAGE_ISSUES` permission or `ADMIN`.\n *\n */\nexport const postIssueByIssueIdByStatus = <ThrowOnError extends boolean = false>(options: Options<PostIssueByIssueIdByStatusData, ThrowOnError>) => (options.client ?? client).post<PostIssueByIssueIdByStatusResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/issue/{issueId}/{status}',\n ...options\n});\n\n/**\n * Get keyword\n *\n * Returns a single keyword in JSON format.\n *\n */\nexport const getKeywordByKeywordId = <ThrowOnError extends boolean = false>(options: Options<GetKeywordByKeywordIdData, ThrowOnError>) => (options.client ?? client).get<GetKeywordByKeywordIdResponses, GetKeywordByKeywordIdErrors, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/keyword/{keywordId}',\n ...options\n});\n\n/**\n * Get watch provider regions\n *\n * Returns a list of all available watch provider regions.\n *\n */\nexport const getWatchprovidersRegions = <ThrowOnError extends boolean = false>(options?: Options<GetWatchprovidersRegionsData, ThrowOnError>) => (options?.client ?? client).get<GetWatchprovidersRegionsResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/watchproviders/regions',\n ...options\n});\n\n/**\n * Get watch provider movies\n *\n * Returns a list of all available watch providers for movies.\n *\n */\nexport const getWatchprovidersMovies = <ThrowOnError extends boolean = false>(options: Options<GetWatchprovidersMoviesData, ThrowOnError>) => (options.client ?? client).get<GetWatchprovidersMoviesResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/watchproviders/movies',\n ...options\n});\n\n/**\n * Get watch provider series\n *\n * Returns a list of all available watch providers for series.\n *\n */\nexport const getWatchprovidersTv = <ThrowOnError extends boolean = false>(options: Options<GetWatchprovidersTvData, ThrowOnError>) => (options.client ?? client).get<GetWatchprovidersTvResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/watchproviders/tv',\n ...options\n});\n\n/**\n * Get movie certifications\n *\n * Returns list of movie certifications from TMDB.\n */\nexport const getCertificationsMovie = <ThrowOnError extends boolean = false>(options?: Options<GetCertificationsMovieData, ThrowOnError>) => (options?.client ?? client).get<GetCertificationsMovieResponses, GetCertificationsMovieErrors, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/certifications/movie',\n ...options\n});\n\n/**\n * Get TV certifications\n *\n * Returns list of TV show certifications from TMDB.\n */\nexport const getCertificationsTv = <ThrowOnError extends boolean = false>(options?: Options<GetCertificationsTvData, ThrowOnError>) => (options?.client ?? client).get<GetCertificationsTvResponses, GetCertificationsTvErrors, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/certifications/tv',\n ...options\n});\n\n/**\n * Get override rules\n *\n * Returns a list of all override rules with their conditions and settings\n */\nexport const getOverrideRule = <ThrowOnError extends boolean = false>(options?: Options<GetOverrideRuleData, ThrowOnError>) => (options?.client ?? client).get<GetOverrideRuleResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/overrideRule',\n ...options\n});\n\n/**\n * Create override rule\n *\n * Creates a new Override Rule from the request body.\n */\nexport const postOverrideRule = <ThrowOnError extends boolean = false>(options?: Options<PostOverrideRuleData, ThrowOnError>) => (options?.client ?? client).post<PostOverrideRuleResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/overrideRule',\n ...options\n});\n\n/**\n * Delete override rule by ID\n *\n * Deletes the override rule with the provided ruleId.\n */\nexport const deleteOverrideRuleByRuleId = <ThrowOnError extends boolean = false>(options: Options<DeleteOverrideRuleByRuleIdData, ThrowOnError>) => (options.client ?? client).delete<DeleteOverrideRuleByRuleIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/overrideRule/{ruleId}',\n ...options\n});\n\n/**\n * Update override rule\n *\n * Updates an Override Rule from the request body.\n */\nexport const putOverrideRuleByRuleId = <ThrowOnError extends boolean = false>(options: Options<PutOverrideRuleByRuleIdData, ThrowOnError>) => (options.client ?? client).put<PutOverrideRuleByRuleIdResponses, unknown, ThrowOnError>({\n security: [{\n in: 'cookie',\n name: 'connect.sid',\n type: 'apiKey'\n }, { name: 'X-Api-Key', type: 'apiKey' }],\n url: '/overrideRule/{ruleId}',\n ...options\n});\n",
17
+ "import { createServarrClient } from '../core/client';\nimport type { ServarrClientConfig } from '../core/types';\nimport { client as seerrClient } from '../generated/seerr/client.gen';\nimport * as SeerrApi from '../generated/seerr/index';\nimport type {\n GetRequestData,\n GetSearchData,\n GetUserData,\n MediaRequest,\n} from '../generated/seerr/types.gen';\n\ntype RequestFilter = NonNullable<GetRequestData['query']>['filter'];\n\n/**\n * Seerr API client for media request management\n *\n * Works with Seerr, Jellyseerr, and Overseerr. Uses API key authentication\n * via the `X-Api-Key` header.\n *\n * @example\n * ```typescript\n * const seerr = new SeerrClient({\n * baseUrl: 'http://localhost:5055',\n * apiKey: 'your-api-key'\n * });\n *\n * const requests = await seerr.getRequests();\n * const results = await seerr.search('The Matrix');\n * ```\n */\nexport class SeerrClient {\n private clientConfig: ReturnType<typeof createServarrClient>;\n\n constructor(config: ServarrClientConfig) {\n this.clientConfig = createServarrClient(config);\n\n seerrClient.setConfig({\n baseUrl: `${this.clientConfig.getBaseUrl()}/api/v1`,\n headers: {\n 'X-Api-Key': this.clientConfig.config.apiKey,\n ...(this.clientConfig.config.headers ?? {}),\n },\n fetch: this.clientConfig.getFetch(),\n });\n }\n\n // Status APIs\n\n async getSystemStatus() {\n return SeerrApi.getStatus();\n }\n\n // Request APIs\n\n async getRequests(options?: {\n take?: number;\n skip?: number;\n filter?: RequestFilter;\n sort?: 'added' | 'modified';\n sortDirection?: 'asc' | 'desc';\n }) {\n const query: GetRequestData['query'] = {};\n if (options?.take) query.take = options.take;\n if (options?.skip) query.skip = options.skip;\n if (options?.filter) query.filter = options.filter;\n if (options?.sort) query.sort = options.sort;\n if (options?.sortDirection) query.sortDirection = options.sortDirection;\n\n return SeerrApi.getRequest(Object.keys(query).length > 0 ? { query } : {});\n }\n\n async getRequestById(requestId: string) {\n return SeerrApi.getRequestByRequestId({ path: { requestId } });\n }\n\n async getRequestCount() {\n return SeerrApi.getRequestCount();\n }\n\n async approveRequest(requestId: string): Promise<MediaRequest> {\n const result = await SeerrApi.postRequestByRequestIdByStatus({\n path: { requestId, status: 'approve' },\n });\n return result.data as MediaRequest;\n }\n\n async declineRequest(requestId: string): Promise<MediaRequest> {\n const result = await SeerrApi.postRequestByRequestIdByStatus({\n path: { requestId, status: 'decline' },\n });\n return result.data as MediaRequest;\n }\n\n // Search APIs\n\n async search(query: string, page?: number, language?: string) {\n const searchQuery: GetSearchData['query'] = { query };\n if (page) searchQuery.page = page;\n if (language) searchQuery.language = language;\n\n return SeerrApi.getSearch({ query: searchQuery });\n }\n\n // User APIs\n\n async getUsers(options?: {\n take?: number;\n skip?: number;\n sort?: 'created' | 'updated' | 'requests' | 'displayname';\n }) {\n const query: GetUserData['query'] = {};\n if (options?.take) query.take = options.take;\n if (options?.skip) query.skip = options.skip;\n if (options?.sort) query.sort = options.sort;\n\n return SeerrApi.getUser(Object.keys(query).length > 0 ? { query } : {});\n }\n\n async getUserById(userId: number) {\n return SeerrApi.getUserByUserId({ path: { userId } });\n }\n\n // Media APIs\n\n async getMedia(options?: { take?: number; skip?: number }) {\n const query: Record<string, any> = {};\n if (options?.take) query.take = options.take;\n if (options?.skip) query.skip = options.skip;\n\n return SeerrApi.getMedia(Object.keys(query).length > 0 ? { query } : {});\n }\n\n // Update configuration\n updateConfig(newConfig: Partial<ServarrClientConfig>) {\n const updatedConfig = { ...this.clientConfig.config, ...newConfig };\n this.clientConfig = createServarrClient(updatedConfig);\n seerrClient.setConfig({\n baseUrl: `${this.clientConfig.getBaseUrl()}/api/v1`,\n headers: {\n 'X-Api-Key': this.clientConfig.config.apiKey,\n ...(this.clientConfig.config.headers ?? {}),\n },\n fetch: this.clientConfig.getFetch(),\n });\n\n return this.clientConfig.config;\n }\n}\n\n// Re-export types for external consumption\nexport * from './seerr-types.js';\n"
18
+ ],
19
+ "mappings": ";AAAO,MAAM,mBAAmB,MAAM;AAAA,EAG3B;AAAA,EACA;AAAA,EACA;AAAA,EAJT,WAAW,CACT,SACO,MACA,YACA,SACP;AAAA,IACA,MAAM,OAAO;AAAA,IAJN;AAAA,IACA;AAAA,IACA;AAAA,IAGP,KAAK,OAAO;AAAA;AAEhB;AAAA;AAEO,MAAM,oBAAoB,WAAW;AAAA,EAC1C,WAAW,CAAC,UAAU,8BAA8B;AAAA,IAClD,MAAM,SAAS,iBAAiB,GAAG;AAAA,IACnC,KAAK,OAAO;AAAA;AAEhB;AAAA;AAEO,MAAM,wBAAwB,WAAW;AAAA,EAC9C,WAAW,CAAC,SAAiB,SAAmB;AAAA,IAC9C,MAAM,SAAS,oBAAoB,WAAW,OAAO;AAAA,IACrD,KAAK,OAAO;AAAA;AAEhB;;;ACNA,IAAM,kBAAkB;AACxB,IAAM,sBAAsB;AAC5B,IAAM,wBAAwB;AAC9B,IAAM,oBAAoB;AAE1B,IAAM,yBAAyB,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAEhE,SAAS,WAAW,CAAC,OAAyB;AAAA,EAC5C,IAAI,iBAAiB,gBAAgB,MAAM,SAAS,cAAc;AAAA,IAChE,OAAO;AAAA,EACT;AAAA,EACA,IAAI,iBAAiB,WAAW;AAAA,IAE9B,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,aAAa,CAAC,SAAiB,gBAAwB,YAA4B;AAAA,EAC1F,MAAM,QAAQ,iBAAiB,KAAK;AAAA,EACpC,MAAM,SAAS,QAAQ,MAAM,KAAK,OAAO;AAAA,EACzC,OAAO,KAAK,IAAI,QAAQ,QAAQ,UAAU;AAAA;AAUrC,SAAS,oBAAoB,CAAC,UAAiC,CAAC,GAAiB;AAAA,EACtF,MAAM,UAAU,QAAQ,WAAW;AAAA,EACnC,MAAM,aAAa,QAAQ,QAAS,QAAQ,MAAM,cAAc,sBAAuB;AAAA,EACvF,MAAM,iBAAiB,QAAQ,OAAO,kBAAkB;AAAA,EACxD,MAAM,aAAa,QAAQ,OAAO,cAAc;AAAA,EAEhD,MAAM,iBAAiB,OACrB,OACA,SACsB;AAAA,IACtB,IAAI;AAAA,IACJ,MAAM,WAAW,sBAAsB,OAAO,IAAI;AAAA,IAElD,SAAS,UAAU,EAAG,WAAW,YAAY,WAAW;AAAA,MACtD,MAAM,aAAa,IAAI;AAAA,MACvB,MAAM,YAAY,WAAW,MAAM,WAAW,MAAM,GAAG,OAAO;AAAA,MAG9D,MAAM,eAAe,MAAM;AAAA,MAC3B,IAAI,cAAc,SAAS;AAAA,QACzB,aAAa,SAAS;AAAA,QACtB,MAAM,aAAa,UAAU,IAAI,aAAa,8BAA8B,YAAY;AAAA,MAC1F;AAAA,MAEA,MAAM,gBAAgB,MAAM,WAAW,MAAM,aAAc,MAAM;AAAA,MACjE,cAAc,iBAAiB,SAAS,eAAe,EAAE,MAAM,KAAK,CAAC;AAAA,MAErE,IAAI;AAAA,QACF,MAAM,WAAW,MAAM,WAAW,MAChC,IAAI,QAAQ,SAAS,MAAM,GAAG,EAAE,QAAQ,WAAW,OAAO,CAAC,CAC7D;AAAA,QAEA,aAAa,SAAS;AAAA,QACtB,cAAc,oBAAoB,SAAS,aAAa;AAAA,QAExD,IAAI,uBAAuB,IAAI,SAAS,MAAM,KAAK,UAAU,YAAY;AAAA,UACvE,YAAY,IAAI,gBAAgB,8BAA8B,SAAS,QAAQ;AAAA,UAC/E,MAAM,QAAQ,cAAc,SAAS,gBAAgB,UAAU;AAAA,UAC/D,MAAM,IAAI,QAAQ,aAAW,WAAW,SAAS,KAAK,CAAC;AAAA,UACvD;AAAA,QACF;AAAA,QAEA,OAAO;AAAA,QACP,OAAO,OAAO;AAAA,QACd,aAAa,SAAS;AAAA,QACtB,cAAc,oBAAoB,SAAS,aAAa;AAAA,QAGxD,IAAI,cAAc,SAAS;AAAA,UACzB,MAAM,aAAa,UAAU,IAAI,aAAa,8BAA8B,YAAY;AAAA,QAC1F;AAAA,QAGA,IAAI,iBAAiB,gBAAgB,MAAM,SAAS,cAAc;AAAA,UAChE,YAAY,IAAI,gBAAgB,2BAA2B,WAAW;AAAA,UACtE,IAAI,UAAU,YAAY;AAAA,YACxB,MAAM,QAAQ,cAAc,SAAS,gBAAgB,UAAU;AAAA,YAC/D,MAAM,IAAI,QAAQ,aAAW,WAAW,SAAS,KAAK,CAAC;AAAA,YACvD;AAAA,UACF;AAAA,UACA,MAAM;AAAA,QACR;AAAA,QAEA,IAAI,YAAY,KAAK,KAAK,UAAU,YAAY;AAAA,UAC9C,YAAY;AAAA,UACZ,MAAM,QAAQ,cAAc,SAAS,gBAAgB,UAAU;AAAA,UAC/D,MAAM,IAAI,QAAQ,aAAW,WAAW,SAAS,KAAK,CAAC;AAAA,UACvD;AAAA,QACF;AAAA,QAEA,MAAM;AAAA;AAAA,IAEV;AAAA,IAEA,MAAM;AAAA;AAAA,EAGR,OAAO,OAAO,OAAO,gBAAgB;AAAA,IACnC,YAAY,WAAW,MAAM,YAAY,KAAK,WAAW,KAAK;AAAA,EAChE,CAAC;AAAA;AAGH,SAAS,qBAAqB,CAAC,OAA0B,MAA6B;AAAA,EACpF,QAAQ,QAAQ,YAAY,gBAAgB,QAAQ,CAAC;AAAA,EAErD,IAAI,iBAAiB,SAAS;AAAA,IAC5B,OAAO,OAAO,IAAI,QAAQ,MAAM,MAAM,GAAG,WAAW,IAAI,MAAM,MAAM;AAAA,EACtE;AAAA,EAEA,OAAO,IAAI,QAAQ,OAAO,WAAW;AAAA;;;ACtIvC,IAAM,qBAAqB;AAEpB,SAAS,mBAAmB,CAAC,QAA6B;AAAA,EAC/D,IAAI,CAAC,OAAO,QAAQ;AAAA,IAClB,MAAM,IAAI;AAAA,EACZ;AAAA,EAEA,IAAI,CAAC,OAAO,SAAS;AAAA,IACnB,MAAM,IAAI,gBAAgB,sBAAsB;AAAA,EAClD;AAAA,EAEA,MAAM,kBAAkB;AAAA,OACnB;AAAA,IACH,SAAS,OAAO,QAAQ,QAAQ,OAAO,EAAE;AAAA,EAC3C;AAAA,EAEA,MAAM,YAAY,gBAAgB,WAAW;AAAA,EAE7C,MAAM,iBAAiB,qBAAqB;AAAA,IAC1C,SAAS;AAAA,IACT,OAAO,gBAAgB;AAAA,EACzB,CAAC;AAAA,EAED,OAAO;AAAA,IACL,QAAQ;AAAA,IACR,YAAY,OAAO;AAAA,MACjB,aAAa,gBAAgB;AAAA,MAC7B,gBAAgB;AAAA,SACb,gBAAgB;AAAA,IACrB;AAAA,IACA,YAAY,MAAM,gBAAgB;AAAA,IAClC,YAAY,MAAM;AAAA,IAClB,UAAU,MAAM;AAAA,EAClB;AAAA;;AC4CK,SAAS,eAAgC;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,KACG;AAAA,GACsD;AAAA,EACzD,IAAI;AAAA,EAEJ,MAAM,QAAQ,eAAe,CAAC,OAAe,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;AAAA,EAE7F,MAAM,eAAe,gBAAgB,GAAG;AAAA,IACtC,IAAI,aAAqB,wBAAwB;AAAA,IACjD,IAAI,UAAU;AAAA,IACd,MAAM,SAAS,QAAQ,UAAU,IAAI,gBAAgB,EAAE;AAAA,IAEvD,OAAO,MAAM;AAAA,MACX,IAAI,OAAO;AAAA,QAAS;AAAA,MAEpB;AAAA,MAEA,MAAM,UACJ,QAAQ,mBAAmB,UACvB,QAAQ,UACR,IAAI,QAAQ,QAAQ,OAA6C;AAAA,MAEvE,IAAI,gBAAgB,WAAW;AAAA,QAC7B,QAAQ,IAAI,iBAAiB,WAAW;AAAA,MAC1C;AAAA,MAEA,IAAI;AAAA,QACF,MAAM,cAA2B;AAAA,UAC/B,UAAU;AAAA,aACP;AAAA,UACH,MAAM,QAAQ;AAAA,UACd;AAAA,UACA;AAAA,QACF;AAAA,QACA,IAAI,UAAU,IAAI,QAAQ,KAAK,WAAW;AAAA,QAC1C,IAAI,WAAW;AAAA,UACb,UAAU,MAAM,UAAU,KAAK,WAAW;AAAA,QAC5C;AAAA,QAGA,MAAM,SAAS,QAAQ,SAAS,WAAW;AAAA,QAC3C,MAAM,WAAW,MAAM,OAAO,OAAO;AAAA,QAErC,IAAI,CAAC,SAAS;AAAA,UAAI,MAAM,IAAI,MAAM,eAAe,SAAS,UAAU,SAAS,YAAY;AAAA,QAEzF,IAAI,CAAC,SAAS;AAAA,UAAM,MAAM,IAAI,MAAM,yBAAyB;AAAA,QAE7D,MAAM,SAAS,SAAS,KAAK,YAAY,IAAI,iBAAmB,EAAE,UAAU;AAAA,QAE5E,IAAI,SAAS;AAAA,QAEb,MAAM,eAAe,MAAM;AAAA,UACzB,IAAI;AAAA,YACF,OAAO,OAAO;AAAA,YACd,MAAM;AAAA;AAAA,QAKV,OAAO,iBAAiB,SAAS,YAAY;AAAA,QAE7C,IAAI;AAAA,UACF,OAAO,MAAM;AAAA,YACX,QAAQ,MAAM,UAAU,MAAM,OAAO,KAAK;AAAA,YAC1C,IAAI;AAAA,cAAM;AAAA,YACV,UAAU;AAAA,YACV,SAAS,OAAO,QAAQ,UAAU;AAAA,CAAI;AAAA,YAEtC,MAAM,SAAS,OAAO,MAAM;AAAA;AAAA,CAAM;AAAA,YAClC,SAAS,OAAO,IAAI,KAAK;AAAA,YAEzB,WAAW,SAAS,QAAQ;AAAA,cAC1B,MAAM,QAAQ,MAAM,MAAM;AAAA,CAAI;AAAA,cAC9B,MAAM,YAA2B,CAAC;AAAA,cAClC,IAAI;AAAA,cAEJ,WAAW,QAAQ,OAAO;AAAA,gBACxB,IAAI,KAAK,WAAW,OAAO,GAAG;AAAA,kBAC5B,UAAU,KAAK,KAAK,QAAQ,aAAa,EAAE,CAAC;AAAA,gBAC9C,EAAO,SAAI,KAAK,WAAW,QAAQ,GAAG;AAAA,kBACpC,YAAY,KAAK,QAAQ,cAAc,EAAE;AAAA,gBAC3C,EAAO,SAAI,KAAK,WAAW,KAAK,GAAG;AAAA,kBACjC,cAAc,KAAK,QAAQ,WAAW,EAAE;AAAA,gBAC1C,EAAO,SAAI,KAAK,WAAW,QAAQ,GAAG;AAAA,kBACpC,MAAM,SAAS,OAAO,SAAS,KAAK,QAAQ,cAAc,EAAE,GAAG,EAAE;AAAA,kBACjE,IAAI,CAAC,OAAO,MAAM,MAAM,GAAG;AAAA,oBACzB,aAAa;AAAA,kBACf;AAAA,gBACF;AAAA,cACF;AAAA,cAEA,IAAI;AAAA,cACJ,IAAI,aAAa;AAAA,cAEjB,IAAI,UAAU,QAAQ;AAAA,gBACpB,MAAM,UAAU,UAAU,KAAK;AAAA,CAAI;AAAA,gBACnC,IAAI;AAAA,kBACF,OAAO,KAAK,MAAM,OAAO;AAAA,kBACzB,aAAa;AAAA,kBACb,MAAM;AAAA,kBACN,OAAO;AAAA;AAAA,cAEX;AAAA,cAEA,IAAI,YAAY;AAAA,gBACd,IAAI,mBAAmB;AAAA,kBACrB,MAAM,kBAAkB,IAAI;AAAA,gBAC9B;AAAA,gBAEA,IAAI,qBAAqB;AAAA,kBACvB,OAAO,MAAM,oBAAoB,IAAI;AAAA,gBACvC;AAAA,cACF;AAAA,cAEA,aAAa;AAAA,gBACX;AAAA,gBACA,OAAO;AAAA,gBACP,IAAI;AAAA,gBACJ,OAAO;AAAA,cACT,CAAC;AAAA,cAED,IAAI,UAAU,QAAQ;AAAA,gBACpB,MAAM;AAAA,cACR;AAAA,YACF;AAAA,UACF;AAAA,kBACA;AAAA,UACA,OAAO,oBAAoB,SAAS,YAAY;AAAA,UAChD,OAAO,YAAY;AAAA;AAAA,QAGrB;AAAA,QACA,OAAO,OAAO;AAAA,QAEd,aAAa,KAAK;AAAA,QAElB,IAAI,wBAAwB,aAAa,WAAW,qBAAqB;AAAA,UACvE;AAAA,QACF;AAAA,QAGA,MAAM,UAAU,KAAK,IAAI,aAAa,MAAM,UAAU,IAAI,oBAAoB,KAAK;AAAA,QACnF,MAAM,MAAM,OAAO;AAAA;AAAA,IAEvB;AAAA;AAAA,EAGF,MAAM,SAAS,aAAa;AAAA,EAE5B,OAAO,EAAE,OAAO;AAAA;;;ACrNX,IAAM,wBAAwB,CAAC,UAA+B;AAAA,EACnE,QAAQ;AAAA,SACD;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA;AAAA,MAEP,OAAO;AAAA;AAAA;AAIN,IAAM,0BAA0B,CAAC,UAA+B;AAAA,EACrE,QAAQ;AAAA,SACD;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA;AAAA,MAEP,OAAO;AAAA;AAAA;AAIN,IAAM,yBAAyB,CAAC,UAAgC;AAAA,EACrE,QAAQ;AAAA,SACD;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA;AAAA,MAEP,OAAO;AAAA;AAAA;AAIN,IAAM,sBAAsB;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,MAGI;AAAA,EACJ,IAAI,CAAC,SAAS;AAAA,IACZ,MAAM,iBACJ,gBAAgB,QAAQ,MAAM,IAAI,CAAC,MAAM,mBAAmB,CAAW,CAAC,GACxE,KAAK,wBAAwB,KAAK,CAAC;AAAA,IACrC,QAAQ;AAAA,WACD;AAAA,QACH,OAAO,IAAI;AAAA,WACR;AAAA,QACH,OAAO,IAAI,QAAQ;AAAA,WAChB;AAAA,QACH,OAAO;AAAA;AAAA,QAEP,OAAO,GAAG,QAAQ;AAAA;AAAA,EAExB;AAAA,EAEA,MAAM,YAAY,sBAAsB,KAAK;AAAA,EAC7C,MAAM,eAAe,MAClB,IAAI,CAAC,MAAM;AAAA,IACV,IAAI,UAAU,WAAW,UAAU,UAAU;AAAA,MAC3C,OAAO,gBAAgB,IAAI,mBAAmB,CAAW;AAAA,IAC3D;AAAA,IAEA,OAAO,wBAAwB;AAAA,MAC7B;AAAA,MACA;AAAA,MACA,OAAO;AAAA,IACT,CAAC;AAAA,GACF,EACA,KAAK,SAAS;AAAA,EACjB,OAAO,UAAU,WAAW,UAAU,WAAW,YAAY,eAAe;AAAA;AAGvE,IAAM,0BAA0B;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,MAC6B;AAAA,EAC7B,IAAI,UAAU,aAAa,UAAU,MAAM;AAAA,IACzC,OAAO;AAAA,EACT;AAAA,EAEA,IAAI,OAAO,UAAU,UAAU;AAAA,IAC7B,MAAM,IAAI,MACR,sGACF;AAAA,EACF;AAAA,EAEA,OAAO,GAAG,QAAQ,gBAAgB,QAAQ,mBAAmB,KAAK;AAAA;AAG7D,IAAM,uBAAuB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,MAII;AAAA,EACJ,IAAI,iBAAiB,MAAM;AAAA,IACzB,OAAO,YAAY,MAAM,YAAY,IAAI,GAAG,QAAQ,MAAM,YAAY;AAAA,EACxE;AAAA,EAEA,IAAI,UAAU,gBAAgB,CAAC,SAAS;AAAA,IACtC,IAAI,SAAmB,CAAC;AAAA,IACxB,OAAO,QAAQ,KAAK,EAAE,QAAQ,EAAE,KAAK,OAAO;AAAA,MAC1C,SAAS,CAAC,GAAG,QAAQ,KAAK,gBAAiB,IAAe,mBAAmB,CAAW,CAAC;AAAA,KAC1F;AAAA,IACD,MAAM,gBAAe,OAAO,KAAK,GAAG;AAAA,IACpC,QAAQ;AAAA,WACD;AAAA,QACH,OAAO,GAAG,QAAQ;AAAA,WACf;AAAA,QACH,OAAO,IAAI;AAAA,WACR;AAAA,QACH,OAAO,IAAI,QAAQ;AAAA;AAAA,QAEnB,OAAO;AAAA;AAAA,EAEb;AAAA,EAEA,MAAM,YAAY,uBAAuB,KAAK;AAAA,EAC9C,MAAM,eAAe,OAAO,QAAQ,KAAK,EACtC,IAAI,EAAE,KAAK,OACV,wBAAwB;AAAA,IACtB;AAAA,IACA,MAAM,UAAU,eAAe,GAAG,QAAQ,SAAS;AAAA,IACnD,OAAO;AAAA,EACT,CAAC,CACH,EACC,KAAK,SAAS;AAAA,EACjB,OAAO,UAAU,WAAW,UAAU,WAAW,YAAY,eAAe;AAAA;;;AC1JvE,IAAM,gBAAgB;AAEtB,IAAM,wBAAwB,GAAG,MAAM,KAAK,WAA2B;AAAA,EAC5E,IAAI,MAAM;AAAA,EACV,MAAM,UAAU,KAAK,MAAM,aAAa;AAAA,EACxC,IAAI,SAAS;AAAA,IACX,WAAW,SAAS,SAAS;AAAA,MAC3B,IAAI,UAAU;AAAA,MACd,IAAI,OAAO,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC;AAAA,MAC9C,IAAI,QAA6B;AAAA,MAEjC,IAAI,KAAK,SAAS,GAAG,GAAG;AAAA,QACtB,UAAU;AAAA,QACV,OAAO,KAAK,UAAU,GAAG,KAAK,SAAS,CAAC;AAAA,MAC1C;AAAA,MAEA,IAAI,KAAK,WAAW,GAAG,GAAG;AAAA,QACxB,OAAO,KAAK,UAAU,CAAC;AAAA,QACvB,QAAQ;AAAA,MACV,EAAO,SAAI,KAAK,WAAW,GAAG,GAAG;AAAA,QAC/B,OAAO,KAAK,UAAU,CAAC;AAAA,QACvB,QAAQ;AAAA,MACV;AAAA,MAEA,MAAM,QAAQ,KAAK;AAAA,MAEnB,IAAI,UAAU,aAAa,UAAU,MAAM;AAAA,QACzC;AAAA,MACF;AAAA,MAEA,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,QACxB,MAAM,IAAI,QAAQ,OAAO,oBAAoB,EAAE,SAAS,MAAM,OAAO,MAAM,CAAC,CAAC;AAAA,QAC7E;AAAA,MACF;AAAA,MAEA,IAAI,OAAO,UAAU,UAAU;AAAA,QAC7B,MAAM,IAAI,QACR,OACA,qBAAqB;AAAA,UACnB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,WAAW;AAAA,QACb,CAAC,CACH;AAAA,QACA;AAAA,MACF;AAAA,MAEA,IAAI,UAAU,UAAU;AAAA,QACtB,MAAM,IAAI,QACR,OACA,IAAI,wBAAwB;AAAA,UAC1B;AAAA,UACA;AAAA,QACF,CAAC,GACH;AAAA,QACA;AAAA,MACF;AAAA,MAEA,MAAM,eAAe,mBACnB,UAAU,UAAU,IAAI,UAAqB,KAC/C;AAAA,MACA,MAAM,IAAI,QAAQ,OAAO,YAAY;AAAA,IACvC;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGF,IAAM,SAAS;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,KAAK;AAAA,MAOD;AAAA,EACJ,MAAM,UAAU,KAAK,WAAW,GAAG,IAAI,OAAO,IAAI;AAAA,EAClD,IAAI,OAAO,WAAW,MAAM;AAAA,EAC5B,IAAI,MAAM;AAAA,IACR,MAAM,sBAAsB,EAAE,MAAM,IAAI,CAAC;AAAA,EAC3C;AAAA,EACA,IAAI,SAAS,QAAQ,gBAAgB,KAAK,IAAI;AAAA,EAC9C,IAAI,OAAO,WAAW,GAAG,GAAG;AAAA,IAC1B,SAAS,OAAO,UAAU,CAAC;AAAA,EAC7B;AAAA,EACA,IAAI,QAAQ;AAAA,IACV,OAAO,IAAI;AAAA,EACb;AAAA,EACA,OAAO;AAAA;AAGF,SAAS,mBAAmB,CAAC,SAIjC;AAAA,EACD,MAAM,UAAU,QAAQ,SAAS;AAAA,EACjC,MAAM,mBAAmB,WAAW,QAAQ;AAAA,EAE5C,IAAI,kBAAkB;AAAA,IACpB,IAAI,oBAAoB,SAAS;AAAA,MAC/B,MAAM,oBACJ,QAAQ,mBAAmB,aAAa,QAAQ,mBAAmB;AAAA,MAErE,OAAO,oBAAoB,QAAQ,iBAAiB;AAAA,IACtD;AAAA,IAGA,OAAO,QAAQ,SAAS,KAAK,QAAQ,OAAO;AAAA,EAC9C;AAAA,EAGA,IAAI,SAAS;AAAA,IACX,OAAO,QAAQ;AAAA,EACjB;AAAA,EAGA;AAAA;;;ACrHK,IAAM,eAAe,OAC1B,MACA,aACgC;AAAA,EAChC,MAAM,QAAQ,OAAO,aAAa,aAAa,MAAM,SAAS,IAAI,IAAI;AAAA,EAEtE,IAAI,CAAC,OAAO;AAAA,IACV;AAAA,EACF;AAAA,EAEA,IAAI,KAAK,WAAW,UAAU;AAAA,IAC5B,OAAO,UAAU;AAAA,EACnB;AAAA,EAEA,IAAI,KAAK,WAAW,SAAS;AAAA,IAC3B,OAAO,SAAS,KAAK,KAAK;AAAA,EAC5B;AAAA,EAEA,OAAO;AAAA;;;ACoBF,IAAM,qBAAqB;AAAA,EAChC,gBAAgB,CAAC,SACf,KAAK,UAAU,MAAM,CAAC,MAAM,UAAW,OAAO,UAAU,WAAW,MAAM,SAAS,IAAI,KAAM;AAChG;;;ACjDO,IAAM,wBAAwB;AAAA,EACnC,aAAa,CAAC;AAAA,KACX;AAAA,IACuB,CAAC,MAAM;AAAA,EACjC,MAAM,kBAAkB,CAAC,gBAAmB;AAAA,IAC1C,MAAM,SAAmB,CAAC;AAAA,IAC1B,IAAI,eAAe,OAAO,gBAAgB,UAAU;AAAA,MAClD,WAAW,QAAQ,aAAa;AAAA,QAC9B,MAAM,QAAQ,YAAY;AAAA,QAE1B,IAAI,UAAU,aAAa,UAAU,MAAM;AAAA,UACzC;AAAA,QACF;AAAA,QAEA,MAAM,UAAU,WAAW,SAAS;AAAA,QAEpC,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,UACxB,MAAM,kBAAkB,oBAAoB;AAAA,YAC1C,eAAe,QAAQ;AAAA,YACvB,SAAS;AAAA,YACT;AAAA,YACA,OAAO;AAAA,YACP;AAAA,eACG,QAAQ;AAAA,UACb,CAAC;AAAA,UACD,IAAI;AAAA,YAAiB,OAAO,KAAK,eAAe;AAAA,QAClD,EAAO,SAAI,OAAO,UAAU,UAAU;AAAA,UACpC,MAAM,mBAAmB,qBAAqB;AAAA,YAC5C,eAAe,QAAQ;AAAA,YACvB,SAAS;AAAA,YACT;AAAA,YACA,OAAO;AAAA,YACP;AAAA,eACG,QAAQ;AAAA,UACb,CAAC;AAAA,UACD,IAAI;AAAA,YAAkB,OAAO,KAAK,gBAAgB;AAAA,QACpD,EAAO;AAAA,UACL,MAAM,sBAAsB,wBAAwB;AAAA,YAClD,eAAe,QAAQ;AAAA,YACvB;AAAA,YACA;AAAA,UACF,CAAC;AAAA,UACD,IAAI;AAAA,YAAqB,OAAO,KAAK,mBAAmB;AAAA;AAAA,MAE5D;AAAA,IACF;AAAA,IACA,OAAO,OAAO,KAAK,GAAG;AAAA;AAAA,EAExB,OAAO;AAAA;AAMF,IAAM,aAAa,CAAC,gBAAmE;AAAA,EAC5F,IAAI,CAAC,aAAa;AAAA,IAGhB,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,eAAe,YAAY,MAAM,GAAG,EAAE,IAAI,KAAK;AAAA,EAErD,IAAI,CAAC,cAAc;AAAA,IACjB;AAAA,EACF;AAAA,EAEA,IAAI,aAAa,WAAW,kBAAkB,KAAK,aAAa,SAAS,OAAO,GAAG;AAAA,IACjF,OAAO;AAAA,EACT;AAAA,EAEA,IAAI,iBAAiB,uBAAuB;AAAA,IAC1C,OAAO;AAAA,EACT;AAAA,EAEA,IACE,CAAC,gBAAgB,UAAU,UAAU,QAAQ,EAAE,KAAK,CAAC,SAAS,aAAa,WAAW,IAAI,CAAC,GAC3F;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EAEA,IAAI,aAAa,WAAW,OAAO,GAAG;AAAA,IACpC,OAAO;AAAA,EACT;AAAA,EAEA;AAAA;AAGF,IAAM,oBAAoB,CACxB,SAGA,SACY;AAAA,EACZ,IAAI,CAAC,MAAM;AAAA,IACT,OAAO;AAAA,EACT;AAAA,EACA,IACE,QAAQ,QAAQ,IAAI,IAAI,KACxB,QAAQ,QAAQ,SAChB,QAAQ,QAAQ,IAAI,QAAQ,GAAG,SAAS,GAAG,OAAO,GAClD;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA;AAGF,IAAM,gBAAgB;AAAA,EAC3B;AAAA,KACG;AAAA,MAIG;AAAA,EACN,WAAW,QAAQ,UAAU;AAAA,IAC3B,IAAI,kBAAkB,SAAS,KAAK,IAAI,GAAG;AAAA,MACzC;AAAA,IACF;AAAA,IAEA,MAAM,QAAQ,MAAM,aAAa,MAAM,QAAQ,IAAI;AAAA,IAEnD,IAAI,CAAC,OAAO;AAAA,MACV;AAAA,IACF;AAAA,IAEA,MAAM,OAAO,KAAK,QAAQ;AAAA,IAE1B,QAAQ,KAAK;AAAA,WACN;AAAA,QACH,IAAI,CAAC,QAAQ,OAAO;AAAA,UAClB,QAAQ,QAAQ,CAAC;AAAA,QACnB;AAAA,QACA,QAAQ,MAAM,QAAQ;AAAA,QACtB;AAAA,WACG;AAAA,QACH,QAAQ,QAAQ,OAAO,UAAU,GAAG,QAAQ,OAAO;AAAA,QACnD;AAAA,WACG;AAAA;AAAA,QAEH,QAAQ,QAAQ,IAAI,MAAM,KAAK;AAAA,QAC/B;AAAA;AAAA,EAEN;AAAA;AAGK,IAAM,WAA+B,CAAC,YAC3C,OAAO;AAAA,EACL,SAAS,QAAQ;AAAA,EACjB,MAAM,QAAQ;AAAA,EACd,OAAO,QAAQ;AAAA,EACf,iBACE,OAAO,QAAQ,oBAAoB,aAC/B,QAAQ,kBACR,sBAAsB,QAAQ,eAAe;AAAA,EACnD,KAAK,QAAQ;AACf,CAAC;AAEI,IAAM,eAAe,CAAC,GAAW,MAAsB;AAAA,EAC5D,MAAM,SAAS,KAAK,MAAM,EAAE;AAAA,EAC5B,IAAI,OAAO,SAAS,SAAS,GAAG,GAAG;AAAA,IACjC,OAAO,UAAU,OAAO,QAAQ,UAAU,GAAG,OAAO,QAAQ,SAAS,CAAC;AAAA,EACxE;AAAA,EACA,OAAO,UAAU,aAAa,EAAE,SAAS,EAAE,OAAO;AAAA,EAClD,OAAO;AAAA;AAGT,IAAM,iBAAiB,CAAC,YAA8C;AAAA,EACpE,MAAM,UAAmC,CAAC;AAAA,EAC1C,QAAQ,QAAQ,CAAC,OAAO,QAAQ;AAAA,IAC9B,QAAQ,KAAK,CAAC,KAAK,KAAK,CAAC;AAAA,GAC1B;AAAA,EACD,OAAO;AAAA;AAGF,IAAM,eAAe,IACvB,YACS;AAAA,EACZ,MAAM,gBAAgB,IAAI;AAAA,EAC1B,WAAW,UAAU,SAAS;AAAA,IAC5B,IAAI,CAAC,QAAQ;AAAA,MACX;AAAA,IACF;AAAA,IAEA,MAAM,WAAW,kBAAkB,UAAU,eAAe,MAAM,IAAI,OAAO,QAAQ,MAAM;AAAA,IAE3F,YAAY,KAAK,UAAU,UAAU;AAAA,MACnC,IAAI,UAAU,MAAM;AAAA,QAClB,cAAc,OAAO,GAAG;AAAA,MAC1B,EAAO,SAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,QAC/B,WAAW,KAAK,OAAO;AAAA,UACrB,cAAc,OAAO,KAAK,CAAW;AAAA,QACvC;AAAA,MACF,EAAO,SAAI,UAAU,WAAW;AAAA,QAG9B,cAAc,IACZ,KACA,OAAO,UAAU,WAAW,KAAK,UAAU,KAAK,IAAK,KACvD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAAA;AAoBT,MAAM,aAA0B;AAAA,EAC9B,MAAiC,CAAC;AAAA,EAElC,KAAK,GAAS;AAAA,IACZ,KAAK,MAAM,CAAC;AAAA;AAAA,EAGd,KAAK,CAAC,IAAgC;AAAA,IACpC,MAAM,QAAQ,KAAK,oBAAoB,EAAE;AAAA,IACzC,IAAI,KAAK,IAAI,QAAQ;AAAA,MACnB,KAAK,IAAI,SAAS;AAAA,IACpB;AAAA;AAAA,EAGF,MAAM,CAAC,IAAmC;AAAA,IACxC,MAAM,QAAQ,KAAK,oBAAoB,EAAE;AAAA,IACzC,OAAO,QAAQ,KAAK,IAAI,MAAM;AAAA;AAAA,EAGhC,mBAAmB,CAAC,IAAkC;AAAA,IACpD,IAAI,OAAO,OAAO,UAAU;AAAA,MAC1B,OAAO,KAAK,IAAI,MAAM,KAAK;AAAA,IAC7B;AAAA,IACA,OAAO,KAAK,IAAI,QAAQ,EAAE;AAAA;AAAA,EAG5B,MAAM,CAAC,IAA0B,IAA+C;AAAA,IAC9E,MAAM,QAAQ,KAAK,oBAAoB,EAAE;AAAA,IACzC,IAAI,KAAK,IAAI,QAAQ;AAAA,MACnB,KAAK,IAAI,SAAS;AAAA,MAClB,OAAO;AAAA,IACT;AAAA,IACA,OAAO;AAAA;AAAA,EAGT,GAAG,CAAC,IAAyB;AAAA,IAC3B,KAAK,IAAI,KAAK,EAAE;AAAA,IAChB,OAAO,KAAK,IAAI,SAAS;AAAA;AAE7B;AAQO,IAAM,qBAAqB,OAK5B;AAAA,EACJ,OAAO,IAAI;AAAA,EACX,SAAS,IAAI;AAAA,EACb,UAAU,IAAI;AAChB;AAEA,IAAM,yBAAyB,sBAAsB;AAAA,EACnD,eAAe;AAAA,EACf,OAAO;AAAA,IACL,SAAS;AAAA,IACT,OAAO;AAAA,EACT;AAAA,EACA,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,OAAO;AAAA,EACT;AACF,CAAC;AAED,IAAM,iBAAiB;AAAA,EACrB,gBAAgB;AAClB;AAEO,IAAM,eAAe,CAC1B,WAAqD,CAAC,OACR;AAAA,KAC3C;AAAA,EACH,SAAS;AAAA,EACT,SAAS;AAAA,EACT,iBAAiB;AAAA,KACd;AACL;;;ACxSO,IAAM,eAAe,CAAC,SAAiB,CAAC,MAAc;AAAA,EAC3D,IAAI,UAAU,aAAa,aAAa,GAAG,MAAM;AAAA,EAEjD,MAAM,YAAY,OAAe,KAAK,QAAQ;AAAA,EAE9C,MAAM,YAAY,CAAC,YAA2B;AAAA,IAC5C,UAAU,aAAa,SAAS,OAAM;AAAA,IACtC,OAAO,UAAU;AAAA;AAAA,EAGnB,MAAM,eAAe,mBAAuE;AAAA,EAE5F,MAAM,gBAAgB,OAMpB,YACG;AAAA,IACH,MAAM,OAAO;AAAA,SACR;AAAA,SACA;AAAA,MACH,OAAO,QAAQ,SAAS,QAAQ,SAAS,WAAW;AAAA,MACpD,SAAS,aAAa,QAAQ,SAAS,QAAQ,OAAO;AAAA,MACtD,gBAAgB;AAAA,IAClB;AAAA,IAEA,IAAI,KAAK,UAAU;AAAA,MACjB,MAAM,cAAc;AAAA,WACf;AAAA,QACH,UAAU,KAAK;AAAA,MACjB,CAAC;AAAA,IACH;AAAA,IAEA,IAAI,KAAK,kBAAkB;AAAA,MACzB,MAAM,KAAK,iBAAiB,IAAI;AAAA,IAClC;AAAA,IAEA,IAAI,KAAK,SAAS,aAAa,KAAK,gBAAgB;AAAA,MAClD,KAAK,iBAAiB,KAAK,eAAe,KAAK,IAAI;AAAA,IACrD;AAAA,IAGA,IAAI,KAAK,SAAS,aAAa,KAAK,mBAAmB,IAAI;AAAA,MACzD,KAAK,QAAQ,OAAO,cAAc;AAAA,IACpC;AAAA,IAEA,MAAM,eAAe;AAAA,IAErB,MAAM,MAAM,SAAS,YAAY;AAAA,IAEjC,OAAO,EAAE,MAAM,cAAc,IAAI;AAAA;AAAA,EAGnC,MAAM,UAA6B,OAAO,YAAY;AAAA,IACpD,MAAM,eAAe,QAAQ,gBAAgB,QAAQ;AAAA,IACrD,MAAM,gBAAgB,QAAQ,iBAAiB,QAAQ;AAAA,IAEvD,IAAI;AAAA,IACJ,IAAI;AAAA,IAEJ,IAAI;AAAA,MACF,QAAQ,MAAM,QAAQ,MAAM,cAAc,OAAO;AAAA,MACjD,MAAM,cAAuB;AAAA,QAC3B,UAAU;AAAA,WACP;AAAA,QACH,MAAM,oBAAoB,IAAI;AAAA,MAChC;AAAA,MAEA,WAAU,IAAI,QAAQ,KAAK,WAAW;AAAA,MAEtC,WAAW,MAAM,aAAa,QAAQ,KAAK;AAAA,QACzC,IAAI,IAAI;AAAA,UACN,WAAU,MAAM,GAAG,UAAS,IAAI;AAAA,QAClC;AAAA,MACF;AAAA,MAIA,MAAM,SAAS,KAAK;AAAA,MAEpB,WAAW,MAAM,OAAO,QAAO;AAAA,MAE/B,WAAW,MAAM,aAAa,SAAS,KAAK;AAAA,QAC1C,IAAI,IAAI;AAAA,UACN,WAAW,MAAM,GAAG,UAAU,UAAS,IAAI;AAAA,QAC7C;AAAA,MACF;AAAA,MAEA,MAAM,SAAS;AAAA,QACb;AAAA,QACA;AAAA,MACF;AAAA,MAEA,IAAI,SAAS,IAAI;AAAA,QACf,MAAM,WACH,KAAK,YAAY,SACd,WAAW,SAAS,QAAQ,IAAI,cAAc,CAAC,IAC/C,KAAK,YAAY;AAAA,QAEvB,IAAI,SAAS,WAAW,OAAO,SAAS,QAAQ,IAAI,gBAAgB,MAAM,KAAK;AAAA,UAC7E,IAAI;AAAA,UACJ,QAAQ;AAAA,iBACD;AAAA,iBACA;AAAA,iBACA;AAAA,cACH,YAAY,MAAM,SAAS,SAAS;AAAA,cACpC;AAAA,iBACG;AAAA,cACH,YAAY,IAAI;AAAA,cAChB;AAAA,iBACG;AAAA,cACH,YAAY,SAAS;AAAA,cACrB;AAAA,iBACG;AAAA;AAAA,cAEH,YAAY,CAAC;AAAA,cACb;AAAA;AAAA,UAEJ,OAAO,KAAK,kBAAkB,SAC1B,YACA;AAAA,YACE,MAAM;AAAA,eACH;AAAA,UACL;AAAA,QACN;AAAA,QAEA,IAAI;AAAA,QACJ,QAAQ;AAAA,eACD;AAAA,eACA;AAAA,eACA;AAAA,eACA;AAAA,YACH,OAAO,MAAM,SAAS,SAAS;AAAA,YAC/B;AAAA,eACG,QAAQ;AAAA,YAGX,MAAM,OAAO,MAAM,SAAS,KAAK;AAAA,YACjC,OAAO,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC;AAAA,YAClC;AAAA,UACF;AAAA,eACK;AAAA,YACH,OAAO,KAAK,kBAAkB,SAC1B,SAAS,OACT;AAAA,cACE,MAAM,SAAS;AAAA,iBACZ;AAAA,YACL;AAAA;AAAA,QAGR,IAAI,YAAY,QAAQ;AAAA,UACtB,IAAI,KAAK,mBAAmB;AAAA,YAC1B,MAAM,KAAK,kBAAkB,IAAI;AAAA,UACnC;AAAA,UAEA,IAAI,KAAK,qBAAqB;AAAA,YAC5B,OAAO,MAAM,KAAK,oBAAoB,IAAI;AAAA,UAC5C;AAAA,QACF;AAAA,QAEA,OAAO,KAAK,kBAAkB,SAC1B,OACA;AAAA,UACE;AAAA,aACG;AAAA,QACL;AAAA,MACN;AAAA,MAEA,MAAM,YAAY,MAAM,SAAS,KAAK;AAAA,MACtC,IAAI;AAAA,MAEJ,IAAI;AAAA,QACF,YAAY,KAAK,MAAM,SAAS;AAAA,QAChC,MAAM;AAAA,MAIR,MAAM,aAAa;AAAA,MACnB,OAAO,OAAO;AAAA,MACd,IAAI,aAAa;AAAA,MAEjB,WAAW,MAAM,aAAa,MAAM,KAAK;AAAA,QACvC,IAAI,IAAI;AAAA,UACN,aAAa,MAAM,GAAG,YAAY,UAAU,UAAS,OAAiC;AAAA,QACxF;AAAA,MACF;AAAA,MAEA,aAAa,cAAc,CAAC;AAAA,MAE5B,IAAI,cAAc;AAAA,QAChB,MAAM;AAAA,MACR;AAAA,MAGA,OAAO,kBAAkB,SACrB,YACA;AAAA,QACE,OAAO;AAAA,QACP;AAAA,QACA;AAAA,MACF;AAAA;AAAA;AAAA,EAIR,MAAM,eAAe,CAAC,WAAkC,CAAC,YACvD,QAAQ,KAAK,SAAS,OAAO,CAAC;AAAA,EAEhC,MAAM,YAAY,CAAC,WAAkC,OAAO,YAA4B;AAAA,IACtF,QAAQ,MAAM,QAAQ,MAAM,cAAc,OAAO;AAAA,IACjD,OAAO,gBAAgB;AAAA,SAClB;AAAA,MACH,MAAM,KAAK;AAAA,MACX;AAAA,MACA,WAAW,OAAO,MAAK,SAAS;AAAA,QAC9B,IAAI,WAAU,IAAI,QAAQ,MAAK,IAAI;AAAA,QACnC,WAAW,MAAM,aAAa,QAAQ,KAAK;AAAA,UACzC,IAAI,IAAI;AAAA,YACN,WAAU,MAAM,GAAG,UAAS,IAAI;AAAA,UAClC;AAAA,QACF;AAAA,QACA,OAAO;AAAA;AAAA,MAET,gBAAgB,oBAAoB,IAAI;AAAA,MACxC;AAAA,IACF,CAAC;AAAA;AAAA,EAGH,MAAM,YAAgC,CAAC,YAAY,SAAS,KAAK,YAAY,QAAQ,CAAC;AAAA,EAEtF,OAAO;AAAA,IACL,UAAU;AAAA,IACV,SAAS,aAAa,SAAS;AAAA,IAC/B,QAAQ,aAAa,QAAQ;AAAA,IAC7B,KAAK,aAAa,KAAK;AAAA,IACvB;AAAA,IACA,MAAM,aAAa,MAAM;AAAA,IACzB;AAAA,IACA,SAAS,aAAa,SAAS;AAAA,IAC/B,OAAO,aAAa,OAAO;AAAA,IAC3B,MAAM,aAAa,MAAM;AAAA,IACzB,KAAK,aAAa,KAAK;AAAA,IACvB;AAAA,IACA;AAAA,IACA,KAAK;AAAA,MACH,SAAS,UAAU,SAAS;AAAA,MAC5B,QAAQ,UAAU,QAAQ;AAAA,MAC1B,KAAK,UAAU,KAAK;AAAA,MACpB,MAAM,UAAU,MAAM;AAAA,MACtB,SAAS,UAAU,SAAS;AAAA,MAC5B,OAAO,UAAU,OAAO;AAAA,MACxB,MAAM,UAAU,MAAM;AAAA,MACtB,KAAK,UAAU,KAAK;AAAA,MACpB,OAAO,UAAU,OAAO;AAAA,IAC1B;AAAA,IACA,OAAO,aAAa,OAAO;AAAA,EAC7B;AAAA;;ACvQK,IAAM,SAAS,aAAa,aAA6B,CAAC;;;ACU1D,IAAM,YAAY,CAAuC,aAAoD,SAAS,UAAU,QAAQ,IAA+C,EAAE,KAAK,cAAc,QAAQ,CAAC;AA49CrN,IAAM,UAAU,CAAuC,aAAkD,SAAS,UAAU,QAAQ,IAA6C;AAAA,EACpL,UAAU,CAAC;AAAA,IACH,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,EACV,GAAG,EAAE,MAAM,aAAa,MAAM,SAAS,CAAC;AAAA,EAC5C,KAAK;AAAA,KACF;AACP,CAAC;AA+KM,IAAM,kBAAkB,CAAuC,aAAyD,QAAQ,UAAU,QAAQ,IAAqD;AAAA,EAC1M,UAAU,CAAC;AAAA,IACH,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,EACV,GAAG,EAAE,MAAM,aAAa,MAAM,SAAS,CAAC;AAAA,EAC5C,KAAK;AAAA,KACF;AACP,CAAC;AAmfM,IAAM,YAAY,CAAuC,aAAmD,QAAQ,UAAU,QAAQ,IAA+C;AAAA,EACxL,UAAU,CAAC;AAAA,IACH,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,EACV,GAAG,EAAE,MAAM,aAAa,MAAM,SAAS,CAAC;AAAA,EAC5C,KAAK;AAAA,KACF;AACP,CAAC;AAuQM,IAAM,aAAa,CAAuC,aAAqD,SAAS,UAAU,QAAQ,IAAgD;AAAA,EAC7L,UAAU,CAAC;AAAA,IACH,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,EACV,GAAG,EAAE,MAAM,aAAa,MAAM,SAAS,CAAC;AAAA,EAC5C,KAAK;AAAA,KACF;AACP,CAAC;AA8BM,IAAM,kBAAkB,CAAuC,aAA0D,SAAS,UAAU,QAAQ,IAAqD;AAAA,EAC5M,UAAU,CAAC;AAAA,IACH,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,EACV,GAAG,EAAE,MAAM,aAAa,MAAM,SAAS,CAAC;AAAA,EAC5C,KAAK;AAAA,KACF;AACP,CAAC;AAsBM,IAAM,wBAAwB,CAAuC,aAA+D,QAAQ,UAAU,QAAQ,IAA2D;AAAA,EAC5N,UAAU,CAAC;AAAA,IACH,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,EACV,GAAG,EAAE,MAAM,aAAa,MAAM,SAAS,CAAC;AAAA,EAC5C,KAAK;AAAA,KACF;AACP,CAAC;AA+CM,IAAM,iCAAiC,CAAuC,aAAwE,QAAQ,UAAU,QAAQ,KAAqE;AAAA,EACxP,UAAU,CAAC;AAAA,IACH,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,EACV,GAAG,EAAE,MAAM,aAAa,MAAM,SAAS,CAAC;AAAA,EAC5C,KAAK;AAAA,KACF;AACP,CAAC;AA2LM,IAAM,WAAW,CAAuC,aAAmD,SAAS,UAAU,QAAQ,IAA8C;AAAA,EACvL,UAAU,CAAC;AAAA,IACH,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,EACV,GAAG,EAAE,MAAM,aAAa,MAAM,SAAS,CAAC;AAAA,EAC5C,KAAK;AAAA,KACF;AACP,CAAC;;AC9tFM,MAAM,YAAY;AAAA,EACf;AAAA,EAER,WAAW,CAAC,QAA6B;AAAA,IACvC,KAAK,eAAe,oBAAoB,MAAM;AAAA,IAE9C,OAAY,UAAU;AAAA,MACpB,SAAS,GAAG,KAAK,aAAa,WAAW;AAAA,MACzC,SAAS;AAAA,QACP,aAAa,KAAK,aAAa,OAAO;AAAA,WAClC,KAAK,aAAa,OAAO,WAAW,CAAC;AAAA,MAC3C;AAAA,MACA,OAAO,KAAK,aAAa,SAAS;AAAA,IACpC,CAAC;AAAA;AAAA,OAKG,gBAAe,GAAG;AAAA,IACtB,OAAgB,UAAU;AAAA;AAAA,OAKtB,YAAW,CAAC,SAMf;AAAA,IACD,MAAM,QAAiC,CAAC;AAAA,IACxC,IAAI,SAAS;AAAA,MAAM,MAAM,OAAO,QAAQ;AAAA,IACxC,IAAI,SAAS;AAAA,MAAM,MAAM,OAAO,QAAQ;AAAA,IACxC,IAAI,SAAS;AAAA,MAAQ,MAAM,SAAS,QAAQ;AAAA,IAC5C,IAAI,SAAS;AAAA,MAAM,MAAM,OAAO,QAAQ;AAAA,IACxC,IAAI,SAAS;AAAA,MAAe,MAAM,gBAAgB,QAAQ;AAAA,IAE1D,OAAgB,WAAW,OAAO,KAAK,KAAK,EAAE,SAAS,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC;AAAA;AAAA,OAGrE,eAAc,CAAC,WAAmB;AAAA,IACtC,OAAgB,sBAAsB,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAAA;AAAA,OAGzD,gBAAe,GAAG;AAAA,IACtB,OAAgB,gBAAgB;AAAA;AAAA,OAG5B,eAAc,CAAC,WAA0C;AAAA,IAC7D,MAAM,SAAS,MAAe,+BAA+B;AAAA,MAC3D,MAAM,EAAE,WAAW,QAAQ,UAAU;AAAA,IACvC,CAAC;AAAA,IACD,OAAO,OAAO;AAAA;AAAA,OAGV,eAAc,CAAC,WAA0C;AAAA,IAC7D,MAAM,SAAS,MAAe,+BAA+B;AAAA,MAC3D,MAAM,EAAE,WAAW,QAAQ,UAAU;AAAA,IACvC,CAAC;AAAA,IACD,OAAO,OAAO;AAAA;AAAA,OAKV,OAAM,CAAC,OAAe,MAAe,UAAmB;AAAA,IAC5D,MAAM,cAAsC,EAAE,MAAM;AAAA,IACpD,IAAI;AAAA,MAAM,YAAY,OAAO;AAAA,IAC7B,IAAI;AAAA,MAAU,YAAY,WAAW;AAAA,IAErC,OAAgB,UAAU,EAAE,OAAO,YAAY,CAAC;AAAA;AAAA,OAK5C,SAAQ,CAAC,SAIZ;AAAA,IACD,MAAM,QAA8B,CAAC;AAAA,IACrC,IAAI,SAAS;AAAA,MAAM,MAAM,OAAO,QAAQ;AAAA,IACxC,IAAI,SAAS;AAAA,MAAM,MAAM,OAAO,QAAQ;AAAA,IACxC,IAAI,SAAS;AAAA,MAAM,MAAM,OAAO,QAAQ;AAAA,IAExC,OAAgB,QAAQ,OAAO,KAAK,KAAK,EAAE,SAAS,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC;AAAA;AAAA,OAGlE,YAAW,CAAC,QAAgB;AAAA,IAChC,OAAgB,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAAA;AAAA,OAKhD,SAAQ,CAAC,SAA4C;AAAA,IACzD,MAAM,QAA6B,CAAC;AAAA,IACpC,IAAI,SAAS;AAAA,MAAM,MAAM,OAAO,QAAQ;AAAA,IACxC,IAAI,SAAS;AAAA,MAAM,MAAM,OAAO,QAAQ;AAAA,IAExC,OAAgB,SAAS,OAAO,KAAK,KAAK,EAAE,SAAS,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC;AAAA;AAAA,EAIzE,YAAY,CAAC,WAAyC;AAAA,IACpD,MAAM,gBAAgB,KAAK,KAAK,aAAa,WAAW,UAAU;AAAA,IAClE,KAAK,eAAe,oBAAoB,aAAa;AAAA,IACrD,OAAY,UAAU;AAAA,MACpB,SAAS,GAAG,KAAK,aAAa,WAAW;AAAA,MACzC,SAAS;AAAA,QACP,aAAa,KAAK,aAAa,OAAO;AAAA,WAClC,KAAK,aAAa,OAAO,WAAW,CAAC;AAAA,MAC3C;AAAA,MACA,OAAO,KAAK,aAAa,SAAS;AAAA,IACpC,CAAC;AAAA,IAED,OAAO,KAAK,aAAa;AAAA;AAE7B;",
20
+ "debugId": "89A80930D7AF042864756E2164756E21",
21
+ "names": []
22
+ }