@innspel/core 0.9.0 → 0.9.2
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.
- package/dist/{chunk-YXWPKEC7.js → chunk-TFDM3JI7.js} +3 -3
- package/dist/{chunk-YXWPKEC7.js.map → chunk-TFDM3JI7.js.map} +1 -1
- package/dist/index.cjs +4 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -4
- package/dist/index.d.ts +6 -4
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/telemetri.cjs +1 -1
- package/dist/telemetri.cjs.map +1 -1
- package/dist/telemetri.d.cts +1 -1
- package/dist/telemetri.d.ts +1 -1
- package/dist/telemetri.js +1 -1
- package/dist/{typer-CC_TqepX.d.cts → typer-B4_pFm8Z.d.cts} +1 -1
- package/dist/{typer-CC_TqepX.d.ts → typer-B4_pFm8Z.d.ts} +1 -1
- package/package.json +1 -1
package/dist/telemetri.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/generated/api/core/bodySerializer.gen.ts","../src/generated/api/core/serverSentEvents.gen.ts","../src/generated/api/core/pathSerializer.gen.ts","../src/generated/api/core/utils.gen.ts","../src/generated/api/core/auth.gen.ts","../src/generated/api/client/utils.gen.ts","../src/generated/api/client/client.gen.ts","../src/generated/api/client.gen.ts","../src/generated/api/sdk.gen.ts","../src/versjon.ts","../src/telemetri.ts"],"names":["joinedValues","config","request","url"],"mappings":"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","file":"telemetri.cjs","sourcesContent":["// 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","// 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","// 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): ',' | '|' | '%20' => {\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}): string => {\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): string => {\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}): string => {\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","// 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: RegExp = /\\{[^{}]+\\}/g;\n\nexport const defaultPathSerializer = ({ path, url: _url }: PathSerializer): string => {\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}): string => {\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}): unknown {\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","// 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 * A unique identifier for the security scheme.\n *\n * Defined only when there are multiple security schemes whose `Auth`\n * shape would otherwise be identical.\n */\n key?: string;\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","// 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 = {}): ((queryParams: T) => string) => {\n const querySerializer = (queryParams: T): string => {\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 async function setAuthParams(\n options: Pick<RequestOptions, 'auth' | 'query' | 'security'> & {\n headers: Headers;\n },\n): Promise<void> {\n for (const auth of options.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","// 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(opts);\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","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { type Client, 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: Client = createClient(createConfig<ClientOptions2>());\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Client, ClientMeta, Options as Options2, RequestResult, TDataShape } from './client';\nimport { client } from './client.gen';\nimport type { AdminUsersDisableData, AdminUsersDisableErrors, AdminUsersDisableResponses, AdminUsersEnableData, AdminUsersEnableErrors, AdminUsersEnableResponses, AdminUsersListData, AdminUsersListErrors, AdminUsersListResponses, ApiKeysCreateData, ApiKeysCreateErrors, ApiKeysCreateResponses, ApiKeysListData, ApiKeysListErrors, ApiKeysListResponses, ApiKeysRevokeData, ApiKeysRevokeErrors, ApiKeysRevokeResponses, AttachmentsCompleteData, AttachmentsCompleteErrors, AttachmentsCompleteResponses, AttachmentsPresignData, AttachmentsPresignErrors, AttachmentsPresignResponses, ConfigGetData, ConfigGetErrors, ConfigGetResponses, DeletionsGetData, DeletionsGetErrors, DeletionsGetResponses, EventsSendData, EventsSendErrors, EventsSendResponses, HandoffsCreateData, HandoffsCreateErrors, HandoffsCreateResponses, HandoffsGetData, HandoffsGetErrors, HandoffsGetResponses, KnownIssuesConfirmData, KnownIssuesConfirmErrors, KnownIssuesConfirmResponses, KnownIssuesCreateData, KnownIssuesCreateErrors, KnownIssuesCreateResponses, KnownIssuesGetData, KnownIssuesGetErrors, KnownIssuesGetResponses, KnownIssuesList2Data, KnownIssuesList2Errors, KnownIssuesList2Responses, KnownIssuesListData, KnownIssuesListErrors, KnownIssuesListResponses, KnownIssuesUpdateData, KnownIssuesUpdateErrors, KnownIssuesUpdateResponses, MeGetData, MeGetErrors, MeGetResponses, ProductsCreateData, ProductsCreateErrors, ProductsCreateResponses, ProductsListData, ProductsListErrors, ProductsListResponses, ProductsRevokeKeyData, ProductsRevokeKeyErrors, ProductsRevokeKeyResponses, ProductsRotateKeyData, ProductsRotateKeyErrors, ProductsRotateKeyResponses, ProductsUpdateData, ProductsUpdateErrors, ProductsUpdateResponses, ProgramsAcceptData, ProgramsAcceptErrors, ProgramsAcceptResponses, ProgramsCloseData, ProgramsCloseErrors, ProgramsCloseResponses, ProgramsCompleteTaskData, ProgramsCompleteTaskErrors, ProgramsCompleteTaskResponses, ProgramsCreateData, ProgramsCreateErrors, ProgramsCreateResponses, ProgramsDeclineData, ProgramsDeclineErrors, ProgramsDeclineResponses, ProgramsFlagConfirmedData, ProgramsFlagConfirmedErrors, ProgramsFlagConfirmedResponses, ProgramsGetData, ProgramsGetErrors, ProgramsGetReportData, ProgramsGetReportErrors, ProgramsGetReportResponses, ProgramsGetResponses, ProgramsInviteData, ProgramsInviteErrors, ProgramsInviteResponses, ProgramsListData, ProgramsListErrors, ProgramsListInvitationsData, ProgramsListInvitationsErrors, ProgramsListInvitationsResponses, ProgramsListMineData, ProgramsListMineErrors, ProgramsListMineResponses, ProgramsListParticipantsData, ProgramsListParticipantsErrors, ProgramsListParticipantsResponses, ProgramsListResponses, ProgramsReportData, ProgramsReportErrors, ProgramsReportResponses, ProgramsRespondData, ProgramsRespondErrors, ProgramsRespondResponses, ProgramsSegmentData, ProgramsSegmentErrors, ProgramsSegmentResponses, ProgramsUpdateData, ProgramsUpdateErrors, ProgramsUpdateResponses, ProgramsWithdrawData, ProgramsWithdrawErrors, ProgramsWithdrawResponses, SettingsGetData, SettingsGetErrors, SettingsGetResponses, SettingsUpdateData, SettingsUpdateErrors, SettingsUpdateResponses, StatsGetData, StatsGetErrors, StatsGetResponses, SubjectsRemoveData, SubjectsRemoveErrors, SubjectsRemoveResponses, SubmissionsAddNoteData, SubmissionsAddNoteErrors, SubmissionsAddNoteResponses, SubmissionsAttachmentUrlData, SubmissionsAttachmentUrlErrors, SubmissionsAttachmentUrlResponses, SubmissionsCountsData, SubmissionsCountsErrors, SubmissionsCountsResponses, SubmissionsCreateData, SubmissionsCreateErrors, SubmissionsCreateResponses, SubmissionsGetData, SubmissionsGetErrors, SubmissionsGetResponses, SubmissionsListData, SubmissionsListErrors, SubmissionsListMineData, SubmissionsListMineErrors, SubmissionsListMineResponses, SubmissionsListResponses, SubmissionsRemoveAttachmentData, SubmissionsRemoveAttachmentErrors, SubmissionsRemoveAttachmentResponses, SubmissionsStatusData, SubmissionsStatusErrors, SubmissionsStatusResponses, SubmissionsUpdateData, SubmissionsUpdateErrors, SubmissionsUpdateResponses, SubmissionsUpdateStatusData, SubmissionsUpdateStatusErrors, SubmissionsUpdateStatusResponses, WebhooksCreateData, WebhooksCreateErrors, WebhooksCreateResponses, WebhooksGetData, WebhooksGetErrors, WebhooksGetResponses, WebhooksListData, WebhooksListDeliveriesData, WebhooksListDeliveriesErrors, WebhooksListDeliveriesResponses, WebhooksListErrors, WebhooksListResponses, WebhooksRemoveData, WebhooksRemoveErrors, WebhooksRemoveResponses, WebhooksRetryDeliveryData, WebhooksRetryDeliveryErrors, WebhooksRetryDeliveryResponses, WebhooksRotateSecretData, WebhooksRotateSecretErrors, WebhooksRotateSecretResponses, WebhooksTestData, WebhooksTestErrors, WebhooksTestResponses, WebhooksUpdateData, WebhooksUpdateErrors, WebhooksUpdateResponses, WebhooksVerifyData, WebhooksVerifyErrors, WebhooksVerifyResponses } 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?: keyof ClientMeta extends never ? Record<string, unknown> : ClientMeta;\n};\n\n/**\n * ApiKeys for Tenant-flaten, uten klartekst. Kun eier.\n */\nexport const apiKeysList = <ThrowOnError extends boolean = false>(options?: Options<ApiKeysListData, ThrowOnError>): RequestResult<ApiKeysListResponses, ApiKeysListErrors, ThrowOnError> => (options?.client ?? client).get<ApiKeysListResponses, ApiKeysListErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/api-keys',\n ...options\n});\n\n/**\n * Oppretter en scopet ApiKey. Klarteksten finnes kun i denne responsen (DD-20). Kun eier.\n */\nexport const apiKeysCreate = <ThrowOnError extends boolean = false>(options: Options<ApiKeysCreateData, ThrowOnError>): RequestResult<ApiKeysCreateResponses, ApiKeysCreateErrors, ThrowOnError> => (options.client ?? client).post<ApiKeysCreateResponses, ApiKeysCreateErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/api-keys',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Kaller tilbake. Kun eier.\n */\nexport const apiKeysRevoke = <ThrowOnError extends boolean = false>(options: Options<ApiKeysRevokeData, ThrowOnError>): RequestResult<ApiKeysRevokeResponses, ApiKeysRevokeErrors, ThrowOnError> => (options.client ?? client).delete<ApiKeysRevokeResponses, ApiKeysRevokeErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/api-keys/{id}',\n ...options\n});\n\n/**\n * Registeret (M2.4): alle kjente feil med tellere. Alle roller.\n */\nexport const knownIssuesList = <ThrowOnError extends boolean = false>(options?: Options<KnownIssuesListData, ThrowOnError>): RequestResult<KnownIssuesListResponses, KnownIssuesListErrors, ThrowOnError> => (options?.client ?? client).get<KnownIssuesListResponses, KnownIssuesListErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/known-issues',\n ...options\n});\n\n/**\n * Oppretter en kjent feil, fra bunnen eller fra en sak («Gjør til kjent feil», f i innboksen). Med fromSubmissionId går saken til kjent_feil og teller i Reach. Behandler og eier.\n */\nexport const knownIssuesCreate = <ThrowOnError extends boolean = false>(options: Options<KnownIssuesCreateData, ThrowOnError>): RequestResult<KnownIssuesCreateResponses, KnownIssuesCreateErrors, ThrowOnError> => (options.client ?? client).post<KnownIssuesCreateResponses, KnownIssuesCreateErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/known-issues',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Én kjent feil med tellere — hent den FØR PATCH til fikset, så panelet kan vise hvor mange som varsles (M2.4). Alle roller.\n */\nexport const knownIssuesGet = <ThrowOnError extends boolean = false>(options: Options<KnownIssuesGetData, ThrowOnError>): RequestResult<KnownIssuesGetResponses, KnownIssuesGetErrors, ThrowOnError> => (options.client ?? client).get<KnownIssuesGetResponses, KnownIssuesGetErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/known-issues/{id}',\n ...options\n});\n\n/**\n * Oppdaterer. status = fikset krever fixedIn (422 fixed_in_required), emitterer known_issue.fixed én gang til alle med Reach (DD-31) og tar sakene med knownIssueId til statusType complete. fikset → aktiv finnes ikke (409 invalid_status_transition). Behandler og eier.\n */\nexport const knownIssuesUpdate = <ThrowOnError extends boolean = false>(options: Options<KnownIssuesUpdateData, ThrowOnError>): RequestResult<KnownIssuesUpdateResponses, KnownIssuesUpdateErrors, ThrowOnError> => (options.client ?? client).patch<KnownIssuesUpdateResponses, KnownIssuesUpdateErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/known-issues/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Hvem er jeg — panelets første kall etter innlogging. Beviser at sesjonen har aal2 (ellers 403 mfa_required) og at brukeren har et sete hos en leietaker (ellers 401 — også når kontoen er deaktivert). Alle roller. Ingen skriving, ingen audit-oppføring.\n */\nexport const meGet = <ThrowOnError extends boolean = false>(options?: Options<MeGetData, ThrowOnError>): RequestResult<MeGetResponses, MeGetErrors, ThrowOnError> => (options?.client ?? client).get<MeGetResponses, MeGetErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/me',\n ...options\n});\n\n/**\n * Produktene med SDK-nøkler (kun prefiks). Alle roller.\n */\nexport const productsList = <ThrowOnError extends boolean = false>(options?: Options<ProductsListData, ThrowOnError>): RequestResult<ProductsListResponses, ProductsListErrors, ThrowOnError> => (options?.client ?? client).get<ProductsListResponses, ProductsListErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/products',\n ...options\n});\n\n/**\n * Oppretter et produkt med én SDK-nøkkel; klarteksten står i keys[0].key og finnes aldri igjen (DD-20). Kun eier.\n */\nexport const productsCreate = <ThrowOnError extends boolean = false>(options: Options<ProductsCreateData, ThrowOnError>): RequestResult<ProductsCreateResponses, ProductsCreateErrors, ThrowOnError> => (options.client ?? client).post<ProductsCreateResponses, ProductsCreateErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/products',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Oppdaterer navn, plattformer, bundle-ID-er og origins. Kun eier.\n */\nexport const productsUpdate = <ThrowOnError extends boolean = false>(options: Options<ProductsUpdateData, ThrowOnError>): RequestResult<ProductsUpdateResponses, ProductsUpdateErrors, ThrowOnError> => (options.client ?? client).patch<ProductsUpdateResponses, ProductsUpdateErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/products/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Roterer: oppretter en ny SDK-nøkkel ved siden av den gamle, så begge er gyldige til den gamle kalles tilbake (K3). Maks to aktive — finnes det allerede to, avvises rotasjonen med 409 invalid_status_transition; kall én tilbake først. Klarteksten kun her (DD-20). Kun eier.\n */\nexport const productsRotateKey = <ThrowOnError extends boolean = false>(options: Options<ProductsRotateKeyData, ThrowOnError>): RequestResult<ProductsRotateKeyResponses, ProductsRotateKeyErrors, ThrowOnError> => (options.client ?? client).post<ProductsRotateKeyResponses, ProductsRotateKeyErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/products/{id}/keys',\n ...options\n});\n\n/**\n * Kaller tilbake en SDK-nøkkel. Klienter med den nøkkelen får 401 fra neste kall. Kun eier.\n */\nexport const productsRevokeKey = <ThrowOnError extends boolean = false>(options: Options<ProductsRevokeKeyData, ThrowOnError>): RequestResult<ProductsRevokeKeyResponses, ProductsRevokeKeyErrors, ThrowOnError> => (options.client ?? client).delete<ProductsRevokeKeyResponses, ProductsRevokeKeyErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/products/{id}/keys/{keyId}',\n ...options\n});\n\n/**\n * Alle programmer. Alle roller.\n */\nexport const programsList = <ThrowOnError extends boolean = false>(options?: Options<ProgramsListData, ThrowOnError>): RequestResult<ProgramsListResponses, ProgramsListErrors, ThrowOnError> => (options?.client ?? client).get<ProgramsListResponses, ProgramsListErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/programs',\n ...options\n});\n\n/**\n * Oppretter program i utkast (4a). Ved minorsPresent tvinges commitmentFree og termsUrl avvises (422 minors_present_conflict); maxContacts over leietakerens tak gir 422 contacts_exceed_tenant_cap. Behandler og eier.\n */\nexport const programsCreate = <ThrowOnError extends boolean = false>(options: Options<ProgramsCreateData, ThrowOnError>): RequestResult<ProgramsCreateResponses, ProgramsCreateErrors, ThrowOnError> => (options.client ?? client).post<ProgramsCreateResponses, ProgramsCreateErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/programs',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Programsiden (4c) med tellere. Alle roller.\n */\nexport const programsGet = <ThrowOnError extends boolean = false>(options: Options<ProgramsGetData, ThrowOnError>): RequestResult<ProgramsGetResponses, ProgramsGetErrors, ThrowOnError> => (options.client ?? client).get<ProgramsGetResponses, ProgramsGetErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/programs/{id}',\n ...options\n});\n\n/**\n * Oppdaterer og flytter status. aapen krever hypotese, suksesskriterium og ≥ 1 oppgave med estimatedMinutes — 409 program_incomplete med hva som mangler (forklart lås, DD-17). avbrutt krever cancelReason og emitterer program.closed. aktiv kan ikke settes herfra. Oppgaver kan ikke endres etter aapen. Behandler og eier.\n */\nexport const programsUpdate = <ThrowOnError extends boolean = false>(options: Options<ProgramsUpdateData, ThrowOnError>): RequestResult<ProgramsUpdateResponses, ProgramsUpdateErrors, ThrowOnError> => (options.client ?? client).patch<ProgramsUpdateResponses, ProgramsUpdateErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/programs/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Utsendte invitasjoner uten token — sendt, akseptert, avslått, utløpt. Alle roller.\n */\nexport const programsListInvitations = <ThrowOnError extends boolean = false>(options: Options<ProgramsListInvitationsData, ThrowOnError>): RequestResult<ProgramsListInvitationsResponses, ProgramsListInvitationsErrors, ThrowOnError> => (options.client ?? client).get<ProgramsListInvitationsResponses, ProgramsListInvitationsErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/programs/{id}/invitations',\n ...options\n});\n\n/**\n * Inviterer pseudonymer (4b). Krever aapen (409 invalid_status_transition). Tokenet finnes i denne responsen og i webhooken program.invitation_created (én per invitasjon) — aldri i noe GET-svar. Leietakeren løser subject → bruker og sender tokenet gjennom egen kanal; plattformen sender aldri (DD-12). Et subject med aktiv invitasjon roterer: nytt token, det gamle slutter å virke. Behandler og eier.\n */\nexport const programsInvite = <ThrowOnError extends boolean = false>(options: Options<ProgramsInviteData, ThrowOnError>): RequestResult<ProgramsInviteResponses, ProgramsInviteErrors, ThrowOnError> => (options.client ?? client).post<ProgramsInviteResponses, ProgramsInviteErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/programs/{id}/invitations',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Deltakerne med flaggstatus (DD-36): «invitert, ikke slått på» og «trukket, flagg ikke bekreftet av» er egne tilstander. Ingen sortering på aktivitet, ingen score (DD-38). Alle roller.\n */\nexport const programsListParticipants = <ThrowOnError extends boolean = false>(options: Options<ProgramsListParticipantsData, ThrowOnError>): RequestResult<ProgramsListParticipantsResponses, ProgramsListParticipantsErrors, ThrowOnError> => (options.client ?? client).get<ProgramsListParticipantsResponses, ProgramsListParticipantsErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/programs/{id}/participants',\n ...options\n});\n\n/**\n * Den frosne rapporten. 404 report_not_found før programmet er avsluttet. Alle roller.\n */\nexport const programsGetReport = <ThrowOnError extends boolean = false>(options: Options<ProgramsGetReportData, ThrowOnError>): RequestResult<ProgramsGetReportResponses, ProgramsGetReportErrors, ThrowOnError> => (options.client ?? client).get<ProgramsGetReportResponses, ProgramsGetReportErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/programs/{id}/report',\n ...options\n});\n\n/**\n * Avslutter programmet og fryser rapporten (4d, DD-35). Krever avsluttes eller aktiv (409 invalid_status_transition); allerede fryst gir 409 report_frozen. Under 30 svar: dataLimitations kan ikke være tom (422 data_limitations_required) og payload har ingen prosent. Emitterer program.closed. Samme tall går til testerens takk. Behandler og eier.\n */\nexport const programsClose = <ThrowOnError extends boolean = false>(options: Options<ProgramsCloseData, ThrowOnError>): RequestResult<ProgramsCloseResponses, ProgramsCloseErrors, ThrowOnError> => (options.client ?? client).post<ProgramsCloseResponses, ProgramsCloseErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/programs/{id}/report',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Leietakerens innstillinger (5d) inkludert community-sjekklisten med rødt/grønt per krav (DD-18). Ingen hemmeligheter (DD-20). Alle roller.\n */\nexport const settingsGet = <ThrowOnError extends boolean = false>(options?: Options<SettingsGetData, ThrowOnError>): RequestResult<SettingsGetResponses, SettingsGetErrors, ThrowOnError> => (options?.client ?? client).get<SettingsGetResponses, SettingsGetErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/settings',\n ...options\n});\n\n/**\n * Oppdaterer innstillinger. Kun eier. minorsPresent = true strammer alt i samme forespørsel; en verdi som strider mot minorsPresent gir 422 minors_present_conflict med feltet i meldingen (K18). Frist og kontakter kan senkes, aldri heves over 90 / 3.\n */\nexport const settingsUpdate = <ThrowOnError extends boolean = false>(options: Options<SettingsUpdateData, ThrowOnError>): RequestResult<SettingsUpdateResponses, SettingsUpdateErrors, ThrowOnError> => (options.client ?? client).patch<SettingsUpdateResponses, SettingsUpdateErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/settings',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Leietakerens egne tall for de siste ukene (M4.2, maaling.md): statusflyt inn/ut per uke, tragten i widgeten, innsendinger og anonyme per uke, SDK-versjonsspredning, sløyfen ut, saker per adminøkt og gjentakende innsendere. Tellinger, aldri prosent — panelet regner, og aldri under 30 (DD-16). Regnes ved oppslag. Alle roller.\n */\nexport const statsGet = <ThrowOnError extends boolean = false>(options?: Options<StatsGetData, ThrowOnError>): RequestResult<StatsGetResponses, StatsGetErrors, ThrowOnError> => (options?.client ?? client).get<StatsGetResponses, StatsGetErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/stats',\n ...options\n});\n\n/**\n * Innboksen og Saker (DD-01, DD-11). Uten filter: alt. statusType = reviewing er innboksen; overdue og inactive gir «Avgjør nå» og DD-25-varslene. Sortering: overdue først, så inactive, så eldst først — de tre eldste uten aktivitet teller på toppen. Alle roller.\n */\nexport const submissionsList = <ThrowOnError extends boolean = false>(options?: Options<SubmissionsListData, ThrowOnError>): RequestResult<SubmissionsListResponses, SubmissionsListErrors, ThrowOnError> => (options?.client ?? client).get<SubmissionsListResponses, SubmissionsListErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/submissions',\n ...options\n});\n\n/**\n * Tellingen som ER forsiden: «40 til vurdering · 3 uten aktivitet · 3 over frist» (DD-01, DD-52). Alle roller.\n */\nexport const submissionsCounts = <ThrowOnError extends boolean = false>(options?: Options<SubmissionsCountsData, ThrowOnError>): RequestResult<SubmissionsCountsResponses, SubmissionsCountsErrors, ThrowOnError> => (options?.client ?? client).get<SubmissionsCountsResponses, SubmissionsCountsErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/submissions/counts',\n ...options\n});\n\n/**\n * Saken i detalj, med notater, svar, dedupe-forslag (maks tre, null hvis tjenesten ikke svarte) og vedleggsmetadata. Åpning av detaljen logges (AuditEntry: hvem så hvilken innsending). Alle roller.\n */\nexport const submissionsGet = <ThrowOnError extends boolean = false>(options: Options<SubmissionsGetData, ThrowOnError>): RequestResult<SubmissionsGetResponses, SubmissionsGetErrors, ThrowOnError> => (options.client ?? client).get<SubmissionsGetResponses, SubmissionsGetErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/submissions/{id}',\n ...options\n});\n\n/**\n * Triage i én forespørsel — status, sammenslåing, kjent feil, frist, svar. Reglene står på SubmissionUpdate. Behandler og eier. Emitterer submission.status_changed og/eller submission.replied via webhook; en sammenslåing emitterer INGENTING (DD-24). Svaret er saken etter endringen.\n */\nexport const submissionsUpdate = <ThrowOnError extends boolean = false>(options: Options<SubmissionsUpdateData, ThrowOnError>): RequestResult<SubmissionsUpdateResponses, SubmissionsUpdateErrors, ThrowOnError> => (options.client ?? client).patch<SubmissionsUpdateResponses, SubmissionsUpdateErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/submissions/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Fjerner sakens vedlegg — f.eks. et bilde av andre personer. Objektet slettes i lagringen, saken står uendret, og fjerningen logges (AuditEntry attachment.removed: hvem og når, aldri hvorfor). Kan ikke angres. Etter fjerning har SubmissionDetail attachmentRemovedAt og SubmissionStatusView attachmentRemoved: innsenderen ser i «mine innspill» at bildet er fjernet, uten begrunnelse. Ingen webhook. 404 attachment_not_found når saken ikke har et ferdig behandlet vedlegg, eller det alt er fjernet — samme regel som attachment-url, og det som ikke er ferdig behandlet kan behandleren heller ikke ha sett. Behandler og eier; leser får 403.\n */\nexport const submissionsRemoveAttachment = <ThrowOnError extends boolean = false>(options: Options<SubmissionsRemoveAttachmentData, ThrowOnError>): RequestResult<SubmissionsRemoveAttachmentResponses, SubmissionsRemoveAttachmentErrors, ThrowOnError> => (options.client ?? client).delete<SubmissionsRemoveAttachmentResponses, SubmissionsRemoveAttachmentErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/submissions/{id}/attachment',\n ...options\n});\n\n/**\n * Korttidsgyldig URL til sakens skjermbilde. Logges som «åpnet skjermbilde» (rapport 5). 404 attachment_not_found når saken ikke har vedlegg, det ikke er ferdig behandlet, eller det er fjernet. Alle roller.\n */\nexport const submissionsAttachmentUrl = <ThrowOnError extends boolean = false>(options: Options<SubmissionsAttachmentUrlData, ThrowOnError>): RequestResult<SubmissionsAttachmentUrlResponses, SubmissionsAttachmentUrlErrors, ThrowOnError> => (options.client ?? client).get<SubmissionsAttachmentUrlResponses, SubmissionsAttachmentUrlErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/submissions/{id}/attachment-url',\n ...options\n});\n\n/**\n * Internt notat — standardfeltet behandleren skriver i (DD-23). Forlater aldri panelet. Oppdaterer lastActivityAt. Behandler og eier.\n */\nexport const submissionsAddNote = <ThrowOnError extends boolean = false>(options: Options<SubmissionsAddNoteData, ThrowOnError>): RequestResult<SubmissionsAddNoteResponses, SubmissionsAddNoteErrors, ThrowOnError> => (options.client ?? client).post<SubmissionsAddNoteResponses, SubmissionsAddNoteErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/submissions/{id}/notes',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Leietakerens panelbrukere, også de deaktiverte. Kun eier.\n */\nexport const adminUsersList = <ThrowOnError extends boolean = false>(options?: Options<AdminUsersListData, ThrowOnError>): RequestResult<AdminUsersListResponses, AdminUsersListErrors, ThrowOnError> => (options?.client ?? client).get<AdminUsersListResponses, AdminUsersListErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/users',\n ...options\n});\n\n/**\n * Deaktiverer kontoen. Brukerens neste admin-kall gir 401 unauthenticated uansett hvor ferskt Supabase-tokenet er — sesjonen overlever ikke. Raden står, og alt hun gjorde er fortsatt sporbart. Idempotent: en alt deaktivert konto gir 204. Egen konto gir 409 cannot_disable_self — det er regelen som garanterer minst én aktiv eier. Kun eier. AuditEntry admin_user.disabled.\n */\nexport const adminUsersDisable = <ThrowOnError extends boolean = false>(options: Options<AdminUsersDisableData, ThrowOnError>): RequestResult<AdminUsersDisableResponses, AdminUsersDisableErrors, ThrowOnError> => (options.client ?? client).post<AdminUsersDisableResponses, AdminUsersDisableErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/users/{id}/disable',\n ...options\n});\n\n/**\n * Reaktiverer en deaktivert konto. Idempotent: en aktiv konto gir 204. Kun eier. AuditEntry admin_user.enabled.\n */\nexport const adminUsersEnable = <ThrowOnError extends boolean = false>(options: Options<AdminUsersEnableData, ThrowOnError>): RequestResult<AdminUsersEnableResponses, AdminUsersEnableErrors, ThrowOnError> => (options.client ?? client).post<AdminUsersEnableResponses, AdminUsersEnableErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/users/{id}/enable',\n ...options\n});\n\n/**\n * Registrerte webhooks. Alle roller.\n */\nexport const webhooksList = <ThrowOnError extends boolean = false>(options?: Options<WebhooksListData, ThrowOnError>): RequestResult<WebhooksListResponses, WebhooksListErrors, ThrowOnError> => (options?.client ?? client).get<WebhooksListResponses, WebhooksListErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/webhooks',\n ...options\n});\n\n/**\n * Registrerer en mottaker. Opprettes inaktiv og uverifisert; secret finnes kun her (DD-20). https påkrevd, private nett avvises (400 validation_failed). Kun eier.\n */\nexport const webhooksCreate = <ThrowOnError extends boolean = false>(options: Options<WebhooksCreateData, ThrowOnError>): RequestResult<WebhooksCreateResponses, WebhooksCreateErrors, ThrowOnError> => (options.client ?? client).post<WebhooksCreateResponses, WebhooksCreateErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/webhooks',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Sletter webhooken og dens leveringslogg. Kun eier.\n */\nexport const webhooksRemove = <ThrowOnError extends boolean = false>(options: Options<WebhooksRemoveData, ThrowOnError>): RequestResult<WebhooksRemoveResponses, WebhooksRemoveErrors, ThrowOnError> => (options.client ?? client).delete<WebhooksRemoveResponses, WebhooksRemoveErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/webhooks/{id}',\n ...options\n});\n\n/**\n * Én webhook. Alle roller.\n */\nexport const webhooksGet = <ThrowOnError extends boolean = false>(options: Options<WebhooksGetData, ThrowOnError>): RequestResult<WebhooksGetResponses, WebhooksGetErrors, ThrowOnError> => (options.client ?? client).get<WebhooksGetResponses, WebhooksGetErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/webhooks/{id}',\n ...options\n});\n\n/**\n * Oppdaterer. Ny url nullstiller verifiseringen; active = true krever verifisert (409 webhook_not_verified). Kun eier.\n */\nexport const webhooksUpdate = <ThrowOnError extends boolean = false>(options: Options<WebhooksUpdateData, ThrowOnError>): RequestResult<WebhooksUpdateResponses, WebhooksUpdateErrors, ThrowOnError> => (options.client ?? client).patch<WebhooksUpdateResponses, WebhooksUpdateErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/webhooks/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Leveringsloggen. status = dead er dead-letter-listen som skal være synlig i panelet (låst). Alle roller.\n */\nexport const webhooksListDeliveries = <ThrowOnError extends boolean = false>(options: Options<WebhooksListDeliveriesData, ThrowOnError>): RequestResult<WebhooksListDeliveriesResponses, WebhooksListDeliveriesErrors, ThrowOnError> => (options.client ?? client).get<WebhooksListDeliveriesResponses, WebhooksListDeliveriesErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/webhooks/{id}/deliveries',\n ...options\n});\n\n/**\n * Prøver en dead-letter-levering på nytt, én gang, med samme event_id (idempotent hos mottakeren). Krever status dead (409 invalid_status_transition). Behandler og eier.\n */\nexport const webhooksRetryDelivery = <ThrowOnError extends boolean = false>(options: Options<WebhooksRetryDeliveryData, ThrowOnError>): RequestResult<WebhooksRetryDeliveryResponses, WebhooksRetryDeliveryErrors, ThrowOnError> => (options.client ?? client).post<WebhooksRetryDeliveryResponses, WebhooksRetryDeliveryErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/webhooks/{id}/deliveries/{deliveryId}/retry',\n ...options\n});\n\n/**\n * Roterer secret. Den nye finnes kun i denne responsen; den gamle er ugyldig straks. Kun eier.\n */\nexport const webhooksRotateSecret = <ThrowOnError extends boolean = false>(options: Options<WebhooksRotateSecretData, ThrowOnError>): RequestResult<WebhooksRotateSecretResponses, WebhooksRotateSecretErrors, ThrowOnError> => (options.client ?? client).post<WebhooksRotateSecretResponses, WebhooksRotateSecretErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/webhooks/{id}/rotate-secret',\n ...options\n});\n\n/**\n * Testknappen (5d): sender en signert webhook.test-hendelse synkront, ett forsøk, ingen retry. Krever verifisert (409 webhook_not_verified). Behandler og eier.\n */\nexport const webhooksTest = <ThrowOnError extends boolean = false>(options: Options<WebhooksTestData, ThrowOnError>): RequestResult<WebhooksTestResponses, WebhooksTestErrors, ThrowOnError> => (options.client ?? client).post<WebhooksTestResponses, WebhooksTestErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/webhooks/{id}/test',\n ...options\n});\n\n/**\n * Verifiserer URL-en: sender en signert webhook.verify-hendelse med et engangs-challenge og krever at mottakeren svarer 2xx med challenge-verdien i kroppen. ok = true setter verifiedAt. Kun eier.\n */\nexport const webhooksVerify = <ThrowOnError extends boolean = false>(options: Options<WebhooksVerifyData, ThrowOnError>): RequestResult<WebhooksVerifyResponses, WebhooksVerifyErrors, ThrowOnError> => (options.client ?? client).post<WebhooksVerifyResponses, WebhooksVerifyErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/webhooks/{id}/verify',\n ...options\n});\n\n/**\n * Presigned PUT mot R2 (EU) for ett skjermbilde, maskert på klienten før dette kallet (K4). Tallene sjekkes her (413 attachment_too_large, 415 attachment_type_not_allowed) og på nytt server-side før dekoding (K9). 403 screenshots_disabled når leietakeren har skjermbilde av eller minorsPresent. Innsendingen må tilhøre kalleren — samme subject, eller anonymt: en anonym innsending med kjent submissionId (UUIDv7, kun gitt til skaperen) — og være opprettet for høyst 15 minutter siden (DD-42: vedlegget følger rett etter teksten, og skjermbilde køes aldri). Ellers 404 submission_not_found. Ett vedlegg per innsending (409 attachment_already_uploaded).\n */\nexport const attachmentsPresign = <ThrowOnError extends boolean = false>(options: Options<AttachmentsPresignData, ThrowOnError>): RequestResult<AttachmentsPresignResponses, AttachmentsPresignErrors, ThrowOnError> => (options.client ?? client).post<AttachmentsPresignResponses, AttachmentsPresignErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/attachments/presign',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Klienten melder at PUT-en er ferdig. Starter verifisering og re-enkoding i isolert prosess; svarer straks. Feiler verifiseringen etterpå, slettes objektet og innsendingen står uten vedlegg — kvitteringen i klienten har allerede sagt «teksten din er lagret» (DD-42). Tillegg utover briefens liste: uten et signal må plattformen polle R2.\n */\nexport const attachmentsComplete = <ThrowOnError extends boolean = false>(options: Options<AttachmentsCompleteData, ThrowOnError>): RequestResult<AttachmentsCompleteResponses, AttachmentsCompleteErrors, ThrowOnError> => (options.client ?? client).post<AttachmentsCompleteResponses, AttachmentsCompleteErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/attachments/{id}/complete',\n ...options\n});\n\n/**\n * Leietakerens klientkonfigurasjon for produktet nøkkelen tilhører (M2.5): tegngrense, minste antall tegn, skjermbilde-steg og personvernlenke — det SDK-et ellers måtte få duplisert i init(). Virker anonymt. Klienten henter ved hver åpning av widgeten, aldri i bakgrunnen, og faller tilbake på de strammeste verdiene (140 · 10 · av) når kallet ikke svarer. Tillegg utover M0.1: teknisk gjeld fra M1.2, eid av M2.5.\n */\nexport const configGet = <ThrowOnError extends boolean = false>(options?: Options<ConfigGetData, ThrowOnError>): RequestResult<ConfigGetResponses, ConfigGetErrors, ThrowOnError> => (options?.client ?? client).get<ConfigGetResponses, ConfigGetErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/config',\n ...options\n});\n\n/**\n * Målemodellens hendelser fra SDK-et (M4.2, maaling.md) — plattformens eget mottak, aldri en tredjepart (K19). ALLTID anonymt: et feedback-token ignoreres, og subject lagres aldri. Kroppen er lukket — ingen tekst, ingen enhets-ID, ingen IP (IP holdes kun i minne for rate limiting, K15). Svarer 202 og lagrer beste-innsats; klienten sender bunter og prøver aldri på nytt, for hendelsene er tellinger, ikke innhold. Rate-limitet per nøkkel og IP.\n */\nexport const eventsSend = <ThrowOnError extends boolean = false>(options: Options<EventsSendData, ThrowOnError>): RequestResult<EventsSendResponses, EventsSendErrors, ThrowOnError> => (options.client ?? client).post<EventsSendResponses, EventsSendErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/events',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Svarer på en oppfølging med spørsmål («Hvordan gikk det?» eller sjekkpunkt): tre lukkede valg og valgfri setning. Én Response per FollowUp (409 follow_up_already_answered). Bare kind = hvordan_gikk_det og sjekkpunkt tar svar — en påminnelse eller et tilbud om utgang gir 409 follow_up_not_answerable. Oppfølgingen må være emittert til kallerens subject (404 follow_up_not_found). Deltakelsen går til fullfoert når alle oppgavene er gjort og ingen oppfølging står planlagt eller ubesvart. Svarprosenten i rapporten måles mot de emitterte oppfølgingene som tar svar.\n */\nexport const programsRespond = <ThrowOnError extends boolean = false>(options: Options<ProgramsRespondData, ThrowOnError>): RequestResult<ProgramsRespondResponses, ProgramsRespondErrors, ThrowOnError> => (options.client ?? client).post<ProgramsRespondResponses, ProgramsRespondErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/follow-ups/{id}/respond',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * RESERVERT v2. TV-klienten oppretter en overleveringsøkt: kontekst inn, id + URL + QR som SVG ut. Lever 10 min, brukes én gang. Virker anonymt — identiteten avgjøres på mobilen. Konteksten slettes når økten utløper uten innsending.\n */\nexport const handoffsCreate = <ThrowOnError extends boolean = false>(options: Options<HandoffsCreateData, ThrowOnError>): RequestResult<HandoffsCreateResponses, HandoffsCreateErrors, ThrowOnError> => (options.client ?? client).post<HandoffsCreateResponses, HandoffsCreateErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/handoffs',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * RESERVERT v2. Mobilen henter TV-ens kontekst for å vise den fjernbar linje for linje (DD-05) og sende som vanlig med handoffId. Ukjent, utløpt eller brukt → 404 handoff_invalid.\n */\nexport const handoffsGet = <ThrowOnError extends boolean = false>(options: Options<HandoffsGetData, ThrowOnError>): RequestResult<HandoffsGetResponses, HandoffsGetErrors, ThrowOnError> => (options.client ?? client).get<HandoffsGetResponses, HandoffsGetErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/handoffs/{id}',\n ...options\n});\n\n/**\n * Aksepterer invitasjonen etter forventningsavklaringen (DD-13, DD-32). Tokenet i stien er engangs og ≤ 14 dager; det må være utstedt til kallerens subject — feil subject, ukjent, utløpt eller brukt gir alle 404 invitation_invalid. Gjentak fra samme subject er idempotent (200 med deltakelsen). Programmet må være aapen eller aktiv (409 invalid_status_transition), og ikke fullt (409 program_full). Avslått først → 409 invitation_already_answered. Emitterer program.participant_joined.\n */\nexport const programsAccept = <ThrowOnError extends boolean = false>(options: Options<ProgramsAcceptData, ThrowOnError>): RequestResult<ProgramsAcceptResponses, ProgramsAcceptErrors, ThrowOnError> => (options.client ?? client).post<ProgramsAcceptResponses, ProgramsAcceptErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/invitations/{token}/accept',\n ...options\n});\n\n/**\n * Avslår invitasjonen — invitation_declined i målemodellen og status avslaatt i panelet. Ingen årsak spørres (idébank). Samme 404-regel som accept. Akseptert først → 409 invitation_already_answered: et nei etter ja er «Gå ut», ikke avslag. Tillegg utover briefens liste: uten det finnes ikke status avslaatt.\n */\nexport const programsDecline = <ThrowOnError extends boolean = false>(options: Options<ProgramsDeclineData, ThrowOnError>): RequestResult<ProgramsDeclineResponses, ProgramsDeclineErrors, ThrowOnError> => (options.client ?? client).post<ProgramsDeclineResponses, ProgramsDeclineErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/invitations/{token}/decline',\n ...options\n});\n\n/**\n * Kjente feil for skjerm og versjon — vises FØR feltet i feilsporet (DD-03, differensiatoren). Maks tre kort, kun status aktiv eller fikset med appVersion ≤ fixedIn (DD-30), kun visibleInWidget. Virker anonymt. Tom liste er et gyldig svar og gir ingen kort, ikke en tomtilstand.\n */\nexport const knownIssuesList2 = <ThrowOnError extends boolean = false>(options?: Options<KnownIssuesList2Data, ThrowOnError>): RequestResult<KnownIssuesList2Responses, KnownIssuesList2Errors, ThrowOnError> => (options?.client ?? client).get<KnownIssuesList2Responses, KnownIssuesList2Errors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/known-issues',\n ...options\n});\n\n/**\n * «Ja, jeg også» (DD-29): oppretter en Submission med status kjent_feil, uten tekst, som øker Reach uten ny sak. Kortet må være synlig for kalleren (ellers 404 known_issue_not_found). Med token: én per (subject, knownIssue) — gjentak returnerer den eksisterende med 200. Anonymt: teller i anonymousCount. Erstatter briefens «POST submissions/{id}/confirm-known-issue», der {id} var tvetydig — her er det den kjente feilen.\n */\nexport const knownIssuesConfirm = <ThrowOnError extends boolean = false>(options: Options<KnownIssuesConfirmData, ThrowOnError>): RequestResult<KnownIssuesConfirmResponses, KnownIssuesConfirmErrors, ThrowOnError> => (options.client ?? client).post<KnownIssuesConfirmResponses, KnownIssuesConfirmErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/known-issues/{id}/confirm',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * «Gå ut» — alltid synlig i fanen (DD-36). Deltakelsen går til trukket, subjektet forsvinner fra segmentet i samme transaksjon, program.segment_changed og program.participant_withdrawn emitteres, og ingen flere kontakter sendes. Idempotent: allerede trukket gir 200. Tillegg utover briefens liste: DD-36 krever den.\n */\nexport const programsWithdraw = <ThrowOnError extends boolean = false>(options: Options<ProgramsWithdrawData, ThrowOnError>): RequestResult<ProgramsWithdrawResponses, ProgramsWithdrawErrors, ThrowOnError> => (options.client ?? client).post<ProgramsWithdrawResponses, ProgramsWithdrawErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/participations/{id}/withdraw',\n ...options\n});\n\n/**\n * Alt om betaprogram for kallerens subject — SDK-ets programs.list(): egne invitasjoner (til banneret, DD-12), deltakelser med oppgavestatus (fanen), og oppfølginger som venter på svar. Ett kall, fordi SDK-et spør ved åpning av widgeten og aldri i bakgrunnen.\n */\nexport const programsListMine = <ThrowOnError extends boolean = false>(options?: Options<ProgramsListMineData, ThrowOnError>): RequestResult<ProgramsListMineResponses, ProgramsListMineErrors, ThrowOnError> => (options?.client ?? client).get<ProgramsListMineResponses, ProgramsListMineErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/programs',\n ...options\n});\n\n/**\n * «Mine innspill» (DD-27, DD-41): kallerens egne innsendinger, nyeste først, med status, løfte-grunnlag og svar. Krever token (401 feedback_token_required uten) — anonym modus har ingen liste. Kjente-feil-bekreftelser er med (tom tekst, knownIssue satt). Tillegg utover briefens liste: portalen kan ikke holde id-er lokalt.\n */\nexport const submissionsListMine = <ThrowOnError extends boolean = false>(options?: Options<SubmissionsListMineData, ThrowOnError>): RequestResult<SubmissionsListMineResponses, SubmissionsListMineErrors, ThrowOnError> => (options?.client ?? client).get<SubmissionsListMineResponses, SubmissionsListMineErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/submissions',\n ...options\n});\n\n/**\n * Innsendingen. Diskriminert på type: feil kan bære correlation og relatedKnownIssueId; onske kan ikke — et slikt felt gir 400 unknown_field. Teksten er ferdig lagret når 201 kommer; et skjermbilde legges til etterpå via Attachments og kan feile alene (DD-42).\n *\n * Server-side: subject fra tokenet (null uten token), context lest ved feltnavn mot hvitelisten (ukjent → 400 unknown_field, K5), text mot leietakerens min/max (400 text_too_short / text_too_long), correlation mot deklarerte kind (400 correlation_invalid), programId krever token og aktiv deltakelse (404 program_not_found ellers). Samme clientRef fra samme subject innen 24 t gir 200 med den eksisterende — offline-køen kan trygt prøve igjen.\n *\n * Status er alltid ny ved 201. Kvitteringen lover per spor (DD-07); løfteteksten står i klienten.\n */\nexport const submissionsCreate = <ThrowOnError extends boolean = false>(options: Options<SubmissionsCreateData, ThrowOnError>): RequestResult<SubmissionsCreateResponses, SubmissionsCreateErrors, ThrowOnError> => (options.client ?? client).post<SubmissionsCreateResponses, SubmissionsCreateErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/submissions',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Status for én egen innsending — SDK-ets subjects.status(). Krever token; en innsending som tilhører et annet subject, eller er anonym, gir 404 submission_not_found. Anonyme innsendinger kan ikke slås opp: det finnes ingen identitet å binde dem til.\n */\nexport const submissionsStatus = <ThrowOnError extends boolean = false>(options: Options<SubmissionsStatusData, ThrowOnError>): RequestResult<SubmissionsStatusResponses, SubmissionsStatusErrors, ThrowOnError> => (options.client ?? client).get<SubmissionsStatusResponses, SubmissionsStatusErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/submissions/{id}/status',\n ...options\n});\n\n/**\n * Fullfører en oppgave med utfall (fungerte · delvis · ikke). Én completion per (deltaker, oppgave) — 409 task_already_completed. submissionId må være kallerens egen innsending (404 submission_not_found ellers). Emitterer task_completed i målemodellen; ingen webhook.\n */\nexport const programsCompleteTask = <ThrowOnError extends boolean = false>(options: Options<ProgramsCompleteTaskData, ThrowOnError>): RequestResult<ProgramsCompleteTaskResponses, ProgramsCompleteTaskErrors, ThrowOnError> => (options.client ?? client).post<ProgramsCompleteTaskResponses, ProgramsCompleteTaskErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/tasks/{id}/complete',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Slettekvitteringen med tellinger når den er completed. Scope subjects:delete.\n */\nexport const deletionsGet = <ThrowOnError extends boolean = false>(options: Options<DeletionsGetData, ThrowOnError>): RequestResult<DeletionsGetResponses, DeletionsGetErrors, ThrowOnError> => (options.client ?? client).get<DeletionsGetResponses, DeletionsGetErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Api-Key', type: 'apiKey' }],\n url: '/v1/tenant/deletions/{id}',\n ...options\n});\n\n/**\n * Leietakeren bekrefter at flagget er PÅ (enabled = true) eller AV (false) for et pseudonym. Første bekreftelse tar programmet fra aapen til aktiv. false etter trukket fjerner «flagg ikke bekreftet av» (DD-36). Ukjent deltaker → 404 participant_not_found. Scope programs:confirm.\n */\nexport const programsFlagConfirmed = <ThrowOnError extends boolean = false>(options: Options<ProgramsFlagConfirmedData, ThrowOnError>): RequestResult<ProgramsFlagConfirmedResponses, ProgramsFlagConfirmedErrors, ThrowOnError> => (options.client ?? client).post<ProgramsFlagConfirmedResponses, ProgramsFlagConfirmedErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Api-Key', type: 'apiKey' }],\n url: '/v1/tenant/programs/{id}/participants/{sub}/flag-confirmed',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Den frosne rapporten — samme tall som panelet og testerens takk (DD-16). 404 report_not_found før avsluttet. Scope admin.\n */\nexport const programsReport = <ThrowOnError extends boolean = false>(options: Options<ProgramsReportData, ThrowOnError>): RequestResult<ProgramsReportResponses, ProgramsReportErrors, ThrowOnError> => (options.client ?? client).get<ProgramsReportResponses, ProgramsReportErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Api-Key', type: 'apiKey' }],\n url: '/v1/tenant/programs/{id}/report',\n ...options\n});\n\n/**\n * Segmentet leietakeren skrur flagget på for: aktive deltakeres pseudonymer og ingenting annet (M3.3). ETag på svaret; If-None-Match gir 304 når uendret. En deltaker som går ut er borte herfra i samme transaksjon som program.segment_changed emitteres (DD-36). Scope segment:read.\n */\nexport const programsSegment = <ThrowOnError extends boolean = false>(options: Options<ProgramsSegmentData, ThrowOnError>): RequestResult<ProgramsSegmentResponses, ProgramsSegmentErrors, ThrowOnError> => (options.client ?? client).get<ProgramsSegmentResponses, ProgramsSegmentErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Api-Key', type: 'apiKey' }],\n url: '/v1/tenant/programs/{id}/segment',\n ...options\n});\n\n/**\n * Sletting per pseudonym (K11), utløst av leietakeren når brukeren ber om det. Sletter tekst, vedlegg, koblingsnøkler, svar, notater om saken, deltakelser og oppfølginger innen 24 timer; Reach-tallet på berørte saker står uten kobling. Svarer 202 med kvittering straks; completed hentes via Deletions.get eller kommer som subject.deleted. Idempotent: et ukjent subject gir også 202 med nullteller — å svare 404 ville bekreftet hvem som har sendt inn. Scope subjects:delete.\n */\nexport const subjectsRemove = <ThrowOnError extends boolean = false>(options: Options<SubjectsRemoveData, ThrowOnError>): RequestResult<SubjectsRemoveResponses, SubjectsRemoveErrors, ThrowOnError> => (options.client ?? client).delete<SubjectsRemoveResponses, SubjectsRemoveErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Api-Key', type: 'apiKey' }],\n url: '/v1/tenant/subjects/{sub}',\n ...options\n});\n\n/**\n * Statusendring fra leietakerens verktøy (M1.4). Følger tilstandsmaskinen (409 invalid_status_transition); levert i feilsporet krever fixedIn (422). Emitterer submission.status_changed som ellers — innsenderen får samme løfte uansett hvem som flyttet saken. Scope admin. Står i kontrakten fordi M1.4 navngir den; bygges der.\n */\nexport const submissionsUpdateStatus = <ThrowOnError extends boolean = false>(options: Options<SubmissionsUpdateStatusData, ThrowOnError>): RequestResult<SubmissionsUpdateStatusResponses, SubmissionsUpdateStatusErrors, ThrowOnError> => (options.client ?? client).patch<SubmissionsUpdateStatusResponses, SubmissionsUpdateStatusErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Api-Key', type: 'apiKey' }],\n url: '/v1/tenant/submissions/{id}/status',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n","/**\n * Versjonen som sendes som `context.sdkVersion` på hver innsending.\n *\n * `maaling.md` teller SDK-versjonsspredning per leietaker — «en gammel SDK er\n * et vedlikeholdsproblem som ellers er usynlig». Derfor er dette en konstant og\n * ikke et `require('../package.json')`: kjernen skal virke i en bundler som\n * ikke kan lese JSON, og `test/versjon.test.ts` holder den i takt med\n * `package.json`.\n */\nexport const VERSJON = '0.9.0';\n","import { createClient, createConfig, ingestEventsSend as eventsSend, type TelemetryBatchWire as TelemetryBatchDto, type TelemetryEventWire as TelemetryEventDto } from './api.js';\nimport type { Telemetry, TelemetryEvent } from './typer.js';\nimport { VERSJON } from './versjon.js';\n\n/**\n * Mottaket for målemodellen (M4.2, docs/maaling.md) — plattformens eget, aldri en\n * tredjepart (K19). Egen understi (`@innspel/core/telemetri`) så hovedbundelen og\n * taket på 10 kB står urørt: verten kobler senderen på med `init({ telemetry })`,\n * og `mount()` i `@innspel/web` gjør det som standard.\n *\n * Kallet er anonymt med vilje: ingen Authorization-header, aldri pseudonym. Bunten\n * bærer plattform, appversjon og SDK-versjon — ingenting annet fra konteksten.\n * Beste innsats: hendelsene samles i inntil `flushAfterMs` (standard 2 s) eller\n * `maxBatch` (standard 25), sendes én gang og prøves aldri på nytt. Tellinger er\n * ikke innhold, og en tapt telling er bedre enn en kø som vokser.\n */\nexport interface IngestTelemetryOptions {\n baseUrl: string;\n tenantKey: string;\n platform: TelemetryBatchDto['platform'];\n appVersion?: string;\n /** Standard er `fetch` i miljøet. Injiseres i test. */\n fetch?: typeof fetch;\n /** Ventetid før en bunt sendes. 0 = send straks. */\n flushAfterMs?: number;\n /** Bunten sendes når den når dette, uansett ventetid. Kontraktens tak er 100. */\n maxBatch?: number;\n}\n\nexport interface IngestTelemetry extends Telemetry {\n /** Sender det som ligger og venter nå — for verten når appen går i bakgrunnen. */\n flush(): Promise<void>;\n}\n\nconst MAKS_BUNT = 100;\n\n/** Hendelsene som avslutter noe: sendes straks, så tragten er komplett før appen lukkes. */\nconst STRAKS: ReadonlySet<TelemetryEvent['name']> = new Set(['submission_sent', 'submission_failed', 'followup_answered', 'task_completed']);\n\nexport function createIngestTelemetry(options: IngestTelemetryOptions): IngestTelemetry {\n if (typeof options?.baseUrl !== 'string' || options.baseUrl.length === 0) {\n throw new TypeError('[innspel] createIngestTelemetry: baseUrl mangler. Se README.md.');\n }\n if (typeof options.tenantKey !== 'string' || options.tenantKey.length === 0) {\n throw new TypeError('[innspel] createIngestTelemetry: tenantKey mangler. Se README.md.');\n }\n if (typeof options.platform !== 'string' || options.platform.length === 0) {\n throw new TypeError('[innspel] createIngestTelemetry: platform mangler (ios · android · web · …).');\n }\n\n const klient = createClient(createConfig({ baseUrl: options.baseUrl, ...(options.fetch ? { fetch: options.fetch } : {}) }));\n const ventetid = options.flushAfterMs ?? 2000;\n const maks = Math.min(options.maxBatch ?? 25, MAKS_BUNT);\n let buffer: TelemetryEventDto[] = [];\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n async function send(): Promise<void> {\n if (timer !== undefined) {\n clearTimeout(timer);\n timer = undefined;\n }\n if (buffer.length === 0) return;\n const events = buffer.slice(0, MAKS_BUNT);\n buffer = buffer.slice(MAKS_BUNT);\n try {\n await eventsSend({\n client: klient,\n headers: { 'X-Innspel-Tenant-Key': options.tenantKey },\n body: { events, platform: options.platform, sdkVersion: VERSJON, ...(options.appVersion ? { appVersion: options.appVersion } : {}) },\n });\n } catch {\n // Beste innsats: en tapt telling er ikke en feil verten skal se.\n }\n if (buffer.length > 0) await send();\n }\n\n return {\n emit(event) {\n buffer.push(tilLedning(event));\n if (buffer.length >= maks || STRAKS.has(event.name) || ventetid === 0) {\n void send();\n return;\n }\n timer ??= setTimeout(() => void send(), ventetid);\n },\n flush: send,\n };\n}\n\n/** Kjernens hendelse → kontraktens. Bare feltene hendelsen har; alt annet ville gitt 400. */\nfunction tilLedning(event: TelemetryEvent): TelemetryEventDto {\n const at = new Date().toISOString();\n switch (event.name) {\n case 'track_selected':\n return { name: event.name, at, type: event.type };\n case 'known_issue_shown':\n return { name: event.name, at, count: Math.max(0, Math.min(3, event.count)) };\n case 'submission_sent':\n return { name: event.name, at, type: event.type, hasAttachment: event.hasAttachment, offlineQueued: event.offlineQueued };\n case 'submission_failed':\n return { name: event.name, at, reason: aarsak(event.reason) };\n case 'task_completed':\n return { name: event.name, at, outcome: event.outcome as TelemetryEventDto['outcome'] };\n default:\n return { name: event.name, at };\n }\n}\n\n/**\n * Kjernens årsak → kontraktens lukkede liste. Kjernen sender feilkoden fra plattformen\n * ('rate_limited', 'feedback_token_expired', 'text_too_long' …) eller en nettverksfeil;\n * feilmeldingen selv sendes aldri.\n */\nfunction aarsak(reason: string): NonNullable<TelemetryEventDto['reason']> {\n const r = reason.toLowerCase();\n if (r.includes('network') || r.includes('offline') || r.includes('fetch')) return 'network';\n if (r.includes('rate') || r.includes('429')) return 'rate_limited';\n if (r.includes('unauth') || r.includes('token') || r.includes('401')) return 'unauthorized';\n if (r.includes('valid') || r.includes('text_') || r.includes('field') || r.includes('correlation') || r.includes('attachment') || r.includes('screenshot')) return 'validation';\n if (r.includes('server') || r.includes('internal') || r.includes('50')) return 'server';\n return 'unknown';\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/generated/api/core/bodySerializer.gen.ts","../src/generated/api/core/serverSentEvents.gen.ts","../src/generated/api/core/pathSerializer.gen.ts","../src/generated/api/core/utils.gen.ts","../src/generated/api/core/auth.gen.ts","../src/generated/api/client/utils.gen.ts","../src/generated/api/client/client.gen.ts","../src/generated/api/client.gen.ts","../src/generated/api/sdk.gen.ts","../src/versjon.ts","../src/telemetri.ts"],"names":["joinedValues","config","request","url"],"mappings":";;;AA2DO,IAAM,kBAAA,GAAqB;AAAA,EAChC,cAAA,EAAgB,CAAC,IAAA,KACf,IAAA,CAAK,UAAU,IAAA,EAAM,CAAC,IAAA,EAAM,KAAA,KAAW,OAAO,KAAA,KAAU,QAAA,GAAW,KAAA,CAAM,QAAA,KAAa,KAAM;AAChG,CAAA;;;ACmBO,SAAS,eAAA,CAAiC;AAAA,EAC/C,SAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,mBAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA,mBAAA;AAAA,EACA,gBAAA;AAAA,EACA,UAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA2D;AACzD,EAAA,IAAI,WAAA;AAEJ,EAAA,MAAM,KAAA,GAAQ,UAAA,KAAe,CAAC,EAAA,KAAe,IAAI,OAAA,CAAQ,CAAC,OAAA,KAAY,UAAA,CAAW,OAAA,EAAS,EAAE,CAAC,CAAA,CAAA;AAE7F,EAAA,MAAM,eAAe,mBAAmB;AACtC,IAAA,IAAI,aAAqB,oBAAA,IAAwB,GAAA;AACjD,IAAA,IAAI,OAAA,GAAU,CAAA;AACd,IAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,MAAA,IAAU,IAAI,iBAAgB,CAAE,MAAA;AAEvD,IAAA,OAAO,IAAA,EAAM;AACX,MAAA,IAAI,OAAO,OAAA,EAAS;AAEpB,MAAA,OAAA,EAAA;AAEA,MAAA,MAAM,OAAA,GACJ,QAAQ,OAAA,YAAmB,OAAA,GACvB,QAAQ,OAAA,GACR,IAAI,OAAA,CAAQ,OAAA,CAAQ,OAA6C,CAAA;AAEvE,MAAA,IAAI,gBAAgB,MAAA,EAAW;AAC7B,QAAA,OAAA,CAAQ,GAAA,CAAI,iBAAiB,WAAW,CAAA;AAAA,MAC1C;AAEA,MAAA,IAAI;AACF,QAAA,MAAM,WAAA,GAA2B;AAAA,UAC/B,QAAA,EAAU,QAAA;AAAA,UACV,GAAG,OAAA;AAAA,UACH,MAAM,OAAA,CAAQ,cAAA;AAAA,UACd,OAAA;AAAA,UACA;AAAA,SACF;AACA,QAAA,IAAI,OAAA,GAAU,IAAI,OAAA,CAAQ,GAAA,EAAK,WAAW,CAAA;AAC1C,QAAA,IAAI,SAAA,EAAW;AACb,UAAA,OAAA,GAAU,MAAM,SAAA,CAAU,GAAA,EAAK,WAAW,CAAA;AAAA,QAC5C;AAGA,QAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,KAAA,IAAS,UAAA,CAAW,KAAA;AAC3C,QAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,OAAO,CAAA;AAErC,QAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,MAAM,IAAI,KAAA,CAAM,CAAA,YAAA,EAAe,QAAA,CAAS,MAAM,CAAA,CAAA,EAAI,QAAA,CAAS,UAAU,CAAA,CAAE,CAAA;AAEzF,QAAA,IAAI,CAAC,QAAA,CAAS,IAAA,EAAM,MAAM,IAAI,MAAM,yBAAyB,CAAA;AAE7D,QAAA,MAAM,MAAA,GAAS,SAAS,IAAA,CAAK,WAAA,CAAY,IAAI,iBAAA,EAAmB,EAAE,SAAA,EAAU;AAE5E,QAAA,IAAI,MAAA,GAAS,EAAA;AAEb,QAAA,MAAM,eAAe,MAAM;AACzB,UAAA,IAAI;AACF,YAAA,MAAA,CAAO,MAAA,EAAO;AAAA,UAChB,CAAA,CAAA,MAAQ;AAAA,UAER;AAAA,QACF,CAAA;AAEA,QAAA,MAAA,CAAO,gBAAA,CAAiB,SAAS,YAAY,CAAA;AAE7C,QAAA,IAAI;AACF,UAAA,OAAO,IAAA,EAAM;AACX,YAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI,MAAM,OAAO,IAAA,EAAK;AAC1C,YAAA,IAAI,IAAA,EAAM;AACV,YAAA,MAAA,IAAU,KAAA;AACV,YAAA,MAAA,GAAS,MAAA,CAAO,OAAA,CAAQ,QAAA,EAAU,IAAI,CAAA;AAEtC,YAAA,MAAM,MAAA,GAAS,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA;AAClC,YAAA,MAAA,GAAS,MAAA,CAAO,KAAI,IAAK,EAAA;AAEzB,YAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,cAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,KAAA,CAAM,IAAI,CAAA;AAC9B,cAAA,MAAM,YAA2B,EAAC;AAClC,cAAA,IAAI,SAAA;AAEJ,cAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,gBAAA,IAAI,IAAA,CAAK,UAAA,CAAW,OAAO,CAAA,EAAG;AAC5B,kBAAA,SAAA,CAAU,IAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,WAAA,EAAa,EAAE,CAAC,CAAA;AAAA,gBAC9C,CAAA,MAAA,IAAW,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAA,EAAG;AACpC,kBAAA,SAAA,GAAY,IAAA,CAAK,OAAA,CAAQ,YAAA,EAAc,EAAE,CAAA;AAAA,gBAC3C,CAAA,MAAA,IAAW,IAAA,CAAK,UAAA,CAAW,KAAK,CAAA,EAAG;AACjC,kBAAA,WAAA,GAAc,IAAA,CAAK,OAAA,CAAQ,SAAA,EAAW,EAAE,CAAA;AAAA,gBAC1C,CAAA,MAAA,IAAW,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAA,EAAG;AACpC,kBAAA,MAAM,MAAA,GAAS,OAAO,QAAA,CAAS,IAAA,CAAK,QAAQ,YAAA,EAAc,EAAE,GAAG,EAAE,CAAA;AACjE,kBAAA,IAAI,CAAC,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA,EAAG;AACzB,oBAAA,UAAA,GAAa,MAAA;AAAA,kBACf;AAAA,gBACF;AAAA,cACF;AAEA,cAAA,IAAI,IAAA;AACJ,cAAA,IAAI,UAAA,GAAa,KAAA;AAEjB,cAAA,IAAI,UAAU,MAAA,EAAQ;AACpB,gBAAA,MAAM,OAAA,GAAU,SAAA,CAAU,IAAA,CAAK,IAAI,CAAA;AACnC,gBAAA,IAAI;AACF,kBAAA,IAAA,GAAO,IAAA,CAAK,MAAM,OAAO,CAAA;AACzB,kBAAA,UAAA,GAAa,IAAA;AAAA,gBACf,CAAA,CAAA,MAAQ;AACN,kBAAA,IAAA,GAAO,OAAA;AAAA,gBACT;AAAA,cACF;AAEA,cAAA,IAAI,UAAA,EAAY;AACd,gBAAA,IAAI,iBAAA,EAAmB;AACrB,kBAAA,MAAM,kBAAkB,IAAI,CAAA;AAAA,gBAC9B;AAEA,gBAAA,IAAI,mBAAA,EAAqB;AACvB,kBAAA,IAAA,GAAO,MAAM,oBAAoB,IAAI,CAAA;AAAA,gBACvC;AAAA,cACF;AAEA,cAAA,UAAA,GAAa;AAAA,gBACX,IAAA;AAAA,gBACA,KAAA,EAAO,SAAA;AAAA,gBACP,EAAA,EAAI,WAAA;AAAA,gBACJ,KAAA,EAAO;AAAA,eACR,CAAA;AAED,cAAA,IAAI,UAAU,MAAA,EAAQ;AACpB,gBAAA,MAAM,IAAA;AAAA,cACR;AAAA,YACF;AAAA,UACF;AAAA,QACF,CAAA,SAAE;AACA,UAAA,MAAA,CAAO,mBAAA,CAAoB,SAAS,YAAY,CAAA;AAChD,UAAA,MAAA,CAAO,WAAA,EAAY;AAAA,QACrB;AAEA,QAAA;AAAA,MACF,SAAS,KAAA,EAAO;AAEd,QAAA,UAAA,GAAa,KAAK,CAAA;AAElB,QAAA,IAAI,mBAAA,KAAwB,MAAA,IAAa,OAAA,IAAW,mBAAA,EAAqB;AACvE,UAAA;AAAA,QACF;AAGA,QAAA,MAAM,OAAA,GAAU,KAAK,GAAA,CAAI,UAAA,GAAa,MAAM,OAAA,GAAU,CAAA,CAAA,EAAI,oBAAoB,GAAK,CAAA;AACnF,QAAA,MAAM,MAAM,OAAO,CAAA;AAAA,MACrB;AAAA,IACF;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,SAAS,YAAA,EAAa;AAE5B,EAAA,OAAO,EAAE,MAAA,EAAO;AAClB;;;ACtNO,IAAM,qBAAA,GAAwB,CAAC,KAAA,KAAsD;AAC1F,EAAA,QAAQ,KAAA;AAAO,IACb,KAAK,OAAA;AACH,MAAA,OAAO,GAAA;AAAA,IACT,KAAK,QAAA;AACH,MAAA,OAAO,GAAA;AAAA,IACT,KAAK,QAAA;AACH,MAAA,OAAO,GAAA;AAAA,IACT;AACE,MAAA,OAAO,GAAA;AAAA;AAEb,CAAA;AAEO,IAAM,uBAAA,GAA0B,CAAC,KAAA,KAAkD;AACxF,EAAA,QAAQ,KAAA;AAAO,IACb,KAAK,MAAA;AACH,MAAA,OAAO,GAAA;AAAA,IACT,KAAK,eAAA;AACH,MAAA,OAAO,GAAA;AAAA,IACT,KAAK,gBAAA;AACH,MAAA,OAAO,KAAA;AAAA,IACT;AACE,MAAA,OAAO,GAAA;AAAA;AAEb,CAAA;AAEO,IAAM,sBAAA,GAAyB,CAAC,KAAA,KAAuD;AAC5F,EAAA,QAAQ,KAAA;AAAO,IACb,KAAK,OAAA;AACH,MAAA,OAAO,GAAA;AAAA,IACT,KAAK,QAAA;AACH,MAAA,OAAO,GAAA;AAAA,IACT,KAAK,QAAA;AACH,MAAA,OAAO,GAAA;AAAA,IACT;AACE,MAAA,OAAO,GAAA;AAAA;AAEb,CAAA;AAEO,IAAM,sBAAsB,CAAC;AAAA,EAClC,aAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,KAEc;AACZ,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAMA,aAAAA,GAAAA,CACJ,aAAA,GAAgB,KAAA,GAAQ,KAAA,CAAM,IAAI,CAAC,CAAA,KAAM,kBAAA,CAAmB,CAAW,CAAC,CAAA,EACxE,IAAA,CAAK,uBAAA,CAAwB,KAAK,CAAC,CAAA;AACrC,IAAA,QAAQ,KAAA;AAAO,MACb,KAAK,OAAA;AACH,QAAA,OAAO,IAAIA,aAAY,CAAA,CAAA;AAAA,MACzB,KAAK,QAAA;AACH,QAAA,OAAO,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAAIA,aAAY,CAAA,CAAA;AAAA,MACjC,KAAK,QAAA;AACH,QAAA,OAAOA,aAAAA;AAAA,MACT;AACE,QAAA,OAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAIA,aAAY,CAAA,CAAA;AAAA;AAClC,EACF;AAEA,EAAA,MAAM,SAAA,GAAY,sBAAsB,KAAK,CAAA;AAC7C,EAAA,MAAM,YAAA,GAAe,KAAA,CAClB,GAAA,CAAI,CAAC,CAAA,KAAM;AACV,IAAA,IAAI,KAAA,KAAU,OAAA,IAAW,KAAA,KAAU,QAAA,EAAU;AAC3C,MAAA,OAAO,aAAA,GAAgB,CAAA,GAAI,kBAAA,CAAmB,CAAW,CAAA;AAAA,IAC3D;AAEA,IAAA,OAAO,uBAAA,CAAwB;AAAA,MAC7B,aAAA;AAAA,MACA,IAAA;AAAA,MACA,KAAA,EAAO;AAAA,KACR,CAAA;AAAA,EACH,CAAC,CAAA,CACA,IAAA,CAAK,SAAS,CAAA;AACjB,EAAA,OAAO,KAAA,KAAU,OAAA,IAAW,KAAA,KAAU,QAAA,GAAW,YAAY,YAAA,GAAe,YAAA;AAC9E,CAAA;AAEO,IAAM,0BAA0B,CAAC;AAAA,EACtC,aAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA,KAAuC;AACrC,EAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM;AACzC,IAAA,OAAO,EAAA;AAAA,EACT;AAEA,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AAEA,EAAA,OAAO,GAAG,IAAI,CAAA,CAAA,EAAI,gBAAgB,KAAA,GAAQ,kBAAA,CAAmB,KAAK,CAAC,CAAA,CAAA;AACrE,CAAA;AAEO,IAAM,uBAAuB,CAAC;AAAA,EACnC,aAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,KAGc;AACZ,EAAA,IAAI,iBAAiB,IAAA,EAAM;AACzB,IAAA,OAAO,SAAA,GAAY,MAAM,WAAA,EAAY,GAAI,GAAG,IAAI,CAAA,CAAA,EAAI,KAAA,CAAM,WAAA,EAAa,CAAA,CAAA;AAAA,EACzE;AAEA,EAAA,IAAI,KAAA,KAAU,YAAA,IAAgB,CAAC,OAAA,EAAS;AACtC,IAAA,IAAI,SAAmB,EAAC;AACxB,IAAA,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,GAAA,EAAK,CAAC,CAAA,KAAM;AAC1C,MAAA,MAAA,GAAS,CAAC,GAAG,MAAA,EAAQ,GAAA,EAAK,gBAAiB,CAAA,GAAe,kBAAA,CAAmB,CAAW,CAAC,CAAA;AAAA,IAC3F,CAAC,CAAA;AACD,IAAA,MAAMA,aAAAA,GAAe,MAAA,CAAO,IAAA,CAAK,GAAG,CAAA;AACpC,IAAA,QAAQ,KAAA;AAAO,MACb,KAAK,MAAA;AACH,QAAA,OAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAIA,aAAY,CAAA,CAAA;AAAA,MAChC,KAAK,OAAA;AACH,QAAA,OAAO,IAAIA,aAAY,CAAA,CAAA;AAAA,MACzB,KAAK,QAAA;AACH,QAAA,OAAO,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAAIA,aAAY,CAAA,CAAA;AAAA,MACjC;AACE,QAAA,OAAOA,aAAAA;AAAA;AACX,EACF;AAEA,EAAA,MAAM,SAAA,GAAY,uBAAuB,KAAK,CAAA;AAC9C,EAAA,MAAM,YAAA,GAAe,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA,CACtC,GAAA;AAAA,IAAI,CAAC,CAAC,GAAA,EAAK,CAAC,MACX,uBAAA,CAAwB;AAAA,MACtB,aAAA;AAAA,MACA,MAAM,KAAA,KAAU,YAAA,GAAe,GAAG,IAAI,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,CAAA,GAAM,GAAA;AAAA,MACnD,KAAA,EAAO;AAAA,KACR;AAAA,GACH,CACC,KAAK,SAAS,CAAA;AACjB,EAAA,OAAO,KAAA,KAAU,OAAA,IAAW,KAAA,KAAU,QAAA,GAAW,YAAY,YAAA,GAAe,YAAA;AAC9E,CAAA;;;AC3JO,IAAM,aAAA,GAAwB,aAAA;AAE9B,IAAM,wBAAwB,CAAC,EAAE,IAAA,EAAM,GAAA,EAAK,MAAK,KAA8B;AACpF,EAAA,IAAI,GAAA,GAAM,IAAA;AACV,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,aAAa,CAAA;AACxC,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,KAAA,MAAW,SAAS,OAAA,EAAS;AAC3B,MAAA,IAAI,OAAA,GAAU,KAAA;AACd,MAAA,IAAI,OAAO,KAAA,CAAM,SAAA,CAAU,CAAA,EAAG,KAAA,CAAM,SAAS,CAAC,CAAA;AAC9C,MAAA,IAAI,KAAA,GAA6B,QAAA;AAEjC,MAAA,IAAI,IAAA,CAAK,QAAA,CAAS,GAAG,CAAA,EAAG;AACtB,QAAA,OAAA,GAAU,IAAA;AACV,QAAA,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,CAAA,EAAG,IAAA,CAAK,SAAS,CAAC,CAAA;AAAA,MAC1C;AAEA,MAAA,IAAI,IAAA,CAAK,UAAA,CAAW,GAAG,CAAA,EAAG;AACxB,QAAA,IAAA,GAAO,IAAA,CAAK,UAAU,CAAC,CAAA;AACvB,QAAA,KAAA,GAAQ,OAAA;AAAA,MACV,CAAA,MAAA,IAAW,IAAA,CAAK,UAAA,CAAW,GAAG,CAAA,EAAG;AAC/B,QAAA,IAAA,GAAO,IAAA,CAAK,UAAU,CAAC,CAAA;AACvB,QAAA,KAAA,GAAQ,QAAA;AAAA,MACV;AAEA,MAAA,MAAM,KAAA,GAAQ,KAAK,IAAI,CAAA;AAEvB,MAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM;AACzC,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,QAAA,GAAA,GAAM,GAAA,CAAI,OAAA,CAAQ,KAAA,EAAO,mBAAA,CAAoB,EAAE,SAAS,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,CAAC,CAAA;AAC7E,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,QAAA,GAAA,GAAM,GAAA,CAAI,OAAA;AAAA,UACR,KAAA;AAAA,UACA,oBAAA,CAAqB;AAAA,YACnB,OAAA;AAAA,YACA,IAAA;AAAA,YACA,KAAA;AAAA,YACA,KAAA;AAAA,YACA,SAAA,EAAW;AAAA,WACZ;AAAA,SACH;AACA,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,UAAU,QAAA,EAAU;AACtB,QAAA,GAAA,GAAM,GAAA,CAAI,OAAA;AAAA,UACR,KAAA;AAAA,UACA,IAAI,uBAAA,CAAwB;AAAA,YAC1B,IAAA;AAAA,YACA;AAAA,WACD,CAAC,CAAA;AAAA,SACJ;AACA,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,YAAA,GAAe,kBAAA;AAAA,QACnB,KAAA,KAAU,OAAA,GAAU,CAAA,CAAA,EAAI,KAAe,CAAA,CAAA,GAAM;AAAA,OAC/C;AACA,MAAA,GAAA,GAAM,GAAA,CAAI,OAAA,CAAQ,KAAA,EAAO,YAAY,CAAA;AAAA,IACvC;AAAA,EACF;AACA,EAAA,OAAO,GAAA;AACT,CAAA;AAEO,IAAM,SAAS,CAAC;AAAA,EACrB,OAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,eAAA;AAAA,EACA,GAAA,EAAK;AACP,CAAA,KAMc;AACZ,EAAA,MAAM,UAAU,IAAA,CAAK,UAAA,CAAW,GAAG,CAAA,GAAI,IAAA,GAAO,IAAI,IAAI,CAAA,CAAA;AACtD,EAAA,IAAI,GAAA,GAAA,CAAO,WAAW,EAAA,IAAM,OAAA;AAC5B,EAAA,IAAI,IAAA,EAAM;AACR,IAAA,GAAA,GAAM,qBAAA,CAAsB,EAAE,IAAA,EAAM,GAAA,EAAK,CAAA;AAAA,EAC3C;AACA,EAAA,IAAI,MAAA,GAAS,KAAA,GAAQ,eAAA,CAAgB,KAAK,CAAA,GAAI,EAAA;AAC9C,EAAA,IAAI,MAAA,CAAO,UAAA,CAAW,GAAG,CAAA,EAAG;AAC1B,IAAA,MAAA,GAAS,MAAA,CAAO,UAAU,CAAC,CAAA;AAAA,EAC7B;AACA,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,GAAA,IAAO,IAAI,MAAM,CAAA,CAAA;AAAA,EACnB;AACA,EAAA,OAAO,GAAA;AACT,CAAA;AAEO,SAAS,oBAAoB,OAAA,EAIxB;AACV,EAAA,MAAM,OAAA,GAAU,QAAQ,IAAA,KAAS,MAAA;AACjC,EAAA,MAAM,gBAAA,GAAmB,WAAW,OAAA,CAAQ,cAAA;AAE5C,EAAA,IAAI,gBAAA,EAAkB;AACpB,IAAA,IAAI,oBAAoB,OAAA,EAAS;AAC/B,MAAA,MAAM,iBAAA,GACJ,OAAA,CAAQ,cAAA,KAAmB,MAAA,IAAa,QAAQ,cAAA,KAAmB,EAAA;AAErE,MAAA,OAAO,iBAAA,GAAoB,QAAQ,cAAA,GAAiB,IAAA;AAAA,IACtD;AAGA,IAAA,OAAO,OAAA,CAAQ,IAAA,KAAS,EAAA,GAAK,OAAA,CAAQ,IAAA,GAAO,IAAA;AAAA,EAC9C;AAGA,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,OAAO,OAAA,CAAQ,IAAA;AAAA,EACjB;AAGA,EAAA,OAAO,MAAA;AACT;;;AC/GO,IAAM,YAAA,GAAe,OAC1B,IAAA,EACA,QAAA,KACgC;AAChC,EAAA,MAAM,QAAQ,OAAO,QAAA,KAAa,aAAa,MAAM,QAAA,CAAS,IAAI,CAAA,GAAI,QAAA;AAEtE,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,IAAA,CAAK,WAAW,QAAA,EAAU;AAC5B,IAAA,OAAO,UAAU,KAAK,CAAA,CAAA;AAAA,EACxB;AAEA,EAAA,IAAI,IAAA,CAAK,WAAW,OAAA,EAAS;AAC3B,IAAA,OAAO,CAAA,MAAA,EAAS,IAAA,CAAK,KAAK,CAAC,CAAA,CAAA;AAAA,EAC7B;AAEA,EAAA,OAAO,KAAA;AACT,CAAA;;;AClCO,IAAM,wBAAwB,CAAc;AAAA,EACjD,aAAa,EAAC;AAAA,EACd,GAAG;AACL,CAAA,GAA4B,EAAC,KAAoC;AAC/D,EAAA,MAAM,eAAA,GAAkB,CAAC,WAAA,KAA2B;AAClD,IAAA,MAAM,SAAmB,EAAC;AAC1B,IAAA,IAAI,WAAA,IAAe,OAAO,WAAA,KAAgB,QAAA,EAAU;AAClD,MAAA,KAAA,MAAW,QAAQ,WAAA,EAAa;AAC9B,QAAA,MAAM,KAAA,GAAQ,YAAY,IAAI,CAAA;AAE9B,QAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM;AACzC,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,OAAA,GAAU,UAAA,CAAW,IAAI,CAAA,IAAK,IAAA;AAEpC,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,UAAA,MAAM,kBAAkB,mBAAA,CAAoB;AAAA,YAC1C,eAAe,OAAA,CAAQ,aAAA;AAAA,YACvB,OAAA,EAAS,IAAA;AAAA,YACT,IAAA;AAAA,YACA,KAAA,EAAO,MAAA;AAAA,YACP,KAAA;AAAA,YACA,GAAG,OAAA,CAAQ;AAAA,WACZ,CAAA;AACD,UAAA,IAAI,eAAA,EAAiB,MAAA,CAAO,IAAA,CAAK,eAAe,CAAA;AAAA,QAClD,CAAA,MAAA,IAAW,OAAO,KAAA,KAAU,QAAA,EAAU;AACpC,UAAA,MAAM,mBAAmB,oBAAA,CAAqB;AAAA,YAC5C,eAAe,OAAA,CAAQ,aAAA;AAAA,YACvB,OAAA,EAAS,IAAA;AAAA,YACT,IAAA;AAAA,YACA,KAAA,EAAO,YAAA;AAAA,YACP,KAAA;AAAA,YACA,GAAG,OAAA,CAAQ;AAAA,WACZ,CAAA;AACD,UAAA,IAAI,gBAAA,EAAkB,MAAA,CAAO,IAAA,CAAK,gBAAgB,CAAA;AAAA,QACpD,CAAA,MAAO;AACL,UAAA,MAAM,sBAAsB,uBAAA,CAAwB;AAAA,YAClD,eAAe,OAAA,CAAQ,aAAA;AAAA,YACvB,IAAA;AAAA,YACA;AAAA,WACD,CAAA;AACD,UAAA,IAAI,mBAAA,EAAqB,MAAA,CAAO,IAAA,CAAK,mBAAmB,CAAA;AAAA,QAC1D;AAAA,MACF;AAAA,IACF;AACA,IAAA,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAAA,EACxB,CAAA;AACA,EAAA,OAAO,eAAA;AACT,CAAA;AAKO,IAAM,UAAA,GAAa,CAAC,WAAA,KAAmE;AAC5F,EAAA,IAAI,CAAC,WAAA,EAAa;AAGhB,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,MAAM,eAAe,WAAA,CAAY,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,GAAG,IAAA,EAAK;AAErD,EAAA,IAAI,CAAC,YAAA,EAAc;AACjB,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,aAAa,UAAA,CAAW,kBAAkB,KAAK,YAAA,CAAa,QAAA,CAAS,OAAO,CAAA,EAAG;AACjF,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,IAAI,iBAAiB,qBAAA,EAAuB;AAC1C,IAAA,OAAO,UAAA;AAAA,EACT;AAEA,EAAA,IACE,CAAC,cAAA,EAAgB,QAAA,EAAU,QAAA,EAAU,QAAQ,CAAA,CAAE,IAAA,CAAK,CAAC,IAAA,KAAS,YAAA,CAAa,UAAA,CAAW,IAAI,CAAC,CAAA,EAC3F;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,IAAI,YAAA,CAAa,UAAA,CAAW,OAAO,CAAA,EAAG;AACpC,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA;AACF,CAAA;AAEA,IAAM,iBAAA,GAAoB,CACxB,OAAA,EAGA,IAAA,KACY;AACZ,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IACE,QAAQ,OAAA,CAAQ,GAAA,CAAI,IAAI,CAAA,IACxB,OAAA,CAAQ,QAAQ,IAAI,CAAA,IACpB,OAAA,CAAQ,OAAA,CAAQ,IAAI,QAAQ,CAAA,EAAG,SAAS,CAAA,EAAG,IAAI,GAAG,CAAA,EAClD;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,OAAO,KAAA;AACT,CAAA;AAEA,eAAsB,cACpB,OAAA,EAGe;AACf,EAAA,KAAA,MAAW,IAAA,IAAQ,OAAA,CAAQ,QAAA,IAAY,EAAC,EAAG;AACzC,IAAA,IAAI,iBAAA,CAAkB,OAAA,EAAS,IAAA,CAAK,IAAI,CAAA,EAAG;AACzC,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,KAAA,GAAQ,MAAM,YAAA,CAAa,IAAA,EAAM,QAAQ,IAAI,CAAA;AAEnD,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,IAAA,GAAO,KAAK,IAAA,IAAQ,eAAA;AAE1B,IAAA,QAAQ,KAAK,EAAA;AAAI,MACf,KAAK,OAAA;AACH,QAAA,IAAI,CAAC,QAAQ,KAAA,EAAO;AAClB,UAAA,OAAA,CAAQ,QAAQ,EAAC;AAAA,QACnB;AACA,QAAA,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAA,GAAI,KAAA;AACtB,QAAA;AAAA,MACF,KAAK,QAAA;AACH,QAAA,OAAA,CAAQ,QAAQ,MAAA,CAAO,QAAA,EAAU,GAAG,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,CAAA;AACnD,QAAA;AAAA,MACF,KAAK,QAAA;AAAA,MACL;AACE,QAAA,OAAA,CAAQ,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,KAAK,CAAA;AAC/B,QAAA;AAAA;AACJ,EACF;AACF;AAEO,IAAM,QAAA,GAA+B,CAAC,OAAA,KAC3C,MAAA,CAAO;AAAA,EACL,SAAS,OAAA,CAAQ,OAAA;AAAA,EACjB,MAAM,OAAA,CAAQ,IAAA;AAAA,EACd,OAAO,OAAA,CAAQ,KAAA;AAAA,EACf,eAAA,EACE,OAAO,OAAA,CAAQ,eAAA,KAAoB,aAC/B,OAAA,CAAQ,eAAA,GACR,qBAAA,CAAsB,OAAA,CAAQ,eAAe,CAAA;AAAA,EACnD,KAAK,OAAA,CAAQ;AACf,CAAC,CAAA;AAEI,IAAM,YAAA,GAAe,CAAC,CAAA,EAAW,CAAA,KAAsB;AAC5D,EAAA,MAAM,MAAA,GAAS,EAAE,GAAG,CAAA,EAAG,GAAG,CAAA,EAAE;AAC5B,EAAA,IAAI,MAAA,CAAO,OAAA,EAAS,QAAA,CAAS,GAAG,CAAA,EAAG;AACjC,IAAA,MAAA,CAAO,OAAA,GAAU,OAAO,OAAA,CAAQ,SAAA,CAAU,GAAG,MAAA,CAAO,OAAA,CAAQ,SAAS,CAAC,CAAA;AAAA,EACxE;AACA,EAAA,MAAA,CAAO,OAAA,GAAU,YAAA,CAAa,CAAA,CAAE,OAAA,EAAS,EAAE,OAAO,CAAA;AAClD,EAAA,OAAO,MAAA;AACT,CAAA;AAEA,IAAM,cAAA,GAAiB,CAAC,OAAA,KAA8C;AACpE,EAAA,MAAM,UAAmC,EAAC;AAC1C,EAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,KAAA,EAAO,GAAA,KAAQ;AAC9B,IAAA,OAAA,CAAQ,IAAA,CAAK,CAAC,GAAA,EAAK,KAAK,CAAC,CAAA;AAAA,EAC3B,CAAC,CAAA;AACD,EAAA,OAAO,OAAA;AACT,CAAA;AAEO,IAAM,YAAA,GAAe,IACvB,OAAA,KACS;AACZ,EAAA,MAAM,aAAA,GAAgB,IAAI,OAAA,EAAQ;AAClC,EAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,QAAA,GAAW,kBAAkB,OAAA,GAAU,cAAA,CAAe,MAAM,CAAA,GAAI,MAAA,CAAO,QAAQ,MAAM,CAAA;AAE3F,IAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,CAAA,IAAK,QAAA,EAAU;AACnC,MAAA,IAAI,UAAU,IAAA,EAAM;AAClB,QAAA,aAAA,CAAc,OAAO,GAAG,CAAA;AAAA,MAC1B,CAAA,MAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AAC/B,QAAA,KAAA,MAAW,KAAK,KAAA,EAAO;AACrB,UAAA,aAAA,CAAc,MAAA,CAAO,KAAK,CAAW,CAAA;AAAA,QACvC;AAAA,MACF,CAAA,MAAA,IAAW,UAAU,MAAA,EAAW;AAG9B,QAAA,aAAA,CAAc,GAAA;AAAA,UACZ,GAAA;AAAA,UACA,OAAO,KAAA,KAAU,QAAA,GAAW,IAAA,CAAK,SAAA,CAAU,KAAK,CAAA,GAAK;AAAA,SACvD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,EAAA,OAAO,aAAA;AACT,CAAA;AAmBA,IAAM,eAAN,MAAgC;AAAA,EAC9B,MAAiC,EAAC;AAAA,EAElC,KAAA,GAAc;AACZ,IAAA,IAAA,CAAK,MAAM,EAAC;AAAA,EACd;AAAA,EAEA,MAAM,EAAA,EAAgC;AACpC,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,mBAAA,CAAoB,EAAE,CAAA;AACzC,IAAA,IAAI,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,EAAG;AACnB,MAAA,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,GAAI,IAAA;AAAA,IACpB;AAAA,EACF;AAAA,EAEA,OAAO,EAAA,EAAmC;AACxC,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,mBAAA,CAAoB,EAAE,CAAA;AACzC,IAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,GAAA,CAAI,KAAK,CAAC,CAAA;AAAA,EAChC;AAAA,EAEA,oBAAoB,EAAA,EAAkC;AACpD,IAAA,IAAI,OAAO,OAAO,QAAA,EAAU;AAC1B,MAAA,OAAO,IAAA,CAAK,GAAA,CAAI,EAAE,CAAA,GAAI,EAAA,GAAK,EAAA;AAAA,IAC7B;AACA,IAAA,OAAO,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,EAAE,CAAA;AAAA,EAC5B;AAAA,EAEA,MAAA,CAAO,IAA0B,EAAA,EAA+C;AAC9E,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,mBAAA,CAAoB,EAAE,CAAA;AACzC,IAAA,IAAI,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,EAAG;AACnB,MAAA,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,GAAI,EAAA;AAClB,MAAA,OAAO,EAAA;AAAA,IACT;AACA,IAAA,OAAO,KAAA;AAAA,EACT;AAAA,EAEA,IAAI,EAAA,EAAyB;AAC3B,IAAA,IAAA,CAAK,GAAA,CAAI,KAAK,EAAE,CAAA;AAChB,IAAA,OAAO,IAAA,CAAK,IAAI,MAAA,GAAS,CAAA;AAAA,EAC3B;AACF,CAAA;AAQO,IAAM,qBAAqB,OAK5B;AAAA,EACJ,KAAA,EAAO,IAAI,YAAA,EAAqD;AAAA,EAChE,OAAA,EAAS,IAAI,YAAA,EAA2C;AAAA,EACxD,QAAA,EAAU,IAAI,YAAA;AAChB,CAAA,CAAA;AAEA,IAAM,yBAAyB,qBAAA,CAAsB;AAAA,EACnD,aAAA,EAAe,KAAA;AAAA,EACf,KAAA,EAAO;AAAA,IACL,OAAA,EAAS,IAAA;AAAA,IACT,KAAA,EAAO;AAAA,GACT;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,OAAA,EAAS,IAAA;AAAA,IACT,KAAA,EAAO;AAAA;AAEX,CAAC,CAAA;AAED,IAAM,cAAA,GAAiB;AAAA,EACrB,cAAA,EAAgB;AAClB,CAAA;AAEO,IAAM,YAAA,GAAe,CAC1B,QAAA,GAAqD,EAAC,MACR;AAAA,EAC9C,GAAG,kBAAA;AAAA,EACH,OAAA,EAAS,cAAA;AAAA,EACT,OAAA,EAAS,MAAA;AAAA,EACT,eAAA,EAAiB,sBAAA;AAAA,EACjB,GAAG;AACL,CAAA,CAAA;;;ACtSO,IAAM,YAAA,GAAe,CAAC,MAAA,GAAiB,EAAC,KAAc;AAC3D,EAAA,IAAI,OAAA,GAAU,YAAA,CAAa,YAAA,EAAa,EAAG,MAAM,CAAA;AAEjD,EAAA,MAAM,SAAA,GAAY,OAAe,EAAE,GAAG,OAAA,EAAQ,CAAA;AAE9C,EAAA,MAAM,SAAA,GAAY,CAACC,OAAAA,KAA2B;AAC5C,IAAA,OAAA,GAAU,YAAA,CAAa,SAASA,OAAM,CAAA;AACtC,IAAA,OAAO,SAAA,EAAU;AAAA,EACnB,CAAA;AAEA,EAAA,MAAM,eAAe,kBAAA,EAAuE;AAE5F,EAAA,MAAM,aAAA,GAAgB,OAMpB,OAAA,KACG;AACH,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,GAAG,OAAA;AAAA,MACH,GAAG,OAAA;AAAA,MACH,KAAA,EAAO,OAAA,CAAQ,KAAA,IAAS,OAAA,CAAQ,SAAS,UAAA,CAAW,KAAA;AAAA,MACpD,OAAA,EAAS,YAAA,CAAa,OAAA,CAAQ,OAAA,EAAS,QAAQ,OAAO,CAAA;AAAA,MACtD,cAAA,EAAgB;AAAA,KAClB;AAEA,IAAA,IAAI,KAAK,QAAA,EAAU;AACjB,MAAA,MAAM,cAAc,IAAI,CAAA;AAAA,IAC1B;AAEA,IAAA,IAAI,KAAK,gBAAA,EAAkB;AACzB,MAAA,MAAM,IAAA,CAAK,iBAAiB,IAAI,CAAA;AAAA,IAClC;AAEA,IAAA,IAAI,IAAA,CAAK,IAAA,KAAS,MAAA,IAAa,IAAA,CAAK,cAAA,EAAgB;AAClD,MAAA,IAAA,CAAK,cAAA,GAAiB,IAAA,CAAK,cAAA,CAAe,IAAA,CAAK,IAAI,CAAA;AAAA,IACrD;AAGA,IAAA,IAAI,IAAA,CAAK,IAAA,KAAS,MAAA,IAAa,IAAA,CAAK,mBAAmB,EAAA,EAAI;AACzD,MAAA,IAAA,CAAK,OAAA,CAAQ,OAAO,cAAc,CAAA;AAAA,IACpC;AAEA,IAAA,MAAM,YAAA,GAAe,IAAA;AAErB,IAAA,MAAM,GAAA,GAAM,SAAS,YAAY,CAAA;AAEjC,IAAA,OAAO,EAAE,IAAA,EAAM,YAAA,EAAc,GAAA,EAAI;AAAA,EACnC,CAAA;AAEA,EAAA,MAAM,OAAA,GAA6B,OAAO,OAAA,KAAY;AACpD,IAAA,MAAM,YAAA,GAAe,OAAA,CAAQ,YAAA,IAAgB,OAAA,CAAQ,YAAA;AACrD,IAAA,MAAM,aAAA,GAAgB,OAAA,CAAQ,aAAA,IAAiB,OAAA,CAAQ,aAAA;AAEvD,IAAA,IAAIC,QAAAA;AACJ,IAAA,IAAI,QAAA;AAEJ,IAAA,IAAI;AACF,MAAA,MAAM,EAAE,IAAA,EAAM,GAAA,EAAI,GAAI,MAAM,cAAc,OAAO,CAAA;AACjD,MAAA,MAAM,WAAA,GAAuB;AAAA,QAC3B,QAAA,EAAU,QAAA;AAAA,QACV,GAAG,IAAA;AAAA,QACH,IAAA,EAAM,oBAAoB,IAAI;AAAA,OAChC;AAEA,MAAAA,QAAAA,GAAU,IAAI,OAAA,CAAQ,GAAA,EAAK,WAAW,CAAA;AAEtC,MAAA,KAAA,MAAW,EAAA,IAAM,YAAA,CAAa,OAAA,CAAQ,GAAA,EAAK;AACzC,QAAA,IAAI,EAAA,EAAI;AACN,UAAAA,QAAAA,GAAU,MAAM,EAAA,CAAGA,QAAAA,EAAS,IAAI,CAAA;AAAA,QAClC;AAAA,MACF;AAIA,MAAA,MAAM,SAAS,IAAA,CAAK,KAAA;AAEpB,MAAA,QAAA,GAAW,MAAM,OAAOA,QAAO,CAAA;AAE/B,MAAA,KAAA,MAAW,EAAA,IAAM,YAAA,CAAa,QAAA,CAAS,GAAA,EAAK;AAC1C,QAAA,IAAI,EAAA,EAAI;AACN,UAAA,QAAA,GAAW,MAAM,EAAA,CAAG,QAAA,EAAUA,QAAAA,EAAS,IAAI,CAAA;AAAA,QAC7C;AAAA,MACF;AAEA,MAAA,MAAM,MAAA,GAAS;AAAA,QACb,OAAA,EAAAA,QAAAA;AAAA,QACA;AAAA,OACF;AAEA,MAAA,IAAI,SAAS,EAAA,EAAI;AACf,QAAA,MAAM,OAAA,GAAA,CACH,IAAA,CAAK,OAAA,KAAY,MAAA,GACd,UAAA,CAAW,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,cAAc,CAAC,CAAA,GAC/C,IAAA,CAAK,OAAA,KAAY,MAAA;AAEvB,QAAA,IAAI,QAAA,CAAS,WAAW,GAAA,IAAO,QAAA,CAAS,QAAQ,GAAA,CAAI,gBAAgB,MAAM,GAAA,EAAK;AAC7E,UAAA,IAAI,SAAA;AACJ,UAAA,QAAQ,OAAA;AAAS,YACf,KAAK,aAAA;AAAA,YACL,KAAK,MAAA;AAAA,YACL,KAAK,MAAA;AACH,cAAA,SAAA,GAAY,MAAM,QAAA,CAAS,OAAO,CAAA,EAAE;AACpC,cAAA;AAAA,YACF,KAAK,UAAA;AACH,cAAA,SAAA,GAAY,IAAI,QAAA,EAAS;AACzB,cAAA;AAAA,YACF,KAAK,QAAA;AACH,cAAA,SAAA,GAAY,QAAA,CAAS,IAAA;AACrB,cAAA;AAAA,YACF,KAAK,MAAA;AAAA,YACL;AACE,cAAA,SAAA,GAAY,EAAC;AACb,cAAA;AAAA;AAEJ,UAAA,OAAO,IAAA,CAAK,aAAA,KAAkB,MAAA,GAC1B,SAAA,GACA;AAAA,YACE,IAAA,EAAM,SAAA;AAAA,YACN,GAAG;AAAA,WACL;AAAA,QACN;AAEA,QAAA,IAAI,IAAA;AACJ,QAAA,QAAQ,OAAA;AAAS,UACf,KAAK,aAAA;AAAA,UACL,KAAK,MAAA;AAAA,UACL,KAAK,UAAA;AAAA,UACL,KAAK,MAAA;AACH,YAAA,IAAA,GAAO,MAAM,QAAA,CAAS,OAAO,CAAA,EAAE;AAC/B,YAAA;AAAA,UACF,KAAK,MAAA,EAAQ;AAGX,YAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AACjC,YAAA,IAAA,GAAO,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,IAAI,IAAI,EAAC;AAClC,YAAA;AAAA,UACF;AAAA,UACA,KAAK,QAAA;AACH,YAAA,OAAO,IAAA,CAAK,aAAA,KAAkB,MAAA,GAC1B,QAAA,CAAS,IAAA,GACT;AAAA,cACE,MAAM,QAAA,CAAS,IAAA;AAAA,cACf,GAAG;AAAA,aACL;AAAA;AAGR,QAAA,IAAI,YAAY,MAAA,EAAQ;AACtB,UAAA,IAAI,KAAK,iBAAA,EAAmB;AAC1B,YAAA,MAAM,IAAA,CAAK,kBAAkB,IAAI,CAAA;AAAA,UACnC;AAEA,UAAA,IAAI,KAAK,mBAAA,EAAqB;AAC5B,YAAA,IAAA,GAAO,MAAM,IAAA,CAAK,mBAAA,CAAoB,IAAI,CAAA;AAAA,UAC5C;AAAA,QACF;AAEA,QAAA,OAAO,IAAA,CAAK,aAAA,KAAkB,MAAA,GAC1B,IAAA,GACA;AAAA,UACE,IAAA;AAAA,UACA,GAAG;AAAA,SACL;AAAA,MACN;AAEA,MAAA,MAAM,SAAA,GAAY,MAAM,QAAA,CAAS,IAAA,EAAK;AACtC,MAAA,IAAI,SAAA;AAEJ,MAAA,IAAI;AACF,QAAA,SAAA,GAAY,IAAA,CAAK,MAAM,SAAS,CAAA;AAAA,MAClC,CAAA,CAAA,MAAQ;AAAA,MAER;AAEA,MAAA,MAAM,SAAA,IAAa,SAAA;AAAA,IACrB,SAAS,KAAA,EAAO;AACd,MAAA,IAAI,UAAA,GAAa,KAAA;AAEjB,MAAA,KAAA,MAAW,EAAA,IAAM,YAAA,CAAa,KAAA,CAAM,GAAA,EAAK;AACvC,QAAA,IAAI,EAAA,EAAI;AACN,UAAA,UAAA,GAAa,MAAM,EAAA,CAAG,UAAA,EAAY,QAAA,EAAUA,UAAS,OAAiC,CAAA;AAAA,QACxF;AAAA,MACF;AAEA,MAAA,UAAA,GAAa,cAAc,EAAC;AAE5B,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,MAAM,UAAA;AAAA,MACR;AAGA,MAAA,OAAO,aAAA,KAAkB,SACrB,MAAA,GACA;AAAA,QACE,KAAA,EAAO,UAAA;AAAA,QACP,OAAA,EAAAA,QAAAA;AAAA,QACA;AAAA,OACF;AAAA,IACN;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,YAAA,GAAe,CAAC,MAAA,KAAkC,CAAC,OAAA,KACvD,QAAQ,EAAE,GAAG,OAAA,EAAS,MAAA,EAAQ,CAAA;AAEhC,EAAA,MAAM,SAAA,GAAY,CAAC,MAAA,KAAkC,OAAO,OAAA,KAA4B;AACtF,IAAA,MAAM,EAAE,IAAA,EAAM,GAAA,EAAI,GAAI,MAAM,cAAc,OAAO,CAAA;AACjD,IAAA,OAAO,eAAA,CAAgB;AAAA,MACrB,GAAG,IAAA;AAAA,MACH,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,MAAA;AAAA,MACA,SAAA,EAAW,OAAOC,IAAAA,EAAK,IAAA,KAAS;AAC9B,QAAA,IAAID,QAAAA,GAAU,IAAI,OAAA,CAAQC,IAAAA,EAAK,IAAI,CAAA;AACnC,QAAA,KAAA,MAAW,EAAA,IAAM,YAAA,CAAa,OAAA,CAAQ,GAAA,EAAK;AACzC,UAAA,IAAI,EAAA,EAAI;AACN,YAAAD,QAAAA,GAAU,MAAM,EAAA,CAAGA,QAAAA,EAAS,IAAI,CAAA;AAAA,UAClC;AAAA,QACF;AACA,QAAA,OAAOA,QAAAA;AAAA,MACT,CAAA;AAAA,MACA,cAAA,EAAgB,oBAAoB,IAAI,CAAA;AAAA,MACxC;AAAA,KACD,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,SAAA,GAAgC,CAAC,OAAA,KAAY,QAAA,CAAS,EAAE,GAAG,OAAA,EAAS,GAAG,OAAA,EAAS,CAAA;AAEtF,EAAA,OAAO;AAAA,IACL,QAAA,EAAU,SAAA;AAAA,IACV,OAAA,EAAS,aAAa,SAAS,CAAA;AAAA,IAC/B,MAAA,EAAQ,aAAa,QAAQ,CAAA;AAAA,IAC7B,GAAA,EAAK,aAAa,KAAK,CAAA;AAAA,IACvB,SAAA;AAAA,IACA,IAAA,EAAM,aAAa,MAAM,CAAA;AAAA,IACzB,YAAA;AAAA,IACA,OAAA,EAAS,aAAa,SAAS,CAAA;AAAA,IAC/B,KAAA,EAAO,aAAa,OAAO,CAAA;AAAA,IAC3B,IAAA,EAAM,aAAa,MAAM,CAAA;AAAA,IACzB,GAAA,EAAK,aAAa,KAAK,CAAA;AAAA,IACvB,OAAA;AAAA,IACA,SAAA;AAAA,IACA,GAAA,EAAK;AAAA,MACH,OAAA,EAAS,UAAU,SAAS,CAAA;AAAA,MAC5B,MAAA,EAAQ,UAAU,QAAQ,CAAA;AAAA,MAC1B,GAAA,EAAK,UAAU,KAAK,CAAA;AAAA,MACpB,IAAA,EAAM,UAAU,MAAM,CAAA;AAAA,MACtB,OAAA,EAAS,UAAU,SAAS,CAAA;AAAA,MAC5B,KAAA,EAAO,UAAU,OAAO,CAAA;AAAA,MACxB,IAAA,EAAM,UAAU,MAAM,CAAA;AAAA,MACtB,GAAA,EAAK,UAAU,KAAK,CAAA;AAAA,MACpB,KAAA,EAAO,UAAU,OAAO;AAAA,KAC1B;AAAA,IACA,KAAA,EAAO,aAAa,OAAO;AAAA,GAC7B;AACF,CAAA;;;ACrQO,IAAM,MAAA,GAAiB,YAAA,CAAa,YAAA,EAA8B,CAAA;;;ACorBlE,IAAM,aAAa,CAAuC,OAAA,KAAA,CAAwH,OAAA,CAAQ,MAAA,IAAU,QAAQ,IAAA,CAA0D;AAAA,EACzQ,UAAU,CAAC,EAAE,MAAM,sBAAA,EAAwB,IAAA,EAAM,UAAS,EAAG;AAAA,IACrD,GAAA,EAAK,mBAAA;AAAA,IACL,MAAA,EAAQ,QAAA;AAAA,IACR,IAAA,EAAM;AAAA,GACT,CAAA;AAAA,EACL,GAAA,EAAK,mBAAA;AAAA,EACL,GAAG,OAAA;AAAA,EACH,OAAA,EAAS;AAAA,IACL,cAAA,EAAgB,kBAAA;AAAA,IAChB,GAAG,OAAA,CAAQ;AAAA;AAEnB,CAAC,CAAA;;;ACtsBM,IAAM,OAAA,GAAU,OAAA;;;ACyBvB,IAAM,SAAA,GAAY,GAAA;AAGlB,IAAM,MAAA,uBAAkD,GAAA,CAAI,CAAC,mBAAmB,mBAAA,EAAqB,mBAAA,EAAqB,gBAAgB,CAAC,CAAA;AAEpI,SAAS,sBAAsB,OAAA,EAAkD;AACtF,EAAA,IAAI,OAAO,OAAA,EAAS,OAAA,KAAY,YAAY,OAAA,CAAQ,OAAA,CAAQ,WAAW,CAAA,EAAG;AACxE,IAAA,MAAM,IAAI,UAAU,iEAAiE,CAAA;AAAA,EACvF;AACA,EAAA,IAAI,OAAO,OAAA,CAAQ,SAAA,KAAc,YAAY,OAAA,CAAQ,SAAA,CAAU,WAAW,CAAA,EAAG;AAC3E,IAAA,MAAM,IAAI,UAAU,mEAAmE,CAAA;AAAA,EACzF;AACA,EAAA,IAAI,OAAO,OAAA,CAAQ,QAAA,KAAa,YAAY,OAAA,CAAQ,QAAA,CAAS,WAAW,CAAA,EAAG;AACzE,IAAA,MAAM,IAAI,UAAU,4FAA8E,CAAA;AAAA,EACpG;AAEA,EAAA,MAAM,SAAS,YAAA,CAAa,YAAA,CAAa,EAAE,OAAA,EAAS,OAAA,CAAQ,SAAS,GAAI,OAAA,CAAQ,KAAA,GAAQ,EAAE,OAAO,OAAA,CAAQ,KAAA,KAAU,EAAC,EAAI,CAAC,CAAA;AAC1H,EAAA,MAAM,QAAA,GAAW,QAAQ,YAAA,IAAgB,GAAA;AACzC,EAAA,MAAM,OAAO,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,QAAA,IAAY,IAAI,SAAS,CAAA;AACvD,EAAA,IAAI,SAA8B,EAAC;AACnC,EAAA,IAAI,KAAA;AAEJ,EAAA,eAAe,IAAA,GAAsB;AACnC,IAAA,IAAI,UAAU,MAAA,EAAW;AACvB,MAAA,YAAA,CAAa,KAAK,CAAA;AAClB,MAAA,KAAA,GAAQ,MAAA;AAAA,IACV;AACA,IAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACzB,IAAA,MAAM,MAAA,GAAS,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,SAAS,CAAA;AACxC,IAAA,MAAA,GAAS,MAAA,CAAO,MAAM,SAAS,CAAA;AAC/B,IAAA,IAAI;AACF,MAAA,MAAM,UAAA,CAAW;AAAA,QACf,MAAA,EAAQ,MAAA;AAAA,QACR,OAAA,EAAS,EAAE,sBAAA,EAAwB,OAAA,CAAQ,SAAA,EAAU;AAAA,QACrD,MAAM,EAAE,MAAA,EAAQ,QAAA,EAAU,OAAA,CAAQ,UAAU,UAAA,EAAY,OAAA,EAAS,GAAI,OAAA,CAAQ,aAAa,EAAE,UAAA,EAAY,QAAQ,UAAA,EAAW,GAAI,EAAC;AAAG,OACpI,CAAA;AAAA,IACH,CAAA,CAAA,MAAQ;AAAA,IAER;AACA,IAAA,IAAI,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG,MAAM,IAAA,EAAK;AAAA,EACpC;AAEA,EAAA,OAAO;AAAA,IACL,KAAK,KAAA,EAAO;AACV,MAAA,MAAA,CAAO,IAAA,CAAK,UAAA,CAAW,KAAK,CAAC,CAAA;AAC7B,MAAA,IAAI,MAAA,CAAO,UAAU,IAAA,IAAQ,MAAA,CAAO,IAAI,KAAA,CAAM,IAAI,CAAA,IAAK,QAAA,KAAa,CAAA,EAAG;AACrE,QAAA,KAAK,IAAA,EAAK;AACV,QAAA;AAAA,MACF;AACA,MAAA,KAAA,KAAU,UAAA,CAAW,MAAM,KAAK,IAAA,IAAQ,QAAQ,CAAA;AAAA,IAClD,CAAA;AAAA,IACA,KAAA,EAAO;AAAA,GACT;AACF;AAGA,SAAS,WAAW,KAAA,EAA0C;AAC5D,EAAA,MAAM,EAAA,GAAA,iBAAK,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAClC,EAAA,QAAQ,MAAM,IAAA;AAAM,IAClB,KAAK,gBAAA;AACH,MAAA,OAAO,EAAE,IAAA,EAAM,KAAA,CAAM,MAAM,EAAA,EAAI,IAAA,EAAM,MAAM,IAAA,EAAK;AAAA,IAClD,KAAK,mBAAA;AACH,MAAA,OAAO,EAAE,IAAA,EAAM,KAAA,CAAM,IAAA,EAAM,IAAI,KAAA,EAAO,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,KAAK,GAAA,CAAI,CAAA,EAAG,KAAA,CAAM,KAAK,CAAC,CAAA,EAAE;AAAA,IAC9E,KAAK,iBAAA;AACH,MAAA,OAAO,EAAE,IAAA,EAAM,KAAA,CAAM,IAAA,EAAM,EAAA,EAAI,IAAA,EAAM,KAAA,CAAM,IAAA,EAAM,aAAA,EAAe,KAAA,CAAM,aAAA,EAAe,aAAA,EAAe,MAAM,aAAA,EAAc;AAAA,IAC1H,KAAK,mBAAA;AACH,MAAA,OAAO,EAAE,MAAM,KAAA,CAAM,IAAA,EAAM,IAAI,MAAA,EAAQ,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA,EAAE;AAAA,IAC9D,KAAK,gBAAA;AACH,MAAA,OAAO,EAAE,IAAA,EAAM,KAAA,CAAM,MAAM,EAAA,EAAI,OAAA,EAAS,MAAM,OAAA,EAAwC;AAAA,IACxF;AACE,MAAA,OAAO,EAAE,IAAA,EAAM,KAAA,CAAM,IAAA,EAAM,EAAA,EAAG;AAAA;AAEpC;AAOA,SAAS,OAAO,MAAA,EAA0D;AACxE,EAAA,MAAM,CAAA,GAAI,OAAO,WAAA,EAAY;AAC7B,EAAA,IAAI,CAAA,CAAE,QAAA,CAAS,SAAS,CAAA,IAAK,CAAA,CAAE,QAAA,CAAS,SAAS,CAAA,IAAK,CAAA,CAAE,QAAA,CAAS,OAAO,CAAA,EAAG,OAAO,SAAA;AAClF,EAAA,IAAI,CAAA,CAAE,SAAS,MAAM,CAAA,IAAK,EAAE,QAAA,CAAS,KAAK,GAAG,OAAO,cAAA;AACpD,EAAA,IAAI,CAAA,CAAE,QAAA,CAAS,QAAQ,CAAA,IAAK,CAAA,CAAE,QAAA,CAAS,OAAO,CAAA,IAAK,CAAA,CAAE,QAAA,CAAS,KAAK,CAAA,EAAG,OAAO,cAAA;AAC7E,EAAA,IAAI,CAAA,CAAE,QAAA,CAAS,OAAO,CAAA,IAAK,CAAA,CAAE,SAAS,OAAO,CAAA,IAAK,CAAA,CAAE,QAAA,CAAS,OAAO,CAAA,IAAK,EAAE,QAAA,CAAS,aAAa,CAAA,IAAK,CAAA,CAAE,QAAA,CAAS,YAAY,KAAK,CAAA,CAAE,QAAA,CAAS,YAAY,CAAA,EAAG,OAAO,YAAA;AACnK,EAAA,IAAI,CAAA,CAAE,QAAA,CAAS,QAAQ,CAAA,IAAK,CAAA,CAAE,QAAA,CAAS,UAAU,CAAA,IAAK,CAAA,CAAE,QAAA,CAAS,IAAI,CAAA,EAAG,OAAO,QAAA;AAC/E,EAAA,OAAO,SAAA;AACT","file":"telemetri.cjs","sourcesContent":["// 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","// 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","// 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): ',' | '|' | '%20' => {\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}): string => {\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): string => {\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}): string => {\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","// 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: RegExp = /\\{[^{}]+\\}/g;\n\nexport const defaultPathSerializer = ({ path, url: _url }: PathSerializer): string => {\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}): string => {\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}): unknown {\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","// 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 * A unique identifier for the security scheme.\n *\n * Defined only when there are multiple security schemes whose `Auth`\n * shape would otherwise be identical.\n */\n key?: string;\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","// 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 = {}): ((queryParams: T) => string) => {\n const querySerializer = (queryParams: T): string => {\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 async function setAuthParams(\n options: Pick<RequestOptions, 'auth' | 'query' | 'security'> & {\n headers: Headers;\n },\n): Promise<void> {\n for (const auth of options.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","// 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(opts);\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","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { type Client, 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: Client = createClient(createConfig<ClientOptions2>());\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Client, ClientMeta, Options as Options2, RequestResult, TDataShape } from './client';\nimport { client } from './client.gen';\nimport type { AdminUsersDisableData, AdminUsersDisableErrors, AdminUsersDisableResponses, AdminUsersEnableData, AdminUsersEnableErrors, AdminUsersEnableResponses, AdminUsersListData, AdminUsersListErrors, AdminUsersListResponses, ApiKeysCreateData, ApiKeysCreateErrors, ApiKeysCreateResponses, ApiKeysListData, ApiKeysListErrors, ApiKeysListResponses, ApiKeysRevokeData, ApiKeysRevokeErrors, ApiKeysRevokeResponses, AttachmentsCompleteData, AttachmentsCompleteErrors, AttachmentsCompleteResponses, AttachmentsPresignData, AttachmentsPresignErrors, AttachmentsPresignResponses, ConfigGetData, ConfigGetErrors, ConfigGetResponses, DeletionsGetData, DeletionsGetErrors, DeletionsGetResponses, EventsSendData, EventsSendErrors, EventsSendResponses, HandoffsCreateData, HandoffsCreateErrors, HandoffsCreateResponses, HandoffsGetData, HandoffsGetErrors, HandoffsGetResponses, KnownIssuesConfirmData, KnownIssuesConfirmErrors, KnownIssuesConfirmResponses, KnownIssuesCreateData, KnownIssuesCreateErrors, KnownIssuesCreateResponses, KnownIssuesGetData, KnownIssuesGetErrors, KnownIssuesGetResponses, KnownIssuesList2Data, KnownIssuesList2Errors, KnownIssuesList2Responses, KnownIssuesListData, KnownIssuesListErrors, KnownIssuesListResponses, KnownIssuesUpdateData, KnownIssuesUpdateErrors, KnownIssuesUpdateResponses, MeGetData, MeGetErrors, MeGetResponses, ProductsCreateData, ProductsCreateErrors, ProductsCreateResponses, ProductsListData, ProductsListErrors, ProductsListResponses, ProductsRevokeKeyData, ProductsRevokeKeyErrors, ProductsRevokeKeyResponses, ProductsRotateKeyData, ProductsRotateKeyErrors, ProductsRotateKeyResponses, ProductsUpdateData, ProductsUpdateErrors, ProductsUpdateResponses, ProgramsAcceptData, ProgramsAcceptErrors, ProgramsAcceptResponses, ProgramsCloseData, ProgramsCloseErrors, ProgramsCloseResponses, ProgramsCompleteTaskData, ProgramsCompleteTaskErrors, ProgramsCompleteTaskResponses, ProgramsCreateData, ProgramsCreateErrors, ProgramsCreateResponses, ProgramsDeclineData, ProgramsDeclineErrors, ProgramsDeclineResponses, ProgramsFlagConfirmedData, ProgramsFlagConfirmedErrors, ProgramsFlagConfirmedResponses, ProgramsGetData, ProgramsGetErrors, ProgramsGetReportData, ProgramsGetReportErrors, ProgramsGetReportResponses, ProgramsGetResponses, ProgramsInviteData, ProgramsInviteErrors, ProgramsInviteResponses, ProgramsListData, ProgramsListErrors, ProgramsListInvitationsData, ProgramsListInvitationsErrors, ProgramsListInvitationsResponses, ProgramsListMineData, ProgramsListMineErrors, ProgramsListMineResponses, ProgramsListParticipantsData, ProgramsListParticipantsErrors, ProgramsListParticipantsResponses, ProgramsListResponses, ProgramsReportData, ProgramsReportErrors, ProgramsReportResponses, ProgramsRespondData, ProgramsRespondErrors, ProgramsRespondResponses, ProgramsSegmentData, ProgramsSegmentErrors, ProgramsSegmentResponses, ProgramsUpdateData, ProgramsUpdateErrors, ProgramsUpdateResponses, ProgramsWithdrawData, ProgramsWithdrawErrors, ProgramsWithdrawResponses, SettingsGetData, SettingsGetErrors, SettingsGetResponses, SettingsUpdateData, SettingsUpdateErrors, SettingsUpdateResponses, StatsGetData, StatsGetErrors, StatsGetResponses, SubjectsRemoveData, SubjectsRemoveErrors, SubjectsRemoveResponses, SubmissionsAddNoteData, SubmissionsAddNoteErrors, SubmissionsAddNoteResponses, SubmissionsAttachmentUrlData, SubmissionsAttachmentUrlErrors, SubmissionsAttachmentUrlResponses, SubmissionsCountsData, SubmissionsCountsErrors, SubmissionsCountsResponses, SubmissionsCreateData, SubmissionsCreateErrors, SubmissionsCreateResponses, SubmissionsGetData, SubmissionsGetErrors, SubmissionsGetResponses, SubmissionsListData, SubmissionsListErrors, SubmissionsListMineData, SubmissionsListMineErrors, SubmissionsListMineResponses, SubmissionsListResponses, SubmissionsRemoveAttachmentData, SubmissionsRemoveAttachmentErrors, SubmissionsRemoveAttachmentResponses, SubmissionsStatusData, SubmissionsStatusErrors, SubmissionsStatusResponses, SubmissionsUpdateData, SubmissionsUpdateErrors, SubmissionsUpdateResponses, SubmissionsUpdateStatusData, SubmissionsUpdateStatusErrors, SubmissionsUpdateStatusResponses, WebhooksCreateData, WebhooksCreateErrors, WebhooksCreateResponses, WebhooksGetData, WebhooksGetErrors, WebhooksGetResponses, WebhooksListData, WebhooksListDeliveriesData, WebhooksListDeliveriesErrors, WebhooksListDeliveriesResponses, WebhooksListErrors, WebhooksListResponses, WebhooksRemoveData, WebhooksRemoveErrors, WebhooksRemoveResponses, WebhooksRetryDeliveryData, WebhooksRetryDeliveryErrors, WebhooksRetryDeliveryResponses, WebhooksRotateSecretData, WebhooksRotateSecretErrors, WebhooksRotateSecretResponses, WebhooksTestData, WebhooksTestErrors, WebhooksTestResponses, WebhooksUpdateData, WebhooksUpdateErrors, WebhooksUpdateResponses, WebhooksVerifyData, WebhooksVerifyErrors, WebhooksVerifyResponses } 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?: keyof ClientMeta extends never ? Record<string, unknown> : ClientMeta;\n};\n\n/**\n * ApiKeys for Tenant-flaten, uten klartekst. Kun eier.\n */\nexport const apiKeysList = <ThrowOnError extends boolean = false>(options?: Options<ApiKeysListData, ThrowOnError>): RequestResult<ApiKeysListResponses, ApiKeysListErrors, ThrowOnError> => (options?.client ?? client).get<ApiKeysListResponses, ApiKeysListErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/api-keys',\n ...options\n});\n\n/**\n * Oppretter en scopet ApiKey. Klarteksten finnes kun i denne responsen (DD-20). Kun eier.\n */\nexport const apiKeysCreate = <ThrowOnError extends boolean = false>(options: Options<ApiKeysCreateData, ThrowOnError>): RequestResult<ApiKeysCreateResponses, ApiKeysCreateErrors, ThrowOnError> => (options.client ?? client).post<ApiKeysCreateResponses, ApiKeysCreateErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/api-keys',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Kaller tilbake. Kun eier.\n */\nexport const apiKeysRevoke = <ThrowOnError extends boolean = false>(options: Options<ApiKeysRevokeData, ThrowOnError>): RequestResult<ApiKeysRevokeResponses, ApiKeysRevokeErrors, ThrowOnError> => (options.client ?? client).delete<ApiKeysRevokeResponses, ApiKeysRevokeErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/api-keys/{id}',\n ...options\n});\n\n/**\n * Registeret (M2.4): alle kjente feil med tellere. Alle roller.\n */\nexport const knownIssuesList = <ThrowOnError extends boolean = false>(options?: Options<KnownIssuesListData, ThrowOnError>): RequestResult<KnownIssuesListResponses, KnownIssuesListErrors, ThrowOnError> => (options?.client ?? client).get<KnownIssuesListResponses, KnownIssuesListErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/known-issues',\n ...options\n});\n\n/**\n * Oppretter en kjent feil, fra bunnen eller fra en sak («Gjør til kjent feil», f i innboksen). Med fromSubmissionId går saken til kjent_feil og teller i Reach. Behandler og eier.\n */\nexport const knownIssuesCreate = <ThrowOnError extends boolean = false>(options: Options<KnownIssuesCreateData, ThrowOnError>): RequestResult<KnownIssuesCreateResponses, KnownIssuesCreateErrors, ThrowOnError> => (options.client ?? client).post<KnownIssuesCreateResponses, KnownIssuesCreateErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/known-issues',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Én kjent feil med tellere — hent den FØR PATCH til fikset, så panelet kan vise hvor mange som varsles (M2.4). Alle roller.\n */\nexport const knownIssuesGet = <ThrowOnError extends boolean = false>(options: Options<KnownIssuesGetData, ThrowOnError>): RequestResult<KnownIssuesGetResponses, KnownIssuesGetErrors, ThrowOnError> => (options.client ?? client).get<KnownIssuesGetResponses, KnownIssuesGetErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/known-issues/{id}',\n ...options\n});\n\n/**\n * Oppdaterer. status = fikset krever fixedIn (422 fixed_in_required), emitterer known_issue.fixed én gang til alle med Reach (DD-31) og tar sakene med knownIssueId til statusType complete. fikset → aktiv finnes ikke (409 invalid_status_transition). Behandler og eier.\n */\nexport const knownIssuesUpdate = <ThrowOnError extends boolean = false>(options: Options<KnownIssuesUpdateData, ThrowOnError>): RequestResult<KnownIssuesUpdateResponses, KnownIssuesUpdateErrors, ThrowOnError> => (options.client ?? client).patch<KnownIssuesUpdateResponses, KnownIssuesUpdateErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/known-issues/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Hvem er jeg — panelets første kall etter innlogging. Beviser at sesjonen har aal2 (ellers 403 mfa_required) og at brukeren har et sete hos en leietaker (ellers 401 — også når kontoen er deaktivert). Alle roller. Ingen skriving, ingen audit-oppføring.\n */\nexport const meGet = <ThrowOnError extends boolean = false>(options?: Options<MeGetData, ThrowOnError>): RequestResult<MeGetResponses, MeGetErrors, ThrowOnError> => (options?.client ?? client).get<MeGetResponses, MeGetErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/me',\n ...options\n});\n\n/**\n * Produktene med SDK-nøkler (kun prefiks). Alle roller.\n */\nexport const productsList = <ThrowOnError extends boolean = false>(options?: Options<ProductsListData, ThrowOnError>): RequestResult<ProductsListResponses, ProductsListErrors, ThrowOnError> => (options?.client ?? client).get<ProductsListResponses, ProductsListErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/products',\n ...options\n});\n\n/**\n * Oppretter et produkt med én SDK-nøkkel; klarteksten står i keys[0].key og finnes aldri igjen (DD-20). Kun eier.\n */\nexport const productsCreate = <ThrowOnError extends boolean = false>(options: Options<ProductsCreateData, ThrowOnError>): RequestResult<ProductsCreateResponses, ProductsCreateErrors, ThrowOnError> => (options.client ?? client).post<ProductsCreateResponses, ProductsCreateErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/products',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Oppdaterer navn, plattformer, bundle-ID-er og origins. Kun eier.\n */\nexport const productsUpdate = <ThrowOnError extends boolean = false>(options: Options<ProductsUpdateData, ThrowOnError>): RequestResult<ProductsUpdateResponses, ProductsUpdateErrors, ThrowOnError> => (options.client ?? client).patch<ProductsUpdateResponses, ProductsUpdateErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/products/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Roterer: oppretter en ny SDK-nøkkel ved siden av den gamle, så begge er gyldige til den gamle kalles tilbake (K3). Maks to aktive — finnes det allerede to, avvises rotasjonen med 409 invalid_status_transition; kall én tilbake først. Klarteksten kun her (DD-20). Kun eier.\n */\nexport const productsRotateKey = <ThrowOnError extends boolean = false>(options: Options<ProductsRotateKeyData, ThrowOnError>): RequestResult<ProductsRotateKeyResponses, ProductsRotateKeyErrors, ThrowOnError> => (options.client ?? client).post<ProductsRotateKeyResponses, ProductsRotateKeyErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/products/{id}/keys',\n ...options\n});\n\n/**\n * Kaller tilbake en SDK-nøkkel. Klienter med den nøkkelen får 401 fra neste kall. Kun eier.\n */\nexport const productsRevokeKey = <ThrowOnError extends boolean = false>(options: Options<ProductsRevokeKeyData, ThrowOnError>): RequestResult<ProductsRevokeKeyResponses, ProductsRevokeKeyErrors, ThrowOnError> => (options.client ?? client).delete<ProductsRevokeKeyResponses, ProductsRevokeKeyErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/products/{id}/keys/{keyId}',\n ...options\n});\n\n/**\n * Alle programmer. Alle roller.\n */\nexport const programsList = <ThrowOnError extends boolean = false>(options?: Options<ProgramsListData, ThrowOnError>): RequestResult<ProgramsListResponses, ProgramsListErrors, ThrowOnError> => (options?.client ?? client).get<ProgramsListResponses, ProgramsListErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/programs',\n ...options\n});\n\n/**\n * Oppretter program i utkast (4a). Ved minorsPresent tvinges commitmentFree og termsUrl avvises (422 minors_present_conflict); maxContacts over leietakerens tak gir 422 contacts_exceed_tenant_cap. Behandler og eier.\n */\nexport const programsCreate = <ThrowOnError extends boolean = false>(options: Options<ProgramsCreateData, ThrowOnError>): RequestResult<ProgramsCreateResponses, ProgramsCreateErrors, ThrowOnError> => (options.client ?? client).post<ProgramsCreateResponses, ProgramsCreateErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/programs',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Programsiden (4c) med tellere. Alle roller.\n */\nexport const programsGet = <ThrowOnError extends boolean = false>(options: Options<ProgramsGetData, ThrowOnError>): RequestResult<ProgramsGetResponses, ProgramsGetErrors, ThrowOnError> => (options.client ?? client).get<ProgramsGetResponses, ProgramsGetErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/programs/{id}',\n ...options\n});\n\n/**\n * Oppdaterer og flytter status. aapen krever hypotese, suksesskriterium og ≥ 1 oppgave med estimatedMinutes — 409 program_incomplete med hva som mangler (forklart lås, DD-17). avbrutt krever cancelReason og emitterer program.closed. aktiv kan ikke settes herfra. Oppgaver kan ikke endres etter aapen. Behandler og eier.\n */\nexport const programsUpdate = <ThrowOnError extends boolean = false>(options: Options<ProgramsUpdateData, ThrowOnError>): RequestResult<ProgramsUpdateResponses, ProgramsUpdateErrors, ThrowOnError> => (options.client ?? client).patch<ProgramsUpdateResponses, ProgramsUpdateErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/programs/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Utsendte invitasjoner uten token — sendt, akseptert, avslått, utløpt. Alle roller.\n */\nexport const programsListInvitations = <ThrowOnError extends boolean = false>(options: Options<ProgramsListInvitationsData, ThrowOnError>): RequestResult<ProgramsListInvitationsResponses, ProgramsListInvitationsErrors, ThrowOnError> => (options.client ?? client).get<ProgramsListInvitationsResponses, ProgramsListInvitationsErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/programs/{id}/invitations',\n ...options\n});\n\n/**\n * Inviterer pseudonymer (4b). Krever aapen (409 invalid_status_transition). Tokenet finnes i denne responsen og i webhooken program.invitation_created (én per invitasjon) — aldri i noe GET-svar. Leietakeren løser subject → bruker og sender tokenet gjennom egen kanal; plattformen sender aldri (DD-12). Et subject med aktiv invitasjon roterer: nytt token, det gamle slutter å virke. Behandler og eier.\n */\nexport const programsInvite = <ThrowOnError extends boolean = false>(options: Options<ProgramsInviteData, ThrowOnError>): RequestResult<ProgramsInviteResponses, ProgramsInviteErrors, ThrowOnError> => (options.client ?? client).post<ProgramsInviteResponses, ProgramsInviteErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/programs/{id}/invitations',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Deltakerne med flaggstatus (DD-36): «invitert, ikke slått på» og «trukket, flagg ikke bekreftet av» er egne tilstander. Ingen sortering på aktivitet, ingen score (DD-38). Alle roller.\n */\nexport const programsListParticipants = <ThrowOnError extends boolean = false>(options: Options<ProgramsListParticipantsData, ThrowOnError>): RequestResult<ProgramsListParticipantsResponses, ProgramsListParticipantsErrors, ThrowOnError> => (options.client ?? client).get<ProgramsListParticipantsResponses, ProgramsListParticipantsErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/programs/{id}/participants',\n ...options\n});\n\n/**\n * Den frosne rapporten. 404 report_not_found før programmet er avsluttet. Alle roller.\n */\nexport const programsGetReport = <ThrowOnError extends boolean = false>(options: Options<ProgramsGetReportData, ThrowOnError>): RequestResult<ProgramsGetReportResponses, ProgramsGetReportErrors, ThrowOnError> => (options.client ?? client).get<ProgramsGetReportResponses, ProgramsGetReportErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/programs/{id}/report',\n ...options\n});\n\n/**\n * Avslutter programmet og fryser rapporten (4d, DD-35). Krever avsluttes eller aktiv (409 invalid_status_transition); allerede fryst gir 409 report_frozen. Under 30 svar: dataLimitations kan ikke være tom (422 data_limitations_required) og payload har ingen prosent. Emitterer program.closed. Samme tall går til testerens takk. Behandler og eier.\n */\nexport const programsClose = <ThrowOnError extends boolean = false>(options: Options<ProgramsCloseData, ThrowOnError>): RequestResult<ProgramsCloseResponses, ProgramsCloseErrors, ThrowOnError> => (options.client ?? client).post<ProgramsCloseResponses, ProgramsCloseErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/programs/{id}/report',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Leietakerens innstillinger (5d) inkludert community-sjekklisten med rødt/grønt per krav (DD-18). Ingen hemmeligheter (DD-20). Alle roller.\n */\nexport const settingsGet = <ThrowOnError extends boolean = false>(options?: Options<SettingsGetData, ThrowOnError>): RequestResult<SettingsGetResponses, SettingsGetErrors, ThrowOnError> => (options?.client ?? client).get<SettingsGetResponses, SettingsGetErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/settings',\n ...options\n});\n\n/**\n * Oppdaterer innstillinger. Kun eier. minorsPresent = true strammer alt i samme forespørsel; en verdi som strider mot minorsPresent gir 422 minors_present_conflict med feltet i meldingen (K18). Frist og kontakter kan senkes, aldri heves over 90 / 3.\n */\nexport const settingsUpdate = <ThrowOnError extends boolean = false>(options: Options<SettingsUpdateData, ThrowOnError>): RequestResult<SettingsUpdateResponses, SettingsUpdateErrors, ThrowOnError> => (options.client ?? client).patch<SettingsUpdateResponses, SettingsUpdateErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/settings',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Leietakerens egne tall for de siste ukene (M4.2, maaling.md): statusflyt inn/ut per uke, tragten i widgeten, innsendinger og anonyme per uke, SDK-versjonsspredning, sløyfen ut, saker per adminøkt og gjentakende innsendere. Tellinger, aldri prosent — panelet regner, og aldri under 30 (DD-16). Regnes ved oppslag. Alle roller.\n */\nexport const statsGet = <ThrowOnError extends boolean = false>(options?: Options<StatsGetData, ThrowOnError>): RequestResult<StatsGetResponses, StatsGetErrors, ThrowOnError> => (options?.client ?? client).get<StatsGetResponses, StatsGetErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/stats',\n ...options\n});\n\n/**\n * Innboksen og Saker (DD-01, DD-11). Uten filter: alt. statusType = reviewing er innboksen; overdue og inactive gir «Avgjør nå» og DD-25-varslene. Sortering: overdue først, så inactive, så eldst først — de tre eldste uten aktivitet teller på toppen. Alle roller.\n */\nexport const submissionsList = <ThrowOnError extends boolean = false>(options?: Options<SubmissionsListData, ThrowOnError>): RequestResult<SubmissionsListResponses, SubmissionsListErrors, ThrowOnError> => (options?.client ?? client).get<SubmissionsListResponses, SubmissionsListErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/submissions',\n ...options\n});\n\n/**\n * Tellingen som ER forsiden: «40 til vurdering · 3 uten aktivitet · 3 over frist» (DD-01, DD-52). Alle roller.\n */\nexport const submissionsCounts = <ThrowOnError extends boolean = false>(options?: Options<SubmissionsCountsData, ThrowOnError>): RequestResult<SubmissionsCountsResponses, SubmissionsCountsErrors, ThrowOnError> => (options?.client ?? client).get<SubmissionsCountsResponses, SubmissionsCountsErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/submissions/counts',\n ...options\n});\n\n/**\n * Saken i detalj, med notater, svar, dedupe-forslag (maks tre, null hvis tjenesten ikke svarte) og vedleggsmetadata. Åpning av detaljen logges (AuditEntry: hvem så hvilken innsending). Alle roller.\n */\nexport const submissionsGet = <ThrowOnError extends boolean = false>(options: Options<SubmissionsGetData, ThrowOnError>): RequestResult<SubmissionsGetResponses, SubmissionsGetErrors, ThrowOnError> => (options.client ?? client).get<SubmissionsGetResponses, SubmissionsGetErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/submissions/{id}',\n ...options\n});\n\n/**\n * Triage i én forespørsel — status, sammenslåing, kjent feil, frist, svar. Reglene står på SubmissionUpdate. Behandler og eier. Emitterer submission.status_changed og/eller submission.replied via webhook; en sammenslåing emitterer INGENTING (DD-24). Svaret er saken etter endringen.\n */\nexport const submissionsUpdate = <ThrowOnError extends boolean = false>(options: Options<SubmissionsUpdateData, ThrowOnError>): RequestResult<SubmissionsUpdateResponses, SubmissionsUpdateErrors, ThrowOnError> => (options.client ?? client).patch<SubmissionsUpdateResponses, SubmissionsUpdateErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/submissions/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Fjerner sakens vedlegg — f.eks. et bilde av andre personer. Objektet slettes i lagringen, saken står uendret, og fjerningen logges (AuditEntry attachment.removed: hvem og når, aldri hvorfor). Kan ikke angres. Etter fjerning har SubmissionDetail attachmentRemovedAt og SubmissionStatusView attachmentRemoved: innsenderen ser i «mine innspill» at bildet er fjernet, uten begrunnelse. Ingen webhook. 404 attachment_not_found når saken ikke har et ferdig behandlet vedlegg, eller det alt er fjernet — samme regel som attachment-url, og det som ikke er ferdig behandlet kan behandleren heller ikke ha sett. Behandler og eier; leser får 403.\n */\nexport const submissionsRemoveAttachment = <ThrowOnError extends boolean = false>(options: Options<SubmissionsRemoveAttachmentData, ThrowOnError>): RequestResult<SubmissionsRemoveAttachmentResponses, SubmissionsRemoveAttachmentErrors, ThrowOnError> => (options.client ?? client).delete<SubmissionsRemoveAttachmentResponses, SubmissionsRemoveAttachmentErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/submissions/{id}/attachment',\n ...options\n});\n\n/**\n * Korttidsgyldig URL til sakens skjermbilde. Logges som «åpnet skjermbilde» (rapport 5). 404 attachment_not_found når saken ikke har vedlegg, det ikke er ferdig behandlet, eller det er fjernet. Alle roller.\n */\nexport const submissionsAttachmentUrl = <ThrowOnError extends boolean = false>(options: Options<SubmissionsAttachmentUrlData, ThrowOnError>): RequestResult<SubmissionsAttachmentUrlResponses, SubmissionsAttachmentUrlErrors, ThrowOnError> => (options.client ?? client).get<SubmissionsAttachmentUrlResponses, SubmissionsAttachmentUrlErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/submissions/{id}/attachment-url',\n ...options\n});\n\n/**\n * Internt notat — standardfeltet behandleren skriver i (DD-23). Forlater aldri panelet. Oppdaterer lastActivityAt. Behandler og eier.\n */\nexport const submissionsAddNote = <ThrowOnError extends boolean = false>(options: Options<SubmissionsAddNoteData, ThrowOnError>): RequestResult<SubmissionsAddNoteResponses, SubmissionsAddNoteErrors, ThrowOnError> => (options.client ?? client).post<SubmissionsAddNoteResponses, SubmissionsAddNoteErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/submissions/{id}/notes',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Leietakerens panelbrukere, også de deaktiverte. Kun eier.\n */\nexport const adminUsersList = <ThrowOnError extends boolean = false>(options?: Options<AdminUsersListData, ThrowOnError>): RequestResult<AdminUsersListResponses, AdminUsersListErrors, ThrowOnError> => (options?.client ?? client).get<AdminUsersListResponses, AdminUsersListErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/users',\n ...options\n});\n\n/**\n * Deaktiverer kontoen. Brukerens neste admin-kall gir 401 unauthenticated uansett hvor ferskt Supabase-tokenet er — sesjonen overlever ikke. Raden står, og alt hun gjorde er fortsatt sporbart. Idempotent: en alt deaktivert konto gir 204. Egen konto gir 409 cannot_disable_self — det er regelen som garanterer minst én aktiv eier. Kun eier. AuditEntry admin_user.disabled.\n */\nexport const adminUsersDisable = <ThrowOnError extends boolean = false>(options: Options<AdminUsersDisableData, ThrowOnError>): RequestResult<AdminUsersDisableResponses, AdminUsersDisableErrors, ThrowOnError> => (options.client ?? client).post<AdminUsersDisableResponses, AdminUsersDisableErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/users/{id}/disable',\n ...options\n});\n\n/**\n * Reaktiverer en deaktivert konto. Idempotent: en aktiv konto gir 204. Kun eier. AuditEntry admin_user.enabled.\n */\nexport const adminUsersEnable = <ThrowOnError extends boolean = false>(options: Options<AdminUsersEnableData, ThrowOnError>): RequestResult<AdminUsersEnableResponses, AdminUsersEnableErrors, ThrowOnError> => (options.client ?? client).post<AdminUsersEnableResponses, AdminUsersEnableErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/users/{id}/enable',\n ...options\n});\n\n/**\n * Registrerte webhooks. Alle roller.\n */\nexport const webhooksList = <ThrowOnError extends boolean = false>(options?: Options<WebhooksListData, ThrowOnError>): RequestResult<WebhooksListResponses, WebhooksListErrors, ThrowOnError> => (options?.client ?? client).get<WebhooksListResponses, WebhooksListErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/webhooks',\n ...options\n});\n\n/**\n * Registrerer en mottaker. Opprettes inaktiv og uverifisert; secret finnes kun her (DD-20). https påkrevd, private nett avvises (400 validation_failed). Kun eier.\n */\nexport const webhooksCreate = <ThrowOnError extends boolean = false>(options: Options<WebhooksCreateData, ThrowOnError>): RequestResult<WebhooksCreateResponses, WebhooksCreateErrors, ThrowOnError> => (options.client ?? client).post<WebhooksCreateResponses, WebhooksCreateErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/webhooks',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Sletter webhooken og dens leveringslogg. Kun eier.\n */\nexport const webhooksRemove = <ThrowOnError extends boolean = false>(options: Options<WebhooksRemoveData, ThrowOnError>): RequestResult<WebhooksRemoveResponses, WebhooksRemoveErrors, ThrowOnError> => (options.client ?? client).delete<WebhooksRemoveResponses, WebhooksRemoveErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/webhooks/{id}',\n ...options\n});\n\n/**\n * Én webhook. Alle roller.\n */\nexport const webhooksGet = <ThrowOnError extends boolean = false>(options: Options<WebhooksGetData, ThrowOnError>): RequestResult<WebhooksGetResponses, WebhooksGetErrors, ThrowOnError> => (options.client ?? client).get<WebhooksGetResponses, WebhooksGetErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/webhooks/{id}',\n ...options\n});\n\n/**\n * Oppdaterer. Ny url nullstiller verifiseringen; active = true krever verifisert (409 webhook_not_verified). Kun eier.\n */\nexport const webhooksUpdate = <ThrowOnError extends boolean = false>(options: Options<WebhooksUpdateData, ThrowOnError>): RequestResult<WebhooksUpdateResponses, WebhooksUpdateErrors, ThrowOnError> => (options.client ?? client).patch<WebhooksUpdateResponses, WebhooksUpdateErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/webhooks/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Leveringsloggen. status = dead er dead-letter-listen som skal være synlig i panelet (låst). Alle roller.\n */\nexport const webhooksListDeliveries = <ThrowOnError extends boolean = false>(options: Options<WebhooksListDeliveriesData, ThrowOnError>): RequestResult<WebhooksListDeliveriesResponses, WebhooksListDeliveriesErrors, ThrowOnError> => (options.client ?? client).get<WebhooksListDeliveriesResponses, WebhooksListDeliveriesErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/webhooks/{id}/deliveries',\n ...options\n});\n\n/**\n * Prøver en dead-letter-levering på nytt, én gang, med samme event_id (idempotent hos mottakeren). Krever status dead (409 invalid_status_transition). Behandler og eier.\n */\nexport const webhooksRetryDelivery = <ThrowOnError extends boolean = false>(options: Options<WebhooksRetryDeliveryData, ThrowOnError>): RequestResult<WebhooksRetryDeliveryResponses, WebhooksRetryDeliveryErrors, ThrowOnError> => (options.client ?? client).post<WebhooksRetryDeliveryResponses, WebhooksRetryDeliveryErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/webhooks/{id}/deliveries/{deliveryId}/retry',\n ...options\n});\n\n/**\n * Roterer secret. Den nye finnes kun i denne responsen; den gamle er ugyldig straks. Kun eier.\n */\nexport const webhooksRotateSecret = <ThrowOnError extends boolean = false>(options: Options<WebhooksRotateSecretData, ThrowOnError>): RequestResult<WebhooksRotateSecretResponses, WebhooksRotateSecretErrors, ThrowOnError> => (options.client ?? client).post<WebhooksRotateSecretResponses, WebhooksRotateSecretErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/webhooks/{id}/rotate-secret',\n ...options\n});\n\n/**\n * Testknappen (5d): sender en signert webhook.test-hendelse synkront, ett forsøk, ingen retry. Krever verifisert (409 webhook_not_verified). Behandler og eier.\n */\nexport const webhooksTest = <ThrowOnError extends boolean = false>(options: Options<WebhooksTestData, ThrowOnError>): RequestResult<WebhooksTestResponses, WebhooksTestErrors, ThrowOnError> => (options.client ?? client).post<WebhooksTestResponses, WebhooksTestErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/webhooks/{id}/test',\n ...options\n});\n\n/**\n * Verifiserer URL-en: sender en signert webhook.verify-hendelse med et engangs-challenge og krever at mottakeren svarer 2xx med challenge-verdien i kroppen. ok = true setter verifiedAt. Kun eier.\n */\nexport const webhooksVerify = <ThrowOnError extends boolean = false>(options: Options<WebhooksVerifyData, ThrowOnError>): RequestResult<WebhooksVerifyResponses, WebhooksVerifyErrors, ThrowOnError> => (options.client ?? client).post<WebhooksVerifyResponses, WebhooksVerifyErrors, ThrowOnError>({\n security: [{\n key: 'AdminAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/admin/webhooks/{id}/verify',\n ...options\n});\n\n/**\n * Presigned PUT mot R2 (EU) for ett skjermbilde, maskert på klienten før dette kallet (K4). Tallene sjekkes her (413 attachment_too_large, 415 attachment_type_not_allowed) og på nytt server-side før dekoding (K9). 403 screenshots_disabled når leietakeren har skjermbilde av eller minorsPresent. Innsendingen må tilhøre kalleren — samme subject, eller anonymt: en anonym innsending med kjent submissionId (UUIDv7, kun gitt til skaperen) — og være opprettet for høyst 15 minutter siden (DD-42: vedlegget følger rett etter teksten, og skjermbilde køes aldri). Ellers 404 submission_not_found. Ett vedlegg per innsending (409 attachment_already_uploaded).\n */\nexport const attachmentsPresign = <ThrowOnError extends boolean = false>(options: Options<AttachmentsPresignData, ThrowOnError>): RequestResult<AttachmentsPresignResponses, AttachmentsPresignErrors, ThrowOnError> => (options.client ?? client).post<AttachmentsPresignResponses, AttachmentsPresignErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/attachments/presign',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Klienten melder at PUT-en er ferdig. Starter verifisering og re-enkoding i isolert prosess; svarer straks. Feiler verifiseringen etterpå, slettes objektet og innsendingen står uten vedlegg — kvitteringen i klienten har allerede sagt «teksten din er lagret» (DD-42). Tillegg utover briefens liste: uten et signal må plattformen polle R2.\n */\nexport const attachmentsComplete = <ThrowOnError extends boolean = false>(options: Options<AttachmentsCompleteData, ThrowOnError>): RequestResult<AttachmentsCompleteResponses, AttachmentsCompleteErrors, ThrowOnError> => (options.client ?? client).post<AttachmentsCompleteResponses, AttachmentsCompleteErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/attachments/{id}/complete',\n ...options\n});\n\n/**\n * Leietakerens klientkonfigurasjon for produktet nøkkelen tilhører (M2.5): tegngrense, minste antall tegn, skjermbilde-steg og personvernlenke — det SDK-et ellers måtte få duplisert i init(). Virker anonymt. Klienten henter ved hver åpning av widgeten, aldri i bakgrunnen, og faller tilbake på de strammeste verdiene (140 · 10 · av) når kallet ikke svarer. Tillegg utover M0.1: teknisk gjeld fra M1.2, eid av M2.5.\n */\nexport const configGet = <ThrowOnError extends boolean = false>(options?: Options<ConfigGetData, ThrowOnError>): RequestResult<ConfigGetResponses, ConfigGetErrors, ThrowOnError> => (options?.client ?? client).get<ConfigGetResponses, ConfigGetErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/config',\n ...options\n});\n\n/**\n * Målemodellens hendelser fra SDK-et (M4.2, maaling.md) — plattformens eget mottak, aldri en tredjepart (K19). ALLTID anonymt: et feedback-token ignoreres, og subject lagres aldri. Kroppen er lukket — ingen tekst, ingen enhets-ID, ingen IP (IP holdes kun i minne for rate limiting, K15). Svarer 202 og lagrer beste-innsats; klienten sender bunter og prøver aldri på nytt, for hendelsene er tellinger, ikke innhold. Rate-limitet per nøkkel og IP.\n */\nexport const eventsSend = <ThrowOnError extends boolean = false>(options: Options<EventsSendData, ThrowOnError>): RequestResult<EventsSendResponses, EventsSendErrors, ThrowOnError> => (options.client ?? client).post<EventsSendResponses, EventsSendErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/events',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Svarer på en oppfølging med spørsmål («Hvordan gikk det?» eller sjekkpunkt): tre lukkede valg og valgfri setning. Én Response per FollowUp (409 follow_up_already_answered). Bare kind = hvordan_gikk_det og sjekkpunkt tar svar — en påminnelse eller et tilbud om utgang gir 409 follow_up_not_answerable. Oppfølgingen må være emittert til kallerens subject (404 follow_up_not_found). Deltakelsen går til fullfoert når alle oppgavene er gjort og ingen oppfølging står planlagt eller ubesvart. Svarprosenten i rapporten måles mot de emitterte oppfølgingene som tar svar.\n */\nexport const programsRespond = <ThrowOnError extends boolean = false>(options: Options<ProgramsRespondData, ThrowOnError>): RequestResult<ProgramsRespondResponses, ProgramsRespondErrors, ThrowOnError> => (options.client ?? client).post<ProgramsRespondResponses, ProgramsRespondErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/follow-ups/{id}/respond',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * RESERVERT v2. TV-klienten oppretter en overleveringsøkt: kontekst inn, id + URL + QR som SVG ut. Lever 10 min, brukes én gang. Virker anonymt — identiteten avgjøres på mobilen. Konteksten slettes når økten utløper uten innsending.\n */\nexport const handoffsCreate = <ThrowOnError extends boolean = false>(options: Options<HandoffsCreateData, ThrowOnError>): RequestResult<HandoffsCreateResponses, HandoffsCreateErrors, ThrowOnError> => (options.client ?? client).post<HandoffsCreateResponses, HandoffsCreateErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/handoffs',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * RESERVERT v2. Mobilen henter TV-ens kontekst for å vise den fjernbar linje for linje (DD-05) og sende som vanlig med handoffId. Ukjent, utløpt eller brukt → 404 handoff_invalid.\n */\nexport const handoffsGet = <ThrowOnError extends boolean = false>(options: Options<HandoffsGetData, ThrowOnError>): RequestResult<HandoffsGetResponses, HandoffsGetErrors, ThrowOnError> => (options.client ?? client).get<HandoffsGetResponses, HandoffsGetErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/handoffs/{id}',\n ...options\n});\n\n/**\n * Aksepterer invitasjonen etter forventningsavklaringen (DD-13, DD-32). Tokenet i stien er engangs og ≤ 14 dager; det må være utstedt til kallerens subject — feil subject, ukjent, utløpt eller brukt gir alle 404 invitation_invalid. Gjentak fra samme subject er idempotent (200 med deltakelsen). Programmet må være aapen eller aktiv (409 invalid_status_transition), og ikke fullt (409 program_full). Avslått først → 409 invitation_already_answered. Emitterer program.participant_joined.\n */\nexport const programsAccept = <ThrowOnError extends boolean = false>(options: Options<ProgramsAcceptData, ThrowOnError>): RequestResult<ProgramsAcceptResponses, ProgramsAcceptErrors, ThrowOnError> => (options.client ?? client).post<ProgramsAcceptResponses, ProgramsAcceptErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/invitations/{token}/accept',\n ...options\n});\n\n/**\n * Avslår invitasjonen — invitation_declined i målemodellen og status avslaatt i panelet. Ingen årsak spørres (idébank). Samme 404-regel som accept. Akseptert først → 409 invitation_already_answered: et nei etter ja er «Gå ut», ikke avslag. Tillegg utover briefens liste: uten det finnes ikke status avslaatt.\n */\nexport const programsDecline = <ThrowOnError extends boolean = false>(options: Options<ProgramsDeclineData, ThrowOnError>): RequestResult<ProgramsDeclineResponses, ProgramsDeclineErrors, ThrowOnError> => (options.client ?? client).post<ProgramsDeclineResponses, ProgramsDeclineErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/invitations/{token}/decline',\n ...options\n});\n\n/**\n * Kjente feil for skjerm og versjon — vises FØR feltet i feilsporet (DD-03, differensiatoren). Maks tre kort, kun status aktiv eller fikset med appVersion ≤ fixedIn (DD-30), kun visibleInWidget. Virker anonymt. Tom liste er et gyldig svar og gir ingen kort, ikke en tomtilstand.\n */\nexport const knownIssuesList2 = <ThrowOnError extends boolean = false>(options?: Options<KnownIssuesList2Data, ThrowOnError>): RequestResult<KnownIssuesList2Responses, KnownIssuesList2Errors, ThrowOnError> => (options?.client ?? client).get<KnownIssuesList2Responses, KnownIssuesList2Errors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/known-issues',\n ...options\n});\n\n/**\n * «Ja, jeg også» (DD-29): oppretter en Submission med status kjent_feil, uten tekst, som øker Reach uten ny sak. Kortet må være synlig for kalleren (ellers 404 known_issue_not_found). Med token: én per (subject, knownIssue) — gjentak returnerer den eksisterende med 200. Anonymt: teller i anonymousCount. Erstatter briefens «POST submissions/{id}/confirm-known-issue», der {id} var tvetydig — her er det den kjente feilen.\n */\nexport const knownIssuesConfirm = <ThrowOnError extends boolean = false>(options: Options<KnownIssuesConfirmData, ThrowOnError>): RequestResult<KnownIssuesConfirmResponses, KnownIssuesConfirmErrors, ThrowOnError> => (options.client ?? client).post<KnownIssuesConfirmResponses, KnownIssuesConfirmErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/known-issues/{id}/confirm',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * «Gå ut» — alltid synlig i fanen (DD-36). Deltakelsen går til trukket, subjektet forsvinner fra segmentet i samme transaksjon, program.segment_changed og program.participant_withdrawn emitteres, og ingen flere kontakter sendes. Idempotent: allerede trukket gir 200. Tillegg utover briefens liste: DD-36 krever den.\n */\nexport const programsWithdraw = <ThrowOnError extends boolean = false>(options: Options<ProgramsWithdrawData, ThrowOnError>): RequestResult<ProgramsWithdrawResponses, ProgramsWithdrawErrors, ThrowOnError> => (options.client ?? client).post<ProgramsWithdrawResponses, ProgramsWithdrawErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/participations/{id}/withdraw',\n ...options\n});\n\n/**\n * Alt om betaprogram for kallerens subject — SDK-ets programs.list(): egne invitasjoner (til banneret, DD-12), deltakelser med oppgavestatus (fanen), og oppfølginger som venter på svar. Ett kall, fordi SDK-et spør ved åpning av widgeten og aldri i bakgrunnen.\n */\nexport const programsListMine = <ThrowOnError extends boolean = false>(options?: Options<ProgramsListMineData, ThrowOnError>): RequestResult<ProgramsListMineResponses, ProgramsListMineErrors, ThrowOnError> => (options?.client ?? client).get<ProgramsListMineResponses, ProgramsListMineErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/programs',\n ...options\n});\n\n/**\n * «Mine innspill» (DD-27, DD-41): kallerens egne innsendinger, nyeste først, med status, løfte-grunnlag og svar. Krever token (401 feedback_token_required uten) — anonym modus har ingen liste. Kjente-feil-bekreftelser er med (tom tekst, knownIssue satt). Tillegg utover briefens liste: portalen kan ikke holde id-er lokalt.\n */\nexport const submissionsListMine = <ThrowOnError extends boolean = false>(options?: Options<SubmissionsListMineData, ThrowOnError>): RequestResult<SubmissionsListMineResponses, SubmissionsListMineErrors, ThrowOnError> => (options?.client ?? client).get<SubmissionsListMineResponses, SubmissionsListMineErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/submissions',\n ...options\n});\n\n/**\n * Innsendingen. Diskriminert på type: feil kan bære correlation og relatedKnownIssueId; onske kan ikke — et slikt felt gir 400 unknown_field. Teksten er ferdig lagret når 201 kommer; et skjermbilde legges til etterpå via Attachments og kan feile alene (DD-42).\n *\n * Server-side: subject fra tokenet (null uten token), context lest ved feltnavn mot hvitelisten (ukjent → 400 unknown_field, K5), text mot leietakerens min/max (400 text_too_short / text_too_long), correlation mot deklarerte kind (400 correlation_invalid), programId krever token og aktiv deltakelse (404 program_not_found ellers). Samme clientRef fra samme subject innen 24 t gir 200 med den eksisterende — offline-køen kan trygt prøve igjen.\n *\n * Status er alltid ny ved 201. Kvitteringen lover per spor (DD-07); løfteteksten står i klienten.\n */\nexport const submissionsCreate = <ThrowOnError extends boolean = false>(options: Options<SubmissionsCreateData, ThrowOnError>): RequestResult<SubmissionsCreateResponses, SubmissionsCreateErrors, ThrowOnError> => (options.client ?? client).post<SubmissionsCreateResponses, SubmissionsCreateErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/submissions',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Status for én egen innsending — SDK-ets subjects.status(). Krever token; en innsending som tilhører et annet subject, eller er anonym, gir 404 submission_not_found. Anonyme innsendinger kan ikke slås opp: det finnes ingen identitet å binde dem til.\n */\nexport const submissionsStatus = <ThrowOnError extends boolean = false>(options: Options<SubmissionsStatusData, ThrowOnError>): RequestResult<SubmissionsStatusResponses, SubmissionsStatusErrors, ThrowOnError> => (options.client ?? client).get<SubmissionsStatusResponses, SubmissionsStatusErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/submissions/{id}/status',\n ...options\n});\n\n/**\n * Fullfører en oppgave med utfall (fungerte · delvis · ikke). Én completion per (deltaker, oppgave) — 409 task_already_completed. submissionId må være kallerens egen innsending (404 submission_not_found ellers). Emitterer task_completed i målemodellen; ingen webhook.\n */\nexport const programsCompleteTask = <ThrowOnError extends boolean = false>(options: Options<ProgramsCompleteTaskData, ThrowOnError>): RequestResult<ProgramsCompleteTaskResponses, ProgramsCompleteTaskErrors, ThrowOnError> => (options.client ?? client).post<ProgramsCompleteTaskResponses, ProgramsCompleteTaskErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Tenant-Key', type: 'apiKey' }, {\n key: 'FeedbackTokenAuth',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/v1/ingest/tasks/{id}/complete',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Slettekvitteringen med tellinger når den er completed. Scope subjects:delete.\n */\nexport const deletionsGet = <ThrowOnError extends boolean = false>(options: Options<DeletionsGetData, ThrowOnError>): RequestResult<DeletionsGetResponses, DeletionsGetErrors, ThrowOnError> => (options.client ?? client).get<DeletionsGetResponses, DeletionsGetErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Api-Key', type: 'apiKey' }],\n url: '/v1/tenant/deletions/{id}',\n ...options\n});\n\n/**\n * Leietakeren bekrefter at flagget er PÅ (enabled = true) eller AV (false) for et pseudonym. Første bekreftelse tar programmet fra aapen til aktiv. false etter trukket fjerner «flagg ikke bekreftet av» (DD-36). Ukjent deltaker → 404 participant_not_found. Scope programs:confirm.\n */\nexport const programsFlagConfirmed = <ThrowOnError extends boolean = false>(options: Options<ProgramsFlagConfirmedData, ThrowOnError>): RequestResult<ProgramsFlagConfirmedResponses, ProgramsFlagConfirmedErrors, ThrowOnError> => (options.client ?? client).post<ProgramsFlagConfirmedResponses, ProgramsFlagConfirmedErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Api-Key', type: 'apiKey' }],\n url: '/v1/tenant/programs/{id}/participants/{sub}/flag-confirmed',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Den frosne rapporten — samme tall som panelet og testerens takk (DD-16). 404 report_not_found før avsluttet. Scope admin.\n */\nexport const programsReport = <ThrowOnError extends boolean = false>(options: Options<ProgramsReportData, ThrowOnError>): RequestResult<ProgramsReportResponses, ProgramsReportErrors, ThrowOnError> => (options.client ?? client).get<ProgramsReportResponses, ProgramsReportErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Api-Key', type: 'apiKey' }],\n url: '/v1/tenant/programs/{id}/report',\n ...options\n});\n\n/**\n * Segmentet leietakeren skrur flagget på for: aktive deltakeres pseudonymer og ingenting annet (M3.3). ETag på svaret; If-None-Match gir 304 når uendret. En deltaker som går ut er borte herfra i samme transaksjon som program.segment_changed emitteres (DD-36). Scope segment:read.\n */\nexport const programsSegment = <ThrowOnError extends boolean = false>(options: Options<ProgramsSegmentData, ThrowOnError>): RequestResult<ProgramsSegmentResponses, ProgramsSegmentErrors, ThrowOnError> => (options.client ?? client).get<ProgramsSegmentResponses, ProgramsSegmentErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Api-Key', type: 'apiKey' }],\n url: '/v1/tenant/programs/{id}/segment',\n ...options\n});\n\n/**\n * Sletting per pseudonym (K11), utløst av leietakeren når brukeren ber om det. Sletter tekst, vedlegg, koblingsnøkler, svar, notater om saken, deltakelser og oppfølginger innen 24 timer; Reach-tallet på berørte saker står uten kobling. Svarer 202 med kvittering straks; completed hentes via Deletions.get eller kommer som subject.deleted. Idempotent: et ukjent subject gir også 202 med nullteller — å svare 404 ville bekreftet hvem som har sendt inn. Scope subjects:delete.\n */\nexport const subjectsRemove = <ThrowOnError extends boolean = false>(options: Options<SubjectsRemoveData, ThrowOnError>): RequestResult<SubjectsRemoveResponses, SubjectsRemoveErrors, ThrowOnError> => (options.client ?? client).delete<SubjectsRemoveResponses, SubjectsRemoveErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Api-Key', type: 'apiKey' }],\n url: '/v1/tenant/subjects/{sub}',\n ...options\n});\n\n/**\n * Statusendring fra leietakerens verktøy (M1.4). Følger tilstandsmaskinen (409 invalid_status_transition); levert i feilsporet krever fixedIn (422). Emitterer submission.status_changed som ellers — innsenderen får samme løfte uansett hvem som flyttet saken. Scope admin. Står i kontrakten fordi M1.4 navngir den; bygges der.\n */\nexport const submissionsUpdateStatus = <ThrowOnError extends boolean = false>(options: Options<SubmissionsUpdateStatusData, ThrowOnError>): RequestResult<SubmissionsUpdateStatusResponses, SubmissionsUpdateStatusErrors, ThrowOnError> => (options.client ?? client).patch<SubmissionsUpdateStatusResponses, SubmissionsUpdateStatusErrors, ThrowOnError>({\n security: [{ name: 'X-Innspel-Api-Key', type: 'apiKey' }],\n url: '/v1/tenant/submissions/{id}/status',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n","/**\n * Versjonen som sendes som `context.sdkVersion` på hver innsending.\n *\n * `maaling.md` teller SDK-versjonsspredning per leietaker — «en gammel SDK er\n * et vedlikeholdsproblem som ellers er usynlig». Derfor er dette en konstant og\n * ikke et `require('../package.json')`: kjernen skal virke i en bundler som\n * ikke kan lese JSON, og `test/versjon.test.ts` holder den i takt med\n * `package.json`.\n */\nexport const VERSJON = '0.9.2';\n","import { createClient, createConfig, ingestEventsSend as eventsSend, type TelemetryBatchWire as TelemetryBatchDto, type TelemetryEventWire as TelemetryEventDto } from './api.js';\nimport type { Telemetry, TelemetryEvent } from './typer.js';\nimport { VERSJON } from './versjon.js';\n\n/**\n * Mottaket for målemodellen (M4.2, docs/maaling.md) — plattformens eget, aldri en\n * tredjepart (K19). Egen understi (`@innspel/core/telemetri`) så hovedbundelen og\n * taket på 10 kB står urørt: verten kobler senderen på med `init({ telemetry })`,\n * og `mount()` i `@innspel/web` gjør det som standard.\n *\n * Kallet er anonymt med vilje: ingen Authorization-header, aldri pseudonym. Bunten\n * bærer plattform, appversjon og SDK-versjon — ingenting annet fra konteksten.\n * Beste innsats: hendelsene samles i inntil `flushAfterMs` (standard 2 s) eller\n * `maxBatch` (standard 25), sendes én gang og prøves aldri på nytt. Tellinger er\n * ikke innhold, og en tapt telling er bedre enn en kø som vokser.\n */\nexport interface IngestTelemetryOptions {\n baseUrl: string;\n tenantKey: string;\n platform: TelemetryBatchDto['platform'];\n appVersion?: string;\n /** Standard er `fetch` i miljøet. Injiseres i test. */\n fetch?: typeof fetch;\n /** Ventetid før en bunt sendes. 0 = send straks. */\n flushAfterMs?: number;\n /** Bunten sendes når den når dette, uansett ventetid. Kontraktens tak er 100. */\n maxBatch?: number;\n}\n\nexport interface IngestTelemetry extends Telemetry {\n /** Sender det som ligger og venter nå — for verten når appen går i bakgrunnen. */\n flush(): Promise<void>;\n}\n\nconst MAKS_BUNT = 100;\n\n/** Hendelsene som avslutter noe: sendes straks, så tragten er komplett før appen lukkes. */\nconst STRAKS: ReadonlySet<TelemetryEvent['name']> = new Set(['submission_sent', 'submission_failed', 'followup_answered', 'task_completed']);\n\nexport function createIngestTelemetry(options: IngestTelemetryOptions): IngestTelemetry {\n if (typeof options?.baseUrl !== 'string' || options.baseUrl.length === 0) {\n throw new TypeError('[innspel] createIngestTelemetry: baseUrl mangler. Se README.md.');\n }\n if (typeof options.tenantKey !== 'string' || options.tenantKey.length === 0) {\n throw new TypeError('[innspel] createIngestTelemetry: tenantKey mangler. Se README.md.');\n }\n if (typeof options.platform !== 'string' || options.platform.length === 0) {\n throw new TypeError('[innspel] createIngestTelemetry: platform mangler (ios · android · web · …).');\n }\n\n const klient = createClient(createConfig({ baseUrl: options.baseUrl, ...(options.fetch ? { fetch: options.fetch } : {}) }));\n const ventetid = options.flushAfterMs ?? 2000;\n const maks = Math.min(options.maxBatch ?? 25, MAKS_BUNT);\n let buffer: TelemetryEventDto[] = [];\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n async function send(): Promise<void> {\n if (timer !== undefined) {\n clearTimeout(timer);\n timer = undefined;\n }\n if (buffer.length === 0) return;\n const events = buffer.slice(0, MAKS_BUNT);\n buffer = buffer.slice(MAKS_BUNT);\n try {\n await eventsSend({\n client: klient,\n headers: { 'X-Innspel-Tenant-Key': options.tenantKey },\n body: { events, platform: options.platform, sdkVersion: VERSJON, ...(options.appVersion ? { appVersion: options.appVersion } : {}) },\n });\n } catch {\n // Beste innsats: en tapt telling er ikke en feil verten skal se.\n }\n if (buffer.length > 0) await send();\n }\n\n return {\n emit(event) {\n buffer.push(tilLedning(event));\n if (buffer.length >= maks || STRAKS.has(event.name) || ventetid === 0) {\n void send();\n return;\n }\n timer ??= setTimeout(() => void send(), ventetid);\n },\n flush: send,\n };\n}\n\n/** Kjernens hendelse → kontraktens. Bare feltene hendelsen har; alt annet ville gitt 400. */\nfunction tilLedning(event: TelemetryEvent): TelemetryEventDto {\n const at = new Date().toISOString();\n switch (event.name) {\n case 'track_selected':\n return { name: event.name, at, type: event.type };\n case 'known_issue_shown':\n return { name: event.name, at, count: Math.max(0, Math.min(3, event.count)) };\n case 'submission_sent':\n return { name: event.name, at, type: event.type, hasAttachment: event.hasAttachment, offlineQueued: event.offlineQueued };\n case 'submission_failed':\n return { name: event.name, at, reason: aarsak(event.reason) };\n case 'task_completed':\n return { name: event.name, at, outcome: event.outcome as TelemetryEventDto['outcome'] };\n default:\n return { name: event.name, at };\n }\n}\n\n/**\n * Kjernens årsak → kontraktens lukkede liste. Kjernen sender feilkoden fra plattformen\n * ('rate_limited', 'feedback_token_expired', 'text_too_long' …) eller en nettverksfeil;\n * feilmeldingen selv sendes aldri.\n */\nfunction aarsak(reason: string): NonNullable<TelemetryEventDto['reason']> {\n const r = reason.toLowerCase();\n if (r.includes('network') || r.includes('offline') || r.includes('fetch')) return 'network';\n if (r.includes('rate') || r.includes('429')) return 'rate_limited';\n if (r.includes('unauth') || r.includes('token') || r.includes('401')) return 'unauthorized';\n if (r.includes('valid') || r.includes('text_') || r.includes('field') || r.includes('correlation') || r.includes('attachment') || r.includes('screenshot')) return 'validation';\n if (r.includes('server') || r.includes('internal') || r.includes('50')) return 'server';\n return 'unknown';\n}\n"]}
|