@rixl/sdk 0.8.0 → 0.8.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/index.d.ts +1 -0
- package/dist/index.js +185 -7
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["ROLE_TO_PROTO"],"sources":["../src/generated/core/bodySerializer.gen.ts","../src/generated/core/params.gen.ts","../src/generated/core/serverSentEvents.gen.ts","../src/generated/core/pathSerializer.gen.ts","../src/generated/core/utils.gen.ts","../src/generated/core/auth.gen.ts","../src/generated/client/utils.gen.ts","../src/generated/client/client.gen.ts","../src/generated/client.gen.ts","../src/generated/sdk.gen.ts","../src/auth/constants.ts","../src/auth/state.ts","../src/auth/providers/oauth.ts","../src/auth/providers/google.ts","../src/auth/providers/microsoft.ts","../src/auth/providers/apple.ts","../src/auth/providers/telegram.ts","../src/auth/url.ts","../src/auth/providers/utils.ts","../src/auth/api/refresh-tokens.ts","../src/auth/initialization.ts","../src/auth/cookie/util.ts","../src/auth/cookie/index.ts","../src/auth/userStore.ts","../src/auth/utils/jwt.ts","../src/auth/authStore.ts","../src/auth/api/types.ts","../src/auth/api-url.ts","../src/auth/api/sdk-client.ts","../src/auth/social/socialState.ts","../src/auth/api/error-handlers.ts","../src/auth/api/utils.ts","../src/auth/api/tokens.ts","../src/auth/validation/base.ts","../src/auth/validation/auth.ts","../src/auth/social/socialConnections.ts","../src/auth/api/client-core.ts","../src/auth/authConfig.ts","../src/auth/init.ts","../src/connect.ts","../src/auth/auth/logout.ts","../src/auth/membership/types.ts","../src/auth/membership/mappers.ts","../src/auth/membership/list.ts","../src/auth/validation/membership.ts","../src/auth/membership/invite.ts","../src/auth/membership/manage.ts","../src/auth/validation/user.ts","../src/auth/user.ts","../src/auth/organization.ts","../src/auth/auth/login.ts","../src/auth/auth/register.ts","../src/auth/auth/password.ts","../src/auth/auth/email.ts","../src/auth/validation/domain.ts","../src/auth/domain/types.ts","../src/auth/domain/mappers.ts","../src/auth/domain/index.ts","../src/auth/blog/index.ts","../src/auth/passkey.ts"],"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\ntype Slot = 'body' | 'headers' | 'path' | 'query';\n\nexport type Field =\n | {\n in: Exclude<Slot, 'body'>;\n /**\n * Field name. This is the name we want the user to see and use.\n */\n key: string;\n /**\n * Field mapped name. This is the name we want to use in the request.\n * If omitted, we use the same value as `key`.\n */\n map?: string;\n }\n | {\n in: Extract<Slot, 'body'>;\n /**\n * Key isn't required for bodies.\n */\n key?: string;\n map?: string;\n }\n | {\n /**\n * Field name. This is the name we want the user to see and use.\n */\n key: string;\n /**\n * Field mapped name. This is the name we want to use in the request.\n * If `in` is omitted, `map` aliases `key` to the transport layer.\n */\n map: Slot;\n };\n\nexport interface Fields {\n allowExtra?: Partial<Record<Slot, boolean>>;\n args?: ReadonlyArray<Field>;\n}\n\nexport type FieldsConfig = ReadonlyArray<Field | Fields>;\n\nconst extraPrefixesMap: Record<string, Slot> = {\n $body_: 'body',\n $headers_: 'headers',\n $path_: 'path',\n $query_: 'query',\n};\nconst extraPrefixes = Object.entries(extraPrefixesMap);\n\ntype KeyMap = Map<\n string,\n | {\n in: Slot;\n map?: string;\n }\n | {\n in?: never;\n map: Slot;\n }\n>;\n\nconst buildKeyMap = (fields: FieldsConfig, map?: KeyMap): KeyMap => {\n if (!map) {\n map = new Map();\n }\n\n for (const config of fields) {\n if ('in' in config) {\n if (config.key) {\n map.set(config.key, {\n in: config.in,\n map: config.map,\n });\n }\n } else if ('key' in config) {\n map.set(config.key, {\n map: config.map,\n });\n } else if (config.args) {\n buildKeyMap(config.args, map);\n }\n }\n\n return map;\n};\n\ninterface Params {\n body: unknown;\n headers: Record<string, unknown>;\n path: Record<string, unknown>;\n query: Record<string, unknown>;\n}\n\nconst stripEmptySlots = (params: Params) => {\n for (const [slot, value] of Object.entries(params)) {\n if (value && typeof value === 'object' && !Array.isArray(value) && !Object.keys(value).length) {\n delete params[slot as Slot];\n }\n }\n};\n\nexport const buildClientParams = (args: ReadonlyArray<unknown>, fields: FieldsConfig) => {\n const params: Params = {\n body: {},\n headers: {},\n path: {},\n query: {},\n };\n\n const map = buildKeyMap(fields);\n\n let config: FieldsConfig[number] | undefined;\n\n for (const [index, arg] of args.entries()) {\n if (fields[index]) {\n config = fields[index];\n }\n\n if (!config) {\n continue;\n }\n\n if ('in' in config) {\n if (config.key) {\n const field = map.get(config.key)!;\n const name = field.map || config.key;\n if (field.in) {\n (params[field.in] as Record<string, unknown>)[name] = arg;\n }\n } else {\n params.body = arg;\n }\n } else {\n for (const [key, value] of Object.entries(arg ?? {})) {\n const field = map.get(key);\n\n if (field) {\n if (field.in) {\n const name = field.map || key;\n (params[field.in] as Record<string, unknown>)[name] = value;\n } else {\n params[field.map] = value;\n }\n } else {\n const extra = extraPrefixes.find(([prefix]) => key.startsWith(prefix));\n\n if (extra) {\n const [prefix, slot] = extra;\n (params[slot] as Record<string, unknown>)[key.slice(prefix.length)] = value;\n } else if ('allowExtra' in config && config.allowExtra) {\n for (const [slot, allowed] of Object.entries(config.allowExtra)) {\n if (allowed) {\n (params[slot as Slot] as Record<string, unknown>)[key] = value;\n break;\n }\n }\n }\n }\n }\n }\n }\n\n stripEmptySlots(params);\n\n return params;\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) => {\n switch (style) {\n case 'form':\n return ',';\n case 'pipeDelimited':\n return '|';\n case 'spaceDelimited':\n return '%20';\n default:\n return ',';\n }\n};\n\nexport const separatorObjectExplode = (style: ObjectSeparatorStyle) => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\n\nexport const serializeArrayParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n}: SerializeOptions<ArraySeparatorStyle> & {\n value: unknown[];\n}) => {\n if (!explode) {\n const joinedValues = (\n allowReserved ? value : value.map((v) => encodeURIComponent(v as string))\n ).join(separatorArrayNoExplode(style));\n switch (style) {\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n case 'simple':\n return joinedValues;\n default:\n return `${name}=${joinedValues}`;\n }\n }\n\n const separator = separatorArrayExplode(style);\n const joinedValues = value\n .map((v) => {\n if (style === 'label' || style === 'simple') {\n return allowReserved ? v : encodeURIComponent(v as string);\n }\n\n return serializePrimitiveParam({\n allowReserved,\n name,\n value: v as string,\n });\n })\n .join(separator);\n return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;\n};\n\nexport const serializePrimitiveParam = ({\n allowReserved,\n name,\n value,\n}: SerializePrimitiveParam) => {\n if (value === undefined || value === null) {\n return '';\n }\n\n if (typeof value === 'object') {\n throw new Error(\n 'Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.',\n );\n }\n\n return `${name}=${allowReserved ? value : encodeURIComponent(value)}`;\n};\n\nexport const serializeObjectParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n valueOnly,\n}: SerializeOptions<ObjectSeparatorStyle> & {\n value: Record<string, unknown> | Date;\n valueOnly?: boolean;\n}) => {\n if (value instanceof Date) {\n return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}`;\n }\n\n if (style !== 'deepObject' && !explode) {\n let values: string[] = [];\n Object.entries(value).forEach(([key, v]) => {\n values = [...values, key, allowReserved ? (v as string) : encodeURIComponent(v as string)];\n });\n const joinedValues = values.join(',');\n switch (style) {\n case 'form':\n return `${name}=${joinedValues}`;\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n default:\n return joinedValues;\n }\n }\n\n const separator = separatorObjectExplode(style);\n const joinedValues = Object.entries(value)\n .map(([key, v]) =>\n serializePrimitiveParam({\n allowReserved,\n name: style === 'deepObject' ? `${name}[${key}]` : key,\n value: v as string,\n }),\n )\n .join(separator);\n return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { BodySerializer, QuerySerializer } from './bodySerializer.gen';\nimport {\n type ArraySeparatorStyle,\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from './pathSerializer.gen';\n\nexport interface PathSerializer {\n path: Record<string, unknown>;\n url: string;\n}\n\nexport const PATH_PARAM_RE = /\\{[^{}]+\\}/g;\n\nexport const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => {\n let url = _url;\n const matches = _url.match(PATH_PARAM_RE);\n if (matches) {\n for (const match of matches) {\n let explode = false;\n let name = match.substring(1, match.length - 1);\n let style: ArraySeparatorStyle = 'simple';\n\n if (name.endsWith('*')) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n\n if (name.startsWith('.')) {\n name = name.substring(1);\n style = 'label';\n } else if (name.startsWith(';')) {\n name = name.substring(1);\n style = 'matrix';\n }\n\n const value = path[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n if (Array.isArray(value)) {\n url = url.replace(match, serializeArrayParam({ explode, name, style, value }));\n continue;\n }\n\n if (typeof value === 'object') {\n url = url.replace(\n match,\n serializeObjectParam({\n explode,\n name,\n style,\n value: value as Record<string, unknown>,\n valueOnly: true,\n }),\n );\n continue;\n }\n\n if (style === 'matrix') {\n url = url.replace(\n match,\n `;${serializePrimitiveParam({\n name,\n value: value as string,\n })}`,\n );\n continue;\n }\n\n const replaceValue = encodeURIComponent(\n style === 'label' ? `.${value as string}` : (value as string),\n );\n url = url.replace(match, replaceValue);\n }\n }\n return url;\n};\n\nexport const getUrl = ({\n baseUrl,\n path,\n query,\n querySerializer,\n url: _url,\n}: {\n baseUrl?: string;\n path?: Record<string, unknown>;\n query?: Record<string, unknown>;\n querySerializer: QuerySerializer;\n url: string;\n}) => {\n const pathUrl = _url.startsWith('/') ? _url : `/${_url}`;\n let url = (baseUrl ?? '') + pathUrl;\n if (path) {\n url = defaultPathSerializer({ path, url });\n }\n let search = query ? querySerializer(query) : '';\n if (search.startsWith('?')) {\n search = search.substring(1);\n }\n if (search) {\n url += `?${search}`;\n }\n return url;\n};\n\nexport function getValidRequestBody(options: {\n body?: unknown;\n bodySerializer?: BodySerializer | null;\n serializedBody?: unknown;\n}) {\n const hasBody = options.body !== undefined;\n const isSerializedBody = hasBody && options.bodySerializer;\n\n if (isSerializedBody) {\n if ('serializedBody' in options) {\n const hasSerializedBody =\n options.serializedBody !== undefined && options.serializedBody !== '';\n\n return hasSerializedBody ? options.serializedBody : null;\n }\n\n // not all clients implement a serializedBody property (i.e., client-axios)\n return options.body !== '' ? options.body : null;\n }\n\n // plain/text body\n if (hasBody) {\n return options.body;\n }\n\n // no body was provided\n return undefined;\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\nexport type AuthToken = string | undefined;\n\nexport interface Auth {\n /**\n * Which part of the request do we use to send the auth?\n *\n * @default 'header'\n */\n in?: 'header' | 'query' | 'cookie';\n /**\n * Header or query parameter name.\n *\n * @default 'Authorization'\n */\n name?: string;\n scheme?: 'basic' | 'bearer';\n type: 'apiKey' | 'http';\n}\n\nexport const getAuthToken = async (\n auth: Auth,\n callback: ((auth: Auth) => Promise<AuthToken> | AuthToken) | AuthToken,\n): Promise<string | undefined> => {\n const token = typeof callback === 'function' ? await callback(auth) : callback;\n\n if (!token) {\n return;\n }\n\n if (auth.scheme === 'bearer') {\n return `Bearer ${token}`;\n }\n\n if (auth.scheme === 'basic') {\n return `Basic ${btoa(token)}`;\n }\n\n return token;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { getAuthToken } from '../core/auth.gen';\nimport type { QuerySerializerOptions } from '../core/bodySerializer.gen';\nimport { jsonBodySerializer } from '../core/bodySerializer.gen';\nimport {\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from '../core/pathSerializer.gen';\nimport { getUrl } from '../core/utils.gen';\nimport type { Client, ClientOptions, Config, RequestOptions } from './types.gen';\n\nexport const createQuerySerializer = <T = unknown>({\n parameters = {},\n ...args\n}: QuerySerializerOptions = {}) => {\n const querySerializer = (queryParams: T) => {\n const search: string[] = [];\n if (queryParams && typeof queryParams === 'object') {\n for (const name in queryParams) {\n const value = queryParams[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n const options = parameters[name] || args;\n\n if (Array.isArray(value)) {\n const serializedArray = serializeArrayParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'form',\n value,\n ...options.array,\n });\n if (serializedArray) search.push(serializedArray);\n } else if (typeof value === 'object') {\n const serializedObject = serializeObjectParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'deepObject',\n value: value as Record<string, unknown>,\n ...options.object,\n });\n if (serializedObject) search.push(serializedObject);\n } else {\n const serializedPrimitive = serializePrimitiveParam({\n allowReserved: options.allowReserved,\n name,\n value: value as string,\n });\n if (serializedPrimitive) search.push(serializedPrimitive);\n }\n }\n }\n return search.join('&');\n };\n return querySerializer;\n};\n\n/**\n * Infers parseAs value from provided Content-Type header.\n */\nexport const getParseAs = (contentType: string | null): Exclude<Config['parseAs'], 'auto'> => {\n if (!contentType) {\n // If no Content-Type header is provided, the best we can do is return the raw response body,\n // which is effectively the same as the 'stream' option.\n return 'stream';\n }\n\n const cleanContent = contentType.split(';')[0]?.trim();\n\n if (!cleanContent) {\n return;\n }\n\n if (cleanContent.startsWith('application/json') || cleanContent.endsWith('+json')) {\n return 'json';\n }\n\n if (cleanContent === 'multipart/form-data') {\n return 'formData';\n }\n\n if (\n ['application/', 'audio/', 'image/', 'video/'].some((type) => cleanContent.startsWith(type))\n ) {\n return 'blob';\n }\n\n if (cleanContent.startsWith('text/')) {\n return 'text';\n }\n\n return;\n};\n\nconst checkForExistence = (\n options: Pick<RequestOptions, 'auth' | 'query'> & {\n headers: Headers;\n },\n name?: string,\n): boolean => {\n if (!name) {\n return false;\n }\n if (\n options.headers.has(name) ||\n options.query?.[name] ||\n options.headers.get('Cookie')?.includes(`${name}=`)\n ) {\n return true;\n }\n return false;\n};\n\nexport const setAuthParams = async ({\n security,\n ...options\n}: Pick<Required<RequestOptions>, 'security'> &\n Pick<RequestOptions, 'auth' | 'query'> & {\n headers: Headers;\n }) => {\n for (const auth of security) {\n if (checkForExistence(options, auth.name)) {\n continue;\n }\n\n const token = await getAuthToken(auth, options.auth);\n\n if (!token) {\n continue;\n }\n\n const name = auth.name ?? 'Authorization';\n\n switch (auth.in) {\n case 'query':\n if (!options.query) {\n options.query = {};\n }\n options.query[name] = token;\n break;\n case 'cookie':\n options.headers.append('Cookie', `${name}=${token}`);\n break;\n case 'header':\n default:\n options.headers.set(name, token);\n break;\n }\n }\n};\n\nexport const buildUrl: Client['buildUrl'] = (options) =>\n getUrl({\n baseUrl: options.baseUrl as string,\n path: options.path,\n query: options.query,\n querySerializer:\n typeof options.querySerializer === 'function'\n ? options.querySerializer\n : createQuerySerializer(options.querySerializer),\n url: options.url,\n });\n\nexport const mergeConfigs = (a: Config, b: Config): Config => {\n const config = { ...a, ...b };\n if (config.baseUrl?.endsWith('/')) {\n config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1);\n }\n config.headers = mergeHeaders(a.headers, b.headers);\n return config;\n};\n\nconst headersEntries = (headers: Headers): Array<[string, string]> => {\n const entries: Array<[string, string]> = [];\n headers.forEach((value, key) => {\n entries.push([key, value]);\n });\n return entries;\n};\n\nexport const mergeHeaders = (\n ...headers: Array<Required<Config>['headers'] | undefined>\n): Headers => {\n const mergedHeaders = new Headers();\n for (const header of headers) {\n if (!header) {\n continue;\n }\n\n const iterator = header instanceof Headers ? headersEntries(header) : Object.entries(header);\n\n for (const [key, value] of iterator) {\n if (value === null) {\n mergedHeaders.delete(key);\n } else if (Array.isArray(value)) {\n for (const v of value) {\n mergedHeaders.append(key, v as string);\n }\n } else if (value !== undefined) {\n // assume object headers are meant to be JSON stringified, i.e., their\n // content value in OpenAPI specification is 'application/json'\n mergedHeaders.set(\n key,\n typeof value === 'object' ? JSON.stringify(value) : (value as string),\n );\n }\n }\n }\n return mergedHeaders;\n};\n\ntype ErrInterceptor<Err, Res, Req, Options> = (\n error: Err,\n /** response may be undefined due to a network error where no response object is produced */\n response: Res | undefined,\n /** request may be undefined, because error may be from building the request object itself */\n request: Req | undefined,\n options: Options,\n) => Err | Promise<Err>;\n\ntype ReqInterceptor<Req, Options> = (request: Req, options: Options) => Req | Promise<Req>;\n\ntype ResInterceptor<Res, Req, Options> = (\n response: Res,\n request: Req,\n options: Options,\n) => Res | Promise<Res>;\n\nclass Interceptors<Interceptor> {\n fns: Array<Interceptor | null> = [];\n\n clear(): void {\n this.fns = [];\n }\n\n eject(id: number | Interceptor): void {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = null;\n }\n }\n\n exists(id: number | Interceptor): boolean {\n const index = this.getInterceptorIndex(id);\n return Boolean(this.fns[index]);\n }\n\n getInterceptorIndex(id: number | Interceptor): number {\n if (typeof id === 'number') {\n return this.fns[id] ? id : -1;\n }\n return this.fns.indexOf(id);\n }\n\n update(id: number | Interceptor, fn: Interceptor): number | Interceptor | false {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = fn;\n return id;\n }\n return false;\n }\n\n use(fn: Interceptor): number {\n this.fns.push(fn);\n return this.fns.length - 1;\n }\n}\n\nexport interface Middleware<Req, Res, Err, Options> {\n error: Interceptors<ErrInterceptor<Err, Res, Req, Options>>;\n request: Interceptors<ReqInterceptor<Req, Options>>;\n response: Interceptors<ResInterceptor<Res, Req, Options>>;\n}\n\nexport const createInterceptors = <Req, Res, Err, Options>(): Middleware<\n Req,\n Res,\n Err,\n Options\n> => ({\n error: new Interceptors<ErrInterceptor<Err, Res, Req, Options>>(),\n request: new Interceptors<ReqInterceptor<Req, Options>>(),\n response: new Interceptors<ResInterceptor<Res, Req, Options>>(),\n});\n\nconst defaultQuerySerializer = createQuerySerializer({\n allowReserved: false,\n array: {\n explode: true,\n style: 'form',\n },\n object: {\n explode: true,\n style: 'deepObject',\n },\n});\n\nconst defaultHeaders = {\n 'Content-Type': 'application/json',\n};\n\nexport const createConfig = <T extends ClientOptions = ClientOptions>(\n override: Config<Omit<ClientOptions, keyof T> & T> = {},\n): Config<Omit<ClientOptions, keyof T> & T> => ({\n ...jsonBodySerializer,\n headers: defaultHeaders,\n parseAs: 'auto',\n querySerializer: defaultQuerySerializer,\n ...override,\n});\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { createSseClient } from '../core/serverSentEvents.gen';\nimport type { HttpMethod } from '../core/types.gen';\nimport { getValidRequestBody } from '../core/utils.gen';\nimport type { Client, Config, RequestOptions, ResolvedRequestOptions } from './types.gen';\nimport {\n buildUrl,\n createConfig,\n createInterceptors,\n getParseAs,\n mergeConfigs,\n mergeHeaders,\n setAuthParams,\n} from './utils.gen';\n\ntype ReqInit = Omit<RequestInit, 'body' | 'headers'> & {\n body?: any;\n headers: ReturnType<typeof mergeHeaders>;\n};\n\nexport const createClient = (config: Config = {}): Client => {\n let _config = mergeConfigs(createConfig(), config);\n\n const getConfig = (): Config => ({ ..._config });\n\n const setConfig = (config: Config): Config => {\n _config = mergeConfigs(_config, config);\n return getConfig();\n };\n\n const interceptors = createInterceptors<Request, Response, unknown, ResolvedRequestOptions>();\n\n const beforeRequest = async <\n TData = unknown,\n TResponseStyle extends 'data' | 'fields' = 'fields',\n ThrowOnError extends boolean = boolean,\n Url extends string = string,\n >(\n options: RequestOptions<TData, TResponseStyle, ThrowOnError, Url>,\n ) => {\n const opts = {\n ..._config,\n ...options,\n fetch: options.fetch ?? _config.fetch ?? globalThis.fetch,\n headers: mergeHeaders(_config.headers, options.headers),\n serializedBody: undefined as string | undefined,\n };\n\n if (opts.security) {\n await setAuthParams({\n ...opts,\n security: opts.security,\n });\n }\n\n if (opts.requestValidator) {\n await opts.requestValidator(opts);\n }\n\n if (opts.body !== undefined && opts.bodySerializer) {\n opts.serializedBody = opts.bodySerializer(opts.body) as string | undefined;\n }\n\n // remove Content-Type header if body is empty to avoid sending invalid requests\n if (opts.body === undefined || opts.serializedBody === '') {\n opts.headers.delete('Content-Type');\n }\n\n const resolvedOpts = opts as typeof opts &\n ResolvedRequestOptions<TResponseStyle, ThrowOnError, Url>;\n const url = buildUrl(resolvedOpts);\n\n return { opts: resolvedOpts, url };\n };\n\n const request: Client['request'] = async (options) => {\n const throwOnError = options.throwOnError ?? _config.throwOnError;\n const responseStyle = options.responseStyle ?? _config.responseStyle;\n\n let request: Request | undefined;\n let response: Response | undefined;\n\n try {\n const { opts, url } = await beforeRequest(options);\n const requestInit: ReqInit = {\n redirect: 'follow',\n ...opts,\n body: getValidRequestBody(opts),\n };\n\n request = new Request(url, requestInit);\n\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = opts.fetch!;\n\n response = await _fetch(request);\n\n for (const fn of interceptors.response.fns) {\n if (fn) {\n response = await fn(response, request, opts);\n }\n }\n\n const result = {\n request,\n response,\n };\n\n if (response.ok) {\n const parseAs =\n (opts.parseAs === 'auto'\n ? getParseAs(response.headers.get('Content-Type'))\n : opts.parseAs) ?? 'json';\n\n if (response.status === 204 || response.headers.get('Content-Length') === '0') {\n let emptyData: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'text':\n emptyData = await response[parseAs]();\n break;\n case 'formData':\n emptyData = new FormData();\n break;\n case 'stream':\n emptyData = response.body;\n break;\n case 'json':\n default:\n emptyData = {};\n break;\n }\n return opts.responseStyle === 'data'\n ? emptyData\n : {\n data: emptyData,\n ...result,\n };\n }\n\n let data: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'formData':\n case 'text':\n data = await response[parseAs]();\n break;\n case 'json': {\n // Some servers return 200 with no Content-Length and empty body.\n // response.json() would throw; read as text and parse if non-empty.\n const text = await response.text();\n data = text ? JSON.parse(text) : {};\n break;\n }\n case 'stream':\n return opts.responseStyle === 'data'\n ? response.body\n : {\n data: response.body,\n ...result,\n };\n }\n\n if (parseAs === 'json') {\n if (opts.responseValidator) {\n await opts.responseValidator(data);\n }\n\n if (opts.responseTransformer) {\n data = await opts.responseTransformer(data);\n }\n }\n\n return opts.responseStyle === 'data'\n ? data\n : {\n data,\n ...result,\n };\n }\n\n const textError = await response.text();\n let jsonError: unknown;\n\n try {\n jsonError = JSON.parse(textError);\n } catch {\n // noop\n }\n\n throw jsonError ?? textError;\n } catch (error) {\n let finalError = error;\n\n for (const fn of interceptors.error.fns) {\n if (fn) {\n finalError = await fn(finalError, response, request, options as ResolvedRequestOptions);\n }\n }\n\n finalError = finalError || {};\n\n if (throwOnError) {\n throw finalError;\n }\n\n // TODO: we probably want to return error and improve types\n return responseStyle === 'data'\n ? undefined\n : {\n error: finalError,\n request,\n response,\n };\n }\n };\n\n const makeMethodFn = (method: Uppercase<HttpMethod>) => (options: RequestOptions) =>\n request({ ...options, method });\n\n const makeSseFn = (method: Uppercase<HttpMethod>) => async (options: RequestOptions) => {\n const { opts, url } = await beforeRequest(options);\n return createSseClient({\n ...opts,\n body: opts.body as BodyInit | null | undefined,\n method,\n onRequest: async (url, init) => {\n let request = new Request(url, init);\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n return request;\n },\n serializedBody: getValidRequestBody(opts) as BodyInit | null | undefined,\n url,\n });\n };\n\n const _buildUrl: Client['buildUrl'] = (options) => buildUrl({ ..._config, ...options });\n\n return {\n buildUrl: _buildUrl,\n connect: makeMethodFn('CONNECT'),\n delete: makeMethodFn('DELETE'),\n get: makeMethodFn('GET'),\n getConfig,\n head: makeMethodFn('HEAD'),\n interceptors,\n options: makeMethodFn('OPTIONS'),\n patch: makeMethodFn('PATCH'),\n post: makeMethodFn('POST'),\n put: makeMethodFn('PUT'),\n request,\n setConfig,\n sse: {\n connect: makeSseFn('CONNECT'),\n delete: makeSseFn('DELETE'),\n get: makeSseFn('GET'),\n head: makeSseFn('HEAD'),\n options: makeSseFn('OPTIONS'),\n patch: makeSseFn('PATCH'),\n post: makeSseFn('POST'),\n put: makeSseFn('PUT'),\n trace: makeSseFn('TRACE'),\n },\n trace: makeMethodFn('TRACE'),\n } as Client;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { type ClientOptions, type Config, createClient, createConfig } from './client';\nimport type { ClientOptions as ClientOptions2 } from './types.gen';\n\n/**\n * The `createClientConfig()` function will be called on client initialization\n * and the returned object will become the client's initial configuration.\n *\n * You may want to initialize your client this way instead of calling\n * `setConfig()`. This is useful for example if you're using Next.js\n * to ensure your client always has the correct values.\n */\nexport type CreateClientConfig<T extends ClientOptions = ClientOptions2> = (override?: Config<ClientOptions & T>) => Config<Required<ClientOptions> & T>;\n\nexport const client = createClient(createConfig<ClientOptions2>({ baseUrl: 'https://raw.githubusercontent.com' }));\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Client, Options as Options2, TDataShape } from './client';\nimport { client } from './client.gen';\nimport type { AnalyticsV1DashboardServiceGetDashboardStatsData, AnalyticsV1DashboardServiceGetDashboardStatsResponses, AnalyticsV1EventsServiceTrackEventsData, AnalyticsV1EventsServiceTrackEventsResponses, AnalyticsV1FeedsServiceGetFeedStatsData, AnalyticsV1FeedsServiceGetFeedStatsResponses, AnalyticsV1FeedsServiceGetTopFeedsData, AnalyticsV1FeedsServiceGetTopFeedsResponses, AnalyticsV1FunnelsServiceGetFunnelAnalyticsData, AnalyticsV1FunnelsServiceGetFunnelAnalyticsResponses, AnalyticsV1FunnelsServiceGetRetentionAnalyticsData, AnalyticsV1FunnelsServiceGetRetentionAnalyticsResponses, AnalyticsV1HeatmapServiceGetHotSegmentsData, AnalyticsV1HeatmapServiceGetHotSegmentsResponses, AnalyticsV1HeatmapServiceGetVideoHeatmapData, AnalyticsV1HeatmapServiceGetVideoHeatmapResponses, AnalyticsV1PostsServiceGetPostStatsData, AnalyticsV1PostsServiceGetPostStatsResponses, AnalyticsV1PostsServiceGetTopPostsData, AnalyticsV1PostsServiceGetTopPostsResponses, AnalyticsV1RealtimeServiceGetRealtimeStatsData, AnalyticsV1RealtimeServiceGetRealtimeStatsResponses, AnalyticsV1VideosServiceGetTopVideosData, AnalyticsV1VideosServiceGetTopVideosResponses, AnalyticsV1VideosServiceGetVideoStatsData, AnalyticsV1VideosServiceGetVideoStatsResponses, ApikeysV1ApiKeyServiceCreateApiKeyData, ApikeysV1ApiKeyServiceCreateApiKeyResponses, ApikeysV1ApiKeyServiceDeleteApiKeyData, ApikeysV1ApiKeyServiceDeleteApiKeyResponses, ApikeysV1ApiKeyServiceListApiKeysData, ApikeysV1ApiKeyServiceListApiKeysResponses, ApikeysV1ApiKeyServiceRotateApiKeyData, ApikeysV1ApiKeyServiceRotateApiKeyResponses, AuthV1BlogServiceGetBlogSubscriptionData, AuthV1BlogServiceGetBlogSubscriptionResponses, AuthV1BlogServiceSendBlogBroadcastData, AuthV1BlogServiceSendBlogBroadcastResponses, AuthV1BlogServiceSubscribeBlogData, AuthV1BlogServiceSubscribeBlogResponses, AuthV1BlogServiceUnsubscribeBlogByEmailData, AuthV1BlogServiceUnsubscribeBlogByEmailResponses, AuthV1BlogServiceUnsubscribeBlogData, AuthV1BlogServiceUnsubscribeBlogResponses, AuthV1DomainServiceCheckDomainVerificationData, AuthV1DomainServiceCheckDomainVerificationResponses, AuthV1DomainServiceCreateDomainVerificationData, AuthV1DomainServiceCreateDomainVerificationResponses, AuthV1DomainServiceGetDomainAutoJoinData, AuthV1DomainServiceGetDomainAutoJoinResponses, AuthV1DomainServiceGetDomainStatusData, AuthV1DomainServiceGetDomainStatusResponses, AuthV1DomainServiceRemoveDomainData, AuthV1DomainServiceRemoveDomainResponses, AuthV1DomainServiceSetDomainAutoJoinData, AuthV1DomainServiceSetDomainAutoJoinResponses, AuthV1EmailServiceAddEmailData, AuthV1EmailServiceAddEmailResponses, AuthV1EmailServiceGetUserEmailStatusData, AuthV1EmailServiceGetUserEmailStatusResponses, AuthV1EmailServiceInitiateEmailChangeData, AuthV1EmailServiceInitiateEmailChangeResponses, AuthV1EmailServiceLoginData, AuthV1EmailServiceLoginResponses, AuthV1EmailServiceRegisterData, AuthV1EmailServiceRegisterResponses, AuthV1EmailServiceResendVerificationData, AuthV1EmailServiceResendVerificationResponses, AuthV1EmailServiceResetPasswordData, AuthV1EmailServiceResetPasswordResponses, AuthV1EmailServiceSendPasswordResetData, AuthV1EmailServiceSendPasswordResetResponses, AuthV1EmailServiceVerifyEmailData, AuthV1EmailServiceVerifyEmailResponses, AuthV1MembershipServiceAcceptInvitationData, AuthV1MembershipServiceAcceptInvitationResponses, AuthV1MembershipServiceCancelInvitationData, AuthV1MembershipServiceCancelInvitationResponses, AuthV1MembershipServiceCheckMembershipData, AuthV1MembershipServiceCheckMembershipResponses, AuthV1MembershipServiceDeclineInvitationData, AuthV1MembershipServiceDeclineInvitationResponses, AuthV1MembershipServiceGetInternalMembershipInfoData, AuthV1MembershipServiceGetInternalMembershipInfoResponses, AuthV1MembershipServiceInviteMemberData, AuthV1MembershipServiceInviteMemberResponses, AuthV1MembershipServiceLeaveOrganizationData, AuthV1MembershipServiceLeaveOrganizationResponses, AuthV1MembershipServiceListMembershipApplicationsData, AuthV1MembershipServiceListMembershipApplicationsResponses, AuthV1MembershipServiceListMembershipsData, AuthV1MembershipServiceListMembershipsResponses, AuthV1MembershipServiceListOrganizationMembersData, AuthV1MembershipServiceListOrganizationMembersResponses, AuthV1MembershipServiceReactivateMemberData, AuthV1MembershipServiceReactivateMemberResponses, AuthV1MembershipServiceRemoveMemberData, AuthV1MembershipServiceRemoveMemberResponses, AuthV1MembershipServiceResendInvitationData, AuthV1MembershipServiceResendInvitationResponses, AuthV1MembershipServiceSuspendMemberData, AuthV1MembershipServiceSuspendMemberResponses, AuthV1MembershipServiceUpdateActiveMembershipData, AuthV1MembershipServiceUpdateActiveMembershipResponses, AuthV1MembershipServiceUpdateMemberRoleData, AuthV1MembershipServiceUpdateMemberRoleResponses, AuthV1MembershipServiceUpdateMembershipStateData, AuthV1MembershipServiceUpdateMembershipStateResponses, AuthV1MembershipServiceUpdateOrgNameData, AuthV1MembershipServiceUpdateOrgNameResponses, AuthV1MembershipServiceUpdateOrgUsernameData, AuthV1MembershipServiceUpdateOrgUsernameResponses, AuthV1OtpServiceDeleteOtpData, AuthV1OtpServiceDeleteOtpResponses, AuthV1OtpServiceGetOtpStatusData, AuthV1OtpServiceGetOtpStatusResponses, AuthV1OtpServiceSetupOtpData, AuthV1OtpServiceSetupOtpResponses, AuthV1OtpServiceVerifyOtpData, AuthV1OtpServiceVerifyOtpResponses, AuthV1OtpServiceVerifyTotpForLoginData, AuthV1OtpServiceVerifyTotpForLoginResponses, AuthV1PasskeyServiceDeletePasskeyData, AuthV1PasskeyServiceDeletePasskeyResponses, AuthV1PasskeyServiceListPasskeysData, AuthV1PasskeyServiceListPasskeysResponses, AuthV1PasskeyServicePasskeyLoginBeginData, AuthV1PasskeyServicePasskeyLoginBeginResponses, AuthV1PasskeyServicePasskeyLoginFinishData, AuthV1PasskeyServicePasskeyLoginFinishResponses, AuthV1PasskeyServicePasskeyRegisterBeginData, AuthV1PasskeyServicePasskeyRegisterBeginResponses, AuthV1PasskeyServicePasskeyRegisterFinishData, AuthV1PasskeyServicePasskeyRegisterFinishResponses, AuthV1PasskeyServiceRenamePasskeyData, AuthV1PasskeyServiceRenamePasskeyResponses, AuthV1PasskeyServiceVerifyPasskeyForLoginData, AuthV1PasskeyServiceVerifyPasskeyForLoginResponses, AuthV1PolicyServiceAttachPolicyData, AuthV1PolicyServiceAttachPolicyResponses, AuthV1PolicyServiceCreatePolicyData, AuthV1PolicyServiceCreatePolicyResponses, AuthV1PolicyServiceDeletePolicyData, AuthV1PolicyServiceDeletePolicyResponses, AuthV1PolicyServiceDetachPolicyData, AuthV1PolicyServiceDetachPolicyResponses, AuthV1PolicyServiceGetPolicyData, AuthV1PolicyServiceGetPolicyResponses, AuthV1PolicyServiceListPermissionRegistryData, AuthV1PolicyServiceListPermissionRegistryResponses, AuthV1PolicyServiceListPoliciesData, AuthV1PolicyServiceListPoliciesResponses, AuthV1PolicyServiceListPolicyAttachmentsData, AuthV1PolicyServiceListPolicyAttachmentsResponses, AuthV1PolicyServiceListUserPoliciesData, AuthV1PolicyServiceListUserPoliciesResponses, AuthV1PolicyServiceUpdatePolicyData, AuthV1PolicyServiceUpdatePolicyResponses, AuthV1ProvidersServiceConnectProviderData, AuthV1ProvidersServiceConnectProviderResponses, AuthV1ProvidersServiceDisconnectProviderData, AuthV1ProvidersServiceDisconnectProviderResponses, AuthV1ProvidersServiceListProvidersData, AuthV1ProvidersServiceListProvidersResponses, AuthV1TokenServiceLogoutData, AuthV1TokenServiceLogoutResponses, AuthV1TokenServiceRefreshTokenData, AuthV1TokenServiceRefreshTokenResponses, AuthV1UserServiceGetUserData, AuthV1UserServiceGetUserInfoData, AuthV1UserServiceGetUserInfoResponses, AuthV1UserServiceGetUserResponses, AuthV1UserServiceUpdateNameData, AuthV1UserServiceUpdateNameResponses, AuthV1UserServiceUpdateUsernameData, AuthV1UserServiceUpdateUsernameResponses, BillingV1InvoiceServiceListInvoicesData, BillingV1InvoiceServiceListInvoicesResponses, BillingV1InvoiceServiceUpdateInvoiceStatusData, BillingV1InvoiceServiceUpdateInvoiceStatusResponses, BillingV1PaymentServiceCalculateGenericTaxData, BillingV1PaymentServiceCalculateGenericTaxResponses, BillingV1PaymentServiceCalculateTaxData, BillingV1PaymentServiceCalculateTaxResponses, BillingV1PaymentServiceCreateCheckoutSessionData, BillingV1PaymentServiceCreateCheckoutSessionResponses, BillingV1PaymentServiceCreateSetupIntentData, BillingV1PaymentServiceCreateSetupIntentResponses, BillingV1PaymentServiceDeletePaymentMethodData, BillingV1PaymentServiceDeletePaymentMethodResponses, BillingV1PaymentServiceGetBillingAddressData, BillingV1PaymentServiceGetBillingAddressResponses, BillingV1PaymentServiceGetPaymentMethodFromPaymentIntentData, BillingV1PaymentServiceGetPaymentMethodFromPaymentIntentResponses, BillingV1PaymentServiceGetPaymentMethodFromSetupIntentData, BillingV1PaymentServiceGetPaymentMethodFromSetupIntentResponses, BillingV1PaymentServiceListPaymentMethodsData, BillingV1PaymentServiceListPaymentMethodsResponses, BillingV1PaymentServiceUpgradeSubscriptionData, BillingV1PaymentServiceUpgradeSubscriptionResponses, BillingV1PaymentServiceUpsertBillingAddressData, BillingV1PaymentServiceUpsertBillingAddressResponses, BillingV1PaymentServiceUpsertPaymentMethodData, BillingV1PaymentServiceUpsertPaymentMethodResponses, BillingV1PlanServiceGetPlanData, BillingV1PlanServiceGetPlanResponses, BillingV1PlanServiceListPlansData, BillingV1PlanServiceListPlansResponses, BillingV1SalesServiceContactSalesData, BillingV1SalesServiceContactSalesResponses, BillingV1SubscriptionServiceCancelSubscriptionData, BillingV1SubscriptionServiceCancelSubscriptionResponses, BillingV1SubscriptionServiceCreateSubscriptionData, BillingV1SubscriptionServiceCreateSubscriptionResponses, BillingV1SubscriptionServiceGetSubscriptionData, BillingV1SubscriptionServiceGetSubscriptionHistoryData, BillingV1SubscriptionServiceGetSubscriptionHistoryResponses, BillingV1SubscriptionServiceGetSubscriptionResponses, BillingV1SubscriptionServiceReactivateSubscriptionData, BillingV1SubscriptionServiceReactivateSubscriptionResponses, BillingV1UsageServiceGetBandwidthUsageData, BillingV1UsageServiceGetBandwidthUsageHistoryData, BillingV1UsageServiceGetBandwidthUsageHistoryResponses, BillingV1UsageServiceGetBandwidthUsageResponses, BillingV1UsageServiceGetStorageUsageData, BillingV1UsageServiceGetStorageUsageHistoryData, BillingV1UsageServiceGetStorageUsageHistoryResponses, BillingV1UsageServiceGetStorageUsageResponses, BillingV1UsageServiceRefreshBandwidthUsageData, BillingV1UsageServiceRefreshBandwidthUsageResponses, BillingV1UsageServiceRefreshStorageUsageData, BillingV1UsageServiceRefreshStorageUsageResponses, ClientauthV1ClientCredentialServiceCreateClientCredentialData, ClientauthV1ClientCredentialServiceCreateClientCredentialResponses, ClientauthV1ClientCredentialServiceListClientCredentialsData, ClientauthV1ClientCredentialServiceListClientCredentialsResponses, ClientauthV1ClientCredentialServiceMintClientTokenData, ClientauthV1ClientCredentialServiceMintClientTokenResponses, ClientauthV1ClientCredentialServiceRevokeClientCredentialData, ClientauthV1ClientCredentialServiceRevokeClientCredentialResponses, FeedsV1FeedServiceCreateFeedData, FeedsV1FeedServiceCreateFeedResponses, FeedsV1FeedServiceDeleteFeedData, FeedsV1FeedServiceDeleteFeedResponses, FeedsV1FeedServiceGetFeedData, FeedsV1FeedServiceGetFeedResponses, FeedsV1FeedServiceListFeedsData, FeedsV1FeedServiceListFeedsResponses, FeedsV1FeedServiceUpdateFeedData, FeedsV1FeedServiceUpdateFeedResponses, ImagesV1ImageConversionServiceMarkImageFailedData, ImagesV1ImageConversionServiceMarkImageFailedResponses, ImagesV1ImageConversionServiceMarkImageProcessedData, ImagesV1ImageConversionServiceMarkImageProcessedResponses, ImagesV1ImageConversionServiceTakeUnprocessedImageData, ImagesV1ImageConversionServiceTakeUnprocessedImageResponses, ImagesV1ImageServiceCreateImageUploadData, ImagesV1ImageServiceCreateImageUploadResponses, ImagesV1ImageServiceDeleteImageData, ImagesV1ImageServiceDeleteImageResponses, ImagesV1ImageServiceGetImageData, ImagesV1ImageServiceGetImageResponses, ImagesV1ImageServiceListImagesData, ImagesV1ImageServiceListImagesResponses, ImagesV1ImageServiceUpdateImageVisibilityData, ImagesV1ImageServiceUpdateImageVisibilityResponses, PlatformauthV1PlatformAuthServiceExchangeApiKeyData, PlatformauthV1PlatformAuthServiceExchangeApiKeyResponses, PlatformauthV1PlatformAuthServiceRefreshPlatformTokenData, PlatformauthV1PlatformAuthServiceRefreshPlatformTokenResponses, PostsV1PostServiceCreatePostData, PostsV1PostServiceCreatePostResponses, PostsV1PostServiceCreatePostUploadData, PostsV1PostServiceCreatePostUploadResponses, PostsV1PostServiceDeletePost2Data, PostsV1PostServiceDeletePost2Responses, PostsV1PostServiceDeletePostData, PostsV1PostServiceDeletePostResponses, PostsV1PostServiceGetPost2Data, PostsV1PostServiceGetPost2Responses, PostsV1PostServiceGetPost3Data, PostsV1PostServiceGetPost3Responses, PostsV1PostServiceGetPostData, PostsV1PostServiceGetPostResponses, PostsV1PostServiceListPosts2Data, PostsV1PostServiceListPosts2Responses, PostsV1PostServiceListPosts3Data, PostsV1PostServiceListPosts3Responses, PostsV1PostServiceListPosts4Data, PostsV1PostServiceListPosts4Responses, PostsV1PostServiceListPostsData, PostsV1PostServiceListPostsResponses, ProjectV1ProjectServiceCreateProjectData, ProjectV1ProjectServiceCreateProjectResponses, ProjectV1ProjectServiceDeleteProjectData, ProjectV1ProjectServiceDeleteProjectResponses, ProjectV1ProjectServiceGetProjectData, ProjectV1ProjectServiceGetProjectResponses, ProjectV1ProjectServiceListProjectsData, ProjectV1ProjectServiceListProjectsResponses, ProjectV1ProjectServiceMoveProjectData, ProjectV1ProjectServiceMoveProjectResponses, ProjectV1ProjectServiceRemoveCustomDomainData, ProjectV1ProjectServiceRemoveCustomDomainResponses, ProjectV1ProjectServiceSetCustomDomainData, ProjectV1ProjectServiceSetCustomDomainResponses, ProjectV1ProjectServiceUpdateProjectNameData, ProjectV1ProjectServiceUpdateProjectNameResponses, ProjectV1ProjectServiceUpdateVideoQualityData, ProjectV1ProjectServiceUpdateVideoQualityResponses, VideosV1AudioTrackServiceCreateAudioTrackUploadData, VideosV1AudioTrackServiceCreateAudioTrackUploadResponses, VideosV1AudioTrackServiceDeleteAllAudioTracksData, VideosV1AudioTrackServiceDeleteAllAudioTracksResponses, VideosV1AudioTrackServiceDeleteAudioTrackData, VideosV1AudioTrackServiceDeleteAudioTrackResponses, VideosV1AudioTrackServiceDeleteAudioTracksByLanguageData, VideosV1AudioTrackServiceDeleteAudioTracksByLanguageResponses, VideosV1AudioTrackServiceListAudioTracksData, VideosV1AudioTrackServiceListAudioTracksResponses, VideosV1ChapterServiceDeleteVideoChapterData, VideosV1ChapterServiceDeleteVideoChapterResponses, VideosV1ChapterServiceGetVideoChaptersData, VideosV1ChapterServiceGetVideoChaptersResponses, VideosV1ChapterServiceUpdateVideoChaptersData, VideosV1ChapterServiceUpdateVideoChaptersResponses, VideosV1LanguageServiceListLanguagesData, VideosV1LanguageServiceListLanguagesResponses, VideosV1SubtitleServiceCreateSubtitleUploadData, VideosV1SubtitleServiceCreateSubtitleUploadResponses, VideosV1SubtitleServiceDeleteAllSubtitlesData, VideosV1SubtitleServiceDeleteAllSubtitlesResponses, VideosV1SubtitleServiceDeleteSubtitleData, VideosV1SubtitleServiceDeleteSubtitleResponses, VideosV1SubtitleServiceDeleteSubtitlesByLanguageData, VideosV1SubtitleServiceDeleteSubtitlesByLanguageResponses, VideosV1SubtitleServiceListSubtitlesData, VideosV1SubtitleServiceListSubtitlesResponses, VideosV1VideoConversionServiceMarkVideoFailedData, VideosV1VideoConversionServiceMarkVideoFailedResponses, VideosV1VideoConversionServiceMarkVideoProcessedData, VideosV1VideoConversionServiceMarkVideoProcessedResponses, VideosV1VideoServiceCreateVideoUploadData, VideosV1VideoServiceCreateVideoUploadResponses, VideosV1VideoServiceDeleteVideoData, VideosV1VideoServiceDeleteVideoResponses, VideosV1VideoServiceGetVideoData, VideosV1VideoServiceGetVideoResponses, VideosV1VideoServiceListVideosData, VideosV1VideoServiceListVideosResponses, VideosV1VideoServiceUpdateVideoVisibilityData, VideosV1VideoServiceUpdateVideoVisibilityResponses } from './types.gen';\n\nexport type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean, TResponse = unknown> = Options2<TData, ThrowOnError, TResponse> & {\n /**\n * You can provide a client instance returned by `createClient()` instead of\n * individual options. This might be also useful if you want to implement a\n * custom client.\n */\n client?: Client;\n /**\n * You can pass arbitrary values through the `meta` object. This can be\n * used to access values that aren't defined as part of the SDK function.\n */\n meta?: Record<string, unknown>;\n};\n\n/**\n * GetDashboardStats\n */\nexport const analyticsV1DashboardServiceGetDashboardStats = <ThrowOnError extends boolean = false>(options: Options<AnalyticsV1DashboardServiceGetDashboardStatsData, ThrowOnError>) => (options.client ?? client).get<AnalyticsV1DashboardServiceGetDashboardStatsResponses, unknown, ThrowOnError>({ url: '/analytics/v1/dashboard', ...options });\n\n/**\n * TrackEvents\n */\nexport const analyticsV1EventsServiceTrackEvents = <ThrowOnError extends boolean = false>(options: Options<AnalyticsV1EventsServiceTrackEventsData, ThrowOnError>) => (options.client ?? client).post<AnalyticsV1EventsServiceTrackEventsResponses, unknown, ThrowOnError>({\n url: '/analytics/v1/events',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * GetFeedStats\n */\nexport const analyticsV1FeedsServiceGetFeedStats = <ThrowOnError extends boolean = false>(options: Options<AnalyticsV1FeedsServiceGetFeedStatsData, ThrowOnError>) => (options.client ?? client).get<AnalyticsV1FeedsServiceGetFeedStatsResponses, unknown, ThrowOnError>({ url: '/analytics/v1/feeds/{feed_id}/stats', ...options });\n\n/**\n * GetTopFeeds\n */\nexport const analyticsV1FeedsServiceGetTopFeeds = <ThrowOnError extends boolean = false>(options?: Options<AnalyticsV1FeedsServiceGetTopFeedsData, ThrowOnError>) => (options?.client ?? client).get<AnalyticsV1FeedsServiceGetTopFeedsResponses, unknown, ThrowOnError>({ url: '/analytics/v1/top/feeds', ...options });\n\n/**\n * GetFunnelAnalytics\n */\nexport const analyticsV1FunnelsServiceGetFunnelAnalytics = <ThrowOnError extends boolean = false>(options: Options<AnalyticsV1FunnelsServiceGetFunnelAnalyticsData, ThrowOnError>) => (options.client ?? client).post<AnalyticsV1FunnelsServiceGetFunnelAnalyticsResponses, unknown, ThrowOnError>({\n url: '/analytics/v1/funnels',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * GetRetentionAnalytics\n */\nexport const analyticsV1FunnelsServiceGetRetentionAnalytics = <ThrowOnError extends boolean = false>(options: Options<AnalyticsV1FunnelsServiceGetRetentionAnalyticsData, ThrowOnError>) => (options.client ?? client).post<AnalyticsV1FunnelsServiceGetRetentionAnalyticsResponses, unknown, ThrowOnError>({\n url: '/analytics/v1/retention',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * GetVideoHeatmap\n */\nexport const analyticsV1HeatmapServiceGetVideoHeatmap = <ThrowOnError extends boolean = false>(options: Options<AnalyticsV1HeatmapServiceGetVideoHeatmapData, ThrowOnError>) => (options.client ?? client).get<AnalyticsV1HeatmapServiceGetVideoHeatmapResponses, unknown, ThrowOnError>({ url: '/analytics/v1/videos/{video_id}/heatmap', ...options });\n\n/**\n * GetHotSegments\n */\nexport const analyticsV1HeatmapServiceGetHotSegments = <ThrowOnError extends boolean = false>(options: Options<AnalyticsV1HeatmapServiceGetHotSegmentsData, ThrowOnError>) => (options.client ?? client).get<AnalyticsV1HeatmapServiceGetHotSegmentsResponses, unknown, ThrowOnError>({ url: '/analytics/v1/videos/{video_id}/hot-segments', ...options });\n\n/**\n * GetPostStats\n */\nexport const analyticsV1PostsServiceGetPostStats = <ThrowOnError extends boolean = false>(options: Options<AnalyticsV1PostsServiceGetPostStatsData, ThrowOnError>) => (options.client ?? client).get<AnalyticsV1PostsServiceGetPostStatsResponses, unknown, ThrowOnError>({ url: '/analytics/v1/posts/{post_id}/stats', ...options });\n\n/**\n * GetTopPosts\n */\nexport const analyticsV1PostsServiceGetTopPosts = <ThrowOnError extends boolean = false>(options?: Options<AnalyticsV1PostsServiceGetTopPostsData, ThrowOnError>) => (options?.client ?? client).get<AnalyticsV1PostsServiceGetTopPostsResponses, unknown, ThrowOnError>({ url: '/analytics/v1/top/posts', ...options });\n\n/**\n * GetRealtimeStats\n */\nexport const analyticsV1RealtimeServiceGetRealtimeStats = <ThrowOnError extends boolean = false>(options?: Options<AnalyticsV1RealtimeServiceGetRealtimeStatsData, ThrowOnError>) => (options?.client ?? client).get<AnalyticsV1RealtimeServiceGetRealtimeStatsResponses, unknown, ThrowOnError>({ url: '/analytics/v1/realtime', ...options });\n\n/**\n * GetTopVideos\n */\nexport const analyticsV1VideosServiceGetTopVideos = <ThrowOnError extends boolean = false>(options?: Options<AnalyticsV1VideosServiceGetTopVideosData, ThrowOnError>) => (options?.client ?? client).get<AnalyticsV1VideosServiceGetTopVideosResponses, unknown, ThrowOnError>({ url: '/analytics/v1/top/videos', ...options });\n\n/**\n * GetVideoStats\n */\nexport const analyticsV1VideosServiceGetVideoStats = <ThrowOnError extends boolean = false>(options: Options<AnalyticsV1VideosServiceGetVideoStatsData, ThrowOnError>) => (options.client ?? client).get<AnalyticsV1VideosServiceGetVideoStatsResponses, unknown, ThrowOnError>({ url: '/analytics/v1/videos/{video_id}/stats', ...options });\n\n/**\n * ListApiKeys\n */\nexport const apikeysV1ApiKeyServiceListApiKeys = <ThrowOnError extends boolean = false>(options: Options<ApikeysV1ApiKeyServiceListApiKeysData, ThrowOnError>) => (options.client ?? client).get<ApikeysV1ApiKeyServiceListApiKeysResponses, unknown, ThrowOnError>({ url: '/organizations/{org_id}/api-keys/v1', ...options });\n\n/**\n * CreateApiKey\n */\nexport const apikeysV1ApiKeyServiceCreateApiKey = <ThrowOnError extends boolean = false>(options: Options<ApikeysV1ApiKeyServiceCreateApiKeyData, ThrowOnError>) => (options.client ?? client).post<ApikeysV1ApiKeyServiceCreateApiKeyResponses, unknown, ThrowOnError>({\n url: '/organizations/{org_id}/api-keys/v1',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * DeleteApiKey\n */\nexport const apikeysV1ApiKeyServiceDeleteApiKey = <ThrowOnError extends boolean = false>(options: Options<ApikeysV1ApiKeyServiceDeleteApiKeyData, ThrowOnError>) => (options.client ?? client).delete<ApikeysV1ApiKeyServiceDeleteApiKeyResponses, unknown, ThrowOnError>({ url: '/organizations/{org_id}/api-keys/v1/{key_id}', ...options });\n\n/**\n * RotateApiKey\n */\nexport const apikeysV1ApiKeyServiceRotateApiKey = <ThrowOnError extends boolean = false>(options: Options<ApikeysV1ApiKeyServiceRotateApiKeyData, ThrowOnError>) => (options.client ?? client).post<ApikeysV1ApiKeyServiceRotateApiKeyResponses, unknown, ThrowOnError>({ url: '/organizations/{org_id}/api-keys/v1/{key_id}/rotate', ...options });\n\n/**\n * SendBlogBroadcast\n */\nexport const authV1BlogServiceSendBlogBroadcast = <ThrowOnError extends boolean = false>(options: Options<AuthV1BlogServiceSendBlogBroadcastData, ThrowOnError>) => (options.client ?? client).post<AuthV1BlogServiceSendBlogBroadcastResponses, unknown, ThrowOnError>({\n url: '/auth/v1/blog/broadcast',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * SubscribeBlog\n */\nexport const authV1BlogServiceSubscribeBlog = <ThrowOnError extends boolean = false>(options?: Options<AuthV1BlogServiceSubscribeBlogData, ThrowOnError>) => (options?.client ?? client).post<AuthV1BlogServiceSubscribeBlogResponses, unknown, ThrowOnError>({ url: '/auth/v1/blog/subscribe', ...options });\n\n/**\n * GetBlogSubscription\n */\nexport const authV1BlogServiceGetBlogSubscription = <ThrowOnError extends boolean = false>(options?: Options<AuthV1BlogServiceGetBlogSubscriptionData, ThrowOnError>) => (options?.client ?? client).get<AuthV1BlogServiceGetBlogSubscriptionResponses, unknown, ThrowOnError>({ url: '/auth/v1/blog/subscription', ...options });\n\n/**\n * UnsubscribeBlog\n */\nexport const authV1BlogServiceUnsubscribeBlog = <ThrowOnError extends boolean = false>(options?: Options<AuthV1BlogServiceUnsubscribeBlogData, ThrowOnError>) => (options?.client ?? client).post<AuthV1BlogServiceUnsubscribeBlogResponses, unknown, ThrowOnError>({ url: '/auth/v1/blog/unsubscribe', ...options });\n\n/**\n * UnsubscribeBlogByEmail\n */\nexport const authV1BlogServiceUnsubscribeBlogByEmail = <ThrowOnError extends boolean = false>(options: Options<AuthV1BlogServiceUnsubscribeBlogByEmailData, ThrowOnError>) => (options.client ?? client).post<AuthV1BlogServiceUnsubscribeBlogByEmailResponses, unknown, ThrowOnError>({\n url: '/auth/v1/blog/unsubscribe/email',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * RemoveDomain\n */\nexport const authV1DomainServiceRemoveDomain = <ThrowOnError extends boolean = false>(options: Options<AuthV1DomainServiceRemoveDomainData, ThrowOnError>) => (options.client ?? client).delete<AuthV1DomainServiceRemoveDomainResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{org_id}/domain', ...options });\n\n/**\n * GetDomainStatus\n */\nexport const authV1DomainServiceGetDomainStatus = <ThrowOnError extends boolean = false>(options: Options<AuthV1DomainServiceGetDomainStatusData, ThrowOnError>) => (options.client ?? client).get<AuthV1DomainServiceGetDomainStatusResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{org_id}/domain', ...options });\n\n/**\n * GetDomainAutoJoin\n */\nexport const authV1DomainServiceGetDomainAutoJoin = <ThrowOnError extends boolean = false>(options: Options<AuthV1DomainServiceGetDomainAutoJoinData, ThrowOnError>) => (options.client ?? client).get<AuthV1DomainServiceGetDomainAutoJoinResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{org_id}/domain/auto-join', ...options });\n\n/**\n * CheckDomainVerification\n */\nexport const authV1DomainServiceCheckDomainVerification = <ThrowOnError extends boolean = false>(options: Options<AuthV1DomainServiceCheckDomainVerificationData, ThrowOnError>) => (options.client ?? client).post<AuthV1DomainServiceCheckDomainVerificationResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{org_id}/domain/verify', ...options });\n\n/**\n * CreateDomainVerification\n */\nexport const authV1DomainServiceCreateDomainVerification = <ThrowOnError extends boolean = false>(options: Options<AuthV1DomainServiceCreateDomainVerificationData, ThrowOnError>) => (options.client ?? client).post<AuthV1DomainServiceCreateDomainVerificationResponses, unknown, ThrowOnError>({\n url: '/auth/v1/memberships/{user.org_id}/domain',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * SetDomainAutoJoin\n */\nexport const authV1DomainServiceSetDomainAutoJoin = <ThrowOnError extends boolean = false>(options: Options<AuthV1DomainServiceSetDomainAutoJoinData, ThrowOnError>) => (options.client ?? client).put<AuthV1DomainServiceSetDomainAutoJoinResponses, unknown, ThrowOnError>({\n url: '/auth/v1/memberships/{user.org_id}/domain/auto-join',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * AcceptInvitation\n */\nexport const authV1MembershipServiceAcceptInvitation = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceAcceptInvitationData, ThrowOnError>) => (options.client ?? client).post<AuthV1MembershipServiceAcceptInvitationResponses, unknown, ThrowOnError>({ url: '/auth/v1/invitations/{token}/accept', ...options });\n\n/**\n * DeclineInvitation\n */\nexport const authV1MembershipServiceDeclineInvitation = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceDeclineInvitationData, ThrowOnError>) => (options.client ?? client).post<AuthV1MembershipServiceDeclineInvitationResponses, unknown, ThrowOnError>({ url: '/auth/v1/invitations/{token}/decline', ...options });\n\n/**\n * ListMembershipApplications\n */\nexport const authV1MembershipServiceListMembershipApplications = <ThrowOnError extends boolean = false>(options?: Options<AuthV1MembershipServiceListMembershipApplicationsData, ThrowOnError>) => (options?.client ?? client).get<AuthV1MembershipServiceListMembershipApplicationsResponses, unknown, ThrowOnError>({ url: '/auth/v1/membership-applications', ...options });\n\n/**\n * ListMemberships\n */\nexport const authV1MembershipServiceListMemberships = <ThrowOnError extends boolean = false>(options?: Options<AuthV1MembershipServiceListMembershipsData, ThrowOnError>) => (options?.client ?? client).get<AuthV1MembershipServiceListMembershipsResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships', ...options });\n\n/**\n * UpdateActiveMembership\n */\nexport const authV1MembershipServiceUpdateActiveMembership = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceUpdateActiveMembershipData, ThrowOnError>) => (options.client ?? client).patch<AuthV1MembershipServiceUpdateActiveMembershipResponses, unknown, ThrowOnError>({\n url: '/auth/v1/memberships/active',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * CheckMembership\n */\nexport const authV1MembershipServiceCheckMembership = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceCheckMembershipData, ThrowOnError>) => (options.client ?? client).get<AuthV1MembershipServiceCheckMembershipResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{org_id}/check', ...options });\n\n/**\n * GetInternalMembershipInfo\n */\nexport const authV1MembershipServiceGetInternalMembershipInfo = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceGetInternalMembershipInfoData, ThrowOnError>) => (options.client ?? client).get<AuthV1MembershipServiceGetInternalMembershipInfoResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{org_id}/info', ...options });\n\n/**\n * LeaveOrganization\n */\nexport const authV1MembershipServiceLeaveOrganization = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceLeaveOrganizationData, ThrowOnError>) => (options.client ?? client).post<AuthV1MembershipServiceLeaveOrganizationResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{org_id}/leave', ...options });\n\n/**\n * InviteMember\n */\nexport const authV1MembershipServiceInviteMember = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceInviteMemberData, ThrowOnError>) => (options.client ?? client).post<AuthV1MembershipServiceInviteMemberResponses, unknown, ThrowOnError>({\n url: '/auth/v1/memberships/{user.org_id}/invite',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * ResendInvitation\n */\nexport const authV1MembershipServiceResendInvitation = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceResendInvitationData, ThrowOnError>) => (options.client ?? client).post<AuthV1MembershipServiceResendInvitationResponses, unknown, ThrowOnError>({\n url: '/auth/v1/memberships/{user.org_id}/invite/resend',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * CancelInvitation\n */\nexport const authV1MembershipServiceCancelInvitation = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceCancelInvitationData, ThrowOnError>) => (options.client ?? client).delete<AuthV1MembershipServiceCancelInvitationResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{user.org_id}/invite/{user_id}', ...options });\n\n/**\n * ListOrganizationMembers\n */\nexport const authV1MembershipServiceListOrganizationMembers = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceListOrganizationMembersData, ThrowOnError>) => (options.client ?? client).get<AuthV1MembershipServiceListOrganizationMembersResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{user.org_id}/members', ...options });\n\n/**\n * RemoveMember\n */\nexport const authV1MembershipServiceRemoveMember = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceRemoveMemberData, ThrowOnError>) => (options.client ?? client).delete<AuthV1MembershipServiceRemoveMemberResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{user.org_id}/members/{user_id}', ...options });\n\n/**\n * ReactivateMember\n */\nexport const authV1MembershipServiceReactivateMember = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceReactivateMemberData, ThrowOnError>) => (options.client ?? client).patch<AuthV1MembershipServiceReactivateMemberResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{user.org_id}/members/{user_id}/reactivate', ...options });\n\n/**\n * UpdateMemberRole\n */\nexport const authV1MembershipServiceUpdateMemberRole = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceUpdateMemberRoleData, ThrowOnError>) => (options.client ?? client).patch<AuthV1MembershipServiceUpdateMemberRoleResponses, unknown, ThrowOnError>({\n url: '/auth/v1/memberships/{user.org_id}/members/{user_id}/role',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * SuspendMember\n */\nexport const authV1MembershipServiceSuspendMember = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceSuspendMemberData, ThrowOnError>) => (options.client ?? client).patch<AuthV1MembershipServiceSuspendMemberResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{user.org_id}/members/{user_id}/suspend', ...options });\n\n/**\n * UpdateOrgName\n */\nexport const authV1MembershipServiceUpdateOrgName = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceUpdateOrgNameData, ThrowOnError>) => (options.client ?? client).patch<AuthV1MembershipServiceUpdateOrgNameResponses, unknown, ThrowOnError>({\n url: '/auth/v1/memberships/{user.org_id}/name',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * UpdateMembershipState\n */\nexport const authV1MembershipServiceUpdateMembershipState = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceUpdateMembershipStateData, ThrowOnError>) => (options.client ?? client).patch<AuthV1MembershipServiceUpdateMembershipStateResponses, unknown, ThrowOnError>({\n url: '/auth/v1/memberships/{user.org_id}/state',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * UpdateOrgUsername\n */\nexport const authV1MembershipServiceUpdateOrgUsername = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceUpdateOrgUsernameData, ThrowOnError>) => (options.client ?? client).patch<AuthV1MembershipServiceUpdateOrgUsernameResponses, unknown, ThrowOnError>({\n url: '/auth/v1/memberships/{user.org_id}/username',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * DeleteOTP\n */\nexport const authV1OtpServiceDeleteOtp = <ThrowOnError extends boolean = false>(options?: Options<AuthV1OtpServiceDeleteOtpData, ThrowOnError>) => (options?.client ?? client).delete<AuthV1OtpServiceDeleteOtpResponses, unknown, ThrowOnError>({ url: '/auth/v1/users/current/totp/delete', ...options });\n\n/**\n * SetupOTP\n */\nexport const authV1OtpServiceSetupOtp = <ThrowOnError extends boolean = false>(options?: Options<AuthV1OtpServiceSetupOtpData, ThrowOnError>) => (options?.client ?? client).post<AuthV1OtpServiceSetupOtpResponses, unknown, ThrowOnError>({ url: '/auth/v1/users/current/totp/setup', ...options });\n\n/**\n * GetOTPStatus\n */\nexport const authV1OtpServiceGetOtpStatus = <ThrowOnError extends boolean = false>(options?: Options<AuthV1OtpServiceGetOtpStatusData, ThrowOnError>) => (options?.client ?? client).get<AuthV1OtpServiceGetOtpStatusResponses, unknown, ThrowOnError>({ url: '/auth/v1/users/current/totp/status', ...options });\n\n/**\n * VerifyOTP\n */\nexport const authV1OtpServiceVerifyOtp = <ThrowOnError extends boolean = false>(options: Options<AuthV1OtpServiceVerifyOtpData, ThrowOnError>) => (options.client ?? client).post<AuthV1OtpServiceVerifyOtpResponses, unknown, ThrowOnError>({\n url: '/auth/v1/users/current/totp/verify',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * VerifyTOTPForLogin\n */\nexport const authV1OtpServiceVerifyTotpForLogin = <ThrowOnError extends boolean = false>(options: Options<AuthV1OtpServiceVerifyTotpForLoginData, ThrowOnError>) => (options.client ?? client).post<AuthV1OtpServiceVerifyTotpForLoginResponses, unknown, ThrowOnError>({\n url: '/auth/v1/verify-totp',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * PasskeyLoginBegin\n */\nexport const authV1PasskeyServicePasskeyLoginBegin = <ThrowOnError extends boolean = false>(options: Options<AuthV1PasskeyServicePasskeyLoginBeginData, ThrowOnError>) => (options.client ?? client).post<AuthV1PasskeyServicePasskeyLoginBeginResponses, unknown, ThrowOnError>({\n url: '/auth/v1/passkey/login/begin',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * PasskeyLoginFinish\n */\nexport const authV1PasskeyServicePasskeyLoginFinish = <ThrowOnError extends boolean = false>(options: Options<AuthV1PasskeyServicePasskeyLoginFinishData, ThrowOnError>) => (options.client ?? client).post<AuthV1PasskeyServicePasskeyLoginFinishResponses, unknown, ThrowOnError>({\n url: '/auth/v1/passkey/login/finish',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * ListPasskeys\n */\nexport const authV1PasskeyServiceListPasskeys = <ThrowOnError extends boolean = false>(options?: Options<AuthV1PasskeyServiceListPasskeysData, ThrowOnError>) => (options?.client ?? client).get<AuthV1PasskeyServiceListPasskeysResponses, unknown, ThrowOnError>({ url: '/auth/v1/users/current/passkeys', ...options });\n\n/**\n * PasskeyRegisterBegin\n */\nexport const authV1PasskeyServicePasskeyRegisterBegin = <ThrowOnError extends boolean = false>(options: Options<AuthV1PasskeyServicePasskeyRegisterBeginData, ThrowOnError>) => (options.client ?? client).post<AuthV1PasskeyServicePasskeyRegisterBeginResponses, unknown, ThrowOnError>({\n url: '/auth/v1/users/current/passkeys/register/begin',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * PasskeyRegisterFinish\n */\nexport const authV1PasskeyServicePasskeyRegisterFinish = <ThrowOnError extends boolean = false>(options: Options<AuthV1PasskeyServicePasskeyRegisterFinishData, ThrowOnError>) => (options.client ?? client).post<AuthV1PasskeyServicePasskeyRegisterFinishResponses, unknown, ThrowOnError>({\n url: '/auth/v1/users/current/passkeys/register/finish',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * DeletePasskey\n */\nexport const authV1PasskeyServiceDeletePasskey = <ThrowOnError extends boolean = false>(options: Options<AuthV1PasskeyServiceDeletePasskeyData, ThrowOnError>) => (options.client ?? client).delete<AuthV1PasskeyServiceDeletePasskeyResponses, unknown, ThrowOnError>({ url: '/auth/v1/users/current/passkeys/{id}', ...options });\n\n/**\n * RenamePasskey\n */\nexport const authV1PasskeyServiceRenamePasskey = <ThrowOnError extends boolean = false>(options: Options<AuthV1PasskeyServiceRenamePasskeyData, ThrowOnError>) => (options.client ?? client).patch<AuthV1PasskeyServiceRenamePasskeyResponses, unknown, ThrowOnError>({\n url: '/auth/v1/users/current/passkeys/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * VerifyPasskeyForLogin\n */\nexport const authV1PasskeyServiceVerifyPasskeyForLogin = <ThrowOnError extends boolean = false>(options: Options<AuthV1PasskeyServiceVerifyPasskeyForLoginData, ThrowOnError>) => (options.client ?? client).post<AuthV1PasskeyServiceVerifyPasskeyForLoginResponses, unknown, ThrowOnError>({\n url: '/auth/v1/verify-passkey',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * ListPolicies\n */\nexport const authV1PolicyServiceListPolicies = <ThrowOnError extends boolean = false>(options: Options<AuthV1PolicyServiceListPoliciesData, ThrowOnError>) => (options.client ?? client).get<AuthV1PolicyServiceListPoliciesResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{org_id}/policies', ...options });\n\n/**\n * ListUserPolicies\n */\nexport const authV1PolicyServiceListUserPolicies = <ThrowOnError extends boolean = false>(options: Options<AuthV1PolicyServiceListUserPoliciesData, ThrowOnError>) => (options.client ?? client).get<AuthV1PolicyServiceListUserPoliciesResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{user.org_id}/members/{member_id}/policies', ...options });\n\n/**\n * CreatePolicy\n */\nexport const authV1PolicyServiceCreatePolicy = <ThrowOnError extends boolean = false>(options: Options<AuthV1PolicyServiceCreatePolicyData, ThrowOnError>) => (options.client ?? client).post<AuthV1PolicyServiceCreatePolicyResponses, unknown, ThrowOnError>({\n url: '/auth/v1/memberships/{user.org_id}/policies',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * DetachPolicy\n */\nexport const authV1PolicyServiceDetachPolicy = <ThrowOnError extends boolean = false>(options: Options<AuthV1PolicyServiceDetachPolicyData, ThrowOnError>) => (options.client ?? client).delete<AuthV1PolicyServiceDetachPolicyResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{user.org_id}/policies/attachments/{attachment_id}', ...options });\n\n/**\n * DeletePolicy\n */\nexport const authV1PolicyServiceDeletePolicy = <ThrowOnError extends boolean = false>(options: Options<AuthV1PolicyServiceDeletePolicyData, ThrowOnError>) => (options.client ?? client).delete<AuthV1PolicyServiceDeletePolicyResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{user.org_id}/policies/{policy_id}', ...options });\n\n/**\n * GetPolicy\n */\nexport const authV1PolicyServiceGetPolicy = <ThrowOnError extends boolean = false>(options: Options<AuthV1PolicyServiceGetPolicyData, ThrowOnError>) => (options.client ?? client).get<AuthV1PolicyServiceGetPolicyResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{user.org_id}/policies/{policy_id}', ...options });\n\n/**\n * UpdatePolicy\n */\nexport const authV1PolicyServiceUpdatePolicy = <ThrowOnError extends boolean = false>(options: Options<AuthV1PolicyServiceUpdatePolicyData, ThrowOnError>) => (options.client ?? client).put<AuthV1PolicyServiceUpdatePolicyResponses, unknown, ThrowOnError>({\n url: '/auth/v1/memberships/{user.org_id}/policies/{policy_id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * ListPolicyAttachments\n */\nexport const authV1PolicyServiceListPolicyAttachments = <ThrowOnError extends boolean = false>(options: Options<AuthV1PolicyServiceListPolicyAttachmentsData, ThrowOnError>) => (options.client ?? client).get<AuthV1PolicyServiceListPolicyAttachmentsResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{user.org_id}/policies/{policy_id}/attachments', ...options });\n\n/**\n * AttachPolicy\n */\nexport const authV1PolicyServiceAttachPolicy = <ThrowOnError extends boolean = false>(options: Options<AuthV1PolicyServiceAttachPolicyData, ThrowOnError>) => (options.client ?? client).post<AuthV1PolicyServiceAttachPolicyResponses, unknown, ThrowOnError>({\n url: '/auth/v1/memberships/{user.org_id}/policies/{policy_id}/attachments',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * ListPermissionRegistry\n */\nexport const authV1PolicyServiceListPermissionRegistry = <ThrowOnError extends boolean = false>(options?: Options<AuthV1PolicyServiceListPermissionRegistryData, ThrowOnError>) => (options?.client ?? client).get<AuthV1PolicyServiceListPermissionRegistryResponses, unknown, ThrowOnError>({ url: '/auth/v1/policies/permissions', ...options });\n\n/**\n * ListProviders\n */\nexport const authV1ProvidersServiceListProviders = <ThrowOnError extends boolean = false>(options?: Options<AuthV1ProvidersServiceListProvidersData, ThrowOnError>) => (options?.client ?? client).get<AuthV1ProvidersServiceListProvidersResponses, unknown, ThrowOnError>({ url: '/auth/v1/providers', ...options });\n\n/**\n * ConnectProvider\n */\nexport const authV1ProvidersServiceConnectProvider = <ThrowOnError extends boolean = false>(options: Options<AuthV1ProvidersServiceConnectProviderData, ThrowOnError>) => (options.client ?? client).post<AuthV1ProvidersServiceConnectProviderResponses, unknown, ThrowOnError>({\n url: '/auth/v1/providers/connect',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * DisconnectProvider\n */\nexport const authV1ProvidersServiceDisconnectProvider = <ThrowOnError extends boolean = false>(options: Options<AuthV1ProvidersServiceDisconnectProviderData, ThrowOnError>) => (options.client ?? client).delete<AuthV1ProvidersServiceDisconnectProviderResponses, unknown, ThrowOnError>({ url: '/auth/v1/providers/{provider}', ...options });\n\n/**\n * VerifyEmail\n */\nexport const authV1EmailServiceVerifyEmail = <ThrowOnError extends boolean = false>(options: Options<AuthV1EmailServiceVerifyEmailData, ThrowOnError>) => (options.client ?? client).post<AuthV1EmailServiceVerifyEmailResponses, unknown, ThrowOnError>({\n url: '/auth/v1/email/verify',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * ResendVerification\n */\nexport const authV1EmailServiceResendVerification = <ThrowOnError extends boolean = false>(options: Options<AuthV1EmailServiceResendVerificationData, ThrowOnError>) => (options.client ?? client).post<AuthV1EmailServiceResendVerificationResponses, unknown, ThrowOnError>({\n url: '/auth/v1/email/verify/resend',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Login\n */\nexport const authV1EmailServiceLogin = <ThrowOnError extends boolean = false>(options: Options<AuthV1EmailServiceLoginData, ThrowOnError>) => (options.client ?? client).post<AuthV1EmailServiceLoginResponses, unknown, ThrowOnError>({\n url: '/auth/v1/login',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Logout\n */\nexport const authV1TokenServiceLogout = <ThrowOnError extends boolean = false>(options: Options<AuthV1TokenServiceLogoutData, ThrowOnError>) => (options.client ?? client).post<AuthV1TokenServiceLogoutResponses, unknown, ThrowOnError>({\n url: '/auth/v1/logout',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * SendPasswordReset\n */\nexport const authV1EmailServiceSendPasswordReset = <ThrowOnError extends boolean = false>(options: Options<AuthV1EmailServiceSendPasswordResetData, ThrowOnError>) => (options.client ?? client).post<AuthV1EmailServiceSendPasswordResetResponses, unknown, ThrowOnError>({\n url: '/auth/v1/password/reset',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * ResetPassword\n */\nexport const authV1EmailServiceResetPassword = <ThrowOnError extends boolean = false>(options: Options<AuthV1EmailServiceResetPasswordData, ThrowOnError>) => (options.client ?? client).post<AuthV1EmailServiceResetPasswordResponses, unknown, ThrowOnError>({\n url: '/auth/v1/password/reset/confirm',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Register\n */\nexport const authV1EmailServiceRegister = <ThrowOnError extends boolean = false>(options: Options<AuthV1EmailServiceRegisterData, ThrowOnError>) => (options.client ?? client).post<AuthV1EmailServiceRegisterResponses, unknown, ThrowOnError>({\n url: '/auth/v1/register',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * RefreshToken\n */\nexport const authV1TokenServiceRefreshToken = <ThrowOnError extends boolean = false>(options: Options<AuthV1TokenServiceRefreshTokenData, ThrowOnError>) => (options.client ?? client).post<AuthV1TokenServiceRefreshTokenResponses, unknown, ThrowOnError>({\n url: '/auth/v1/token',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * AddEmail\n */\nexport const authV1EmailServiceAddEmail = <ThrowOnError extends boolean = false>(options: Options<AuthV1EmailServiceAddEmailData, ThrowOnError>) => (options.client ?? client).post<AuthV1EmailServiceAddEmailResponses, unknown, ThrowOnError>({\n url: '/auth/v1/users/current/emails',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * InitiateEmailChange\n */\nexport const authV1EmailServiceInitiateEmailChange = <ThrowOnError extends boolean = false>(options: Options<AuthV1EmailServiceInitiateEmailChangeData, ThrowOnError>) => (options.client ?? client).put<AuthV1EmailServiceInitiateEmailChangeResponses, unknown, ThrowOnError>({\n url: '/auth/v1/users/current/emails/change',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * GetUserEmailStatus\n */\nexport const authV1EmailServiceGetUserEmailStatus = <ThrowOnError extends boolean = false>(options?: Options<AuthV1EmailServiceGetUserEmailStatusData, ThrowOnError>) => (options?.client ?? client).get<AuthV1EmailServiceGetUserEmailStatusResponses, unknown, ThrowOnError>({ url: '/auth/v1/users/current/emails/status', ...options });\n\n/**\n * GetUserInfo\n */\nexport const authV1UserServiceGetUserInfo = <ThrowOnError extends boolean = false>(options?: Options<AuthV1UserServiceGetUserInfoData, ThrowOnError>) => (options?.client ?? client).get<AuthV1UserServiceGetUserInfoResponses, unknown, ThrowOnError>({ url: '/auth/v1/userinfo', ...options });\n\n/**\n * GetUser\n */\nexport const authV1UserServiceGetUser = <ThrowOnError extends boolean = false>(options?: Options<AuthV1UserServiceGetUserData, ThrowOnError>) => (options?.client ?? client).get<AuthV1UserServiceGetUserResponses, unknown, ThrowOnError>({ url: '/auth/v1/users/current', ...options });\n\n/**\n * UpdateName\n */\nexport const authV1UserServiceUpdateName = <ThrowOnError extends boolean = false>(options: Options<AuthV1UserServiceUpdateNameData, ThrowOnError>) => (options.client ?? client).patch<AuthV1UserServiceUpdateNameResponses, unknown, ThrowOnError>({\n url: '/auth/v1/users/current/name',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * UpdateUsername\n */\nexport const authV1UserServiceUpdateUsername = <ThrowOnError extends boolean = false>(options: Options<AuthV1UserServiceUpdateUsernameData, ThrowOnError>) => (options.client ?? client).patch<AuthV1UserServiceUpdateUsernameResponses, unknown, ThrowOnError>({\n url: '/auth/v1/users/current/username',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * ListInvoices\n */\nexport const billingV1InvoiceServiceListInvoices = <ThrowOnError extends boolean = false>(options?: Options<BillingV1InvoiceServiceListInvoicesData, ThrowOnError>) => (options?.client ?? client).get<BillingV1InvoiceServiceListInvoicesResponses, unknown, ThrowOnError>({ url: '/billing/v1/invoices', ...options });\n\n/**\n * UpdateInvoiceStatus\n */\nexport const billingV1InvoiceServiceUpdateInvoiceStatus = <ThrowOnError extends boolean = false>(options: Options<BillingV1InvoiceServiceUpdateInvoiceStatusData, ThrowOnError>) => (options.client ?? client).patch<BillingV1InvoiceServiceUpdateInvoiceStatusResponses, unknown, ThrowOnError>({\n url: '/billing/v1/invoices/{invoice_id}/status',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * GetBillingAddress\n */\nexport const billingV1PaymentServiceGetBillingAddress = <ThrowOnError extends boolean = false>(options?: Options<BillingV1PaymentServiceGetBillingAddressData, ThrowOnError>) => (options?.client ?? client).get<BillingV1PaymentServiceGetBillingAddressResponses, unknown, ThrowOnError>({ url: '/billing/v1/address', ...options });\n\n/**\n * UpsertBillingAddress\n */\nexport const billingV1PaymentServiceUpsertBillingAddress = <ThrowOnError extends boolean = false>(options: Options<BillingV1PaymentServiceUpsertBillingAddressData, ThrowOnError>) => (options.client ?? client).put<BillingV1PaymentServiceUpsertBillingAddressResponses, unknown, ThrowOnError>({\n url: '/billing/v1/address',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * CreateCheckoutSession\n */\nexport const billingV1PaymentServiceCreateCheckoutSession = <ThrowOnError extends boolean = false>(options: Options<BillingV1PaymentServiceCreateCheckoutSessionData, ThrowOnError>) => (options.client ?? client).post<BillingV1PaymentServiceCreateCheckoutSessionResponses, unknown, ThrowOnError>({\n url: '/billing/v1/checkout',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * ListPaymentMethods\n */\nexport const billingV1PaymentServiceListPaymentMethods = <ThrowOnError extends boolean = false>(options?: Options<BillingV1PaymentServiceListPaymentMethodsData, ThrowOnError>) => (options?.client ?? client).get<BillingV1PaymentServiceListPaymentMethodsResponses, unknown, ThrowOnError>({ url: '/billing/v1/payment-methods', ...options });\n\n/**\n * UpsertPaymentMethod\n */\nexport const billingV1PaymentServiceUpsertPaymentMethod = <ThrowOnError extends boolean = false>(options: Options<BillingV1PaymentServiceUpsertPaymentMethodData, ThrowOnError>) => (options.client ?? client).put<BillingV1PaymentServiceUpsertPaymentMethodResponses, unknown, ThrowOnError>({\n url: '/billing/v1/payment-methods',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * GetPaymentMethodFromPaymentIntent\n */\nexport const billingV1PaymentServiceGetPaymentMethodFromPaymentIntent = <ThrowOnError extends boolean = false>(options?: Options<BillingV1PaymentServiceGetPaymentMethodFromPaymentIntentData, ThrowOnError>) => (options?.client ?? client).get<BillingV1PaymentServiceGetPaymentMethodFromPaymentIntentResponses, unknown, ThrowOnError>({ url: '/billing/v1/payment-methods/from-payment-intent', ...options });\n\n/**\n * GetPaymentMethodFromSetupIntent\n */\nexport const billingV1PaymentServiceGetPaymentMethodFromSetupIntent = <ThrowOnError extends boolean = false>(options?: Options<BillingV1PaymentServiceGetPaymentMethodFromSetupIntentData, ThrowOnError>) => (options?.client ?? client).get<BillingV1PaymentServiceGetPaymentMethodFromSetupIntentResponses, unknown, ThrowOnError>({ url: '/billing/v1/payment-methods/from-setup-intent', ...options });\n\n/**\n * DeletePaymentMethod\n */\nexport const billingV1PaymentServiceDeletePaymentMethod = <ThrowOnError extends boolean = false>(options: Options<BillingV1PaymentServiceDeletePaymentMethodData, ThrowOnError>) => (options.client ?? client).delete<BillingV1PaymentServiceDeletePaymentMethodResponses, unknown, ThrowOnError>({ url: '/billing/v1/payment-methods/{payment_method_id}', ...options });\n\n/**\n * CreateSetupIntent\n */\nexport const billingV1PaymentServiceCreateSetupIntent = <ThrowOnError extends boolean = false>(options: Options<BillingV1PaymentServiceCreateSetupIntentData, ThrowOnError>) => (options.client ?? client).post<BillingV1PaymentServiceCreateSetupIntentResponses, unknown, ThrowOnError>({\n url: '/billing/v1/setup-intent',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * UpgradeSubscription\n */\nexport const billingV1PaymentServiceUpgradeSubscription = <ThrowOnError extends boolean = false>(options: Options<BillingV1PaymentServiceUpgradeSubscriptionData, ThrowOnError>) => (options.client ?? client).post<BillingV1PaymentServiceUpgradeSubscriptionResponses, unknown, ThrowOnError>({\n url: '/billing/v1/subscription/upgrade',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * CalculateTax\n */\nexport const billingV1PaymentServiceCalculateTax = <ThrowOnError extends boolean = false>(options: Options<BillingV1PaymentServiceCalculateTaxData, ThrowOnError>) => (options.client ?? client).post<BillingV1PaymentServiceCalculateTaxResponses, unknown, ThrowOnError>({\n url: '/billing/v1/tax/calculate',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * CalculateGenericTax\n */\nexport const billingV1PaymentServiceCalculateGenericTax = <ThrowOnError extends boolean = false>(options: Options<BillingV1PaymentServiceCalculateGenericTaxData, ThrowOnError>) => (options.client ?? client).post<BillingV1PaymentServiceCalculateGenericTaxResponses, unknown, ThrowOnError>({\n url: '/billing/v1/tax/calculate-generic',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * ListPlans\n */\nexport const billingV1PlanServiceListPlans = <ThrowOnError extends boolean = false>(options?: Options<BillingV1PlanServiceListPlansData, ThrowOnError>) => (options?.client ?? client).get<BillingV1PlanServiceListPlansResponses, unknown, ThrowOnError>({ url: '/billing/v1/plans', ...options });\n\n/**\n * GetPlan\n */\nexport const billingV1PlanServiceGetPlan = <ThrowOnError extends boolean = false>(options: Options<BillingV1PlanServiceGetPlanData, ThrowOnError>) => (options.client ?? client).get<BillingV1PlanServiceGetPlanResponses, unknown, ThrowOnError>({ url: '/billing/v1/plans/{plan_id}', ...options });\n\n/**\n * ContactSales\n */\nexport const billingV1SalesServiceContactSales = <ThrowOnError extends boolean = false>(options: Options<BillingV1SalesServiceContactSalesData, ThrowOnError>) => (options.client ?? client).post<BillingV1SalesServiceContactSalesResponses, unknown, ThrowOnError>({\n url: '/billing/v1/contact-sales',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * GetSubscription\n */\nexport const billingV1SubscriptionServiceGetSubscription = <ThrowOnError extends boolean = false>(options?: Options<BillingV1SubscriptionServiceGetSubscriptionData, ThrowOnError>) => (options?.client ?? client).get<BillingV1SubscriptionServiceGetSubscriptionResponses, unknown, ThrowOnError>({ url: '/billing/v1/subscription', ...options });\n\n/**\n * CreateSubscription\n */\nexport const billingV1SubscriptionServiceCreateSubscription = <ThrowOnError extends boolean = false>(options: Options<BillingV1SubscriptionServiceCreateSubscriptionData, ThrowOnError>) => (options.client ?? client).post<BillingV1SubscriptionServiceCreateSubscriptionResponses, unknown, ThrowOnError>({\n url: '/billing/v1/subscription',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * CancelSubscription\n */\nexport const billingV1SubscriptionServiceCancelSubscription = <ThrowOnError extends boolean = false>(options?: Options<BillingV1SubscriptionServiceCancelSubscriptionData, ThrowOnError>) => (options?.client ?? client).post<BillingV1SubscriptionServiceCancelSubscriptionResponses, unknown, ThrowOnError>({ url: '/billing/v1/subscription/cancel', ...options });\n\n/**\n * GetSubscriptionHistory\n */\nexport const billingV1SubscriptionServiceGetSubscriptionHistory = <ThrowOnError extends boolean = false>(options?: Options<BillingV1SubscriptionServiceGetSubscriptionHistoryData, ThrowOnError>) => (options?.client ?? client).get<BillingV1SubscriptionServiceGetSubscriptionHistoryResponses, unknown, ThrowOnError>({ url: '/billing/v1/subscription/history', ...options });\n\n/**\n * ReactivateSubscription\n */\nexport const billingV1SubscriptionServiceReactivateSubscription = <ThrowOnError extends boolean = false>(options?: Options<BillingV1SubscriptionServiceReactivateSubscriptionData, ThrowOnError>) => (options?.client ?? client).post<BillingV1SubscriptionServiceReactivateSubscriptionResponses, unknown, ThrowOnError>({ url: '/billing/v1/subscription/reactivate', ...options });\n\n/**\n * GetBandwidthUsage\n */\nexport const billingV1UsageServiceGetBandwidthUsage = <ThrowOnError extends boolean = false>(options?: Options<BillingV1UsageServiceGetBandwidthUsageData, ThrowOnError>) => (options?.client ?? client).get<BillingV1UsageServiceGetBandwidthUsageResponses, unknown, ThrowOnError>({ url: '/billing/v1/bandwidth-usage', ...options });\n\n/**\n * GetBandwidthUsageHistory\n */\nexport const billingV1UsageServiceGetBandwidthUsageHistory = <ThrowOnError extends boolean = false>(options?: Options<BillingV1UsageServiceGetBandwidthUsageHistoryData, ThrowOnError>) => (options?.client ?? client).get<BillingV1UsageServiceGetBandwidthUsageHistoryResponses, unknown, ThrowOnError>({ url: '/billing/v1/bandwidth-usage/history', ...options });\n\n/**\n * RefreshBandwidthUsage\n */\nexport const billingV1UsageServiceRefreshBandwidthUsage = <ThrowOnError extends boolean = false>(options?: Options<BillingV1UsageServiceRefreshBandwidthUsageData, ThrowOnError>) => (options?.client ?? client).post<BillingV1UsageServiceRefreshBandwidthUsageResponses, unknown, ThrowOnError>({ url: '/billing/v1/bandwidth-usage/refresh', ...options });\n\n/**\n * GetStorageUsage\n */\nexport const billingV1UsageServiceGetStorageUsage = <ThrowOnError extends boolean = false>(options?: Options<BillingV1UsageServiceGetStorageUsageData, ThrowOnError>) => (options?.client ?? client).get<BillingV1UsageServiceGetStorageUsageResponses, unknown, ThrowOnError>({ url: '/billing/v1/storage-usage', ...options });\n\n/**\n * GetStorageUsageHistory\n */\nexport const billingV1UsageServiceGetStorageUsageHistory = <ThrowOnError extends boolean = false>(options?: Options<BillingV1UsageServiceGetStorageUsageHistoryData, ThrowOnError>) => (options?.client ?? client).get<BillingV1UsageServiceGetStorageUsageHistoryResponses, unknown, ThrowOnError>({ url: '/billing/v1/storage-usage/history', ...options });\n\n/**\n * RefreshStorageUsage\n */\nexport const billingV1UsageServiceRefreshStorageUsage = <ThrowOnError extends boolean = false>(options?: Options<BillingV1UsageServiceRefreshStorageUsageData, ThrowOnError>) => (options?.client ?? client).post<BillingV1UsageServiceRefreshStorageUsageResponses, unknown, ThrowOnError>({ url: '/billing/v1/storage-usage/refresh', ...options });\n\n/**\n * ListClientCredentials\n */\nexport const clientauthV1ClientCredentialServiceListClientCredentials = <ThrowOnError extends boolean = false>(options?: Options<ClientauthV1ClientCredentialServiceListClientCredentialsData, ThrowOnError>) => (options?.client ?? client).get<ClientauthV1ClientCredentialServiceListClientCredentialsResponses, unknown, ThrowOnError>({ url: '/platform/clientauth/v1/credentials', ...options });\n\n/**\n * CreateClientCredential\n */\nexport const clientauthV1ClientCredentialServiceCreateClientCredential = <ThrowOnError extends boolean = false>(options: Options<ClientauthV1ClientCredentialServiceCreateClientCredentialData, ThrowOnError>) => (options.client ?? client).post<ClientauthV1ClientCredentialServiceCreateClientCredentialResponses, unknown, ThrowOnError>({\n url: '/platform/clientauth/v1/credentials',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * RevokeClientCredential\n */\nexport const clientauthV1ClientCredentialServiceRevokeClientCredential = <ThrowOnError extends boolean = false>(options: Options<ClientauthV1ClientCredentialServiceRevokeClientCredentialData, ThrowOnError>) => (options.client ?? client).post<ClientauthV1ClientCredentialServiceRevokeClientCredentialResponses, unknown, ThrowOnError>({ url: '/platform/clientauth/v1/credentials/{credential_id}/revoke', ...options });\n\n/**\n * MintClientToken\n */\nexport const clientauthV1ClientCredentialServiceMintClientToken = <ThrowOnError extends boolean = false>(options: Options<ClientauthV1ClientCredentialServiceMintClientTokenData, ThrowOnError>) => (options.client ?? client).post<ClientauthV1ClientCredentialServiceMintClientTokenResponses, unknown, ThrowOnError>({\n url: '/platform/clientauth/v1/token',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * ListFeeds\n */\nexport const feedsV1FeedServiceListFeeds = <ThrowOnError extends boolean = false>(options: Options<FeedsV1FeedServiceListFeedsData, ThrowOnError>) => (options.client ?? client).get<FeedsV1FeedServiceListFeedsResponses, unknown, ThrowOnError>({ url: '/feeds/v1/projects/{project_id}/feeds', ...options });\n\n/**\n * CreateFeed\n */\nexport const feedsV1FeedServiceCreateFeed = <ThrowOnError extends boolean = false>(options: Options<FeedsV1FeedServiceCreateFeedData, ThrowOnError>) => (options.client ?? client).post<FeedsV1FeedServiceCreateFeedResponses, unknown, ThrowOnError>({\n url: '/feeds/v1/projects/{project_id}/feeds',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * DeleteFeed\n */\nexport const feedsV1FeedServiceDeleteFeed = <ThrowOnError extends boolean = false>(options: Options<FeedsV1FeedServiceDeleteFeedData, ThrowOnError>) => (options.client ?? client).delete<FeedsV1FeedServiceDeleteFeedResponses, unknown, ThrowOnError>({ url: '/feeds/v1/projects/{project_id}/feeds/{feed_id}', ...options });\n\n/**\n * GetFeed\n */\nexport const feedsV1FeedServiceGetFeed = <ThrowOnError extends boolean = false>(options: Options<FeedsV1FeedServiceGetFeedData, ThrowOnError>) => (options.client ?? client).get<FeedsV1FeedServiceGetFeedResponses, unknown, ThrowOnError>({ url: '/feeds/v1/projects/{project_id}/feeds/{feed_id}', ...options });\n\n/**\n * UpdateFeed\n */\nexport const feedsV1FeedServiceUpdateFeed = <ThrowOnError extends boolean = false>(options: Options<FeedsV1FeedServiceUpdateFeedData, ThrowOnError>) => (options.client ?? client).put<FeedsV1FeedServiceUpdateFeedResponses, unknown, ThrowOnError>({\n url: '/feeds/v1/projects/{project_id}/feeds/{feed_id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * MarkImageFailed\n */\nexport const imagesV1ImageConversionServiceMarkImageFailed = <ThrowOnError extends boolean = false>(options: Options<ImagesV1ImageConversionServiceMarkImageFailedData, ThrowOnError>) => (options.client ?? client).post<ImagesV1ImageConversionServiceMarkImageFailedResponses, unknown, ThrowOnError>({\n url: '/internal/images/mark-failed',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * MarkImageProcessed\n */\nexport const imagesV1ImageConversionServiceMarkImageProcessed = <ThrowOnError extends boolean = false>(options: Options<ImagesV1ImageConversionServiceMarkImageProcessedData, ThrowOnError>) => (options.client ?? client).post<ImagesV1ImageConversionServiceMarkImageProcessedResponses, unknown, ThrowOnError>({\n url: '/internal/images/mark-processed',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * TakeUnprocessedImage\n */\nexport const imagesV1ImageConversionServiceTakeUnprocessedImage = <ThrowOnError extends boolean = false>(options?: Options<ImagesV1ImageConversionServiceTakeUnprocessedImageData, ThrowOnError>) => (options?.client ?? client).post<ImagesV1ImageConversionServiceTakeUnprocessedImageResponses, unknown, ThrowOnError>({ url: '/internal/images/take', ...options });\n\n/**\n * GetImage\n */\nexport const imagesV1ImageServiceGetImage = <ThrowOnError extends boolean = false>(options: Options<ImagesV1ImageServiceGetImageData, ThrowOnError>) => (options.client ?? client).get<ImagesV1ImageServiceGetImageResponses, unknown, ThrowOnError>({ url: '/media/v1/images/{image_id}', ...options });\n\n/**\n * ListImages\n */\nexport const imagesV1ImageServiceListImages = <ThrowOnError extends boolean = false>(options: Options<ImagesV1ImageServiceListImagesData, ThrowOnError>) => (options.client ?? client).get<ImagesV1ImageServiceListImagesResponses, unknown, ThrowOnError>({ url: '/media/v1/projects/{project_id}/images', ...options });\n\n/**\n * CreateImageUpload\n */\nexport const imagesV1ImageServiceCreateImageUpload = <ThrowOnError extends boolean = false>(options: Options<ImagesV1ImageServiceCreateImageUploadData, ThrowOnError>) => (options.client ?? client).post<ImagesV1ImageServiceCreateImageUploadResponses, unknown, ThrowOnError>({\n url: '/media/v1/projects/{project_id}/images/upload',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * DeleteImage\n */\nexport const imagesV1ImageServiceDeleteImage = <ThrowOnError extends boolean = false>(options: Options<ImagesV1ImageServiceDeleteImageData, ThrowOnError>) => (options.client ?? client).delete<ImagesV1ImageServiceDeleteImageResponses, unknown, ThrowOnError>({ url: '/media/v1/projects/{project_id}/images/{image_id}', ...options });\n\n/**\n * UpdateImageVisibility\n */\nexport const imagesV1ImageServiceUpdateImageVisibility = <ThrowOnError extends boolean = false>(options: Options<ImagesV1ImageServiceUpdateImageVisibilityData, ThrowOnError>) => (options.client ?? client).patch<ImagesV1ImageServiceUpdateImageVisibilityResponses, unknown, ThrowOnError>({\n url: '/media/v1/projects/{project_id}/images/{image_id}/visibility',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * RefreshPlatformToken\n */\nexport const platformauthV1PlatformAuthServiceRefreshPlatformToken = <ThrowOnError extends boolean = false>(options: Options<PlatformauthV1PlatformAuthServiceRefreshPlatformTokenData, ThrowOnError>) => (options.client ?? client).post<PlatformauthV1PlatformAuthServiceRefreshPlatformTokenResponses, unknown, ThrowOnError>({\n url: '/platform/auth/v1/refresh',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * ExchangeAPIKey\n */\nexport const platformauthV1PlatformAuthServiceExchangeApiKey = <ThrowOnError extends boolean = false>(options: Options<PlatformauthV1PlatformAuthServiceExchangeApiKeyData, ThrowOnError>) => (options.client ?? client).post<PlatformauthV1PlatformAuthServiceExchangeApiKeyResponses, unknown, ThrowOnError>({\n url: '/platform/auth/v1/token',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * ListPosts\n */\nexport const postsV1PostServiceListPosts3 = <ThrowOnError extends boolean = false>(options: Options<PostsV1PostServiceListPosts3Data, ThrowOnError>) => (options.client ?? client).get<PostsV1PostServiceListPosts3Responses, unknown, ThrowOnError>({ url: '/posts/v1/feeds/{feed_id}', ...options });\n\n/**\n * ListPosts\n */\nexport const postsV1PostServiceListPosts4 = <ThrowOnError extends boolean = false>(options: Options<PostsV1PostServiceListPosts4Data, ThrowOnError>) => (options.client ?? client).get<PostsV1PostServiceListPosts4Responses, unknown, ThrowOnError>({ url: '/posts/v1/feeds/{feed_id}/creators/{creator_id}', ...options });\n\n/**\n * GetPost\n */\nexport const postsV1PostServiceGetPost3 = <ThrowOnError extends boolean = false>(options: Options<PostsV1PostServiceGetPost3Data, ThrowOnError>) => (options.client ?? client).get<PostsV1PostServiceGetPost3Responses, unknown, ThrowOnError>({ url: '/posts/v1/feeds/{feed_id}/{post_id}', ...options });\n\n/**\n * ListPosts\n */\nexport const postsV1PostServiceListPosts = <ThrowOnError extends boolean = false>(options: Options<PostsV1PostServiceListPostsData, ThrowOnError>) => (options.client ?? client).get<PostsV1PostServiceListPostsResponses, unknown, ThrowOnError>({ url: '/posts/v1/projects/{project_id}/feeds/{feed_id}/posts', ...options });\n\n/**\n * CreatePost\n */\nexport const postsV1PostServiceCreatePost = <ThrowOnError extends boolean = false>(options: Options<PostsV1PostServiceCreatePostData, ThrowOnError>) => (options.client ?? client).post<PostsV1PostServiceCreatePostResponses, unknown, ThrowOnError>({\n url: '/posts/v1/projects/{project_id}/feeds/{feed_id}/posts',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * ListPosts\n */\nexport const postsV1PostServiceListPosts2 = <ThrowOnError extends boolean = false>(options: Options<PostsV1PostServiceListPosts2Data, ThrowOnError>) => (options.client ?? client).get<PostsV1PostServiceListPosts2Responses, unknown, ThrowOnError>({ url: '/posts/v1/projects/{project_id}/feeds/{feed_id}/posts/creators/{creator_id}', ...options });\n\n/**\n * CreatePostUpload\n */\nexport const postsV1PostServiceCreatePostUpload = <ThrowOnError extends boolean = false>(options: Options<PostsV1PostServiceCreatePostUploadData, ThrowOnError>) => (options.client ?? client).post<PostsV1PostServiceCreatePostUploadResponses, unknown, ThrowOnError>({\n url: '/posts/v1/projects/{project_id}/feeds/{feed_id}/posts/upload',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * DeletePost\n */\nexport const postsV1PostServiceDeletePost2 = <ThrowOnError extends boolean = false>(options: Options<PostsV1PostServiceDeletePost2Data, ThrowOnError>) => (options.client ?? client).delete<PostsV1PostServiceDeletePost2Responses, unknown, ThrowOnError>({ url: '/posts/v1/projects/{project_id}/feeds/{feed_id}/posts/{post_id}', ...options });\n\n/**\n * GetPost\n */\nexport const postsV1PostServiceGetPost2 = <ThrowOnError extends boolean = false>(options: Options<PostsV1PostServiceGetPost2Data, ThrowOnError>) => (options.client ?? client).get<PostsV1PostServiceGetPost2Responses, unknown, ThrowOnError>({ url: '/posts/v1/projects/{project_id}/feeds/{feed_id}/posts/{post_id}', ...options });\n\n/**\n * DeletePost\n */\nexport const postsV1PostServiceDeletePost = <ThrowOnError extends boolean = false>(options: Options<PostsV1PostServiceDeletePostData, ThrowOnError>) => (options.client ?? client).delete<PostsV1PostServiceDeletePostResponses, unknown, ThrowOnError>({ url: '/posts/v1/projects/{project_id}/posts/{post_id}', ...options });\n\n/**\n * GetPost\n */\nexport const postsV1PostServiceGetPost = <ThrowOnError extends boolean = false>(options: Options<PostsV1PostServiceGetPostData, ThrowOnError>) => (options.client ?? client).get<PostsV1PostServiceGetPostResponses, unknown, ThrowOnError>({ url: '/posts/v1/projects/{project_id}/posts/{post_id}', ...options });\n\n/**\n * ListProjects\n */\nexport const projectV1ProjectServiceListProjects = <ThrowOnError extends boolean = false>(options: Options<ProjectV1ProjectServiceListProjectsData, ThrowOnError>) => (options.client ?? client).get<ProjectV1ProjectServiceListProjectsResponses, unknown, ThrowOnError>({ url: '/organizations/{org_id}/projects/v1', ...options });\n\n/**\n * CreateProject\n */\nexport const projectV1ProjectServiceCreateProject = <ThrowOnError extends boolean = false>(options: Options<ProjectV1ProjectServiceCreateProjectData, ThrowOnError>) => (options.client ?? client).post<ProjectV1ProjectServiceCreateProjectResponses, unknown, ThrowOnError>({\n url: '/organizations/{org_id}/projects/v1',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * DeleteProject\n */\nexport const projectV1ProjectServiceDeleteProject = <ThrowOnError extends boolean = false>(options: Options<ProjectV1ProjectServiceDeleteProjectData, ThrowOnError>) => (options.client ?? client).delete<ProjectV1ProjectServiceDeleteProjectResponses, unknown, ThrowOnError>({ url: '/organizations/{org_id}/projects/v1/{project_id}', ...options });\n\n/**\n * GetProject\n */\nexport const projectV1ProjectServiceGetProject = <ThrowOnError extends boolean = false>(options: Options<ProjectV1ProjectServiceGetProjectData, ThrowOnError>) => (options.client ?? client).get<ProjectV1ProjectServiceGetProjectResponses, unknown, ThrowOnError>({ url: '/organizations/{org_id}/projects/v1/{project_id}', ...options });\n\n/**\n * RemoveCustomDomain\n */\nexport const projectV1ProjectServiceRemoveCustomDomain = <ThrowOnError extends boolean = false>(options: Options<ProjectV1ProjectServiceRemoveCustomDomainData, ThrowOnError>) => (options.client ?? client).delete<ProjectV1ProjectServiceRemoveCustomDomainResponses, unknown, ThrowOnError>({ url: '/organizations/{org_id}/projects/v1/{project_id}/custom-domain', ...options });\n\n/**\n * SetCustomDomain\n */\nexport const projectV1ProjectServiceSetCustomDomain = <ThrowOnError extends boolean = false>(options: Options<ProjectV1ProjectServiceSetCustomDomainData, ThrowOnError>) => (options.client ?? client).put<ProjectV1ProjectServiceSetCustomDomainResponses, unknown, ThrowOnError>({\n url: '/organizations/{org_id}/projects/v1/{project_id}/custom-domain',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * MoveProject\n */\nexport const projectV1ProjectServiceMoveProject = <ThrowOnError extends boolean = false>(options: Options<ProjectV1ProjectServiceMoveProjectData, ThrowOnError>) => (options.client ?? client).post<ProjectV1ProjectServiceMoveProjectResponses, unknown, ThrowOnError>({\n url: '/organizations/{org_id}/projects/v1/{project_id}/move',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * UpdateProjectName\n */\nexport const projectV1ProjectServiceUpdateProjectName = <ThrowOnError extends boolean = false>(options: Options<ProjectV1ProjectServiceUpdateProjectNameData, ThrowOnError>) => (options.client ?? client).patch<ProjectV1ProjectServiceUpdateProjectNameResponses, unknown, ThrowOnError>({\n url: '/organizations/{org_id}/projects/v1/{project_id}/name',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * UpdateVideoQuality\n */\nexport const projectV1ProjectServiceUpdateVideoQuality = <ThrowOnError extends boolean = false>(options: Options<ProjectV1ProjectServiceUpdateVideoQualityData, ThrowOnError>) => (options.client ?? client).patch<ProjectV1ProjectServiceUpdateVideoQualityResponses, unknown, ThrowOnError>({\n url: '/organizations/{org_id}/projects/v1/{project_id}/video-quality',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * DeleteAllAudioTracks\n */\nexport const videosV1AudioTrackServiceDeleteAllAudioTracks = <ThrowOnError extends boolean = false>(options: Options<VideosV1AudioTrackServiceDeleteAllAudioTracksData, ThrowOnError>) => (options.client ?? client).delete<VideosV1AudioTrackServiceDeleteAllAudioTracksResponses, unknown, ThrowOnError>({ url: '/media/v1/projects/{project_id}/videos/{video_id}/audio-tracks', ...options });\n\n/**\n * DeleteAudioTracksByLanguage\n */\nexport const videosV1AudioTrackServiceDeleteAudioTracksByLanguage = <ThrowOnError extends boolean = false>(options: Options<VideosV1AudioTrackServiceDeleteAudioTracksByLanguageData, ThrowOnError>) => (options.client ?? client).delete<VideosV1AudioTrackServiceDeleteAudioTracksByLanguageResponses, unknown, ThrowOnError>({ url: '/media/v1/projects/{project_id}/videos/{video_id}/audio-tracks/language/{language_code}', ...options });\n\n/**\n * CreateAudioTrackUpload\n */\nexport const videosV1AudioTrackServiceCreateAudioTrackUpload = <ThrowOnError extends boolean = false>(options: Options<VideosV1AudioTrackServiceCreateAudioTrackUploadData, ThrowOnError>) => (options.client ?? client).post<VideosV1AudioTrackServiceCreateAudioTrackUploadResponses, unknown, ThrowOnError>({\n url: '/media/v1/projects/{project_id}/videos/{video_id}/audio-tracks/upload',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * DeleteAudioTrack\n */\nexport const videosV1AudioTrackServiceDeleteAudioTrack = <ThrowOnError extends boolean = false>(options: Options<VideosV1AudioTrackServiceDeleteAudioTrackData, ThrowOnError>) => (options.client ?? client).delete<VideosV1AudioTrackServiceDeleteAudioTrackResponses, unknown, ThrowOnError>({ url: '/media/v1/projects/{project_id}/videos/{video_id}/audio-tracks/{track_id}', ...options });\n\n/**\n * ListAudioTracks\n */\nexport const videosV1AudioTrackServiceListAudioTracks = <ThrowOnError extends boolean = false>(options: Options<VideosV1AudioTrackServiceListAudioTracksData, ThrowOnError>) => (options.client ?? client).get<VideosV1AudioTrackServiceListAudioTracksResponses, unknown, ThrowOnError>({ url: '/media/v1/videos/{video_id}/audio-tracks', ...options });\n\n/**\n * UpdateVideoChapters\n */\nexport const videosV1ChapterServiceUpdateVideoChapters = <ThrowOnError extends boolean = false>(options: Options<VideosV1ChapterServiceUpdateVideoChaptersData, ThrowOnError>) => (options.client ?? client).delete<VideosV1ChapterServiceUpdateVideoChaptersResponses, unknown, ThrowOnError>({ url: '/media/v1/projects/{project_id}/videos/{video_id}/chapters', ...options });\n\n/**\n * GetVideoChapters\n */\nexport const videosV1ChapterServiceGetVideoChapters = <ThrowOnError extends boolean = false>(options: Options<VideosV1ChapterServiceGetVideoChaptersData, ThrowOnError>) => (options.client ?? client).get<VideosV1ChapterServiceGetVideoChaptersResponses, unknown, ThrowOnError>({ url: '/media/v1/projects/{project_id}/videos/{video_id}/chapters', ...options });\n\n/**\n * DeleteVideoChapter\n */\nexport const videosV1ChapterServiceDeleteVideoChapter = <ThrowOnError extends boolean = false>(options: Options<VideosV1ChapterServiceDeleteVideoChapterData, ThrowOnError>) => (options.client ?? client).delete<VideosV1ChapterServiceDeleteVideoChapterResponses, unknown, ThrowOnError>({ url: '/media/v1/projects/{project_id}/videos/{video_id}/chapters/{start_time_sec}', ...options });\n\n/**\n * MarkVideoFailed\n */\nexport const videosV1VideoConversionServiceMarkVideoFailed = <ThrowOnError extends boolean = false>(options: Options<VideosV1VideoConversionServiceMarkVideoFailedData, ThrowOnError>) => (options.client ?? client).post<VideosV1VideoConversionServiceMarkVideoFailedResponses, unknown, ThrowOnError>({\n url: '/internal/videos/mark-failed',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * MarkVideoProcessed\n */\nexport const videosV1VideoConversionServiceMarkVideoProcessed = <ThrowOnError extends boolean = false>(options: Options<VideosV1VideoConversionServiceMarkVideoProcessedData, ThrowOnError>) => (options.client ?? client).post<VideosV1VideoConversionServiceMarkVideoProcessedResponses, unknown, ThrowOnError>({\n url: '/internal/videos/mark-processed',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * ListLanguages\n */\nexport const videosV1LanguageServiceListLanguages = <ThrowOnError extends boolean = false>(options?: Options<VideosV1LanguageServiceListLanguagesData, ThrowOnError>) => (options?.client ?? client).get<VideosV1LanguageServiceListLanguagesResponses, unknown, ThrowOnError>({ url: '/media/v1/languages', ...options });\n\n/**\n * DeleteAllSubtitles\n */\nexport const videosV1SubtitleServiceDeleteAllSubtitles = <ThrowOnError extends boolean = false>(options: Options<VideosV1SubtitleServiceDeleteAllSubtitlesData, ThrowOnError>) => (options.client ?? client).delete<VideosV1SubtitleServiceDeleteAllSubtitlesResponses, unknown, ThrowOnError>({ url: '/media/v1/projects/{project_id}/videos/{video_id}/subtitles', ...options });\n\n/**\n * DeleteSubtitlesByLanguage\n */\nexport const videosV1SubtitleServiceDeleteSubtitlesByLanguage = <ThrowOnError extends boolean = false>(options: Options<VideosV1SubtitleServiceDeleteSubtitlesByLanguageData, ThrowOnError>) => (options.client ?? client).delete<VideosV1SubtitleServiceDeleteSubtitlesByLanguageResponses, unknown, ThrowOnError>({ url: '/media/v1/projects/{project_id}/videos/{video_id}/subtitles/language/{language_code}', ...options });\n\n/**\n * CreateSubtitleUpload\n */\nexport const videosV1SubtitleServiceCreateSubtitleUpload = <ThrowOnError extends boolean = false>(options: Options<VideosV1SubtitleServiceCreateSubtitleUploadData, ThrowOnError>) => (options.client ?? client).post<VideosV1SubtitleServiceCreateSubtitleUploadResponses, unknown, ThrowOnError>({\n url: '/media/v1/projects/{project_id}/videos/{video_id}/subtitles/upload',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * DeleteSubtitle\n */\nexport const videosV1SubtitleServiceDeleteSubtitle = <ThrowOnError extends boolean = false>(options: Options<VideosV1SubtitleServiceDeleteSubtitleData, ThrowOnError>) => (options.client ?? client).delete<VideosV1SubtitleServiceDeleteSubtitleResponses, unknown, ThrowOnError>({ url: '/media/v1/projects/{project_id}/videos/{video_id}/subtitles/{subtitle_id}', ...options });\n\n/**\n * ListSubtitles\n */\nexport const videosV1SubtitleServiceListSubtitles = <ThrowOnError extends boolean = false>(options: Options<VideosV1SubtitleServiceListSubtitlesData, ThrowOnError>) => (options.client ?? client).get<VideosV1SubtitleServiceListSubtitlesResponses, unknown, ThrowOnError>({ url: '/media/v1/videos/{video_id}/subtitles', ...options });\n\n/**\n * ListVideos\n */\nexport const videosV1VideoServiceListVideos = <ThrowOnError extends boolean = false>(options: Options<VideosV1VideoServiceListVideosData, ThrowOnError>) => (options.client ?? client).get<VideosV1VideoServiceListVideosResponses, unknown, ThrowOnError>({ url: '/media/v1/projects/{project_id}/videos', ...options });\n\n/**\n * CreateVideoUpload\n */\nexport const videosV1VideoServiceCreateVideoUpload = <ThrowOnError extends boolean = false>(options: Options<VideosV1VideoServiceCreateVideoUploadData, ThrowOnError>) => (options.client ?? client).post<VideosV1VideoServiceCreateVideoUploadResponses, unknown, ThrowOnError>({\n url: '/media/v1/projects/{project_id}/videos/upload',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * DeleteVideo\n */\nexport const videosV1VideoServiceDeleteVideo = <ThrowOnError extends boolean = false>(options: Options<VideosV1VideoServiceDeleteVideoData, ThrowOnError>) => (options.client ?? client).delete<VideosV1VideoServiceDeleteVideoResponses, unknown, ThrowOnError>({ url: '/media/v1/projects/{project_id}/videos/{video_id}', ...options });\n\n/**\n * UpdateVideoVisibility\n */\nexport const videosV1VideoServiceUpdateVideoVisibility = <ThrowOnError extends boolean = false>(options: Options<VideosV1VideoServiceUpdateVideoVisibilityData, ThrowOnError>) => (options.client ?? client).patch<VideosV1VideoServiceUpdateVideoVisibilityResponses, unknown, ThrowOnError>({\n url: '/media/v1/projects/{project_id}/videos/{video_id}/visibility',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * GetVideo\n */\nexport const videosV1VideoServiceGetVideo = <ThrowOnError extends boolean = false>(options: Options<VideosV1VideoServiceGetVideoData, ThrowOnError>) => (options.client ?? client).get<VideosV1VideoServiceGetVideoResponses, unknown, ThrowOnError>({ url: '/media/v1/videos/{video_id}', ...options });\n","/**\n * Global constants for the auth library\n */\n\n/** Prefix for all cookies and storage keys */\nexport const GLOBAL_PREFIX: string = \"__rixl_auth\";\n\n/** Cookie expiry in days */\nexport const COOKIE_EXPIRY_DAYS: number = 30;\n\n/** OAuth state storage key prefix */\nexport const STATE_STORAGE_KEY_PREFIX: string = GLOBAL_PREFIX + \"_state_\";\n\n/** Social connect storage key prefix */\nexport const SOCIAL_CONNECT_KEY_PREFIX: string = GLOBAL_PREFIX + \"_social_connect_\";\n\ntype HttpStatusMap = Readonly<{\n ACCEPTED: number;\n BAD_REQUEST: number;\n UNAUTHORIZED: number;\n FORBIDDEN: number;\n NOT_FOUND: number;\n CONFLICT: number;\n TOO_MANY_REQUESTS: number;\n INTERNAL_SERVER_ERROR: number;\n}>;\n\n/** HTTP Status codes - only codes actually used in the library */\nexport const HTTP_STATUS: HttpStatusMap = {\n ACCEPTED: 202,\n BAD_REQUEST: 400,\n UNAUTHORIZED: 401,\n FORBIDDEN: 403,\n NOT_FOUND: 404,\n CONFLICT: 409,\n TOO_MANY_REQUESTS: 429,\n INTERNAL_SERVER_ERROR: 500,\n} as const;\n","import {STATE_STORAGE_KEY_PREFIX} from \"./constants\";\n\nconst storagePath = (provider: string) => STATE_STORAGE_KEY_PREFIX + provider;\n\n/**\n * Retrieves and validates the OAuth state from session storage\n * @param provider The provider identifier\n * @param state The state value to validate\n * @returns True if the state is valid, false otherwise\n */\nexport function validateOAuthState(provider: string, state: string): boolean {\n const storedState = sessionStorage.getItem(storagePath(provider));\n return storedState === state;\n}\n\n/**\n * Gets or Generates a complete state parameter for OAuth requests\n * @param provider The identifier for the provider (e.g., 'google', 'apple')\n * @returns A state string containing the provider identifier and random data\n */\nexport function getOauthState(provider: string): string {\n return sessionStorage.getItem(storagePath(provider)) ?? generateOauthState(provider);\n}\n\nfunction generateOauthState(provider: string): string {\n const randomPart = crypto.randomUUID();\n const state = `${provider}_${randomPart}`;\n sessionStorage.setItem(storagePath(provider), state);\n return state;\n}\n","/**\n * Generic OAuth provider configuration and utilities\n * This file contains shared logic for all OAuth providers to reduce duplication\n */\n\nimport {atom, type WritableAtom} from \"nanostores\";\nimport {getOauthState} from \"../state\";\nimport {AuthProvider} from \"./types\";\n\n/**\n * Base configuration for OAuth providers\n */\nexport interface OAuthProviderConfig {\n clientId: string;\n scope?: string;\n}\n\n/**\n * OAuth provider metadata\n */\nexport interface OAuthProviderMetadata {\n name: string;\n authBaseUrl: string;\n defaultScopes: string[];\n responseType: string;\n responseMode?: string;\n additionalParams?: Record<string, string>;\n}\n\n/**\n * Configuration for creating an OAuth provider\n */\nexport interface CreateOAuthProviderConfig {\n provider: AuthProvider;\n metadata: OAuthProviderMetadata;\n}\n\n/**\n * Result of creating an OAuth provider\n */\nexport interface OAuthProviderResult {\n config: WritableAtom<OAuthProviderConfig | null>;\n authUrl: WritableAtom<string | null>;\n updateAuthUrl: () => void;\n}\n\n/**\n * Builds an OAuth URL from configuration and metadata\n */\nexport const buildOAuthUrl = (config: OAuthProviderConfig, metadata: OAuthProviderMetadata, state: string): string => {\n const params = new URLSearchParams({\n client_id: config.clientId,\n redirect_uri: window.location.origin,\n response_type: metadata.responseType,\n scope: [...metadata.defaultScopes, ...(config.scope ? [config.scope] : [])].join(\" \"),\n state: state,\n });\n\n // Add nonce for providers that require it\n if (metadata.responseType.includes(\"id_token\")) {\n params.set(\"nonce\", state);\n }\n\n // Add response mode if specified\n if (metadata.responseMode) {\n params.set(\"response_mode\", metadata.responseMode);\n }\n\n // Add any additional provider-specific params\n if (metadata.additionalParams) {\n Object.entries(metadata.additionalParams).forEach(([key, value]) => {\n params.set(key, value);\n });\n }\n\n return `${metadata.authBaseUrl}?${params.toString()}`;\n};\n\n/**\n * Warning helper for unconfigured providers\n */\nexport const warnProviderNotConfigured = (providerName: string): void => {\n console.warn(`${providerName} provider not configured. Check initClient method.`);\n};\n\n/**\n * Creates a reusable OAuth provider with configuration and URL management\n * This factory reduces code duplication across OAuth providers\n */\nexport const createOAuthProvider = ({provider, metadata}: CreateOAuthProviderConfig): OAuthProviderResult => {\n const config = atom<OAuthProviderConfig | null>(null);\n const authUrl = atom<string | null>(null);\n\n const updateAuthUrl = () => {\n const currentConfig = config.get();\n if (!currentConfig) {\n warnProviderNotConfigured(metadata.name);\n authUrl.set(null);\n return;\n }\n\n const state = getOauthState(provider);\n const url = buildOAuthUrl(currentConfig, metadata, state);\n authUrl.set(url);\n };\n\n return {config, authUrl, updateAuthUrl};\n};\n","import {AuthProvider} from \"./types\";\nimport {createOAuthProvider, type OAuthProviderConfig} from \"./oauth\";\nimport type {WritableAtom} from \"nanostores\";\n\n// Provider configuration interface\nexport interface GoogleProviderConfig extends OAuthProviderConfig {}\n\n// Create the Google provider using the factory\nconst googleProvider = createOAuthProvider({\n provider: AuthProvider.GOOGLE,\n metadata: {\n name: \"Google\",\n authBaseUrl: \"https://accounts.google.com/o/oauth2/v2/auth\",\n defaultScopes: [\"openid\", \"https://www.googleapis.com/auth/userinfo.email\", \"https://www.googleapis.com/auth/userinfo.profile\"],\n responseType: \"id_token\",\n },\n});\n\n// Export the configuration atom, auth URL atom, and update function\nexport const googleConfig: WritableAtom<OAuthProviderConfig | null> = googleProvider.config;\nexport const googleAuthUrl: WritableAtom<string | null> = googleProvider.authUrl;\nexport const updateGoogleAuthUrl: () => void = googleProvider.updateAuthUrl;\n","import {AuthProvider} from \"./types\";\nimport {createOAuthProvider, type OAuthProviderConfig} from \"./oauth\";\nimport type {WritableAtom} from \"nanostores\";\n\n// Provider configuration interface\nexport interface MicrosoftProviderConfig extends OAuthProviderConfig {}\n\n// Create the Microsoft provider using the factory\nconst microsoftProvider = createOAuthProvider({\n provider: AuthProvider.MICROSOFT,\n metadata: {\n name: \"Microsoft\",\n authBaseUrl: \"https://login.microsoftonline.com/common/oauth2/v2.0/authorize\",\n defaultScopes: [\"openid\", \"profile\", \"email\"],\n responseType: \"id_token\",\n responseMode: \"fragment\",\n },\n});\n\n// Export the configuration atom, auth URL atom, and update function\nexport const microsoftConfig: WritableAtom<OAuthProviderConfig | null> = microsoftProvider.config;\nexport const microsoftAuthUrl: WritableAtom<string | null> = microsoftProvider.authUrl;\nexport const updateMicrosoftAuthUrl: () => void = microsoftProvider.updateAuthUrl;\n","import {AuthProvider} from \"./types\";\nimport {createOAuthProvider, type OAuthProviderConfig} from \"./oauth\";\nimport type {WritableAtom} from \"nanostores\";\n\n// Provider configuration interface\nexport interface AppleProviderConfig extends OAuthProviderConfig {}\n\n// Create the Apple provider using the factory\nconst appleProvider = createOAuthProvider({\n provider: AuthProvider.APPLE,\n metadata: {\n name: \"Apple\",\n authBaseUrl: \"https://appleid.apple.com/auth/authorize\",\n defaultScopes: [\"openid\"],\n responseType: \"code id_token\",\n responseMode: \"fragment\",\n },\n});\n\n// Export the configuration atom, auth URL atom, and update function\nexport const appleConfig: WritableAtom<OAuthProviderConfig | null> = appleProvider.config;\nexport const appleAuthUrl: WritableAtom<string | null> = appleProvider.authUrl;\nexport const updateAppleAuthUrl: () => void = appleProvider.updateAuthUrl;\n","import {atom, type WritableAtom} from \"nanostores\";\nimport {warnProviderNotConfigured} from \"./oauth\";\n\n// Provider configuration interface\nexport interface TelegramProviderConfig {\n botId: string;\n}\n\n// Store provider configuration\nexport const telegramConfig: WritableAtom<TelegramProviderConfig | null> = atom<TelegramProviderConfig | null>(null);\n\n// Store for Telegram auth URL\nexport const telegramAuthUrl: WritableAtom<string | null> = atom<string | null>(null);\n\n/**\n * Updates the Telegram authentication URL using the configured settings\n */\nexport function updateTelegramAuthUrl(): void {\n const config = telegramConfig.get();\n if (!config) {\n warnProviderNotConfigured(\"Telegram\");\n telegramAuthUrl.set(null);\n return;\n }\n\n const url =\n \"https://oauth.telegram.org/auth?\" +\n `bot_id=${encodeURIComponent(config.botId)}` +\n `&origin=${encodeURIComponent(window.location.origin)}` +\n `&return_to=${encodeURIComponent(window.location.origin + location.pathname)}`;\n\n telegramAuthUrl.set(url);\n}\n","// Initialize urlParams lazily to avoid accessing window during module import\n// This is important for test environments and SSR\nexport const urlParams: URLSearchParams = new URLSearchParams(typeof window !== \"undefined\" ? fromURL(window.location.href) : \"\");\n\nfunction fromURL(urlString: string): string {\n return (\n urlString\n // Replace everything before this first hashtag or question sign.\n .replace(/^[^?#]*[?#]/, \"\")\n // Replace all hashtags and question signs to make it look like some search params.\n .replace(/[?#]/g, \"&\")\n );\n}\n","import {urlParams} from \"../url\";\nimport {validateOAuthState} from \"../state\";\nimport {AuthProvider} from \"./types\";\n\n/**\n * Extracts the provider identifier from a state parameter\n * @param state The state parameter from the OAuth redirect\n * @returns The provider identifier or undefined if not found\n */\nexport function extractProviderFromState(state: string): string | undefined {\n const parts = state.split(\"_\");\n if (parts.length >= 1) {\n return parts[0];\n }\n return undefined;\n}\n\nconst OAUTH_PROVIDERS = [AuthProvider.GOOGLE, AuthProvider.APPLE, AuthProvider.MICROSOFT] as const;\n\n/**\n * Detects the authentication provider from URL parameters\n * @returns The detected authentication provider or undefined if none detected\n */\nexport function detectProvider(): AuthProvider | undefined {\n // Check for Telegram providers first (they have specific parameters)\n if (urlParams.has(AuthProvider.TELEGRAM_MINI_APP)) {\n return AuthProvider.TELEGRAM_MINI_APP;\n }\n if (urlParams.has(AuthProvider.TELEGRAM_WEB)) {\n return AuthProvider.TELEGRAM_WEB;\n }\n\n // Check for OAuth providers via id_token + state\n const id_token = urlParams.get(\"id_token\");\n const state = urlParams.get(\"state\");\n\n if (id_token && state) {\n const providerFromState = extractProviderFromState(state);\n return OAUTH_PROVIDERS.find((p) => providerFromState === p && validateOAuthState(p, state));\n }\n\n return undefined;\n}\n\n/**\n * Gets the authentication token or code from the URL based on the provider\n * @param provider The authentication provider\n * @returns The token or code, or undefined if not found\n */\nexport function getProviderToken(provider: AuthProvider): string | undefined {\n // For Telegram, the token is in a parameter named after the provider\n if (provider === AuthProvider.TELEGRAM_MINI_APP || provider === AuthProvider.TELEGRAM_WEB) {\n return urlParams.get(provider) || undefined;\n }\n\n // For OAuth providers (Google, Apple, Microsoft), the token is in the 'id_token' parameter\n if (provider === AuthProvider.GOOGLE || provider === AuthProvider.APPLE || provider === AuthProvider.MICROSOFT) {\n return urlParams.get(\"id_token\") || undefined;\n }\n\n return undefined;\n}\n","import {authV1TokenServiceRefreshToken} from \"../../generated/sdk.gen\";\nimport {AuthProvider} from \"../providers\";\nimport type {TokenResponse, LimitedScopeTokenResponse} from \"../types\";\n\nexport type {TokenResponse, LimitedScopeTokenResponse};\n\nexport interface RefreshTokenOptions {\n countryCode?: string;\n origin?: string;\n}\n\nexport const refreshTokens = async (\n provider: AuthProvider,\n token: string,\n options?: RefreshTokenOptions\n): Promise<TokenResponse | LimitedScopeTokenResponse> => {\n const {data} = await authV1TokenServiceRefreshToken({\n body: {\n token_type: provider,\n refresh_token: token,\n country_code: options?.countryCode,\n origin: options?.origin,\n },\n throwOnError: true,\n });\n return data as TokenResponse | LimitedScopeTokenResponse;\n};\n","/**\n * Interface for a deferred promise that can be resolved or rejected externally\n */\nexport interface Deferred {\n promise: Promise<void>;\n resolve: () => void;\n reject: (reason?: unknown) => void;\n}\n\n/**\n * Creates a deferred promise that can be resolved or rejected externally\n * @returns A deferred promise object\n */\nexport function createDeferred(): Deferred {\n let resolve!: () => void;\n let reject!: (reason?: unknown) => void;\n\n const promise = new Promise<void>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n\n return {promise, resolve, reject};\n}\n\n/**\n * Global deferred promise that tracks the initialization status of the auth library\n * This is resolved when initClient is called\n */\nexport const initDeferred: Deferred = createDeferred();\n","export const getAllCookiesStartWith = (startWithKey: string): Partial<Record<string, string>> => {\n // Check if document is available (not in test/SSR environment)\n if (typeof document === \"undefined\") {\n return {};\n }\n\n return document.cookie\n .split(\";\")\n .map((cv) => cv.split(\"=\").map((v) => v.trim()))\n .filter(([key]) => key && key !== startWithKey && key.startsWith(startWithKey))\n .reduce((ac, [key, value]) => Object.assign(ac, {[key!.slice(startWithKey.length + 1)]: value}), {});\n};\n\nimport type {CookieSameSite} from \"../types\";\n\ninterface CookieAttributes {\n expires?: number | Date | undefined;\n path?: string | undefined;\n domain?: string | undefined;\n secure?: boolean | undefined;\n sameSite?: CookieSameSite;\n}\n\nexport function setCookie(name: string, value: string, options?: CookieAttributes): void {\n // Check if document is available\n if (typeof document === \"undefined\") {\n return;\n }\n\n let cookieString = `${encodeName(name)}=${encodeValue(value)}`;\n\n if (options) {\n if (options.expires) {\n if (typeof options.expires === \"number\") {\n const date = new Date();\n date.setTime(date.getTime() + options.expires * 24 * 60 * 60 * 1000); // Convert days to milliseconds\n cookieString += `; expires=${date.toUTCString()}`;\n } else {\n cookieString += `; expires=${options.expires.toUTCString()}`;\n }\n }\n if (options.path) {\n cookieString += `; path=${options.path}`;\n }\n if (options.domain) {\n cookieString += `; domain=${options.domain}`;\n }\n if (options.secure) {\n cookieString += `; secure`;\n }\n if (options.sameSite) {\n cookieString += `; samesite=${options.sameSite}`;\n }\n }\n\n // Set the cookie\n document.cookie = cookieString;\n}\n\n// Function to delete a cookie\nexport function deleteCookie(name: string): void {\n // Check if document is available\n if (typeof document === \"undefined\") {\n return;\n }\n document.cookie = name + \"=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;\";\n}\n\nconst encodeName = (name: string) => encodeURIComponent(name).replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent);\n\nconst encodeValue = (value: string) =>\n encodeURIComponent(value as string).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g, decodeURIComponent);\n","import {deleteCookie, getAllCookiesStartWith, setCookie} from \"./util\";\nimport {GLOBAL_PREFIX, COOKIE_EXPIRY_DAYS} from \"../constants\";\n\nexport const initVals: Partial<Record<string, string>> = getAllCookiesStartWith(GLOBAL_PREFIX);\n\nexport const setStoreCookie = (key: string, value: unknown): void => {\n const expires = new Date();\n expires.setTime(expires.getTime() + COOKIE_EXPIRY_DAYS * 24 * 60 * 60 * 1000);\n\n const cookieKey = `${GLOBAL_PREFIX}_${key}`;\n\n if (!value || value === \"\") {\n deleteCookie(cookieKey);\n return;\n }\n\n const stringValue = typeof value === \"string\" ? value : JSON.stringify(value);\n setCookie(`${GLOBAL_PREFIX}_${key}`, stringValue, {\n expires,\n path: \"/\",\n sameSite: \"Lax\",\n });\n};\n","import {atom, type WritableAtom} from \"nanostores\";\nimport {GLOBAL_PREFIX} from \"./constants\";\nimport type {User} from \"./types\";\n\nconst userPath = GLOBAL_PREFIX + \"_user\";\nconst parseUser = (): User | undefined => {\n // Check if localStorage is available and has proper methods (e.g., in test environments)\n if (typeof localStorage === \"undefined\" || !localStorage || typeof localStorage.getItem !== \"function\") {\n return undefined;\n }\n\n const value = localStorage.getItem(userPath);\n if (value && value != \"undefined\") {\n try {\n return JSON.parse(value);\n } catch (err) {\n console.warn(\"Can't parse user data, error: \", err);\n return undefined;\n }\n }\n return undefined;\n};\n\nexport const user: WritableAtom<User | undefined> = atom<User | undefined>(parseUser());\nuser.subscribe((value) => {\n // Check if localStorage is available and has proper methods\n if (typeof localStorage === \"undefined\" || !localStorage || typeof localStorage.setItem !== \"function\") {\n return;\n }\n\n if (value) {\n localStorage.setItem(userPath, JSON.stringify(value));\n } else {\n localStorage.removeItem(userPath);\n }\n});\n","import {decodeJwt} from \"jose\";\nimport type {User} from \"../types\";\nimport {user} from \"../userStore\";\n\n/**\n * Decodes a JWT token and extracts user information\n * Uses jose library for modern, secure JWT handling\n * @param token The JWT token to decode\n * @returns The decoded user data or undefined if decoding fails\n */\nexport const decodeToken = (token: string): User | undefined => {\n try {\n const decodedUser = decodeJwt(token);\n return {\n id: decodedUser.id as string,\n email: decodedUser.email as string,\n first_name: decodedUser.first_name as string,\n last_name: decodedUser.last_name as string,\n username: decodedUser.username as string,\n image_url: decodedUser.image_url as string,\n language_code: decodedUser.language_code as string,\n org_id: decodedUser.org_id as string,\n };\n } catch (error) {\n // Only log in non-test environments to reduce test noise\n if (process.env.NODE_ENV !== \"test\") {\n console.warn(\"Failed to decode JWT token. Error: \", error);\n }\n return undefined;\n }\n};\n\n/**\n * Decodes a JWT token and sets the user in the store\n * @param token The JWT token to decode\n * @returns True if user was successfully decoded and set, false otherwise\n */\nexport const decodeAndSetUser = (token: string): boolean => {\n const userData = decodeToken(token);\n if (userData) {\n user.set(userData);\n return true;\n }\n return false;\n};\n\n/**\n * Checks if a token is expired based on the expiration timestamp\n * @param expireAt The expiration timestamp in milliseconds\n * @returns True if the token is expired, false otherwise\n */\nexport const isTokenExpired = (expireAt: number | undefined): boolean => {\n if (!expireAt) return true;\n return Date.now() >= expireAt;\n};\n","import {atom, type WritableAtom} from \"nanostores\";\nimport {refreshTokens} from \"./api/refresh-tokens\";\nimport {appleAuthUrl, AuthProvider, detectProvider, googleAuthUrl, telegramAuthUrl, microsoftAuthUrl} from \"./providers\";\nimport {initDeferred} from \"./initialization\";\nimport {initVals, setStoreCookie} from \"./cookie\";\nimport {user} from \"./userStore\";\nimport type {ProviderType} from \"./social/socialConnections\";\nimport {decodeAndSetUser, isTokenExpired} from \"./utils/jwt\";\nimport type {LoginErrorResponse} from \"./auth/types\";\nimport type {RequiresAction} from \"./types\";\n\n// Store for authentication state\nexport const isLogged: WritableAtom<boolean> = atom(initVals[\"isLogged\"] === \"true\" || detectProvider() !== undefined);\nexport const accessToken: WritableAtom<string | undefined> = atom(initVals[\"accessToken\"]);\nexport const refreshToken: WritableAtom<string | undefined> = atom(initVals[\"refreshToken\"]);\nexport const expireAt: WritableAtom<number> = atom(Number(initVals[\"expireAt\"]));\n\n// Store for OAuth/Telegram login errors (403, 409)\nexport const authError: WritableAtom<LoginErrorResponse | null> = atom<LoginErrorResponse | null>(null);\n\n// Store for limited access state (Telegram user without email)\nexport const requiresAction: WritableAtom<RequiresAction> = atom<RequiresAction>((initVals[\"requiresAction\"] as RequiresAction) || null);\nexport const limitedAccessToken: WritableAtom<string | null> = atom<string | null>(initVals[\"limitedAccessToken\"] || null);\n\n// Store the current getToken promise\nlet currentTokenPromise: Promise<string | undefined> | null = null;\n\n/**\n * Reset the current token promise (for testing purposes)\n * @internal\n */\nexport const resetTokenPromise = (): void => {\n currentTokenPromise = null;\n};\n\n// Map providers to their auth URL atoms\nconst PROVIDER_URL_MAP: Partial<Record<ProviderType, WritableAtom<string | null>>> = {\n google: googleAuthUrl,\n apple: appleAuthUrl,\n microsoft: microsoftAuthUrl,\n telegram: telegramAuthUrl,\n};\n\nexport const login = async (provider: ProviderType): Promise<void> => {\n await initDeferred.promise;\n\n const authUrlAtom = PROVIDER_URL_MAP[provider];\n if (!authUrlAtom) {\n throw new Error(`Unsupported provider: ${provider}`);\n }\n\n const authUrl = authUrlAtom.get();\n if (authUrl) {\n window.location.href = authUrl;\n } else {\n throw new Error(`${provider} provider is not configured. Please check your initClient configuration.`);\n }\n};\n\nconst refreshAccessToken = async (refresh: string): Promise<void> => {\n const result = await refreshTokens(AuthProvider.BEARER, refresh);\n // Bearer refresh always returns full tokens (not limited scope)\n if (!(\"requires_action\" in result)) {\n setTokens(result.access_token, result.refresh_token, result.expires_in);\n }\n};\n\nconst ensureValidAccessToken = async (refresh: string): Promise<void> => {\n const currentAccessToken = accessToken.get();\n if (currentAccessToken && !isTokenExpired(expireAt.get())) {\n return;\n }\n\n try {\n await refreshAccessToken(refresh);\n } catch (refreshError) {\n // If refresh fails, we should consider the user logged out\n console.error(\"Token refresh failed in getToken:\", refreshError);\n removeTokens();\n throw refreshError;\n }\n};\n\nexport const getToken = async (): Promise<string | undefined> => {\n // If there's already a getToken operation in progress, return that promise\n if (currentTokenPromise) {\n return currentTokenPromise;\n }\n\n // Create a new promise for the getToken operation\n currentTokenPromise = (async () => {\n try {\n // Wait for the library to be initialized\n await initDeferred.promise;\n\n // Users in limited-access flows should not receive full-scope tokens for protected calls\n if (requiresAction.get()) return undefined;\n\n const currentRefreshToken = refreshToken.get();\n if (!currentRefreshToken) return undefined;\n\n await ensureValidAccessToken(currentRefreshToken);\n\n const token = accessToken.get();\n if (token) {\n decodeAndSetUser(token);\n }\n\n return token;\n } catch (error) {\n console.warn(\"Failed to getToken(). Error: \", error);\n throw error;\n } finally {\n // Clear the promise reference when done\n currentTokenPromise = null;\n }\n })();\n\n return currentTokenPromise;\n};\n/**\n * Sets authentication tokens in the store\n * @param access The access token\n * @param refresh The refresh token\n * @param expiresIn The token expiration time in seconds\n */\nexport const setTokens = (access: string, refresh: string, expiresIn: number): void => {\n accessToken.set(access);\n refreshToken.set(refresh);\n expireAt.set(Date.now() + expiresIn * 1000);\n isLogged.set(true);\n\n // Clear limited access state when full tokens are set\n limitedAccessToken.set(null);\n requiresAction.set(null);\n\n // Clear any previous authentication errors after successful token set\n authError.set(null);\n\n // Decode and set user information\n decodeAndSetUser(access);\n};\n\n/**\n * Removes authentication tokens from the store\n */\nexport const removeTokens = (): void => {\n accessToken.set(\"\");\n refreshToken.set(\"\");\n expireAt.set(0);\n isLogged.set(false);\n user.set(undefined);\n\n // Clear limited access state on logout\n limitedAccessToken.set(null);\n requiresAction.set(null);\n\n // Clear any existing auth errors to ensure a clean logout state\n authError.set(null);\n};\n\n/**\n * Clears the auth error from the store\n */\nexport const clearAuthError = (): void => {\n authError.set(null);\n};\n\n/**\n * Sets limited access state for users requiring additional action (e.g., Telegram users without email)\n * @param token The limited scope access token\n * @param action The required action (e.g., \"add_email\")\n */\nexport const setLimitedAccessState = (token: string, action: RequiresAction): void => {\n limitedAccessToken.set(token);\n requiresAction.set(action);\n authError.set(null); // Clear any previous auth errors\n isLogged.set(true); // User is logged in but with limited scope\n};\n\n/**\n * Clears the limited access state (after email verification completes or user logs out)\n */\nexport const clearLimitedAccessState = (): void => {\n limitedAccessToken.set(null);\n requiresAction.set(null);\n\n // If there are no full tokens, user should no longer be considered logged in\n const hasFullTokens = !!accessToken.get() && !!refreshToken.get();\n if (!hasFullTokens) {\n isLogged.set(false);\n }\n};\n\n// Persist state changes to cookies\nisLogged.subscribe((value) => setStoreCookie(\"isLogged\", value));\naccessToken.subscribe((value) => setStoreCookie(\"accessToken\", value));\nrefreshToken.subscribe((value) => setStoreCookie(\"refreshToken\", value));\nexpireAt.subscribe((value) => setStoreCookie(\"expireAt\", value));\nrequiresAction.subscribe((value) => setStoreCookie(\"requiresAction\", value));\nlimitedAccessToken.subscribe((value) => setStoreCookie(\"limitedAccessToken\", value));\n","import type {HttpMethod} from \"../types\";\n\n/**\n * Configuration for API requests\n */\nexport interface ApiRequestConfig {\n method?: HttpMethod;\n body?: Record<string, unknown> | string;\n headers?: Record<string, string>;\n skipAuth?: boolean;\n retry?: number;\n signal?: AbortSignal;\n}\n\nexport interface ApiErrorContext {\n status: number;\n endpoint: string;\n data?: unknown;\n}\n\n/**\n * Generic API error class - wraps ky's HTTPError for consistency\n */\nexport class ApiError extends Error {\n public status: number;\n public endpoint: string;\n public data?: unknown;\n\n constructor(message: string, ...rest: [number, string?, unknown?] | [ApiErrorContext]) {\n super(message);\n this.name = \"ApiError\";\n\n const firstArg = rest[0];\n if (typeof firstArg === \"number\") {\n this.status = firstArg;\n this.endpoint = rest[1] ?? \"\";\n this.data = rest[2];\n return;\n }\n\n this.status = firstArg.status;\n this.endpoint = firstArg.endpoint;\n this.data = firstArg.data;\n }\n}\n","import {atom, type WritableAtom} from \"nanostores\";\n\n/**\n * Global API base URL store\n */\nexport const apiURL: WritableAtom<string> = atom(\"\");\n","import {client} from \"../../generated/client.gen\";\nimport {apiURL} from \"../api-url\";\nimport {getToken} from \"../authStore\";\nimport {ApiError} from \"./types\";\n\ninterface WireErrorBody {\n error?: string;\n details?: string;\n code?: number;\n}\n\nfunction isWireErrorBody(error: unknown): error is WireErrorBody {\n return typeof error === \"object\" && error !== null;\n}\n\nlet configured = false;\n\nexport function configureSdkClient(): void {\n if (configured) return;\n configured = true;\n\n client.setConfig({baseUrl: apiURL.get()});\n\n apiURL.subscribe((url) => {\n client.setConfig({baseUrl: url});\n });\n\n client.interceptors.request.use(async (request) => {\n if (request.headers.has(\"Authorization\")) {\n return request;\n }\n // The token endpoint authenticates via the refresh token in its body;\n // calling getToken() here would await the very refresh request being sent.\n if (new URL(request.url).pathname.endsWith(\"/auth/v1/token\")) {\n return request;\n }\n const token = await getToken();\n if (token) {\n request.headers.set(\"Authorization\", `Bearer ${token}`);\n }\n return request;\n });\n\n // The generated client throws the parsed error body (a plain object or string),\n // which defeats every instanceof-based status mapping downstream. Wrap it into\n // an ApiError carrying the HTTP status so apiCall error maps and consumers can\n // handle errors by code.\n client.interceptors.error.use((error, response, request) => {\n if (error instanceof Error) {\n return error;\n }\n const body = isWireErrorBody(error) ? error : undefined;\n const status = response?.status ?? body?.code ?? 0;\n const message = body?.error || body?.details || (typeof error === \"string\" ? error : \"Request failed\");\n const endpoint = request ? new URL(request.url).pathname : \"\";\n return new ApiError(message, status, endpoint, error);\n });\n}\n","import {SOCIAL_CONNECT_KEY_PREFIX} from \"../constants\";\n\nconst socialStoragePath = (provider: string) => SOCIAL_CONNECT_KEY_PREFIX + provider;\n\n/**\n * Sets a flag indicating that a social provider connection is being attempted\n * @param provider The provider identifier\n */\nexport function setSocialConnectAttempt(provider: string): void {\n sessionStorage.setItem(socialStoragePath(provider), \"true\");\n}\n\n/**\n * Checks if there's a pending social provider connection attempt\n * @param provider The provider identifier\n * @returns True if there's a pending connection attempt, false otherwise\n */\nexport function hasSocialConnectAttempt(provider: string): boolean {\n return sessionStorage.getItem(socialStoragePath(provider)) === \"true\";\n}\n\n/**\n * Clears the social provider connection attempt flag\n * @param provider The provider identifier\n */\nexport function clearSocialConnectAttempt(provider: string): void {\n sessionStorage.removeItem(socialStoragePath(provider));\n}\n","import {ApiError} from \"./types\";\nexport {ApiError};\n\n/**\n * Helper to create error functions - reduces bundle size by reusing error creation logic\n */\nexport const err =\n (message: string): (() => Error) =>\n () =>\n new Error(message);\n\ntype CommonErrors = {\n unauthorized: () => Error;\n badRequest: () => Error;\n notFound: () => Error;\n conflict: () => Error;\n forbidden: () => Error;\n tooManyRequests: () => Error;\n};\n\n/** Reusable error handlers for common cases - reduces repetitive error messages */\nexport const commonErrors: CommonErrors = {\n unauthorized: err(\"User is not authorized\"),\n badRequest: err(\"Bad request\"),\n notFound: err(\"Not found\"),\n conflict: err(\"Resource already exists\"),\n forbidden: err(\"Forbidden\"),\n tooManyRequests: err(\"Too many requests\"),\n};\n\n/**\n * Standard error handler for API errors with custom status code handling\n */\nexport const handleApiError = (error: unknown, statusHandlers: Record<number, () => Error>): never => {\n if (error instanceof ApiError) {\n const handler = statusHandlers[error.status];\n if (handler) {\n throw new ApiError(handler().message, error.status, error.endpoint, error.data);\n }\n throw error;\n }\n throw error;\n};\n","import {initDeferred} from \"../initialization\";\nimport {handleApiError} from \"./error-handlers\";\n\n/**\n * Generic helper for API calls to handle initialization and error handling\n * @param fn The async function to execute\n * @param errorMap A map of status codes to error functions\n * @returns The result of the function execution\n */\nexport const apiCall = async <T>(fn: () => Promise<T>, errorMap: Record<number, () => Error> = {}): Promise<T> => {\n await initDeferred.promise;\n\n try {\n return await fn();\n } catch (error) {\n return handleApiError(error, errorMap);\n }\n};\n","import {setTokens} from \"../authStore\";\n\ninterface TokenFields {\n access_token?: string;\n refresh_token?: string;\n expires_in?: number | string;\n}\n\n// Persists tokens when a response carries all three fields.\nexport function persistTokens(data: TokenFields | null | undefined): boolean {\n const tokens = data ?? {};\n if (tokens.access_token && tokens.refresh_token && tokens.expires_in) {\n setTokens(tokens.access_token, tokens.refresh_token, Number(tokens.expires_in));\n return true;\n }\n return false;\n}\n","import * as v from \"valibot\";\n\n/**\n * 🛡️ INPUT VALIDATION UTILITY\n * Validates data before API calls and throws user-friendly errors\n */\nexport const validateInput = <T>(schema: v.BaseSchema<unknown, T, v.BaseIssue<unknown>>, data: unknown): T => {\n try {\n return v.parse(schema, data);\n } catch (error) {\n if (error instanceof v.ValiError) {\n const firstError = error.issues[0];\n throw new Error(firstError.message);\n }\n throw error;\n }\n};\n\nexport const EmailSchema = v.pipe(\n v.string(\"Email must be text\"),\n v.email(\"Please enter a valid email address\"),\n v.minLength(1, \"Email is required\")\n);\n\nexport const PasswordSchema = v.pipe(\n v.string(\"Password must be text\"),\n v.minLength(8, \"Password must be at least 8 characters long\"),\n v.regex(/[A-Z]/, \"Password must contain at least one uppercase letter\"),\n v.regex(/[a-z]/, \"Password must contain at least one lowercase letter\"),\n v.regex(/[0-9]/, \"Password must contain at least one number\")\n);\n\n/**\n * Username validation schema\n * - Must be 4-24 characters\n * - Only letters, numbers, underscores, and periods\n */\nexport const UsernameSchema = v.pipe(\n v.string(\"Username must be text\"),\n v.minLength(4, \"Username must be 4-24 characters long\"),\n v.maxLength(24, \"Username must be 4-24 characters long\"),\n v.regex(/^[a-z0-9_.]+$/, \"Username can only contain lowercase letters, numbers, dots and underscores\")\n);\n\n/**\n * Name validation schema\n * - Must be 1-30 characters\n */\nexport const NameSchema = v.pipe(\n v.string(\"Name must be text\"),\n v.minLength(1, \"Name must be 1-30 characters long\"),\n v.maxLength(30, \"Name must be 1-30 characters long\")\n);\n\n/**\n * Domain validation schema\n * - Must be lowercase\n * - Must contain at least one dot\n * - Only alphanumeric characters, hyphens, and dots\n * - Cannot start or end with hyphen in any part\n */\nexport const DomainSchema = v.pipe(\n v.string(\"Domain must be text\"),\n v.trim(),\n v.toLowerCase(),\n v.minLength(1, \"Domain is required\"),\n v.regex(\n /^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$/,\n \"Invalid domain format. Please enter a valid domain like company.com\"\n )\n);\n","import * as v from \"valibot\";\nimport {EmailSchema, PasswordSchema} from \"./base\";\n\nexport const EmailAuthRequestSchema = v.object({\n email: EmailSchema,\n password: PasswordSchema,\n});\n\n// Matches auth.v1.RegisterRequest: email, password, country_code?, subscribe_to_blog?\nexport const RegisterRequestSchema = v.object({\n email: EmailSchema,\n password: PasswordSchema,\n country_code: v.optional(v.string()),\n subscribe_to_blog: v.optional(v.boolean()),\n});\n\nexport const ResetPasswordRequestSchema = v.object({\n token: v.string(),\n new_password: PasswordSchema,\n});\n\nexport const LoginOTPVerifyRequestSchema = v.object({\n code: v.pipe(\n v.string(\"OTP code must be text\"),\n v.maxLength(8, \"OTP code must be at most 6 characters\"),\n v.regex(/^\\d+$/, \"OTP code must contain only numbers\")\n ),\n session_id: v.pipe(v.string(\"Session ID must be text\"), v.minLength(1, \"Session ID is required\")),\n});\n\nexport const ResendEmailRequestSchema = v.object({\n email: EmailSchema,\n});\n\nexport const ChangeEmailRequestSchema = v.object({\n new_email: EmailSchema,\n});\n\nexport const verifyEmailChangeRequestSchema = v.object({\n code: v.pipe(\n v.string(\"OTP code must be text\"),\n v.minLength(6, \"OTP code must be at least 6 characters\"),\n v.maxLength(8, \"OTP code must be at most 8 characters\"),\n v.regex(/^\\d+$/, \"OTP code must contain only numbers\")\n ),\n new_email: v.optional(EmailSchema),\n type: v.union([v.literal(\"verification\"), v.literal(\"email_change\")]),\n verification_id: v.string(\"Verification ID is required\"),\n});\n\n/**\n * Social provider schemas\n */\nexport const ConnectProviderSchema = v.object({\n provider: v.pipe(v.string(\"Provider must be text\"), v.minLength(1, \"Provider is required\")),\n token: v.pipe(v.string(\"Token must be text\"), v.minLength(1, \"Token is required\")),\n});\n\n/**\n * OTP verification schema (for user OTP operations)\n */\nexport const VerifyOTPCodeSchema = v.object({\n code: v.pipe(\n v.string(\"OTP code must be text\"),\n v.minLength(6, \"OTP code must be at least 6 characters\"),\n v.regex(/^\\d+$/, \"OTP code must contain only numbers\")\n ),\n});\n","import {\n authV1ProvidersServiceListProviders,\n authV1ProvidersServiceConnectProvider,\n authV1ProvidersServiceDisconnectProvider,\n} from \"../../generated/sdk.gen\";\nimport type {AuthV1ExternalAccountProvider} from \"../../generated/types.gen\";\nimport {login} from \"../authStore\";\nimport {AuthProvider} from \"../providers/types\";\nimport {setSocialConnectAttempt} from \"./socialState\";\nimport {apiCall} from \"../api/utils\";\nimport {persistTokens} from \"../api/tokens\";\nimport {HTTP_STATUS} from \"../constants\";\nimport {validateInput} from \"../validation/base\";\nimport {ConnectProviderSchema} from \"../validation/auth\";\n\nexport type ProviderType = \"google\" | \"apple\" | \"microsoft\" | \"facebook\" | \"telegram\";\n\nexport interface ConnectedProvider {\n provider: ProviderType;\n username?: string;\n first_name?: string;\n last_name?: string;\n email_address?: string;\n image_url?: string;\n}\n\nconst PROVIDER_TO_PROTO: Record<ProviderType, AuthV1ExternalAccountProvider> = {\n google: \"EXTERNAL_ACCOUNT_PROVIDER_GOOGLE\",\n apple: \"EXTERNAL_ACCOUNT_PROVIDER_APPLE\",\n microsoft: \"EXTERNAL_ACCOUNT_PROVIDER_MICROSOFT\",\n facebook: \"EXTERNAL_ACCOUNT_PROVIDER_FACEBOOK\",\n telegram: \"EXTERNAL_ACCOUNT_PROVIDER_TELEGRAM\",\n};\n\nconst PROVIDER_FROM_PROTO: Partial<Record<AuthV1ExternalAccountProvider, ProviderType>> = {\n EXTERNAL_ACCOUNT_PROVIDER_GOOGLE: \"google\",\n EXTERNAL_ACCOUNT_PROVIDER_APPLE: \"apple\",\n EXTERNAL_ACCOUNT_PROVIDER_MICROSOFT: \"microsoft\",\n EXTERNAL_ACCOUNT_PROVIDER_FACEBOOK: \"facebook\",\n EXTERNAL_ACCOUNT_PROVIDER_TELEGRAM: \"telegram\",\n};\n\n// Both Telegram login flavors connect the same external account.\nconst normalizeProviderType = (provider: string): ProviderType =>\n provider === AuthProvider.TELEGRAM_WEB || provider === AuthProvider.TELEGRAM_MINI_APP ? \"telegram\" : (provider as ProviderType);\n\nconst toProtoProvider = (provider: ProviderType): AuthV1ExternalAccountProvider => {\n const proto = PROVIDER_TO_PROTO[provider];\n if (!proto) {\n throw new Error(`Unknown provider: ${provider}`);\n }\n return proto;\n};\n\nexport const listSocials = async (): Promise<ConnectedProvider[]> => {\n return apiCall(\n async () => {\n const {data} = await authV1ProvidersServiceListProviders({\n throwOnError: true,\n });\n return (data.providers ?? []).flatMap((p) => {\n const provider = p.provider ? PROVIDER_FROM_PROTO[p.provider] : undefined;\n if (!provider) return [];\n return [\n {\n provider,\n username: p.username,\n first_name: p.first_name,\n last_name: p.last_name,\n email_address: p.email_address,\n image_url: p.image_url,\n },\n ];\n });\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to list providers!\"),\n }\n );\n};\n\nexport const connectSocialInternal = async (provider: string, token: string): Promise<void> => {\n return apiCall(\n async () => {\n const requestBody = validateInput(ConnectProviderSchema, {provider, token});\n const {data} = await authV1ProvidersServiceConnectProvider({\n body: {\n provider: toProtoProvider(normalizeProviderType(requestBody.provider)),\n token: requestBody.token,\n },\n throwOnError: true,\n });\n persistTokens(data);\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to connect provider!\"),\n }\n );\n};\n\nexport const disconnectSocial = async (provider: ProviderType): Promise<void> => {\n return apiCall(\n async () => {\n await authV1ProvidersServiceDisconnectProvider({\n path: {provider: toProtoProvider(provider)},\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to disconnect provider!\"),\n [HTTP_STATUS.NOT_FOUND]: () => new Error(\"Provider not found!\"),\n [HTTP_STATUS.BAD_REQUEST]: () => new Error(\"Cannot disconnect the last social provider!\"),\n }\n );\n};\n\nexport const connectSocial = (provider: ProviderType): void => {\n setSocialConnectAttempt(provider);\n login(provider);\n};\n","import ky, {type KyInstance} from \"ky\";\nimport {apiURL} from \"../api-url\";\n\n/**\n * Token refresh function type - will be set during initialization\n */\nexport type TokenRefreshFn = () => Promise<string | undefined>;\nlet tokenRefreshFunction: TokenRefreshFn | null = null;\n\n/**\n * Mutex to prevent multiple simultaneous token refreshes\n */\nlet tokenRefreshPromise: Promise<string | undefined> | null = null;\n\n/**\n * Resets the API client state - primarily for testing\n */\nexport const resetApiClient = (): void => {\n tokenRefreshFunction = null;\n tokenRefreshPromise = null;\n};\n\n/**\n * Sets the token refresh function used by the API client\n * This should be called during initialization\n */\nexport const setTokenRefreshFunction = (fn?: TokenRefreshFn): void => {\n tokenRefreshFunction = fn ?? null;\n};\n\n/**\n * Refreshes the token with mutex locking to prevent race conditions\n */\nexport const refreshTokenWithLock = async (): Promise<string | undefined> => {\n // If a refresh is already in progress, wait for it\n if (tokenRefreshPromise) {\n return tokenRefreshPromise;\n }\n\n // Start a new refresh\n tokenRefreshPromise = (async () => {\n try {\n if (!tokenRefreshFunction) {\n throw new Error(\"Token refresh function not initialized\");\n }\n return await tokenRefreshFunction();\n } finally {\n // Clear the promise when done\n tokenRefreshPromise = null;\n }\n })();\n\n return tokenRefreshPromise;\n};\n\n/**\n * Creates a ky instance with proper auth handling and retry logic\n */\nexport const createKyInstance = (getTokenFn: () => Promise<string | undefined>, skipAuth = false): KyInstance => {\n return ky.create({\n prefix: apiURL.get(),\n retry: {\n limit: 2,\n methods: [\"get\", \"put\", \"head\", \"delete\", \"options\", \"trace\"],\n // Removed 413 (Payload Too Large) as retrying won't fix it\n statusCodes: [408, 429, 500, 502, 503, 504],\n // Don't retry 401 automatically - we handle it in hooks\n },\n hooks: {\n beforeRequest: [\n async ({request}) => {\n if (!skipAuth) {\n const token = await getTokenFn();\n if (token) {\n request.headers.set(\"Authorization\", `Bearer ${token}`);\n }\n }\n },\n ],\n afterResponse: [\n async ({request, response}) => {\n // Handle 401 Unauthorized - attempt token refresh and retry\n if (response.status === 401 && !skipAuth) {\n try {\n // Refresh the token (with mutex lock)\n const newToken = await refreshTokenWithLock();\n\n if (newToken) {\n // Update the request with new token\n request.headers.set(\"Authorization\", `Bearer ${newToken}`);\n // Retry the request with ky's built-in retry mechanism\n return ky(request);\n }\n } catch (error) {\n // If refresh fails, let the 401 propagate\n console.warn(\"Token refresh failed:\", error);\n }\n }\n\n return response;\n },\n ],\n },\n });\n};\n","let loginRedirectUrl: string | undefined;\n\nexport const setLoginRedirectUrl = (url?: string): void => {\n loginRedirectUrl = url;\n};\n\nexport const redirectToLogin = (): void => {\n if (!loginRedirectUrl) return;\n if (typeof window === \"undefined\") return;\n\n window.location.href = loginRedirectUrl;\n};\n","import {getToken, refreshToken, authError, setTokens, setLimitedAccessState, clearLimitedAccessState} from \"./authStore\";\nimport {ApiError} from \"./api/types\";\nimport {HTTP_STATUS} from \"./constants\";\nimport type {TokenResponse, LimitedScopeTokenResponse, RequiresAction} from \"./types\";\nimport type {LoginErrorCode} from \"./auth/types\";\nimport {apiURL} from \"./api-url\";\nimport {refreshTokens} from \"./api/refresh-tokens\";\nimport {initDeferred} from \"./initialization\";\nimport {configureSdkClient} from \"./api/sdk-client\";\nimport {\n type GoogleProviderConfig,\n type TelegramProviderConfig,\n type AppleProviderConfig,\n type MicrosoftProviderConfig,\n googleConfig,\n telegramConfig,\n appleConfig,\n microsoftConfig,\n updateGoogleAuthUrl,\n updateAppleAuthUrl,\n updateMicrosoftAuthUrl,\n updateTelegramAuthUrl,\n getProviderToken,\n detectProvider,\n AuthProvider,\n} from \"./providers\";\nimport {clearSocialConnectAttempt, hasSocialConnectAttempt} from \"./social/socialState\";\nimport {connectSocialInternal} from \"./social/socialConnections\";\nimport {setTokenRefreshFunction} from \"./api/client-core\";\nimport {setLoginRedirectUrl} from \"./authConfig\";\n\n/**\n * Configuration options for the authentication client\n */\nexport interface AuthClientConfig {\n /** The base URL of the authentication API */\n apiUrl: string;\n /** Optional login redirect URL used when auth expires */\n loginRedirectUrl?: string;\n /** Google authentication provider configuration (optional) */\n googleProvider?: GoogleProviderConfig;\n /** Apple authentication provider configuration (optional) */\n appleProvider?: AppleProviderConfig;\n /** Microsoft authentication provider configuration (optional) */\n microsoftProvider?: MicrosoftProviderConfig;\n /** Telegram authentication provider configuration (optional) */\n telegramProvider?: TelegramProviderConfig;\n}\n\n/**\n * Initializes the authentication client with the provided configuration\n * @param config The authentication client configuration\n * @returns A promise that resolves to the current access token (if available)\n */\nexport const initClient = async (config: AuthClientConfig): Promise<string | undefined> => {\n await initConfig(config);\n await initPage();\n initDeferred.resolve();\n await initSocials();\n return getToken();\n};\n\nconst initConfig = async (config: AuthClientConfig) => {\n // Set the API URL\n apiURL.set(config.apiUrl);\n configureSdkClient();\n setLoginRedirectUrl(config.loginRedirectUrl);\n\n // Initialize the token refresh function for ky client\n // This enables automatic 401 retry with token refresh\n setTokenRefreshFunction(async () => {\n const currentRefreshToken = refreshToken.get();\n if (currentRefreshToken) {\n const result = await refreshTokens(AuthProvider.BEARER, currentRefreshToken);\n // Store new tokens if full response (not limited scope)\n if (result && !(\"requires_action\" in result)) {\n setTokens(result.access_token, result.refresh_token, result.expires_in);\n }\n return getToken();\n }\n return undefined;\n });\n\n // Set provider configurations and update auth URLs\n if (config.googleProvider) {\n googleConfig.set(config.googleProvider);\n updateGoogleAuthUrl();\n }\n\n if (config.appleProvider) {\n appleConfig.set(config.appleProvider);\n updateAppleAuthUrl();\n }\n\n if (config.microsoftProvider) {\n microsoftConfig.set(config.microsoftProvider);\n updateMicrosoftAuthUrl();\n }\n\n if (config.telegramProvider) {\n telegramConfig.set(config.telegramProvider);\n updateTelegramAuthUrl();\n }\n};\n\nconst isLimitedScopeTokenResponse = (result: TokenResponse | LimitedScopeTokenResponse): result is LimitedScopeTokenResponse => {\n return \"requires_action\" in result;\n};\n\nconst applyTokenExchangeResult = (result: TokenResponse | LimitedScopeTokenResponse): void => {\n if (isLimitedScopeTokenResponse(result)) {\n setLimitedAccessState(result.access_token, result.requires_action as RequiresAction);\n return;\n }\n\n const fullResult = result as TokenResponse;\n setTokens(fullResult.access_token, fullResult.refresh_token, fullResult.expires_in);\n};\n\nconst setAuthErrorAndClear = (error_code: LoginErrorCode, message: string, email: string): true => {\n clearLimitedAccessState();\n authError.set({error_code, message, email});\n return true;\n};\n\nconst extractAuthErrorInfo = (error: ApiError): {error: string; description: string; email: string} => {\n const data = error.data as {error?: string; error_description?: string; email?: string} | undefined;\n return {\n error: data?.error ?? \"\",\n description: data?.error_description ?? error.message ?? \"\",\n email: data?.email ?? \"\",\n };\n};\n\nconst handleInitPageApiError = (error: ApiError): boolean => {\n const info = extractAuthErrorInfo(error);\n\n if (error.status === HTTP_STATUS.BAD_REQUEST && info.error === \"invalid_grant\") {\n return setAuthErrorAndClear(\"email_not_verified\", info.description, info.email);\n }\n\n if (error.status === HTTP_STATUS.CONFLICT) {\n return setAuthErrorAndClear(\"provider_conflict\", info.description, info.email);\n }\n\n return false;\n};\n\nconst exchangeProviderToken = async (provider: AuthProvider, token: string): Promise<void> => {\n const result = await refreshTokens(provider, token);\n applyTokenExchangeResult(result);\n};\n\nconst initPage = async () => {\n const provider = detectProvider();\n if (!provider) return undefined;\n\n const token = getProviderToken(provider);\n if (!token) return undefined;\n\n try {\n await exchangeProviderToken(provider, token);\n } catch (error) {\n if (error instanceof ApiError && handleInitPageApiError(error)) {\n return;\n }\n throw error;\n }\n};\n\nconst initSocials = async () => {\n const provider = detectProvider();\n if (!provider) return undefined;\n\n const token = getProviderToken(provider);\n if (!token) return undefined;\n\n // Check if this is a social connection attempt\n try {\n if (hasSocialConnectAttempt(provider)) {\n await connectSocialInternal(provider, token);\n }\n } finally {\n clearSocialConnectAttempt(provider);\n }\n};\n","import {client} from \"./generated/client.gen\";\nimport {initClient} from \"./auth/init\";\nimport type {GoogleProviderConfig, AppleProviderConfig, MicrosoftProviderConfig, TelegramProviderConfig} from \"./auth/providers\";\n\nexport interface AuthConfig {\n loginRedirectUrl?: string;\n google?: GoogleProviderConfig;\n apple?: AppleProviderConfig;\n microsoft?: MicrosoftProviderConfig;\n telegram?: TelegramProviderConfig;\n}\n\nexport interface ConnectConfig {\n baseUrl: string;\n apiKey?: string;\n auth?: AuthConfig;\n}\n\nexport const connect = async (config: ConnectConfig): Promise<string | undefined> => {\n client.setConfig({baseUrl: config.baseUrl});\n\n if (config.apiKey) {\n client.interceptors.request.use(async (request) => {\n request.headers.set(\"X-API-Key\", config.apiKey!);\n return request;\n });\n }\n\n if (config.auth) {\n return initClient({\n apiUrl: config.baseUrl,\n loginRedirectUrl: config.auth.loginRedirectUrl,\n googleProvider: config.auth.google,\n appleProvider: config.auth.apple,\n microsoftProvider: config.auth.microsoft,\n telegramProvider: config.auth.telegram,\n });\n }\n\n return undefined;\n};\n","import {authV1TokenServiceLogout} from \"../../generated/sdk.gen\";\nimport {refreshToken, removeTokens} from \"../authStore\";\n\nexport const logout = async (): Promise<void> => {\n try {\n await authV1TokenServiceLogout({body: {token: refreshToken.get()}, throwOnError: true});\n } catch {\n // Revocation failed — still clear local state\n } finally {\n removeTokens();\n }\n};\n","// Membership role and state types\nexport enum MembershipRole {\n OWNER = \"owner\",\n ADMIN = \"admin\",\n MEMBER = \"member\",\n}\n\nexport type AssignableRole = MembershipRole.ADMIN | MembershipRole.MEMBER;\n\nexport enum MembershipState {\n ACCEPTED = \"accepted\",\n PENDING = \"pending\",\n DECLINED = \"declined\",\n ACCEPT = \"accept\",\n DECLINE = \"decline\",\n}\n\nexport interface Common {\n id: string;\n user_id: string;\n org_id: string;\n role: MembershipRole;\n state: MembershipState;\n joined_at?: string;\n}\n\nexport interface Membership extends Common {\n organization_username: string;\n organization_first_name: string;\n organization_last_name: string;\n}\n\nexport interface Member extends Common {\n username: string;\n first_name: string;\n last_name: string;\n invitation_expires_at?: string;\n}\n\nexport interface MembershipApplication extends Common {\n organization_username: string;\n organization_first_name: string;\n organization_last_name: string;\n created_at?: string;\n decided_at?: string;\n invitation_expires_at?: string;\n}\n\n// Invite member request\nexport interface InviteMemberRequest {\n username: string;\n role: AssignableRole;\n}\n\n// Resend Invite member request\nexport interface ResendInviteMemberRequest {\n user_id: string;\n}\n\n// Update member role request\nexport interface UpdateMemberRoleRequest {\n role: AssignableRole;\n}\n","import type {\n AuthV1Membership,\n AuthV1MembershipApplication,\n AuthV1MembershipApplicationState,\n AuthV1OrgMember,\n AuthV1MembershipRole,\n AuthV1MembershipState,\n} from \"../../generated/types.gen\";\nimport {MembershipRole, MembershipState, type Membership, type Member, type MembershipApplication} from \"./types\";\n\nconst ROLE_FROM_PROTO: Record<AuthV1MembershipRole, MembershipRole> = {\n MEMBERSHIP_ROLE_UNSPECIFIED: MembershipRole.MEMBER,\n MEMBERSHIP_ROLE_OWNER: MembershipRole.OWNER,\n MEMBERSHIP_ROLE_ADMIN: MembershipRole.ADMIN,\n MEMBERSHIP_ROLE_MEMBER: MembershipRole.MEMBER,\n};\n\nconst STATE_FROM_PROTO: Record<AuthV1MembershipState, MembershipState> = {\n MEMBERSHIP_STATE_UNSPECIFIED: MembershipState.PENDING,\n MEMBERSHIP_STATE_ACTIVE: MembershipState.ACCEPTED,\n MEMBERSHIP_STATE_SUSPENDED: MembershipState.PENDING,\n MEMBERSHIP_STATE_LEFT: MembershipState.DECLINED,\n MEMBERSHIP_STATE_REMOVED: MembershipState.DECLINED,\n};\n\nconst APPLICATION_STATE_FROM_PROTO: Record<AuthV1MembershipApplicationState, MembershipState> = {\n MEMBERSHIP_APPLICATION_STATE_UNSPECIFIED: MembershipState.PENDING,\n MEMBERSHIP_APPLICATION_STATE_PENDING: MembershipState.PENDING,\n MEMBERSHIP_APPLICATION_STATE_APPROVED: MembershipState.ACCEPTED,\n MEMBERSHIP_APPLICATION_STATE_DECLINED: MembershipState.DECLINED,\n MEMBERSHIP_APPLICATION_STATE_CANCELLED: MembershipState.DECLINED,\n};\n\nfunction toRole(role?: AuthV1MembershipRole): MembershipRole {\n return ROLE_FROM_PROTO[role ?? \"MEMBERSHIP_ROLE_UNSPECIFIED\"];\n}\n\nfunction toState(state?: AuthV1MembershipState): MembershipState {\n return STATE_FROM_PROTO[state ?? \"MEMBERSHIP_STATE_UNSPECIFIED\"];\n}\n\nfunction toApplicationState(state?: AuthV1MembershipApplicationState): MembershipState {\n return APPLICATION_STATE_FROM_PROTO[state ?? \"MEMBERSHIP_APPLICATION_STATE_UNSPECIFIED\"];\n}\n\nexport function toMembership(m: AuthV1Membership): Membership {\n return {\n id: m.id ?? \"\",\n user_id: m.user_id ?? \"\",\n org_id: m.org_id ?? \"\",\n role: toRole(m.role),\n state: toState(m.state),\n joined_at: m.joined_at,\n organization_username: m.organization_username ?? \"\",\n organization_first_name: m.organization_first_name ?? \"\",\n organization_last_name: m.organization_last_name ?? \"\",\n };\n}\n\nexport function toMembershipApplication(m: AuthV1MembershipApplication): MembershipApplication {\n return {\n id: m.id ?? \"\",\n user_id: m.user_id ?? \"\",\n org_id: m.org_id ?? \"\",\n role: toRole(m.role),\n state: toApplicationState(m.state),\n organization_username: m.organization_username ?? \"\",\n organization_first_name: m.organization_first_name ?? \"\",\n organization_last_name: m.organization_last_name ?? \"\",\n created_at: m.created_at,\n decided_at: m.decided_at,\n invitation_expires_at: m.invitation_expires_at,\n };\n}\n\nexport function toMember(m: AuthV1OrgMember): Member {\n return {\n id: m.id ?? \"\",\n user_id: m.user_id ?? \"\",\n org_id: m.org_id ?? \"\",\n role: toRole(m.role),\n state: toState(m.state),\n joined_at: m.joined_at,\n username: m.username ?? \"\",\n first_name: m.first_name ?? \"\",\n last_name: m.last_name ?? \"\",\n invitation_expires_at: m.invitation_expires_at,\n };\n}\n","import {\n authV1MembershipServiceListMemberships,\n authV1MembershipServiceListMembershipApplications,\n authV1MembershipServiceListOrganizationMembers,\n} from \"../../generated/sdk.gen\";\nimport {apiCall} from \"../api/utils\";\nimport {HTTP_STATUS} from \"../constants\";\nimport {toMembership, toMembershipApplication, toMember} from \"./mappers\";\nimport type {PaginationParams} from \"../pagination-utils\";\nimport type {Membership, MembershipApplication, Member} from \"./types\";\n\nexport const listActiveMemberships = async (paginationParams?: PaginationParams): Promise<Membership[]> => {\n return apiCall(\n async () => {\n const {data} = await authV1MembershipServiceListMemberships({\n query: {state: \"MEMBERSHIP_STATE_ACTIVE\", limit: 25, ...paginationParams},\n throwOnError: true,\n });\n\n return (data.memberships || []).map(toMembership);\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to list memberships!\"),\n }\n );\n};\n\nexport const listPendingMemberships = async (paginationParams?: PaginationParams): Promise<MembershipApplication[]> => {\n return apiCall(\n async () => {\n const {data} = await authV1MembershipServiceListMembershipApplications({\n query: {state: \"MEMBERSHIP_APPLICATION_STATE_PENDING\", limit: 25, ...paginationParams},\n throwOnError: true,\n });\n\n return (data.applications || []).map(toMembershipApplication);\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to list membership applications!\"),\n }\n );\n};\n\nexport const listOrganizationMembers = async (orgId: string, paginationParams?: PaginationParams): Promise<Member[]> => {\n return apiCall(\n async () => {\n const {data} = await authV1MembershipServiceListOrganizationMembers({\n path: {\"user.org_id\": orgId},\n query: paginationParams,\n throwOnError: true,\n });\n\n return (data.members || []).map(toMember);\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to list organization members!\"),\n }\n );\n};\n","import * as v from \"valibot\";\nimport {UsernameSchema} from \"./base\";\n\n/**\n * Membership state schemas\n */\nexport const AcceptDeclineMembershipSchema = v.object({\n state: v.union([v.literal(\"accepted\"), v.literal(\"declined\")]),\n});\n\nexport const PublicInviteResponseSchema = v.object({\n state: v.union([v.literal(\"accept\"), v.literal(\"decline\")]),\n});\n\n/**\n * Membership management schemas\n */\nexport const InviteMemberSchema = v.object({\n username: UsernameSchema,\n role: v.union([v.literal(\"admin\"), v.literal(\"member\")]),\n});\n\nexport const UpdateMemberRoleSchema = v.object({\n role: v.union([v.literal(\"admin\"), v.literal(\"member\")]),\n});\n\nexport const ResendInviteSchema = v.object({\n user_id: v.pipe(v.string(\"User ID must be text\"), v.minLength(1, \"User ID is required\")),\n});\n","import {\n authV1MembershipServiceInviteMember,\n authV1MembershipServiceResendInvitation,\n authV1MembershipServiceAcceptInvitation,\n authV1MembershipServiceDeclineInvitation,\n authV1MembershipServiceUpdateMembershipState,\n} from \"../../generated/sdk.gen\";\nimport type {AuthV1MembershipRole, AuthV1MembershipApplicationState} from \"../../generated/types.gen\";\nimport {apiCall} from \"../api/utils\";\nimport {HTTP_STATUS} from \"../constants\";\nimport {MembershipState, type AssignableRole} from \"./types\";\nimport {validateInput} from \"../validation/base\";\nimport {AcceptDeclineMembershipSchema, PublicInviteResponseSchema, InviteMemberSchema, ResendInviteSchema} from \"../validation/membership\";\n\nconst ROLE_TO_PROTO: Record<AssignableRole, AuthV1MembershipRole> = {\n admin: \"MEMBERSHIP_ROLE_ADMIN\",\n member: \"MEMBERSHIP_ROLE_MEMBER\",\n};\n\nconst STATE_TO_PROTO: Record<\"accepted\" | \"declined\", AuthV1MembershipApplicationState> = {\n accepted: \"MEMBERSHIP_APPLICATION_STATE_APPROVED\",\n declined: \"MEMBERSHIP_APPLICATION_STATE_DECLINED\",\n};\n\nexport const inviteMember = async (orgId: string, username: string, role: AssignableRole): Promise<void> => {\n return apiCall(\n async () => {\n const validated = validateInput(InviteMemberSchema, {username, role});\n await authV1MembershipServiceInviteMember({\n path: {\"user.org_id\": orgId},\n body: {username: validated.username, role: ROLE_TO_PROTO[validated.role]},\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to invite members!\"),\n [HTTP_STATUS.NOT_FOUND]: () => new Error(`User with username ${username} not found!`),\n [HTTP_STATUS.CONFLICT]: () => new Error(`User with username ${username} already exists!`),\n }\n );\n};\n\nexport const resendMemberInvite = async (orgId: string, userId: string): Promise<void> => {\n return apiCall(\n async () => {\n validateInput(ResendInviteSchema, {user_id: userId});\n await authV1MembershipServiceResendInvitation({\n path: {\"user.org_id\": orgId},\n body: {user_id: userId},\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to invite members!\"),\n [HTTP_STATUS.NOT_FOUND]: () => new Error(`User with ID ${userId} not found!`),\n [HTTP_STATUS.CONFLICT]: () => new Error(`User with ID ${userId} already exists!`),\n }\n );\n};\n\nexport const respondToInvitation = async (orgId: string, state: MembershipState.ACCEPTED | MembershipState.DECLINED): Promise<void> => {\n return apiCall(\n async () => {\n const validated = validateInput(AcceptDeclineMembershipSchema, {state}) as {state: \"accepted\" | \"declined\"};\n\n await authV1MembershipServiceUpdateMembershipState({\n path: {\"user.org_id\": orgId},\n body: {state: STATE_TO_PROTO[validated.state]},\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to accept/decline an Invite!\"),\n [HTTP_STATUS.NOT_FOUND]: () => new Error(\"Invite not found!\"),\n }\n );\n};\n\nexport const publicRespondToInvitation = async (token: string, state: MembershipState.ACCEPT | MembershipState.DECLINE): Promise<void> => {\n return apiCall(\n async () => {\n validateInput(PublicInviteResponseSchema, {state});\n\n if (state === MembershipState.ACCEPT) {\n await authV1MembershipServiceAcceptInvitation({\n path: {token},\n throwOnError: true,\n });\n } else {\n await authV1MembershipServiceDeclineInvitation({\n path: {token},\n throwOnError: true,\n });\n }\n },\n {\n [HTTP_STATUS.BAD_REQUEST]: () => new Error(\"Invalid invitation token!\"),\n }\n );\n};\n","import {\n authV1MembershipServiceUpdateActiveMembership,\n authV1MembershipServiceUpdateMemberRole,\n authV1MembershipServiceRemoveMember,\n authV1MembershipServiceLeaveOrganization,\n} from \"../../generated/sdk.gen\";\nimport type {AuthV1MembershipRole} from \"../../generated/types.gen\";\nimport {accessToken, expireAt, getToken} from \"../authStore\";\nimport {apiCall} from \"../api/utils\";\nimport {HTTP_STATUS} from \"../constants\";\nimport type {AssignableRole} from \"./types\";\nimport {validateInput} from \"../validation/base\";\nimport {UpdateMemberRoleSchema} from \"../validation/membership\";\n\nconst ROLE_TO_PROTO: Record<AssignableRole, AuthV1MembershipRole> = {\n admin: \"MEMBERSHIP_ROLE_ADMIN\",\n member: \"MEMBERSHIP_ROLE_MEMBER\",\n};\n\nexport const updateActiveMembership = async (membershipId: string): Promise<void> => {\n return apiCall(\n async () => {\n await authV1MembershipServiceUpdateActiveMembership({\n body: {membership_id: membershipId},\n throwOnError: true,\n });\n accessToken.set(undefined);\n expireAt.set(0);\n await getToken();\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to update active membership!\"),\n }\n );\n};\n\nexport const updateMemberRole = async (orgId: string, userId: string, role: AssignableRole): Promise<void> => {\n return apiCall(\n async () => {\n const validated = validateInput(UpdateMemberRoleSchema, {role});\n await authV1MembershipServiceUpdateMemberRole({\n path: {\"user.org_id\": orgId, user_id: userId},\n body: {role: ROLE_TO_PROTO[validated.role]},\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to update member roles!\"),\n [HTTP_STATUS.NOT_FOUND]: () => new Error(\"Member not found!\"),\n [HTTP_STATUS.FORBIDDEN]: () => new Error(\"Cannot change role of organization owner!\"),\n }\n );\n};\n\nexport const deleteMember = async (orgId: string, userId: string): Promise<void> => {\n return apiCall(\n async () => {\n await authV1MembershipServiceRemoveMember({\n path: {\"user.org_id\": orgId, user_id: userId},\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to delete members!\"),\n [HTTP_STATUS.NOT_FOUND]: () => new Error(\"Member not found!\"),\n [HTTP_STATUS.FORBIDDEN]: () => new Error(\"Cannot remove organization owner!\"),\n }\n );\n};\n\nexport const leaveOrganization = async (orgId: string): Promise<void> => {\n return apiCall(\n async () => {\n await authV1MembershipServiceLeaveOrganization({\n path: {org_id: orgId},\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to leave an organization!\"),\n [HTTP_STATUS.FORBIDDEN]: () => new Error(\"Cannot leave organization as you are the last member!\"),\n [HTTP_STATUS.NOT_FOUND]: () => new Error(\"Organization not found!\"),\n }\n );\n};\n","import * as v from \"valibot\";\nimport {UsernameSchema, NameSchema} from \"./base\";\n\n/**\n * Update username request schema\n */\nexport const UpdateUsernameSchema = v.object({\n username: UsernameSchema,\n});\n\n/**\n * Update name request schema\n */\nexport const UpdateNameSchema = v.object({\n full_name: NameSchema,\n});\n","import {\n authV1UserServiceUpdateName,\n authV1UserServiceUpdateUsername,\n authV1UserServiceGetUserInfo,\n authV1OtpServiceGetOtpStatus,\n authV1OtpServiceSetupOtp,\n authV1OtpServiceVerifyOtp,\n authV1OtpServiceDeleteOtp,\n} from \"../generated/sdk.gen\";\nimport {validateInput} from \"./validation/base\";\nimport {UpdateNameSchema, UpdateUsernameSchema} from \"./validation/user\";\nimport {VerifyOTPCodeSchema} from \"./validation/auth\";\nimport {apiCall} from \"./api/utils\";\nimport {persistTokens} from \"./api/tokens\";\nimport {HTTP_STATUS} from \"./constants\";\n\nexport interface OTPSetup {\n qrCodeUrl: string;\n secret: string;\n}\n\nexport interface OTPStatusResponse {\n is_setup: boolean;\n created_at?: string;\n message?: string;\n}\n\nexport interface OTPVerification {\n access_token?: string;\n refresh_token?: string;\n expires_in?: number;\n}\n\nexport interface UserInfo {\n id: string;\n username: string;\n email: string;\n email_verified: boolean;\n first_name: string;\n last_name: string;\n image_url: string;\n language_code: string;\n country_code: string;\n active_org_id: string;\n}\n\nexport const getUserInfo = async (userId?: string): Promise<UserInfo> => {\n return apiCall(\n async () => {\n const {data} = await authV1UserServiceGetUserInfo({\n query: userId ? {user_id: userId} : undefined,\n throwOnError: true,\n });\n\n return {\n id: data.id ?? \"\",\n username: data.username ?? \"\",\n email: data.email ?? \"\",\n email_verified: data.email_verified ?? false,\n first_name: data.first_name ?? \"\",\n last_name: data.last_name ?? \"\",\n image_url: data.image_url ?? \"\",\n language_code: data.language_code ?? \"\",\n country_code: data.country_code ?? \"\",\n active_org_id: data.active_org_id ?? \"\",\n };\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Token is missing or invalid; user is not authenticated.\"),\n }\n );\n};\n\nexport const updateFullName = async (fullName: string): Promise<void> => {\n return apiCall(\n async () => {\n const validatedInput = validateInput(UpdateNameSchema, {full_name: fullName});\n await authV1UserServiceUpdateName({\n body: validatedInput,\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.BAD_REQUEST]: () => new Error(\"Invalid name format\"),\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to update name\"),\n [HTTP_STATUS.TOO_MANY_REQUESTS]: () => new Error(\"Name can only be changed once every 7 days.\"),\n }\n );\n};\n\nexport const updateUsername = async (username: string): Promise<void> => {\n return apiCall(\n async () => {\n const validatedInput = validateInput(UpdateUsernameSchema, {username});\n await authV1UserServiceUpdateUsername({\n body: validatedInput,\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.BAD_REQUEST]: () => new Error(\"Invalid username format\"),\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to update username\"),\n [HTTP_STATUS.CONFLICT]: () => new Error(\"Username is not unique. Choose another one!\"),\n [HTTP_STATUS.TOO_MANY_REQUESTS]: () => new Error(\"Username can only be changed once every 30 days.\"),\n }\n );\n};\n\nexport const getOTPStatus = async (): Promise<OTPStatusResponse> => {\n return apiCall(\n async () => {\n const {data} = await authV1OtpServiceGetOtpStatus({\n throwOnError: true,\n });\n\n return {\n is_setup: data.is_setup ?? false,\n created_at: data.created_at,\n };\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Token is missing or invalid; user is not authenticated.\"),\n }\n );\n};\n\nexport const setupUserOTP = async (): Promise<OTPSetup> => {\n return apiCall(\n async () => {\n const {data} = await authV1OtpServiceSetupOtp({\n throwOnError: true,\n });\n\n return {\n qrCodeUrl: data.qr_code_url || \"\",\n secret: data.secret || \"\",\n };\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Token is missing or invalid; user is not authenticated.\"),\n }\n );\n};\n\nexport const verifyUserOTP = async (code: string): Promise<void> => {\n return apiCall(\n async () => {\n const validatedBody = validateInput(VerifyOTPCodeSchema, {code});\n const {data} = await authV1OtpServiceVerifyOtp({\n body: validatedBody,\n throwOnError: true,\n });\n\n persistTokens(data);\n },\n {\n [HTTP_STATUS.BAD_REQUEST]: () => new Error(\"Invalid request format\"),\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Token is missing or invalid; user is not authenticated.\"),\n }\n );\n};\n\nexport const deleteUserOTP = async (): Promise<void> => {\n return apiCall(\n async () => {\n await authV1OtpServiceDeleteOtp({\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Token is missing or invalid; user is not authenticated.\"),\n }\n );\n};\n","import {authV1MembershipServiceUpdateOrgName, authV1MembershipServiceUpdateOrgUsername} from \"../generated/sdk.gen\";\nimport {apiCall} from \"./api/utils\";\nimport {HTTP_STATUS} from \"./constants\";\nimport {validateInput} from \"./validation/base\";\nimport {UpdateNameSchema, UpdateUsernameSchema} from \"./validation/user\";\n\nexport const updateOrgName = async (fullName: string, orgId: string): Promise<void> => {\n return apiCall(\n async () => {\n const requestBody = validateInput(UpdateNameSchema, {full_name: fullName});\n await authV1MembershipServiceUpdateOrgName({\n path: {\"user.org_id\": orgId},\n body: requestBody,\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.FORBIDDEN]: () => new Error(\"Only owners and admins can update name\"),\n [HTTP_STATUS.TOO_MANY_REQUESTS]: () => new Error(\"Name can only be changed once every 7 days.\"),\n }\n );\n};\n\nexport const updateOrgUsername = async (username: string, orgId: string): Promise<void> => {\n return apiCall(\n async () => {\n const requestBody = validateInput(UpdateUsernameSchema, {username});\n await authV1MembershipServiceUpdateOrgUsername({\n path: {\"user.org_id\": orgId},\n body: requestBody,\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.FORBIDDEN]: () => new Error(\"Only owners and admins can update username\"),\n [HTTP_STATUS.CONFLICT]: () => new Error(\"Username is not unique. Choose another one!\"),\n [HTTP_STATUS.TOO_MANY_REQUESTS]: () => new Error(\"Username can only be changed once every 30 days.\"),\n }\n );\n};\n","import {authV1EmailServiceLogin, authV1OtpServiceVerifyTotpForLogin} from \"../../generated/sdk.gen\";\nimport {EmailAuthRequestSchema, LoginOTPVerifyRequestSchema} from \"../validation/auth\";\nimport {validateInput} from \"../validation/base\";\nimport {ApiError} from \"../api/error-handlers\";\nimport {apiCall} from \"../api/utils\";\nimport {persistTokens} from \"../api/tokens\";\nimport {HTTP_STATUS} from \"../constants\";\nimport type {LoginErrorResponse, TwoFactorAuthMethod, TwoFactorResponse} from \"./types\";\nimport type {AuthV1AuthMethod, AuthV1LoginResponse} from \"../../generated/types.gen\";\n\n/**\n * Maps the AuthV1AuthMethod values returned by the gateway to the SDK's\n * lowercase `TwoFactorAuthMethod` domain type. The proto-shaped enum uses\n * `AUTH_METHOD_*`, but the wire has historically emitted the lowercase\n * short form (`\"passkey\" | \"totp\"`) — accept both so we're resilient to\n * either serialization.\n */\nfunction toTwoFactorAuthMethods(methods: AuthV1LoginResponse[\"authentication\"]): TwoFactorAuthMethod[] {\n if (!methods) return [];\n const mapped: TwoFactorAuthMethod[] = [];\n for (const m of methods as Array<AuthV1AuthMethod | string>) {\n if (m === \"AUTH_METHOD_PASSKEY\" || m === \"passkey\") {\n mapped.push(\"passkey\");\n } else if (m === \"AUTH_METHOD_TOTP\" || m === \"totp\") {\n mapped.push(\"totp\");\n }\n }\n return mapped;\n}\n\nexport const loginWithEmail = async (email: string, password: string): Promise<void | TwoFactorResponse | LoginErrorResponse> => {\n return apiCall(\n async () => {\n const validatedInput = validateInput(EmailAuthRequestSchema, {email, password});\n try {\n const {data} = await authV1EmailServiceLogin({\n body: validatedInput,\n throwOnError: true,\n });\n\n return handleLoginResponse(data, email);\n } catch (error) {\n return handleLoginError(error, email);\n }\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Incorrect email or password\"),\n [HTTP_STATUS.FORBIDDEN]: () => new Error(\"Account access is restricted\"),\n }\n );\n};\n\nexport const verifyTOTPForLogin = async (code: string, session_id: string): Promise<void> => {\n return apiCall(\n async () => {\n const validatedInput = validateInput(LoginOTPVerifyRequestSchema, {code, session_id});\n const {data} = await authV1OtpServiceVerifyTotpForLogin({\n body: validatedInput,\n throwOnError: true,\n });\n\n persistTokens(data);\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Invalid or expired TOTP code\"),\n }\n );\n};\n\nfunction handleLoginResponse(data: AuthV1LoginResponse, email: string): void | TwoFactorResponse | LoginErrorResponse {\n switch (data.status) {\n case \"ok\":\n persistTokens(data);\n return;\n case \"2fa_required\":\n return {\n session_id: data.session_id!,\n email: email,\n authentication: toTwoFactorAuthMethods(data.authentication),\n passkey_options: data.passkey_options,\n };\n case \"email_not_verified\":\n return {\n error_code: \"email_not_verified\",\n message: \"Email not verified\",\n email: data.email || email,\n };\n default:\n return;\n }\n}\n\ninterface ApiErrorBody {\n error?: string;\n details?: string;\n code?: number;\n}\n\nfunction handleLoginError(error: unknown, email: string): TwoFactorResponse | LoginErrorResponse | never {\n // The client error interceptor wraps thrown bodies into ApiError; tests and\n // legacy paths may still surface the raw body directly.\n const body = error instanceof ApiError ? error.data : error;\n if (isApiErrorBody(body)) {\n if (body.error === \"email_not_verified\") {\n return {\n error_code: \"email_not_verified\",\n message: body.details || \"Email not verified\",\n email,\n };\n }\n if (body.error === \"provider_conflict\") {\n return {\n error_code: \"provider_conflict\",\n message: body.details || \"Email registered with different provider\",\n email,\n };\n }\n if (error instanceof ApiError) {\n throw error;\n }\n throw new ApiError(body.error || \"Login failed\", body.code || 500, \"/auth/v1/login\", body);\n }\n throw error;\n}\n\nfunction isApiErrorBody(error: unknown): error is ApiErrorBody {\n return typeof error === \"object\" && error !== null && \"error\" in error;\n}\n","import {authV1EmailServiceRegister, authV1EmailServiceResendVerification} from \"../../generated/sdk.gen\";\nimport {validateInput} from \"../validation/base\";\nimport {RegisterRequestSchema, ResendEmailRequestSchema} from \"../validation/auth\";\nimport {apiCall} from \"../api/utils\";\nimport {HTTP_STATUS} from \"../constants\";\nimport type {RegistrationResponse, VerificationSentResponse} from \"./types\";\n\nexport const registerWithEmail = async (\n email: string,\n password: string,\n subscribeToBlog?: boolean,\n countryCode?: string\n): Promise<void | RegistrationResponse> => {\n return apiCall(\n async () => {\n const validatedInput = validateInput(RegisterRequestSchema, {\n email,\n password,\n country_code: countryCode,\n subscribe_to_blog: subscribeToBlog,\n });\n const {data} = await authV1EmailServiceRegister({\n body: validatedInput,\n throwOnError: true,\n });\n\n if (data.verification_id) {\n return {\n message: data.message || \"Registration successful\",\n verification_id: data.verification_id,\n email_verification_sent: data.email_verification_sent,\n user_id: data.user_id,\n };\n }\n },\n {\n [HTTP_STATUS.CONFLICT]: () => new Error(\"Email address is already registered\"),\n }\n );\n};\n\nexport const resendEmailVerificationCode = async (email: string): Promise<void | VerificationSentResponse> => {\n return apiCall(\n async () => {\n const validatedInput = validateInput(ResendEmailRequestSchema, {email});\n const {data} = await authV1EmailServiceResendVerification({\n body: validatedInput,\n throwOnError: true,\n });\n\n if (data.verification_id) {\n return {\n message: data.message || \"Verification code resent\",\n verification_id: data.verification_id,\n code_sent: data.code_sent,\n };\n }\n },\n {\n [HTTP_STATUS.BAD_REQUEST]: () => new Error(\"Invalid email or validation error\"),\n [HTTP_STATUS.TOO_MANY_REQUESTS]: () => new Error(\"Too many requests - rate limit exceeded\"),\n }\n );\n};\n","import {authV1EmailServiceSendPasswordReset, authV1EmailServiceResetPassword} from \"../../generated/sdk.gen\";\nimport {ResendEmailRequestSchema, ResetPasswordRequestSchema} from \"../validation/auth\";\nimport {validateInput} from \"../validation/base\";\nimport {apiCall} from \"../api/utils\";\nimport {HTTP_STATUS} from \"../constants\";\n\nexport const sendPasswordResetEmail = async (email: string): Promise<void> => {\n return apiCall(\n async () => {\n const validatedInput = validateInput(ResendEmailRequestSchema, {email});\n await authV1EmailServiceSendPasswordReset({\n body: validatedInput,\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.BAD_REQUEST]: () => new Error(\"Bad request - invalid email or validation error\"),\n }\n );\n};\n\nexport const confirmPasswordReset = async (token: string, password: string): Promise<void> => {\n return apiCall(\n async () => {\n const validatedInput = validateInput(ResetPasswordRequestSchema, {\n token: token,\n new_password: password,\n });\n await authV1EmailServiceResetPassword({\n body: validatedInput,\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.BAD_REQUEST]: () => new Error(\"Bad request - invalid token or password\"),\n }\n );\n};\n","import {\n authV1EmailServiceInitiateEmailChange,\n authV1EmailServiceAddEmail,\n authV1EmailServiceVerifyEmail,\n authV1EmailServiceGetUserEmailStatus,\n} from \"../../generated/sdk.gen\";\nimport {ChangeEmailRequestSchema, ResendEmailRequestSchema, verifyEmailChangeRequestSchema} from \"../validation/auth\";\nimport {validateInput} from \"../validation/base\";\nimport {apiCall} from \"../api/utils\";\nimport {persistTokens} from \"../api/tokens\";\nimport {HTTP_STATUS} from \"../constants\";\nimport type {VerificationSentResponse, VerifyEmailResponse, VerifyStatusResponse} from \"./types\";\nimport type {EmailVerificationType} from \"../types\";\n\nexport const initiateEmailChange = async (email: string): Promise<void | VerificationSentResponse> => {\n return apiCall(\n async () => {\n const validatedInput = validateInput(ChangeEmailRequestSchema, {new_email: email});\n const {data} = await authV1EmailServiceInitiateEmailChange({\n body: validatedInput,\n throwOnError: true,\n });\n\n if (data.verification_id) {\n return {\n message: data.message || \"Verification code sent\",\n verification_id: data.verification_id,\n can_resend_at: data.can_resend_at,\n code_sent: data.code_sent,\n };\n }\n },\n {\n [HTTP_STATUS.BAD_REQUEST]: () => new Error(\"Invalid email or email already in use\"),\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Unauthorized - invalid or missing token\"),\n [HTTP_STATUS.TOO_MANY_REQUESTS]: () => new Error(\"Too many requests - please try again later\"),\n }\n );\n};\n\nexport const addEmail = async (email: string): Promise<void | VerificationSentResponse> => {\n return apiCall(\n async () => {\n const validatedInput = validateInput(ResendEmailRequestSchema, {email});\n const {data} = await authV1EmailServiceAddEmail({\n body: validatedInput,\n throwOnError: true,\n });\n\n if (data.verification_id) {\n return {\n message: data.message || \"Verification code sent\",\n verification_id: data.verification_id,\n can_resend_at: data.can_resend_at,\n code_sent: data.code_sent,\n };\n }\n },\n {\n [HTTP_STATUS.BAD_REQUEST]: () => new Error(\"Invalid email address\"),\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Session expired - please login again\"),\n [HTTP_STATUS.CONFLICT]: () => new Error(\"Email address is already in use\"),\n [HTTP_STATUS.TOO_MANY_REQUESTS]: () => new Error(\"Too many requests - please try again later\"),\n }\n );\n};\n\nexport interface VerifyEmailWithCodeParams {\n code: string;\n type: EmailVerificationType;\n verification_id: string;\n new_email: string;\n}\n\nconst normalizeVerifyEmailArgs = (\n args: [VerifyEmailWithCodeParams] | [string, EmailVerificationType, string, string]\n): VerifyEmailWithCodeParams => {\n if (isLegacyVerifyEmailArgs(args)) {\n const [code, type, verification_id, new_email] = args;\n return {code, type, verification_id, new_email};\n }\n\n return args[0];\n};\n\nconst isLegacyVerifyEmailArgs = (\n args: [VerifyEmailWithCodeParams] | [string, EmailVerificationType, string, string]\n): args is [string, EmailVerificationType, string, string] => typeof args[0] === \"string\";\n\nexport const verifyEmailWithCode = async (\n ...args: [VerifyEmailWithCodeParams] | [string, EmailVerificationType, string, string]\n): Promise<void | VerifyEmailResponse> => {\n return apiCall(\n async () => {\n const payload = normalizeVerifyEmailArgs(args);\n\n validateInput(verifyEmailChangeRequestSchema, payload);\n const {data} = await authV1EmailServiceVerifyEmail({\n body: {code: payload.code, verification_id: payload.verification_id},\n throwOnError: true,\n });\n\n const tokens = data.tokens;\n persistTokens(tokens);\n\n return {\n email: data.email || \"\",\n message: data.message || \"Email verified\",\n verified: data.verified || false,\n tokens: tokens\n ? {\n access_token: tokens.access_token!,\n refresh_token: tokens.refresh_token!,\n expires_in: Number(tokens.expires_in!),\n }\n : undefined,\n };\n },\n {\n [HTTP_STATUS.BAD_REQUEST]: () => new Error(\"Invalid code or verification ID\"),\n }\n );\n};\n\nexport const getEmailVerificationStatus = async (): Promise<void | VerifyStatusResponse> => {\n return apiCall(\n async () => {\n const {data} = await authV1EmailServiceGetUserEmailStatus({\n throwOnError: true,\n });\n\n return {\n email: data.email || \"\",\n has_email: data.has_email ?? false,\n verified: data.verified || false,\n };\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Unauthorized - invalid or missing token\"),\n }\n );\n};\n","import * as v from \"valibot\";\nimport {DomainSchema} from \"./base\";\n\n/**\n * Add domain request schema\n */\nexport const AddDomainSchema = v.object({\n domain: DomainSchema,\n});\n\n/**\n * Update auto-join setting schema\n */\nexport const UpdateAutoJoinSchema = v.object({\n enabled: v.boolean(\"Auto-join setting must be a boolean\"),\n});\n","export enum DomainStatus {\n PENDING = \"pending\",\n VERIFIED = \"verified\",\n EXPIRED = \"expired\",\n}\n\nexport interface DomainResponse {\n present?: boolean;\n id: string;\n domain: string;\n /**\n * `undefined` when the gateway response omits the `status` object entirely\n * (e.g. a domain record without a resolved state). Concrete values are\n * `PENDING` or `VERIFIED`; the SDK never returns `EXPIRED` today but it is\n * kept on the enum for forward compatibility with future backend states.\n */\n status?: DomainStatus;\n verification_token?: string;\n expires_at?: string;\n verified_at?: string;\n auto_join?: boolean;\n}\n\nexport interface AddDomainRequest {\n domain: string;\n}\n\nexport interface UpdateAutoJoinRequest {\n enabled: boolean;\n}\n\nexport interface AutoJoinSetting {\n enabled: boolean;\n present?: boolean;\n}\n","import type {AuthV1DomainResponse, AuthV1AutoJoinSetting} from \"../../generated/types.gen\";\nimport {DomainStatus, type DomainResponse, type AutoJoinSetting} from \"./types\";\n\n// DomainStatus is a nested oneOf (pending | verified) plus a shared auto_join\n// flag; flatten it into the library's DomainResponse. When the gateway omits\n// `status` entirely we leave the flattened `status` field undefined instead\n// of defaulting to PENDING — the two states carry very different meanings\n// and PENDING would incorrectly imply a verification is in flight.\nexport function toDomainResponse(data: AuthV1DomainResponse): DomainResponse {\n const status = data.status;\n const verified = status && \"verified\" in status ? status.verified : undefined;\n const pending = status && \"pending\" in status ? status.pending : undefined;\n let flattenedStatus: DomainStatus | undefined;\n if (verified) {\n flattenedStatus = DomainStatus.VERIFIED;\n } else if (pending) {\n flattenedStatus = DomainStatus.PENDING;\n }\n return {\n present: data.present,\n id: data.id ?? \"\",\n domain: data.domain ?? \"\",\n status: flattenedStatus,\n verification_token: pending?.verification_token,\n expires_at: pending?.expires_at,\n verified_at: verified?.verified_at,\n auto_join: status?.auto_join,\n };\n}\n\nexport function toAutoJoinSetting(data: AuthV1AutoJoinSetting): AutoJoinSetting {\n return {\n enabled: data.enabled ?? false,\n present: data.present,\n };\n}\n","import {\n authV1DomainServiceGetDomainStatus,\n authV1DomainServiceCreateDomainVerification,\n authV1DomainServiceCheckDomainVerification,\n authV1DomainServiceSetDomainAutoJoin,\n authV1DomainServiceRemoveDomain,\n} from \"../../generated/sdk.gen\";\nimport {apiCall} from \"../api/utils\";\nimport {HTTP_STATUS} from \"../constants\";\nimport {validateInput} from \"../validation/base\";\nimport {AddDomainSchema, UpdateAutoJoinSchema} from \"../validation/domain\";\nimport {toDomainResponse, toAutoJoinSetting} from \"./mappers\";\nimport type {DomainResponse, AutoJoinSetting} from \"./types\";\n\nexport * from \"./types\";\n\nexport const getDomainStatus = async (orgId: string): Promise<DomainResponse | null> => {\n return apiCall(\n async () => {\n try {\n const {data} = await authV1DomainServiceGetDomainStatus({\n path: {org_id: orgId},\n throwOnError: true,\n });\n return toDomainResponse(data);\n } catch (error: any) {\n if (error?.code === HTTP_STATUS.NOT_FOUND) {\n return null;\n }\n throw error;\n }\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Not authorized to view domain settings\"),\n }\n );\n};\n\nexport const initiateDomainVerification = async (orgId: string, domain: string): Promise<DomainResponse> => {\n return apiCall(\n async () => {\n const requestBody = validateInput(AddDomainSchema, {domain});\n const {data} = await authV1DomainServiceCreateDomainVerification({\n path: {\"user.org_id\": orgId},\n body: requestBody,\n throwOnError: true,\n });\n return toDomainResponse(data);\n },\n {\n [HTTP_STATUS.BAD_REQUEST]: () => new Error(\"Invalid domain format or public domains like gmail.com are not allowed\"),\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Not authorized to configure domain settings\"),\n }\n );\n};\n\nexport const checkDomainVerification = async (orgId: string): Promise<DomainResponse> => {\n return apiCall(\n async () => {\n const {data} = await authV1DomainServiceCheckDomainVerification({\n path: {org_id: orgId},\n throwOnError: true,\n });\n return toDomainResponse(data);\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Not authorized to check domain verification\"),\n }\n );\n};\n\nexport const updateAutoJoin = async (orgId: string, enabled: boolean): Promise<AutoJoinSetting> => {\n return apiCall(\n async () => {\n const requestBody = validateInput(UpdateAutoJoinSchema, {enabled});\n const {data} = await authV1DomainServiceSetDomainAutoJoin({\n path: {\"user.org_id\": orgId},\n body: requestBody,\n throwOnError: true,\n });\n return toAutoJoinSetting(data);\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Not authorized to update auto-join settings\"),\n }\n );\n};\n\nexport const removeDomain = async (orgId: string): Promise<void> => {\n return apiCall(\n async () => {\n await authV1DomainServiceRemoveDomain({\n path: {org_id: orgId},\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Not authorized to remove domain\"),\n }\n );\n};\n","import {\n authV1BlogServiceGetBlogSubscription,\n authV1BlogServiceSubscribeBlog,\n authV1BlogServiceUnsubscribeBlog,\n} from \"../../generated/sdk.gen\";\nimport {apiCall} from \"../api/utils\";\nimport {HTTP_STATUS} from \"../constants\";\n\nexport interface BlogSubscriptionStatus {\n subscribed: boolean;\n subscribed_at?: string;\n}\n\nconst BLOG_SUBSCRIPTION_ERRORS = {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to manage blog subscription\"),\n [HTTP_STATUS.FORBIDDEN]: () => new Error(\"Account is inactive\"),\n [HTTP_STATUS.TOO_MANY_REQUESTS]: () => new Error(\"Too many requests - please try again later\"),\n};\n\nexport const getBlogSubscriptionStatus = async (): Promise<BlogSubscriptionStatus> => {\n return apiCall(async () => {\n const {data} = await authV1BlogServiceGetBlogSubscription({\n throwOnError: true,\n });\n return {\n subscribed: data.subscribed ?? false,\n subscribed_at: data.subscribed_at,\n };\n }, BLOG_SUBSCRIPTION_ERRORS);\n};\n\nexport const subscribeToBlog = async (): Promise<void> => {\n return apiCall(\n async () => {\n await authV1BlogServiceSubscribeBlog({\n throwOnError: true,\n });\n },\n {\n ...BLOG_SUBSCRIPTION_ERRORS,\n [HTTP_STATUS.INTERNAL_SERVER_ERROR]: () => new Error(\"Failed to subscribe to blog updates\"),\n }\n );\n};\n\nexport const unsubscribeFromBlog = async (): Promise<void> => {\n return apiCall(\n async () => {\n await authV1BlogServiceUnsubscribeBlog({\n throwOnError: true,\n });\n },\n {\n ...BLOG_SUBSCRIPTION_ERRORS,\n [HTTP_STATUS.INTERNAL_SERVER_ERROR]: () => new Error(\"Failed to unsubscribe from blog updates\"),\n }\n );\n};\n","import {\n authV1PasskeyServiceDeletePasskey,\n authV1PasskeyServiceListPasskeys,\n authV1PasskeyServiceRenamePasskey,\n authV1PasskeyServicePasskeyLoginBegin,\n authV1PasskeyServicePasskeyLoginFinish,\n authV1PasskeyServicePasskeyRegisterBegin,\n authV1PasskeyServicePasskeyRegisterFinish,\n authV1PasskeyServiceVerifyPasskeyForLogin,\n} from \"../generated/sdk.gen\";\nimport {apiCall} from \"./api/utils\";\nimport {persistTokens} from \"./api/tokens\";\nimport {HTTP_STATUS} from \"./constants\";\n\nfunction base64urlToBuffer(base64url: string): ArrayBuffer {\n const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padded = base64.padEnd(base64.length + ((4 - (base64.length % 4)) % 4), \"=\");\n const binary = atob(padded);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);\n return bytes.buffer;\n}\n\nfunction bufferToBase64url(buffer: ArrayBuffer): string {\n const bytes = new Uint8Array(buffer);\n let binary = \"\";\n for (let i = 0; i < bytes.length; i++) binary += String.fromCharCode(bytes[i]);\n return btoa(binary).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/, \"\");\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// The gateway sends WebAuthn options as base64-encoded JSON (spec `format: byte`).\n// Decode the envelope to an object before extracting the publicKey payload.\nfunction parseOptionsEnvelope(raw: any): any {\n const decoded = typeof raw === \"string\" ? JSON.parse(atob(raw)) : raw;\n return decoded.publicKey ?? decoded;\n}\n\nfunction decodeCreationOptions(raw: any): PublicKeyCredentialCreationOptions {\n const pk = parseOptionsEnvelope(raw);\n return {\n ...pk,\n challenge: base64urlToBuffer(pk.challenge),\n user: {...pk.user, id: base64urlToBuffer(pk.user.id)},\n excludeCredentials: (pk.excludeCredentials ?? []).map((c: any) => ({\n ...c,\n id: base64urlToBuffer(c.id),\n })),\n };\n}\n\nexport function decodeRequestOptions(raw: any): PublicKeyCredentialRequestOptions {\n const pk = parseOptionsEnvelope(raw);\n return {\n ...pk,\n challenge: base64urlToBuffer(pk.challenge),\n allowCredentials: (pk.allowCredentials ?? []).map((c: any) => ({\n ...c,\n id: base64urlToBuffer(c.id),\n })),\n };\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nexport interface PasskeyBeginLogin {\n session_id: string;\n options: PublicKeyCredentialRequestOptions;\n}\n\n/**\n * Thrown by {@link beginPasskeyLogin} when the server responds successfully\n * but with no credential options — typically because the account has no\n * passkeys enrolled. The OpenAPI schema does not formally model this state\n * (both `session_id` and `options` are optional on `PasskeyBeginResponse`),\n * so callers should distinguish it via `instanceof` rather than error text.\n */\nexport class PasskeyUnavailableError extends Error {\n constructor(message = \"No passkeys available for this account\") {\n super(message);\n this.name = \"PasskeyUnavailableError\";\n }\n}\n\nexport interface PasskeyBeginRegistration {\n session_id: string;\n options: PublicKeyCredentialCreationOptions;\n}\n\nexport interface PasskeyRegistrationResult {\n passkey_id: string;\n name: string;\n}\n\nexport interface Passkey {\n id: string;\n name: string;\n credential_id: string;\n aaguid: string;\n backup_state: boolean;\n created_at: string;\n last_used_at: string;\n transports: string[];\n}\n\n// The server's `credential` field is `bytes` (spec `format: byte`), so the\n// WebAuthn credential JSON must be sent as a base64-encoded string, not an object.\nfunction encodeCredential(credential: object): string {\n return btoa(JSON.stringify(credential));\n}\n\nfunction serializeLoginCredential(cred: PublicKeyCredential): string {\n const response = cred.response as AuthenticatorAssertionResponse;\n return encodeCredential({\n id: cred.id,\n rawId: bufferToBase64url(cred.rawId),\n type: cred.type,\n response: {\n authenticatorData: bufferToBase64url(response.authenticatorData),\n clientDataJSON: bufferToBase64url(response.clientDataJSON),\n signature: bufferToBase64url(response.signature),\n userHandle: response.userHandle ? bufferToBase64url(response.userHandle) : null,\n },\n });\n}\n\nfunction serializeRegistrationCredential(cred: PublicKeyCredential): string {\n const response = cred.response as AuthenticatorAttestationResponse;\n return encodeCredential({\n id: cred.id,\n rawId: bufferToBase64url(cred.rawId),\n type: cred.type,\n response: {\n attestationObject: bufferToBase64url(response.attestationObject),\n clientDataJSON: bufferToBase64url(response.clientDataJSON),\n },\n });\n}\n\nexport const finishPasskeyLogin = async (session_id: string, credential: PublicKeyCredential): Promise<void> => {\n return apiCall(\n async () => {\n const serialized = serializeLoginCredential(credential);\n\n const {data} = await authV1PasskeyServicePasskeyLoginFinish({\n body: {session_id, credential: serialized},\n throwOnError: true,\n });\n\n if (!persistTokens(data)) {\n throw new Error(\"Passkey authentication failed: incomplete token response\");\n }\n },\n {\n [HTTP_STATUS.BAD_REQUEST]: () => new Error(\"Invalid passkey credential\"),\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Passkey authentication failed\"),\n }\n );\n};\n\nexport const beginPasskeyLogin = async (): Promise<PasskeyBeginLogin> => {\n return apiCall(async () => {\n const {data} = await authV1PasskeyServicePasskeyLoginBegin({\n body: {},\n throwOnError: true,\n });\n\n const sessionId = data.session_id;\n if (!sessionId || !data.options) {\n throw new PasskeyUnavailableError();\n }\n\n const options = decodeRequestOptions(data.options);\n return {session_id: sessionId, options};\n }, {});\n};\n\nexport const beginPasskeyRegistration = async (): Promise<PasskeyBeginRegistration> => {\n return apiCall(\n async () => {\n const {data} = await authV1PasskeyServicePasskeyRegisterBegin({\n body: {},\n throwOnError: true,\n });\n\n const sessionId = data.session_id;\n if (!sessionId || !data.options) {\n throw new Error(\"Invalid response from server\");\n }\n\n const options = decodeCreationOptions(data.options);\n return {session_id: sessionId, options};\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Token is missing or invalid; user is not authenticated.\"),\n }\n );\n};\n\nexport const finishPasskeyRegistration = async (\n session_id: string,\n name: string,\n credential: PublicKeyCredential\n): Promise<PasskeyRegistrationResult> => {\n return apiCall(\n async () => {\n const serialized = serializeRegistrationCredential(credential);\n\n const {data} = await authV1PasskeyServicePasskeyRegisterFinish({\n body: {session_id, name, credential: serialized},\n throwOnError: true,\n });\n\n return {\n passkey_id: data.passkey_id ?? \"\",\n name: data.name ?? \"\",\n };\n },\n {\n [HTTP_STATUS.BAD_REQUEST]: () => new Error(\"Invalid passkey credential\"),\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Token is missing or invalid; user is not authenticated.\"),\n }\n );\n};\n\nexport const renamePasskey = async (id: string, name: string): Promise<void> => {\n return apiCall(\n async () => {\n await authV1PasskeyServiceRenamePasskey({\n path: {id},\n body: {name},\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.NOT_FOUND]: () => new Error(\"Passkey not found\"),\n }\n );\n};\n\nexport const deletePasskey = async (id: string): Promise<void> => {\n return apiCall(\n async () => {\n await authV1PasskeyServiceDeletePasskey({\n path: {id},\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.NOT_FOUND]: () => new Error(\"Passkey not found\"),\n }\n );\n};\n\nexport const listPasskeys = async (): Promise<Passkey[]> => {\n return apiCall(\n async () => {\n const {data} = await authV1PasskeyServiceListPasskeys({\n throwOnError: true,\n });\n\n return (data.passkeys ?? []).map((p) => ({\n id: p.id ?? \"\",\n name: p.name ?? \"\",\n credential_id: p.credential_id ?? \"\",\n aaguid: p.aaguid ?? \"\",\n backup_state: p.backup_state ?? false,\n created_at: p.created_at ?? \"\",\n last_used_at: p.last_used_at ?? \"\",\n transports: p.transports ?? [],\n }));\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Token is missing or invalid; user is not authenticated.\"),\n }\n );\n};\n\nexport const verifyPasskeyForLogin = async (session_id: string, credential: PublicKeyCredential): Promise<void> => {\n return apiCall(\n async () => {\n const serialized = serializeLoginCredential(credential);\n\n const {data} = await authV1PasskeyServiceVerifyPasskeyForLogin({\n body: {session_id, credential: serialized},\n throwOnError: true,\n });\n\n if (!persistTokens(data)) {\n throw new Error(\"Passkey verification failed: incomplete token response\");\n }\n },\n {\n [HTTP_STATUS.BAD_REQUEST]: () => new Error(\"Invalid passkey credential\"),\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Passkey verification failed\"),\n [HTTP_STATUS.NOT_FOUND]: () => new Error(\"Session not found\"),\n }\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["ROLE_TO_PROTO"],"sources":["../src/generated/core/bodySerializer.gen.ts","../src/generated/core/params.gen.ts","../src/generated/core/serverSentEvents.gen.ts","../src/generated/core/pathSerializer.gen.ts","../src/generated/core/utils.gen.ts","../src/generated/core/auth.gen.ts","../src/generated/client/utils.gen.ts","../src/generated/client/client.gen.ts","../src/generated/client.gen.ts","../src/generated/sdk.gen.ts","../src/auth/constants.ts","../src/auth/state.ts","../src/auth/providers/oauth.ts","../src/auth/providers/google.ts","../src/auth/providers/microsoft.ts","../src/auth/providers/apple.ts","../src/auth/providers/telegram.ts","../src/auth/url.ts","../src/auth/providers/utils.ts","../src/auth/api/refresh-tokens.ts","../src/auth/initialization.ts","../src/auth/cookie/util.ts","../src/auth/cookie/index.ts","../src/auth/userStore.ts","../src/auth/utils/jwt.ts","../src/auth/authStore.ts","../src/auth/api/types.ts","../src/auth/api-url.ts","../src/auth/api/sdk-client.ts","../src/auth/social/socialState.ts","../src/auth/api/error-handlers.ts","../src/auth/api/utils.ts","../src/auth/api/tokens.ts","../src/auth/validation/base.ts","../src/auth/validation/auth.ts","../src/auth/social/socialConnections.ts","../src/auth/api/client-core.ts","../src/auth/authConfig.ts","../src/auth/init.ts","../src/platform/platformAuthStore.ts","../src/connect.ts","../src/auth/auth/logout.ts","../src/auth/membership/types.ts","../src/auth/membership/mappers.ts","../src/auth/membership/list.ts","../src/auth/validation/membership.ts","../src/auth/membership/invite.ts","../src/auth/membership/manage.ts","../src/auth/validation/user.ts","../src/auth/user.ts","../src/auth/organization.ts","../src/auth/auth/login.ts","../src/auth/auth/register.ts","../src/auth/auth/password.ts","../src/auth/auth/email.ts","../src/auth/validation/domain.ts","../src/auth/domain/types.ts","../src/auth/domain/mappers.ts","../src/auth/domain/index.ts","../src/auth/blog/index.ts","../src/auth/passkey.ts"],"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\ntype Slot = 'body' | 'headers' | 'path' | 'query';\n\nexport type Field =\n | {\n in: Exclude<Slot, 'body'>;\n /**\n * Field name. This is the name we want the user to see and use.\n */\n key: string;\n /**\n * Field mapped name. This is the name we want to use in the request.\n * If omitted, we use the same value as `key`.\n */\n map?: string;\n }\n | {\n in: Extract<Slot, 'body'>;\n /**\n * Key isn't required for bodies.\n */\n key?: string;\n map?: string;\n }\n | {\n /**\n * Field name. This is the name we want the user to see and use.\n */\n key: string;\n /**\n * Field mapped name. This is the name we want to use in the request.\n * If `in` is omitted, `map` aliases `key` to the transport layer.\n */\n map: Slot;\n };\n\nexport interface Fields {\n allowExtra?: Partial<Record<Slot, boolean>>;\n args?: ReadonlyArray<Field>;\n}\n\nexport type FieldsConfig = ReadonlyArray<Field | Fields>;\n\nconst extraPrefixesMap: Record<string, Slot> = {\n $body_: 'body',\n $headers_: 'headers',\n $path_: 'path',\n $query_: 'query',\n};\nconst extraPrefixes = Object.entries(extraPrefixesMap);\n\ntype KeyMap = Map<\n string,\n | {\n in: Slot;\n map?: string;\n }\n | {\n in?: never;\n map: Slot;\n }\n>;\n\nconst buildKeyMap = (fields: FieldsConfig, map?: KeyMap): KeyMap => {\n if (!map) {\n map = new Map();\n }\n\n for (const config of fields) {\n if ('in' in config) {\n if (config.key) {\n map.set(config.key, {\n in: config.in,\n map: config.map,\n });\n }\n } else if ('key' in config) {\n map.set(config.key, {\n map: config.map,\n });\n } else if (config.args) {\n buildKeyMap(config.args, map);\n }\n }\n\n return map;\n};\n\ninterface Params {\n body: unknown;\n headers: Record<string, unknown>;\n path: Record<string, unknown>;\n query: Record<string, unknown>;\n}\n\nconst stripEmptySlots = (params: Params) => {\n for (const [slot, value] of Object.entries(params)) {\n if (value && typeof value === 'object' && !Array.isArray(value) && !Object.keys(value).length) {\n delete params[slot as Slot];\n }\n }\n};\n\nexport const buildClientParams = (args: ReadonlyArray<unknown>, fields: FieldsConfig) => {\n const params: Params = {\n body: {},\n headers: {},\n path: {},\n query: {},\n };\n\n const map = buildKeyMap(fields);\n\n let config: FieldsConfig[number] | undefined;\n\n for (const [index, arg] of args.entries()) {\n if (fields[index]) {\n config = fields[index];\n }\n\n if (!config) {\n continue;\n }\n\n if ('in' in config) {\n if (config.key) {\n const field = map.get(config.key)!;\n const name = field.map || config.key;\n if (field.in) {\n (params[field.in] as Record<string, unknown>)[name] = arg;\n }\n } else {\n params.body = arg;\n }\n } else {\n for (const [key, value] of Object.entries(arg ?? {})) {\n const field = map.get(key);\n\n if (field) {\n if (field.in) {\n const name = field.map || key;\n (params[field.in] as Record<string, unknown>)[name] = value;\n } else {\n params[field.map] = value;\n }\n } else {\n const extra = extraPrefixes.find(([prefix]) => key.startsWith(prefix));\n\n if (extra) {\n const [prefix, slot] = extra;\n (params[slot] as Record<string, unknown>)[key.slice(prefix.length)] = value;\n } else if ('allowExtra' in config && config.allowExtra) {\n for (const [slot, allowed] of Object.entries(config.allowExtra)) {\n if (allowed) {\n (params[slot as Slot] as Record<string, unknown>)[key] = value;\n break;\n }\n }\n }\n }\n }\n }\n }\n\n stripEmptySlots(params);\n\n return params;\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) => {\n switch (style) {\n case 'form':\n return ',';\n case 'pipeDelimited':\n return '|';\n case 'spaceDelimited':\n return '%20';\n default:\n return ',';\n }\n};\n\nexport const separatorObjectExplode = (style: ObjectSeparatorStyle) => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\n\nexport const serializeArrayParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n}: SerializeOptions<ArraySeparatorStyle> & {\n value: unknown[];\n}) => {\n if (!explode) {\n const joinedValues = (\n allowReserved ? value : value.map((v) => encodeURIComponent(v as string))\n ).join(separatorArrayNoExplode(style));\n switch (style) {\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n case 'simple':\n return joinedValues;\n default:\n return `${name}=${joinedValues}`;\n }\n }\n\n const separator = separatorArrayExplode(style);\n const joinedValues = value\n .map((v) => {\n if (style === 'label' || style === 'simple') {\n return allowReserved ? v : encodeURIComponent(v as string);\n }\n\n return serializePrimitiveParam({\n allowReserved,\n name,\n value: v as string,\n });\n })\n .join(separator);\n return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;\n};\n\nexport const serializePrimitiveParam = ({\n allowReserved,\n name,\n value,\n}: SerializePrimitiveParam) => {\n if (value === undefined || value === null) {\n return '';\n }\n\n if (typeof value === 'object') {\n throw new Error(\n 'Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.',\n );\n }\n\n return `${name}=${allowReserved ? value : encodeURIComponent(value)}`;\n};\n\nexport const serializeObjectParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n valueOnly,\n}: SerializeOptions<ObjectSeparatorStyle> & {\n value: Record<string, unknown> | Date;\n valueOnly?: boolean;\n}) => {\n if (value instanceof Date) {\n return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}`;\n }\n\n if (style !== 'deepObject' && !explode) {\n let values: string[] = [];\n Object.entries(value).forEach(([key, v]) => {\n values = [...values, key, allowReserved ? (v as string) : encodeURIComponent(v as string)];\n });\n const joinedValues = values.join(',');\n switch (style) {\n case 'form':\n return `${name}=${joinedValues}`;\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n default:\n return joinedValues;\n }\n }\n\n const separator = separatorObjectExplode(style);\n const joinedValues = Object.entries(value)\n .map(([key, v]) =>\n serializePrimitiveParam({\n allowReserved,\n name: style === 'deepObject' ? `${name}[${key}]` : key,\n value: v as string,\n }),\n )\n .join(separator);\n return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { BodySerializer, QuerySerializer } from './bodySerializer.gen';\nimport {\n type ArraySeparatorStyle,\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from './pathSerializer.gen';\n\nexport interface PathSerializer {\n path: Record<string, unknown>;\n url: string;\n}\n\nexport const PATH_PARAM_RE = /\\{[^{}]+\\}/g;\n\nexport const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => {\n let url = _url;\n const matches = _url.match(PATH_PARAM_RE);\n if (matches) {\n for (const match of matches) {\n let explode = false;\n let name = match.substring(1, match.length - 1);\n let style: ArraySeparatorStyle = 'simple';\n\n if (name.endsWith('*')) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n\n if (name.startsWith('.')) {\n name = name.substring(1);\n style = 'label';\n } else if (name.startsWith(';')) {\n name = name.substring(1);\n style = 'matrix';\n }\n\n const value = path[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n if (Array.isArray(value)) {\n url = url.replace(match, serializeArrayParam({ explode, name, style, value }));\n continue;\n }\n\n if (typeof value === 'object') {\n url = url.replace(\n match,\n serializeObjectParam({\n explode,\n name,\n style,\n value: value as Record<string, unknown>,\n valueOnly: true,\n }),\n );\n continue;\n }\n\n if (style === 'matrix') {\n url = url.replace(\n match,\n `;${serializePrimitiveParam({\n name,\n value: value as string,\n })}`,\n );\n continue;\n }\n\n const replaceValue = encodeURIComponent(\n style === 'label' ? `.${value as string}` : (value as string),\n );\n url = url.replace(match, replaceValue);\n }\n }\n return url;\n};\n\nexport const getUrl = ({\n baseUrl,\n path,\n query,\n querySerializer,\n url: _url,\n}: {\n baseUrl?: string;\n path?: Record<string, unknown>;\n query?: Record<string, unknown>;\n querySerializer: QuerySerializer;\n url: string;\n}) => {\n const pathUrl = _url.startsWith('/') ? _url : `/${_url}`;\n let url = (baseUrl ?? '') + pathUrl;\n if (path) {\n url = defaultPathSerializer({ path, url });\n }\n let search = query ? querySerializer(query) : '';\n if (search.startsWith('?')) {\n search = search.substring(1);\n }\n if (search) {\n url += `?${search}`;\n }\n return url;\n};\n\nexport function getValidRequestBody(options: {\n body?: unknown;\n bodySerializer?: BodySerializer | null;\n serializedBody?: unknown;\n}) {\n const hasBody = options.body !== undefined;\n const isSerializedBody = hasBody && options.bodySerializer;\n\n if (isSerializedBody) {\n if ('serializedBody' in options) {\n const hasSerializedBody =\n options.serializedBody !== undefined && options.serializedBody !== '';\n\n return hasSerializedBody ? options.serializedBody : null;\n }\n\n // not all clients implement a serializedBody property (i.e., client-axios)\n return options.body !== '' ? options.body : null;\n }\n\n // plain/text body\n if (hasBody) {\n return options.body;\n }\n\n // no body was provided\n return undefined;\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\nexport type AuthToken = string | undefined;\n\nexport interface Auth {\n /**\n * Which part of the request do we use to send the auth?\n *\n * @default 'header'\n */\n in?: 'header' | 'query' | 'cookie';\n /**\n * Header or query parameter name.\n *\n * @default 'Authorization'\n */\n name?: string;\n scheme?: 'basic' | 'bearer';\n type: 'apiKey' | 'http';\n}\n\nexport const getAuthToken = async (\n auth: Auth,\n callback: ((auth: Auth) => Promise<AuthToken> | AuthToken) | AuthToken,\n): Promise<string | undefined> => {\n const token = typeof callback === 'function' ? await callback(auth) : callback;\n\n if (!token) {\n return;\n }\n\n if (auth.scheme === 'bearer') {\n return `Bearer ${token}`;\n }\n\n if (auth.scheme === 'basic') {\n return `Basic ${btoa(token)}`;\n }\n\n return token;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { getAuthToken } from '../core/auth.gen';\nimport type { QuerySerializerOptions } from '../core/bodySerializer.gen';\nimport { jsonBodySerializer } from '../core/bodySerializer.gen';\nimport {\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from '../core/pathSerializer.gen';\nimport { getUrl } from '../core/utils.gen';\nimport type { Client, ClientOptions, Config, RequestOptions } from './types.gen';\n\nexport const createQuerySerializer = <T = unknown>({\n parameters = {},\n ...args\n}: QuerySerializerOptions = {}) => {\n const querySerializer = (queryParams: T) => {\n const search: string[] = [];\n if (queryParams && typeof queryParams === 'object') {\n for (const name in queryParams) {\n const value = queryParams[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n const options = parameters[name] || args;\n\n if (Array.isArray(value)) {\n const serializedArray = serializeArrayParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'form',\n value,\n ...options.array,\n });\n if (serializedArray) search.push(serializedArray);\n } else if (typeof value === 'object') {\n const serializedObject = serializeObjectParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'deepObject',\n value: value as Record<string, unknown>,\n ...options.object,\n });\n if (serializedObject) search.push(serializedObject);\n } else {\n const serializedPrimitive = serializePrimitiveParam({\n allowReserved: options.allowReserved,\n name,\n value: value as string,\n });\n if (serializedPrimitive) search.push(serializedPrimitive);\n }\n }\n }\n return search.join('&');\n };\n return querySerializer;\n};\n\n/**\n * Infers parseAs value from provided Content-Type header.\n */\nexport const getParseAs = (contentType: string | null): Exclude<Config['parseAs'], 'auto'> => {\n if (!contentType) {\n // If no Content-Type header is provided, the best we can do is return the raw response body,\n // which is effectively the same as the 'stream' option.\n return 'stream';\n }\n\n const cleanContent = contentType.split(';')[0]?.trim();\n\n if (!cleanContent) {\n return;\n }\n\n if (cleanContent.startsWith('application/json') || cleanContent.endsWith('+json')) {\n return 'json';\n }\n\n if (cleanContent === 'multipart/form-data') {\n return 'formData';\n }\n\n if (\n ['application/', 'audio/', 'image/', 'video/'].some((type) => cleanContent.startsWith(type))\n ) {\n return 'blob';\n }\n\n if (cleanContent.startsWith('text/')) {\n return 'text';\n }\n\n return;\n};\n\nconst checkForExistence = (\n options: Pick<RequestOptions, 'auth' | 'query'> & {\n headers: Headers;\n },\n name?: string,\n): boolean => {\n if (!name) {\n return false;\n }\n if (\n options.headers.has(name) ||\n options.query?.[name] ||\n options.headers.get('Cookie')?.includes(`${name}=`)\n ) {\n return true;\n }\n return false;\n};\n\nexport const setAuthParams = async ({\n security,\n ...options\n}: Pick<Required<RequestOptions>, 'security'> &\n Pick<RequestOptions, 'auth' | 'query'> & {\n headers: Headers;\n }) => {\n for (const auth of security) {\n if (checkForExistence(options, auth.name)) {\n continue;\n }\n\n const token = await getAuthToken(auth, options.auth);\n\n if (!token) {\n continue;\n }\n\n const name = auth.name ?? 'Authorization';\n\n switch (auth.in) {\n case 'query':\n if (!options.query) {\n options.query = {};\n }\n options.query[name] = token;\n break;\n case 'cookie':\n options.headers.append('Cookie', `${name}=${token}`);\n break;\n case 'header':\n default:\n options.headers.set(name, token);\n break;\n }\n }\n};\n\nexport const buildUrl: Client['buildUrl'] = (options) =>\n getUrl({\n baseUrl: options.baseUrl as string,\n path: options.path,\n query: options.query,\n querySerializer:\n typeof options.querySerializer === 'function'\n ? options.querySerializer\n : createQuerySerializer(options.querySerializer),\n url: options.url,\n });\n\nexport const mergeConfigs = (a: Config, b: Config): Config => {\n const config = { ...a, ...b };\n if (config.baseUrl?.endsWith('/')) {\n config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1);\n }\n config.headers = mergeHeaders(a.headers, b.headers);\n return config;\n};\n\nconst headersEntries = (headers: Headers): Array<[string, string]> => {\n const entries: Array<[string, string]> = [];\n headers.forEach((value, key) => {\n entries.push([key, value]);\n });\n return entries;\n};\n\nexport const mergeHeaders = (\n ...headers: Array<Required<Config>['headers'] | undefined>\n): Headers => {\n const mergedHeaders = new Headers();\n for (const header of headers) {\n if (!header) {\n continue;\n }\n\n const iterator = header instanceof Headers ? headersEntries(header) : Object.entries(header);\n\n for (const [key, value] of iterator) {\n if (value === null) {\n mergedHeaders.delete(key);\n } else if (Array.isArray(value)) {\n for (const v of value) {\n mergedHeaders.append(key, v as string);\n }\n } else if (value !== undefined) {\n // assume object headers are meant to be JSON stringified, i.e., their\n // content value in OpenAPI specification is 'application/json'\n mergedHeaders.set(\n key,\n typeof value === 'object' ? JSON.stringify(value) : (value as string),\n );\n }\n }\n }\n return mergedHeaders;\n};\n\ntype ErrInterceptor<Err, Res, Req, Options> = (\n error: Err,\n /** response may be undefined due to a network error where no response object is produced */\n response: Res | undefined,\n /** request may be undefined, because error may be from building the request object itself */\n request: Req | undefined,\n options: Options,\n) => Err | Promise<Err>;\n\ntype ReqInterceptor<Req, Options> = (request: Req, options: Options) => Req | Promise<Req>;\n\ntype ResInterceptor<Res, Req, Options> = (\n response: Res,\n request: Req,\n options: Options,\n) => Res | Promise<Res>;\n\nclass Interceptors<Interceptor> {\n fns: Array<Interceptor | null> = [];\n\n clear(): void {\n this.fns = [];\n }\n\n eject(id: number | Interceptor): void {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = null;\n }\n }\n\n exists(id: number | Interceptor): boolean {\n const index = this.getInterceptorIndex(id);\n return Boolean(this.fns[index]);\n }\n\n getInterceptorIndex(id: number | Interceptor): number {\n if (typeof id === 'number') {\n return this.fns[id] ? id : -1;\n }\n return this.fns.indexOf(id);\n }\n\n update(id: number | Interceptor, fn: Interceptor): number | Interceptor | false {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = fn;\n return id;\n }\n return false;\n }\n\n use(fn: Interceptor): number {\n this.fns.push(fn);\n return this.fns.length - 1;\n }\n}\n\nexport interface Middleware<Req, Res, Err, Options> {\n error: Interceptors<ErrInterceptor<Err, Res, Req, Options>>;\n request: Interceptors<ReqInterceptor<Req, Options>>;\n response: Interceptors<ResInterceptor<Res, Req, Options>>;\n}\n\nexport const createInterceptors = <Req, Res, Err, Options>(): Middleware<\n Req,\n Res,\n Err,\n Options\n> => ({\n error: new Interceptors<ErrInterceptor<Err, Res, Req, Options>>(),\n request: new Interceptors<ReqInterceptor<Req, Options>>(),\n response: new Interceptors<ResInterceptor<Res, Req, Options>>(),\n});\n\nconst defaultQuerySerializer = createQuerySerializer({\n allowReserved: false,\n array: {\n explode: true,\n style: 'form',\n },\n object: {\n explode: true,\n style: 'deepObject',\n },\n});\n\nconst defaultHeaders = {\n 'Content-Type': 'application/json',\n};\n\nexport const createConfig = <T extends ClientOptions = ClientOptions>(\n override: Config<Omit<ClientOptions, keyof T> & T> = {},\n): Config<Omit<ClientOptions, keyof T> & T> => ({\n ...jsonBodySerializer,\n headers: defaultHeaders,\n parseAs: 'auto',\n querySerializer: defaultQuerySerializer,\n ...override,\n});\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { createSseClient } from '../core/serverSentEvents.gen';\nimport type { HttpMethod } from '../core/types.gen';\nimport { getValidRequestBody } from '../core/utils.gen';\nimport type { Client, Config, RequestOptions, ResolvedRequestOptions } from './types.gen';\nimport {\n buildUrl,\n createConfig,\n createInterceptors,\n getParseAs,\n mergeConfigs,\n mergeHeaders,\n setAuthParams,\n} from './utils.gen';\n\ntype ReqInit = Omit<RequestInit, 'body' | 'headers'> & {\n body?: any;\n headers: ReturnType<typeof mergeHeaders>;\n};\n\nexport const createClient = (config: Config = {}): Client => {\n let _config = mergeConfigs(createConfig(), config);\n\n const getConfig = (): Config => ({ ..._config });\n\n const setConfig = (config: Config): Config => {\n _config = mergeConfigs(_config, config);\n return getConfig();\n };\n\n const interceptors = createInterceptors<Request, Response, unknown, ResolvedRequestOptions>();\n\n const beforeRequest = async <\n TData = unknown,\n TResponseStyle extends 'data' | 'fields' = 'fields',\n ThrowOnError extends boolean = boolean,\n Url extends string = string,\n >(\n options: RequestOptions<TData, TResponseStyle, ThrowOnError, Url>,\n ) => {\n const opts = {\n ..._config,\n ...options,\n fetch: options.fetch ?? _config.fetch ?? globalThis.fetch,\n headers: mergeHeaders(_config.headers, options.headers),\n serializedBody: undefined as string | undefined,\n };\n\n if (opts.security) {\n await setAuthParams({\n ...opts,\n security: opts.security,\n });\n }\n\n if (opts.requestValidator) {\n await opts.requestValidator(opts);\n }\n\n if (opts.body !== undefined && opts.bodySerializer) {\n opts.serializedBody = opts.bodySerializer(opts.body) as string | undefined;\n }\n\n // remove Content-Type header if body is empty to avoid sending invalid requests\n if (opts.body === undefined || opts.serializedBody === '') {\n opts.headers.delete('Content-Type');\n }\n\n const resolvedOpts = opts as typeof opts &\n ResolvedRequestOptions<TResponseStyle, ThrowOnError, Url>;\n const url = buildUrl(resolvedOpts);\n\n return { opts: resolvedOpts, url };\n };\n\n const request: Client['request'] = async (options) => {\n const throwOnError = options.throwOnError ?? _config.throwOnError;\n const responseStyle = options.responseStyle ?? _config.responseStyle;\n\n let request: Request | undefined;\n let response: Response | undefined;\n\n try {\n const { opts, url } = await beforeRequest(options);\n const requestInit: ReqInit = {\n redirect: 'follow',\n ...opts,\n body: getValidRequestBody(opts),\n };\n\n request = new Request(url, requestInit);\n\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = opts.fetch!;\n\n response = await _fetch(request);\n\n for (const fn of interceptors.response.fns) {\n if (fn) {\n response = await fn(response, request, opts);\n }\n }\n\n const result = {\n request,\n response,\n };\n\n if (response.ok) {\n const parseAs =\n (opts.parseAs === 'auto'\n ? getParseAs(response.headers.get('Content-Type'))\n : opts.parseAs) ?? 'json';\n\n if (response.status === 204 || response.headers.get('Content-Length') === '0') {\n let emptyData: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'text':\n emptyData = await response[parseAs]();\n break;\n case 'formData':\n emptyData = new FormData();\n break;\n case 'stream':\n emptyData = response.body;\n break;\n case 'json':\n default:\n emptyData = {};\n break;\n }\n return opts.responseStyle === 'data'\n ? emptyData\n : {\n data: emptyData,\n ...result,\n };\n }\n\n let data: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'formData':\n case 'text':\n data = await response[parseAs]();\n break;\n case 'json': {\n // Some servers return 200 with no Content-Length and empty body.\n // response.json() would throw; read as text and parse if non-empty.\n const text = await response.text();\n data = text ? JSON.parse(text) : {};\n break;\n }\n case 'stream':\n return opts.responseStyle === 'data'\n ? response.body\n : {\n data: response.body,\n ...result,\n };\n }\n\n if (parseAs === 'json') {\n if (opts.responseValidator) {\n await opts.responseValidator(data);\n }\n\n if (opts.responseTransformer) {\n data = await opts.responseTransformer(data);\n }\n }\n\n return opts.responseStyle === 'data'\n ? data\n : {\n data,\n ...result,\n };\n }\n\n const textError = await response.text();\n let jsonError: unknown;\n\n try {\n jsonError = JSON.parse(textError);\n } catch {\n // noop\n }\n\n throw jsonError ?? textError;\n } catch (error) {\n let finalError = error;\n\n for (const fn of interceptors.error.fns) {\n if (fn) {\n finalError = await fn(finalError, response, request, options as ResolvedRequestOptions);\n }\n }\n\n finalError = finalError || {};\n\n if (throwOnError) {\n throw finalError;\n }\n\n // TODO: we probably want to return error and improve types\n return responseStyle === 'data'\n ? undefined\n : {\n error: finalError,\n request,\n response,\n };\n }\n };\n\n const makeMethodFn = (method: Uppercase<HttpMethod>) => (options: RequestOptions) =>\n request({ ...options, method });\n\n const makeSseFn = (method: Uppercase<HttpMethod>) => async (options: RequestOptions) => {\n const { opts, url } = await beforeRequest(options);\n return createSseClient({\n ...opts,\n body: opts.body as BodyInit | null | undefined,\n method,\n onRequest: async (url, init) => {\n let request = new Request(url, init);\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n return request;\n },\n serializedBody: getValidRequestBody(opts) as BodyInit | null | undefined,\n url,\n });\n };\n\n const _buildUrl: Client['buildUrl'] = (options) => buildUrl({ ..._config, ...options });\n\n return {\n buildUrl: _buildUrl,\n connect: makeMethodFn('CONNECT'),\n delete: makeMethodFn('DELETE'),\n get: makeMethodFn('GET'),\n getConfig,\n head: makeMethodFn('HEAD'),\n interceptors,\n options: makeMethodFn('OPTIONS'),\n patch: makeMethodFn('PATCH'),\n post: makeMethodFn('POST'),\n put: makeMethodFn('PUT'),\n request,\n setConfig,\n sse: {\n connect: makeSseFn('CONNECT'),\n delete: makeSseFn('DELETE'),\n get: makeSseFn('GET'),\n head: makeSseFn('HEAD'),\n options: makeSseFn('OPTIONS'),\n patch: makeSseFn('PATCH'),\n post: makeSseFn('POST'),\n put: makeSseFn('PUT'),\n trace: makeSseFn('TRACE'),\n },\n trace: makeMethodFn('TRACE'),\n } as Client;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { type ClientOptions, type Config, createClient, createConfig } from './client';\nimport type { ClientOptions as ClientOptions2 } from './types.gen';\n\n/**\n * The `createClientConfig()` function will be called on client initialization\n * and the returned object will become the client's initial configuration.\n *\n * You may want to initialize your client this way instead of calling\n * `setConfig()`. This is useful for example if you're using Next.js\n * to ensure your client always has the correct values.\n */\nexport type CreateClientConfig<T extends ClientOptions = ClientOptions2> = (override?: Config<ClientOptions & T>) => Config<Required<ClientOptions> & T>;\n\nexport const client = createClient(createConfig<ClientOptions2>({ baseUrl: 'https://raw.githubusercontent.com' }));\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Client, Options as Options2, TDataShape } from './client';\nimport { client } from './client.gen';\nimport type { AnalyticsV1DashboardServiceGetDashboardStatsData, AnalyticsV1DashboardServiceGetDashboardStatsResponses, AnalyticsV1EventsServiceTrackEventsData, AnalyticsV1EventsServiceTrackEventsResponses, AnalyticsV1FeedsServiceGetFeedStatsData, AnalyticsV1FeedsServiceGetFeedStatsResponses, AnalyticsV1FeedsServiceGetTopFeedsData, AnalyticsV1FeedsServiceGetTopFeedsResponses, AnalyticsV1FunnelsServiceGetFunnelAnalyticsData, AnalyticsV1FunnelsServiceGetFunnelAnalyticsResponses, AnalyticsV1FunnelsServiceGetRetentionAnalyticsData, AnalyticsV1FunnelsServiceGetRetentionAnalyticsResponses, AnalyticsV1HeatmapServiceGetHotSegmentsData, AnalyticsV1HeatmapServiceGetHotSegmentsResponses, AnalyticsV1HeatmapServiceGetVideoHeatmapData, AnalyticsV1HeatmapServiceGetVideoHeatmapResponses, AnalyticsV1PostsServiceGetPostStatsData, AnalyticsV1PostsServiceGetPostStatsResponses, AnalyticsV1PostsServiceGetTopPostsData, AnalyticsV1PostsServiceGetTopPostsResponses, AnalyticsV1RealtimeServiceGetRealtimeStatsData, AnalyticsV1RealtimeServiceGetRealtimeStatsResponses, AnalyticsV1VideosServiceGetTopVideosData, AnalyticsV1VideosServiceGetTopVideosResponses, AnalyticsV1VideosServiceGetVideoStatsData, AnalyticsV1VideosServiceGetVideoStatsResponses, ApikeysV1ApiKeyServiceCreateApiKeyData, ApikeysV1ApiKeyServiceCreateApiKeyResponses, ApikeysV1ApiKeyServiceDeleteApiKeyData, ApikeysV1ApiKeyServiceDeleteApiKeyResponses, ApikeysV1ApiKeyServiceListApiKeysData, ApikeysV1ApiKeyServiceListApiKeysResponses, ApikeysV1ApiKeyServiceRotateApiKeyData, ApikeysV1ApiKeyServiceRotateApiKeyResponses, AuthV1BlogServiceGetBlogSubscriptionData, AuthV1BlogServiceGetBlogSubscriptionResponses, AuthV1BlogServiceSendBlogBroadcastData, AuthV1BlogServiceSendBlogBroadcastResponses, AuthV1BlogServiceSubscribeBlogData, AuthV1BlogServiceSubscribeBlogResponses, AuthV1BlogServiceUnsubscribeBlogByEmailData, AuthV1BlogServiceUnsubscribeBlogByEmailResponses, AuthV1BlogServiceUnsubscribeBlogData, AuthV1BlogServiceUnsubscribeBlogResponses, AuthV1DomainServiceCheckDomainVerificationData, AuthV1DomainServiceCheckDomainVerificationResponses, AuthV1DomainServiceCreateDomainVerificationData, AuthV1DomainServiceCreateDomainVerificationResponses, AuthV1DomainServiceGetDomainAutoJoinData, AuthV1DomainServiceGetDomainAutoJoinResponses, AuthV1DomainServiceGetDomainStatusData, AuthV1DomainServiceGetDomainStatusResponses, AuthV1DomainServiceRemoveDomainData, AuthV1DomainServiceRemoveDomainResponses, AuthV1DomainServiceSetDomainAutoJoinData, AuthV1DomainServiceSetDomainAutoJoinResponses, AuthV1EmailServiceAddEmailData, AuthV1EmailServiceAddEmailResponses, AuthV1EmailServiceGetUserEmailStatusData, AuthV1EmailServiceGetUserEmailStatusResponses, AuthV1EmailServiceInitiateEmailChangeData, AuthV1EmailServiceInitiateEmailChangeResponses, AuthV1EmailServiceLoginData, AuthV1EmailServiceLoginResponses, AuthV1EmailServiceRegisterData, AuthV1EmailServiceRegisterResponses, AuthV1EmailServiceResendVerificationData, AuthV1EmailServiceResendVerificationResponses, AuthV1EmailServiceResetPasswordData, AuthV1EmailServiceResetPasswordResponses, AuthV1EmailServiceSendPasswordResetData, AuthV1EmailServiceSendPasswordResetResponses, AuthV1EmailServiceVerifyEmailData, AuthV1EmailServiceVerifyEmailResponses, AuthV1MembershipServiceAcceptInvitationData, AuthV1MembershipServiceAcceptInvitationResponses, AuthV1MembershipServiceCancelInvitationData, AuthV1MembershipServiceCancelInvitationResponses, AuthV1MembershipServiceCheckMembershipData, AuthV1MembershipServiceCheckMembershipResponses, AuthV1MembershipServiceDeclineInvitationData, AuthV1MembershipServiceDeclineInvitationResponses, AuthV1MembershipServiceGetInternalMembershipInfoData, AuthV1MembershipServiceGetInternalMembershipInfoResponses, AuthV1MembershipServiceInviteMemberData, AuthV1MembershipServiceInviteMemberResponses, AuthV1MembershipServiceLeaveOrganizationData, AuthV1MembershipServiceLeaveOrganizationResponses, AuthV1MembershipServiceListMembershipApplicationsData, AuthV1MembershipServiceListMembershipApplicationsResponses, AuthV1MembershipServiceListMembershipsData, AuthV1MembershipServiceListMembershipsResponses, AuthV1MembershipServiceListOrganizationMembersData, AuthV1MembershipServiceListOrganizationMembersResponses, AuthV1MembershipServiceReactivateMemberData, AuthV1MembershipServiceReactivateMemberResponses, AuthV1MembershipServiceRemoveMemberData, AuthV1MembershipServiceRemoveMemberResponses, AuthV1MembershipServiceResendInvitationData, AuthV1MembershipServiceResendInvitationResponses, AuthV1MembershipServiceSuspendMemberData, AuthV1MembershipServiceSuspendMemberResponses, AuthV1MembershipServiceUpdateActiveMembershipData, AuthV1MembershipServiceUpdateActiveMembershipResponses, AuthV1MembershipServiceUpdateMemberRoleData, AuthV1MembershipServiceUpdateMemberRoleResponses, AuthV1MembershipServiceUpdateMembershipStateData, AuthV1MembershipServiceUpdateMembershipStateResponses, AuthV1MembershipServiceUpdateOrgNameData, AuthV1MembershipServiceUpdateOrgNameResponses, AuthV1MembershipServiceUpdateOrgUsernameData, AuthV1MembershipServiceUpdateOrgUsernameResponses, AuthV1OtpServiceDeleteOtpData, AuthV1OtpServiceDeleteOtpResponses, AuthV1OtpServiceGetOtpStatusData, AuthV1OtpServiceGetOtpStatusResponses, AuthV1OtpServiceSetupOtpData, AuthV1OtpServiceSetupOtpResponses, AuthV1OtpServiceVerifyOtpData, AuthV1OtpServiceVerifyOtpResponses, AuthV1OtpServiceVerifyTotpForLoginData, AuthV1OtpServiceVerifyTotpForLoginResponses, AuthV1PasskeyServiceDeletePasskeyData, AuthV1PasskeyServiceDeletePasskeyResponses, AuthV1PasskeyServiceListPasskeysData, AuthV1PasskeyServiceListPasskeysResponses, AuthV1PasskeyServicePasskeyLoginBeginData, AuthV1PasskeyServicePasskeyLoginBeginResponses, AuthV1PasskeyServicePasskeyLoginFinishData, AuthV1PasskeyServicePasskeyLoginFinishResponses, AuthV1PasskeyServicePasskeyRegisterBeginData, AuthV1PasskeyServicePasskeyRegisterBeginResponses, AuthV1PasskeyServicePasskeyRegisterFinishData, AuthV1PasskeyServicePasskeyRegisterFinishResponses, AuthV1PasskeyServiceRenamePasskeyData, AuthV1PasskeyServiceRenamePasskeyResponses, AuthV1PasskeyServiceVerifyPasskeyForLoginData, AuthV1PasskeyServiceVerifyPasskeyForLoginResponses, AuthV1PolicyServiceAttachPolicyData, AuthV1PolicyServiceAttachPolicyResponses, AuthV1PolicyServiceCreatePolicyData, AuthV1PolicyServiceCreatePolicyResponses, AuthV1PolicyServiceDeletePolicyData, AuthV1PolicyServiceDeletePolicyResponses, AuthV1PolicyServiceDetachPolicyData, AuthV1PolicyServiceDetachPolicyResponses, AuthV1PolicyServiceGetPolicyData, AuthV1PolicyServiceGetPolicyResponses, AuthV1PolicyServiceListPermissionRegistryData, AuthV1PolicyServiceListPermissionRegistryResponses, AuthV1PolicyServiceListPoliciesData, AuthV1PolicyServiceListPoliciesResponses, AuthV1PolicyServiceListPolicyAttachmentsData, AuthV1PolicyServiceListPolicyAttachmentsResponses, AuthV1PolicyServiceListUserPoliciesData, AuthV1PolicyServiceListUserPoliciesResponses, AuthV1PolicyServiceUpdatePolicyData, AuthV1PolicyServiceUpdatePolicyResponses, AuthV1ProvidersServiceConnectProviderData, AuthV1ProvidersServiceConnectProviderResponses, AuthV1ProvidersServiceDisconnectProviderData, AuthV1ProvidersServiceDisconnectProviderResponses, AuthV1ProvidersServiceListProvidersData, AuthV1ProvidersServiceListProvidersResponses, AuthV1TokenServiceLogoutData, AuthV1TokenServiceLogoutResponses, AuthV1TokenServiceRefreshTokenData, AuthV1TokenServiceRefreshTokenResponses, AuthV1UserServiceGetUserData, AuthV1UserServiceGetUserInfoData, AuthV1UserServiceGetUserInfoResponses, AuthV1UserServiceGetUserResponses, AuthV1UserServiceUpdateNameData, AuthV1UserServiceUpdateNameResponses, AuthV1UserServiceUpdateUsernameData, AuthV1UserServiceUpdateUsernameResponses, BillingV1InvoiceServiceListInvoicesData, BillingV1InvoiceServiceListInvoicesResponses, BillingV1InvoiceServiceUpdateInvoiceStatusData, BillingV1InvoiceServiceUpdateInvoiceStatusResponses, BillingV1PaymentServiceCalculateGenericTaxData, BillingV1PaymentServiceCalculateGenericTaxResponses, BillingV1PaymentServiceCalculateTaxData, BillingV1PaymentServiceCalculateTaxResponses, BillingV1PaymentServiceCreateCheckoutSessionData, BillingV1PaymentServiceCreateCheckoutSessionResponses, BillingV1PaymentServiceCreateSetupIntentData, BillingV1PaymentServiceCreateSetupIntentResponses, BillingV1PaymentServiceDeletePaymentMethodData, BillingV1PaymentServiceDeletePaymentMethodResponses, BillingV1PaymentServiceGetBillingAddressData, BillingV1PaymentServiceGetBillingAddressResponses, BillingV1PaymentServiceGetPaymentMethodFromPaymentIntentData, BillingV1PaymentServiceGetPaymentMethodFromPaymentIntentResponses, BillingV1PaymentServiceGetPaymentMethodFromSetupIntentData, BillingV1PaymentServiceGetPaymentMethodFromSetupIntentResponses, BillingV1PaymentServiceListPaymentMethodsData, BillingV1PaymentServiceListPaymentMethodsResponses, BillingV1PaymentServiceUpgradeSubscriptionData, BillingV1PaymentServiceUpgradeSubscriptionResponses, BillingV1PaymentServiceUpsertBillingAddressData, BillingV1PaymentServiceUpsertBillingAddressResponses, BillingV1PaymentServiceUpsertPaymentMethodData, BillingV1PaymentServiceUpsertPaymentMethodResponses, BillingV1PlanServiceGetPlanData, BillingV1PlanServiceGetPlanResponses, BillingV1PlanServiceListPlansData, BillingV1PlanServiceListPlansResponses, BillingV1SalesServiceContactSalesData, BillingV1SalesServiceContactSalesResponses, BillingV1SubscriptionServiceCancelSubscriptionData, BillingV1SubscriptionServiceCancelSubscriptionResponses, BillingV1SubscriptionServiceCreateSubscriptionData, BillingV1SubscriptionServiceCreateSubscriptionResponses, BillingV1SubscriptionServiceGetSubscriptionData, BillingV1SubscriptionServiceGetSubscriptionHistoryData, BillingV1SubscriptionServiceGetSubscriptionHistoryResponses, BillingV1SubscriptionServiceGetSubscriptionResponses, BillingV1SubscriptionServiceReactivateSubscriptionData, BillingV1SubscriptionServiceReactivateSubscriptionResponses, BillingV1UsageServiceGetBandwidthUsageData, BillingV1UsageServiceGetBandwidthUsageHistoryData, BillingV1UsageServiceGetBandwidthUsageHistoryResponses, BillingV1UsageServiceGetBandwidthUsageResponses, BillingV1UsageServiceGetStorageUsageData, BillingV1UsageServiceGetStorageUsageHistoryData, BillingV1UsageServiceGetStorageUsageHistoryResponses, BillingV1UsageServiceGetStorageUsageResponses, BillingV1UsageServiceRefreshBandwidthUsageData, BillingV1UsageServiceRefreshBandwidthUsageResponses, BillingV1UsageServiceRefreshStorageUsageData, BillingV1UsageServiceRefreshStorageUsageResponses, ClientauthV1ClientCredentialServiceCreateClientCredentialData, ClientauthV1ClientCredentialServiceCreateClientCredentialResponses, ClientauthV1ClientCredentialServiceListClientCredentialsData, ClientauthV1ClientCredentialServiceListClientCredentialsResponses, ClientauthV1ClientCredentialServiceMintClientTokenData, ClientauthV1ClientCredentialServiceMintClientTokenResponses, ClientauthV1ClientCredentialServiceRevokeClientCredentialData, ClientauthV1ClientCredentialServiceRevokeClientCredentialResponses, FeedsV1FeedServiceCreateFeedData, FeedsV1FeedServiceCreateFeedResponses, FeedsV1FeedServiceDeleteFeedData, FeedsV1FeedServiceDeleteFeedResponses, FeedsV1FeedServiceGetFeedData, FeedsV1FeedServiceGetFeedResponses, FeedsV1FeedServiceListFeedsData, FeedsV1FeedServiceListFeedsResponses, FeedsV1FeedServiceUpdateFeedData, FeedsV1FeedServiceUpdateFeedResponses, ImagesV1ImageConversionServiceMarkImageFailedData, ImagesV1ImageConversionServiceMarkImageFailedResponses, ImagesV1ImageConversionServiceMarkImageProcessedData, ImagesV1ImageConversionServiceMarkImageProcessedResponses, ImagesV1ImageConversionServiceTakeUnprocessedImageData, ImagesV1ImageConversionServiceTakeUnprocessedImageResponses, ImagesV1ImageServiceCreateImageUploadData, ImagesV1ImageServiceCreateImageUploadResponses, ImagesV1ImageServiceDeleteImageData, ImagesV1ImageServiceDeleteImageResponses, ImagesV1ImageServiceGetImageData, ImagesV1ImageServiceGetImageResponses, ImagesV1ImageServiceListImagesData, ImagesV1ImageServiceListImagesResponses, ImagesV1ImageServiceUpdateImageVisibilityData, ImagesV1ImageServiceUpdateImageVisibilityResponses, PlatformauthV1PlatformAuthServiceExchangeApiKeyData, PlatformauthV1PlatformAuthServiceExchangeApiKeyResponses, PlatformauthV1PlatformAuthServiceRefreshPlatformTokenData, PlatformauthV1PlatformAuthServiceRefreshPlatformTokenResponses, PostsV1PostServiceCreatePostData, PostsV1PostServiceCreatePostResponses, PostsV1PostServiceCreatePostUploadData, PostsV1PostServiceCreatePostUploadResponses, PostsV1PostServiceDeletePost2Data, PostsV1PostServiceDeletePost2Responses, PostsV1PostServiceDeletePostData, PostsV1PostServiceDeletePostResponses, PostsV1PostServiceGetPost2Data, PostsV1PostServiceGetPost2Responses, PostsV1PostServiceGetPost3Data, PostsV1PostServiceGetPost3Responses, PostsV1PostServiceGetPostData, PostsV1PostServiceGetPostResponses, PostsV1PostServiceListPosts2Data, PostsV1PostServiceListPosts2Responses, PostsV1PostServiceListPosts3Data, PostsV1PostServiceListPosts3Responses, PostsV1PostServiceListPosts4Data, PostsV1PostServiceListPosts4Responses, PostsV1PostServiceListPostsData, PostsV1PostServiceListPostsResponses, ProjectV1ProjectServiceCreateProjectData, ProjectV1ProjectServiceCreateProjectResponses, ProjectV1ProjectServiceDeleteProjectData, ProjectV1ProjectServiceDeleteProjectResponses, ProjectV1ProjectServiceGetProjectData, ProjectV1ProjectServiceGetProjectResponses, ProjectV1ProjectServiceListProjectsData, ProjectV1ProjectServiceListProjectsResponses, ProjectV1ProjectServiceMoveProjectData, ProjectV1ProjectServiceMoveProjectResponses, ProjectV1ProjectServiceRemoveCustomDomainData, ProjectV1ProjectServiceRemoveCustomDomainResponses, ProjectV1ProjectServiceSetCustomDomainData, ProjectV1ProjectServiceSetCustomDomainResponses, ProjectV1ProjectServiceUpdateProjectNameData, ProjectV1ProjectServiceUpdateProjectNameResponses, ProjectV1ProjectServiceUpdateVideoQualityData, ProjectV1ProjectServiceUpdateVideoQualityResponses, VideosV1AudioTrackServiceCreateAudioTrackUploadData, VideosV1AudioTrackServiceCreateAudioTrackUploadResponses, VideosV1AudioTrackServiceDeleteAllAudioTracksData, VideosV1AudioTrackServiceDeleteAllAudioTracksResponses, VideosV1AudioTrackServiceDeleteAudioTrackData, VideosV1AudioTrackServiceDeleteAudioTrackResponses, VideosV1AudioTrackServiceDeleteAudioTracksByLanguageData, VideosV1AudioTrackServiceDeleteAudioTracksByLanguageResponses, VideosV1AudioTrackServiceListAudioTracksData, VideosV1AudioTrackServiceListAudioTracksResponses, VideosV1ChapterServiceDeleteVideoChapterData, VideosV1ChapterServiceDeleteVideoChapterResponses, VideosV1ChapterServiceGetVideoChaptersData, VideosV1ChapterServiceGetVideoChaptersResponses, VideosV1ChapterServiceUpdateVideoChaptersData, VideosV1ChapterServiceUpdateVideoChaptersResponses, VideosV1LanguageServiceListLanguagesData, VideosV1LanguageServiceListLanguagesResponses, VideosV1SubtitleServiceCreateSubtitleUploadData, VideosV1SubtitleServiceCreateSubtitleUploadResponses, VideosV1SubtitleServiceDeleteAllSubtitlesData, VideosV1SubtitleServiceDeleteAllSubtitlesResponses, VideosV1SubtitleServiceDeleteSubtitleData, VideosV1SubtitleServiceDeleteSubtitleResponses, VideosV1SubtitleServiceDeleteSubtitlesByLanguageData, VideosV1SubtitleServiceDeleteSubtitlesByLanguageResponses, VideosV1SubtitleServiceListSubtitlesData, VideosV1SubtitleServiceListSubtitlesResponses, VideosV1VideoConversionServiceMarkVideoFailedData, VideosV1VideoConversionServiceMarkVideoFailedResponses, VideosV1VideoConversionServiceMarkVideoProcessedData, VideosV1VideoConversionServiceMarkVideoProcessedResponses, VideosV1VideoServiceCreateVideoUploadData, VideosV1VideoServiceCreateVideoUploadResponses, VideosV1VideoServiceDeleteVideoData, VideosV1VideoServiceDeleteVideoResponses, VideosV1VideoServiceGetVideoData, VideosV1VideoServiceGetVideoResponses, VideosV1VideoServiceListVideosData, VideosV1VideoServiceListVideosResponses, VideosV1VideoServiceUpdateVideoVisibilityData, VideosV1VideoServiceUpdateVideoVisibilityResponses } from './types.gen';\n\nexport type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean, TResponse = unknown> = Options2<TData, ThrowOnError, TResponse> & {\n /**\n * You can provide a client instance returned by `createClient()` instead of\n * individual options. This might be also useful if you want to implement a\n * custom client.\n */\n client?: Client;\n /**\n * You can pass arbitrary values through the `meta` object. This can be\n * used to access values that aren't defined as part of the SDK function.\n */\n meta?: Record<string, unknown>;\n};\n\n/**\n * GetDashboardStats\n */\nexport const analyticsV1DashboardServiceGetDashboardStats = <ThrowOnError extends boolean = false>(options: Options<AnalyticsV1DashboardServiceGetDashboardStatsData, ThrowOnError>) => (options.client ?? client).get<AnalyticsV1DashboardServiceGetDashboardStatsResponses, unknown, ThrowOnError>({ url: '/analytics/v1/dashboard', ...options });\n\n/**\n * TrackEvents\n */\nexport const analyticsV1EventsServiceTrackEvents = <ThrowOnError extends boolean = false>(options: Options<AnalyticsV1EventsServiceTrackEventsData, ThrowOnError>) => (options.client ?? client).post<AnalyticsV1EventsServiceTrackEventsResponses, unknown, ThrowOnError>({\n url: '/analytics/v1/events',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * GetFeedStats\n */\nexport const analyticsV1FeedsServiceGetFeedStats = <ThrowOnError extends boolean = false>(options: Options<AnalyticsV1FeedsServiceGetFeedStatsData, ThrowOnError>) => (options.client ?? client).get<AnalyticsV1FeedsServiceGetFeedStatsResponses, unknown, ThrowOnError>({ url: '/analytics/v1/feeds/{feed_id}/stats', ...options });\n\n/**\n * GetTopFeeds\n */\nexport const analyticsV1FeedsServiceGetTopFeeds = <ThrowOnError extends boolean = false>(options?: Options<AnalyticsV1FeedsServiceGetTopFeedsData, ThrowOnError>) => (options?.client ?? client).get<AnalyticsV1FeedsServiceGetTopFeedsResponses, unknown, ThrowOnError>({ url: '/analytics/v1/top/feeds', ...options });\n\n/**\n * GetFunnelAnalytics\n */\nexport const analyticsV1FunnelsServiceGetFunnelAnalytics = <ThrowOnError extends boolean = false>(options: Options<AnalyticsV1FunnelsServiceGetFunnelAnalyticsData, ThrowOnError>) => (options.client ?? client).post<AnalyticsV1FunnelsServiceGetFunnelAnalyticsResponses, unknown, ThrowOnError>({\n url: '/analytics/v1/funnels',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * GetRetentionAnalytics\n */\nexport const analyticsV1FunnelsServiceGetRetentionAnalytics = <ThrowOnError extends boolean = false>(options: Options<AnalyticsV1FunnelsServiceGetRetentionAnalyticsData, ThrowOnError>) => (options.client ?? client).post<AnalyticsV1FunnelsServiceGetRetentionAnalyticsResponses, unknown, ThrowOnError>({\n url: '/analytics/v1/retention',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * GetVideoHeatmap\n */\nexport const analyticsV1HeatmapServiceGetVideoHeatmap = <ThrowOnError extends boolean = false>(options: Options<AnalyticsV1HeatmapServiceGetVideoHeatmapData, ThrowOnError>) => (options.client ?? client).get<AnalyticsV1HeatmapServiceGetVideoHeatmapResponses, unknown, ThrowOnError>({ url: '/analytics/v1/videos/{video_id}/heatmap', ...options });\n\n/**\n * GetHotSegments\n */\nexport const analyticsV1HeatmapServiceGetHotSegments = <ThrowOnError extends boolean = false>(options: Options<AnalyticsV1HeatmapServiceGetHotSegmentsData, ThrowOnError>) => (options.client ?? client).get<AnalyticsV1HeatmapServiceGetHotSegmentsResponses, unknown, ThrowOnError>({ url: '/analytics/v1/videos/{video_id}/hot-segments', ...options });\n\n/**\n * GetPostStats\n */\nexport const analyticsV1PostsServiceGetPostStats = <ThrowOnError extends boolean = false>(options: Options<AnalyticsV1PostsServiceGetPostStatsData, ThrowOnError>) => (options.client ?? client).get<AnalyticsV1PostsServiceGetPostStatsResponses, unknown, ThrowOnError>({ url: '/analytics/v1/posts/{post_id}/stats', ...options });\n\n/**\n * GetTopPosts\n */\nexport const analyticsV1PostsServiceGetTopPosts = <ThrowOnError extends boolean = false>(options?: Options<AnalyticsV1PostsServiceGetTopPostsData, ThrowOnError>) => (options?.client ?? client).get<AnalyticsV1PostsServiceGetTopPostsResponses, unknown, ThrowOnError>({ url: '/analytics/v1/top/posts', ...options });\n\n/**\n * GetRealtimeStats\n */\nexport const analyticsV1RealtimeServiceGetRealtimeStats = <ThrowOnError extends boolean = false>(options?: Options<AnalyticsV1RealtimeServiceGetRealtimeStatsData, ThrowOnError>) => (options?.client ?? client).get<AnalyticsV1RealtimeServiceGetRealtimeStatsResponses, unknown, ThrowOnError>({ url: '/analytics/v1/realtime', ...options });\n\n/**\n * GetTopVideos\n */\nexport const analyticsV1VideosServiceGetTopVideos = <ThrowOnError extends boolean = false>(options?: Options<AnalyticsV1VideosServiceGetTopVideosData, ThrowOnError>) => (options?.client ?? client).get<AnalyticsV1VideosServiceGetTopVideosResponses, unknown, ThrowOnError>({ url: '/analytics/v1/top/videos', ...options });\n\n/**\n * GetVideoStats\n */\nexport const analyticsV1VideosServiceGetVideoStats = <ThrowOnError extends boolean = false>(options: Options<AnalyticsV1VideosServiceGetVideoStatsData, ThrowOnError>) => (options.client ?? client).get<AnalyticsV1VideosServiceGetVideoStatsResponses, unknown, ThrowOnError>({ url: '/analytics/v1/videos/{video_id}/stats', ...options });\n\n/**\n * ListApiKeys\n */\nexport const apikeysV1ApiKeyServiceListApiKeys = <ThrowOnError extends boolean = false>(options: Options<ApikeysV1ApiKeyServiceListApiKeysData, ThrowOnError>) => (options.client ?? client).get<ApikeysV1ApiKeyServiceListApiKeysResponses, unknown, ThrowOnError>({ url: '/organizations/{org_id}/api-keys/v1', ...options });\n\n/**\n * CreateApiKey\n */\nexport const apikeysV1ApiKeyServiceCreateApiKey = <ThrowOnError extends boolean = false>(options: Options<ApikeysV1ApiKeyServiceCreateApiKeyData, ThrowOnError>) => (options.client ?? client).post<ApikeysV1ApiKeyServiceCreateApiKeyResponses, unknown, ThrowOnError>({\n url: '/organizations/{org_id}/api-keys/v1',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * DeleteApiKey\n */\nexport const apikeysV1ApiKeyServiceDeleteApiKey = <ThrowOnError extends boolean = false>(options: Options<ApikeysV1ApiKeyServiceDeleteApiKeyData, ThrowOnError>) => (options.client ?? client).delete<ApikeysV1ApiKeyServiceDeleteApiKeyResponses, unknown, ThrowOnError>({ url: '/organizations/{org_id}/api-keys/v1/{key_id}', ...options });\n\n/**\n * RotateApiKey\n */\nexport const apikeysV1ApiKeyServiceRotateApiKey = <ThrowOnError extends boolean = false>(options: Options<ApikeysV1ApiKeyServiceRotateApiKeyData, ThrowOnError>) => (options.client ?? client).post<ApikeysV1ApiKeyServiceRotateApiKeyResponses, unknown, ThrowOnError>({ url: '/organizations/{org_id}/api-keys/v1/{key_id}/rotate', ...options });\n\n/**\n * SendBlogBroadcast\n */\nexport const authV1BlogServiceSendBlogBroadcast = <ThrowOnError extends boolean = false>(options: Options<AuthV1BlogServiceSendBlogBroadcastData, ThrowOnError>) => (options.client ?? client).post<AuthV1BlogServiceSendBlogBroadcastResponses, unknown, ThrowOnError>({\n url: '/auth/v1/blog/broadcast',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * SubscribeBlog\n */\nexport const authV1BlogServiceSubscribeBlog = <ThrowOnError extends boolean = false>(options?: Options<AuthV1BlogServiceSubscribeBlogData, ThrowOnError>) => (options?.client ?? client).post<AuthV1BlogServiceSubscribeBlogResponses, unknown, ThrowOnError>({ url: '/auth/v1/blog/subscribe', ...options });\n\n/**\n * GetBlogSubscription\n */\nexport const authV1BlogServiceGetBlogSubscription = <ThrowOnError extends boolean = false>(options?: Options<AuthV1BlogServiceGetBlogSubscriptionData, ThrowOnError>) => (options?.client ?? client).get<AuthV1BlogServiceGetBlogSubscriptionResponses, unknown, ThrowOnError>({ url: '/auth/v1/blog/subscription', ...options });\n\n/**\n * UnsubscribeBlog\n */\nexport const authV1BlogServiceUnsubscribeBlog = <ThrowOnError extends boolean = false>(options?: Options<AuthV1BlogServiceUnsubscribeBlogData, ThrowOnError>) => (options?.client ?? client).post<AuthV1BlogServiceUnsubscribeBlogResponses, unknown, ThrowOnError>({ url: '/auth/v1/blog/unsubscribe', ...options });\n\n/**\n * UnsubscribeBlogByEmail\n */\nexport const authV1BlogServiceUnsubscribeBlogByEmail = <ThrowOnError extends boolean = false>(options: Options<AuthV1BlogServiceUnsubscribeBlogByEmailData, ThrowOnError>) => (options.client ?? client).post<AuthV1BlogServiceUnsubscribeBlogByEmailResponses, unknown, ThrowOnError>({\n url: '/auth/v1/blog/unsubscribe/email',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * RemoveDomain\n */\nexport const authV1DomainServiceRemoveDomain = <ThrowOnError extends boolean = false>(options: Options<AuthV1DomainServiceRemoveDomainData, ThrowOnError>) => (options.client ?? client).delete<AuthV1DomainServiceRemoveDomainResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{org_id}/domain', ...options });\n\n/**\n * GetDomainStatus\n */\nexport const authV1DomainServiceGetDomainStatus = <ThrowOnError extends boolean = false>(options: Options<AuthV1DomainServiceGetDomainStatusData, ThrowOnError>) => (options.client ?? client).get<AuthV1DomainServiceGetDomainStatusResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{org_id}/domain', ...options });\n\n/**\n * GetDomainAutoJoin\n */\nexport const authV1DomainServiceGetDomainAutoJoin = <ThrowOnError extends boolean = false>(options: Options<AuthV1DomainServiceGetDomainAutoJoinData, ThrowOnError>) => (options.client ?? client).get<AuthV1DomainServiceGetDomainAutoJoinResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{org_id}/domain/auto-join', ...options });\n\n/**\n * CheckDomainVerification\n */\nexport const authV1DomainServiceCheckDomainVerification = <ThrowOnError extends boolean = false>(options: Options<AuthV1DomainServiceCheckDomainVerificationData, ThrowOnError>) => (options.client ?? client).post<AuthV1DomainServiceCheckDomainVerificationResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{org_id}/domain/verify', ...options });\n\n/**\n * CreateDomainVerification\n */\nexport const authV1DomainServiceCreateDomainVerification = <ThrowOnError extends boolean = false>(options: Options<AuthV1DomainServiceCreateDomainVerificationData, ThrowOnError>) => (options.client ?? client).post<AuthV1DomainServiceCreateDomainVerificationResponses, unknown, ThrowOnError>({\n url: '/auth/v1/memberships/{user.org_id}/domain',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * SetDomainAutoJoin\n */\nexport const authV1DomainServiceSetDomainAutoJoin = <ThrowOnError extends boolean = false>(options: Options<AuthV1DomainServiceSetDomainAutoJoinData, ThrowOnError>) => (options.client ?? client).put<AuthV1DomainServiceSetDomainAutoJoinResponses, unknown, ThrowOnError>({\n url: '/auth/v1/memberships/{user.org_id}/domain/auto-join',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * AcceptInvitation\n */\nexport const authV1MembershipServiceAcceptInvitation = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceAcceptInvitationData, ThrowOnError>) => (options.client ?? client).post<AuthV1MembershipServiceAcceptInvitationResponses, unknown, ThrowOnError>({ url: '/auth/v1/invitations/{token}/accept', ...options });\n\n/**\n * DeclineInvitation\n */\nexport const authV1MembershipServiceDeclineInvitation = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceDeclineInvitationData, ThrowOnError>) => (options.client ?? client).post<AuthV1MembershipServiceDeclineInvitationResponses, unknown, ThrowOnError>({ url: '/auth/v1/invitations/{token}/decline', ...options });\n\n/**\n * ListMembershipApplications\n */\nexport const authV1MembershipServiceListMembershipApplications = <ThrowOnError extends boolean = false>(options?: Options<AuthV1MembershipServiceListMembershipApplicationsData, ThrowOnError>) => (options?.client ?? client).get<AuthV1MembershipServiceListMembershipApplicationsResponses, unknown, ThrowOnError>({ url: '/auth/v1/membership-applications', ...options });\n\n/**\n * ListMemberships\n */\nexport const authV1MembershipServiceListMemberships = <ThrowOnError extends boolean = false>(options?: Options<AuthV1MembershipServiceListMembershipsData, ThrowOnError>) => (options?.client ?? client).get<AuthV1MembershipServiceListMembershipsResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships', ...options });\n\n/**\n * UpdateActiveMembership\n */\nexport const authV1MembershipServiceUpdateActiveMembership = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceUpdateActiveMembershipData, ThrowOnError>) => (options.client ?? client).patch<AuthV1MembershipServiceUpdateActiveMembershipResponses, unknown, ThrowOnError>({\n url: '/auth/v1/memberships/active',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * CheckMembership\n */\nexport const authV1MembershipServiceCheckMembership = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceCheckMembershipData, ThrowOnError>) => (options.client ?? client).get<AuthV1MembershipServiceCheckMembershipResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{org_id}/check', ...options });\n\n/**\n * GetInternalMembershipInfo\n */\nexport const authV1MembershipServiceGetInternalMembershipInfo = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceGetInternalMembershipInfoData, ThrowOnError>) => (options.client ?? client).get<AuthV1MembershipServiceGetInternalMembershipInfoResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{org_id}/info', ...options });\n\n/**\n * LeaveOrganization\n */\nexport const authV1MembershipServiceLeaveOrganization = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceLeaveOrganizationData, ThrowOnError>) => (options.client ?? client).post<AuthV1MembershipServiceLeaveOrganizationResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{org_id}/leave', ...options });\n\n/**\n * InviteMember\n */\nexport const authV1MembershipServiceInviteMember = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceInviteMemberData, ThrowOnError>) => (options.client ?? client).post<AuthV1MembershipServiceInviteMemberResponses, unknown, ThrowOnError>({\n url: '/auth/v1/memberships/{user.org_id}/invite',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * ResendInvitation\n */\nexport const authV1MembershipServiceResendInvitation = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceResendInvitationData, ThrowOnError>) => (options.client ?? client).post<AuthV1MembershipServiceResendInvitationResponses, unknown, ThrowOnError>({\n url: '/auth/v1/memberships/{user.org_id}/invite/resend',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * CancelInvitation\n */\nexport const authV1MembershipServiceCancelInvitation = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceCancelInvitationData, ThrowOnError>) => (options.client ?? client).delete<AuthV1MembershipServiceCancelInvitationResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{user.org_id}/invite/{user_id}', ...options });\n\n/**\n * ListOrganizationMembers\n */\nexport const authV1MembershipServiceListOrganizationMembers = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceListOrganizationMembersData, ThrowOnError>) => (options.client ?? client).get<AuthV1MembershipServiceListOrganizationMembersResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{user.org_id}/members', ...options });\n\n/**\n * RemoveMember\n */\nexport const authV1MembershipServiceRemoveMember = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceRemoveMemberData, ThrowOnError>) => (options.client ?? client).delete<AuthV1MembershipServiceRemoveMemberResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{user.org_id}/members/{user_id}', ...options });\n\n/**\n * ReactivateMember\n */\nexport const authV1MembershipServiceReactivateMember = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceReactivateMemberData, ThrowOnError>) => (options.client ?? client).patch<AuthV1MembershipServiceReactivateMemberResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{user.org_id}/members/{user_id}/reactivate', ...options });\n\n/**\n * UpdateMemberRole\n */\nexport const authV1MembershipServiceUpdateMemberRole = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceUpdateMemberRoleData, ThrowOnError>) => (options.client ?? client).patch<AuthV1MembershipServiceUpdateMemberRoleResponses, unknown, ThrowOnError>({\n url: '/auth/v1/memberships/{user.org_id}/members/{user_id}/role',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * SuspendMember\n */\nexport const authV1MembershipServiceSuspendMember = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceSuspendMemberData, ThrowOnError>) => (options.client ?? client).patch<AuthV1MembershipServiceSuspendMemberResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{user.org_id}/members/{user_id}/suspend', ...options });\n\n/**\n * UpdateOrgName\n */\nexport const authV1MembershipServiceUpdateOrgName = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceUpdateOrgNameData, ThrowOnError>) => (options.client ?? client).patch<AuthV1MembershipServiceUpdateOrgNameResponses, unknown, ThrowOnError>({\n url: '/auth/v1/memberships/{user.org_id}/name',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * UpdateMembershipState\n */\nexport const authV1MembershipServiceUpdateMembershipState = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceUpdateMembershipStateData, ThrowOnError>) => (options.client ?? client).patch<AuthV1MembershipServiceUpdateMembershipStateResponses, unknown, ThrowOnError>({\n url: '/auth/v1/memberships/{user.org_id}/state',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * UpdateOrgUsername\n */\nexport const authV1MembershipServiceUpdateOrgUsername = <ThrowOnError extends boolean = false>(options: Options<AuthV1MembershipServiceUpdateOrgUsernameData, ThrowOnError>) => (options.client ?? client).patch<AuthV1MembershipServiceUpdateOrgUsernameResponses, unknown, ThrowOnError>({\n url: '/auth/v1/memberships/{user.org_id}/username',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * DeleteOTP\n */\nexport const authV1OtpServiceDeleteOtp = <ThrowOnError extends boolean = false>(options?: Options<AuthV1OtpServiceDeleteOtpData, ThrowOnError>) => (options?.client ?? client).delete<AuthV1OtpServiceDeleteOtpResponses, unknown, ThrowOnError>({ url: '/auth/v1/users/current/totp/delete', ...options });\n\n/**\n * SetupOTP\n */\nexport const authV1OtpServiceSetupOtp = <ThrowOnError extends boolean = false>(options?: Options<AuthV1OtpServiceSetupOtpData, ThrowOnError>) => (options?.client ?? client).post<AuthV1OtpServiceSetupOtpResponses, unknown, ThrowOnError>({ url: '/auth/v1/users/current/totp/setup', ...options });\n\n/**\n * GetOTPStatus\n */\nexport const authV1OtpServiceGetOtpStatus = <ThrowOnError extends boolean = false>(options?: Options<AuthV1OtpServiceGetOtpStatusData, ThrowOnError>) => (options?.client ?? client).get<AuthV1OtpServiceGetOtpStatusResponses, unknown, ThrowOnError>({ url: '/auth/v1/users/current/totp/status', ...options });\n\n/**\n * VerifyOTP\n */\nexport const authV1OtpServiceVerifyOtp = <ThrowOnError extends boolean = false>(options: Options<AuthV1OtpServiceVerifyOtpData, ThrowOnError>) => (options.client ?? client).post<AuthV1OtpServiceVerifyOtpResponses, unknown, ThrowOnError>({\n url: '/auth/v1/users/current/totp/verify',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * VerifyTOTPForLogin\n */\nexport const authV1OtpServiceVerifyTotpForLogin = <ThrowOnError extends boolean = false>(options: Options<AuthV1OtpServiceVerifyTotpForLoginData, ThrowOnError>) => (options.client ?? client).post<AuthV1OtpServiceVerifyTotpForLoginResponses, unknown, ThrowOnError>({\n url: '/auth/v1/verify-totp',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * PasskeyLoginBegin\n */\nexport const authV1PasskeyServicePasskeyLoginBegin = <ThrowOnError extends boolean = false>(options: Options<AuthV1PasskeyServicePasskeyLoginBeginData, ThrowOnError>) => (options.client ?? client).post<AuthV1PasskeyServicePasskeyLoginBeginResponses, unknown, ThrowOnError>({\n url: '/auth/v1/passkey/login/begin',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * PasskeyLoginFinish\n */\nexport const authV1PasskeyServicePasskeyLoginFinish = <ThrowOnError extends boolean = false>(options: Options<AuthV1PasskeyServicePasskeyLoginFinishData, ThrowOnError>) => (options.client ?? client).post<AuthV1PasskeyServicePasskeyLoginFinishResponses, unknown, ThrowOnError>({\n url: '/auth/v1/passkey/login/finish',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * ListPasskeys\n */\nexport const authV1PasskeyServiceListPasskeys = <ThrowOnError extends boolean = false>(options?: Options<AuthV1PasskeyServiceListPasskeysData, ThrowOnError>) => (options?.client ?? client).get<AuthV1PasskeyServiceListPasskeysResponses, unknown, ThrowOnError>({ url: '/auth/v1/users/current/passkeys', ...options });\n\n/**\n * PasskeyRegisterBegin\n */\nexport const authV1PasskeyServicePasskeyRegisterBegin = <ThrowOnError extends boolean = false>(options: Options<AuthV1PasskeyServicePasskeyRegisterBeginData, ThrowOnError>) => (options.client ?? client).post<AuthV1PasskeyServicePasskeyRegisterBeginResponses, unknown, ThrowOnError>({\n url: '/auth/v1/users/current/passkeys/register/begin',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * PasskeyRegisterFinish\n */\nexport const authV1PasskeyServicePasskeyRegisterFinish = <ThrowOnError extends boolean = false>(options: Options<AuthV1PasskeyServicePasskeyRegisterFinishData, ThrowOnError>) => (options.client ?? client).post<AuthV1PasskeyServicePasskeyRegisterFinishResponses, unknown, ThrowOnError>({\n url: '/auth/v1/users/current/passkeys/register/finish',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * DeletePasskey\n */\nexport const authV1PasskeyServiceDeletePasskey = <ThrowOnError extends boolean = false>(options: Options<AuthV1PasskeyServiceDeletePasskeyData, ThrowOnError>) => (options.client ?? client).delete<AuthV1PasskeyServiceDeletePasskeyResponses, unknown, ThrowOnError>({ url: '/auth/v1/users/current/passkeys/{id}', ...options });\n\n/**\n * RenamePasskey\n */\nexport const authV1PasskeyServiceRenamePasskey = <ThrowOnError extends boolean = false>(options: Options<AuthV1PasskeyServiceRenamePasskeyData, ThrowOnError>) => (options.client ?? client).patch<AuthV1PasskeyServiceRenamePasskeyResponses, unknown, ThrowOnError>({\n url: '/auth/v1/users/current/passkeys/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * VerifyPasskeyForLogin\n */\nexport const authV1PasskeyServiceVerifyPasskeyForLogin = <ThrowOnError extends boolean = false>(options: Options<AuthV1PasskeyServiceVerifyPasskeyForLoginData, ThrowOnError>) => (options.client ?? client).post<AuthV1PasskeyServiceVerifyPasskeyForLoginResponses, unknown, ThrowOnError>({\n url: '/auth/v1/verify-passkey',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * ListPolicies\n */\nexport const authV1PolicyServiceListPolicies = <ThrowOnError extends boolean = false>(options: Options<AuthV1PolicyServiceListPoliciesData, ThrowOnError>) => (options.client ?? client).get<AuthV1PolicyServiceListPoliciesResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{org_id}/policies', ...options });\n\n/**\n * ListUserPolicies\n */\nexport const authV1PolicyServiceListUserPolicies = <ThrowOnError extends boolean = false>(options: Options<AuthV1PolicyServiceListUserPoliciesData, ThrowOnError>) => (options.client ?? client).get<AuthV1PolicyServiceListUserPoliciesResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{user.org_id}/members/{member_id}/policies', ...options });\n\n/**\n * CreatePolicy\n */\nexport const authV1PolicyServiceCreatePolicy = <ThrowOnError extends boolean = false>(options: Options<AuthV1PolicyServiceCreatePolicyData, ThrowOnError>) => (options.client ?? client).post<AuthV1PolicyServiceCreatePolicyResponses, unknown, ThrowOnError>({\n url: '/auth/v1/memberships/{user.org_id}/policies',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * DetachPolicy\n */\nexport const authV1PolicyServiceDetachPolicy = <ThrowOnError extends boolean = false>(options: Options<AuthV1PolicyServiceDetachPolicyData, ThrowOnError>) => (options.client ?? client).delete<AuthV1PolicyServiceDetachPolicyResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{user.org_id}/policies/attachments/{attachment_id}', ...options });\n\n/**\n * DeletePolicy\n */\nexport const authV1PolicyServiceDeletePolicy = <ThrowOnError extends boolean = false>(options: Options<AuthV1PolicyServiceDeletePolicyData, ThrowOnError>) => (options.client ?? client).delete<AuthV1PolicyServiceDeletePolicyResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{user.org_id}/policies/{policy_id}', ...options });\n\n/**\n * GetPolicy\n */\nexport const authV1PolicyServiceGetPolicy = <ThrowOnError extends boolean = false>(options: Options<AuthV1PolicyServiceGetPolicyData, ThrowOnError>) => (options.client ?? client).get<AuthV1PolicyServiceGetPolicyResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{user.org_id}/policies/{policy_id}', ...options });\n\n/**\n * UpdatePolicy\n */\nexport const authV1PolicyServiceUpdatePolicy = <ThrowOnError extends boolean = false>(options: Options<AuthV1PolicyServiceUpdatePolicyData, ThrowOnError>) => (options.client ?? client).put<AuthV1PolicyServiceUpdatePolicyResponses, unknown, ThrowOnError>({\n url: '/auth/v1/memberships/{user.org_id}/policies/{policy_id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * ListPolicyAttachments\n */\nexport const authV1PolicyServiceListPolicyAttachments = <ThrowOnError extends boolean = false>(options: Options<AuthV1PolicyServiceListPolicyAttachmentsData, ThrowOnError>) => (options.client ?? client).get<AuthV1PolicyServiceListPolicyAttachmentsResponses, unknown, ThrowOnError>({ url: '/auth/v1/memberships/{user.org_id}/policies/{policy_id}/attachments', ...options });\n\n/**\n * AttachPolicy\n */\nexport const authV1PolicyServiceAttachPolicy = <ThrowOnError extends boolean = false>(options: Options<AuthV1PolicyServiceAttachPolicyData, ThrowOnError>) => (options.client ?? client).post<AuthV1PolicyServiceAttachPolicyResponses, unknown, ThrowOnError>({\n url: '/auth/v1/memberships/{user.org_id}/policies/{policy_id}/attachments',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * ListPermissionRegistry\n */\nexport const authV1PolicyServiceListPermissionRegistry = <ThrowOnError extends boolean = false>(options?: Options<AuthV1PolicyServiceListPermissionRegistryData, ThrowOnError>) => (options?.client ?? client).get<AuthV1PolicyServiceListPermissionRegistryResponses, unknown, ThrowOnError>({ url: '/auth/v1/policies/permissions', ...options });\n\n/**\n * ListProviders\n */\nexport const authV1ProvidersServiceListProviders = <ThrowOnError extends boolean = false>(options?: Options<AuthV1ProvidersServiceListProvidersData, ThrowOnError>) => (options?.client ?? client).get<AuthV1ProvidersServiceListProvidersResponses, unknown, ThrowOnError>({ url: '/auth/v1/providers', ...options });\n\n/**\n * ConnectProvider\n */\nexport const authV1ProvidersServiceConnectProvider = <ThrowOnError extends boolean = false>(options: Options<AuthV1ProvidersServiceConnectProviderData, ThrowOnError>) => (options.client ?? client).post<AuthV1ProvidersServiceConnectProviderResponses, unknown, ThrowOnError>({\n url: '/auth/v1/providers/connect',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * DisconnectProvider\n */\nexport const authV1ProvidersServiceDisconnectProvider = <ThrowOnError extends boolean = false>(options: Options<AuthV1ProvidersServiceDisconnectProviderData, ThrowOnError>) => (options.client ?? client).delete<AuthV1ProvidersServiceDisconnectProviderResponses, unknown, ThrowOnError>({ url: '/auth/v1/providers/{provider}', ...options });\n\n/**\n * VerifyEmail\n */\nexport const authV1EmailServiceVerifyEmail = <ThrowOnError extends boolean = false>(options: Options<AuthV1EmailServiceVerifyEmailData, ThrowOnError>) => (options.client ?? client).post<AuthV1EmailServiceVerifyEmailResponses, unknown, ThrowOnError>({\n url: '/auth/v1/email/verify',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * ResendVerification\n */\nexport const authV1EmailServiceResendVerification = <ThrowOnError extends boolean = false>(options: Options<AuthV1EmailServiceResendVerificationData, ThrowOnError>) => (options.client ?? client).post<AuthV1EmailServiceResendVerificationResponses, unknown, ThrowOnError>({\n url: '/auth/v1/email/verify/resend',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Login\n */\nexport const authV1EmailServiceLogin = <ThrowOnError extends boolean = false>(options: Options<AuthV1EmailServiceLoginData, ThrowOnError>) => (options.client ?? client).post<AuthV1EmailServiceLoginResponses, unknown, ThrowOnError>({\n url: '/auth/v1/login',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Logout\n */\nexport const authV1TokenServiceLogout = <ThrowOnError extends boolean = false>(options: Options<AuthV1TokenServiceLogoutData, ThrowOnError>) => (options.client ?? client).post<AuthV1TokenServiceLogoutResponses, unknown, ThrowOnError>({\n url: '/auth/v1/logout',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * SendPasswordReset\n */\nexport const authV1EmailServiceSendPasswordReset = <ThrowOnError extends boolean = false>(options: Options<AuthV1EmailServiceSendPasswordResetData, ThrowOnError>) => (options.client ?? client).post<AuthV1EmailServiceSendPasswordResetResponses, unknown, ThrowOnError>({\n url: '/auth/v1/password/reset',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * ResetPassword\n */\nexport const authV1EmailServiceResetPassword = <ThrowOnError extends boolean = false>(options: Options<AuthV1EmailServiceResetPasswordData, ThrowOnError>) => (options.client ?? client).post<AuthV1EmailServiceResetPasswordResponses, unknown, ThrowOnError>({\n url: '/auth/v1/password/reset/confirm',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Register\n */\nexport const authV1EmailServiceRegister = <ThrowOnError extends boolean = false>(options: Options<AuthV1EmailServiceRegisterData, ThrowOnError>) => (options.client ?? client).post<AuthV1EmailServiceRegisterResponses, unknown, ThrowOnError>({\n url: '/auth/v1/register',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * RefreshToken\n */\nexport const authV1TokenServiceRefreshToken = <ThrowOnError extends boolean = false>(options: Options<AuthV1TokenServiceRefreshTokenData, ThrowOnError>) => (options.client ?? client).post<AuthV1TokenServiceRefreshTokenResponses, unknown, ThrowOnError>({\n url: '/auth/v1/token',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * AddEmail\n */\nexport const authV1EmailServiceAddEmail = <ThrowOnError extends boolean = false>(options: Options<AuthV1EmailServiceAddEmailData, ThrowOnError>) => (options.client ?? client).post<AuthV1EmailServiceAddEmailResponses, unknown, ThrowOnError>({\n url: '/auth/v1/users/current/emails',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * InitiateEmailChange\n */\nexport const authV1EmailServiceInitiateEmailChange = <ThrowOnError extends boolean = false>(options: Options<AuthV1EmailServiceInitiateEmailChangeData, ThrowOnError>) => (options.client ?? client).put<AuthV1EmailServiceInitiateEmailChangeResponses, unknown, ThrowOnError>({\n url: '/auth/v1/users/current/emails/change',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * GetUserEmailStatus\n */\nexport const authV1EmailServiceGetUserEmailStatus = <ThrowOnError extends boolean = false>(options?: Options<AuthV1EmailServiceGetUserEmailStatusData, ThrowOnError>) => (options?.client ?? client).get<AuthV1EmailServiceGetUserEmailStatusResponses, unknown, ThrowOnError>({ url: '/auth/v1/users/current/emails/status', ...options });\n\n/**\n * GetUserInfo\n */\nexport const authV1UserServiceGetUserInfo = <ThrowOnError extends boolean = false>(options?: Options<AuthV1UserServiceGetUserInfoData, ThrowOnError>) => (options?.client ?? client).get<AuthV1UserServiceGetUserInfoResponses, unknown, ThrowOnError>({ url: '/auth/v1/userinfo', ...options });\n\n/**\n * GetUser\n */\nexport const authV1UserServiceGetUser = <ThrowOnError extends boolean = false>(options?: Options<AuthV1UserServiceGetUserData, ThrowOnError>) => (options?.client ?? client).get<AuthV1UserServiceGetUserResponses, unknown, ThrowOnError>({ url: '/auth/v1/users/current', ...options });\n\n/**\n * UpdateName\n */\nexport const authV1UserServiceUpdateName = <ThrowOnError extends boolean = false>(options: Options<AuthV1UserServiceUpdateNameData, ThrowOnError>) => (options.client ?? client).patch<AuthV1UserServiceUpdateNameResponses, unknown, ThrowOnError>({\n url: '/auth/v1/users/current/name',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * UpdateUsername\n */\nexport const authV1UserServiceUpdateUsername = <ThrowOnError extends boolean = false>(options: Options<AuthV1UserServiceUpdateUsernameData, ThrowOnError>) => (options.client ?? client).patch<AuthV1UserServiceUpdateUsernameResponses, unknown, ThrowOnError>({\n url: '/auth/v1/users/current/username',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * ListInvoices\n */\nexport const billingV1InvoiceServiceListInvoices = <ThrowOnError extends boolean = false>(options?: Options<BillingV1InvoiceServiceListInvoicesData, ThrowOnError>) => (options?.client ?? client).get<BillingV1InvoiceServiceListInvoicesResponses, unknown, ThrowOnError>({ url: '/billing/v1/invoices', ...options });\n\n/**\n * UpdateInvoiceStatus\n */\nexport const billingV1InvoiceServiceUpdateInvoiceStatus = <ThrowOnError extends boolean = false>(options: Options<BillingV1InvoiceServiceUpdateInvoiceStatusData, ThrowOnError>) => (options.client ?? client).patch<BillingV1InvoiceServiceUpdateInvoiceStatusResponses, unknown, ThrowOnError>({\n url: '/billing/v1/invoices/{invoice_id}/status',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * GetBillingAddress\n */\nexport const billingV1PaymentServiceGetBillingAddress = <ThrowOnError extends boolean = false>(options?: Options<BillingV1PaymentServiceGetBillingAddressData, ThrowOnError>) => (options?.client ?? client).get<BillingV1PaymentServiceGetBillingAddressResponses, unknown, ThrowOnError>({ url: '/billing/v1/address', ...options });\n\n/**\n * UpsertBillingAddress\n */\nexport const billingV1PaymentServiceUpsertBillingAddress = <ThrowOnError extends boolean = false>(options: Options<BillingV1PaymentServiceUpsertBillingAddressData, ThrowOnError>) => (options.client ?? client).put<BillingV1PaymentServiceUpsertBillingAddressResponses, unknown, ThrowOnError>({\n url: '/billing/v1/address',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * CreateCheckoutSession\n */\nexport const billingV1PaymentServiceCreateCheckoutSession = <ThrowOnError extends boolean = false>(options: Options<BillingV1PaymentServiceCreateCheckoutSessionData, ThrowOnError>) => (options.client ?? client).post<BillingV1PaymentServiceCreateCheckoutSessionResponses, unknown, ThrowOnError>({\n url: '/billing/v1/checkout',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * ListPaymentMethods\n */\nexport const billingV1PaymentServiceListPaymentMethods = <ThrowOnError extends boolean = false>(options?: Options<BillingV1PaymentServiceListPaymentMethodsData, ThrowOnError>) => (options?.client ?? client).get<BillingV1PaymentServiceListPaymentMethodsResponses, unknown, ThrowOnError>({ url: '/billing/v1/payment-methods', ...options });\n\n/**\n * UpsertPaymentMethod\n */\nexport const billingV1PaymentServiceUpsertPaymentMethod = <ThrowOnError extends boolean = false>(options: Options<BillingV1PaymentServiceUpsertPaymentMethodData, ThrowOnError>) => (options.client ?? client).put<BillingV1PaymentServiceUpsertPaymentMethodResponses, unknown, ThrowOnError>({\n url: '/billing/v1/payment-methods',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * GetPaymentMethodFromPaymentIntent\n */\nexport const billingV1PaymentServiceGetPaymentMethodFromPaymentIntent = <ThrowOnError extends boolean = false>(options?: Options<BillingV1PaymentServiceGetPaymentMethodFromPaymentIntentData, ThrowOnError>) => (options?.client ?? client).get<BillingV1PaymentServiceGetPaymentMethodFromPaymentIntentResponses, unknown, ThrowOnError>({ url: '/billing/v1/payment-methods/from-payment-intent', ...options });\n\n/**\n * GetPaymentMethodFromSetupIntent\n */\nexport const billingV1PaymentServiceGetPaymentMethodFromSetupIntent = <ThrowOnError extends boolean = false>(options?: Options<BillingV1PaymentServiceGetPaymentMethodFromSetupIntentData, ThrowOnError>) => (options?.client ?? client).get<BillingV1PaymentServiceGetPaymentMethodFromSetupIntentResponses, unknown, ThrowOnError>({ url: '/billing/v1/payment-methods/from-setup-intent', ...options });\n\n/**\n * DeletePaymentMethod\n */\nexport const billingV1PaymentServiceDeletePaymentMethod = <ThrowOnError extends boolean = false>(options: Options<BillingV1PaymentServiceDeletePaymentMethodData, ThrowOnError>) => (options.client ?? client).delete<BillingV1PaymentServiceDeletePaymentMethodResponses, unknown, ThrowOnError>({ url: '/billing/v1/payment-methods/{payment_method_id}', ...options });\n\n/**\n * CreateSetupIntent\n */\nexport const billingV1PaymentServiceCreateSetupIntent = <ThrowOnError extends boolean = false>(options: Options<BillingV1PaymentServiceCreateSetupIntentData, ThrowOnError>) => (options.client ?? client).post<BillingV1PaymentServiceCreateSetupIntentResponses, unknown, ThrowOnError>({\n url: '/billing/v1/setup-intent',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * UpgradeSubscription\n */\nexport const billingV1PaymentServiceUpgradeSubscription = <ThrowOnError extends boolean = false>(options: Options<BillingV1PaymentServiceUpgradeSubscriptionData, ThrowOnError>) => (options.client ?? client).post<BillingV1PaymentServiceUpgradeSubscriptionResponses, unknown, ThrowOnError>({\n url: '/billing/v1/subscription/upgrade',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * CalculateTax\n */\nexport const billingV1PaymentServiceCalculateTax = <ThrowOnError extends boolean = false>(options: Options<BillingV1PaymentServiceCalculateTaxData, ThrowOnError>) => (options.client ?? client).post<BillingV1PaymentServiceCalculateTaxResponses, unknown, ThrowOnError>({\n url: '/billing/v1/tax/calculate',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * CalculateGenericTax\n */\nexport const billingV1PaymentServiceCalculateGenericTax = <ThrowOnError extends boolean = false>(options: Options<BillingV1PaymentServiceCalculateGenericTaxData, ThrowOnError>) => (options.client ?? client).post<BillingV1PaymentServiceCalculateGenericTaxResponses, unknown, ThrowOnError>({\n url: '/billing/v1/tax/calculate-generic',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * ListPlans\n */\nexport const billingV1PlanServiceListPlans = <ThrowOnError extends boolean = false>(options?: Options<BillingV1PlanServiceListPlansData, ThrowOnError>) => (options?.client ?? client).get<BillingV1PlanServiceListPlansResponses, unknown, ThrowOnError>({ url: '/billing/v1/plans', ...options });\n\n/**\n * GetPlan\n */\nexport const billingV1PlanServiceGetPlan = <ThrowOnError extends boolean = false>(options: Options<BillingV1PlanServiceGetPlanData, ThrowOnError>) => (options.client ?? client).get<BillingV1PlanServiceGetPlanResponses, unknown, ThrowOnError>({ url: '/billing/v1/plans/{plan_id}', ...options });\n\n/**\n * ContactSales\n */\nexport const billingV1SalesServiceContactSales = <ThrowOnError extends boolean = false>(options: Options<BillingV1SalesServiceContactSalesData, ThrowOnError>) => (options.client ?? client).post<BillingV1SalesServiceContactSalesResponses, unknown, ThrowOnError>({\n url: '/billing/v1/contact-sales',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * GetSubscription\n */\nexport const billingV1SubscriptionServiceGetSubscription = <ThrowOnError extends boolean = false>(options?: Options<BillingV1SubscriptionServiceGetSubscriptionData, ThrowOnError>) => (options?.client ?? client).get<BillingV1SubscriptionServiceGetSubscriptionResponses, unknown, ThrowOnError>({ url: '/billing/v1/subscription', ...options });\n\n/**\n * CreateSubscription\n */\nexport const billingV1SubscriptionServiceCreateSubscription = <ThrowOnError extends boolean = false>(options: Options<BillingV1SubscriptionServiceCreateSubscriptionData, ThrowOnError>) => (options.client ?? client).post<BillingV1SubscriptionServiceCreateSubscriptionResponses, unknown, ThrowOnError>({\n url: '/billing/v1/subscription',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * CancelSubscription\n */\nexport const billingV1SubscriptionServiceCancelSubscription = <ThrowOnError extends boolean = false>(options?: Options<BillingV1SubscriptionServiceCancelSubscriptionData, ThrowOnError>) => (options?.client ?? client).post<BillingV1SubscriptionServiceCancelSubscriptionResponses, unknown, ThrowOnError>({ url: '/billing/v1/subscription/cancel', ...options });\n\n/**\n * GetSubscriptionHistory\n */\nexport const billingV1SubscriptionServiceGetSubscriptionHistory = <ThrowOnError extends boolean = false>(options?: Options<BillingV1SubscriptionServiceGetSubscriptionHistoryData, ThrowOnError>) => (options?.client ?? client).get<BillingV1SubscriptionServiceGetSubscriptionHistoryResponses, unknown, ThrowOnError>({ url: '/billing/v1/subscription/history', ...options });\n\n/**\n * ReactivateSubscription\n */\nexport const billingV1SubscriptionServiceReactivateSubscription = <ThrowOnError extends boolean = false>(options?: Options<BillingV1SubscriptionServiceReactivateSubscriptionData, ThrowOnError>) => (options?.client ?? client).post<BillingV1SubscriptionServiceReactivateSubscriptionResponses, unknown, ThrowOnError>({ url: '/billing/v1/subscription/reactivate', ...options });\n\n/**\n * GetBandwidthUsage\n */\nexport const billingV1UsageServiceGetBandwidthUsage = <ThrowOnError extends boolean = false>(options?: Options<BillingV1UsageServiceGetBandwidthUsageData, ThrowOnError>) => (options?.client ?? client).get<BillingV1UsageServiceGetBandwidthUsageResponses, unknown, ThrowOnError>({ url: '/billing/v1/bandwidth-usage', ...options });\n\n/**\n * GetBandwidthUsageHistory\n */\nexport const billingV1UsageServiceGetBandwidthUsageHistory = <ThrowOnError extends boolean = false>(options?: Options<BillingV1UsageServiceGetBandwidthUsageHistoryData, ThrowOnError>) => (options?.client ?? client).get<BillingV1UsageServiceGetBandwidthUsageHistoryResponses, unknown, ThrowOnError>({ url: '/billing/v1/bandwidth-usage/history', ...options });\n\n/**\n * RefreshBandwidthUsage\n */\nexport const billingV1UsageServiceRefreshBandwidthUsage = <ThrowOnError extends boolean = false>(options?: Options<BillingV1UsageServiceRefreshBandwidthUsageData, ThrowOnError>) => (options?.client ?? client).post<BillingV1UsageServiceRefreshBandwidthUsageResponses, unknown, ThrowOnError>({ url: '/billing/v1/bandwidth-usage/refresh', ...options });\n\n/**\n * GetStorageUsage\n */\nexport const billingV1UsageServiceGetStorageUsage = <ThrowOnError extends boolean = false>(options?: Options<BillingV1UsageServiceGetStorageUsageData, ThrowOnError>) => (options?.client ?? client).get<BillingV1UsageServiceGetStorageUsageResponses, unknown, ThrowOnError>({ url: '/billing/v1/storage-usage', ...options });\n\n/**\n * GetStorageUsageHistory\n */\nexport const billingV1UsageServiceGetStorageUsageHistory = <ThrowOnError extends boolean = false>(options?: Options<BillingV1UsageServiceGetStorageUsageHistoryData, ThrowOnError>) => (options?.client ?? client).get<BillingV1UsageServiceGetStorageUsageHistoryResponses, unknown, ThrowOnError>({ url: '/billing/v1/storage-usage/history', ...options });\n\n/**\n * RefreshStorageUsage\n */\nexport const billingV1UsageServiceRefreshStorageUsage = <ThrowOnError extends boolean = false>(options?: Options<BillingV1UsageServiceRefreshStorageUsageData, ThrowOnError>) => (options?.client ?? client).post<BillingV1UsageServiceRefreshStorageUsageResponses, unknown, ThrowOnError>({ url: '/billing/v1/storage-usage/refresh', ...options });\n\n/**\n * ListClientCredentials\n */\nexport const clientauthV1ClientCredentialServiceListClientCredentials = <ThrowOnError extends boolean = false>(options?: Options<ClientauthV1ClientCredentialServiceListClientCredentialsData, ThrowOnError>) => (options?.client ?? client).get<ClientauthV1ClientCredentialServiceListClientCredentialsResponses, unknown, ThrowOnError>({ url: '/platform/clientauth/v1/credentials', ...options });\n\n/**\n * CreateClientCredential\n */\nexport const clientauthV1ClientCredentialServiceCreateClientCredential = <ThrowOnError extends boolean = false>(options: Options<ClientauthV1ClientCredentialServiceCreateClientCredentialData, ThrowOnError>) => (options.client ?? client).post<ClientauthV1ClientCredentialServiceCreateClientCredentialResponses, unknown, ThrowOnError>({\n url: '/platform/clientauth/v1/credentials',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * RevokeClientCredential\n */\nexport const clientauthV1ClientCredentialServiceRevokeClientCredential = <ThrowOnError extends boolean = false>(options: Options<ClientauthV1ClientCredentialServiceRevokeClientCredentialData, ThrowOnError>) => (options.client ?? client).post<ClientauthV1ClientCredentialServiceRevokeClientCredentialResponses, unknown, ThrowOnError>({ url: '/platform/clientauth/v1/credentials/{credential_id}/revoke', ...options });\n\n/**\n * MintClientToken\n */\nexport const clientauthV1ClientCredentialServiceMintClientToken = <ThrowOnError extends boolean = false>(options: Options<ClientauthV1ClientCredentialServiceMintClientTokenData, ThrowOnError>) => (options.client ?? client).post<ClientauthV1ClientCredentialServiceMintClientTokenResponses, unknown, ThrowOnError>({\n url: '/platform/clientauth/v1/token',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * ListFeeds\n */\nexport const feedsV1FeedServiceListFeeds = <ThrowOnError extends boolean = false>(options: Options<FeedsV1FeedServiceListFeedsData, ThrowOnError>) => (options.client ?? client).get<FeedsV1FeedServiceListFeedsResponses, unknown, ThrowOnError>({ url: '/feeds/v1/projects/{project_id}/feeds', ...options });\n\n/**\n * CreateFeed\n */\nexport const feedsV1FeedServiceCreateFeed = <ThrowOnError extends boolean = false>(options: Options<FeedsV1FeedServiceCreateFeedData, ThrowOnError>) => (options.client ?? client).post<FeedsV1FeedServiceCreateFeedResponses, unknown, ThrowOnError>({\n url: '/feeds/v1/projects/{project_id}/feeds',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * DeleteFeed\n */\nexport const feedsV1FeedServiceDeleteFeed = <ThrowOnError extends boolean = false>(options: Options<FeedsV1FeedServiceDeleteFeedData, ThrowOnError>) => (options.client ?? client).delete<FeedsV1FeedServiceDeleteFeedResponses, unknown, ThrowOnError>({ url: '/feeds/v1/projects/{project_id}/feeds/{feed_id}', ...options });\n\n/**\n * GetFeed\n */\nexport const feedsV1FeedServiceGetFeed = <ThrowOnError extends boolean = false>(options: Options<FeedsV1FeedServiceGetFeedData, ThrowOnError>) => (options.client ?? client).get<FeedsV1FeedServiceGetFeedResponses, unknown, ThrowOnError>({ url: '/feeds/v1/projects/{project_id}/feeds/{feed_id}', ...options });\n\n/**\n * UpdateFeed\n */\nexport const feedsV1FeedServiceUpdateFeed = <ThrowOnError extends boolean = false>(options: Options<FeedsV1FeedServiceUpdateFeedData, ThrowOnError>) => (options.client ?? client).put<FeedsV1FeedServiceUpdateFeedResponses, unknown, ThrowOnError>({\n url: '/feeds/v1/projects/{project_id}/feeds/{feed_id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * MarkImageFailed\n */\nexport const imagesV1ImageConversionServiceMarkImageFailed = <ThrowOnError extends boolean = false>(options: Options<ImagesV1ImageConversionServiceMarkImageFailedData, ThrowOnError>) => (options.client ?? client).post<ImagesV1ImageConversionServiceMarkImageFailedResponses, unknown, ThrowOnError>({\n url: '/internal/images/mark-failed',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * MarkImageProcessed\n */\nexport const imagesV1ImageConversionServiceMarkImageProcessed = <ThrowOnError extends boolean = false>(options: Options<ImagesV1ImageConversionServiceMarkImageProcessedData, ThrowOnError>) => (options.client ?? client).post<ImagesV1ImageConversionServiceMarkImageProcessedResponses, unknown, ThrowOnError>({\n url: '/internal/images/mark-processed',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * TakeUnprocessedImage\n */\nexport const imagesV1ImageConversionServiceTakeUnprocessedImage = <ThrowOnError extends boolean = false>(options?: Options<ImagesV1ImageConversionServiceTakeUnprocessedImageData, ThrowOnError>) => (options?.client ?? client).post<ImagesV1ImageConversionServiceTakeUnprocessedImageResponses, unknown, ThrowOnError>({ url: '/internal/images/take', ...options });\n\n/**\n * GetImage\n */\nexport const imagesV1ImageServiceGetImage = <ThrowOnError extends boolean = false>(options: Options<ImagesV1ImageServiceGetImageData, ThrowOnError>) => (options.client ?? client).get<ImagesV1ImageServiceGetImageResponses, unknown, ThrowOnError>({ url: '/media/v1/images/{image_id}', ...options });\n\n/**\n * ListImages\n */\nexport const imagesV1ImageServiceListImages = <ThrowOnError extends boolean = false>(options: Options<ImagesV1ImageServiceListImagesData, ThrowOnError>) => (options.client ?? client).get<ImagesV1ImageServiceListImagesResponses, unknown, ThrowOnError>({ url: '/media/v1/projects/{project_id}/images', ...options });\n\n/**\n * CreateImageUpload\n */\nexport const imagesV1ImageServiceCreateImageUpload = <ThrowOnError extends boolean = false>(options: Options<ImagesV1ImageServiceCreateImageUploadData, ThrowOnError>) => (options.client ?? client).post<ImagesV1ImageServiceCreateImageUploadResponses, unknown, ThrowOnError>({\n url: '/media/v1/projects/{project_id}/images/upload',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * DeleteImage\n */\nexport const imagesV1ImageServiceDeleteImage = <ThrowOnError extends boolean = false>(options: Options<ImagesV1ImageServiceDeleteImageData, ThrowOnError>) => (options.client ?? client).delete<ImagesV1ImageServiceDeleteImageResponses, unknown, ThrowOnError>({ url: '/media/v1/projects/{project_id}/images/{image_id}', ...options });\n\n/**\n * UpdateImageVisibility\n */\nexport const imagesV1ImageServiceUpdateImageVisibility = <ThrowOnError extends boolean = false>(options: Options<ImagesV1ImageServiceUpdateImageVisibilityData, ThrowOnError>) => (options.client ?? client).patch<ImagesV1ImageServiceUpdateImageVisibilityResponses, unknown, ThrowOnError>({\n url: '/media/v1/projects/{project_id}/images/{image_id}/visibility',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * RefreshPlatformToken\n */\nexport const platformauthV1PlatformAuthServiceRefreshPlatformToken = <ThrowOnError extends boolean = false>(options: Options<PlatformauthV1PlatformAuthServiceRefreshPlatformTokenData, ThrowOnError>) => (options.client ?? client).post<PlatformauthV1PlatformAuthServiceRefreshPlatformTokenResponses, unknown, ThrowOnError>({\n url: '/platform/auth/v1/refresh',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * ExchangeAPIKey\n */\nexport const platformauthV1PlatformAuthServiceExchangeApiKey = <ThrowOnError extends boolean = false>(options: Options<PlatformauthV1PlatformAuthServiceExchangeApiKeyData, ThrowOnError>) => (options.client ?? client).post<PlatformauthV1PlatformAuthServiceExchangeApiKeyResponses, unknown, ThrowOnError>({\n url: '/platform/auth/v1/token',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * ListPosts\n */\nexport const postsV1PostServiceListPosts3 = <ThrowOnError extends boolean = false>(options: Options<PostsV1PostServiceListPosts3Data, ThrowOnError>) => (options.client ?? client).get<PostsV1PostServiceListPosts3Responses, unknown, ThrowOnError>({ url: '/posts/v1/feeds/{feed_id}', ...options });\n\n/**\n * ListPosts\n */\nexport const postsV1PostServiceListPosts4 = <ThrowOnError extends boolean = false>(options: Options<PostsV1PostServiceListPosts4Data, ThrowOnError>) => (options.client ?? client).get<PostsV1PostServiceListPosts4Responses, unknown, ThrowOnError>({ url: '/posts/v1/feeds/{feed_id}/creators/{creator_id}', ...options });\n\n/**\n * GetPost\n */\nexport const postsV1PostServiceGetPost3 = <ThrowOnError extends boolean = false>(options: Options<PostsV1PostServiceGetPost3Data, ThrowOnError>) => (options.client ?? client).get<PostsV1PostServiceGetPost3Responses, unknown, ThrowOnError>({ url: '/posts/v1/feeds/{feed_id}/{post_id}', ...options });\n\n/**\n * ListPosts\n */\nexport const postsV1PostServiceListPosts = <ThrowOnError extends boolean = false>(options: Options<PostsV1PostServiceListPostsData, ThrowOnError>) => (options.client ?? client).get<PostsV1PostServiceListPostsResponses, unknown, ThrowOnError>({ url: '/posts/v1/projects/{project_id}/feeds/{feed_id}/posts', ...options });\n\n/**\n * CreatePost\n */\nexport const postsV1PostServiceCreatePost = <ThrowOnError extends boolean = false>(options: Options<PostsV1PostServiceCreatePostData, ThrowOnError>) => (options.client ?? client).post<PostsV1PostServiceCreatePostResponses, unknown, ThrowOnError>({\n url: '/posts/v1/projects/{project_id}/feeds/{feed_id}/posts',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * ListPosts\n */\nexport const postsV1PostServiceListPosts2 = <ThrowOnError extends boolean = false>(options: Options<PostsV1PostServiceListPosts2Data, ThrowOnError>) => (options.client ?? client).get<PostsV1PostServiceListPosts2Responses, unknown, ThrowOnError>({ url: '/posts/v1/projects/{project_id}/feeds/{feed_id}/posts/creators/{creator_id}', ...options });\n\n/**\n * CreatePostUpload\n */\nexport const postsV1PostServiceCreatePostUpload = <ThrowOnError extends boolean = false>(options: Options<PostsV1PostServiceCreatePostUploadData, ThrowOnError>) => (options.client ?? client).post<PostsV1PostServiceCreatePostUploadResponses, unknown, ThrowOnError>({\n url: '/posts/v1/projects/{project_id}/feeds/{feed_id}/posts/upload',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * DeletePost\n */\nexport const postsV1PostServiceDeletePost2 = <ThrowOnError extends boolean = false>(options: Options<PostsV1PostServiceDeletePost2Data, ThrowOnError>) => (options.client ?? client).delete<PostsV1PostServiceDeletePost2Responses, unknown, ThrowOnError>({ url: '/posts/v1/projects/{project_id}/feeds/{feed_id}/posts/{post_id}', ...options });\n\n/**\n * GetPost\n */\nexport const postsV1PostServiceGetPost2 = <ThrowOnError extends boolean = false>(options: Options<PostsV1PostServiceGetPost2Data, ThrowOnError>) => (options.client ?? client).get<PostsV1PostServiceGetPost2Responses, unknown, ThrowOnError>({ url: '/posts/v1/projects/{project_id}/feeds/{feed_id}/posts/{post_id}', ...options });\n\n/**\n * DeletePost\n */\nexport const postsV1PostServiceDeletePost = <ThrowOnError extends boolean = false>(options: Options<PostsV1PostServiceDeletePostData, ThrowOnError>) => (options.client ?? client).delete<PostsV1PostServiceDeletePostResponses, unknown, ThrowOnError>({ url: '/posts/v1/projects/{project_id}/posts/{post_id}', ...options });\n\n/**\n * GetPost\n */\nexport const postsV1PostServiceGetPost = <ThrowOnError extends boolean = false>(options: Options<PostsV1PostServiceGetPostData, ThrowOnError>) => (options.client ?? client).get<PostsV1PostServiceGetPostResponses, unknown, ThrowOnError>({ url: '/posts/v1/projects/{project_id}/posts/{post_id}', ...options });\n\n/**\n * ListProjects\n */\nexport const projectV1ProjectServiceListProjects = <ThrowOnError extends boolean = false>(options: Options<ProjectV1ProjectServiceListProjectsData, ThrowOnError>) => (options.client ?? client).get<ProjectV1ProjectServiceListProjectsResponses, unknown, ThrowOnError>({ url: '/organizations/{org_id}/projects/v1', ...options });\n\n/**\n * CreateProject\n */\nexport const projectV1ProjectServiceCreateProject = <ThrowOnError extends boolean = false>(options: Options<ProjectV1ProjectServiceCreateProjectData, ThrowOnError>) => (options.client ?? client).post<ProjectV1ProjectServiceCreateProjectResponses, unknown, ThrowOnError>({\n url: '/organizations/{org_id}/projects/v1',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * DeleteProject\n */\nexport const projectV1ProjectServiceDeleteProject = <ThrowOnError extends boolean = false>(options: Options<ProjectV1ProjectServiceDeleteProjectData, ThrowOnError>) => (options.client ?? client).delete<ProjectV1ProjectServiceDeleteProjectResponses, unknown, ThrowOnError>({ url: '/organizations/{org_id}/projects/v1/{project_id}', ...options });\n\n/**\n * GetProject\n */\nexport const projectV1ProjectServiceGetProject = <ThrowOnError extends boolean = false>(options: Options<ProjectV1ProjectServiceGetProjectData, ThrowOnError>) => (options.client ?? client).get<ProjectV1ProjectServiceGetProjectResponses, unknown, ThrowOnError>({ url: '/organizations/{org_id}/projects/v1/{project_id}', ...options });\n\n/**\n * RemoveCustomDomain\n */\nexport const projectV1ProjectServiceRemoveCustomDomain = <ThrowOnError extends boolean = false>(options: Options<ProjectV1ProjectServiceRemoveCustomDomainData, ThrowOnError>) => (options.client ?? client).delete<ProjectV1ProjectServiceRemoveCustomDomainResponses, unknown, ThrowOnError>({ url: '/organizations/{org_id}/projects/v1/{project_id}/custom-domain', ...options });\n\n/**\n * SetCustomDomain\n */\nexport const projectV1ProjectServiceSetCustomDomain = <ThrowOnError extends boolean = false>(options: Options<ProjectV1ProjectServiceSetCustomDomainData, ThrowOnError>) => (options.client ?? client).put<ProjectV1ProjectServiceSetCustomDomainResponses, unknown, ThrowOnError>({\n url: '/organizations/{org_id}/projects/v1/{project_id}/custom-domain',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * MoveProject\n */\nexport const projectV1ProjectServiceMoveProject = <ThrowOnError extends boolean = false>(options: Options<ProjectV1ProjectServiceMoveProjectData, ThrowOnError>) => (options.client ?? client).post<ProjectV1ProjectServiceMoveProjectResponses, unknown, ThrowOnError>({\n url: '/organizations/{org_id}/projects/v1/{project_id}/move',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * UpdateProjectName\n */\nexport const projectV1ProjectServiceUpdateProjectName = <ThrowOnError extends boolean = false>(options: Options<ProjectV1ProjectServiceUpdateProjectNameData, ThrowOnError>) => (options.client ?? client).patch<ProjectV1ProjectServiceUpdateProjectNameResponses, unknown, ThrowOnError>({\n url: '/organizations/{org_id}/projects/v1/{project_id}/name',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * UpdateVideoQuality\n */\nexport const projectV1ProjectServiceUpdateVideoQuality = <ThrowOnError extends boolean = false>(options: Options<ProjectV1ProjectServiceUpdateVideoQualityData, ThrowOnError>) => (options.client ?? client).patch<ProjectV1ProjectServiceUpdateVideoQualityResponses, unknown, ThrowOnError>({\n url: '/organizations/{org_id}/projects/v1/{project_id}/video-quality',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * DeleteAllAudioTracks\n */\nexport const videosV1AudioTrackServiceDeleteAllAudioTracks = <ThrowOnError extends boolean = false>(options: Options<VideosV1AudioTrackServiceDeleteAllAudioTracksData, ThrowOnError>) => (options.client ?? client).delete<VideosV1AudioTrackServiceDeleteAllAudioTracksResponses, unknown, ThrowOnError>({ url: '/media/v1/projects/{project_id}/videos/{video_id}/audio-tracks', ...options });\n\n/**\n * DeleteAudioTracksByLanguage\n */\nexport const videosV1AudioTrackServiceDeleteAudioTracksByLanguage = <ThrowOnError extends boolean = false>(options: Options<VideosV1AudioTrackServiceDeleteAudioTracksByLanguageData, ThrowOnError>) => (options.client ?? client).delete<VideosV1AudioTrackServiceDeleteAudioTracksByLanguageResponses, unknown, ThrowOnError>({ url: '/media/v1/projects/{project_id}/videos/{video_id}/audio-tracks/language/{language_code}', ...options });\n\n/**\n * CreateAudioTrackUpload\n */\nexport const videosV1AudioTrackServiceCreateAudioTrackUpload = <ThrowOnError extends boolean = false>(options: Options<VideosV1AudioTrackServiceCreateAudioTrackUploadData, ThrowOnError>) => (options.client ?? client).post<VideosV1AudioTrackServiceCreateAudioTrackUploadResponses, unknown, ThrowOnError>({\n url: '/media/v1/projects/{project_id}/videos/{video_id}/audio-tracks/upload',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * DeleteAudioTrack\n */\nexport const videosV1AudioTrackServiceDeleteAudioTrack = <ThrowOnError extends boolean = false>(options: Options<VideosV1AudioTrackServiceDeleteAudioTrackData, ThrowOnError>) => (options.client ?? client).delete<VideosV1AudioTrackServiceDeleteAudioTrackResponses, unknown, ThrowOnError>({ url: '/media/v1/projects/{project_id}/videos/{video_id}/audio-tracks/{track_id}', ...options });\n\n/**\n * ListAudioTracks\n */\nexport const videosV1AudioTrackServiceListAudioTracks = <ThrowOnError extends boolean = false>(options: Options<VideosV1AudioTrackServiceListAudioTracksData, ThrowOnError>) => (options.client ?? client).get<VideosV1AudioTrackServiceListAudioTracksResponses, unknown, ThrowOnError>({ url: '/media/v1/videos/{video_id}/audio-tracks', ...options });\n\n/**\n * UpdateVideoChapters\n */\nexport const videosV1ChapterServiceUpdateVideoChapters = <ThrowOnError extends boolean = false>(options: Options<VideosV1ChapterServiceUpdateVideoChaptersData, ThrowOnError>) => (options.client ?? client).delete<VideosV1ChapterServiceUpdateVideoChaptersResponses, unknown, ThrowOnError>({ url: '/media/v1/projects/{project_id}/videos/{video_id}/chapters', ...options });\n\n/**\n * GetVideoChapters\n */\nexport const videosV1ChapterServiceGetVideoChapters = <ThrowOnError extends boolean = false>(options: Options<VideosV1ChapterServiceGetVideoChaptersData, ThrowOnError>) => (options.client ?? client).get<VideosV1ChapterServiceGetVideoChaptersResponses, unknown, ThrowOnError>({ url: '/media/v1/projects/{project_id}/videos/{video_id}/chapters', ...options });\n\n/**\n * DeleteVideoChapter\n */\nexport const videosV1ChapterServiceDeleteVideoChapter = <ThrowOnError extends boolean = false>(options: Options<VideosV1ChapterServiceDeleteVideoChapterData, ThrowOnError>) => (options.client ?? client).delete<VideosV1ChapterServiceDeleteVideoChapterResponses, unknown, ThrowOnError>({ url: '/media/v1/projects/{project_id}/videos/{video_id}/chapters/{start_time_sec}', ...options });\n\n/**\n * MarkVideoFailed\n */\nexport const videosV1VideoConversionServiceMarkVideoFailed = <ThrowOnError extends boolean = false>(options: Options<VideosV1VideoConversionServiceMarkVideoFailedData, ThrowOnError>) => (options.client ?? client).post<VideosV1VideoConversionServiceMarkVideoFailedResponses, unknown, ThrowOnError>({\n url: '/internal/videos/mark-failed',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * MarkVideoProcessed\n */\nexport const videosV1VideoConversionServiceMarkVideoProcessed = <ThrowOnError extends boolean = false>(options: Options<VideosV1VideoConversionServiceMarkVideoProcessedData, ThrowOnError>) => (options.client ?? client).post<VideosV1VideoConversionServiceMarkVideoProcessedResponses, unknown, ThrowOnError>({\n url: '/internal/videos/mark-processed',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * ListLanguages\n */\nexport const videosV1LanguageServiceListLanguages = <ThrowOnError extends boolean = false>(options?: Options<VideosV1LanguageServiceListLanguagesData, ThrowOnError>) => (options?.client ?? client).get<VideosV1LanguageServiceListLanguagesResponses, unknown, ThrowOnError>({ url: '/media/v1/languages', ...options });\n\n/**\n * DeleteAllSubtitles\n */\nexport const videosV1SubtitleServiceDeleteAllSubtitles = <ThrowOnError extends boolean = false>(options: Options<VideosV1SubtitleServiceDeleteAllSubtitlesData, ThrowOnError>) => (options.client ?? client).delete<VideosV1SubtitleServiceDeleteAllSubtitlesResponses, unknown, ThrowOnError>({ url: '/media/v1/projects/{project_id}/videos/{video_id}/subtitles', ...options });\n\n/**\n * DeleteSubtitlesByLanguage\n */\nexport const videosV1SubtitleServiceDeleteSubtitlesByLanguage = <ThrowOnError extends boolean = false>(options: Options<VideosV1SubtitleServiceDeleteSubtitlesByLanguageData, ThrowOnError>) => (options.client ?? client).delete<VideosV1SubtitleServiceDeleteSubtitlesByLanguageResponses, unknown, ThrowOnError>({ url: '/media/v1/projects/{project_id}/videos/{video_id}/subtitles/language/{language_code}', ...options });\n\n/**\n * CreateSubtitleUpload\n */\nexport const videosV1SubtitleServiceCreateSubtitleUpload = <ThrowOnError extends boolean = false>(options: Options<VideosV1SubtitleServiceCreateSubtitleUploadData, ThrowOnError>) => (options.client ?? client).post<VideosV1SubtitleServiceCreateSubtitleUploadResponses, unknown, ThrowOnError>({\n url: '/media/v1/projects/{project_id}/videos/{video_id}/subtitles/upload',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * DeleteSubtitle\n */\nexport const videosV1SubtitleServiceDeleteSubtitle = <ThrowOnError extends boolean = false>(options: Options<VideosV1SubtitleServiceDeleteSubtitleData, ThrowOnError>) => (options.client ?? client).delete<VideosV1SubtitleServiceDeleteSubtitleResponses, unknown, ThrowOnError>({ url: '/media/v1/projects/{project_id}/videos/{video_id}/subtitles/{subtitle_id}', ...options });\n\n/**\n * ListSubtitles\n */\nexport const videosV1SubtitleServiceListSubtitles = <ThrowOnError extends boolean = false>(options: Options<VideosV1SubtitleServiceListSubtitlesData, ThrowOnError>) => (options.client ?? client).get<VideosV1SubtitleServiceListSubtitlesResponses, unknown, ThrowOnError>({ url: '/media/v1/videos/{video_id}/subtitles', ...options });\n\n/**\n * ListVideos\n */\nexport const videosV1VideoServiceListVideos = <ThrowOnError extends boolean = false>(options: Options<VideosV1VideoServiceListVideosData, ThrowOnError>) => (options.client ?? client).get<VideosV1VideoServiceListVideosResponses, unknown, ThrowOnError>({ url: '/media/v1/projects/{project_id}/videos', ...options });\n\n/**\n * CreateVideoUpload\n */\nexport const videosV1VideoServiceCreateVideoUpload = <ThrowOnError extends boolean = false>(options: Options<VideosV1VideoServiceCreateVideoUploadData, ThrowOnError>) => (options.client ?? client).post<VideosV1VideoServiceCreateVideoUploadResponses, unknown, ThrowOnError>({\n url: '/media/v1/projects/{project_id}/videos/upload',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * DeleteVideo\n */\nexport const videosV1VideoServiceDeleteVideo = <ThrowOnError extends boolean = false>(options: Options<VideosV1VideoServiceDeleteVideoData, ThrowOnError>) => (options.client ?? client).delete<VideosV1VideoServiceDeleteVideoResponses, unknown, ThrowOnError>({ url: '/media/v1/projects/{project_id}/videos/{video_id}', ...options });\n\n/**\n * UpdateVideoVisibility\n */\nexport const videosV1VideoServiceUpdateVideoVisibility = <ThrowOnError extends boolean = false>(options: Options<VideosV1VideoServiceUpdateVideoVisibilityData, ThrowOnError>) => (options.client ?? client).patch<VideosV1VideoServiceUpdateVideoVisibilityResponses, unknown, ThrowOnError>({\n url: '/media/v1/projects/{project_id}/videos/{video_id}/visibility',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * GetVideo\n */\nexport const videosV1VideoServiceGetVideo = <ThrowOnError extends boolean = false>(options: Options<VideosV1VideoServiceGetVideoData, ThrowOnError>) => (options.client ?? client).get<VideosV1VideoServiceGetVideoResponses, unknown, ThrowOnError>({ url: '/media/v1/videos/{video_id}', ...options });\n","/**\n * Global constants for the auth library\n */\n\n/** Prefix for all cookies and storage keys */\nexport const GLOBAL_PREFIX: string = \"__rixl_auth\";\n\n/** Cookie expiry in days */\nexport const COOKIE_EXPIRY_DAYS: number = 30;\n\n/** OAuth state storage key prefix */\nexport const STATE_STORAGE_KEY_PREFIX: string = GLOBAL_PREFIX + \"_state_\";\n\n/** Social connect storage key prefix */\nexport const SOCIAL_CONNECT_KEY_PREFIX: string = GLOBAL_PREFIX + \"_social_connect_\";\n\ntype HttpStatusMap = Readonly<{\n ACCEPTED: number;\n BAD_REQUEST: number;\n UNAUTHORIZED: number;\n FORBIDDEN: number;\n NOT_FOUND: number;\n CONFLICT: number;\n TOO_MANY_REQUESTS: number;\n INTERNAL_SERVER_ERROR: number;\n}>;\n\n/** HTTP Status codes - only codes actually used in the library */\nexport const HTTP_STATUS: HttpStatusMap = {\n ACCEPTED: 202,\n BAD_REQUEST: 400,\n UNAUTHORIZED: 401,\n FORBIDDEN: 403,\n NOT_FOUND: 404,\n CONFLICT: 409,\n TOO_MANY_REQUESTS: 429,\n INTERNAL_SERVER_ERROR: 500,\n} as const;\n","import {STATE_STORAGE_KEY_PREFIX} from \"./constants\";\n\nconst storagePath = (provider: string) => STATE_STORAGE_KEY_PREFIX + provider;\n\n/**\n * Retrieves and validates the OAuth state from session storage\n * @param provider The provider identifier\n * @param state The state value to validate\n * @returns True if the state is valid, false otherwise\n */\nexport function validateOAuthState(provider: string, state: string): boolean {\n const storedState = sessionStorage.getItem(storagePath(provider));\n return storedState === state;\n}\n\n/**\n * Gets or Generates a complete state parameter for OAuth requests\n * @param provider The identifier for the provider (e.g., 'google', 'apple')\n * @returns A state string containing the provider identifier and random data\n */\nexport function getOauthState(provider: string): string {\n return sessionStorage.getItem(storagePath(provider)) ?? generateOauthState(provider);\n}\n\nfunction generateOauthState(provider: string): string {\n const randomPart = crypto.randomUUID();\n const state = `${provider}_${randomPart}`;\n sessionStorage.setItem(storagePath(provider), state);\n return state;\n}\n","/**\n * Generic OAuth provider configuration and utilities\n * This file contains shared logic for all OAuth providers to reduce duplication\n */\n\nimport {atom, type WritableAtom} from \"nanostores\";\nimport {getOauthState} from \"../state\";\nimport {AuthProvider} from \"./types\";\n\n/**\n * Base configuration for OAuth providers\n */\nexport interface OAuthProviderConfig {\n clientId: string;\n scope?: string;\n}\n\n/**\n * OAuth provider metadata\n */\nexport interface OAuthProviderMetadata {\n name: string;\n authBaseUrl: string;\n defaultScopes: string[];\n responseType: string;\n responseMode?: string;\n additionalParams?: Record<string, string>;\n}\n\n/**\n * Configuration for creating an OAuth provider\n */\nexport interface CreateOAuthProviderConfig {\n provider: AuthProvider;\n metadata: OAuthProviderMetadata;\n}\n\n/**\n * Result of creating an OAuth provider\n */\nexport interface OAuthProviderResult {\n config: WritableAtom<OAuthProviderConfig | null>;\n authUrl: WritableAtom<string | null>;\n updateAuthUrl: () => void;\n}\n\n/**\n * Builds an OAuth URL from configuration and metadata\n */\nexport const buildOAuthUrl = (config: OAuthProviderConfig, metadata: OAuthProviderMetadata, state: string): string => {\n const params = new URLSearchParams({\n client_id: config.clientId,\n redirect_uri: window.location.origin,\n response_type: metadata.responseType,\n scope: [...metadata.defaultScopes, ...(config.scope ? [config.scope] : [])].join(\" \"),\n state: state,\n });\n\n // Add nonce for providers that require it\n if (metadata.responseType.includes(\"id_token\")) {\n params.set(\"nonce\", state);\n }\n\n // Add response mode if specified\n if (metadata.responseMode) {\n params.set(\"response_mode\", metadata.responseMode);\n }\n\n // Add any additional provider-specific params\n if (metadata.additionalParams) {\n Object.entries(metadata.additionalParams).forEach(([key, value]) => {\n params.set(key, value);\n });\n }\n\n return `${metadata.authBaseUrl}?${params.toString()}`;\n};\n\n/**\n * Warning helper for unconfigured providers\n */\nexport const warnProviderNotConfigured = (providerName: string): void => {\n console.warn(`${providerName} provider not configured. Check initClient method.`);\n};\n\n/**\n * Creates a reusable OAuth provider with configuration and URL management\n * This factory reduces code duplication across OAuth providers\n */\nexport const createOAuthProvider = ({provider, metadata}: CreateOAuthProviderConfig): OAuthProviderResult => {\n const config = atom<OAuthProviderConfig | null>(null);\n const authUrl = atom<string | null>(null);\n\n const updateAuthUrl = () => {\n const currentConfig = config.get();\n if (!currentConfig) {\n warnProviderNotConfigured(metadata.name);\n authUrl.set(null);\n return;\n }\n\n const state = getOauthState(provider);\n const url = buildOAuthUrl(currentConfig, metadata, state);\n authUrl.set(url);\n };\n\n return {config, authUrl, updateAuthUrl};\n};\n","import {AuthProvider} from \"./types\";\nimport {createOAuthProvider, type OAuthProviderConfig} from \"./oauth\";\nimport type {WritableAtom} from \"nanostores\";\n\n// Provider configuration interface\nexport interface GoogleProviderConfig extends OAuthProviderConfig {}\n\n// Create the Google provider using the factory\nconst googleProvider = createOAuthProvider({\n provider: AuthProvider.GOOGLE,\n metadata: {\n name: \"Google\",\n authBaseUrl: \"https://accounts.google.com/o/oauth2/v2/auth\",\n defaultScopes: [\"openid\", \"https://www.googleapis.com/auth/userinfo.email\", \"https://www.googleapis.com/auth/userinfo.profile\"],\n responseType: \"id_token\",\n },\n});\n\n// Export the configuration atom, auth URL atom, and update function\nexport const googleConfig: WritableAtom<OAuthProviderConfig | null> = googleProvider.config;\nexport const googleAuthUrl: WritableAtom<string | null> = googleProvider.authUrl;\nexport const updateGoogleAuthUrl: () => void = googleProvider.updateAuthUrl;\n","import {AuthProvider} from \"./types\";\nimport {createOAuthProvider, type OAuthProviderConfig} from \"./oauth\";\nimport type {WritableAtom} from \"nanostores\";\n\n// Provider configuration interface\nexport interface MicrosoftProviderConfig extends OAuthProviderConfig {}\n\n// Create the Microsoft provider using the factory\nconst microsoftProvider = createOAuthProvider({\n provider: AuthProvider.MICROSOFT,\n metadata: {\n name: \"Microsoft\",\n authBaseUrl: \"https://login.microsoftonline.com/common/oauth2/v2.0/authorize\",\n defaultScopes: [\"openid\", \"profile\", \"email\"],\n responseType: \"id_token\",\n responseMode: \"fragment\",\n },\n});\n\n// Export the configuration atom, auth URL atom, and update function\nexport const microsoftConfig: WritableAtom<OAuthProviderConfig | null> = microsoftProvider.config;\nexport const microsoftAuthUrl: WritableAtom<string | null> = microsoftProvider.authUrl;\nexport const updateMicrosoftAuthUrl: () => void = microsoftProvider.updateAuthUrl;\n","import {AuthProvider} from \"./types\";\nimport {createOAuthProvider, type OAuthProviderConfig} from \"./oauth\";\nimport type {WritableAtom} from \"nanostores\";\n\n// Provider configuration interface\nexport interface AppleProviderConfig extends OAuthProviderConfig {}\n\n// Create the Apple provider using the factory\nconst appleProvider = createOAuthProvider({\n provider: AuthProvider.APPLE,\n metadata: {\n name: \"Apple\",\n authBaseUrl: \"https://appleid.apple.com/auth/authorize\",\n defaultScopes: [\"openid\"],\n responseType: \"code id_token\",\n responseMode: \"fragment\",\n },\n});\n\n// Export the configuration atom, auth URL atom, and update function\nexport const appleConfig: WritableAtom<OAuthProviderConfig | null> = appleProvider.config;\nexport const appleAuthUrl: WritableAtom<string | null> = appleProvider.authUrl;\nexport const updateAppleAuthUrl: () => void = appleProvider.updateAuthUrl;\n","import {atom, type WritableAtom} from \"nanostores\";\nimport {warnProviderNotConfigured} from \"./oauth\";\n\n// Provider configuration interface\nexport interface TelegramProviderConfig {\n botId: string;\n}\n\n// Store provider configuration\nexport const telegramConfig: WritableAtom<TelegramProviderConfig | null> = atom<TelegramProviderConfig | null>(null);\n\n// Store for Telegram auth URL\nexport const telegramAuthUrl: WritableAtom<string | null> = atom<string | null>(null);\n\n/**\n * Updates the Telegram authentication URL using the configured settings\n */\nexport function updateTelegramAuthUrl(): void {\n const config = telegramConfig.get();\n if (!config) {\n warnProviderNotConfigured(\"Telegram\");\n telegramAuthUrl.set(null);\n return;\n }\n\n const url =\n \"https://oauth.telegram.org/auth?\" +\n `bot_id=${encodeURIComponent(config.botId)}` +\n `&origin=${encodeURIComponent(window.location.origin)}` +\n `&return_to=${encodeURIComponent(window.location.origin + location.pathname)}`;\n\n telegramAuthUrl.set(url);\n}\n","// Initialize urlParams lazily to avoid accessing window during module import\n// This is important for test environments and SSR\nexport const urlParams: URLSearchParams = new URLSearchParams(typeof window !== \"undefined\" ? fromURL(window.location.href) : \"\");\n\nfunction fromURL(urlString: string): string {\n return (\n urlString\n // Replace everything before this first hashtag or question sign.\n .replace(/^[^?#]*[?#]/, \"\")\n // Replace all hashtags and question signs to make it look like some search params.\n .replace(/[?#]/g, \"&\")\n );\n}\n","import {urlParams} from \"../url\";\nimport {validateOAuthState} from \"../state\";\nimport {AuthProvider} from \"./types\";\n\n/**\n * Extracts the provider identifier from a state parameter\n * @param state The state parameter from the OAuth redirect\n * @returns The provider identifier or undefined if not found\n */\nexport function extractProviderFromState(state: string): string | undefined {\n const parts = state.split(\"_\");\n if (parts.length >= 1) {\n return parts[0];\n }\n return undefined;\n}\n\nconst OAUTH_PROVIDERS = [AuthProvider.GOOGLE, AuthProvider.APPLE, AuthProvider.MICROSOFT] as const;\n\n/**\n * Detects the authentication provider from URL parameters\n * @returns The detected authentication provider or undefined if none detected\n */\nexport function detectProvider(): AuthProvider | undefined {\n // Check for Telegram providers first (they have specific parameters)\n if (urlParams.has(AuthProvider.TELEGRAM_MINI_APP)) {\n return AuthProvider.TELEGRAM_MINI_APP;\n }\n if (urlParams.has(AuthProvider.TELEGRAM_WEB)) {\n return AuthProvider.TELEGRAM_WEB;\n }\n\n // Check for OAuth providers via id_token + state\n const id_token = urlParams.get(\"id_token\");\n const state = urlParams.get(\"state\");\n\n if (id_token && state) {\n const providerFromState = extractProviderFromState(state);\n return OAUTH_PROVIDERS.find((p) => providerFromState === p && validateOAuthState(p, state));\n }\n\n return undefined;\n}\n\n/**\n * Gets the authentication token or code from the URL based on the provider\n * @param provider The authentication provider\n * @returns The token or code, or undefined if not found\n */\nexport function getProviderToken(provider: AuthProvider): string | undefined {\n // For Telegram, the token is in a parameter named after the provider\n if (provider === AuthProvider.TELEGRAM_MINI_APP || provider === AuthProvider.TELEGRAM_WEB) {\n return urlParams.get(provider) || undefined;\n }\n\n // For OAuth providers (Google, Apple, Microsoft), the token is in the 'id_token' parameter\n if (provider === AuthProvider.GOOGLE || provider === AuthProvider.APPLE || provider === AuthProvider.MICROSOFT) {\n return urlParams.get(\"id_token\") || undefined;\n }\n\n return undefined;\n}\n","import {authV1TokenServiceRefreshToken} from \"../../generated/sdk.gen\";\nimport {AuthProvider} from \"../providers\";\nimport type {TokenResponse, LimitedScopeTokenResponse} from \"../types\";\n\nexport type {TokenResponse, LimitedScopeTokenResponse};\n\nexport interface RefreshTokenOptions {\n countryCode?: string;\n origin?: string;\n}\n\nexport const refreshTokens = async (\n provider: AuthProvider,\n token: string,\n options?: RefreshTokenOptions\n): Promise<TokenResponse | LimitedScopeTokenResponse> => {\n const {data} = await authV1TokenServiceRefreshToken({\n body: {\n token_type: provider,\n refresh_token: token,\n country_code: options?.countryCode,\n origin: options?.origin,\n },\n throwOnError: true,\n });\n return data as TokenResponse | LimitedScopeTokenResponse;\n};\n","/**\n * Interface for a deferred promise that can be resolved or rejected externally\n */\nexport interface Deferred {\n promise: Promise<void>;\n resolve: () => void;\n reject: (reason?: unknown) => void;\n}\n\n/**\n * Creates a deferred promise that can be resolved or rejected externally\n * @returns A deferred promise object\n */\nexport function createDeferred(): Deferred {\n let resolve!: () => void;\n let reject!: (reason?: unknown) => void;\n\n const promise = new Promise<void>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n\n return {promise, resolve, reject};\n}\n\n/**\n * Global deferred promise that tracks the initialization status of the auth library\n * This is resolved when initClient is called\n */\nexport const initDeferred: Deferred = createDeferred();\n","export const getAllCookiesStartWith = (startWithKey: string): Partial<Record<string, string>> => {\n // Check if document is available (not in test/SSR environment)\n if (typeof document === \"undefined\") {\n return {};\n }\n\n return document.cookie\n .split(\";\")\n .map((cv) => cv.split(\"=\").map((v) => v.trim()))\n .filter(([key]) => key && key !== startWithKey && key.startsWith(startWithKey))\n .reduce((ac, [key, value]) => Object.assign(ac, {[key!.slice(startWithKey.length + 1)]: value}), {});\n};\n\nimport type {CookieSameSite} from \"../types\";\n\ninterface CookieAttributes {\n expires?: number | Date | undefined;\n path?: string | undefined;\n domain?: string | undefined;\n secure?: boolean | undefined;\n sameSite?: CookieSameSite;\n}\n\nexport function setCookie(name: string, value: string, options?: CookieAttributes): void {\n // Check if document is available\n if (typeof document === \"undefined\") {\n return;\n }\n\n let cookieString = `${encodeName(name)}=${encodeValue(value)}`;\n\n if (options) {\n if (options.expires) {\n if (typeof options.expires === \"number\") {\n const date = new Date();\n date.setTime(date.getTime() + options.expires * 24 * 60 * 60 * 1000); // Convert days to milliseconds\n cookieString += `; expires=${date.toUTCString()}`;\n } else {\n cookieString += `; expires=${options.expires.toUTCString()}`;\n }\n }\n if (options.path) {\n cookieString += `; path=${options.path}`;\n }\n if (options.domain) {\n cookieString += `; domain=${options.domain}`;\n }\n if (options.secure) {\n cookieString += `; secure`;\n }\n if (options.sameSite) {\n cookieString += `; samesite=${options.sameSite}`;\n }\n }\n\n // Set the cookie\n document.cookie = cookieString;\n}\n\n// Function to delete a cookie\nexport function deleteCookie(name: string): void {\n // Check if document is available\n if (typeof document === \"undefined\") {\n return;\n }\n document.cookie = name + \"=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;\";\n}\n\nconst encodeName = (name: string) => encodeURIComponent(name).replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent);\n\nconst encodeValue = (value: string) =>\n encodeURIComponent(value as string).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g, decodeURIComponent);\n","import {deleteCookie, getAllCookiesStartWith, setCookie} from \"./util\";\nimport {GLOBAL_PREFIX, COOKIE_EXPIRY_DAYS} from \"../constants\";\n\nexport const initVals: Partial<Record<string, string>> = getAllCookiesStartWith(GLOBAL_PREFIX);\n\nexport const setStoreCookie = (key: string, value: unknown): void => {\n const expires = new Date();\n expires.setTime(expires.getTime() + COOKIE_EXPIRY_DAYS * 24 * 60 * 60 * 1000);\n\n const cookieKey = `${GLOBAL_PREFIX}_${key}`;\n\n if (!value || value === \"\") {\n deleteCookie(cookieKey);\n return;\n }\n\n const stringValue = typeof value === \"string\" ? value : JSON.stringify(value);\n setCookie(`${GLOBAL_PREFIX}_${key}`, stringValue, {\n expires,\n path: \"/\",\n sameSite: \"Lax\",\n });\n};\n","import {atom, type WritableAtom} from \"nanostores\";\nimport {GLOBAL_PREFIX} from \"./constants\";\nimport type {User} from \"./types\";\n\nconst userPath = GLOBAL_PREFIX + \"_user\";\nconst parseUser = (): User | undefined => {\n // Check if localStorage is available and has proper methods (e.g., in test environments)\n if (typeof localStorage === \"undefined\" || !localStorage || typeof localStorage.getItem !== \"function\") {\n return undefined;\n }\n\n const value = localStorage.getItem(userPath);\n if (value && value != \"undefined\") {\n try {\n return JSON.parse(value);\n } catch (err) {\n console.warn(\"Can't parse user data, error: \", err);\n return undefined;\n }\n }\n return undefined;\n};\n\nexport const user: WritableAtom<User | undefined> = atom<User | undefined>(parseUser());\nuser.subscribe((value) => {\n // Check if localStorage is available and has proper methods\n if (typeof localStorage === \"undefined\" || !localStorage || typeof localStorage.setItem !== \"function\") {\n return;\n }\n\n if (value) {\n localStorage.setItem(userPath, JSON.stringify(value));\n } else {\n localStorage.removeItem(userPath);\n }\n});\n","import {decodeJwt} from \"jose\";\nimport type {User} from \"../types\";\nimport {user} from \"../userStore\";\n\n/**\n * Decodes a JWT token and extracts user information\n * Uses jose library for modern, secure JWT handling\n * @param token The JWT token to decode\n * @returns The decoded user data or undefined if decoding fails\n */\nexport const decodeToken = (token: string): User | undefined => {\n try {\n const decodedUser = decodeJwt(token);\n return {\n id: decodedUser.id as string,\n email: decodedUser.email as string,\n first_name: decodedUser.first_name as string,\n last_name: decodedUser.last_name as string,\n username: decodedUser.username as string,\n image_url: decodedUser.image_url as string,\n language_code: decodedUser.language_code as string,\n org_id: decodedUser.org_id as string,\n };\n } catch (error) {\n // Only log in non-test environments to reduce test noise\n if (process.env.NODE_ENV !== \"test\") {\n console.warn(\"Failed to decode JWT token. Error: \", error);\n }\n return undefined;\n }\n};\n\n/**\n * Decodes a JWT token and sets the user in the store\n * @param token The JWT token to decode\n * @returns True if user was successfully decoded and set, false otherwise\n */\nexport const decodeAndSetUser = (token: string): boolean => {\n const userData = decodeToken(token);\n if (userData) {\n user.set(userData);\n return true;\n }\n return false;\n};\n\n/**\n * Checks if a token is expired based on the expiration timestamp\n * @param expireAt The expiration timestamp in milliseconds\n * @returns True if the token is expired, false otherwise\n */\nexport const isTokenExpired = (expireAt: number | undefined): boolean => {\n if (!expireAt) return true;\n return Date.now() >= expireAt;\n};\n","import {atom, type WritableAtom} from \"nanostores\";\nimport {refreshTokens} from \"./api/refresh-tokens\";\nimport {appleAuthUrl, AuthProvider, detectProvider, googleAuthUrl, telegramAuthUrl, microsoftAuthUrl} from \"./providers\";\nimport {initDeferred} from \"./initialization\";\nimport {initVals, setStoreCookie} from \"./cookie\";\nimport {user} from \"./userStore\";\nimport type {ProviderType} from \"./social/socialConnections\";\nimport {decodeAndSetUser, isTokenExpired} from \"./utils/jwt\";\nimport type {LoginErrorResponse} from \"./auth/types\";\nimport type {RequiresAction} from \"./types\";\n\n// Store for authentication state\nexport const isLogged: WritableAtom<boolean> = atom(initVals[\"isLogged\"] === \"true\" || detectProvider() !== undefined);\nexport const accessToken: WritableAtom<string | undefined> = atom(initVals[\"accessToken\"]);\nexport const refreshToken: WritableAtom<string | undefined> = atom(initVals[\"refreshToken\"]);\nexport const expireAt: WritableAtom<number> = atom(Number(initVals[\"expireAt\"]));\n\n// Store for OAuth/Telegram login errors (403, 409)\nexport const authError: WritableAtom<LoginErrorResponse | null> = atom<LoginErrorResponse | null>(null);\n\n// Store for limited access state (Telegram user without email)\nexport const requiresAction: WritableAtom<RequiresAction> = atom<RequiresAction>((initVals[\"requiresAction\"] as RequiresAction) || null);\nexport const limitedAccessToken: WritableAtom<string | null> = atom<string | null>(initVals[\"limitedAccessToken\"] || null);\n\n// Store the current getToken promise\nlet currentTokenPromise: Promise<string | undefined> | null = null;\n\n/**\n * Reset the current token promise (for testing purposes)\n * @internal\n */\nexport const resetTokenPromise = (): void => {\n currentTokenPromise = null;\n};\n\n// Map providers to their auth URL atoms\nconst PROVIDER_URL_MAP: Partial<Record<ProviderType, WritableAtom<string | null>>> = {\n google: googleAuthUrl,\n apple: appleAuthUrl,\n microsoft: microsoftAuthUrl,\n telegram: telegramAuthUrl,\n};\n\nexport const login = async (provider: ProviderType): Promise<void> => {\n await initDeferred.promise;\n\n const authUrlAtom = PROVIDER_URL_MAP[provider];\n if (!authUrlAtom) {\n throw new Error(`Unsupported provider: ${provider}`);\n }\n\n const authUrl = authUrlAtom.get();\n if (authUrl) {\n window.location.href = authUrl;\n } else {\n throw new Error(`${provider} provider is not configured. Please check your initClient configuration.`);\n }\n};\n\nconst refreshAccessToken = async (refresh: string): Promise<void> => {\n const result = await refreshTokens(AuthProvider.BEARER, refresh);\n // Bearer refresh always returns full tokens (not limited scope)\n if (!(\"requires_action\" in result)) {\n setTokens(result.access_token, result.refresh_token, result.expires_in);\n }\n};\n\nconst ensureValidAccessToken = async (refresh: string): Promise<void> => {\n const currentAccessToken = accessToken.get();\n if (currentAccessToken && !isTokenExpired(expireAt.get())) {\n return;\n }\n\n try {\n await refreshAccessToken(refresh);\n } catch (refreshError) {\n // If refresh fails, we should consider the user logged out\n console.error(\"Token refresh failed in getToken:\", refreshError);\n removeTokens();\n throw refreshError;\n }\n};\n\nexport const getToken = async (): Promise<string | undefined> => {\n // If there's already a getToken operation in progress, return that promise\n if (currentTokenPromise) {\n return currentTokenPromise;\n }\n\n // Create a new promise for the getToken operation\n currentTokenPromise = (async () => {\n try {\n // Wait for the library to be initialized\n await initDeferred.promise;\n\n // Users in limited-access flows should not receive full-scope tokens for protected calls\n if (requiresAction.get()) return undefined;\n\n const currentRefreshToken = refreshToken.get();\n if (!currentRefreshToken) return undefined;\n\n await ensureValidAccessToken(currentRefreshToken);\n\n const token = accessToken.get();\n if (token) {\n decodeAndSetUser(token);\n }\n\n return token;\n } catch (error) {\n console.warn(\"Failed to getToken(). Error: \", error);\n throw error;\n } finally {\n // Clear the promise reference when done\n currentTokenPromise = null;\n }\n })();\n\n return currentTokenPromise;\n};\n/**\n * Sets authentication tokens in the store\n * @param access The access token\n * @param refresh The refresh token\n * @param expiresIn The token expiration time in seconds\n */\nexport const setTokens = (access: string, refresh: string, expiresIn: number): void => {\n accessToken.set(access);\n refreshToken.set(refresh);\n expireAt.set(Date.now() + expiresIn * 1000);\n isLogged.set(true);\n\n // Clear limited access state when full tokens are set\n limitedAccessToken.set(null);\n requiresAction.set(null);\n\n // Clear any previous authentication errors after successful token set\n authError.set(null);\n\n // Decode and set user information\n decodeAndSetUser(access);\n};\n\n/**\n * Removes authentication tokens from the store\n */\nexport const removeTokens = (): void => {\n accessToken.set(\"\");\n refreshToken.set(\"\");\n expireAt.set(0);\n isLogged.set(false);\n user.set(undefined);\n\n // Clear limited access state on logout\n limitedAccessToken.set(null);\n requiresAction.set(null);\n\n // Clear any existing auth errors to ensure a clean logout state\n authError.set(null);\n};\n\n/**\n * Clears the auth error from the store\n */\nexport const clearAuthError = (): void => {\n authError.set(null);\n};\n\n/**\n * Sets limited access state for users requiring additional action (e.g., Telegram users without email)\n * @param token The limited scope access token\n * @param action The required action (e.g., \"add_email\")\n */\nexport const setLimitedAccessState = (token: string, action: RequiresAction): void => {\n limitedAccessToken.set(token);\n requiresAction.set(action);\n authError.set(null); // Clear any previous auth errors\n isLogged.set(true); // User is logged in but with limited scope\n};\n\n/**\n * Clears the limited access state (after email verification completes or user logs out)\n */\nexport const clearLimitedAccessState = (): void => {\n limitedAccessToken.set(null);\n requiresAction.set(null);\n\n // If there are no full tokens, user should no longer be considered logged in\n const hasFullTokens = !!accessToken.get() && !!refreshToken.get();\n if (!hasFullTokens) {\n isLogged.set(false);\n }\n};\n\n// Persist state changes to cookies\nisLogged.subscribe((value) => setStoreCookie(\"isLogged\", value));\naccessToken.subscribe((value) => setStoreCookie(\"accessToken\", value));\nrefreshToken.subscribe((value) => setStoreCookie(\"refreshToken\", value));\nexpireAt.subscribe((value) => setStoreCookie(\"expireAt\", value));\nrequiresAction.subscribe((value) => setStoreCookie(\"requiresAction\", value));\nlimitedAccessToken.subscribe((value) => setStoreCookie(\"limitedAccessToken\", value));\n","import type {HttpMethod} from \"../types\";\n\n/**\n * Configuration for API requests\n */\nexport interface ApiRequestConfig {\n method?: HttpMethod;\n body?: Record<string, unknown> | string;\n headers?: Record<string, string>;\n skipAuth?: boolean;\n retry?: number;\n signal?: AbortSignal;\n}\n\nexport interface ApiErrorContext {\n status: number;\n endpoint: string;\n data?: unknown;\n}\n\n/**\n * Generic API error class - wraps ky's HTTPError for consistency\n */\nexport class ApiError extends Error {\n public status: number;\n public endpoint: string;\n public data?: unknown;\n\n constructor(message: string, ...rest: [number, string?, unknown?] | [ApiErrorContext]) {\n super(message);\n this.name = \"ApiError\";\n\n const firstArg = rest[0];\n if (typeof firstArg === \"number\") {\n this.status = firstArg;\n this.endpoint = rest[1] ?? \"\";\n this.data = rest[2];\n return;\n }\n\n this.status = firstArg.status;\n this.endpoint = firstArg.endpoint;\n this.data = firstArg.data;\n }\n}\n","import {atom, type WritableAtom} from \"nanostores\";\n\n/**\n * Global API base URL store\n */\nexport const apiURL: WritableAtom<string> = atom(\"\");\n","import {client} from \"../../generated/client.gen\";\nimport {apiURL} from \"../api-url\";\nimport {getToken} from \"../authStore\";\nimport {HTTP_STATUS} from \"../constants\";\nimport {ApiError} from \"./types\";\n\ninterface WireErrorBody {\n error?: string;\n details?: string;\n code?: number;\n}\n\nfunction isWireErrorBody(error: unknown): error is WireErrorBody {\n return typeof error === \"object\" && error !== null;\n}\n\nlet configured = false;\n\ntype TokenResolver = () => Promise<string | undefined>;\n\n// Defaults to the end-user session token. `connect()` swaps this out via\n// setTokenResolver() when configured with an apiKey or a bare token instead,\n// so there is always exactly one credential source feeding the one interceptor\n// below, regardless of which mode (user auth vs. platform/API key) is active.\nlet tokenResolver: TokenResolver = getToken;\n\nexport function setTokenResolver(resolver: TokenResolver): void {\n tokenResolver = resolver;\n}\n\n/**\n * Routes that do not require a Bearer token at the gateway edge. These\n * authenticate via credentials in the request body (or are webhooks verified by\n * signature), so attaching an Authorization header here would make the gateway\n * attempt to validate a stale/absent token and reject the request with 401.\n * Mirrors `publicRoutes` in backend/gateway/internal/routes/routes.go.\n */\nconst publicRoutes: ReadonlyArray<{method: string; path: string; prefix?: boolean}> = [\n {method: \"POST\", path: \"/auth/v1/token\"},\n {method: \"POST\", path: \"/auth/v1/register\"},\n {method: \"POST\", path: \"/auth/v1/login\"},\n {method: \"POST\", path: \"/auth/v1/email/verify\"},\n {method: \"POST\", path: \"/auth/v1/email/verify/resend\"},\n {method: \"POST\", path: \"/auth/v1/password/reset\"},\n {method: \"POST\", path: \"/auth/v1/password/reset/confirm\"},\n {method: \"POST\", path: \"/auth/v1/verify-totp\"},\n {method: \"POST\", path: \"/auth/v1/verify-passkey\"},\n {method: \"POST\", path: \"/auth/v1/invitations/\", prefix: true},\n {method: \"POST\", path: \"/auth/v1/passkey/login/begin\"},\n {method: \"POST\", path: \"/auth/v1/passkey/login/finish\"},\n {method: \"POST\", path: \"/auth/v1/logout\"},\n {method: \"POST\", path: \"/auth/v1/blog/unsubscribe/email\"},\n {method: \"POST\", path: \"/auth/v1/blog/broadcast\"},\n {method: \"GET\", path: \"/media/v1/videos/\", prefix: true},\n {method: \"GET\", path: \"/media/v1/images/\", prefix: true},\n {method: \"GET\", path: \"/media/v1/languages\"},\n {method: \"GET\", path: \"/posts/v1/feeds/\", prefix: true},\n {method: \"POST\", path: \"/billing/webhooks/stripe\"},\n {method: \"POST\", path: \"/webhooks/storage\"},\n {method: \"POST\", path: \"/platform/auth/v1/token\"},\n {method: \"POST\", path: \"/platform/auth/v1/refresh\"},\n];\n\nfunction isPublicRoute(method: string, pathname: string): boolean {\n const match = method.toUpperCase();\n return publicRoutes.some(({method: m, path, prefix}) => match === m && (prefix ? pathname.startsWith(path) : pathname === path));\n}\n\nexport function configureSdkClient(): void {\n if (configured) return;\n configured = true;\n\n client.setConfig({baseUrl: apiURL.get()});\n\n apiURL.subscribe((url) => {\n client.setConfig({baseUrl: url});\n });\n\n client.interceptors.request.use(async (request) => {\n if (request.headers.has(\"Authorization\")) {\n return request;\n }\n const {pathname} = new URL(request.url);\n if (isPublicRoute(request.method, pathname)) {\n return request;\n }\n const token = await tokenResolver();\n // Sending the request bare would come back as a gateway 401 indistinguishable\n // from an invalid token, hiding the real cause (no session, or a limited-access\n // flow that withholds full-scope tokens). Fail here instead, with the same\n // status so downstream error maps keyed on 401 still apply.\n if (!token) {\n throw new ApiError(\"No access token available for an authenticated request\", HTTP_STATUS.UNAUTHORIZED, pathname);\n }\n request.headers.set(\"Authorization\", `Bearer ${token}`);\n return request;\n });\n\n // The generated client throws the parsed error body (a plain object or string),\n // which defeats every instanceof-based status mapping downstream. Wrap it into\n // an ApiError carrying the HTTP status so apiCall error maps and consumers can\n // handle errors by code.\n client.interceptors.error.use((error, response, request) => {\n if (error instanceof Error) {\n return error;\n }\n const body = isWireErrorBody(error) ? error : undefined;\n const status = response?.status ?? body?.code ?? 0;\n const message = body?.error || body?.details || (typeof error === \"string\" ? error : \"Request failed\");\n const endpoint = request ? new URL(request.url).pathname : \"\";\n return new ApiError(message, status, endpoint, error);\n });\n}\n","import {SOCIAL_CONNECT_KEY_PREFIX} from \"../constants\";\n\nconst socialStoragePath = (provider: string) => SOCIAL_CONNECT_KEY_PREFIX + provider;\n\n/**\n * Sets a flag indicating that a social provider connection is being attempted\n * @param provider The provider identifier\n */\nexport function setSocialConnectAttempt(provider: string): void {\n sessionStorage.setItem(socialStoragePath(provider), \"true\");\n}\n\n/**\n * Checks if there's a pending social provider connection attempt\n * @param provider The provider identifier\n * @returns True if there's a pending connection attempt, false otherwise\n */\nexport function hasSocialConnectAttempt(provider: string): boolean {\n return sessionStorage.getItem(socialStoragePath(provider)) === \"true\";\n}\n\n/**\n * Clears the social provider connection attempt flag\n * @param provider The provider identifier\n */\nexport function clearSocialConnectAttempt(provider: string): void {\n sessionStorage.removeItem(socialStoragePath(provider));\n}\n","import {ApiError} from \"./types\";\nexport {ApiError};\n\n/**\n * Helper to create error functions - reduces bundle size by reusing error creation logic\n */\nexport const err =\n (message: string): (() => Error) =>\n () =>\n new Error(message);\n\ntype CommonErrors = {\n unauthorized: () => Error;\n badRequest: () => Error;\n notFound: () => Error;\n conflict: () => Error;\n forbidden: () => Error;\n tooManyRequests: () => Error;\n};\n\n/** Reusable error handlers for common cases - reduces repetitive error messages */\nexport const commonErrors: CommonErrors = {\n unauthorized: err(\"User is not authorized\"),\n badRequest: err(\"Bad request\"),\n notFound: err(\"Not found\"),\n conflict: err(\"Resource already exists\"),\n forbidden: err(\"Forbidden\"),\n tooManyRequests: err(\"Too many requests\"),\n};\n\n/**\n * Standard error handler for API errors with custom status code handling\n */\nexport const handleApiError = (error: unknown, statusHandlers: Record<number, () => Error>): never => {\n if (error instanceof ApiError) {\n const handler = statusHandlers[error.status];\n if (handler) {\n throw new ApiError(handler().message, error.status, error.endpoint, error.data);\n }\n throw error;\n }\n throw error;\n};\n","import {initDeferred} from \"../initialization\";\nimport {handleApiError} from \"./error-handlers\";\n\n/**\n * Generic helper for API calls to handle initialization and error handling\n * @param fn The async function to execute\n * @param errorMap A map of status codes to error functions\n * @returns The result of the function execution\n */\nexport const apiCall = async <T>(fn: () => Promise<T>, errorMap: Record<number, () => Error> = {}): Promise<T> => {\n await initDeferred.promise;\n\n try {\n return await fn();\n } catch (error) {\n return handleApiError(error, errorMap);\n }\n};\n","import {setTokens} from \"../authStore\";\n\ninterface TokenFields {\n access_token?: string;\n refresh_token?: string;\n expires_in?: number | string;\n}\n\n// Persists tokens when a response carries all three fields.\nexport function persistTokens(data: TokenFields | null | undefined): boolean {\n const tokens = data ?? {};\n if (tokens.access_token && tokens.refresh_token && tokens.expires_in) {\n setTokens(tokens.access_token, tokens.refresh_token, Number(tokens.expires_in));\n return true;\n }\n return false;\n}\n","import * as v from \"valibot\";\n\n/**\n * 🛡️ INPUT VALIDATION UTILITY\n * Validates data before API calls and throws user-friendly errors\n */\nexport const validateInput = <T>(schema: v.BaseSchema<unknown, T, v.BaseIssue<unknown>>, data: unknown): T => {\n try {\n return v.parse(schema, data);\n } catch (error) {\n if (error instanceof v.ValiError) {\n const firstError = error.issues[0];\n throw new Error(firstError.message);\n }\n throw error;\n }\n};\n\nexport const EmailSchema = v.pipe(\n v.string(\"Email must be text\"),\n v.email(\"Please enter a valid email address\"),\n v.minLength(1, \"Email is required\")\n);\n\nexport const PasswordSchema = v.pipe(\n v.string(\"Password must be text\"),\n v.minLength(8, \"Password must be at least 8 characters long\"),\n v.regex(/[A-Z]/, \"Password must contain at least one uppercase letter\"),\n v.regex(/[a-z]/, \"Password must contain at least one lowercase letter\"),\n v.regex(/[0-9]/, \"Password must contain at least one number\")\n);\n\n/**\n * Username validation schema\n * - Must be 4-24 characters\n * - Only letters, numbers, underscores, and periods\n */\nexport const UsernameSchema = v.pipe(\n v.string(\"Username must be text\"),\n v.minLength(4, \"Username must be 4-24 characters long\"),\n v.maxLength(24, \"Username must be 4-24 characters long\"),\n v.regex(/^[a-z0-9_.]+$/, \"Username can only contain lowercase letters, numbers, dots and underscores\")\n);\n\n/**\n * Name validation schema\n * - Must be 1-30 characters\n */\nexport const NameSchema = v.pipe(\n v.string(\"Name must be text\"),\n v.minLength(1, \"Name must be 1-30 characters long\"),\n v.maxLength(30, \"Name must be 1-30 characters long\")\n);\n\n/**\n * Domain validation schema\n * - Must be lowercase\n * - Must contain at least one dot\n * - Only alphanumeric characters, hyphens, and dots\n * - Cannot start or end with hyphen in any part\n */\nexport const DomainSchema = v.pipe(\n v.string(\"Domain must be text\"),\n v.trim(),\n v.toLowerCase(),\n v.minLength(1, \"Domain is required\"),\n v.regex(\n /^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$/,\n \"Invalid domain format. Please enter a valid domain like company.com\"\n )\n);\n","import * as v from \"valibot\";\nimport {EmailSchema, PasswordSchema} from \"./base\";\n\nexport const EmailAuthRequestSchema = v.object({\n email: EmailSchema,\n password: PasswordSchema,\n});\n\n// Matches auth.v1.RegisterRequest: email, password, country_code?, subscribe_to_blog?\nexport const RegisterRequestSchema = v.object({\n email: EmailSchema,\n password: PasswordSchema,\n country_code: v.optional(v.string()),\n subscribe_to_blog: v.optional(v.boolean()),\n});\n\nexport const ResetPasswordRequestSchema = v.object({\n token: v.string(),\n new_password: PasswordSchema,\n});\n\nexport const LoginOTPVerifyRequestSchema = v.object({\n code: v.pipe(\n v.string(\"OTP code must be text\"),\n v.maxLength(8, \"OTP code must be at most 6 characters\"),\n v.regex(/^\\d+$/, \"OTP code must contain only numbers\")\n ),\n session_id: v.pipe(v.string(\"Session ID must be text\"), v.minLength(1, \"Session ID is required\")),\n});\n\nexport const ResendEmailRequestSchema = v.object({\n email: EmailSchema,\n});\n\nexport const ChangeEmailRequestSchema = v.object({\n new_email: EmailSchema,\n});\n\nexport const verifyEmailChangeRequestSchema = v.object({\n code: v.pipe(\n v.string(\"OTP code must be text\"),\n v.minLength(6, \"OTP code must be at least 6 characters\"),\n v.maxLength(8, \"OTP code must be at most 8 characters\"),\n v.regex(/^\\d+$/, \"OTP code must contain only numbers\")\n ),\n new_email: v.optional(EmailSchema),\n type: v.union([v.literal(\"verification\"), v.literal(\"email_change\")]),\n verification_id: v.string(\"Verification ID is required\"),\n});\n\n/**\n * Social provider schemas\n */\nexport const ConnectProviderSchema = v.object({\n provider: v.pipe(v.string(\"Provider must be text\"), v.minLength(1, \"Provider is required\")),\n token: v.pipe(v.string(\"Token must be text\"), v.minLength(1, \"Token is required\")),\n});\n\n/**\n * OTP verification schema (for user OTP operations)\n */\nexport const VerifyOTPCodeSchema = v.object({\n code: v.pipe(\n v.string(\"OTP code must be text\"),\n v.minLength(6, \"OTP code must be at least 6 characters\"),\n v.regex(/^\\d+$/, \"OTP code must contain only numbers\")\n ),\n});\n","import {\n authV1ProvidersServiceListProviders,\n authV1ProvidersServiceConnectProvider,\n authV1ProvidersServiceDisconnectProvider,\n} from \"../../generated/sdk.gen\";\nimport type {AuthV1ExternalAccountProvider} from \"../../generated/types.gen\";\nimport {login} from \"../authStore\";\nimport {AuthProvider} from \"../providers/types\";\nimport {setSocialConnectAttempt} from \"./socialState\";\nimport {apiCall} from \"../api/utils\";\nimport {persistTokens} from \"../api/tokens\";\nimport {HTTP_STATUS} from \"../constants\";\nimport {validateInput} from \"../validation/base\";\nimport {ConnectProviderSchema} from \"../validation/auth\";\n\nexport type ProviderType = \"google\" | \"apple\" | \"microsoft\" | \"facebook\" | \"telegram\";\n\nexport interface ConnectedProvider {\n provider: ProviderType;\n username?: string;\n first_name?: string;\n last_name?: string;\n email_address?: string;\n image_url?: string;\n}\n\nconst PROVIDER_TO_PROTO: Record<ProviderType, AuthV1ExternalAccountProvider> = {\n google: \"EXTERNAL_ACCOUNT_PROVIDER_GOOGLE\",\n apple: \"EXTERNAL_ACCOUNT_PROVIDER_APPLE\",\n microsoft: \"EXTERNAL_ACCOUNT_PROVIDER_MICROSOFT\",\n facebook: \"EXTERNAL_ACCOUNT_PROVIDER_FACEBOOK\",\n telegram: \"EXTERNAL_ACCOUNT_PROVIDER_TELEGRAM\",\n};\n\nconst PROVIDER_FROM_PROTO: Partial<Record<AuthV1ExternalAccountProvider, ProviderType>> = {\n EXTERNAL_ACCOUNT_PROVIDER_GOOGLE: \"google\",\n EXTERNAL_ACCOUNT_PROVIDER_APPLE: \"apple\",\n EXTERNAL_ACCOUNT_PROVIDER_MICROSOFT: \"microsoft\",\n EXTERNAL_ACCOUNT_PROVIDER_FACEBOOK: \"facebook\",\n EXTERNAL_ACCOUNT_PROVIDER_TELEGRAM: \"telegram\",\n};\n\n// Both Telegram login flavors connect the same external account.\nconst normalizeProviderType = (provider: string): ProviderType =>\n provider === AuthProvider.TELEGRAM_WEB || provider === AuthProvider.TELEGRAM_MINI_APP ? \"telegram\" : (provider as ProviderType);\n\nconst toProtoProvider = (provider: ProviderType): AuthV1ExternalAccountProvider => {\n const proto = PROVIDER_TO_PROTO[provider];\n if (!proto) {\n throw new Error(`Unknown provider: ${provider}`);\n }\n return proto;\n};\n\nexport const listSocials = async (): Promise<ConnectedProvider[]> => {\n return apiCall(\n async () => {\n const {data} = await authV1ProvidersServiceListProviders({\n throwOnError: true,\n });\n return (data.providers ?? []).flatMap((p) => {\n const provider = p.provider ? PROVIDER_FROM_PROTO[p.provider] : undefined;\n if (!provider) return [];\n return [\n {\n provider,\n username: p.username,\n first_name: p.first_name,\n last_name: p.last_name,\n email_address: p.email_address,\n image_url: p.image_url,\n },\n ];\n });\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to list providers!\"),\n }\n );\n};\n\nexport const connectSocialInternal = async (provider: string, token: string): Promise<void> => {\n return apiCall(\n async () => {\n const requestBody = validateInput(ConnectProviderSchema, {provider, token});\n const {data} = await authV1ProvidersServiceConnectProvider({\n body: {\n provider: toProtoProvider(normalizeProviderType(requestBody.provider)),\n token: requestBody.token,\n },\n throwOnError: true,\n });\n persistTokens(data);\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to connect provider!\"),\n }\n );\n};\n\nexport const disconnectSocial = async (provider: ProviderType): Promise<void> => {\n return apiCall(\n async () => {\n await authV1ProvidersServiceDisconnectProvider({\n path: {provider: toProtoProvider(provider)},\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to disconnect provider!\"),\n [HTTP_STATUS.NOT_FOUND]: () => new Error(\"Provider not found!\"),\n [HTTP_STATUS.BAD_REQUEST]: () => new Error(\"Cannot disconnect the last social provider!\"),\n }\n );\n};\n\nexport const connectSocial = (provider: ProviderType): void => {\n setSocialConnectAttempt(provider);\n login(provider);\n};\n","import ky, {type KyInstance} from \"ky\";\nimport {apiURL} from \"../api-url\";\n\n/**\n * Token refresh function type - will be set during initialization\n */\nexport type TokenRefreshFn = () => Promise<string | undefined>;\nlet tokenRefreshFunction: TokenRefreshFn | null = null;\n\n/**\n * Mutex to prevent multiple simultaneous token refreshes\n */\nlet tokenRefreshPromise: Promise<string | undefined> | null = null;\n\n/**\n * Resets the API client state - primarily for testing\n */\nexport const resetApiClient = (): void => {\n tokenRefreshFunction = null;\n tokenRefreshPromise = null;\n};\n\n/**\n * Sets the token refresh function used by the API client\n * This should be called during initialization\n */\nexport const setTokenRefreshFunction = (fn?: TokenRefreshFn): void => {\n tokenRefreshFunction = fn ?? null;\n};\n\n/**\n * Refreshes the token with mutex locking to prevent race conditions\n */\nexport const refreshTokenWithLock = async (): Promise<string | undefined> => {\n // If a refresh is already in progress, wait for it\n if (tokenRefreshPromise) {\n return tokenRefreshPromise;\n }\n\n // Start a new refresh\n tokenRefreshPromise = (async () => {\n try {\n if (!tokenRefreshFunction) {\n throw new Error(\"Token refresh function not initialized\");\n }\n return await tokenRefreshFunction();\n } finally {\n // Clear the promise when done\n tokenRefreshPromise = null;\n }\n })();\n\n return tokenRefreshPromise;\n};\n\n/**\n * Creates a ky instance with proper auth handling and retry logic\n */\nexport const createKyInstance = (getTokenFn: () => Promise<string | undefined>, skipAuth = false): KyInstance => {\n return ky.create({\n prefix: apiURL.get(),\n retry: {\n limit: 2,\n methods: [\"get\", \"put\", \"head\", \"delete\", \"options\", \"trace\"],\n // Removed 413 (Payload Too Large) as retrying won't fix it\n statusCodes: [408, 429, 500, 502, 503, 504],\n // Don't retry 401 automatically - we handle it in hooks\n },\n hooks: {\n beforeRequest: [\n async ({request}) => {\n if (!skipAuth) {\n const token = await getTokenFn();\n if (token) {\n request.headers.set(\"Authorization\", `Bearer ${token}`);\n }\n }\n },\n ],\n afterResponse: [\n async ({request, response}) => {\n // Handle 401 Unauthorized - attempt token refresh and retry\n if (response.status === 401 && !skipAuth) {\n try {\n // Refresh the token (with mutex lock)\n const newToken = await refreshTokenWithLock();\n\n if (newToken) {\n // Update the request with new token\n request.headers.set(\"Authorization\", `Bearer ${newToken}`);\n // Retry the request with ky's built-in retry mechanism\n return ky(request);\n }\n } catch (error) {\n // If refresh fails, let the 401 propagate\n console.warn(\"Token refresh failed:\", error);\n }\n }\n\n return response;\n },\n ],\n },\n });\n};\n","let loginRedirectUrl: string | undefined;\n\nexport const setLoginRedirectUrl = (url?: string): void => {\n loginRedirectUrl = url;\n};\n\nexport const redirectToLogin = (): void => {\n if (!loginRedirectUrl) return;\n if (typeof window === \"undefined\") return;\n\n window.location.href = loginRedirectUrl;\n};\n","import {getToken, refreshToken, authError, setTokens, setLimitedAccessState, clearLimitedAccessState} from \"./authStore\";\nimport {ApiError} from \"./api/types\";\nimport {HTTP_STATUS} from \"./constants\";\nimport type {TokenResponse, LimitedScopeTokenResponse, RequiresAction} from \"./types\";\nimport type {LoginErrorCode} from \"./auth/types\";\nimport {apiURL} from \"./api-url\";\nimport {refreshTokens} from \"./api/refresh-tokens\";\nimport {initDeferred} from \"./initialization\";\nimport {configureSdkClient} from \"./api/sdk-client\";\nimport {\n type GoogleProviderConfig,\n type TelegramProviderConfig,\n type AppleProviderConfig,\n type MicrosoftProviderConfig,\n googleConfig,\n telegramConfig,\n appleConfig,\n microsoftConfig,\n updateGoogleAuthUrl,\n updateAppleAuthUrl,\n updateMicrosoftAuthUrl,\n updateTelegramAuthUrl,\n getProviderToken,\n detectProvider,\n AuthProvider,\n} from \"./providers\";\nimport {clearSocialConnectAttempt, hasSocialConnectAttempt} from \"./social/socialState\";\nimport {connectSocialInternal} from \"./social/socialConnections\";\nimport {setTokenRefreshFunction} from \"./api/client-core\";\nimport {setLoginRedirectUrl} from \"./authConfig\";\n\n/**\n * Configuration options for the authentication client\n */\nexport interface AuthClientConfig {\n /** The base URL of the authentication API */\n apiUrl: string;\n /** Optional login redirect URL used when auth expires */\n loginRedirectUrl?: string;\n /** Google authentication provider configuration (optional) */\n googleProvider?: GoogleProviderConfig;\n /** Apple authentication provider configuration (optional) */\n appleProvider?: AppleProviderConfig;\n /** Microsoft authentication provider configuration (optional) */\n microsoftProvider?: MicrosoftProviderConfig;\n /** Telegram authentication provider configuration (optional) */\n telegramProvider?: TelegramProviderConfig;\n}\n\n/**\n * Initializes the authentication client with the provided configuration\n * @param config The authentication client configuration\n * @returns A promise that resolves to the current access token (if available)\n */\nexport const initClient = async (config: AuthClientConfig): Promise<string | undefined> => {\n await initConfig(config);\n await initPage();\n initDeferred.resolve();\n await initSocials();\n return getToken();\n};\n\nconst initConfig = async (config: AuthClientConfig) => {\n // Set the API URL\n apiURL.set(config.apiUrl);\n configureSdkClient();\n setLoginRedirectUrl(config.loginRedirectUrl);\n\n // Initialize the token refresh function for ky client\n // This enables automatic 401 retry with token refresh\n setTokenRefreshFunction(async () => {\n const currentRefreshToken = refreshToken.get();\n if (currentRefreshToken) {\n const result = await refreshTokens(AuthProvider.BEARER, currentRefreshToken);\n // Store new tokens if full response (not limited scope)\n if (result && !(\"requires_action\" in result)) {\n setTokens(result.access_token, result.refresh_token, result.expires_in);\n }\n return getToken();\n }\n return undefined;\n });\n\n // Set provider configurations and update auth URLs\n if (config.googleProvider) {\n googleConfig.set(config.googleProvider);\n updateGoogleAuthUrl();\n }\n\n if (config.appleProvider) {\n appleConfig.set(config.appleProvider);\n updateAppleAuthUrl();\n }\n\n if (config.microsoftProvider) {\n microsoftConfig.set(config.microsoftProvider);\n updateMicrosoftAuthUrl();\n }\n\n if (config.telegramProvider) {\n telegramConfig.set(config.telegramProvider);\n updateTelegramAuthUrl();\n }\n};\n\nconst isLimitedScopeTokenResponse = (result: TokenResponse | LimitedScopeTokenResponse): result is LimitedScopeTokenResponse => {\n return \"requires_action\" in result;\n};\n\nconst applyTokenExchangeResult = (result: TokenResponse | LimitedScopeTokenResponse): void => {\n if (isLimitedScopeTokenResponse(result)) {\n setLimitedAccessState(result.access_token, result.requires_action as RequiresAction);\n return;\n }\n\n const fullResult = result as TokenResponse;\n setTokens(fullResult.access_token, fullResult.refresh_token, fullResult.expires_in);\n};\n\nconst setAuthErrorAndClear = (error_code: LoginErrorCode, message: string, email: string): true => {\n clearLimitedAccessState();\n authError.set({error_code, message, email});\n return true;\n};\n\nconst extractAuthErrorInfo = (error: ApiError): {error: string; description: string; email: string} => {\n const data = error.data as {error?: string; error_description?: string; email?: string} | undefined;\n return {\n error: data?.error ?? \"\",\n description: data?.error_description ?? error.message ?? \"\",\n email: data?.email ?? \"\",\n };\n};\n\nconst handleInitPageApiError = (error: ApiError): boolean => {\n const info = extractAuthErrorInfo(error);\n\n if (error.status === HTTP_STATUS.BAD_REQUEST && info.error === \"invalid_grant\") {\n return setAuthErrorAndClear(\"email_not_verified\", info.description, info.email);\n }\n\n if (error.status === HTTP_STATUS.CONFLICT) {\n return setAuthErrorAndClear(\"provider_conflict\", info.description, info.email);\n }\n\n return false;\n};\n\nconst exchangeProviderToken = async (provider: AuthProvider, token: string): Promise<void> => {\n const result = await refreshTokens(provider, token);\n applyTokenExchangeResult(result);\n};\n\nconst initPage = async () => {\n const provider = detectProvider();\n if (!provider) return undefined;\n\n const token = getProviderToken(provider);\n if (!token) return undefined;\n\n try {\n await exchangeProviderToken(provider, token);\n } catch (error) {\n if (error instanceof ApiError && handleInitPageApiError(error)) {\n return;\n }\n throw error;\n }\n};\n\nconst initSocials = async () => {\n const provider = detectProvider();\n if (!provider) return undefined;\n\n const token = getProviderToken(provider);\n if (!token) return undefined;\n\n // Check if this is a social connection attempt\n try {\n if (hasSocialConnectAttempt(provider)) {\n await connectSocialInternal(provider, token);\n }\n } finally {\n clearSocialConnectAttempt(provider);\n }\n};\n","import {atom, type WritableAtom} from \"nanostores\";\nimport {platformauthV1PlatformAuthServiceExchangeApiKey, platformauthV1PlatformAuthServiceRefreshPlatformToken} from \"../generated/sdk.gen\";\nimport {isTokenExpired} from \"../auth/utils/jwt\";\n\n// Platform/API-key credential state — deliberately separate from `authStore.ts`'s\n// end-user session atoms (isLogged, accessToken, user). An API key represents a\n// developer/server credential, not a logged-in user, and must never be able to\n// flip isLogged or feed decodeAndSetUser.\nexport const platformAccessToken: WritableAtom<string | undefined> = atom(undefined);\nexport const platformRefreshToken: WritableAtom<string | undefined> = atom(undefined);\nexport const platformExpireAt: WritableAtom<number> = atom(0);\n\nlet currentPlatformTokenPromise: Promise<string | undefined> | null = null;\n\nconst setPlatformTokens = (access: string, refresh: string, expiresIn: number): void => {\n platformAccessToken.set(access);\n platformRefreshToken.set(refresh);\n platformExpireAt.set(Date.now() + expiresIn * 1000);\n};\n\nconst clearPlatformTokens = (): void => {\n platformAccessToken.set(undefined);\n platformRefreshToken.set(undefined);\n platformExpireAt.set(0);\n};\n\nexport const exchangeApiKey = async (apiKey: string): Promise<void> => {\n const {data} = await platformauthV1PlatformAuthServiceExchangeApiKey({\n body: {api_key: apiKey},\n throwOnError: true,\n });\n if (!data.access_token || !data.refresh_token) {\n throw new Error(\"Platform token exchange did not return tokens\");\n }\n setPlatformTokens(data.access_token, data.refresh_token, Number(data.expires_in ?? 0));\n};\n\nconst refreshPlatformAccessToken = async (refresh: string): Promise<void> => {\n const {data} = await platformauthV1PlatformAuthServiceRefreshPlatformToken({\n body: {refresh_token: refresh},\n throwOnError: true,\n });\n if (!data.access_token || !data.refresh_token) {\n throw new Error(\"Platform token refresh did not return tokens\");\n }\n setPlatformTokens(data.access_token, data.refresh_token, Number(data.expires_in ?? 0));\n};\n\nconst ensureValidPlatformToken = async (refresh: string): Promise<void> => {\n const currentAccessToken = platformAccessToken.get();\n if (currentAccessToken && !isTokenExpired(platformExpireAt.get())) {\n return;\n }\n\n try {\n await refreshPlatformAccessToken(refresh);\n } catch (refreshError) {\n console.error(\"Platform token refresh failed in getPlatformToken:\", refreshError);\n clearPlatformTokens();\n throw refreshError;\n }\n};\n\nexport const getPlatformToken = async (): Promise<string | undefined> => {\n if (currentPlatformTokenPromise) {\n return currentPlatformTokenPromise;\n }\n\n // Check synchronously, before creating the memoized promise below. If this\n // lived inside the async IIFE, a caller with no refresh token yet would hit\n // `return` with no prior `await`, letting the `finally` run (and null out\n // currentPlatformTokenPromise) synchronously, before the outer assignment on\n // the next line even completes — clobbering it right back to the resolved\n // promise and leaking a stale cache entry forever.\n const currentRefreshToken = platformRefreshToken.get();\n if (!currentRefreshToken) return undefined;\n\n currentPlatformTokenPromise = (async () => {\n try {\n await ensureValidPlatformToken(currentRefreshToken);\n\n return platformAccessToken.get();\n } finally {\n currentPlatformTokenPromise = null;\n }\n })();\n\n return currentPlatformTokenPromise;\n};\n","import {client} from \"./generated/client.gen\";\nimport {initClient} from \"./auth/init\";\nimport {apiURL} from \"./auth/api-url\";\nimport {configureSdkClient, setTokenResolver} from \"./auth/api/sdk-client\";\nimport {exchangeApiKey, getPlatformToken} from \"./platform/platformAuthStore\";\nimport type {GoogleProviderConfig, AppleProviderConfig, MicrosoftProviderConfig, TelegramProviderConfig} from \"./auth/providers\";\n\nexport interface AuthConfig {\n loginRedirectUrl?: string;\n google?: GoogleProviderConfig;\n apple?: AppleProviderConfig;\n microsoft?: MicrosoftProviderConfig;\n telegram?: TelegramProviderConfig;\n}\n\nexport interface ConnectConfig {\n baseUrl: string;\n apiKey?: string;\n token?: string;\n auth?: AuthConfig;\n}\n\nexport const connect = async (config: ConnectConfig): Promise<string | undefined> => {\n // apiURL is the canonical baseUrl store configureSdkClient() reads from and\n // stays subscribed to; setting it here (not just client.setConfig) keeps\n // apiKey/token-only mode (no `auth`) from having its baseUrl silently reset\n // to \"\" the first time configureSdkClient() runs.\n apiURL.set(config.baseUrl);\n client.setConfig({baseUrl: config.baseUrl});\n\n if (config.apiKey) {\n // Exchange the API key for a real Bearer token up front rather than\n // forwarding it raw as X-API-Key on every request — the gateway's\n // /platform/auth/v1/token exchange is the supported flow; sending the raw\n // key directly on arbitrary routes gets rejected with 401.\n await exchangeApiKey(config.apiKey);\n setTokenResolver(getPlatformToken);\n configureSdkClient();\n }\n\n if (config.token) {\n setTokenResolver(async () => config.token);\n configureSdkClient();\n }\n\n if (config.auth) {\n return initClient({\n apiUrl: config.baseUrl,\n loginRedirectUrl: config.auth.loginRedirectUrl,\n googleProvider: config.auth.google,\n appleProvider: config.auth.apple,\n microsoftProvider: config.auth.microsoft,\n telegramProvider: config.auth.telegram,\n });\n }\n\n return undefined;\n};\n","import {authV1TokenServiceLogout} from \"../../generated/sdk.gen\";\nimport {refreshToken, removeTokens} from \"../authStore\";\n\nexport const logout = async (): Promise<void> => {\n try {\n await authV1TokenServiceLogout({body: {token: refreshToken.get()}, throwOnError: true});\n } catch {\n // Revocation failed — still clear local state\n } finally {\n removeTokens();\n }\n};\n","// Membership role and state types\nexport enum MembershipRole {\n OWNER = \"owner\",\n ADMIN = \"admin\",\n MEMBER = \"member\",\n}\n\nexport type AssignableRole = MembershipRole.ADMIN | MembershipRole.MEMBER;\n\nexport enum MembershipState {\n ACCEPTED = \"accepted\",\n PENDING = \"pending\",\n DECLINED = \"declined\",\n ACCEPT = \"accept\",\n DECLINE = \"decline\",\n}\n\nexport interface Common {\n id: string;\n user_id: string;\n org_id: string;\n role: MembershipRole;\n state: MembershipState;\n joined_at?: string;\n}\n\nexport interface Membership extends Common {\n organization_username: string;\n organization_first_name: string;\n organization_last_name: string;\n}\n\nexport interface Member extends Common {\n username: string;\n first_name: string;\n last_name: string;\n invitation_expires_at?: string;\n}\n\nexport interface MembershipApplication extends Common {\n organization_username: string;\n organization_first_name: string;\n organization_last_name: string;\n created_at?: string;\n decided_at?: string;\n invitation_expires_at?: string;\n}\n\n// Invite member request\nexport interface InviteMemberRequest {\n username: string;\n role: AssignableRole;\n}\n\n// Resend Invite member request\nexport interface ResendInviteMemberRequest {\n user_id: string;\n}\n\n// Update member role request\nexport interface UpdateMemberRoleRequest {\n role: AssignableRole;\n}\n","import type {\n AuthV1Membership,\n AuthV1MembershipApplication,\n AuthV1MembershipApplicationState,\n AuthV1OrgMember,\n AuthV1MembershipRole,\n AuthV1MembershipState,\n} from \"../../generated/types.gen\";\nimport {MembershipRole, MembershipState, type Membership, type Member, type MembershipApplication} from \"./types\";\n\nconst ROLE_FROM_PROTO: Record<AuthV1MembershipRole, MembershipRole> = {\n MEMBERSHIP_ROLE_UNSPECIFIED: MembershipRole.MEMBER,\n MEMBERSHIP_ROLE_OWNER: MembershipRole.OWNER,\n MEMBERSHIP_ROLE_ADMIN: MembershipRole.ADMIN,\n MEMBERSHIP_ROLE_MEMBER: MembershipRole.MEMBER,\n};\n\nconst STATE_FROM_PROTO: Record<AuthV1MembershipState, MembershipState> = {\n MEMBERSHIP_STATE_UNSPECIFIED: MembershipState.PENDING,\n MEMBERSHIP_STATE_ACTIVE: MembershipState.ACCEPTED,\n MEMBERSHIP_STATE_SUSPENDED: MembershipState.PENDING,\n MEMBERSHIP_STATE_LEFT: MembershipState.DECLINED,\n MEMBERSHIP_STATE_REMOVED: MembershipState.DECLINED,\n};\n\nconst APPLICATION_STATE_FROM_PROTO: Record<AuthV1MembershipApplicationState, MembershipState> = {\n MEMBERSHIP_APPLICATION_STATE_UNSPECIFIED: MembershipState.PENDING,\n MEMBERSHIP_APPLICATION_STATE_PENDING: MembershipState.PENDING,\n MEMBERSHIP_APPLICATION_STATE_APPROVED: MembershipState.ACCEPTED,\n MEMBERSHIP_APPLICATION_STATE_DECLINED: MembershipState.DECLINED,\n MEMBERSHIP_APPLICATION_STATE_CANCELLED: MembershipState.DECLINED,\n};\n\nfunction toRole(role?: AuthV1MembershipRole): MembershipRole {\n return ROLE_FROM_PROTO[role ?? \"MEMBERSHIP_ROLE_UNSPECIFIED\"];\n}\n\nfunction toState(state?: AuthV1MembershipState): MembershipState {\n return STATE_FROM_PROTO[state ?? \"MEMBERSHIP_STATE_UNSPECIFIED\"];\n}\n\nfunction toApplicationState(state?: AuthV1MembershipApplicationState): MembershipState {\n return APPLICATION_STATE_FROM_PROTO[state ?? \"MEMBERSHIP_APPLICATION_STATE_UNSPECIFIED\"];\n}\n\nexport function toMembership(m: AuthV1Membership): Membership {\n return {\n id: m.id ?? \"\",\n user_id: m.user_id ?? \"\",\n org_id: m.org_id ?? \"\",\n role: toRole(m.role),\n state: toState(m.state),\n joined_at: m.joined_at,\n organization_username: m.organization_username ?? \"\",\n organization_first_name: m.organization_first_name ?? \"\",\n organization_last_name: m.organization_last_name ?? \"\",\n };\n}\n\nexport function toMembershipApplication(m: AuthV1MembershipApplication): MembershipApplication {\n return {\n id: m.id ?? \"\",\n user_id: m.user_id ?? \"\",\n org_id: m.org_id ?? \"\",\n role: toRole(m.role),\n state: toApplicationState(m.state),\n organization_username: m.organization_username ?? \"\",\n organization_first_name: m.organization_first_name ?? \"\",\n organization_last_name: m.organization_last_name ?? \"\",\n created_at: m.created_at,\n decided_at: m.decided_at,\n invitation_expires_at: m.invitation_expires_at,\n };\n}\n\nexport function toMember(m: AuthV1OrgMember): Member {\n return {\n id: m.id ?? \"\",\n user_id: m.user_id ?? \"\",\n org_id: m.org_id ?? \"\",\n role: toRole(m.role),\n state: toState(m.state),\n joined_at: m.joined_at,\n username: m.username ?? \"\",\n first_name: m.first_name ?? \"\",\n last_name: m.last_name ?? \"\",\n invitation_expires_at: m.invitation_expires_at,\n };\n}\n","import {\n authV1MembershipServiceListMemberships,\n authV1MembershipServiceListMembershipApplications,\n authV1MembershipServiceListOrganizationMembers,\n} from \"../../generated/sdk.gen\";\nimport {apiCall} from \"../api/utils\";\nimport {HTTP_STATUS} from \"../constants\";\nimport {toMembership, toMembershipApplication, toMember} from \"./mappers\";\nimport type {PaginationParams} from \"../pagination-utils\";\nimport type {Membership, MembershipApplication, Member} from \"./types\";\n\nexport const listActiveMemberships = async (paginationParams?: PaginationParams): Promise<Membership[]> => {\n return apiCall(\n async () => {\n const {data} = await authV1MembershipServiceListMemberships({\n query: {state: \"MEMBERSHIP_STATE_ACTIVE\", limit: 25, ...paginationParams},\n throwOnError: true,\n });\n\n return (data.memberships || []).map(toMembership);\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to list memberships!\"),\n }\n );\n};\n\nexport const listPendingMemberships = async (paginationParams?: PaginationParams): Promise<MembershipApplication[]> => {\n return apiCall(\n async () => {\n const {data} = await authV1MembershipServiceListMembershipApplications({\n query: {state: \"MEMBERSHIP_APPLICATION_STATE_PENDING\", limit: 25, ...paginationParams},\n throwOnError: true,\n });\n\n return (data.applications || []).map(toMembershipApplication);\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to list membership applications!\"),\n }\n );\n};\n\nexport const listOrganizationMembers = async (orgId: string, paginationParams?: PaginationParams): Promise<Member[]> => {\n return apiCall(\n async () => {\n const {data} = await authV1MembershipServiceListOrganizationMembers({\n path: {\"user.org_id\": orgId},\n query: paginationParams,\n throwOnError: true,\n });\n\n return (data.members || []).map(toMember);\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to list organization members!\"),\n }\n );\n};\n","import * as v from \"valibot\";\nimport {UsernameSchema} from \"./base\";\n\n/**\n * Membership state schemas\n */\nexport const AcceptDeclineMembershipSchema = v.object({\n state: v.union([v.literal(\"accepted\"), v.literal(\"declined\")]),\n});\n\nexport const PublicInviteResponseSchema = v.object({\n state: v.union([v.literal(\"accept\"), v.literal(\"decline\")]),\n});\n\n/**\n * Membership management schemas\n */\nexport const InviteMemberSchema = v.object({\n username: UsernameSchema,\n role: v.union([v.literal(\"admin\"), v.literal(\"member\")]),\n});\n\nexport const UpdateMemberRoleSchema = v.object({\n role: v.union([v.literal(\"admin\"), v.literal(\"member\")]),\n});\n\nexport const ResendInviteSchema = v.object({\n user_id: v.pipe(v.string(\"User ID must be text\"), v.minLength(1, \"User ID is required\")),\n});\n","import {\n authV1MembershipServiceInviteMember,\n authV1MembershipServiceResendInvitation,\n authV1MembershipServiceAcceptInvitation,\n authV1MembershipServiceDeclineInvitation,\n authV1MembershipServiceUpdateMembershipState,\n} from \"../../generated/sdk.gen\";\nimport type {AuthV1MembershipRole, AuthV1MembershipApplicationState} from \"../../generated/types.gen\";\nimport {apiCall} from \"../api/utils\";\nimport {HTTP_STATUS} from \"../constants\";\nimport {MembershipState, type AssignableRole} from \"./types\";\nimport {validateInput} from \"../validation/base\";\nimport {AcceptDeclineMembershipSchema, PublicInviteResponseSchema, InviteMemberSchema, ResendInviteSchema} from \"../validation/membership\";\n\nconst ROLE_TO_PROTO: Record<AssignableRole, AuthV1MembershipRole> = {\n admin: \"MEMBERSHIP_ROLE_ADMIN\",\n member: \"MEMBERSHIP_ROLE_MEMBER\",\n};\n\nconst STATE_TO_PROTO: Record<\"accepted\" | \"declined\", AuthV1MembershipApplicationState> = {\n accepted: \"MEMBERSHIP_APPLICATION_STATE_APPROVED\",\n declined: \"MEMBERSHIP_APPLICATION_STATE_DECLINED\",\n};\n\nexport const inviteMember = async (orgId: string, username: string, role: AssignableRole): Promise<void> => {\n return apiCall(\n async () => {\n const validated = validateInput(InviteMemberSchema, {username, role});\n await authV1MembershipServiceInviteMember({\n path: {\"user.org_id\": orgId},\n body: {username: validated.username, role: ROLE_TO_PROTO[validated.role]},\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to invite members!\"),\n [HTTP_STATUS.NOT_FOUND]: () => new Error(`User with username ${username} not found!`),\n [HTTP_STATUS.CONFLICT]: () => new Error(`User with username ${username} already exists!`),\n }\n );\n};\n\nexport const resendMemberInvite = async (orgId: string, userId: string): Promise<void> => {\n return apiCall(\n async () => {\n validateInput(ResendInviteSchema, {user_id: userId});\n await authV1MembershipServiceResendInvitation({\n path: {\"user.org_id\": orgId},\n body: {user_id: userId},\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to invite members!\"),\n [HTTP_STATUS.NOT_FOUND]: () => new Error(`User with ID ${userId} not found!`),\n [HTTP_STATUS.CONFLICT]: () => new Error(`User with ID ${userId} already exists!`),\n }\n );\n};\n\nexport const respondToInvitation = async (orgId: string, state: MembershipState.ACCEPTED | MembershipState.DECLINED): Promise<void> => {\n return apiCall(\n async () => {\n const validated = validateInput(AcceptDeclineMembershipSchema, {state}) as {state: \"accepted\" | \"declined\"};\n\n await authV1MembershipServiceUpdateMembershipState({\n path: {\"user.org_id\": orgId},\n body: {state: STATE_TO_PROTO[validated.state]},\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to accept/decline an Invite!\"),\n [HTTP_STATUS.NOT_FOUND]: () => new Error(\"Invite not found!\"),\n }\n );\n};\n\nexport const publicRespondToInvitation = async (token: string, state: MembershipState.ACCEPT | MembershipState.DECLINE): Promise<void> => {\n return apiCall(\n async () => {\n validateInput(PublicInviteResponseSchema, {state});\n\n if (state === MembershipState.ACCEPT) {\n await authV1MembershipServiceAcceptInvitation({\n path: {token},\n throwOnError: true,\n });\n } else {\n await authV1MembershipServiceDeclineInvitation({\n path: {token},\n throwOnError: true,\n });\n }\n },\n {\n [HTTP_STATUS.BAD_REQUEST]: () => new Error(\"Invalid invitation token!\"),\n }\n );\n};\n","import {\n authV1MembershipServiceUpdateActiveMembership,\n authV1MembershipServiceUpdateMemberRole,\n authV1MembershipServiceRemoveMember,\n authV1MembershipServiceLeaveOrganization,\n} from \"../../generated/sdk.gen\";\nimport type {AuthV1MembershipRole} from \"../../generated/types.gen\";\nimport {accessToken, expireAt, getToken} from \"../authStore\";\nimport {apiCall} from \"../api/utils\";\nimport {HTTP_STATUS} from \"../constants\";\nimport type {AssignableRole} from \"./types\";\nimport {validateInput} from \"../validation/base\";\nimport {UpdateMemberRoleSchema} from \"../validation/membership\";\n\nconst ROLE_TO_PROTO: Record<AssignableRole, AuthV1MembershipRole> = {\n admin: \"MEMBERSHIP_ROLE_ADMIN\",\n member: \"MEMBERSHIP_ROLE_MEMBER\",\n};\n\nexport const updateActiveMembership = async (membershipId: string): Promise<void> => {\n return apiCall(\n async () => {\n await authV1MembershipServiceUpdateActiveMembership({\n body: {membership_id: membershipId},\n throwOnError: true,\n });\n accessToken.set(undefined);\n expireAt.set(0);\n await getToken();\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to update active membership!\"),\n }\n );\n};\n\nexport const updateMemberRole = async (orgId: string, userId: string, role: AssignableRole): Promise<void> => {\n return apiCall(\n async () => {\n const validated = validateInput(UpdateMemberRoleSchema, {role});\n await authV1MembershipServiceUpdateMemberRole({\n path: {\"user.org_id\": orgId, user_id: userId},\n body: {role: ROLE_TO_PROTO[validated.role]},\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to update member roles!\"),\n [HTTP_STATUS.NOT_FOUND]: () => new Error(\"Member not found!\"),\n [HTTP_STATUS.FORBIDDEN]: () => new Error(\"Cannot change role of organization owner!\"),\n }\n );\n};\n\nexport const deleteMember = async (orgId: string, userId: string): Promise<void> => {\n return apiCall(\n async () => {\n await authV1MembershipServiceRemoveMember({\n path: {\"user.org_id\": orgId, user_id: userId},\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to delete members!\"),\n [HTTP_STATUS.NOT_FOUND]: () => new Error(\"Member not found!\"),\n [HTTP_STATUS.FORBIDDEN]: () => new Error(\"Cannot remove organization owner!\"),\n }\n );\n};\n\nexport const leaveOrganization = async (orgId: string): Promise<void> => {\n return apiCall(\n async () => {\n await authV1MembershipServiceLeaveOrganization({\n path: {org_id: orgId},\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to leave an organization!\"),\n [HTTP_STATUS.FORBIDDEN]: () => new Error(\"Cannot leave organization as you are the last member!\"),\n [HTTP_STATUS.NOT_FOUND]: () => new Error(\"Organization not found!\"),\n }\n );\n};\n","import * as v from \"valibot\";\nimport {UsernameSchema, NameSchema} from \"./base\";\n\n/**\n * Update username request schema\n */\nexport const UpdateUsernameSchema = v.object({\n username: UsernameSchema,\n});\n\n/**\n * Update name request schema\n */\nexport const UpdateNameSchema = v.object({\n full_name: NameSchema,\n});\n","import {\n authV1UserServiceUpdateName,\n authV1UserServiceUpdateUsername,\n authV1UserServiceGetUserInfo,\n authV1OtpServiceGetOtpStatus,\n authV1OtpServiceSetupOtp,\n authV1OtpServiceVerifyOtp,\n authV1OtpServiceDeleteOtp,\n} from \"../generated/sdk.gen\";\nimport {validateInput} from \"./validation/base\";\nimport {UpdateNameSchema, UpdateUsernameSchema} from \"./validation/user\";\nimport {VerifyOTPCodeSchema} from \"./validation/auth\";\nimport {apiCall} from \"./api/utils\";\nimport {persistTokens} from \"./api/tokens\";\nimport {HTTP_STATUS} from \"./constants\";\n\nexport interface OTPSetup {\n qrCodeUrl: string;\n secret: string;\n}\n\nexport interface OTPStatusResponse {\n is_setup: boolean;\n created_at?: string;\n message?: string;\n}\n\nexport interface OTPVerification {\n access_token?: string;\n refresh_token?: string;\n expires_in?: number;\n}\n\nexport interface UserInfo {\n id: string;\n username: string;\n email: string;\n email_verified: boolean;\n first_name: string;\n last_name: string;\n image_url: string;\n language_code: string;\n country_code: string;\n active_org_id: string;\n}\n\nexport const getUserInfo = async (userId?: string): Promise<UserInfo> => {\n return apiCall(\n async () => {\n const {data} = await authV1UserServiceGetUserInfo({\n query: userId ? {user_id: userId} : undefined,\n throwOnError: true,\n });\n\n return {\n id: data.id ?? \"\",\n username: data.username ?? \"\",\n email: data.email ?? \"\",\n email_verified: data.email_verified ?? false,\n first_name: data.first_name ?? \"\",\n last_name: data.last_name ?? \"\",\n image_url: data.image_url ?? \"\",\n language_code: data.language_code ?? \"\",\n country_code: data.country_code ?? \"\",\n active_org_id: data.active_org_id ?? \"\",\n };\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Token is missing or invalid; user is not authenticated.\"),\n }\n );\n};\n\nexport const updateFullName = async (fullName: string): Promise<void> => {\n return apiCall(\n async () => {\n const validatedInput = validateInput(UpdateNameSchema, {full_name: fullName});\n await authV1UserServiceUpdateName({\n body: validatedInput,\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.BAD_REQUEST]: () => new Error(\"Invalid name format\"),\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to update name\"),\n [HTTP_STATUS.TOO_MANY_REQUESTS]: () => new Error(\"Name can only be changed once every 7 days.\"),\n }\n );\n};\n\nexport const updateUsername = async (username: string): Promise<void> => {\n return apiCall(\n async () => {\n const validatedInput = validateInput(UpdateUsernameSchema, {username});\n await authV1UserServiceUpdateUsername({\n body: validatedInput,\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.BAD_REQUEST]: () => new Error(\"Invalid username format\"),\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to update username\"),\n [HTTP_STATUS.CONFLICT]: () => new Error(\"Username is not unique. Choose another one!\"),\n [HTTP_STATUS.TOO_MANY_REQUESTS]: () => new Error(\"Username can only be changed once every 30 days.\"),\n }\n );\n};\n\nexport const getOTPStatus = async (): Promise<OTPStatusResponse> => {\n return apiCall(\n async () => {\n const {data} = await authV1OtpServiceGetOtpStatus({\n throwOnError: true,\n });\n\n return {\n is_setup: data.is_setup ?? false,\n created_at: data.created_at,\n };\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Token is missing or invalid; user is not authenticated.\"),\n }\n );\n};\n\nexport const setupUserOTP = async (): Promise<OTPSetup> => {\n return apiCall(\n async () => {\n const {data} = await authV1OtpServiceSetupOtp({\n throwOnError: true,\n });\n\n return {\n qrCodeUrl: data.qr_code_url || \"\",\n secret: data.secret || \"\",\n };\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Token is missing or invalid; user is not authenticated.\"),\n }\n );\n};\n\nexport const verifyUserOTP = async (code: string): Promise<void> => {\n return apiCall(\n async () => {\n const validatedBody = validateInput(VerifyOTPCodeSchema, {code});\n const {data} = await authV1OtpServiceVerifyOtp({\n body: validatedBody,\n throwOnError: true,\n });\n\n persistTokens(data);\n },\n {\n [HTTP_STATUS.BAD_REQUEST]: () => new Error(\"Invalid request format\"),\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Token is missing or invalid; user is not authenticated.\"),\n }\n );\n};\n\nexport const deleteUserOTP = async (): Promise<void> => {\n return apiCall(\n async () => {\n await authV1OtpServiceDeleteOtp({\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Token is missing or invalid; user is not authenticated.\"),\n }\n );\n};\n","import {authV1MembershipServiceUpdateOrgName, authV1MembershipServiceUpdateOrgUsername} from \"../generated/sdk.gen\";\nimport {apiCall} from \"./api/utils\";\nimport {HTTP_STATUS} from \"./constants\";\nimport {validateInput} from \"./validation/base\";\nimport {UpdateNameSchema, UpdateUsernameSchema} from \"./validation/user\";\n\nexport const updateOrgName = async (fullName: string, orgId: string): Promise<void> => {\n return apiCall(\n async () => {\n const requestBody = validateInput(UpdateNameSchema, {full_name: fullName});\n await authV1MembershipServiceUpdateOrgName({\n path: {\"user.org_id\": orgId},\n body: requestBody,\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.FORBIDDEN]: () => new Error(\"Only owners and admins can update name\"),\n [HTTP_STATUS.TOO_MANY_REQUESTS]: () => new Error(\"Name can only be changed once every 7 days.\"),\n }\n );\n};\n\nexport const updateOrgUsername = async (username: string, orgId: string): Promise<void> => {\n return apiCall(\n async () => {\n const requestBody = validateInput(UpdateUsernameSchema, {username});\n await authV1MembershipServiceUpdateOrgUsername({\n path: {\"user.org_id\": orgId},\n body: requestBody,\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.FORBIDDEN]: () => new Error(\"Only owners and admins can update username\"),\n [HTTP_STATUS.CONFLICT]: () => new Error(\"Username is not unique. Choose another one!\"),\n [HTTP_STATUS.TOO_MANY_REQUESTS]: () => new Error(\"Username can only be changed once every 30 days.\"),\n }\n );\n};\n","import {authV1EmailServiceLogin, authV1OtpServiceVerifyTotpForLogin} from \"../../generated/sdk.gen\";\nimport {EmailAuthRequestSchema, LoginOTPVerifyRequestSchema} from \"../validation/auth\";\nimport {validateInput} from \"../validation/base\";\nimport {ApiError} from \"../api/error-handlers\";\nimport {apiCall} from \"../api/utils\";\nimport {persistTokens} from \"../api/tokens\";\nimport {HTTP_STATUS} from \"../constants\";\nimport type {LoginErrorResponse, TwoFactorAuthMethod, TwoFactorResponse} from \"./types\";\nimport type {AuthV1AuthMethod, AuthV1LoginResponse} from \"../../generated/types.gen\";\n\n/**\n * Maps the AuthV1AuthMethod values returned by the gateway to the SDK's\n * lowercase `TwoFactorAuthMethod` domain type. The proto-shaped enum uses\n * `AUTH_METHOD_*`, but the wire has historically emitted the lowercase\n * short form (`\"passkey\" | \"totp\"`) — accept both so we're resilient to\n * either serialization.\n */\nfunction toTwoFactorAuthMethods(methods: AuthV1LoginResponse[\"authentication\"]): TwoFactorAuthMethod[] {\n if (!methods) return [];\n const mapped: TwoFactorAuthMethod[] = [];\n for (const m of methods as Array<AuthV1AuthMethod | string>) {\n if (m === \"AUTH_METHOD_PASSKEY\" || m === \"passkey\") {\n mapped.push(\"passkey\");\n } else if (m === \"AUTH_METHOD_TOTP\" || m === \"totp\") {\n mapped.push(\"totp\");\n }\n }\n return mapped;\n}\n\nexport const loginWithEmail = async (email: string, password: string): Promise<void | TwoFactorResponse | LoginErrorResponse> => {\n return apiCall(\n async () => {\n const validatedInput = validateInput(EmailAuthRequestSchema, {email, password});\n try {\n const {data} = await authV1EmailServiceLogin({\n body: validatedInput,\n throwOnError: true,\n });\n\n return handleLoginResponse(data, email);\n } catch (error) {\n return handleLoginError(error, email);\n }\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Incorrect email or password\"),\n [HTTP_STATUS.FORBIDDEN]: () => new Error(\"Account access is restricted\"),\n }\n );\n};\n\nexport const verifyTOTPForLogin = async (code: string, session_id: string): Promise<void> => {\n return apiCall(\n async () => {\n const validatedInput = validateInput(LoginOTPVerifyRequestSchema, {code, session_id});\n const {data} = await authV1OtpServiceVerifyTotpForLogin({\n body: validatedInput,\n throwOnError: true,\n });\n\n persistTokens(data);\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Invalid or expired TOTP code\"),\n }\n );\n};\n\nfunction handleLoginResponse(data: AuthV1LoginResponse, email: string): void | TwoFactorResponse | LoginErrorResponse {\n switch (data.status) {\n case \"ok\":\n persistTokens(data);\n return;\n case \"2fa_required\":\n return {\n session_id: data.session_id!,\n email: email,\n authentication: toTwoFactorAuthMethods(data.authentication),\n passkey_options: data.passkey_options,\n };\n case \"email_not_verified\":\n return {\n error_code: \"email_not_verified\",\n message: \"Email not verified\",\n email: data.email || email,\n };\n default:\n return;\n }\n}\n\ninterface ApiErrorBody {\n error?: string;\n details?: string;\n code?: number;\n}\n\nfunction handleLoginError(error: unknown, email: string): TwoFactorResponse | LoginErrorResponse | never {\n // The client error interceptor wraps thrown bodies into ApiError; tests and\n // legacy paths may still surface the raw body directly.\n const body = error instanceof ApiError ? error.data : error;\n if (isApiErrorBody(body)) {\n if (body.error === \"email_not_verified\") {\n return {\n error_code: \"email_not_verified\",\n message: body.details || \"Email not verified\",\n email,\n };\n }\n if (body.error === \"provider_conflict\") {\n return {\n error_code: \"provider_conflict\",\n message: body.details || \"Email registered with different provider\",\n email,\n };\n }\n if (error instanceof ApiError) {\n throw error;\n }\n throw new ApiError(body.error || \"Login failed\", body.code || 500, \"/auth/v1/login\", body);\n }\n throw error;\n}\n\nfunction isApiErrorBody(error: unknown): error is ApiErrorBody {\n return typeof error === \"object\" && error !== null && \"error\" in error;\n}\n","import {authV1EmailServiceRegister, authV1EmailServiceResendVerification} from \"../../generated/sdk.gen\";\nimport {validateInput} from \"../validation/base\";\nimport {RegisterRequestSchema, ResendEmailRequestSchema} from \"../validation/auth\";\nimport {apiCall} from \"../api/utils\";\nimport {HTTP_STATUS} from \"../constants\";\nimport type {RegistrationResponse, VerificationSentResponse} from \"./types\";\n\nexport const registerWithEmail = async (\n email: string,\n password: string,\n subscribeToBlog?: boolean,\n countryCode?: string\n): Promise<void | RegistrationResponse> => {\n return apiCall(\n async () => {\n const validatedInput = validateInput(RegisterRequestSchema, {\n email,\n password,\n country_code: countryCode,\n subscribe_to_blog: subscribeToBlog,\n });\n const {data} = await authV1EmailServiceRegister({\n body: validatedInput,\n throwOnError: true,\n });\n\n if (data.verification_id) {\n return {\n message: data.message || \"Registration successful\",\n verification_id: data.verification_id,\n email_verification_sent: data.email_verification_sent,\n user_id: data.user_id,\n };\n }\n },\n {\n [HTTP_STATUS.CONFLICT]: () => new Error(\"Email address is already registered\"),\n }\n );\n};\n\nexport const resendEmailVerificationCode = async (email: string): Promise<void | VerificationSentResponse> => {\n return apiCall(\n async () => {\n const validatedInput = validateInput(ResendEmailRequestSchema, {email});\n const {data} = await authV1EmailServiceResendVerification({\n body: validatedInput,\n throwOnError: true,\n });\n\n if (data.verification_id) {\n return {\n message: data.message || \"Verification code resent\",\n verification_id: data.verification_id,\n code_sent: data.code_sent,\n };\n }\n },\n {\n [HTTP_STATUS.BAD_REQUEST]: () => new Error(\"Invalid email or validation error\"),\n [HTTP_STATUS.TOO_MANY_REQUESTS]: () => new Error(\"Too many requests - rate limit exceeded\"),\n }\n );\n};\n","import {authV1EmailServiceSendPasswordReset, authV1EmailServiceResetPassword} from \"../../generated/sdk.gen\";\nimport {ResendEmailRequestSchema, ResetPasswordRequestSchema} from \"../validation/auth\";\nimport {validateInput} from \"../validation/base\";\nimport {apiCall} from \"../api/utils\";\nimport {HTTP_STATUS} from \"../constants\";\n\nexport const sendPasswordResetEmail = async (email: string): Promise<void> => {\n return apiCall(\n async () => {\n const validatedInput = validateInput(ResendEmailRequestSchema, {email});\n await authV1EmailServiceSendPasswordReset({\n body: validatedInput,\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.BAD_REQUEST]: () => new Error(\"Bad request - invalid email or validation error\"),\n }\n );\n};\n\nexport const confirmPasswordReset = async (token: string, password: string): Promise<void> => {\n return apiCall(\n async () => {\n const validatedInput = validateInput(ResetPasswordRequestSchema, {\n token: token,\n new_password: password,\n });\n await authV1EmailServiceResetPassword({\n body: validatedInput,\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.BAD_REQUEST]: () => new Error(\"Bad request - invalid token or password\"),\n }\n );\n};\n","import {\n authV1EmailServiceInitiateEmailChange,\n authV1EmailServiceAddEmail,\n authV1EmailServiceVerifyEmail,\n authV1EmailServiceGetUserEmailStatus,\n} from \"../../generated/sdk.gen\";\nimport {ChangeEmailRequestSchema, ResendEmailRequestSchema, verifyEmailChangeRequestSchema} from \"../validation/auth\";\nimport {validateInput} from \"../validation/base\";\nimport {apiCall} from \"../api/utils\";\nimport {persistTokens} from \"../api/tokens\";\nimport {HTTP_STATUS} from \"../constants\";\nimport type {VerificationSentResponse, VerifyEmailResponse, VerifyStatusResponse} from \"./types\";\nimport type {EmailVerificationType} from \"../types\";\n\nexport const initiateEmailChange = async (email: string): Promise<void | VerificationSentResponse> => {\n return apiCall(\n async () => {\n const validatedInput = validateInput(ChangeEmailRequestSchema, {new_email: email});\n const {data} = await authV1EmailServiceInitiateEmailChange({\n body: validatedInput,\n throwOnError: true,\n });\n\n if (data.verification_id) {\n return {\n message: data.message || \"Verification code sent\",\n verification_id: data.verification_id,\n can_resend_at: data.can_resend_at,\n code_sent: data.code_sent,\n };\n }\n },\n {\n [HTTP_STATUS.BAD_REQUEST]: () => new Error(\"Invalid email or email already in use\"),\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Unauthorized - invalid or missing token\"),\n [HTTP_STATUS.TOO_MANY_REQUESTS]: () => new Error(\"Too many requests - please try again later\"),\n }\n );\n};\n\nexport const addEmail = async (email: string): Promise<void | VerificationSentResponse> => {\n return apiCall(\n async () => {\n const validatedInput = validateInput(ResendEmailRequestSchema, {email});\n const {data} = await authV1EmailServiceAddEmail({\n body: validatedInput,\n throwOnError: true,\n });\n\n if (data.verification_id) {\n return {\n message: data.message || \"Verification code sent\",\n verification_id: data.verification_id,\n can_resend_at: data.can_resend_at,\n code_sent: data.code_sent,\n };\n }\n },\n {\n [HTTP_STATUS.BAD_REQUEST]: () => new Error(\"Invalid email address\"),\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Session expired - please login again\"),\n [HTTP_STATUS.CONFLICT]: () => new Error(\"Email address is already in use\"),\n [HTTP_STATUS.TOO_MANY_REQUESTS]: () => new Error(\"Too many requests - please try again later\"),\n }\n );\n};\n\nexport interface VerifyEmailWithCodeParams {\n code: string;\n type: EmailVerificationType;\n verification_id: string;\n new_email: string;\n}\n\nconst normalizeVerifyEmailArgs = (\n args: [VerifyEmailWithCodeParams] | [string, EmailVerificationType, string, string]\n): VerifyEmailWithCodeParams => {\n if (isLegacyVerifyEmailArgs(args)) {\n const [code, type, verification_id, new_email] = args;\n return {code, type, verification_id, new_email};\n }\n\n return args[0];\n};\n\nconst isLegacyVerifyEmailArgs = (\n args: [VerifyEmailWithCodeParams] | [string, EmailVerificationType, string, string]\n): args is [string, EmailVerificationType, string, string] => typeof args[0] === \"string\";\n\nexport const verifyEmailWithCode = async (\n ...args: [VerifyEmailWithCodeParams] | [string, EmailVerificationType, string, string]\n): Promise<void | VerifyEmailResponse> => {\n return apiCall(\n async () => {\n const payload = normalizeVerifyEmailArgs(args);\n\n validateInput(verifyEmailChangeRequestSchema, payload);\n const {data} = await authV1EmailServiceVerifyEmail({\n body: {code: payload.code, verification_id: payload.verification_id},\n throwOnError: true,\n });\n\n const tokens = data.tokens;\n persistTokens(tokens);\n\n return {\n email: data.email || \"\",\n message: data.message || \"Email verified\",\n verified: data.verified || false,\n tokens: tokens\n ? {\n access_token: tokens.access_token!,\n refresh_token: tokens.refresh_token!,\n expires_in: Number(tokens.expires_in!),\n }\n : undefined,\n };\n },\n {\n [HTTP_STATUS.BAD_REQUEST]: () => new Error(\"Invalid code or verification ID\"),\n }\n );\n};\n\nexport const getEmailVerificationStatus = async (): Promise<void | VerifyStatusResponse> => {\n return apiCall(\n async () => {\n const {data} = await authV1EmailServiceGetUserEmailStatus({\n throwOnError: true,\n });\n\n return {\n email: data.email || \"\",\n has_email: data.has_email ?? false,\n verified: data.verified || false,\n };\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Unauthorized - invalid or missing token\"),\n }\n );\n};\n","import * as v from \"valibot\";\nimport {DomainSchema} from \"./base\";\n\n/**\n * Add domain request schema\n */\nexport const AddDomainSchema = v.object({\n domain: DomainSchema,\n});\n\n/**\n * Update auto-join setting schema\n */\nexport const UpdateAutoJoinSchema = v.object({\n enabled: v.boolean(\"Auto-join setting must be a boolean\"),\n});\n","export enum DomainStatus {\n PENDING = \"pending\",\n VERIFIED = \"verified\",\n EXPIRED = \"expired\",\n}\n\nexport interface DomainResponse {\n present?: boolean;\n id: string;\n domain: string;\n /**\n * `undefined` when the gateway response omits the `status` object entirely\n * (e.g. a domain record without a resolved state). Concrete values are\n * `PENDING` or `VERIFIED`; the SDK never returns `EXPIRED` today but it is\n * kept on the enum for forward compatibility with future backend states.\n */\n status?: DomainStatus;\n verification_token?: string;\n expires_at?: string;\n verified_at?: string;\n auto_join?: boolean;\n}\n\nexport interface AddDomainRequest {\n domain: string;\n}\n\nexport interface UpdateAutoJoinRequest {\n enabled: boolean;\n}\n\nexport interface AutoJoinSetting {\n enabled: boolean;\n present?: boolean;\n}\n","import type {AuthV1DomainResponse, AuthV1AutoJoinSetting} from \"../../generated/types.gen\";\nimport {DomainStatus, type DomainResponse, type AutoJoinSetting} from \"./types\";\n\n// DomainStatus is a nested oneOf (pending | verified) plus a shared auto_join\n// flag; flatten it into the library's DomainResponse. When the gateway omits\n// `status` entirely we leave the flattened `status` field undefined instead\n// of defaulting to PENDING — the two states carry very different meanings\n// and PENDING would incorrectly imply a verification is in flight.\nexport function toDomainResponse(data: AuthV1DomainResponse): DomainResponse {\n const status = data.status;\n const verified = status && \"verified\" in status ? status.verified : undefined;\n const pending = status && \"pending\" in status ? status.pending : undefined;\n let flattenedStatus: DomainStatus | undefined;\n if (verified) {\n flattenedStatus = DomainStatus.VERIFIED;\n } else if (pending) {\n flattenedStatus = DomainStatus.PENDING;\n }\n return {\n present: data.present,\n id: data.id ?? \"\",\n domain: data.domain ?? \"\",\n status: flattenedStatus,\n verification_token: pending?.verification_token,\n expires_at: pending?.expires_at,\n verified_at: verified?.verified_at,\n auto_join: status?.auto_join,\n };\n}\n\nexport function toAutoJoinSetting(data: AuthV1AutoJoinSetting): AutoJoinSetting {\n return {\n enabled: data.enabled ?? false,\n present: data.present,\n };\n}\n","import {\n authV1DomainServiceGetDomainStatus,\n authV1DomainServiceCreateDomainVerification,\n authV1DomainServiceCheckDomainVerification,\n authV1DomainServiceSetDomainAutoJoin,\n authV1DomainServiceRemoveDomain,\n} from \"../../generated/sdk.gen\";\nimport {apiCall} from \"../api/utils\";\nimport {HTTP_STATUS} from \"../constants\";\nimport {validateInput} from \"../validation/base\";\nimport {AddDomainSchema, UpdateAutoJoinSchema} from \"../validation/domain\";\nimport {toDomainResponse, toAutoJoinSetting} from \"./mappers\";\nimport type {DomainResponse, AutoJoinSetting} from \"./types\";\n\nexport * from \"./types\";\n\nexport const getDomainStatus = async (orgId: string): Promise<DomainResponse | null> => {\n return apiCall(\n async () => {\n try {\n const {data} = await authV1DomainServiceGetDomainStatus({\n path: {org_id: orgId},\n throwOnError: true,\n });\n return toDomainResponse(data);\n } catch (error: any) {\n if (error?.code === HTTP_STATUS.NOT_FOUND) {\n return null;\n }\n throw error;\n }\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Not authorized to view domain settings\"),\n }\n );\n};\n\nexport const initiateDomainVerification = async (orgId: string, domain: string): Promise<DomainResponse> => {\n return apiCall(\n async () => {\n const requestBody = validateInput(AddDomainSchema, {domain});\n const {data} = await authV1DomainServiceCreateDomainVerification({\n path: {\"user.org_id\": orgId},\n body: requestBody,\n throwOnError: true,\n });\n return toDomainResponse(data);\n },\n {\n [HTTP_STATUS.BAD_REQUEST]: () => new Error(\"Invalid domain format or public domains like gmail.com are not allowed\"),\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Not authorized to configure domain settings\"),\n }\n );\n};\n\nexport const checkDomainVerification = async (orgId: string): Promise<DomainResponse> => {\n return apiCall(\n async () => {\n const {data} = await authV1DomainServiceCheckDomainVerification({\n path: {org_id: orgId},\n throwOnError: true,\n });\n return toDomainResponse(data);\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Not authorized to check domain verification\"),\n }\n );\n};\n\nexport const updateAutoJoin = async (orgId: string, enabled: boolean): Promise<AutoJoinSetting> => {\n return apiCall(\n async () => {\n const requestBody = validateInput(UpdateAutoJoinSchema, {enabled});\n const {data} = await authV1DomainServiceSetDomainAutoJoin({\n path: {\"user.org_id\": orgId},\n body: requestBody,\n throwOnError: true,\n });\n return toAutoJoinSetting(data);\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Not authorized to update auto-join settings\"),\n }\n );\n};\n\nexport const removeDomain = async (orgId: string): Promise<void> => {\n return apiCall(\n async () => {\n await authV1DomainServiceRemoveDomain({\n path: {org_id: orgId},\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Not authorized to remove domain\"),\n }\n );\n};\n","import {\n authV1BlogServiceGetBlogSubscription,\n authV1BlogServiceSubscribeBlog,\n authV1BlogServiceUnsubscribeBlog,\n} from \"../../generated/sdk.gen\";\nimport {apiCall} from \"../api/utils\";\nimport {HTTP_STATUS} from \"../constants\";\n\nexport interface BlogSubscriptionStatus {\n subscribed: boolean;\n subscribed_at?: string;\n}\n\nconst BLOG_SUBSCRIPTION_ERRORS = {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"User is not authorized to manage blog subscription\"),\n [HTTP_STATUS.FORBIDDEN]: () => new Error(\"Account is inactive\"),\n [HTTP_STATUS.TOO_MANY_REQUESTS]: () => new Error(\"Too many requests - please try again later\"),\n};\n\nexport const getBlogSubscriptionStatus = async (): Promise<BlogSubscriptionStatus> => {\n return apiCall(async () => {\n const {data} = await authV1BlogServiceGetBlogSubscription({\n throwOnError: true,\n });\n return {\n subscribed: data.subscribed ?? false,\n subscribed_at: data.subscribed_at,\n };\n }, BLOG_SUBSCRIPTION_ERRORS);\n};\n\nexport const subscribeToBlog = async (): Promise<void> => {\n return apiCall(\n async () => {\n await authV1BlogServiceSubscribeBlog({\n throwOnError: true,\n });\n },\n {\n ...BLOG_SUBSCRIPTION_ERRORS,\n [HTTP_STATUS.INTERNAL_SERVER_ERROR]: () => new Error(\"Failed to subscribe to blog updates\"),\n }\n );\n};\n\nexport const unsubscribeFromBlog = async (): Promise<void> => {\n return apiCall(\n async () => {\n await authV1BlogServiceUnsubscribeBlog({\n throwOnError: true,\n });\n },\n {\n ...BLOG_SUBSCRIPTION_ERRORS,\n [HTTP_STATUS.INTERNAL_SERVER_ERROR]: () => new Error(\"Failed to unsubscribe from blog updates\"),\n }\n );\n};\n","import {\n authV1PasskeyServiceDeletePasskey,\n authV1PasskeyServiceListPasskeys,\n authV1PasskeyServiceRenamePasskey,\n authV1PasskeyServicePasskeyLoginBegin,\n authV1PasskeyServicePasskeyLoginFinish,\n authV1PasskeyServicePasskeyRegisterBegin,\n authV1PasskeyServicePasskeyRegisterFinish,\n authV1PasskeyServiceVerifyPasskeyForLogin,\n} from \"../generated/sdk.gen\";\nimport {apiCall} from \"./api/utils\";\nimport {persistTokens} from \"./api/tokens\";\nimport {HTTP_STATUS} from \"./constants\";\n\nfunction base64urlToBuffer(base64url: string): ArrayBuffer {\n const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padded = base64.padEnd(base64.length + ((4 - (base64.length % 4)) % 4), \"=\");\n const binary = atob(padded);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);\n return bytes.buffer;\n}\n\nfunction bufferToBase64url(buffer: ArrayBuffer): string {\n const bytes = new Uint8Array(buffer);\n let binary = \"\";\n for (let i = 0; i < bytes.length; i++) binary += String.fromCharCode(bytes[i]);\n return btoa(binary).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/, \"\");\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// The gateway sends WebAuthn options as base64-encoded JSON (spec `format: byte`).\n// Decode the envelope to an object before extracting the publicKey payload.\nfunction parseOptionsEnvelope(raw: any): any {\n const decoded = typeof raw === \"string\" ? JSON.parse(atob(raw)) : raw;\n return decoded.publicKey ?? decoded;\n}\n\nfunction decodeCreationOptions(raw: any): PublicKeyCredentialCreationOptions {\n const pk = parseOptionsEnvelope(raw);\n return {\n ...pk,\n challenge: base64urlToBuffer(pk.challenge),\n user: {...pk.user, id: base64urlToBuffer(pk.user.id)},\n excludeCredentials: (pk.excludeCredentials ?? []).map((c: any) => ({\n ...c,\n id: base64urlToBuffer(c.id),\n })),\n };\n}\n\nexport function decodeRequestOptions(raw: any): PublicKeyCredentialRequestOptions {\n const pk = parseOptionsEnvelope(raw);\n return {\n ...pk,\n challenge: base64urlToBuffer(pk.challenge),\n allowCredentials: (pk.allowCredentials ?? []).map((c: any) => ({\n ...c,\n id: base64urlToBuffer(c.id),\n })),\n };\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nexport interface PasskeyBeginLogin {\n session_id: string;\n options: PublicKeyCredentialRequestOptions;\n}\n\n/**\n * Thrown by {@link beginPasskeyLogin} when the server responds successfully\n * but with no credential options — typically because the account has no\n * passkeys enrolled. The OpenAPI schema does not formally model this state\n * (both `session_id` and `options` are optional on `PasskeyBeginResponse`),\n * so callers should distinguish it via `instanceof` rather than error text.\n */\nexport class PasskeyUnavailableError extends Error {\n constructor(message = \"No passkeys available for this account\") {\n super(message);\n this.name = \"PasskeyUnavailableError\";\n }\n}\n\nexport interface PasskeyBeginRegistration {\n session_id: string;\n options: PublicKeyCredentialCreationOptions;\n}\n\nexport interface PasskeyRegistrationResult {\n passkey_id: string;\n name: string;\n}\n\nexport interface Passkey {\n id: string;\n name: string;\n credential_id: string;\n aaguid: string;\n backup_state: boolean;\n created_at: string;\n last_used_at: string;\n transports: string[];\n}\n\n// The server's `credential` field is `bytes` (spec `format: byte`), so the\n// WebAuthn credential JSON must be sent as a base64-encoded string, not an object.\nfunction encodeCredential(credential: object): string {\n return btoa(JSON.stringify(credential));\n}\n\nfunction serializeLoginCredential(cred: PublicKeyCredential): string {\n const response = cred.response as AuthenticatorAssertionResponse;\n return encodeCredential({\n id: cred.id,\n rawId: bufferToBase64url(cred.rawId),\n type: cred.type,\n response: {\n authenticatorData: bufferToBase64url(response.authenticatorData),\n clientDataJSON: bufferToBase64url(response.clientDataJSON),\n signature: bufferToBase64url(response.signature),\n userHandle: response.userHandle ? bufferToBase64url(response.userHandle) : null,\n },\n });\n}\n\nfunction serializeRegistrationCredential(cred: PublicKeyCredential): string {\n const response = cred.response as AuthenticatorAttestationResponse;\n return encodeCredential({\n id: cred.id,\n rawId: bufferToBase64url(cred.rawId),\n type: cred.type,\n response: {\n attestationObject: bufferToBase64url(response.attestationObject),\n clientDataJSON: bufferToBase64url(response.clientDataJSON),\n },\n });\n}\n\nexport const finishPasskeyLogin = async (session_id: string, credential: PublicKeyCredential): Promise<void> => {\n return apiCall(\n async () => {\n const serialized = serializeLoginCredential(credential);\n\n const {data} = await authV1PasskeyServicePasskeyLoginFinish({\n body: {session_id, credential: serialized},\n throwOnError: true,\n });\n\n if (!persistTokens(data)) {\n throw new Error(\"Passkey authentication failed: incomplete token response\");\n }\n },\n {\n [HTTP_STATUS.BAD_REQUEST]: () => new Error(\"Invalid passkey credential\"),\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Passkey authentication failed\"),\n }\n );\n};\n\nexport const beginPasskeyLogin = async (): Promise<PasskeyBeginLogin> => {\n return apiCall(async () => {\n const {data} = await authV1PasskeyServicePasskeyLoginBegin({\n body: {},\n throwOnError: true,\n });\n\n const sessionId = data.session_id;\n if (!sessionId || !data.options) {\n throw new PasskeyUnavailableError();\n }\n\n const options = decodeRequestOptions(data.options);\n return {session_id: sessionId, options};\n }, {});\n};\n\nexport const beginPasskeyRegistration = async (): Promise<PasskeyBeginRegistration> => {\n return apiCall(\n async () => {\n const {data} = await authV1PasskeyServicePasskeyRegisterBegin({\n body: {},\n throwOnError: true,\n });\n\n const sessionId = data.session_id;\n if (!sessionId || !data.options) {\n throw new Error(\"Invalid response from server\");\n }\n\n const options = decodeCreationOptions(data.options);\n return {session_id: sessionId, options};\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Token is missing or invalid; user is not authenticated.\"),\n }\n );\n};\n\nexport const finishPasskeyRegistration = async (\n session_id: string,\n name: string,\n credential: PublicKeyCredential\n): Promise<PasskeyRegistrationResult> => {\n return apiCall(\n async () => {\n const serialized = serializeRegistrationCredential(credential);\n\n const {data} = await authV1PasskeyServicePasskeyRegisterFinish({\n body: {session_id, name, credential: serialized},\n throwOnError: true,\n });\n\n return {\n passkey_id: data.passkey_id ?? \"\",\n name: data.name ?? \"\",\n };\n },\n {\n [HTTP_STATUS.BAD_REQUEST]: () => new Error(\"Invalid passkey credential\"),\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Token is missing or invalid; user is not authenticated.\"),\n }\n );\n};\n\nexport const renamePasskey = async (id: string, name: string): Promise<void> => {\n return apiCall(\n async () => {\n await authV1PasskeyServiceRenamePasskey({\n path: {id},\n body: {name},\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.NOT_FOUND]: () => new Error(\"Passkey not found\"),\n }\n );\n};\n\nexport const deletePasskey = async (id: string): Promise<void> => {\n return apiCall(\n async () => {\n await authV1PasskeyServiceDeletePasskey({\n path: {id},\n throwOnError: true,\n });\n },\n {\n [HTTP_STATUS.NOT_FOUND]: () => new Error(\"Passkey not found\"),\n }\n );\n};\n\nexport const listPasskeys = async (): Promise<Passkey[]> => {\n return apiCall(\n async () => {\n const {data} = await authV1PasskeyServiceListPasskeys({\n throwOnError: true,\n });\n\n return (data.passkeys ?? []).map((p) => ({\n id: p.id ?? \"\",\n name: p.name ?? \"\",\n credential_id: p.credential_id ?? \"\",\n aaguid: p.aaguid ?? \"\",\n backup_state: p.backup_state ?? false,\n created_at: p.created_at ?? \"\",\n last_used_at: p.last_used_at ?? \"\",\n transports: p.transports ?? [],\n }));\n },\n {\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Token is missing or invalid; user is not authenticated.\"),\n }\n );\n};\n\nexport const verifyPasskeyForLogin = async (session_id: string, credential: PublicKeyCredential): Promise<void> => {\n return apiCall(\n async () => {\n const serialized = serializeLoginCredential(credential);\n\n const {data} = await authV1PasskeyServiceVerifyPasskeyForLogin({\n body: {session_id, credential: serialized},\n throwOnError: true,\n });\n\n if (!persistTokens(data)) {\n throw new Error(\"Passkey verification failed: incomplete token response\");\n }\n },\n {\n [HTTP_STATUS.BAD_REQUEST]: () => new Error(\"Invalid passkey credential\"),\n [HTTP_STATUS.UNAUTHORIZED]: () => new Error(\"Passkey verification failed\"),\n [HTTP_STATUS.NOT_FOUND]: () => new Error(\"Session not found\"),\n }\n );\n};\n"],"mappings":"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"}
|