@oumla/sdk 1.1.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../api/index.ts","../api/resources/deployedContracts/index.ts","../api/resources/deployedContracts/types/GetDeployedContractsRequestNetwork.ts","../api/resources/profiles/index.ts","../api/resources/profiles/client/requests/CreateProfileRequest.ts","../api/resources/wallets/index.ts","../api/resources/wallets/client/requests/CreateWalletRequest.ts","../api/resources/addresses/index.ts","../api/resources/addresses/client/requests/CreateAddressRequest.ts","../api/resources/transactions/index.ts","../api/resources/assets/index.ts","../api/resources/withdrawals/index.ts","../api/resources/withdrawals/client/requests/CreateWithdrawalRequest.ts","../api/resources/contractTemplates/index.ts","../api/resources/contractTemplates/client/requests/CreateContractTemplateRequest.ts","../api/resources/contractInteractions/index.ts","../api/resources/contractInteractions/client/requests/WriteFunctionRequest.ts","../api/resources/tokenization/index.ts","../api/resources/tokenization/client/requests/CreateCollectionRequest.ts","../core/json.ts","../errors/OumlaSdkApiError.ts","../errors/OumlaSdkApiTimeoutError.ts","../api/errors/BadRequestError.ts","../core/fetcher/EndpointSupplier.ts","../core/url/qs.ts","../core/fetcher/createRequestUrl.ts","../core/fetcher/BinaryResponse.ts","../core/fetcher/ResponseWithBody.ts","../core/fetcher/getResponseBody.ts","../core/fetcher/getErrorResponseBody.ts","../core/fetcher/getFetchFn.ts","../core/fetcher/getRequestBody.ts","../core/fetcher/signals.ts","../core/fetcher/makeRequest.ts","../core/fetcher/Headers.ts","../core/fetcher/RawResponse.ts","../core/fetcher/requestWithRetries.ts","../core/fetcher/Fetcher.ts","../core/fetcher/HttpResponsePromise.ts","../core/fetcher/Supplier.ts","../core/runtime/runtime.ts","../core/url/index.ts","../core/url/join.ts","../core/headers.ts","../environments.ts","../api/resources/profiles/client/Client.ts","../api/resources/wallets/client/Client.ts","../api/resources/addresses/client/Client.ts","../api/resources/transactions/client/Client.ts","../api/resources/assets/client/Client.ts","../api/resources/withdrawals/client/Client.ts","../api/resources/contractTemplates/client/Client.ts","../api/resources/deployedContracts/client/Client.ts","../api/resources/contractInteractions/client/Client.ts","../api/resources/tokenization/client/Client.ts","../Client.ts"],"names":["CreateProfileRequest","CreateWalletRequest","CreateAddressRequest","CreateWithdrawalRequest","CreateContractTemplateRequest","Docs","WriteFunctionRequest","CreateCollectionRequest","text","Headers"],"mappings":"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","sourcesContent":["export * from \"./resources/index.js\";\nexport * from \"./types/index.js\";\nexport * from \"./errors/index.js\";\n","export * from \"./types/index.js\";\nexport * from \"./client/index.js\";\n","// This file was auto-generated by Fern from our API Definition.\n\nexport const GetDeployedContractsRequestNetwork = {\n TBtc: \"tBTC\",\n TEth: \"tETH\",\n} as const;\nexport type GetDeployedContractsRequestNetwork =\n (typeof GetDeployedContractsRequestNetwork)[keyof typeof GetDeployedContractsRequestNetwork];\n","export * from \"./client/index.js\";\n","// This file was auto-generated by Fern from our API Definition.\n\n/**\n * @example\n * {\n * reference: \"reference\",\n * type: \"User\"\n * }\n */\nexport interface CreateProfileRequest {\n /** Profile reference identifier */\n reference: string;\n /** Profile type */\n type: CreateProfileRequest.Type;\n}\n\nexport namespace CreateProfileRequest {\n /** Profile type */\n export const Type = {\n User: \"User\",\n Department: \"Department\",\n Merchant: \"Merchant\",\n } as const;\n export type Type = (typeof Type)[keyof typeof Type];\n}\n","export * from \"./client/index.js\";\n","// This file was auto-generated by Fern from our API Definition.\n\n/**\n * @example\n * {\n * reference: \"reference\",\n * network: \"BTC\"\n * }\n */\nexport interface CreateWalletRequest {\n /** Profile reference */\n reference: string;\n /** Blockchain network */\n network: CreateWalletRequest.Network;\n}\n\nexport namespace CreateWalletRequest {\n /** Blockchain network */\n export const Network = {\n TBtc: \"tBTC\",\n TEth: \"tETH\",\n } as const;\n export type Network = (typeof Network)[keyof typeof Network];\n}\n","export * from \"./client/index.js\";\n","// This file was auto-generated by Fern from our API Definition.\n\n/**\n * @example\n * {\n * reference: \"reference\",\n * network: \"BTC\",\n * clientShare: \"clientShare\"\n * }\n */\nexport interface CreateAddressRequest {\n /** Profile reference */\n reference: string;\n /** Blockchain network */\n network: CreateAddressRequest.Network;\n /** Client share for signing */\n clientShare: string;\n}\n\nexport namespace CreateAddressRequest {\n /** Blockchain network */\n export const Network = {\n TBtc: \"tBTC\",\n TEth: \"tETH\",\n } as const;\n export type Network = (typeof Network)[keyof typeof Network];\n}\n","export * from \"./client/index.js\";\n","export * from \"./client/index.js\";\n","export * from \"./client/index.js\";\n","// This file was auto-generated by Fern from our API Definition.\n\n/**\n * @example\n * {\n * to: \"to\",\n * amount: \"amount\",\n * from: [\"from\"],\n * network: \"BTC\",\n * clientShare: \"clientShare\"\n * }\n */\nexport interface CreateWithdrawalRequest {\n /** Recipient address for withdrawal */\n to: string;\n /** Withdrawal amount */\n amount: string;\n /** Array of source addresses for withdrawal */\n from: string[];\n /** Blockchain network */\n network: CreateWithdrawalRequest.Network;\n /** Client share for signing */\n clientShare: string;\n}\n\nexport namespace CreateWithdrawalRequest {\n /** Blockchain network */\n export const Network = {\n TBtc: \"tBTC\",\n TEth: \"tETH\",\n } as const;\n export type Network = (typeof Network)[keyof typeof Network];\n}\n","export * from \"./client/index.js\";\n","// This file was auto-generated by Fern from our API Definition.\n\n/**\n * @example\n * {\n * name: \"name\",\n * description: \"description\",\n * abi: [{\n * \"key\": \"value\"\n * }],\n * bytecode: \"bytecode\"\n * }\n */\nexport interface CreateContractTemplateRequest {\n /** Contract template name */\n name: string;\n /** Contract template description */\n description: string;\n /** Contract ABI */\n abi: Record<string, unknown>[];\n /** Contract bytecode */\n bytecode: string;\n /** Long description of the contract */\n longDescription?: string;\n /** Contract source code */\n sourceCode?: string;\n /** Contract type */\n type?: string;\n /** Contract documentation */\n docs?: CreateContractTemplateRequest.Docs;\n /** Contract attributes */\n attributes?: CreateContractTemplateRequest.Attributes;\n}\n\nexport namespace CreateContractTemplateRequest {\n /**\n * Contract documentation\n */\n export interface Docs {\n details?: string;\n events?: string;\n kind?: Docs.Kind;\n methods?: Docs.Methods.Item[];\n version?: string;\n }\n\n export namespace Docs {\n export const Kind = {\n Dev: \"dev\",\n User: \"user\",\n } as const;\n export type Kind = (typeof Kind)[keyof typeof Kind];\n export type Methods = Methods.Item[];\n\n export namespace Methods {\n export interface Item {\n name?: string;\n description?: string;\n params?: Record<string, unknown>;\n returns?: Record<string, unknown>;\n }\n }\n }\n\n /**\n * Contract attributes\n */\n export interface Attributes {\n useCases?: string[];\n standards?: string[];\n auditor?: Attributes.Auditor;\n }\n\n export namespace Attributes {\n export interface Auditor {\n name?: string;\n imageURL?: string;\n link?: string;\n }\n }\n}\n","export * from \"./client/index.js\";\n","// This file was auto-generated by Fern from our API Definition.\n\n/**\n * @example\n * {\n * addressId: \"addressId\",\n * clientShare: \"clientShare\",\n * abiFunction: {\n * name: \"name\",\n * inputs: [{}],\n * outputs: [{}],\n * type: \"type\"\n * }\n * }\n */\nexport interface WriteFunctionRequest {\n /** Address ID for transaction */\n addressId: string;\n /** Client share for signing */\n clientShare: string;\n /** ABI function definition */\n abiFunction: WriteFunctionRequest.AbiFunction;\n /** ETH value to send */\n amount?: string;\n /** Fee level for transaction */\n feeLevel?: WriteFunctionRequest.FeeLevel;\n}\n\nexport namespace WriteFunctionRequest {\n /**\n * ABI function definition\n */\n export interface AbiFunction {\n /** Function name */\n name: string;\n /** Function input parameters */\n inputs: AbiFunction.Inputs.Item[];\n /** Function output parameters */\n outputs: AbiFunction.Outputs.Item[];\n stateMutability?: string;\n type: string;\n }\n\n export namespace AbiFunction {\n export type Inputs = Inputs.Item[];\n\n export namespace Inputs {\n export interface Item {\n name?: string;\n type?: string;\n internalType?: string;\n }\n }\n\n export type Outputs = Outputs.Item[];\n\n export namespace Outputs {\n export interface Item {\n name?: string;\n type?: string;\n internalType?: string;\n }\n }\n }\n\n /** Fee level for transaction */\n export const FeeLevel = {\n Low: \"LOW\",\n Medium: \"MEDIUM\",\n High: \"HIGH\",\n } as const;\n export type FeeLevel = (typeof FeeLevel)[keyof typeof FeeLevel];\n}\n","export * from \"./client/index.js\";\n","// This file was auto-generated by Fern from our API Definition.\n\n/**\n * @example\n * {\n * type: \"NON_FUNGIBLE_TOKEN\",\n * addressId: \"addressId\",\n * clientShare: \"clientShare\",\n * createParams: {\n * initializeParams: [{\n * name: \"name\",\n * type: \"type\",\n * value: \"value\"\n * }]\n * }\n * }\n */\nexport interface CreateCollectionRequest {\n /** Blockchain network */\n network?: string;\n /** Collection type */\n type: CreateCollectionRequest.Type;\n /** Address ID for collection creation */\n addressId: string;\n /** Client share for signing */\n clientShare: string;\n createParams: CreateCollectionRequest.CreateParams;\n /** Collection description */\n description?: string;\n /** Collection display name */\n displayName?: string;\n /** Use gasless transaction */\n useGasless?: boolean;\n /** Transaction fee */\n fee?: string;\n /** Fee level */\n feeLevel?: string;\n}\n\nexport namespace CreateCollectionRequest {\n /** Collection type */\n export const Type = {\n NonFungibleToken: \"NON_FUNGIBLE_TOKEN\",\n SemiFungibleToken: \"SEMI_FUNGIBLE_TOKEN\",\n } as const;\n export type Type = (typeof Type)[keyof typeof Type];\n\n export interface CreateParams {\n /** Initialize parameters */\n initializeParams: CreateParams.InitializeParams.Item[];\n }\n\n export namespace CreateParams {\n export type InitializeParams = InitializeParams.Item[];\n\n export namespace InitializeParams {\n export interface Item {\n /** Parameter name */\n name: string;\n /** Parameter type */\n type: string;\n /** Parameter value */\n value: string;\n }\n }\n }\n}\n","/**\n * Serialize a value to JSON\n * @param value A JavaScript value, usually an object or array, to be converted.\n * @param replacer A function that transforms the results.\n * @param space Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read.\n * @returns JSON string\n */\nexport const toJson = (\n value: unknown,\n replacer?: (this: unknown, key: string, value: unknown) => unknown,\n space?: string | number,\n): string => {\n return JSON.stringify(value, replacer, space);\n};\n\n/**\n * Parse JSON string to object, array, or other type\n * @param text A valid JSON string.\n * @param reviver A function that transforms the results. This function is called for each member of the object. If a member contains nested objects, the nested objects are transformed before the parent object is.\n * @returns Parsed object, array, or other type\n */\nexport function fromJson<T = unknown>(\n text: string,\n reviver?: (this: unknown, key: string, value: unknown) => unknown,\n): T {\n return JSON.parse(text, reviver);\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport * as core from \"../core/index.js\";\nimport { toJson } from \"../core/json.js\";\n\nexport class OumlaSdkApiError extends Error {\n public readonly statusCode?: number;\n public readonly body?: unknown;\n public readonly rawResponse?: core.RawResponse;\n\n constructor({\n message,\n statusCode,\n body,\n rawResponse,\n }: {\n message?: string;\n statusCode?: number;\n body?: unknown;\n rawResponse?: core.RawResponse;\n }) {\n super(buildMessage({ message, statusCode, body }));\n Object.setPrototypeOf(this, OumlaSdkApiError.prototype);\n this.statusCode = statusCode;\n this.body = body;\n this.rawResponse = rawResponse;\n }\n}\n\nfunction buildMessage({\n message,\n statusCode,\n body,\n}: {\n message: string | undefined;\n statusCode: number | undefined;\n body: unknown | undefined;\n}): string {\n let lines: string[] = [];\n if (message != null) {\n lines.push(message);\n }\n\n if (statusCode != null) {\n lines.push(`Status code: ${statusCode.toString()}`);\n }\n\n if (body != null) {\n lines.push(`Body: ${toJson(body, undefined, 2)}`);\n }\n\n return lines.join(\"\\n\");\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nexport class OumlaSdkApiTimeoutError extends Error {\n constructor(message: string) {\n super(message);\n Object.setPrototypeOf(this, OumlaSdkApiTimeoutError.prototype);\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport * as errors from \"../../errors/index.js\";\nimport * as OumlaSdkApi from \"../index.js\";\nimport * as core from \"../../core/index.js\";\n\nexport class BadRequestError extends errors.OumlaSdkApiError {\n constructor(body: OumlaSdkApi.ErrorResponse, rawResponse?: core.RawResponse) {\n super({\n message: \"BadRequestError\",\n statusCode: 400,\n body: body,\n rawResponse: rawResponse,\n });\n Object.setPrototypeOf(this, BadRequestError.prototype);\n }\n}\n","import { EndpointMetadata } from \"./EndpointMetadata.js\";\nimport { Supplier } from \"./Supplier.js\";\n\ntype EndpointSupplierFn<T> = (arg: { endpointMetadata: EndpointMetadata }) => T | Promise<T>;\nexport type EndpointSupplier<T> = Supplier<T> | EndpointSupplierFn<T>;\nexport const EndpointSupplier = {\n get: async <T>(supplier: EndpointSupplier<T>, arg: { endpointMetadata: EndpointMetadata }): Promise<T> => {\n if (typeof supplier === \"function\") {\n return (supplier as EndpointSupplierFn<T>)(arg);\n } else {\n return supplier;\n }\n },\n};\n","interface QueryStringOptions {\n arrayFormat?: \"indices\" | \"repeat\";\n encode?: boolean;\n}\n\nconst defaultQsOptions: Required<QueryStringOptions> = {\n arrayFormat: \"indices\",\n encode: true,\n} as const;\n\nfunction encodeValue(value: unknown, shouldEncode: boolean): string {\n if (value === undefined) {\n return \"\";\n }\n if (value === null) {\n return \"\";\n }\n const stringValue = String(value);\n return shouldEncode ? encodeURIComponent(stringValue) : stringValue;\n}\n\nfunction stringifyObject(obj: Record<string, unknown>, prefix = \"\", options: Required<QueryStringOptions>): string[] {\n const parts: string[] = [];\n\n for (const [key, value] of Object.entries(obj)) {\n const fullKey = prefix ? `${prefix}[${key}]` : key;\n\n if (value === undefined) {\n continue;\n }\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n continue;\n }\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n if (item === undefined) {\n continue;\n }\n if (typeof item === \"object\" && !Array.isArray(item) && item !== null) {\n const arrayKey = options.arrayFormat === \"indices\" ? `${fullKey}[${i}]` : fullKey;\n parts.push(...stringifyObject(item as Record<string, unknown>, arrayKey, options));\n } else {\n const arrayKey = options.arrayFormat === \"indices\" ? `${fullKey}[${i}]` : fullKey;\n const encodedKey = options.encode ? encodeURIComponent(arrayKey) : arrayKey;\n parts.push(`${encodedKey}=${encodeValue(item, options.encode)}`);\n }\n }\n } else if (typeof value === \"object\" && value !== null) {\n if (Object.keys(value as Record<string, unknown>).length === 0) {\n continue;\n }\n parts.push(...stringifyObject(value as Record<string, unknown>, fullKey, options));\n } else {\n const encodedKey = options.encode ? encodeURIComponent(fullKey) : fullKey;\n parts.push(`${encodedKey}=${encodeValue(value, options.encode)}`);\n }\n }\n\n return parts;\n}\n\nexport function toQueryString(obj: unknown, options?: QueryStringOptions): string {\n if (obj == null || typeof obj !== \"object\") {\n return \"\";\n }\n\n const parts = stringifyObject(obj as Record<string, unknown>, \"\", {\n ...defaultQsOptions,\n ...options,\n });\n return parts.join(\"&\");\n}\n","import { toQueryString } from \"../url/qs.js\";\n\nexport function createRequestUrl(baseUrl: string, queryParameters?: Record<string, unknown>): string {\n const queryString = toQueryString(queryParameters, { arrayFormat: \"repeat\" });\n return queryString ? `${baseUrl}?${queryString}` : baseUrl;\n}\n","import { ResponseWithBody } from \"./ResponseWithBody.js\";\n\nexport type BinaryResponse = {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/bodyUsed) */\n bodyUsed: boolean;\n /**\n * Returns a ReadableStream of the response body.\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/body)\n */\n stream: () => ReadableStream<Uint8Array>;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/arrayBuffer) */\n arrayBuffer: () => Promise<ArrayBuffer>;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/blob) */\n blob: () => Promise<Blob>;\n /**\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/bytes)\n * Some versions of the Fetch API may not support this method.\n */\n bytes?(): Promise<Uint8Array>;\n};\n\nexport function getBinaryResponse(response: ResponseWithBody): BinaryResponse {\n const binaryResponse: BinaryResponse = {\n get bodyUsed() {\n return response.bodyUsed;\n },\n stream: () => response.body,\n arrayBuffer: response.arrayBuffer.bind(response),\n blob: response.blob.bind(response),\n };\n if (\"bytes\" in response && typeof response.bytes === \"function\") {\n binaryResponse.bytes = response.bytes.bind(response);\n }\n\n return binaryResponse;\n}\n","export type ResponseWithBody = Response & {\n body: ReadableStream<Uint8Array>;\n};\n\nexport function isResponseWithBody(response: Response): response is ResponseWithBody {\n return (response as ResponseWithBody).body != null;\n}\n","import { getBinaryResponse } from \"./BinaryResponse.js\";\nimport { isResponseWithBody } from \"./ResponseWithBody.js\";\nimport { fromJson } from \"../json.js\";\n\nexport async function getResponseBody(response: Response, responseType?: string): Promise<unknown> {\n if (!isResponseWithBody(response)) {\n return undefined;\n }\n switch (responseType) {\n case \"binary-response\":\n return getBinaryResponse(response);\n case \"blob\":\n return await response.blob();\n case \"arrayBuffer\":\n return await response.arrayBuffer();\n case \"sse\":\n return response.body;\n case \"streaming\":\n return response.body;\n\n case \"text\":\n return await response.text();\n }\n\n // if responseType is \"json\" or not specified, try to parse as JSON\n const text = await response.text();\n if (text.length > 0) {\n try {\n let responseBody = fromJson(text);\n return responseBody;\n } catch (err) {\n return {\n ok: false,\n error: {\n reason: \"non-json\",\n statusCode: response.status,\n rawBody: text,\n },\n };\n }\n }\n return undefined;\n}\n","import { fromJson } from \"../json.js\";\nimport { getResponseBody } from \"./getResponseBody.js\";\n\nexport async function getErrorResponseBody(response: Response): Promise<unknown> {\n let contentType = response.headers.get(\"Content-Type\")?.toLowerCase();\n if (contentType == null || contentType.length === 0) {\n return getResponseBody(response);\n }\n\n if (contentType.indexOf(\";\") !== -1) {\n contentType = contentType.split(\";\")[0]?.trim() ?? \"\";\n }\n switch (contentType) {\n case \"application/hal+json\":\n case \"application/json\":\n case \"application/ld+json\":\n case \"application/problem+json\":\n case \"application/vnd.api+json\":\n case \"text/json\":\n const text = await response.text();\n return text.length > 0 ? fromJson(text) : undefined;\n default:\n if (contentType.startsWith(\"application/vnd.\") && contentType.endsWith(\"+json\")) {\n const text = await response.text();\n return text.length > 0 ? fromJson(text) : undefined;\n }\n\n // Fallback to plain text if content type is not recognized\n // Even if no body is present, the response will be an empty string\n return await response.text();\n }\n}\n","export async function getFetchFn(): Promise<typeof fetch> {\n return fetch;\n}\n","import { toJson } from \"../json.js\";\n\nexport declare namespace GetRequestBody {\n interface Args {\n body: unknown;\n type: \"json\" | \"file\" | \"bytes\" | \"other\";\n }\n}\n\nexport async function getRequestBody({ body, type }: GetRequestBody.Args): Promise<BodyInit | undefined> {\n if (type.includes(\"json\")) {\n return toJson(body);\n } else {\n return body as BodyInit;\n }\n}\n","const TIMEOUT = \"timeout\";\n\nexport function getTimeoutSignal(timeoutMs: number): { signal: AbortSignal; abortId: NodeJS.Timeout } {\n const controller = new AbortController();\n const abortId = setTimeout(() => controller.abort(TIMEOUT), timeoutMs);\n return { signal: controller.signal, abortId };\n}\n\n/**\n * Returns an abort signal that is getting aborted when\n * at least one of the specified abort signals is aborted.\n *\n * Requires at least node.js 18.\n */\nexport function anySignal(...args: AbortSignal[] | [AbortSignal[]]): AbortSignal {\n // Allowing signals to be passed either as array\n // of signals or as multiple arguments.\n const signals = (args.length === 1 && Array.isArray(args[0]) ? args[0] : args) as AbortSignal[];\n\n const controller = new AbortController();\n\n for (const signal of signals) {\n if (signal.aborted) {\n // Exiting early if one of the signals\n // is already aborted.\n controller.abort((signal as any)?.reason);\n break;\n }\n\n // Listening for signals and removing the listeners\n // when at least one symbol is aborted.\n signal.addEventListener(\"abort\", () => controller.abort((signal as any)?.reason), {\n signal: controller.signal,\n });\n }\n\n return controller.signal;\n}\n","import { anySignal, getTimeoutSignal } from \"./signals.js\";\n\nexport const makeRequest = async (\n fetchFn: (url: string, init: RequestInit) => Promise<Response>,\n url: string,\n method: string,\n headers: Record<string, string>,\n requestBody: BodyInit | undefined,\n timeoutMs?: number,\n abortSignal?: AbortSignal,\n withCredentials?: boolean,\n duplex?: \"half\",\n): Promise<Response> => {\n const signals: AbortSignal[] = [];\n\n // Add timeout signal\n let timeoutAbortId: NodeJS.Timeout | undefined = undefined;\n if (timeoutMs != null) {\n const { signal, abortId } = getTimeoutSignal(timeoutMs);\n timeoutAbortId = abortId;\n signals.push(signal);\n }\n\n // Add arbitrary signal\n if (abortSignal != null) {\n signals.push(abortSignal);\n }\n let newSignals = anySignal(signals);\n const response = await fetchFn(url, {\n method: method,\n headers,\n body: requestBody,\n signal: newSignals,\n credentials: withCredentials ? \"include\" : undefined,\n // @ts-ignore\n duplex,\n });\n\n if (timeoutAbortId != null) {\n clearTimeout(timeoutAbortId);\n }\n\n return response;\n};\n","let Headers: typeof globalThis.Headers;\n\nif (typeof globalThis.Headers !== \"undefined\") {\n Headers = globalThis.Headers;\n} else {\n Headers = class Headers implements Headers {\n private headers: Map<string, string[]>;\n\n constructor(init?: HeadersInit) {\n this.headers = new Map();\n\n if (init) {\n if (init instanceof Headers) {\n init.forEach((value, key) => this.append(key, value));\n } else if (Array.isArray(init)) {\n for (const [key, value] of init) {\n if (typeof key === \"string\" && typeof value === \"string\") {\n this.append(key, value);\n } else {\n throw new TypeError(\"Each header entry must be a [string, string] tuple\");\n }\n }\n } else {\n for (const [key, value] of Object.entries(init)) {\n if (typeof value === \"string\") {\n this.append(key, value);\n } else {\n throw new TypeError(\"Header values must be strings\");\n }\n }\n }\n }\n }\n\n append(name: string, value: string): void {\n const key = name.toLowerCase();\n const existing = this.headers.get(key) || [];\n this.headers.set(key, [...existing, value]);\n }\n\n delete(name: string): void {\n const key = name.toLowerCase();\n this.headers.delete(key);\n }\n\n get(name: string): string | null {\n const key = name.toLowerCase();\n const values = this.headers.get(key);\n return values ? values.join(\", \") : null;\n }\n\n has(name: string): boolean {\n const key = name.toLowerCase();\n return this.headers.has(key);\n }\n\n set(name: string, value: string): void {\n const key = name.toLowerCase();\n this.headers.set(key, [value]);\n }\n\n forEach(callbackfn: (value: string, key: string, parent: Headers) => void, thisArg?: unknown): void {\n const boundCallback = thisArg ? callbackfn.bind(thisArg) : callbackfn;\n this.headers.forEach((values, key) => boundCallback(values.join(\", \"), key, this));\n }\n\n getSetCookie(): string[] {\n return this.headers.get(\"set-cookie\") || [];\n }\n\n *entries(): HeadersIterator<[string, string]> {\n for (const [key, values] of this.headers.entries()) {\n yield [key, values.join(\", \")];\n }\n }\n\n *keys(): HeadersIterator<string> {\n yield* this.headers.keys();\n }\n\n *values(): HeadersIterator<string> {\n for (const values of this.headers.values()) {\n yield values.join(\", \");\n }\n }\n\n [Symbol.iterator](): HeadersIterator<[string, string]> {\n return this.entries();\n }\n };\n}\n\nexport { Headers };\n","import { Headers } from \"./Headers.js\";\n\n/**\n * The raw response from the fetch call excluding the body.\n */\nexport type RawResponse = Omit<\n {\n [K in keyof Response as Response[K] extends Function ? never : K]: Response[K]; // strips out functions\n },\n \"ok\" | \"body\" | \"bodyUsed\"\n>; // strips out body and bodyUsed\n\n/**\n * A raw response indicating that the request was aborted.\n */\nexport const abortRawResponse: RawResponse = {\n headers: new Headers(),\n redirected: false,\n status: 499,\n statusText: \"Client Closed Request\",\n type: \"error\",\n url: \"\",\n} as const;\n\n/**\n * A raw response indicating an unknown error.\n */\nexport const unknownRawResponse: RawResponse = {\n headers: new Headers(),\n redirected: false,\n status: 0,\n statusText: \"Unknown Error\",\n type: \"error\",\n url: \"\",\n} as const;\n\n/**\n * Converts a `RawResponse` object into a `RawResponse` by extracting its properties,\n * excluding the `body` and `bodyUsed` fields.\n *\n * @param response - The `RawResponse` object to convert.\n * @returns A `RawResponse` object containing the extracted properties of the input response.\n */\nexport function toRawResponse(response: Response): RawResponse {\n return {\n headers: response.headers,\n redirected: response.redirected,\n status: response.status,\n statusText: response.statusText,\n type: response.type,\n url: response.url,\n };\n}\n\n/**\n * Creates a `RawResponse` from a standard `Response` object.\n */\nexport interface WithRawResponse<T> {\n readonly data: T;\n readonly rawResponse: RawResponse;\n}\n","const INITIAL_RETRY_DELAY = 1000; // in milliseconds\nconst MAX_RETRY_DELAY = 60000; // in milliseconds\nconst DEFAULT_MAX_RETRIES = 2;\nconst JITTER_FACTOR = 0.2; // 20% random jitter\n\nfunction addPositiveJitter(delay: number): number {\n // Generate a random value between 0 and +JITTER_FACTOR\n const jitterMultiplier = 1 + Math.random() * JITTER_FACTOR;\n return delay * jitterMultiplier;\n}\n\nfunction addSymmetricJitter(delay: number): number {\n // Generate a random value in a JITTER_FACTOR-sized percentage range around delay\n const jitterMultiplier = 1 + (Math.random() - 0.5) * JITTER_FACTOR;\n return delay * jitterMultiplier;\n}\n\nfunction getRetryDelayFromHeaders(response: Response, retryAttempt: number): number {\n // Check for Retry-After header first (RFC 7231), with no jitter\n const retryAfter = response.headers.get(\"Retry-After\");\n if (retryAfter) {\n // Parse as number of seconds...\n const retryAfterSeconds = parseInt(retryAfter, 10);\n if (!isNaN(retryAfterSeconds) && retryAfterSeconds > 0) {\n return Math.min(retryAfterSeconds * 1000, MAX_RETRY_DELAY);\n }\n\n // ...or as an HTTP date; both are valid\n const retryAfterDate = new Date(retryAfter);\n if (!isNaN(retryAfterDate.getTime())) {\n const delay = retryAfterDate.getTime() - Date.now();\n if (delay > 0) {\n return Math.min(Math.max(delay, 0), MAX_RETRY_DELAY);\n }\n }\n }\n\n // Then check for industry-standard X-RateLimit-Reset header, with positive jitter\n const rateLimitReset = response.headers.get(\"X-RateLimit-Reset\");\n if (rateLimitReset) {\n const resetTime = parseInt(rateLimitReset, 10);\n if (!isNaN(resetTime)) {\n // Assume Unix timestamp in epoch seconds\n const delay = resetTime * 1000 - Date.now();\n if (delay > 0) {\n return addPositiveJitter(Math.min(delay, MAX_RETRY_DELAY));\n }\n }\n }\n\n // Fall back to exponential backoff, with symmetric jitter\n return addSymmetricJitter(Math.min(INITIAL_RETRY_DELAY * Math.pow(2, retryAttempt), MAX_RETRY_DELAY));\n}\n\nexport async function requestWithRetries(\n requestFn: () => Promise<Response>,\n maxRetries: number = DEFAULT_MAX_RETRIES,\n): Promise<Response> {\n let response: Response = await requestFn();\n\n for (let i = 0; i < maxRetries; ++i) {\n if ([408, 429].includes(response.status) || response.status >= 500) {\n // Get delay with appropriate jitter applied\n const delay = getRetryDelayFromHeaders(response, i);\n\n await new Promise((resolve) => setTimeout(resolve, delay));\n response = await requestFn();\n } else {\n break;\n }\n }\n return response!;\n}\n","import { toJson } from \"../json.js\";\nimport { APIResponse } from \"./APIResponse.js\";\nimport { createRequestUrl } from \"./createRequestUrl.js\";\nimport { EndpointMetadata } from \"./EndpointMetadata.js\";\nimport { EndpointSupplier } from \"./EndpointSupplier.js\";\nimport { getErrorResponseBody } from \"./getErrorResponseBody.js\";\nimport { getFetchFn } from \"./getFetchFn.js\";\nimport { getRequestBody } from \"./getRequestBody.js\";\nimport { getResponseBody } from \"./getResponseBody.js\";\nimport { makeRequest } from \"./makeRequest.js\";\nimport { abortRawResponse, toRawResponse, unknownRawResponse } from \"./RawResponse.js\";\nimport { requestWithRetries } from \"./requestWithRetries.js\";\n\nexport type FetchFunction = <R = unknown>(args: Fetcher.Args) => Promise<APIResponse<R, Fetcher.Error>>;\n\nexport declare namespace Fetcher {\n export interface Args {\n url: string;\n method: string;\n contentType?: string;\n headers?: Record<string, string | EndpointSupplier<string | null | undefined> | null | undefined>;\n queryParameters?: Record<string, unknown>;\n body?: unknown;\n timeoutMs?: number;\n maxRetries?: number;\n withCredentials?: boolean;\n abortSignal?: AbortSignal;\n requestType?: \"json\" | \"file\" | \"bytes\";\n responseType?: \"json\" | \"blob\" | \"sse\" | \"streaming\" | \"text\" | \"arrayBuffer\" | \"binary-response\";\n duplex?: \"half\";\n endpointMetadata?: EndpointMetadata;\n }\n\n export type Error = FailedStatusCodeError | NonJsonError | TimeoutError | UnknownError;\n\n export interface FailedStatusCodeError {\n reason: \"status-code\";\n statusCode: number;\n body: unknown;\n }\n\n export interface NonJsonError {\n reason: \"non-json\";\n statusCode: number;\n rawBody: string;\n }\n\n export interface TimeoutError {\n reason: \"timeout\";\n }\n\n export interface UnknownError {\n reason: \"unknown\";\n errorMessage: string;\n }\n}\n\nasync function getHeaders(args: Fetcher.Args): Promise<Record<string, string>> {\n const newHeaders: Record<string, string> = {};\n if (args.body !== undefined && args.contentType != null) {\n newHeaders[\"Content-Type\"] = args.contentType;\n }\n\n if (args.headers == null) {\n return newHeaders;\n }\n\n for (const [key, value] of Object.entries(args.headers)) {\n const result = await EndpointSupplier.get(value, { endpointMetadata: args.endpointMetadata ?? {} });\n if (typeof result === \"string\") {\n newHeaders[key] = result;\n continue;\n }\n if (result == null) {\n continue;\n }\n newHeaders[key] = `${result}`;\n }\n return newHeaders;\n}\n\nexport async function fetcherImpl<R = unknown>(args: Fetcher.Args): Promise<APIResponse<R, Fetcher.Error>> {\n const url = createRequestUrl(args.url, args.queryParameters);\n const requestBody: BodyInit | undefined = await getRequestBody({\n body: args.body,\n type: args.requestType === \"json\" ? \"json\" : \"other\",\n });\n const fetchFn = await getFetchFn();\n\n try {\n const response = await requestWithRetries(\n async () =>\n makeRequest(\n fetchFn,\n url,\n args.method,\n await getHeaders(args),\n requestBody,\n args.timeoutMs,\n args.abortSignal,\n args.withCredentials,\n args.duplex,\n ),\n args.maxRetries,\n );\n\n if (response.status >= 200 && response.status < 400) {\n return {\n ok: true,\n body: (await getResponseBody(response, args.responseType)) as R,\n headers: response.headers,\n rawResponse: toRawResponse(response),\n };\n } else {\n return {\n ok: false,\n error: {\n reason: \"status-code\",\n statusCode: response.status,\n body: await getErrorResponseBody(response),\n },\n rawResponse: toRawResponse(response),\n };\n }\n } catch (error) {\n if (args.abortSignal != null && args.abortSignal.aborted) {\n return {\n ok: false,\n error: {\n reason: \"unknown\",\n errorMessage: \"The user aborted a request\",\n },\n rawResponse: abortRawResponse,\n };\n } else if (error instanceof Error && error.name === \"AbortError\") {\n return {\n ok: false,\n error: {\n reason: \"timeout\",\n },\n rawResponse: abortRawResponse,\n };\n } else if (error instanceof Error) {\n return {\n ok: false,\n error: {\n reason: \"unknown\",\n errorMessage: error.message,\n },\n rawResponse: unknownRawResponse,\n };\n }\n\n return {\n ok: false,\n error: {\n reason: \"unknown\",\n errorMessage: toJson(error),\n },\n rawResponse: unknownRawResponse,\n };\n }\n}\n\nexport const fetcher: FetchFunction = fetcherImpl;\n","import { WithRawResponse } from \"./RawResponse.js\";\n\n/**\n * A promise that returns the parsed response and lets you retrieve the raw response too.\n */\nexport class HttpResponsePromise<T> extends Promise<T> {\n private innerPromise: Promise<WithRawResponse<T>>;\n private unwrappedPromise: Promise<T> | undefined;\n\n private constructor(promise: Promise<WithRawResponse<T>>) {\n // Initialize with a no-op to avoid premature parsing\n super((resolve) => {\n resolve(undefined as unknown as T);\n });\n this.innerPromise = promise;\n }\n\n /**\n * Creates an `HttpResponsePromise` from a function that returns a promise.\n *\n * @param fn - A function that returns a promise resolving to a `WithRawResponse` object.\n * @param args - Arguments to pass to the function.\n * @returns An `HttpResponsePromise` instance.\n */\n public static fromFunction<F extends (...args: never[]) => Promise<WithRawResponse<T>>, T>(\n fn: F,\n ...args: Parameters<F>\n ): HttpResponsePromise<T> {\n return new HttpResponsePromise<T>(fn(...args));\n }\n\n /**\n * Creates a function that returns an `HttpResponsePromise` from a function that returns a promise.\n *\n * @param fn - A function that returns a promise resolving to a `WithRawResponse` object.\n * @returns A function that returns an `HttpResponsePromise` instance.\n */\n public static interceptFunction<\n F extends (...args: never[]) => Promise<WithRawResponse<T>>,\n T = Awaited<ReturnType<F>>[\"data\"],\n >(fn: F): (...args: Parameters<F>) => HttpResponsePromise<T> {\n return (...args: Parameters<F>): HttpResponsePromise<T> => {\n return HttpResponsePromise.fromPromise<T>(fn(...args));\n };\n }\n\n /**\n * Creates an `HttpResponsePromise` from an existing promise.\n *\n * @param promise - A promise resolving to a `WithRawResponse` object.\n * @returns An `HttpResponsePromise` instance.\n */\n public static fromPromise<T>(promise: Promise<WithRawResponse<T>>): HttpResponsePromise<T> {\n return new HttpResponsePromise<T>(promise);\n }\n\n /**\n * Creates an `HttpResponsePromise` from an executor function.\n *\n * @param executor - A function that takes resolve and reject callbacks to create a promise.\n * @returns An `HttpResponsePromise` instance.\n */\n public static fromExecutor<T>(\n executor: (resolve: (value: WithRawResponse<T>) => void, reject: (reason?: unknown) => void) => void,\n ): HttpResponsePromise<T> {\n const promise = new Promise<WithRawResponse<T>>(executor);\n return new HttpResponsePromise<T>(promise);\n }\n\n /**\n * Creates an `HttpResponsePromise` from a resolved result.\n *\n * @param result - A `WithRawResponse` object to resolve immediately.\n * @returns An `HttpResponsePromise` instance.\n */\n public static fromResult<T>(result: WithRawResponse<T>): HttpResponsePromise<T> {\n const promise = Promise.resolve(result);\n return new HttpResponsePromise<T>(promise);\n }\n\n private unwrap(): Promise<T> {\n if (!this.unwrappedPromise) {\n this.unwrappedPromise = this.innerPromise.then(({ data }) => data);\n }\n return this.unwrappedPromise;\n }\n\n /** @inheritdoc */\n public override then<TResult1 = T, TResult2 = never>(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null,\n ): Promise<TResult1 | TResult2> {\n return this.unwrap().then(onfulfilled, onrejected);\n }\n\n /** @inheritdoc */\n public override catch<TResult = never>(\n onrejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | null,\n ): Promise<T | TResult> {\n return this.unwrap().catch(onrejected);\n }\n\n /** @inheritdoc */\n public override finally(onfinally?: (() => void) | null): Promise<T> {\n return this.unwrap().finally(onfinally);\n }\n\n /**\n * Retrieves the data and raw response.\n *\n * @returns A promise resolving to a `WithRawResponse` object.\n */\n public async withRawResponse(): Promise<WithRawResponse<T>> {\n return await this.innerPromise;\n }\n}\n","export type Supplier<T> = T | Promise<T> | (() => T | Promise<T>);\n\nexport const Supplier = {\n get: async <T>(supplier: Supplier<T>): Promise<T> => {\n if (typeof supplier === \"function\") {\n return (supplier as () => T)();\n } else {\n return supplier;\n }\n },\n};\n","interface DenoGlobal {\n version: {\n deno: string;\n };\n}\n\ninterface BunGlobal {\n version: string;\n}\n\ndeclare const Deno: DenoGlobal | undefined;\ndeclare const Bun: BunGlobal | undefined;\ndeclare const EdgeRuntime: string | undefined;\ndeclare const self: typeof globalThis.self & {\n importScripts?: unknown;\n};\n\n/**\n * A constant that indicates which environment and version the SDK is running in.\n */\nexport const RUNTIME: Runtime = evaluateRuntime();\n\nexport interface Runtime {\n type: \"browser\" | \"web-worker\" | \"deno\" | \"bun\" | \"node\" | \"react-native\" | \"unknown\" | \"workerd\" | \"edge-runtime\";\n version?: string;\n parsedVersion?: number;\n}\n\nfunction evaluateRuntime(): Runtime {\n /**\n * A constant that indicates whether the environment the code is running is a Web Browser.\n */\n const isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n if (isBrowser) {\n return {\n type: \"browser\",\n version: window.navigator.userAgent,\n };\n }\n\n /**\n * A constant that indicates whether the environment the code is running is Cloudflare.\n * https://developers.cloudflare.com/workers/runtime-apis/web-standards/#navigatoruseragent\n */\n const isCloudflare = typeof globalThis !== \"undefined\" && globalThis?.navigator?.userAgent === \"Cloudflare-Workers\";\n if (isCloudflare) {\n return {\n type: \"workerd\",\n };\n }\n\n /**\n * A constant that indicates whether the environment the code is running is Edge Runtime.\n * https://vercel.com/docs/functions/runtimes/edge-runtime#check-if-you're-running-on-the-edge-runtime\n */\n const isEdgeRuntime = typeof EdgeRuntime === \"string\";\n if (isEdgeRuntime) {\n return {\n type: \"edge-runtime\",\n };\n }\n\n /**\n * A constant that indicates whether the environment the code is running is a Web Worker.\n */\n const isWebWorker =\n typeof self === \"object\" &&\n typeof self?.importScripts === \"function\" &&\n (self.constructor?.name === \"DedicatedWorkerGlobalScope\" ||\n self.constructor?.name === \"ServiceWorkerGlobalScope\" ||\n self.constructor?.name === \"SharedWorkerGlobalScope\");\n if (isWebWorker) {\n return {\n type: \"web-worker\",\n };\n }\n\n /**\n * A constant that indicates whether the environment the code is running is Deno.\n * FYI Deno spoofs process.versions.node, see https://deno.land/std@0.177.0/node/process.ts?s=versions\n */\n const isDeno =\n typeof Deno !== \"undefined\" && typeof Deno.version !== \"undefined\" && typeof Deno.version.deno !== \"undefined\";\n if (isDeno) {\n return {\n type: \"deno\",\n version: Deno.version.deno,\n };\n }\n\n /**\n * A constant that indicates whether the environment the code is running is Bun.sh.\n */\n const isBun = typeof Bun !== \"undefined\" && typeof Bun.version !== \"undefined\";\n if (isBun) {\n return {\n type: \"bun\",\n version: Bun.version,\n };\n }\n\n /**\n * A constant that indicates whether the environment the code is running is Node.JS.\n */\n const isNode =\n typeof process !== \"undefined\" &&\n \"version\" in process &&\n !!process.version &&\n \"versions\" in process &&\n !!process.versions?.node;\n if (isNode) {\n return {\n type: \"node\",\n version: process.versions.node,\n parsedVersion: Number(process.versions.node.split(\".\")[0]),\n };\n }\n\n /**\n * A constant that indicates whether the environment the code is running is in React-Native.\n * https://github.com/facebook/react-native/blob/main/packages/react-native/Libraries/Core/setUpNavigator.js\n */\n const isReactNative = typeof navigator !== \"undefined\" && navigator?.product === \"ReactNative\";\n if (isReactNative) {\n return {\n type: \"react-native\",\n };\n }\n\n return {\n type: \"unknown\",\n };\n}\n","export { join } from \"./join.js\";\nexport { toQueryString } from \"./qs.js\";\n","export function join(base: string, ...segments: string[]): string {\n if (!base) {\n return \"\";\n }\n\n if (segments.length === 0) {\n return base;\n }\n\n if (base.includes(\"://\")) {\n let url: URL;\n try {\n url = new URL(base);\n } catch {\n // Fallback to path joining if URL is malformed\n return joinPath(base, ...segments);\n }\n\n const lastSegment = segments[segments.length - 1];\n const shouldPreserveTrailingSlash = lastSegment && lastSegment.endsWith(\"/\");\n\n for (const segment of segments) {\n const cleanSegment = trimSlashes(segment);\n if (cleanSegment) {\n url.pathname = joinPathSegments(url.pathname, cleanSegment);\n }\n }\n\n if (shouldPreserveTrailingSlash && !url.pathname.endsWith(\"/\")) {\n url.pathname += \"/\";\n }\n\n return url.toString();\n }\n\n return joinPath(base, ...segments);\n}\n\nfunction joinPath(base: string, ...segments: string[]): string {\n if (segments.length === 0) {\n return base;\n }\n\n let result = base;\n\n const lastSegment = segments[segments.length - 1];\n const shouldPreserveTrailingSlash = lastSegment && lastSegment.endsWith(\"/\");\n\n for (const segment of segments) {\n const cleanSegment = trimSlashes(segment);\n if (cleanSegment) {\n result = joinPathSegments(result, cleanSegment);\n }\n }\n\n if (shouldPreserveTrailingSlash && !result.endsWith(\"/\")) {\n result += \"/\";\n }\n\n return result;\n}\n\nfunction joinPathSegments(left: string, right: string): string {\n if (left.endsWith(\"/\")) {\n return left + right;\n }\n return left + \"/\" + right;\n}\n\nfunction trimSlashes(str: string): string {\n if (!str) return str;\n\n let start = 0;\n let end = str.length;\n\n if (str.startsWith(\"/\")) start = 1;\n if (str.endsWith(\"/\")) end = str.length - 1;\n\n return start === 0 && end === str.length ? str : str.slice(start, end);\n}\n","export function mergeHeaders<THeaderValue>(\n ...headersArray: (Record<string, THeaderValue> | null | undefined)[]\n): Record<string, string | THeaderValue> {\n const result: Record<string, THeaderValue> = {};\n\n for (const [key, value] of headersArray\n .filter((headers) => headers != null)\n .flatMap((headers) => Object.entries(headers))) {\n if (value != null) {\n result[key] = value;\n } else if (key in result) {\n delete result[key];\n }\n }\n\n return result;\n}\n\nexport function mergeOnlyDefinedHeaders<THeaderValue>(\n ...headersArray: (Record<string, THeaderValue> | null | undefined)[]\n): Record<string, THeaderValue> {\n const result: Record<string, THeaderValue> = {};\n\n for (const [key, value] of headersArray\n .filter((headers) => headers != null)\n .flatMap((headers) => Object.entries(headers))) {\n if (value != null) {\n result[key] = value;\n }\n }\n\n return result;\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nexport const OumlaSdkApiEnvironment = {\n Production: \"https://api.oumla.com\",\n} as const;\n\nexport type OumlaSdkApiEnvironment = typeof OumlaSdkApiEnvironment.Production;\n","// This file was auto-generated by Fern from our API Definition.\n\nimport * as environments from \"../../../../environments.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as OumlaSdkApi from \"../../../index.js\";\nimport { mergeHeaders, mergeOnlyDefinedHeaders } from \"../../../../core/headers.js\";\nimport * as errors from \"../../../../errors/index.js\";\n\nexport declare namespace Profiles {\n export interface Options {\n environment?: core.Supplier<environments.OumlaSdkApiEnvironment | string>;\n /** Specify a custom URL to connect the client to. */\n baseUrl?: core.Supplier<string>;\n token?: core.Supplier<core.BearerToken | undefined>;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey: core.Supplier<string>;\n /** Additional headers to include in requests. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n\n export interface RequestOptions {\n /** The maximum time to wait for a response in seconds. */\n timeoutInSeconds?: number;\n /** The number of times to retry the request. Defaults to 2. */\n maxRetries?: number;\n /** A hook to abort the request. */\n abortSignal?: AbortSignal;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey?: string;\n /** Additional query string parameters to include in the request. */\n queryParams?: Record<string, unknown>;\n /** Additional headers to include in the request. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n}\n\n/**\n * User profile management\n */\nexport class Profiles {\n protected readonly _options: Profiles.Options;\n\n constructor(_options: Profiles.Options) {\n this._options = _options;\n }\n\n /**\n * Retrieve a paginated list of profiles\n *\n * @param {OumlaSdkApi.GetProfilesRequest} request\n * @param {Profiles.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.profiles.getProfiles({\n * skip: 1,\n * take: 1\n * })\n */\n public getProfiles(\n request: OumlaSdkApi.GetProfilesRequest = {},\n requestOptions?: Profiles.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.PaginatedResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getProfiles(request, requestOptions));\n }\n\n private async __getProfiles(\n request: OumlaSdkApi.GetProfilesRequest = {},\n requestOptions?: Profiles.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.PaginatedResponse>> {\n const { skip, take } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (skip != null) {\n _queryParams[\"skip\"] = skip.toString();\n }\n\n if (take != null) {\n _queryParams[\"take\"] = take.toString();\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/profiles\",\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.PaginatedResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\"Timeout exceeded when calling GET /api/v1/profiles.\");\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Create a new user profile\n *\n * @param {OumlaSdkApi.CreateProfileRequest} request\n * @param {Profiles.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link OumlaSdkApi.BadRequestError}\n *\n * @example\n * await client.profiles.createProfile({\n * reference: \"reference\",\n * type: \"User\"\n * })\n */\n public createProfile(\n request: OumlaSdkApi.CreateProfileRequest,\n requestOptions?: Profiles.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__createProfile(request, requestOptions));\n }\n\n private async __createProfile(\n request: OumlaSdkApi.CreateProfileRequest,\n requestOptions?: Profiles.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/profiles\",\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryParameters: requestOptions?.queryParams,\n requestType: \"json\",\n body: request,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 400:\n throw new OumlaSdkApi.BadRequestError(\n _response.error.body as OumlaSdkApi.ErrorResponse,\n _response.rawResponse,\n );\n default:\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\"Timeout exceeded when calling POST /api/v1/profiles.\");\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n protected async _getAuthorizationHeader(): Promise<string | undefined> {\n const bearer = await core.Supplier.get(this._options.token);\n if (bearer != null) {\n return `Bearer ${bearer}`;\n }\n\n return undefined;\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport * as environments from \"../../../../environments.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as OumlaSdkApi from \"../../../index.js\";\nimport { mergeHeaders, mergeOnlyDefinedHeaders } from \"../../../../core/headers.js\";\nimport * as errors from \"../../../../errors/index.js\";\n\nexport declare namespace Wallets {\n export interface Options {\n environment?: core.Supplier<environments.OumlaSdkApiEnvironment | string>;\n /** Specify a custom URL to connect the client to. */\n baseUrl?: core.Supplier<string>;\n token?: core.Supplier<core.BearerToken | undefined>;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey: core.Supplier<string>;\n /** Additional headers to include in requests. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n\n export interface RequestOptions {\n /** The maximum time to wait for a response in seconds. */\n timeoutInSeconds?: number;\n /** The number of times to retry the request. Defaults to 2. */\n maxRetries?: number;\n /** A hook to abort the request. */\n abortSignal?: AbortSignal;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey?: string;\n /** Additional query string parameters to include in the request. */\n queryParams?: Record<string, unknown>;\n /** Additional headers to include in the request. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n}\n\n/**\n * Wallet creation and management\n */\nexport class Wallets {\n protected readonly _options: Wallets.Options;\n\n constructor(_options: Wallets.Options) {\n this._options = _options;\n }\n\n /**\n * Retrieve wallets for the organization\n *\n * @param {OumlaSdkApi.GetOrganizationWalletsRequest} request\n * @param {Wallets.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.wallets.getOrganizationWallets({\n * skip: 1,\n * take: 1\n * })\n */\n public getOrganizationWallets(\n request: OumlaSdkApi.GetOrganizationWalletsRequest = {},\n requestOptions?: Wallets.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.PaginatedResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getOrganizationWallets(request, requestOptions));\n }\n\n private async __getOrganizationWallets(\n request: OumlaSdkApi.GetOrganizationWalletsRequest = {},\n requestOptions?: Wallets.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.PaginatedResponse>> {\n const { skip, take } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (skip != null) {\n _queryParams[\"skip\"] = skip.toString();\n }\n\n if (take != null) {\n _queryParams[\"take\"] = take.toString();\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/wallets/organization\",\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.PaginatedResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/wallets/organization.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Retrieve wallets for a specific profile\n *\n * @param {string} reference - Profile reference\n * @param {OumlaSdkApi.GetProfileWalletsRequest} request\n * @param {Wallets.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.wallets.getProfileWallets(\"reference\", {\n * skip: 1,\n * take: 1\n * })\n */\n public getProfileWallets(\n reference: string,\n request: OumlaSdkApi.GetProfileWalletsRequest = {},\n requestOptions?: Wallets.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.PaginatedResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getProfileWallets(reference, request, requestOptions));\n }\n\n private async __getProfileWallets(\n reference: string,\n request: OumlaSdkApi.GetProfileWalletsRequest = {},\n requestOptions?: Wallets.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.PaginatedResponse>> {\n const { skip, take } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (skip != null) {\n _queryParams[\"skip\"] = skip.toString();\n }\n\n if (take != null) {\n _queryParams[\"take\"] = take.toString();\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/wallets/profile/${encodeURIComponent(reference)}`,\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.PaginatedResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/wallets/profile/{reference}.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Generate a new wallet for a profile\n *\n * @param {OumlaSdkApi.CreateWalletRequest} request\n * @param {Wallets.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.wallets.generateWallet({\n * reference: \"reference\",\n * network: \"BTC\"\n * })\n */\n public generateWallet(\n request: OumlaSdkApi.CreateWalletRequest,\n requestOptions?: Wallets.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__generateWallet(request, requestOptions));\n }\n\n private async __generateWallet(\n request: OumlaSdkApi.CreateWalletRequest,\n requestOptions?: Wallets.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/wallets/generate\",\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryParameters: requestOptions?.queryParams,\n requestType: \"json\",\n body: request,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling POST /api/v1/wallets/generate.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n protected async _getAuthorizationHeader(): Promise<string | undefined> {\n const bearer = await core.Supplier.get(this._options.token);\n if (bearer != null) {\n return `Bearer ${bearer}`;\n }\n\n return undefined;\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport * as environments from \"../../../../environments.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as OumlaSdkApi from \"../../../index.js\";\nimport { mergeHeaders, mergeOnlyDefinedHeaders } from \"../../../../core/headers.js\";\nimport * as errors from \"../../../../errors/index.js\";\n\nexport declare namespace Addresses {\n export interface Options {\n environment?: core.Supplier<environments.OumlaSdkApiEnvironment | string>;\n /** Specify a custom URL to connect the client to. */\n baseUrl?: core.Supplier<string>;\n token?: core.Supplier<core.BearerToken | undefined>;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey: core.Supplier<string>;\n /** Additional headers to include in requests. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n\n export interface RequestOptions {\n /** The maximum time to wait for a response in seconds. */\n timeoutInSeconds?: number;\n /** The number of times to retry the request. Defaults to 2. */\n maxRetries?: number;\n /** A hook to abort the request. */\n abortSignal?: AbortSignal;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey?: string;\n /** Additional query string parameters to include in the request. */\n queryParams?: Record<string, unknown>;\n /** Additional headers to include in the request. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n}\n\n/**\n * Address generation and management\n */\nexport class Addresses {\n protected readonly _options: Addresses.Options;\n\n constructor(_options: Addresses.Options) {\n this._options = _options;\n }\n\n /**\n * Retrieve addresses for the organization\n *\n * @param {OumlaSdkApi.GetOrganizationAddressesRequest} request\n * @param {Addresses.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.addresses.getOrganizationAddresses({\n * skip: 1,\n * take: 1\n * })\n */\n public getOrganizationAddresses(\n request: OumlaSdkApi.GetOrganizationAddressesRequest = {},\n requestOptions?: Addresses.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.PaginatedResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getOrganizationAddresses(request, requestOptions));\n }\n\n private async __getOrganizationAddresses(\n request: OumlaSdkApi.GetOrganizationAddressesRequest = {},\n requestOptions?: Addresses.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.PaginatedResponse>> {\n const { skip, take } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (skip != null) {\n _queryParams[\"skip\"] = skip.toString();\n }\n\n if (take != null) {\n _queryParams[\"take\"] = take.toString();\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/addresses/organization\",\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.PaginatedResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/addresses/organization.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Retrieve addresses for a specific profile\n *\n * @param {string} reference - Profile reference\n * @param {OumlaSdkApi.GetProfileAddressesRequest} request\n * @param {Addresses.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.addresses.getProfileAddresses(\"reference\", {\n * skip: 1,\n * take: 1\n * })\n */\n public getProfileAddresses(\n reference: string,\n request: OumlaSdkApi.GetProfileAddressesRequest = {},\n requestOptions?: Addresses.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.PaginatedResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getProfileAddresses(reference, request, requestOptions));\n }\n\n private async __getProfileAddresses(\n reference: string,\n request: OumlaSdkApi.GetProfileAddressesRequest = {},\n requestOptions?: Addresses.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.PaginatedResponse>> {\n const { skip, take } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (skip != null) {\n _queryParams[\"skip\"] = skip.toString();\n }\n\n if (take != null) {\n _queryParams[\"take\"] = take.toString();\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/addresses/${encodeURIComponent(reference)}`,\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.PaginatedResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/addresses/{reference}.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Generate a new address for a profile\n *\n * @param {OumlaSdkApi.CreateAddressRequest} request\n * @param {Addresses.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.addresses.generateAddress({\n * reference: \"reference\",\n * network: \"BTC\",\n * clientShare: \"clientShare\"\n * })\n */\n public generateAddress(\n request: OumlaSdkApi.CreateAddressRequest,\n requestOptions?: Addresses.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__generateAddress(request, requestOptions));\n }\n\n private async __generateAddress(\n request: OumlaSdkApi.CreateAddressRequest,\n requestOptions?: Addresses.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/addresses/generate\",\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryParameters: requestOptions?.queryParams,\n requestType: \"json\",\n body: request,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling POST /api/v1/addresses/generate.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n protected async _getAuthorizationHeader(): Promise<string | undefined> {\n const bearer = await core.Supplier.get(this._options.token);\n if (bearer != null) {\n return `Bearer ${bearer}`;\n }\n\n return undefined;\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport * as environments from \"../../../../environments.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as OumlaSdkApi from \"../../../index.js\";\nimport { mergeHeaders, mergeOnlyDefinedHeaders } from \"../../../../core/headers.js\";\nimport * as errors from \"../../../../errors/index.js\";\n\nexport declare namespace Transactions {\n export interface Options {\n environment?: core.Supplier<environments.OumlaSdkApiEnvironment | string>;\n /** Specify a custom URL to connect the client to. */\n baseUrl?: core.Supplier<string>;\n token?: core.Supplier<core.BearerToken | undefined>;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey: core.Supplier<string>;\n /** Additional headers to include in requests. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n\n export interface RequestOptions {\n /** The maximum time to wait for a response in seconds. */\n timeoutInSeconds?: number;\n /** The number of times to retry the request. Defaults to 2. */\n maxRetries?: number;\n /** A hook to abort the request. */\n abortSignal?: AbortSignal;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey?: string;\n /** Additional query string parameters to include in the request. */\n queryParams?: Record<string, unknown>;\n /** Additional headers to include in the request. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n}\n\n/**\n * Transaction history and tracking\n */\nexport class Transactions {\n protected readonly _options: Transactions.Options;\n\n constructor(_options: Transactions.Options) {\n this._options = _options;\n }\n\n /**\n * Retrieve transactions for a specific address\n *\n * @param {string} address - Blockchain address\n * @param {OumlaSdkApi.GetTransactionsByAddressRequest} request\n * @param {Transactions.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.transactions.getTransactionsByAddress(\"address\", {\n * skip: 1,\n * take: 1\n * })\n */\n public getTransactionsByAddress(\n address: string,\n request: OumlaSdkApi.GetTransactionsByAddressRequest = {},\n requestOptions?: Transactions.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.PaginatedResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getTransactionsByAddress(address, request, requestOptions));\n }\n\n private async __getTransactionsByAddress(\n address: string,\n request: OumlaSdkApi.GetTransactionsByAddressRequest = {},\n requestOptions?: Transactions.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.PaginatedResponse>> {\n const { skip, take } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (skip != null) {\n _queryParams[\"skip\"] = skip.toString();\n }\n\n if (take != null) {\n _queryParams[\"take\"] = take.toString();\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/transactions/address/${encodeURIComponent(address)}`,\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.PaginatedResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/transactions/address/{address}.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Retrieve transactions for a specific wallet\n *\n * @param {string} miniWalletId - Mini wallet ID\n * @param {OumlaSdkApi.GetTransactionsByWalletRequest} request\n * @param {Transactions.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.transactions.getTransactionsByWallet(\"miniWalletId\", {\n * skip: 1,\n * take: 1\n * })\n */\n public getTransactionsByWallet(\n miniWalletId: string,\n request: OumlaSdkApi.GetTransactionsByWalletRequest = {},\n requestOptions?: Transactions.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.PaginatedResponse> {\n return core.HttpResponsePromise.fromPromise(\n this.__getTransactionsByWallet(miniWalletId, request, requestOptions),\n );\n }\n\n private async __getTransactionsByWallet(\n miniWalletId: string,\n request: OumlaSdkApi.GetTransactionsByWalletRequest = {},\n requestOptions?: Transactions.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.PaginatedResponse>> {\n const { skip, take } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (skip != null) {\n _queryParams[\"skip\"] = skip.toString();\n }\n\n if (take != null) {\n _queryParams[\"take\"] = take.toString();\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/transactions/wallet/${encodeURIComponent(miniWalletId)}`,\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.PaginatedResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/transactions/wallet/{miniWalletId}.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Retrieve transactions for the organization\n *\n * @param {OumlaSdkApi.GetOrganizationTransactionsRequest} request\n * @param {Transactions.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.transactions.getOrganizationTransactions({\n * skip: 1,\n * take: 1\n * })\n */\n public getOrganizationTransactions(\n request: OumlaSdkApi.GetOrganizationTransactionsRequest = {},\n requestOptions?: Transactions.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.PaginatedResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getOrganizationTransactions(request, requestOptions));\n }\n\n private async __getOrganizationTransactions(\n request: OumlaSdkApi.GetOrganizationTransactionsRequest = {},\n requestOptions?: Transactions.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.PaginatedResponse>> {\n const { skip, take } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (skip != null) {\n _queryParams[\"skip\"] = skip.toString();\n }\n\n if (take != null) {\n _queryParams[\"take\"] = take.toString();\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/transactions/organization\",\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.PaginatedResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/transactions/organization.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Retrieve transactions for a specific profile\n *\n * @param {string} reference - Profile reference\n * @param {OumlaSdkApi.GetProfileTransactionsRequest} request\n * @param {Transactions.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.transactions.getProfileTransactions(\"reference\", {\n * skip: 1,\n * take: 1\n * })\n */\n public getProfileTransactions(\n reference: string,\n request: OumlaSdkApi.GetProfileTransactionsRequest = {},\n requestOptions?: Transactions.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.PaginatedResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getProfileTransactions(reference, request, requestOptions));\n }\n\n private async __getProfileTransactions(\n reference: string,\n request: OumlaSdkApi.GetProfileTransactionsRequest = {},\n requestOptions?: Transactions.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.PaginatedResponse>> {\n const { skip, take } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (skip != null) {\n _queryParams[\"skip\"] = skip.toString();\n }\n\n if (take != null) {\n _queryParams[\"take\"] = take.toString();\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/transactions/profile/${encodeURIComponent(reference)}`,\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.PaginatedResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/transactions/profile/{reference}.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n protected async _getAuthorizationHeader(): Promise<string | undefined> {\n const bearer = await core.Supplier.get(this._options.token);\n if (bearer != null) {\n return `Bearer ${bearer}`;\n }\n\n return undefined;\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport * as environments from \"../../../../environments.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as OumlaSdkApi from \"../../../index.js\";\nimport { mergeHeaders, mergeOnlyDefinedHeaders } from \"../../../../core/headers.js\";\nimport * as errors from \"../../../../errors/index.js\";\n\nexport declare namespace Assets {\n export interface Options {\n environment?: core.Supplier<environments.OumlaSdkApiEnvironment | string>;\n /** Specify a custom URL to connect the client to. */\n baseUrl?: core.Supplier<string>;\n token?: core.Supplier<core.BearerToken | undefined>;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey: core.Supplier<string>;\n /** Additional headers to include in requests. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n\n export interface RequestOptions {\n /** The maximum time to wait for a response in seconds. */\n timeoutInSeconds?: number;\n /** The number of times to retry the request. Defaults to 2. */\n maxRetries?: number;\n /** A hook to abort the request. */\n abortSignal?: AbortSignal;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey?: string;\n /** Additional query string parameters to include in the request. */\n queryParams?: Record<string, unknown>;\n /** Additional headers to include in the request. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n}\n\n/**\n * Asset management and tracking\n */\nexport class Assets {\n protected readonly _options: Assets.Options;\n\n constructor(_options: Assets.Options) {\n this._options = _options;\n }\n\n /**\n * Retrieve assets for a specific address\n *\n * @param {string} address - Blockchain address\n * @param {OumlaSdkApi.GetAssetsByAddressRequest} request\n * @param {Assets.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.assets.getAssetsByAddress(\"address\", {\n * skip: 1,\n * take: 1\n * })\n */\n public getAssetsByAddress(\n address: string,\n request: OumlaSdkApi.GetAssetsByAddressRequest = {},\n requestOptions?: Assets.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.PaginatedResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getAssetsByAddress(address, request, requestOptions));\n }\n\n private async __getAssetsByAddress(\n address: string,\n request: OumlaSdkApi.GetAssetsByAddressRequest = {},\n requestOptions?: Assets.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.PaginatedResponse>> {\n const { skip, take } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (skip != null) {\n _queryParams[\"skip\"] = skip.toString();\n }\n\n if (take != null) {\n _queryParams[\"take\"] = take.toString();\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/assets/address/${encodeURIComponent(address)}`,\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.PaginatedResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/assets/address/{address}.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Retrieve assets for a specific wallet\n *\n * @param {string} miniWalletId - Mini wallet ID\n * @param {OumlaSdkApi.GetAssetsByWalletRequest} request\n * @param {Assets.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.assets.getAssetsByWallet(\"miniWalletId\", {\n * skip: 1,\n * take: 1\n * })\n */\n public getAssetsByWallet(\n miniWalletId: string,\n request: OumlaSdkApi.GetAssetsByWalletRequest = {},\n requestOptions?: Assets.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.PaginatedResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getAssetsByWallet(miniWalletId, request, requestOptions));\n }\n\n private async __getAssetsByWallet(\n miniWalletId: string,\n request: OumlaSdkApi.GetAssetsByWalletRequest = {},\n requestOptions?: Assets.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.PaginatedResponse>> {\n const { skip, take } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (skip != null) {\n _queryParams[\"skip\"] = skip.toString();\n }\n\n if (take != null) {\n _queryParams[\"take\"] = take.toString();\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/assets/wallet/${encodeURIComponent(miniWalletId)}`,\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.PaginatedResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/assets/wallet/{miniWalletId}.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n protected async _getAuthorizationHeader(): Promise<string | undefined> {\n const bearer = await core.Supplier.get(this._options.token);\n if (bearer != null) {\n return `Bearer ${bearer}`;\n }\n\n return undefined;\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport * as environments from \"../../../../environments.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as OumlaSdkApi from \"../../../index.js\";\nimport { mergeHeaders, mergeOnlyDefinedHeaders } from \"../../../../core/headers.js\";\nimport * as errors from \"../../../../errors/index.js\";\n\nexport declare namespace Withdrawals {\n export interface Options {\n environment?: core.Supplier<environments.OumlaSdkApiEnvironment | string>;\n /** Specify a custom URL to connect the client to. */\n baseUrl?: core.Supplier<string>;\n token?: core.Supplier<core.BearerToken | undefined>;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey: core.Supplier<string>;\n /** Additional headers to include in requests. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n\n export interface RequestOptions {\n /** The maximum time to wait for a response in seconds. */\n timeoutInSeconds?: number;\n /** The number of times to retry the request. Defaults to 2. */\n maxRetries?: number;\n /** A hook to abort the request. */\n abortSignal?: AbortSignal;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey?: string;\n /** Additional query string parameters to include in the request. */\n queryParams?: Record<string, unknown>;\n /** Additional headers to include in the request. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n}\n\n/**\n * Withdrawal operations\n */\nexport class Withdrawals {\n protected readonly _options: Withdrawals.Options;\n\n constructor(_options: Withdrawals.Options) {\n this._options = _options;\n }\n\n /**\n * Create a new withdrawal request\n *\n * @param {OumlaSdkApi.CreateWithdrawalRequest} request\n * @param {Withdrawals.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.withdrawals.createWithdrawal({\n * to: \"to\",\n * amount: \"amount\",\n * from: [\"from\"],\n * network: \"BTC\",\n * clientShare: \"clientShare\"\n * })\n */\n public createWithdrawal(\n request: OumlaSdkApi.CreateWithdrawalRequest,\n requestOptions?: Withdrawals.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__createWithdrawal(request, requestOptions));\n }\n\n private async __createWithdrawal(\n request: OumlaSdkApi.CreateWithdrawalRequest,\n requestOptions?: Withdrawals.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/withdraw\",\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryParameters: requestOptions?.queryParams,\n requestType: \"json\",\n body: request,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\"Timeout exceeded when calling POST /api/v1/withdraw.\");\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n protected async _getAuthorizationHeader(): Promise<string | undefined> {\n const bearer = await core.Supplier.get(this._options.token);\n if (bearer != null) {\n return `Bearer ${bearer}`;\n }\n\n return undefined;\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport * as environments from \"../../../../environments.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as OumlaSdkApi from \"../../../index.js\";\nimport { mergeHeaders, mergeOnlyDefinedHeaders } from \"../../../../core/headers.js\";\nimport * as errors from \"../../../../errors/index.js\";\n\nexport declare namespace ContractTemplates {\n export interface Options {\n environment?: core.Supplier<environments.OumlaSdkApiEnvironment | string>;\n /** Specify a custom URL to connect the client to. */\n baseUrl?: core.Supplier<string>;\n token?: core.Supplier<core.BearerToken | undefined>;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey: core.Supplier<string>;\n /** Additional headers to include in requests. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n\n export interface RequestOptions {\n /** The maximum time to wait for a response in seconds. */\n timeoutInSeconds?: number;\n /** The number of times to retry the request. Defaults to 2. */\n maxRetries?: number;\n /** A hook to abort the request. */\n abortSignal?: AbortSignal;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey?: string;\n /** Additional query string parameters to include in the request. */\n queryParams?: Record<string, unknown>;\n /** Additional headers to include in the request. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n}\n\n/**\n * Smart contract template management\n */\nexport class ContractTemplates {\n protected readonly _options: ContractTemplates.Options;\n\n constructor(_options: ContractTemplates.Options) {\n this._options = _options;\n }\n\n /**\n * Retrieve a paginated list of contract templates\n *\n * @param {OumlaSdkApi.GetContractTemplatesRequest} request\n * @param {ContractTemplates.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.contractTemplates.getContractTemplates({\n * skip: 1,\n * take: 1\n * })\n */\n public getContractTemplates(\n request: OumlaSdkApi.GetContractTemplatesRequest = {},\n requestOptions?: ContractTemplates.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.PaginatedResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getContractTemplates(request, requestOptions));\n }\n\n private async __getContractTemplates(\n request: OumlaSdkApi.GetContractTemplatesRequest = {},\n requestOptions?: ContractTemplates.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.PaginatedResponse>> {\n const { skip, take } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (skip != null) {\n _queryParams[\"skip\"] = skip.toString();\n }\n\n if (take != null) {\n _queryParams[\"take\"] = take.toString();\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/contract-templates\",\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.PaginatedResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/contract-templates.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Create a new contract template\n *\n * @param {OumlaSdkApi.CreateContractTemplateRequest} request\n * @param {ContractTemplates.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.contractTemplates.createContractTemplate({\n * name: \"name\",\n * description: \"description\",\n * abi: [{\n * \"key\": \"value\"\n * }],\n * bytecode: \"bytecode\"\n * })\n */\n public createContractTemplate(\n request: OumlaSdkApi.CreateContractTemplateRequest,\n requestOptions?: ContractTemplates.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__createContractTemplate(request, requestOptions));\n }\n\n private async __createContractTemplate(\n request: OumlaSdkApi.CreateContractTemplateRequest,\n requestOptions?: ContractTemplates.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/contract-templates\",\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryParameters: requestOptions?.queryParams,\n requestType: \"json\",\n body: request,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling POST /api/v1/contract-templates.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Retrieve a specific contract template\n *\n * @param {string} templateId - Contract template ID\n * @param {ContractTemplates.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.contractTemplates.getContractTemplate(\"templateId\")\n */\n public getContractTemplate(\n templateId: string,\n requestOptions?: ContractTemplates.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getContractTemplate(templateId, requestOptions));\n }\n\n private async __getContractTemplate(\n templateId: string,\n requestOptions?: ContractTemplates.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/contract-templates/${encodeURIComponent(templateId)}`,\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: requestOptions?.queryParams,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/contract-templates/{templateId}.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Delete a contract template\n *\n * @param {string} templateId - Contract template ID\n * @param {ContractTemplates.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.contractTemplates.deleteContractTemplate(\"templateId\")\n */\n public deleteContractTemplate(\n templateId: string,\n requestOptions?: ContractTemplates.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__deleteContractTemplate(templateId, requestOptions));\n }\n\n private async __deleteContractTemplate(\n templateId: string,\n requestOptions?: ContractTemplates.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/contract-templates/${encodeURIComponent(templateId)}`,\n ),\n method: \"DELETE\",\n headers: _headers,\n queryParameters: requestOptions?.queryParams,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling DELETE /api/v1/contract-templates/{templateId}.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Retrieve constructor information for a contract template\n *\n * @param {string} templateId - Contract template ID\n * @param {ContractTemplates.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.contractTemplates.getContractConstructor(\"templateId\")\n */\n public getContractConstructor(\n templateId: string,\n requestOptions?: ContractTemplates.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getContractConstructor(templateId, requestOptions));\n }\n\n private async __getContractConstructor(\n templateId: string,\n requestOptions?: ContractTemplates.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/contract-templates/${encodeURIComponent(templateId)}/constructorInfo`,\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: requestOptions?.queryParams,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/contract-templates/{templateId}/constructorInfo.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Retrieve function information for a contract template\n *\n * @param {string} templateId - Contract template ID\n * @param {OumlaSdkApi.GetTemplateFunctionsRequest} request\n * @param {ContractTemplates.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.contractTemplates.getTemplateFunctions(\"templateId\", {\n * functionSignature: \"functionSignature\"\n * })\n */\n public getTemplateFunctions(\n templateId: string,\n request: OumlaSdkApi.GetTemplateFunctionsRequest = {},\n requestOptions?: ContractTemplates.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getTemplateFunctions(templateId, request, requestOptions));\n }\n\n private async __getTemplateFunctions(\n templateId: string,\n request: OumlaSdkApi.GetTemplateFunctionsRequest = {},\n requestOptions?: ContractTemplates.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n const { functionSignature } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (functionSignature != null) {\n _queryParams[\"functionSignature\"] = functionSignature;\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/contract-templates/${encodeURIComponent(templateId)}/function`,\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/contract-templates/{templateId}/function.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Deploy a contract from a template\n *\n * @param {string} templateId - Contract template ID\n * @param {OumlaSdkApi.DeployContractRequest} request\n * @param {ContractTemplates.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.contractTemplates.deployContract(\"templateId\", {\n * network: \"network\",\n * addressId: \"addressId\",\n * clientShare: \"clientShare\"\n * })\n */\n public deployContract(\n templateId: string,\n request: OumlaSdkApi.DeployContractRequest,\n requestOptions?: ContractTemplates.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__deployContract(templateId, request, requestOptions));\n }\n\n private async __deployContract(\n templateId: string,\n request: OumlaSdkApi.DeployContractRequest,\n requestOptions?: ContractTemplates.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/contract-templates/${encodeURIComponent(templateId)}/deploy`,\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryParameters: requestOptions?.queryParams,\n requestType: \"json\",\n body: request,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling POST /api/v1/contract-templates/{templateId}/deploy.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n protected async _getAuthorizationHeader(): Promise<string | undefined> {\n const bearer = await core.Supplier.get(this._options.token);\n if (bearer != null) {\n return `Bearer ${bearer}`;\n }\n\n return undefined;\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport * as environments from \"../../../../environments.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as OumlaSdkApi from \"../../../index.js\";\nimport { mergeHeaders, mergeOnlyDefinedHeaders } from \"../../../../core/headers.js\";\nimport * as errors from \"../../../../errors/index.js\";\n\nexport declare namespace DeployedContracts {\n export interface Options {\n environment?: core.Supplier<environments.OumlaSdkApiEnvironment | string>;\n /** Specify a custom URL to connect the client to. */\n baseUrl?: core.Supplier<string>;\n token?: core.Supplier<core.BearerToken | undefined>;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey: core.Supplier<string>;\n /** Additional headers to include in requests. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n\n export interface RequestOptions {\n /** The maximum time to wait for a response in seconds. */\n timeoutInSeconds?: number;\n /** The number of times to retry the request. Defaults to 2. */\n maxRetries?: number;\n /** A hook to abort the request. */\n abortSignal?: AbortSignal;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey?: string;\n /** Additional query string parameters to include in the request. */\n queryParams?: Record<string, unknown>;\n /** Additional headers to include in the request. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n}\n\n/**\n * Deployed contract management\n */\nexport class DeployedContracts {\n protected readonly _options: DeployedContracts.Options;\n\n constructor(_options: DeployedContracts.Options) {\n this._options = _options;\n }\n\n /**\n * Retrieve a paginated list of deployed contracts\n *\n * @param {OumlaSdkApi.GetDeployedContractsRequest} request\n * @param {DeployedContracts.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.deployedContracts.getDeployedContracts({\n * skip: 1,\n * take: 1,\n * contractAddress: \"contractAddress\",\n * network: \"BTC\",\n * contractTemplateId: \"contractTemplateId\"\n * })\n */\n public getDeployedContracts(\n request: OumlaSdkApi.GetDeployedContractsRequest = {},\n requestOptions?: DeployedContracts.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.PaginatedResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getDeployedContracts(request, requestOptions));\n }\n\n private async __getDeployedContracts(\n request: OumlaSdkApi.GetDeployedContractsRequest = {},\n requestOptions?: DeployedContracts.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.PaginatedResponse>> {\n const { skip, take, contractAddress, network, contractTemplateId } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (skip != null) {\n _queryParams[\"skip\"] = skip.toString();\n }\n\n if (take != null) {\n _queryParams[\"take\"] = take.toString();\n }\n\n if (contractAddress != null) {\n _queryParams[\"contractAddress\"] = contractAddress;\n }\n\n if (network != null) {\n _queryParams[\"network\"] = network;\n }\n\n if (contractTemplateId != null) {\n _queryParams[\"contractTemplateId\"] = contractTemplateId;\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/deployed-contracts\",\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.PaginatedResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/deployed-contracts.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Retrieve a specific deployed contract\n *\n * @param {string} contractId - Deployed contract ID\n * @param {DeployedContracts.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.deployedContracts.getDeployedContract(\"contractId\")\n */\n public getDeployedContract(\n contractId: string,\n requestOptions?: DeployedContracts.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getDeployedContract(contractId, requestOptions));\n }\n\n private async __getDeployedContract(\n contractId: string,\n requestOptions?: DeployedContracts.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/deployed-contracts/${encodeURIComponent(contractId)}`,\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: requestOptions?.queryParams,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/deployed-contracts/{contractId}.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Retrieve a deployed contract by network and address\n *\n * @param {string} network - Blockchain network\n * @param {string} contractAddress - Contract address\n * @param {DeployedContracts.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.deployedContracts.getDeployedContractByAddress(\"network\", \"contractAddress\")\n */\n public getDeployedContractByAddress(\n network: string,\n contractAddress: string,\n requestOptions?: DeployedContracts.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(\n this.__getDeployedContractByAddress(network, contractAddress, requestOptions),\n );\n }\n\n private async __getDeployedContractByAddress(\n network: string,\n contractAddress: string,\n requestOptions?: DeployedContracts.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/deployed-contracts/${encodeURIComponent(network)}/${encodeURIComponent(contractAddress)}`,\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: requestOptions?.queryParams,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/deployed-contracts/{network}/{contractAddress}.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Fetch ABI for a deployed contract\n *\n * @param {OumlaSdkApi.FetchContractAbiRequest} request\n * @param {DeployedContracts.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.deployedContracts.fetchContractAbi({\n * network: \"network\",\n * contractAddress: \"contractAddress\"\n * })\n */\n public fetchContractAbi(\n request: OumlaSdkApi.FetchContractAbiRequest,\n requestOptions?: DeployedContracts.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__fetchContractAbi(request, requestOptions));\n }\n\n private async __fetchContractAbi(\n request: OumlaSdkApi.FetchContractAbiRequest,\n requestOptions?: DeployedContracts.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/deployed-contracts/fetch-abi\",\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryParameters: requestOptions?.queryParams,\n requestType: \"json\",\n body: request,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling POST /api/v1/deployed-contracts/fetch-abi.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Add ABI for a deployed contract\n *\n * @param {OumlaSdkApi.AddContractAbiRequest} request\n * @param {DeployedContracts.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.deployedContracts.addContractAbi({\n * network: \"network\",\n * contractAddress: \"contractAddress\",\n * name: \"name\",\n * abi: [{\n * \"key\": \"value\"\n * }]\n * })\n */\n public addContractAbi(\n request: OumlaSdkApi.AddContractAbiRequest,\n requestOptions?: DeployedContracts.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__addContractAbi(request, requestOptions));\n }\n\n private async __addContractAbi(\n request: OumlaSdkApi.AddContractAbiRequest,\n requestOptions?: DeployedContracts.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/deployed-contracts/add-abi\",\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryParameters: requestOptions?.queryParams,\n requestType: \"json\",\n body: request,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling POST /api/v1/deployed-contracts/add-abi.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n protected async _getAuthorizationHeader(): Promise<string | undefined> {\n const bearer = await core.Supplier.get(this._options.token);\n if (bearer != null) {\n return `Bearer ${bearer}`;\n }\n\n return undefined;\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport * as environments from \"../../../../environments.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as OumlaSdkApi from \"../../../index.js\";\nimport { mergeHeaders, mergeOnlyDefinedHeaders } from \"../../../../core/headers.js\";\nimport * as errors from \"../../../../errors/index.js\";\n\nexport declare namespace ContractInteractions {\n export interface Options {\n environment?: core.Supplier<environments.OumlaSdkApiEnvironment | string>;\n /** Specify a custom URL to connect the client to. */\n baseUrl?: core.Supplier<string>;\n token?: core.Supplier<core.BearerToken | undefined>;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey: core.Supplier<string>;\n /** Additional headers to include in requests. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n\n export interface RequestOptions {\n /** The maximum time to wait for a response in seconds. */\n timeoutInSeconds?: number;\n /** The number of times to retry the request. Defaults to 2. */\n maxRetries?: number;\n /** A hook to abort the request. */\n abortSignal?: AbortSignal;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey?: string;\n /** Additional query string parameters to include in the request. */\n queryParams?: Record<string, unknown>;\n /** Additional headers to include in the request. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n}\n\n/**\n * Smart contract interaction operations\n */\nexport class ContractInteractions {\n protected readonly _options: ContractInteractions.Options;\n\n constructor(_options: ContractInteractions.Options) {\n this._options = _options;\n }\n\n /**\n * Retrieve available functions for a deployed contract\n *\n * @param {string} network - Blockchain network\n * @param {string} contractAddress - Contract address\n * @param {ContractInteractions.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.contractInteractions.getContractFunctions(\"network\", \"contractAddress\")\n */\n public getContractFunctions(\n network: string,\n contractAddress: string,\n requestOptions?: ContractInteractions.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(\n this.__getContractFunctions(network, contractAddress, requestOptions),\n );\n }\n\n private async __getContractFunctions(\n network: string,\n contractAddress: string,\n requestOptions?: ContractInteractions.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/contract-interactions/network/${encodeURIComponent(network)}/contract-address/${encodeURIComponent(contractAddress)}/functions`,\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: requestOptions?.queryParams,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/contract-interactions/network/{network}/contract-address/{contractAddress}/functions.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Call a read function on a deployed contract\n *\n * @param {string} network - Blockchain network\n * @param {string} contractAddress - Contract address\n * @param {OumlaSdkApi.ReadFunctionRequest} request\n * @param {ContractInteractions.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.contractInteractions.callReadFunction(\"network\", \"contractAddress\", {\n * abiFunction: {\n * name: \"name\",\n * inputs: [{}],\n * outputs: [{}],\n * type: \"type\"\n * }\n * })\n */\n public callReadFunction(\n network: string,\n contractAddress: string,\n request: OumlaSdkApi.ReadFunctionRequest,\n requestOptions?: ContractInteractions.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(\n this.__callReadFunction(network, contractAddress, request, requestOptions),\n );\n }\n\n private async __callReadFunction(\n network: string,\n contractAddress: string,\n request: OumlaSdkApi.ReadFunctionRequest,\n requestOptions?: ContractInteractions.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/contract-interactions/network/${encodeURIComponent(network)}/contract-address/${encodeURIComponent(contractAddress)}/functions/read`,\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryParameters: requestOptions?.queryParams,\n requestType: \"json\",\n body: request,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling POST /api/v1/contract-interactions/network/{network}/contract-address/{contractAddress}/functions/read.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Call a write function on a deployed contract\n *\n * @param {string} network - Blockchain network\n * @param {string} contractAddress - Contract address\n * @param {OumlaSdkApi.WriteFunctionRequest} request\n * @param {ContractInteractions.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.contractInteractions.callWriteFunction(\"network\", \"contractAddress\", {\n * addressId: \"addressId\",\n * clientShare: \"clientShare\",\n * abiFunction: {\n * name: \"name\",\n * inputs: [{}],\n * outputs: [{}],\n * type: \"type\"\n * }\n * })\n */\n public callWriteFunction(\n network: string,\n contractAddress: string,\n request: OumlaSdkApi.WriteFunctionRequest,\n requestOptions?: ContractInteractions.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(\n this.__callWriteFunction(network, contractAddress, request, requestOptions),\n );\n }\n\n private async __callWriteFunction(\n network: string,\n contractAddress: string,\n request: OumlaSdkApi.WriteFunctionRequest,\n requestOptions?: ContractInteractions.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/contract-interactions/network/${encodeURIComponent(network)}/contract-address/${encodeURIComponent(contractAddress)}/functions/write`,\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryParameters: requestOptions?.queryParams,\n requestType: \"json\",\n body: request,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling POST /api/v1/contract-interactions/network/{network}/contract-address/{contractAddress}/functions/write.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Retrieve transaction receipt for a specific transaction\n *\n * @param {string} network - Blockchain network\n * @param {string} txId - Transaction ID\n * @param {ContractInteractions.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.contractInteractions.getTransactionReceipt(\"network\", \"txId\")\n */\n public getTransactionReceipt(\n network: string,\n txId: string,\n requestOptions?: ContractInteractions.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getTransactionReceipt(network, txId, requestOptions));\n }\n\n private async __getTransactionReceipt(\n network: string,\n txId: string,\n requestOptions?: ContractInteractions.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/contract-interactions/network/${encodeURIComponent(network)}/tx/${encodeURIComponent(txId)}`,\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: requestOptions?.queryParams,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/contract-interactions/network/{network}/tx/{txId}.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n protected async _getAuthorizationHeader(): Promise<string | undefined> {\n const bearer = await core.Supplier.get(this._options.token);\n if (bearer != null) {\n return `Bearer ${bearer}`;\n }\n\n return undefined;\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport * as environments from \"../../../../environments.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as OumlaSdkApi from \"../../../index.js\";\nimport { mergeHeaders, mergeOnlyDefinedHeaders } from \"../../../../core/headers.js\";\nimport * as errors from \"../../../../errors/index.js\";\n\nexport declare namespace Tokenization {\n export interface Options {\n environment?: core.Supplier<environments.OumlaSdkApiEnvironment | string>;\n /** Specify a custom URL to connect the client to. */\n baseUrl?: core.Supplier<string>;\n token?: core.Supplier<core.BearerToken | undefined>;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey: core.Supplier<string>;\n /** Additional headers to include in requests. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n\n export interface RequestOptions {\n /** The maximum time to wait for a response in seconds. */\n timeoutInSeconds?: number;\n /** The number of times to retry the request. Defaults to 2. */\n maxRetries?: number;\n /** A hook to abort the request. */\n abortSignal?: AbortSignal;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey?: string;\n /** Additional query string parameters to include in the request. */\n queryParams?: Record<string, unknown>;\n /** Additional headers to include in the request. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n}\n\n/**\n * Token creation, minting, and management\n */\nexport class Tokenization {\n protected readonly _options: Tokenization.Options;\n\n constructor(_options: Tokenization.Options) {\n this._options = _options;\n }\n\n /**\n * Retrieve a paginated list of tokens\n *\n * @param {OumlaSdkApi.GetTokensRequest} request\n * @param {Tokenization.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.tokenization.getTokens({\n * skip: 1,\n * take: 1\n * })\n */\n public getTokens(\n request: OumlaSdkApi.GetTokensRequest = {},\n requestOptions?: Tokenization.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.PaginatedResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getTokens(request, requestOptions));\n }\n\n private async __getTokens(\n request: OumlaSdkApi.GetTokensRequest = {},\n requestOptions?: Tokenization.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.PaginatedResponse>> {\n const { skip, take } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (skip != null) {\n _queryParams[\"skip\"] = skip.toString();\n }\n\n if (take != null) {\n _queryParams[\"take\"] = take.toString();\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/tokenization/tokens\",\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.PaginatedResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/tokenization/tokens.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Issue a new token using a contract template\n *\n * @param {OumlaSdkApi.IssueNewTokenRequest} request\n * @param {Tokenization.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.tokenization.issueNewToken({\n * addressId: \"addressId\",\n * clientShare: \"clientShare\",\n * deploymentId: \"deploymentId\",\n * createParams: {\n * initializeParams: [{\n * name: \"name\",\n * type: \"type\",\n * value: \"value\"\n * }]\n * }\n * })\n */\n public issueNewToken(\n request: OumlaSdkApi.IssueNewTokenRequest,\n requestOptions?: Tokenization.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__issueNewToken(request, requestOptions));\n }\n\n private async __issueNewToken(\n request: OumlaSdkApi.IssueNewTokenRequest,\n requestOptions?: Tokenization.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/tokenization/tokens\",\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryParameters: requestOptions?.queryParams,\n requestType: \"json\",\n body: request,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling POST /api/v1/tokenization/tokens.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Link an existing contract to the platform\n *\n * @param {OumlaSdkApi.LinkContractRequest} request\n * @param {Tokenization.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.tokenization.linkContract({\n * contractAddress: \"contractAddress\"\n * })\n */\n public linkContract(\n request: OumlaSdkApi.LinkContractRequest,\n requestOptions?: Tokenization.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__linkContract(request, requestOptions));\n }\n\n private async __linkContract(\n request: OumlaSdkApi.LinkContractRequest,\n requestOptions?: Tokenization.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/tokenization/tokens/link\",\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryParameters: requestOptions?.queryParams,\n requestType: \"json\",\n body: request,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling POST /api/v1/tokenization/tokens/link.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Retrieve a paginated list of collections\n *\n * @param {OumlaSdkApi.GetCollectionsRequest} request\n * @param {Tokenization.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.tokenization.getCollections({\n * skip: 1,\n * take: 1\n * })\n */\n public getCollections(\n request: OumlaSdkApi.GetCollectionsRequest = {},\n requestOptions?: Tokenization.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.PaginatedResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getCollections(request, requestOptions));\n }\n\n private async __getCollections(\n request: OumlaSdkApi.GetCollectionsRequest = {},\n requestOptions?: Tokenization.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.PaginatedResponse>> {\n const { skip, take } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (skip != null) {\n _queryParams[\"skip\"] = skip.toString();\n }\n\n if (take != null) {\n _queryParams[\"take\"] = take.toString();\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/tokenization/collections\",\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.PaginatedResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/tokenization/collections.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Create a new token collection\n *\n * @param {OumlaSdkApi.CreateCollectionRequest} request\n * @param {Tokenization.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.tokenization.createCollection({\n * type: \"NON_FUNGIBLE_TOKEN\",\n * addressId: \"addressId\",\n * clientShare: \"clientShare\",\n * createParams: {\n * initializeParams: [{\n * name: \"name\",\n * type: \"type\",\n * value: \"value\"\n * }]\n * }\n * })\n */\n public createCollection(\n request: OumlaSdkApi.CreateCollectionRequest,\n requestOptions?: Tokenization.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__createCollection(request, requestOptions));\n }\n\n private async __createCollection(\n request: OumlaSdkApi.CreateCollectionRequest,\n requestOptions?: Tokenization.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/tokenization/collections\",\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryParameters: requestOptions?.queryParams,\n requestType: \"json\",\n body: request,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling POST /api/v1/tokenization/collections.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Retrieve a specific collection\n *\n * @param {string} id - Collection ID\n * @param {Tokenization.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.tokenization.getCollection(\"id\")\n */\n public getCollection(\n id: string,\n requestOptions?: Tokenization.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getCollection(id, requestOptions));\n }\n\n private async __getCollection(\n id: string,\n requestOptions?: Tokenization.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/tokenization/collections/${encodeURIComponent(id)}`,\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: requestOptions?.queryParams,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/tokenization/collections/{id}.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Delete a collection\n *\n * @param {string} id - Collection ID\n * @param {Tokenization.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.tokenization.deleteCollection(\"id\")\n */\n public deleteCollection(\n id: string,\n requestOptions?: Tokenization.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__deleteCollection(id, requestOptions));\n }\n\n private async __deleteCollection(\n id: string,\n requestOptions?: Tokenization.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/tokenization/collections/${encodeURIComponent(id)}`,\n ),\n method: \"DELETE\",\n headers: _headers,\n queryParameters: requestOptions?.queryParams,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling DELETE /api/v1/tokenization/collections/{id}.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Retrieve details for a specific token in a collection\n *\n * @param {string} id - Collection ID\n * @param {string} tokenId - Token ID\n * @param {Tokenization.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.tokenization.getCollectionTokenDetails(\"id\", \"tokenId\")\n */\n public getCollectionTokenDetails(\n id: string,\n tokenId: string,\n requestOptions?: Tokenization.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getCollectionTokenDetails(id, tokenId, requestOptions));\n }\n\n private async __getCollectionTokenDetails(\n id: string,\n tokenId: string,\n requestOptions?: Tokenization.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/tokenization/collections/${encodeURIComponent(id)}/tokens/${encodeURIComponent(tokenId)}`,\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: requestOptions?.queryParams,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/tokenization/collections/{id}/tokens/{tokenId}.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Mint a new token in a collection\n *\n * @param {string} id - Collection ID\n * @param {OumlaSdkApi.MintTokenRequest} request\n * @param {Tokenization.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.tokenization.mintToken(\"id\", {\n * addressId: \"addressId\",\n * clientShare: \"clientShare\",\n * to: \"to\",\n * tokenId: \"tokenId\"\n * })\n */\n public mintToken(\n id: string,\n request: OumlaSdkApi.MintTokenRequest,\n requestOptions?: Tokenization.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__mintToken(id, request, requestOptions));\n }\n\n private async __mintToken(\n id: string,\n request: OumlaSdkApi.MintTokenRequest,\n requestOptions?: Tokenization.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/tokenization/collections/${encodeURIComponent(id)}/tokens/mint`,\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryParameters: requestOptions?.queryParams,\n requestType: \"json\",\n body: request,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling POST /api/v1/tokenization/collections/{id}/tokens/mint.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Burn a token\n *\n * @param {string} id - Collection ID\n * @param {OumlaSdkApi.BurnTokenRequest} request\n * @param {Tokenization.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.tokenization.burnToken(\"id\", {\n * addressId: \"addressId\",\n * clientShare: \"clientShare\",\n * tokenId: \"tokenId\"\n * })\n */\n public burnToken(\n id: string,\n request: OumlaSdkApi.BurnTokenRequest,\n requestOptions?: Tokenization.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__burnToken(id, request, requestOptions));\n }\n\n private async __burnToken(\n id: string,\n request: OumlaSdkApi.BurnTokenRequest,\n requestOptions?: Tokenization.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/tokenization/collections/${encodeURIComponent(id)}/tokens/burn`,\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryParameters: requestOptions?.queryParams,\n requestType: \"json\",\n body: request,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling POST /api/v1/tokenization/collections/{id}/tokens/burn.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Unlink a token from the platform\n *\n * @param {string} id - Token ID\n * @param {Tokenization.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.tokenization.unlinkToken(\"id\")\n */\n public unlinkToken(\n id: string,\n requestOptions?: Tokenization.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__unlinkToken(id, requestOptions));\n }\n\n private async __unlinkToken(\n id: string,\n requestOptions?: Tokenization.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/tokenization/tokens/${encodeURIComponent(id)}`,\n ),\n method: \"DELETE\",\n headers: _headers,\n queryParameters: requestOptions?.queryParams,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling DELETE /api/v1/tokenization/tokens/{id}.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n protected async _getAuthorizationHeader(): Promise<string | undefined> {\n const bearer = await core.Supplier.get(this._options.token);\n if (bearer != null) {\n return `Bearer ${bearer}`;\n }\n\n return undefined;\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport * as environments from \"./environments.js\";\nimport * as core from \"./core/index.js\";\nimport { mergeHeaders } from \"./core/headers.js\";\nimport { Profiles } from \"./api/resources/profiles/client/Client.js\";\nimport { Wallets } from \"./api/resources/wallets/client/Client.js\";\nimport { Addresses } from \"./api/resources/addresses/client/Client.js\";\nimport { Transactions } from \"./api/resources/transactions/client/Client.js\";\nimport { Assets } from \"./api/resources/assets/client/Client.js\";\nimport { Withdrawals } from \"./api/resources/withdrawals/client/Client.js\";\nimport { ContractTemplates } from \"./api/resources/contractTemplates/client/Client.js\";\nimport { DeployedContracts } from \"./api/resources/deployedContracts/client/Client.js\";\nimport { ContractInteractions } from \"./api/resources/contractInteractions/client/Client.js\";\nimport { Tokenization } from \"./api/resources/tokenization/client/Client.js\";\n\nexport declare namespace OumlaSdkApiClient {\n export interface Options {\n environment?: core.Supplier<environments.OumlaSdkApiEnvironment | string>;\n /** Specify a custom URL to connect the client to. */\n baseUrl?: core.Supplier<string>;\n token?: core.Supplier<core.BearerToken | undefined>;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey: core.Supplier<string>;\n /** Additional headers to include in requests. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n\n export interface RequestOptions {\n /** The maximum time to wait for a response in seconds. */\n timeoutInSeconds?: number;\n /** The number of times to retry the request. Defaults to 2. */\n maxRetries?: number;\n /** A hook to abort the request. */\n abortSignal?: AbortSignal;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey?: string;\n /** Additional query string parameters to include in the request. */\n queryParams?: Record<string, unknown>;\n /** Additional headers to include in the request. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n}\n\nexport class OumlaSdkApiClient {\n protected readonly _options: OumlaSdkApiClient.Options;\n protected _profiles: Profiles | undefined;\n protected _wallets: Wallets | undefined;\n protected _addresses: Addresses | undefined;\n protected _transactions: Transactions | undefined;\n protected _assets: Assets | undefined;\n protected _withdrawals: Withdrawals | undefined;\n protected _contractTemplates: ContractTemplates | undefined;\n protected _deployedContracts: DeployedContracts | undefined;\n protected _contractInteractions: ContractInteractions | undefined;\n protected _tokenization: Tokenization | undefined;\n\n constructor(_options: OumlaSdkApiClient.Options) {\n this._options = {\n ..._options,\n headers: mergeHeaders(\n {\n \"x-sdk-version\": _options?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": _options?.apiKey,\n \"X-Fern-Language\": \"JavaScript\",\n \"X-Fern-Runtime\": core.RUNTIME.type,\n \"X-Fern-Runtime-Version\": core.RUNTIME.version,\n },\n _options?.headers,\n ),\n };\n }\n\n public get profiles(): Profiles {\n return (this._profiles ??= new Profiles(this._options));\n }\n\n public get wallets(): Wallets {\n return (this._wallets ??= new Wallets(this._options));\n }\n\n public get addresses(): Addresses {\n return (this._addresses ??= new Addresses(this._options));\n }\n\n public get transactions(): Transactions {\n return (this._transactions ??= new Transactions(this._options));\n }\n\n public get assets(): Assets {\n return (this._assets ??= new Assets(this._options));\n }\n\n public get withdrawals(): Withdrawals {\n return (this._withdrawals ??= new Withdrawals(this._options));\n }\n\n public get contractTemplates(): ContractTemplates {\n return (this._contractTemplates ??= new ContractTemplates(this._options));\n }\n\n public get deployedContracts(): DeployedContracts {\n return (this._deployedContracts ??= new DeployedContracts(this._options));\n }\n\n public get contractInteractions(): ContractInteractions {\n return (this._contractInteractions ??= new ContractInteractions(this._options));\n }\n\n public get tokenization(): Tokenization {\n return (this._tokenization ??= new Tokenization(this._options));\n }\n}\n"]}
1
+ {"version":3,"sources":["../api/index.ts","../api/resources/deployedContracts/index.ts","../api/resources/deployedContracts/types/GetDeployedContractsRequestNetwork.ts","../api/resources/tokenization/index.ts","../api/resources/tokenization/types/GetCollectionTokensRequestType.ts","../api/resources/tokenization/client/requests/CreateCollectionRequest.ts","../api/resources/profiles/index.ts","../api/resources/profiles/client/requests/CreateProfileRequest.ts","../api/resources/wallets/index.ts","../api/resources/wallets/client/requests/CreateWalletRequest.ts","../api/resources/addresses/index.ts","../api/resources/transactions/index.ts","../api/resources/withdrawals/index.ts","../api/resources/withdrawals/client/requests/CreateWithdrawalRequest.ts","../api/resources/contractTemplates/index.ts","../api/resources/contractTemplates/client/requests/CreateContractTemplateRequest.ts","../api/resources/contractInteractions/index.ts","../api/resources/contractInteractions/client/requests/WriteFunctionRequest.ts","../api/resources/temporal/index.ts","../api/resources/assets/index.ts","../api/types/CreateAddressRequest.ts","../core/json.ts","../errors/OumlaSdkApiError.ts","../errors/OumlaSdkApiTimeoutError.ts","../api/errors/BadRequestError.ts","../api/errors/NotFoundError.ts","../core/fetcher/EndpointSupplier.ts","../core/url/qs.ts","../core/fetcher/createRequestUrl.ts","../core/fetcher/BinaryResponse.ts","../core/fetcher/ResponseWithBody.ts","../core/fetcher/getResponseBody.ts","../core/fetcher/getErrorResponseBody.ts","../core/fetcher/getFetchFn.ts","../core/fetcher/getRequestBody.ts","../core/fetcher/signals.ts","../core/fetcher/makeRequest.ts","../core/fetcher/Headers.ts","../core/fetcher/RawResponse.ts","../core/fetcher/requestWithRetries.ts","../core/fetcher/Fetcher.ts","../core/fetcher/HttpResponsePromise.ts","../core/fetcher/Supplier.ts","../core/runtime/runtime.ts","../core/url/index.ts","../core/url/join.ts","../core/headers.ts","../environments.ts","../api/resources/profiles/client/Client.ts","../api/resources/wallets/client/Client.ts","../api/resources/addresses/client/Client.ts","../api/resources/transactions/client/Client.ts","../api/resources/withdrawals/client/Client.ts","../api/resources/contractTemplates/client/Client.ts","../api/resources/deployedContracts/client/Client.ts","../api/resources/contractInteractions/client/Client.ts","../api/resources/tokenization/client/Client.ts","../api/resources/temporal/client/Client.ts","../api/resources/assets/client/Client.ts","../Client.ts"],"names":["CreateCollectionRequest","CreateProfileRequest","CreateWalletRequest","CreateWithdrawalRequest","CreateContractTemplateRequest","Docs","WriteFunctionRequest","CreateAddressRequest","text","Headers"],"mappings":";;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;;;ACEO,IAAM,qCAAqC;AAAA,EAC9C,KAAK;AAAA,EACL,MAAM;AAAA,EACN,KAAK;AAAA,EACL,MAAM;AACV;;;ACPA;AAAA;AAAA;AAAA;;;ACEO,IAAM,iCAAiC;AAAA,EAC1C,MAAM;AAAA,EACN,MAAM;AACV;;;ACkCO,IAAU;AAAA,CAAV,CAAUA,6BAAV;AAEI,EAAMA,yBAAA,OAAO;AAAA,IAChB,kBAAkB;AAAA,IAClB,mBAAmB;AAAA,EACvB;AAAA,GALa;;;ACvCjB;;;ACgBO,IAAU;AAAA,CAAV,CAAUC,0BAAV;AAEI,EAAMA,sBAAA,OAAO;AAAA,IAChB,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,UAAU;AAAA,EACd;AAAA,GANa;;;AChBjB;;;ACgBO,IAAU;AAAA,CAAV,CAAUC,yBAAV;AAEI,EAAMA,qBAAA,UAAU;AAAA,IACnB,KAAK;AAAA,IACL,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EACV;AAAA,GAPa;;;AChBjB;;;ACAA;;;ACAA;;;ACyBO,IAAU;AAAA,CAAV,CAAUC,6BAAV;AAEI,EAAMA,yBAAA,UAAU;AAAA,IACnB,KAAK;AAAA,IACL,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EACV;AAAA,GAPa;;;ACzBjB;;;ACkCO,IAAU;AAAA,CAAV,CAAUC,mCAAV;AAYI,MAAU;AAAV,IAAUC,UAAV;AACI,IAAMA,MAAA,OAAO;AAAA,MAChB,KAAK;AAAA,MACL,MAAM;AAAA,IACV;AAAA,KAJa,OAAAD,+BAAA,SAAAA,+BAAA;AAAA,GAZJ;;;AClCjB;;;AC4BO,IAAU;AAAA,CAAV,CAAUE,0BAAV;AAsCI,EAAMA,sBAAA,WAAW;AAAA,IACpB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,MAAM;AAAA,EACV;AAAA,GA1Ca;;;AC5BjB;;;ACAA;;;ACWO,IAAU;AAAA,CAAV,CAAUC,0BAAV;AAEI,EAAMA,sBAAA,UAAU;AAAA,IACnB,KAAK;AAAA,IACL,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EACV;AAAA,GAPa;;;ACJV,IAAM,SAAS,CAClB,OACA,UACA,UACS;AACT,SAAO,KAAK,UAAU,OAAO,UAAU,KAAK;AAChD;AAQO,SAAS,SACZ,MACA,SACC;AACD,SAAO,KAAK,MAAM,MAAM,OAAO;AACnC;;;ACrBO,IAAM,mBAAN,cAA+B,MAAM;AAAA,EAKxC,YAAY;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,GAKG;AACC,UAAM,aAAa,EAAE,SAAS,YAAY,KAAK,CAAC,CAAC;AACjD,WAAO,eAAe,MAAM,iBAAiB,SAAS;AACtD,SAAK,aAAa;AAClB,SAAK,OAAO;AACZ,SAAK,cAAc;AAAA,EACvB;AACJ;AAEA,SAAS,aAAa;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AACJ,GAIW;AACP,MAAI,QAAkB,CAAC;AACvB,MAAI,WAAW,MAAM;AACjB,UAAM,KAAK,OAAO;AAAA,EACtB;AAEA,MAAI,cAAc,MAAM;AACpB,UAAM,KAAK,gBAAgB,WAAW,SAAS,GAAG;AAAA,EACtD;AAEA,MAAI,QAAQ,MAAM;AACd,UAAM,KAAK,SAAS,OAAO,MAAM,QAAW,CAAC,GAAG;AAAA,EACpD;AAEA,SAAO,MAAM,KAAK,IAAI;AAC1B;;;AClDO,IAAM,0BAAN,cAAsC,MAAM;AAAA,EAC/C,YAAY,SAAiB;AACzB,UAAM,OAAO;AACb,WAAO,eAAe,MAAM,wBAAwB,SAAS;AAAA,EACjE;AACJ;;;ACDO,IAAM,kBAAN,cAAqC,iBAAiB;AAAA,EACzD,YAAY,MAAiC,aAAgC;AACzE,UAAM;AAAA,MACF,SAAS;AAAA,MACT,YAAY;AAAA,MACZ;AAAA,MACA;AAAA,IACJ,CAAC;AACD,WAAO,eAAe,MAAM,gBAAgB,SAAS;AAAA,EACzD;AACJ;;;ACVO,IAAM,gBAAN,cAAmC,iBAAiB;AAAA,EACvD,YAAY,MAAiC,aAAgC;AACzE,UAAM;AAAA,MACF,SAAS;AAAA,MACT,YAAY;AAAA,MACZ;AAAA,MACA;AAAA,IACJ,CAAC;AACD,WAAO,eAAe,MAAM,cAAc,SAAS;AAAA,EACvD;AACJ;;;ACXO,IAAM,mBAAmB;AAAA,EAC5B,KAAK,OAAU,UAA+B,QAA4D;AACtG,QAAI,OAAO,aAAa,YAAY;AAChC,aAAQ,SAAmC,GAAG;AAAA,IAClD,OAAO;AACH,aAAO;AAAA,IACX;AAAA,EACJ;AACJ;;;ACRA,IAAM,mBAAiD;AAAA,EACnD,aAAa;AAAA,EACb,QAAQ;AACZ;AAEA,SAAS,YAAY,OAAgB,cAA+B;AAChE,MAAI,UAAU,QAAW;AACrB,WAAO;AAAA,EACX;AACA,MAAI,UAAU,MAAM;AAChB,WAAO;AAAA,EACX;AACA,QAAM,cAAc,OAAO,KAAK;AAChC,SAAO,eAAe,mBAAmB,WAAW,IAAI;AAC5D;AAEA,SAAS,gBAAgB,KAA8B,SAAS,IAAI,SAAiD;AACjH,QAAM,QAAkB,CAAC;AAEzB,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,GAAG,GAAG;AAC5C,UAAM,UAAU,SAAS,GAAG,UAAU,SAAS;AAE/C,QAAI,UAAU,QAAW;AACrB;AAAA,IACJ;AAEA,QAAI,MAAM,QAAQ,KAAK,GAAG;AACtB,UAAI,MAAM,WAAW,GAAG;AACpB;AAAA,MACJ;AACA,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACnC,cAAM,OAAO,MAAM,CAAC;AACpB,YAAI,SAAS,QAAW;AACpB;AAAA,QACJ;AACA,YAAI,OAAO,SAAS,YAAY,CAAC,MAAM,QAAQ,IAAI,KAAK,SAAS,MAAM;AACnE,gBAAM,WAAW,QAAQ,gBAAgB,YAAY,GAAG,WAAW,OAAO;AAC1E,gBAAM,KAAK,GAAG,gBAAgB,MAAiC,UAAU,OAAO,CAAC;AAAA,QACrF,OAAO;AACH,gBAAM,WAAW,QAAQ,gBAAgB,YAAY,GAAG,WAAW,OAAO;AAC1E,gBAAM,aAAa,QAAQ,SAAS,mBAAmB,QAAQ,IAAI;AACnE,gBAAM,KAAK,GAAG,cAAc,YAAY,MAAM,QAAQ,MAAM,GAAG;AAAA,QACnE;AAAA,MACJ;AAAA,IACJ,WAAW,OAAO,UAAU,YAAY,UAAU,MAAM;AACpD,UAAI,OAAO,KAAK,KAAgC,EAAE,WAAW,GAAG;AAC5D;AAAA,MACJ;AACA,YAAM,KAAK,GAAG,gBAAgB,OAAkC,SAAS,OAAO,CAAC;AAAA,IACrF,OAAO;AACH,YAAM,aAAa,QAAQ,SAAS,mBAAmB,OAAO,IAAI;AAClE,YAAM,KAAK,GAAG,cAAc,YAAY,OAAO,QAAQ,MAAM,GAAG;AAAA,IACpE;AAAA,EACJ;AAEA,SAAO;AACX;AAEO,SAAS,cAAc,KAAc,SAAsC;AAC9E,MAAI,OAAO,QAAQ,OAAO,QAAQ,UAAU;AACxC,WAAO;AAAA,EACX;AAEA,QAAM,QAAQ,gBAAgB,KAAgC,IAAI;AAAA,IAC9D,GAAG;AAAA,IACH,GAAG;AAAA,EACP,CAAC;AACD,SAAO,MAAM,KAAK,GAAG;AACzB;;;ACvEO,SAAS,iBAAiB,SAAiB,iBAAmD;AACjG,QAAM,cAAc,cAAc,iBAAiB,EAAE,aAAa,SAAS,CAAC;AAC5E,SAAO,cAAc,GAAG,WAAW,gBAAgB;AACvD;;;ACgBO,SAAS,kBAAkB,UAA4C;AAC1E,QAAM,iBAAiC;AAAA,IACnC,IAAI,WAAW;AACX,aAAO,SAAS;AAAA,IACpB;AAAA,IACA,QAAQ,MAAM,SAAS;AAAA,IACvB,aAAa,SAAS,YAAY,KAAK,QAAQ;AAAA,IAC/C,MAAM,SAAS,KAAK,KAAK,QAAQ;AAAA,EACrC;AACA,MAAI,WAAW,YAAY,OAAO,SAAS,UAAU,YAAY;AAC7D,mBAAe,QAAQ,SAAS,MAAM,KAAK,QAAQ;AAAA,EACvD;AAEA,SAAO;AACX;;;AC/BO,SAAS,mBAAmB,UAAkD;AACjF,SAAQ,SAA8B,QAAQ;AAClD;;;ACFA,eAAsB,gBAAgB,UAAoB,cAAyC;AAC/F,MAAI,CAAC,mBAAmB,QAAQ,GAAG;AAC/B,WAAO;AAAA,EACX;AACA,UAAQ,cAAc;AAAA,IAClB,KAAK;AACD,aAAO,kBAAkB,QAAQ;AAAA,IACrC,KAAK;AACD,aAAO,MAAM,SAAS,KAAK;AAAA,IAC/B,KAAK;AACD,aAAO,MAAM,SAAS,YAAY;AAAA,IACtC,KAAK;AACD,aAAO,SAAS;AAAA,IACpB,KAAK;AACD,aAAO,SAAS;AAAA,IAEpB,KAAK;AACD,aAAO,MAAM,SAAS,KAAK;AAAA,EACnC;AAGA,QAAM,OAAO,MAAM,SAAS,KAAK;AACjC,MAAI,KAAK,SAAS,GAAG;AACjB,QAAI;AACA,UAAI,eAAe,SAAS,IAAI;AAChC,aAAO;AAAA,IACX,SAAS,KAAP;AACE,aAAO;AAAA,QACH,IAAI;AAAA,QACJ,OAAO;AAAA,UACH,QAAQ;AAAA,UACR,YAAY,SAAS;AAAA,UACrB,SAAS;AAAA,QACb;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AACX;;;ACvCA,eAAsB,qBAAqB,UAAsC;AAC7E,MAAI,cAAc,SAAS,QAAQ,IAAI,cAAc,GAAG,YAAY;AACpE,MAAI,eAAe,QAAQ,YAAY,WAAW,GAAG;AACjD,WAAO,gBAAgB,QAAQ;AAAA,EACnC;AAEA,MAAI,YAAY,QAAQ,GAAG,MAAM,IAAI;AACjC,kBAAc,YAAY,MAAM,GAAG,EAAE,CAAC,GAAG,KAAK,KAAK;AAAA,EACvD;AACA,UAAQ,aAAa;AAAA,IACjB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACD,YAAM,OAAO,MAAM,SAAS,KAAK;AACjC,aAAO,KAAK,SAAS,IAAI,SAAS,IAAI,IAAI;AAAA,IAC9C;AACI,UAAI,YAAY,WAAW,kBAAkB,KAAK,YAAY,SAAS,OAAO,GAAG;AAC7E,cAAMC,QAAO,MAAM,SAAS,KAAK;AACjC,eAAOA,MAAK,SAAS,IAAI,SAASA,KAAI,IAAI;AAAA,MAC9C;AAIA,aAAO,MAAM,SAAS,KAAK;AAAA,EACnC;AACJ;;;AC/BA,eAAsB,aAAoC;AACtD,SAAO;AACX;;;ACOA,eAAsB,eAAe,EAAE,MAAM,KAAK,GAAuD;AACrG,MAAI,KAAK,SAAS,MAAM,GAAG;AACvB,WAAO,OAAO,IAAI;AAAA,EACtB,OAAO;AACH,WAAO;AAAA,EACX;AACJ;;;ACfA,IAAM,UAAU;AAET,SAAS,iBAAiB,WAAqE;AAClG,QAAM,aAAa,IAAI,gBAAgB;AACvC,QAAM,UAAU,WAAW,MAAM,WAAW,MAAM,OAAO,GAAG,SAAS;AACrE,SAAO,EAAE,QAAQ,WAAW,QAAQ,QAAQ;AAChD;AAQO,SAAS,aAAa,MAAoD;AAG7E,QAAM,UAAW,KAAK,WAAW,KAAK,MAAM,QAAQ,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI;AAEzE,QAAM,aAAa,IAAI,gBAAgB;AAEvC,aAAW,UAAU,SAAS;AAC1B,QAAI,OAAO,SAAS;AAGhB,iBAAW,MAAO,QAAgB,MAAM;AACxC;AAAA,IACJ;AAIA,WAAO,iBAAiB,SAAS,MAAM,WAAW,MAAO,QAAgB,MAAM,GAAG;AAAA,MAC9E,QAAQ,WAAW;AAAA,IACvB,CAAC;AAAA,EACL;AAEA,SAAO,WAAW;AACtB;;;ACnCO,IAAM,cAAc,OACvB,SACA,KACA,QACA,SACA,aACA,WACA,aACA,iBACA,WACoB;AACpB,QAAM,UAAyB,CAAC;AAGhC,MAAI,iBAA6C;AACjD,MAAI,aAAa,MAAM;AACnB,UAAM,EAAE,QAAQ,QAAQ,IAAI,iBAAiB,SAAS;AACtD,qBAAiB;AACjB,YAAQ,KAAK,MAAM;AAAA,EACvB;AAGA,MAAI,eAAe,MAAM;AACrB,YAAQ,KAAK,WAAW;AAAA,EAC5B;AACA,MAAI,aAAa,UAAU,OAAO;AAClC,QAAM,WAAW,MAAM,QAAQ,KAAK;AAAA,IAChC;AAAA,IACA;AAAA,IACA,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,aAAa,kBAAkB,YAAY;AAAA;AAAA,IAE3C;AAAA,EACJ,CAAC;AAED,MAAI,kBAAkB,MAAM;AACxB,iBAAa,cAAc;AAAA,EAC/B;AAEA,SAAO;AACX;;;AC3CA,IAAI;AAEJ,IAAI,OAAO,WAAW,YAAY,aAAa;AAC3C,YAAU,WAAW;AACzB,OAAO;AACH,YAAU,MAAMC,SAA2B;AAAA,IAGvC,YAAY,MAAoB;AAC5B,WAAK,UAAU,oBAAI,IAAI;AAEvB,UAAI,MAAM;AACN,YAAI,gBAAgBA,UAAS;AACzB,eAAK,QAAQ,CAAC,OAAO,QAAQ,KAAK,OAAO,KAAK,KAAK,CAAC;AAAA,QACxD,WAAW,MAAM,QAAQ,IAAI,GAAG;AAC5B,qBAAW,CAAC,KAAK,KAAK,KAAK,MAAM;AAC7B,gBAAI,OAAO,QAAQ,YAAY,OAAO,UAAU,UAAU;AACtD,mBAAK,OAAO,KAAK,KAAK;AAAA,YAC1B,OAAO;AACH,oBAAM,IAAI,UAAU,oDAAoD;AAAA,YAC5E;AAAA,UACJ;AAAA,QACJ,OAAO;AACH,qBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,IAAI,GAAG;AAC7C,gBAAI,OAAO,UAAU,UAAU;AAC3B,mBAAK,OAAO,KAAK,KAAK;AAAA,YAC1B,OAAO;AACH,oBAAM,IAAI,UAAU,+BAA+B;AAAA,YACvD;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,IAEA,OAAO,MAAc,OAAqB;AACtC,YAAM,MAAM,KAAK,YAAY;AAC7B,YAAM,WAAW,KAAK,QAAQ,IAAI,GAAG,KAAK,CAAC;AAC3C,WAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,UAAU,KAAK,CAAC;AAAA,IAC9C;AAAA,IAEA,OAAO,MAAoB;AACvB,YAAM,MAAM,KAAK,YAAY;AAC7B,WAAK,QAAQ,OAAO,GAAG;AAAA,IAC3B;AAAA,IAEA,IAAI,MAA6B;AAC7B,YAAM,MAAM,KAAK,YAAY;AAC7B,YAAM,SAAS,KAAK,QAAQ,IAAI,GAAG;AACnC,aAAO,SAAS,OAAO,KAAK,IAAI,IAAI;AAAA,IACxC;AAAA,IAEA,IAAI,MAAuB;AACvB,YAAM,MAAM,KAAK,YAAY;AAC7B,aAAO,KAAK,QAAQ,IAAI,GAAG;AAAA,IAC/B;AAAA,IAEA,IAAI,MAAc,OAAqB;AACnC,YAAM,MAAM,KAAK,YAAY;AAC7B,WAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC;AAAA,IACjC;AAAA,IAEA,QAAQ,YAAmE,SAAyB;AAChG,YAAM,gBAAgB,UAAU,WAAW,KAAK,OAAO,IAAI;AAC3D,WAAK,QAAQ,QAAQ,CAAC,QAAQ,QAAQ,cAAc,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,CAAC;AAAA,IACrF;AAAA,IAEA,eAAyB;AACrB,aAAO,KAAK,QAAQ,IAAI,YAAY,KAAK,CAAC;AAAA,IAC9C;AAAA,IAEA,CAAC,UAA6C;AAC1C,iBAAW,CAAC,KAAK,MAAM,KAAK,KAAK,QAAQ,QAAQ,GAAG;AAChD,cAAM,CAAC,KAAK,OAAO,KAAK,IAAI,CAAC;AAAA,MACjC;AAAA,IACJ;AAAA,IAEA,CAAC,OAAgC;AAC7B,aAAO,KAAK,QAAQ,KAAK;AAAA,IAC7B;AAAA,IAEA,CAAC,SAAkC;AAC/B,iBAAW,UAAU,KAAK,QAAQ,OAAO,GAAG;AACxC,cAAM,OAAO,KAAK,IAAI;AAAA,MAC1B;AAAA,IACJ;AAAA,IAEA,CAAC,OAAO,QAAQ,IAAuC;AACnD,aAAO,KAAK,QAAQ;AAAA,IACxB;AAAA,EACJ;AACJ;;;AC3EO,IAAM,mBAAgC;AAAA,EACzC,SAAS,IAAI,QAAQ;AAAA,EACrB,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,KAAK;AACT;AAKO,IAAM,qBAAkC;AAAA,EAC3C,SAAS,IAAI,QAAQ;AAAA,EACrB,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,KAAK;AACT;AASO,SAAS,cAAc,UAAiC;AAC3D,SAAO;AAAA,IACH,SAAS,SAAS;AAAA,IAClB,YAAY,SAAS;AAAA,IACrB,QAAQ,SAAS;AAAA,IACjB,YAAY,SAAS;AAAA,IACrB,MAAM,SAAS;AAAA,IACf,KAAK,SAAS;AAAA,EAClB;AACJ;;;ACpDA,IAAM,sBAAsB;AAC5B,IAAM,kBAAkB;AACxB,IAAM,sBAAsB;AAC5B,IAAM,gBAAgB;AAEtB,SAAS,kBAAkB,OAAuB;AAE9C,QAAM,mBAAmB,IAAI,KAAK,OAAO,IAAI;AAC7C,SAAO,QAAQ;AACnB;AAEA,SAAS,mBAAmB,OAAuB;AAE/C,QAAM,mBAAmB,KAAK,KAAK,OAAO,IAAI,OAAO;AACrD,SAAO,QAAQ;AACnB;AAEA,SAAS,yBAAyB,UAAoB,cAA8B;AAEhF,QAAM,aAAa,SAAS,QAAQ,IAAI,aAAa;AACrD,MAAI,YAAY;AAEZ,UAAM,oBAAoB,SAAS,YAAY,EAAE;AACjD,QAAI,CAAC,MAAM,iBAAiB,KAAK,oBAAoB,GAAG;AACpD,aAAO,KAAK,IAAI,oBAAoB,KAAM,eAAe;AAAA,IAC7D;AAGA,UAAM,iBAAiB,IAAI,KAAK,UAAU;AAC1C,QAAI,CAAC,MAAM,eAAe,QAAQ,CAAC,GAAG;AAClC,YAAM,QAAQ,eAAe,QAAQ,IAAI,KAAK,IAAI;AAClD,UAAI,QAAQ,GAAG;AACX,eAAO,KAAK,IAAI,KAAK,IAAI,OAAO,CAAC,GAAG,eAAe;AAAA,MACvD;AAAA,IACJ;AAAA,EACJ;AAGA,QAAM,iBAAiB,SAAS,QAAQ,IAAI,mBAAmB;AAC/D,MAAI,gBAAgB;AAChB,UAAM,YAAY,SAAS,gBAAgB,EAAE;AAC7C,QAAI,CAAC,MAAM,SAAS,GAAG;AAEnB,YAAM,QAAQ,YAAY,MAAO,KAAK,IAAI;AAC1C,UAAI,QAAQ,GAAG;AACX,eAAO,kBAAkB,KAAK,IAAI,OAAO,eAAe,CAAC;AAAA,MAC7D;AAAA,IACJ;AAAA,EACJ;AAGA,SAAO,mBAAmB,KAAK,IAAI,sBAAsB,KAAK,IAAI,GAAG,YAAY,GAAG,eAAe,CAAC;AACxG;AAEA,eAAsB,mBAClB,WACA,aAAqB,qBACJ;AACjB,MAAI,WAAqB,MAAM,UAAU;AAEzC,WAAS,IAAI,GAAG,IAAI,YAAY,EAAE,GAAG;AACjC,QAAI,CAAC,KAAK,GAAG,EAAE,SAAS,SAAS,MAAM,KAAK,SAAS,UAAU,KAAK;AAEhE,YAAM,QAAQ,yBAAyB,UAAU,CAAC;AAElD,YAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,KAAK,CAAC;AACzD,iBAAW,MAAM,UAAU;AAAA,IAC/B,OAAO;AACH;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AACX;;;ACfA,eAAe,WAAW,MAAqD;AAC3E,QAAM,aAAqC,CAAC;AAC5C,MAAI,KAAK,SAAS,UAAa,KAAK,eAAe,MAAM;AACrD,eAAW,cAAc,IAAI,KAAK;AAAA,EACtC;AAEA,MAAI,KAAK,WAAW,MAAM;AACtB,WAAO;AAAA,EACX;AAEA,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,KAAK,OAAO,GAAG;AACrD,UAAM,SAAS,MAAM,iBAAiB,IAAI,OAAO,EAAE,kBAAkB,KAAK,oBAAoB,CAAC,EAAE,CAAC;AAClG,QAAI,OAAO,WAAW,UAAU;AAC5B,iBAAW,GAAG,IAAI;AAClB;AAAA,IACJ;AACA,QAAI,UAAU,MAAM;AAChB;AAAA,IACJ;AACA,eAAW,GAAG,IAAI,GAAG;AAAA,EACzB;AACA,SAAO;AACX;AAEA,eAAsB,YAAyB,MAA4D;AACvG,QAAM,MAAM,iBAAiB,KAAK,KAAK,KAAK,eAAe;AAC3D,QAAM,cAAoC,MAAM,eAAe;AAAA,IAC3D,MAAM,KAAK;AAAA,IACX,MAAM,KAAK,gBAAgB,SAAS,SAAS;AAAA,EACjD,CAAC;AACD,QAAM,UAAU,MAAM,WAAW;AAEjC,MAAI;AACA,UAAM,WAAW,MAAM;AAAA,MACnB,YACI;AAAA,QACI;AAAA,QACA;AAAA,QACA,KAAK;AAAA,QACL,MAAM,WAAW,IAAI;AAAA,QACrB;AAAA,QACA,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,MACT;AAAA,MACJ,KAAK;AAAA,IACT;AAEA,QAAI,SAAS,UAAU,OAAO,SAAS,SAAS,KAAK;AACjD,aAAO;AAAA,QACH,IAAI;AAAA,QACJ,MAAO,MAAM,gBAAgB,UAAU,KAAK,YAAY;AAAA,QACxD,SAAS,SAAS;AAAA,QAClB,aAAa,cAAc,QAAQ;AAAA,MACvC;AAAA,IACJ,OAAO;AACH,aAAO;AAAA,QACH,IAAI;AAAA,QACJ,OAAO;AAAA,UACH,QAAQ;AAAA,UACR,YAAY,SAAS;AAAA,UACrB,MAAM,MAAM,qBAAqB,QAAQ;AAAA,QAC7C;AAAA,QACA,aAAa,cAAc,QAAQ;AAAA,MACvC;AAAA,IACJ;AAAA,EACJ,SAAS,OAAP;AACE,QAAI,KAAK,eAAe,QAAQ,KAAK,YAAY,SAAS;AACtD,aAAO;AAAA,QACH,IAAI;AAAA,QACJ,OAAO;AAAA,UACH,QAAQ;AAAA,UACR,cAAc;AAAA,QAClB;AAAA,QACA,aAAa;AAAA,MACjB;AAAA,IACJ,WAAW,iBAAiB,SAAS,MAAM,SAAS,cAAc;AAC9D,aAAO;AAAA,QACH,IAAI;AAAA,QACJ,OAAO;AAAA,UACH,QAAQ;AAAA,QACZ;AAAA,QACA,aAAa;AAAA,MACjB;AAAA,IACJ,WAAW,iBAAiB,OAAO;AAC/B,aAAO;AAAA,QACH,IAAI;AAAA,QACJ,OAAO;AAAA,UACH,QAAQ;AAAA,UACR,cAAc,MAAM;AAAA,QACxB;AAAA,QACA,aAAa;AAAA,MACjB;AAAA,IACJ;AAEA,WAAO;AAAA,MACH,IAAI;AAAA,MACJ,OAAO;AAAA,QACH,QAAQ;AAAA,QACR,cAAc,OAAO,KAAK;AAAA,MAC9B;AAAA,MACA,aAAa;AAAA,IACjB;AAAA,EACJ;AACJ;AAEO,IAAM,UAAyB;;;AC/J/B,IAAM,sBAAN,cAAqC,QAAW;AAAA,EAI3C,YAAY,SAAsC;AAEtD,UAAM,CAAC,YAAY;AACf,cAAQ,MAAyB;AAAA,IACrC,CAAC;AACD,SAAK,eAAe;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,OAAc,aACV,OACG,MACmB;AACtB,WAAO,IAAI,oBAAuB,GAAG,GAAG,IAAI,CAAC;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAc,kBAGZ,IAA2D;AACzD,WAAO,IAAI,SAAgD;AACvD,aAAO,oBAAoB,YAAe,GAAG,GAAG,IAAI,CAAC;AAAA,IACzD;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAc,YAAe,SAA8D;AACvF,WAAO,IAAI,oBAAuB,OAAO;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAc,aACV,UACsB;AACtB,UAAM,UAAU,IAAI,QAA4B,QAAQ;AACxD,WAAO,IAAI,oBAAuB,OAAO;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAc,WAAc,QAAoD;AAC5E,UAAM,UAAU,QAAQ,QAAQ,MAAM;AACtC,WAAO,IAAI,oBAAuB,OAAO;AAAA,EAC7C;AAAA,EAEQ,SAAqB;AACzB,QAAI,CAAC,KAAK,kBAAkB;AACxB,WAAK,mBAAmB,KAAK,aAAa,KAAK,CAAC,EAAE,KAAK,MAAM,IAAI;AAAA,IACrE;AACA,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA,EAGgB,KACZ,aACA,YAC4B;AAC5B,WAAO,KAAK,OAAO,EAAE,KAAK,aAAa,UAAU;AAAA,EACrD;AAAA;AAAA,EAGgB,MACZ,YACoB;AACpB,WAAO,KAAK,OAAO,EAAE,MAAM,UAAU;AAAA,EACzC;AAAA;AAAA,EAGgB,QAAQ,WAA6C;AACjE,WAAO,KAAK,OAAO,EAAE,QAAQ,SAAS;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAa,kBAA+C;AACxD,WAAO,MAAM,KAAK;AAAA,EACtB;AACJ;;;ACjHO,IAAM,WAAW;AAAA,EACpB,KAAK,OAAU,aAAsC;AACjD,QAAI,OAAO,aAAa,YAAY;AAChC,aAAQ,SAAqB;AAAA,IACjC,OAAO;AACH,aAAO;AAAA,IACX;AAAA,EACJ;AACJ;;;ACUO,IAAM,UAAmB,gBAAgB;AAQhD,SAAS,kBAA2B;AAIhC,QAAM,YAAY,OAAO,WAAW,eAAe,OAAO,OAAO,aAAa;AAC9E,MAAI,WAAW;AACX,WAAO;AAAA,MACH,MAAM;AAAA,MACN,SAAS,OAAO,UAAU;AAAA,IAC9B;AAAA,EACJ;AAMA,QAAM,eAAe,OAAO,eAAe,eAAe,YAAY,WAAW,cAAc;AAC/F,MAAI,cAAc;AACd,WAAO;AAAA,MACH,MAAM;AAAA,IACV;AAAA,EACJ;AAMA,QAAM,gBAAgB,OAAO,gBAAgB;AAC7C,MAAI,eAAe;AACf,WAAO;AAAA,MACH,MAAM;AAAA,IACV;AAAA,EACJ;AAKA,QAAM,cACF,OAAO,SAAS,YAChB,OAAO,MAAM,kBAAkB,eAC9B,KAAK,aAAa,SAAS,gCACxB,KAAK,aAAa,SAAS,8BAC3B,KAAK,aAAa,SAAS;AACnC,MAAI,aAAa;AACb,WAAO;AAAA,MACH,MAAM;AAAA,IACV;AAAA,EACJ;AAMA,QAAM,SACF,OAAO,SAAS,eAAe,OAAO,KAAK,YAAY,eAAe,OAAO,KAAK,QAAQ,SAAS;AACvG,MAAI,QAAQ;AACR,WAAO;AAAA,MACH,MAAM;AAAA,MACN,SAAS,KAAK,QAAQ;AAAA,IAC1B;AAAA,EACJ;AAKA,QAAM,QAAQ,OAAO,QAAQ,eAAe,OAAO,IAAI,YAAY;AACnE,MAAI,OAAO;AACP,WAAO;AAAA,MACH,MAAM;AAAA,MACN,SAAS,IAAI;AAAA,IACjB;AAAA,EACJ;AAKA,QAAM,SACF,OAAO,YAAY,eACnB,aAAa,WACb,CAAC,CAAC,QAAQ,WACV,cAAc,WACd,CAAC,CAAC,QAAQ,UAAU;AACxB,MAAI,QAAQ;AACR,WAAO;AAAA,MACH,MAAM;AAAA,MACN,SAAS,QAAQ,SAAS;AAAA,MAC1B,eAAe,OAAO,QAAQ,SAAS,KAAK,MAAM,GAAG,EAAE,CAAC,CAAC;AAAA,IAC7D;AAAA,EACJ;AAMA,QAAM,gBAAgB,OAAO,cAAc,eAAe,WAAW,YAAY;AACjF,MAAI,eAAe;AACf,WAAO;AAAA,MACH,MAAM;AAAA,IACV;AAAA,EACJ;AAEA,SAAO;AAAA,IACH,MAAM;AAAA,EACV;AACJ;;;ACpIA;AAAA;AAAA;AAAA;AAAA;;;ACAO,SAAS,KAAK,SAAiB,UAA4B;AAC9D,MAAI,CAAC,MAAM;AACP,WAAO;AAAA,EACX;AAEA,MAAI,SAAS,WAAW,GAAG;AACvB,WAAO;AAAA,EACX;AAEA,MAAI,KAAK,SAAS,KAAK,GAAG;AACtB,QAAI;AACJ,QAAI;AACA,YAAM,IAAI,IAAI,IAAI;AAAA,IACtB,QAAE;AAEE,aAAO,SAAS,MAAM,GAAG,QAAQ;AAAA,IACrC;AAEA,UAAM,cAAc,SAAS,SAAS,SAAS,CAAC;AAChD,UAAM,8BAA8B,eAAe,YAAY,SAAS,GAAG;AAE3E,eAAW,WAAW,UAAU;AAC5B,YAAM,eAAe,YAAY,OAAO;AACxC,UAAI,cAAc;AACd,YAAI,WAAW,iBAAiB,IAAI,UAAU,YAAY;AAAA,MAC9D;AAAA,IACJ;AAEA,QAAI,+BAA+B,CAAC,IAAI,SAAS,SAAS,GAAG,GAAG;AAC5D,UAAI,YAAY;AAAA,IACpB;AAEA,WAAO,IAAI,SAAS;AAAA,EACxB;AAEA,SAAO,SAAS,MAAM,GAAG,QAAQ;AACrC;AAEA,SAAS,SAAS,SAAiB,UAA4B;AAC3D,MAAI,SAAS,WAAW,GAAG;AACvB,WAAO;AAAA,EACX;AAEA,MAAI,SAAS;AAEb,QAAM,cAAc,SAAS,SAAS,SAAS,CAAC;AAChD,QAAM,8BAA8B,eAAe,YAAY,SAAS,GAAG;AAE3E,aAAW,WAAW,UAAU;AAC5B,UAAM,eAAe,YAAY,OAAO;AACxC,QAAI,cAAc;AACd,eAAS,iBAAiB,QAAQ,YAAY;AAAA,IAClD;AAAA,EACJ;AAEA,MAAI,+BAA+B,CAAC,OAAO,SAAS,GAAG,GAAG;AACtD,cAAU;AAAA,EACd;AAEA,SAAO;AACX;AAEA,SAAS,iBAAiB,MAAc,OAAuB;AAC3D,MAAI,KAAK,SAAS,GAAG,GAAG;AACpB,WAAO,OAAO;AAAA,EAClB;AACA,SAAO,OAAO,MAAM;AACxB;AAEA,SAAS,YAAY,KAAqB;AACtC,MAAI,CAAC;AAAK,WAAO;AAEjB,MAAI,QAAQ;AACZ,MAAI,MAAM,IAAI;AAEd,MAAI,IAAI,WAAW,GAAG;AAAG,YAAQ;AACjC,MAAI,IAAI,SAAS,GAAG;AAAG,UAAM,IAAI,SAAS;AAE1C,SAAO,UAAU,KAAK,QAAQ,IAAI,SAAS,MAAM,IAAI,MAAM,OAAO,GAAG;AACzE;;;AC/EO,SAAS,gBACT,cACkC;AACrC,QAAM,SAAuC,CAAC;AAE9C,aAAW,CAAC,KAAK,KAAK,KAAK,aACtB,OAAO,CAAC,YAAY,WAAW,IAAI,EACnC,QAAQ,CAAC,YAAY,OAAO,QAAQ,OAAO,CAAC,GAAG;AAChD,QAAI,SAAS,MAAM;AACf,aAAO,GAAG,IAAI;AAAA,IAClB,WAAW,OAAO,QAAQ;AACtB,aAAO,OAAO,GAAG;AAAA,IACrB;AAAA,EACJ;AAEA,SAAO;AACX;AAEO,SAAS,2BACT,cACyB;AAC5B,QAAM,SAAuC,CAAC;AAE9C,aAAW,CAAC,KAAK,KAAK,KAAK,aACtB,OAAO,CAAC,YAAY,WAAW,IAAI,EACnC,QAAQ,CAAC,YAAY,OAAO,QAAQ,OAAO,CAAC,GAAG;AAChD,QAAI,SAAS,MAAM;AACf,aAAO,GAAG,IAAI;AAAA,IAClB;AAAA,EACJ;AAEA,SAAO;AACX;;;AC9BO,IAAM,yBAAyB;AAAA,EAClC,YAAY;AAChB;;;ACuCO,IAAM,WAAN,MAAe;AAAA,EAGlB,YAAY,UAA4B;AACpC,SAAK,WAAW;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcO,YACH,UAA0C,CAAC,GAC3C,gBACuD;AACvD,WAAY,oBAAoB,YAAY,KAAK,cAAc,SAAS,cAAc,CAAC;AAAA,EAC3F;AAAA,EAEA,MAAc,cACV,UAA0C,CAAC,GAC3C,gBAC4D;AAC5D,UAAM,EAAE,MAAM,KAAK,IAAI;AACvB,UAAM,eAA6E,CAAC;AACpF,QAAI,QAAQ,MAAM;AACd,mBAAa,MAAM,IAAI,KAAK,SAAS;AAAA,IACzC;AAEA,QAAI,QAAQ,MAAM;AACd,mBAAa,MAAM,IAAI,KAAK,SAAS;AAAA,IACzC;AAEA,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC;AAAA,MACJ;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,iBAAiB,EAAE,GAAG,cAAc,GAAG,gBAAgB,YAAY;AAAA,MACnE,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAuC,aAAa,UAAU,YAAY;AAAA,IACvG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW,wBAAwB,qDAAqD;AAAA,MAClG,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBO,cACH,SACA,gBACqD;AACrD,WAAY,oBAAoB,YAAY,KAAK,gBAAgB,SAAS,cAAc,CAAC;AAAA,EAC7F;AAAA,EAEA,MAAc,gBACV,SACA,gBAC0D;AAC1D,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC;AAAA,MACJ;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,aAAa;AAAA,MACb,iBAAiB,gBAAgB;AAAA,MACjC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAqC,aAAa,UAAU,YAAY;AAAA,IACrG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,cAAQ,UAAU,MAAM,YAAY;AAAA,QAChC,KAAK;AACD,gBAAM,IAAgB;AAAA,YAClB,UAAU,MAAM;AAAA,YAChB,UAAU;AAAA,UACd;AAAA,QACJ;AACI,gBAAM,IAAW,iBAAiB;AAAA,YAC9B,YAAY,UAAU,MAAM;AAAA,YAC5B,MAAM,UAAU,MAAM;AAAA,YACtB,aAAa,UAAU;AAAA,UAC3B,CAAC;AAAA,MACT;AAAA,IACJ;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW,wBAAwB,sDAAsD;AAAA,MACnG,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA,EAEA,MAAgB,0BAAuD;AACnE,UAAM,SAAS,MAAW,SAAS,IAAI,KAAK,SAAS,KAAK;AAC1D,QAAI,UAAU,MAAM;AAChB,aAAO,UAAU;AAAA,IACrB;AAEA,WAAO;AAAA,EACX;AACJ;;;AC5LO,IAAM,UAAN,MAAc;AAAA,EAGjB,YAAY,UAA2B;AACnC,SAAK,WAAW;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcO,uBACH,UAAqD,CAAC,GACtD,gBACuD;AACvD,WAAY,oBAAoB,YAAY,KAAK,yBAAyB,SAAS,cAAc,CAAC;AAAA,EACtG;AAAA,EAEA,MAAc,yBACV,UAAqD,CAAC,GACtD,gBAC4D;AAC5D,UAAM,EAAE,MAAM,KAAK,IAAI;AACvB,UAAM,eAA6E,CAAC;AACpF,QAAI,QAAQ,MAAM;AACd,mBAAa,MAAM,IAAI,KAAK,SAAS;AAAA,IACzC;AAEA,QAAI,QAAQ,MAAM;AACd,mBAAa,MAAM,IAAI,KAAK,SAAS;AAAA,IACzC;AAEA,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC;AAAA,MACJ;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,iBAAiB,EAAE,GAAG,cAAc,GAAG,gBAAgB,YAAY;AAAA,MACnE,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAuC,aAAa,UAAU,YAAY;AAAA,IACvG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeO,kBACH,WACA,UAAgD,CAAC,GACjD,gBACuD;AACvD,WAAY,oBAAoB,YAAY,KAAK,oBAAoB,WAAW,SAAS,cAAc,CAAC;AAAA,EAC5G;AAAA,EAEA,MAAc,oBACV,WACA,UAAgD,CAAC,GACjD,gBAC4D;AAC5D,UAAM,EAAE,MAAM,KAAK,IAAI;AACvB,UAAM,eAA6E,CAAC;AACpF,QAAI,QAAQ,MAAM;AACd,mBAAa,MAAM,IAAI,KAAK,SAAS;AAAA,IACzC;AAEA,QAAI,QAAQ,MAAM;AACd,mBAAa,MAAM,IAAI,KAAK,SAAS;AAAA,IACzC;AAEA,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC,0BAA0B,mBAAmB,SAAS;AAAA,MAC1D;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,iBAAiB,EAAE,GAAG,cAAc,GAAG,gBAAgB,YAAY;AAAA,MACnE,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAuC,aAAa,UAAU,YAAY;AAAA,IACvG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcO,eACH,SACA,gBACqD;AACrD,WAAY,oBAAoB,YAAY,KAAK,iBAAiB,SAAS,cAAc,CAAC;AAAA,EAC9F;AAAA,EAEA,MAAc,iBACV,SACA,gBAC0D;AAC1D,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC;AAAA,MACJ;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,aAAa;AAAA,MACb,iBAAiB,gBAAgB;AAAA,MACjC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAqC,aAAa,UAAU,YAAY;AAAA,IACrG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA,EAEA,MAAgB,0BAAuD;AACnE,UAAM,SAAS,MAAW,SAAS,IAAI,KAAK,SAAS,KAAK;AAC1D,QAAI,UAAU,MAAM;AAChB,aAAO,UAAU;AAAA,IACrB;AAEA,WAAO;AAAA,EACX;AACJ;;;AChRO,IAAM,YAAN,MAAgB;AAAA,EAGnB,YAAY,UAA6B;AACrC,SAAK,WAAW;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcO,yBACH,UAAuD,CAAC,GACxD,gBACuD;AACvD,WAAY,oBAAoB,YAAY,KAAK,2BAA2B,SAAS,cAAc,CAAC;AAAA,EACxG;AAAA,EAEA,MAAc,2BACV,UAAuD,CAAC,GACxD,gBAC4D;AAC5D,UAAM,EAAE,MAAM,KAAK,IAAI;AACvB,UAAM,eAA6E,CAAC;AACpF,QAAI,QAAQ,MAAM;AACd,mBAAa,MAAM,IAAI,KAAK,SAAS;AAAA,IACzC;AAEA,QAAI,QAAQ,MAAM;AACd,mBAAa,MAAM,IAAI,KAAK,SAAS;AAAA,IACzC;AAEA,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC;AAAA,MACJ;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,iBAAiB,EAAE,GAAG,cAAc,GAAG,gBAAgB,YAAY;AAAA,MACnE,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAuC,aAAa,UAAU,YAAY;AAAA,IACvG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeO,oBACH,WACA,UAAkD,CAAC,GACnD,gBACuD;AACvD,WAAY,oBAAoB,YAAY,KAAK,sBAAsB,WAAW,SAAS,cAAc,CAAC;AAAA,EAC9G;AAAA,EAEA,MAAc,sBACV,WACA,UAAkD,CAAC,GACnD,gBAC4D;AAC5D,UAAM,EAAE,MAAM,KAAK,IAAI;AACvB,UAAM,eAA6E,CAAC;AACpF,QAAI,QAAQ,MAAM;AACd,mBAAa,MAAM,IAAI,KAAK,SAAS;AAAA,IACzC;AAEA,QAAI,QAAQ,MAAM;AACd,mBAAa,MAAM,IAAI,KAAK,SAAS;AAAA,IACzC;AAEA,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC,oBAAoB,mBAAmB,SAAS;AAAA,MACpD;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,iBAAiB,EAAE,GAAG,cAAc,GAAG,gBAAgB,YAAY;AAAA,MACnE,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAuC,aAAa,UAAU,YAAY;AAAA,IACvG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeO,kBACH,SACA,gBACqD;AACrD,WAAY,oBAAoB,YAAY,KAAK,oBAAoB,SAAS,cAAc,CAAC;AAAA,EACjG;AAAA,EAEA,MAAc,oBACV,SACA,gBAC0D;AAC1D,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC;AAAA,MACJ;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,aAAa;AAAA,MACb,iBAAiB,gBAAgB;AAAA,MACjC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAqC,aAAa,UAAU,YAAY;AAAA,IACrG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeO,kBACH,SACA,gBACqD;AACrD,WAAY,oBAAoB,YAAY,KAAK,oBAAoB,SAAS,cAAc,CAAC;AAAA,EACjG;AAAA,EAEA,MAAc,oBACV,SACA,gBAC0D;AAC1D,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC;AAAA,MACJ;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,aAAa;AAAA,MACb,iBAAiB,gBAAgB;AAAA,MACjC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAqC,aAAa,UAAU,YAAY;AAAA,IACrG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA,EAEA,MAAgB,0BAAuD;AACnE,UAAM,SAAS,MAAW,SAAS,IAAI,KAAK,SAAS,KAAK;AAC1D,QAAI,UAAU,MAAM;AAChB,aAAO,UAAU;AAAA,IACrB;AAEA,WAAO;AAAA,EACX;AACJ;;;AClWO,IAAM,eAAN,MAAmB;AAAA,EAGtB,YAAY,UAAgC;AACxC,SAAK,WAAW;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeO,yBACH,SACA,UAAuD,CAAC,GACxD,gBACuD;AACvD,WAAY,oBAAoB,YAAY,KAAK,2BAA2B,SAAS,SAAS,cAAc,CAAC;AAAA,EACjH;AAAA,EAEA,MAAc,2BACV,SACA,UAAuD,CAAC,GACxD,gBAC4D;AAC5D,UAAM,EAAE,MAAM,KAAK,IAAI;AACvB,UAAM,eAA6E,CAAC;AACpF,QAAI,QAAQ,MAAM;AACd,mBAAa,MAAM,IAAI,KAAK,SAAS;AAAA,IACzC;AAEA,QAAI,QAAQ,MAAM;AACd,mBAAa,MAAM,IAAI,KAAK,SAAS;AAAA,IACzC;AAEA,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC,+BAA+B,mBAAmB,OAAO;AAAA,MAC7D;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,iBAAiB,EAAE,GAAG,cAAc,GAAG,gBAAgB,YAAY;AAAA,MACnE,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAuC,aAAa,UAAU,YAAY;AAAA,IACvG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeO,wBACH,cACA,UAAsD,CAAC,GACvD,gBACuD;AACvD,WAAY,oBAAoB;AAAA,MAC5B,KAAK,0BAA0B,cAAc,SAAS,cAAc;AAAA,IACxE;AAAA,EACJ;AAAA,EAEA,MAAc,0BACV,cACA,UAAsD,CAAC,GACvD,gBAC4D;AAC5D,UAAM,EAAE,MAAM,KAAK,IAAI;AACvB,UAAM,eAA6E,CAAC;AACpF,QAAI,QAAQ,MAAM;AACd,mBAAa,MAAM,IAAI,KAAK,SAAS;AAAA,IACzC;AAEA,QAAI,QAAQ,MAAM;AACd,mBAAa,MAAM,IAAI,KAAK,SAAS;AAAA,IACzC;AAEA,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC,8BAA8B,mBAAmB,YAAY;AAAA,MACjE;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,iBAAiB,EAAE,GAAG,cAAc,GAAG,gBAAgB,YAAY;AAAA,MACnE,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAuC,aAAa,UAAU,YAAY;AAAA,IACvG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcO,4BACH,UAA0D,CAAC,GAC3D,gBACuD;AACvD,WAAY,oBAAoB,YAAY,KAAK,8BAA8B,SAAS,cAAc,CAAC;AAAA,EAC3G;AAAA,EAEA,MAAc,8BACV,UAA0D,CAAC,GAC3D,gBAC4D;AAC5D,UAAM,EAAE,MAAM,KAAK,IAAI;AACvB,UAAM,eAA6E,CAAC;AACpF,QAAI,QAAQ,MAAM;AACd,mBAAa,MAAM,IAAI,KAAK,SAAS;AAAA,IACzC;AAEA,QAAI,QAAQ,MAAM;AACd,mBAAa,MAAM,IAAI,KAAK,SAAS;AAAA,IACzC;AAEA,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC;AAAA,MACJ;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,iBAAiB,EAAE,GAAG,cAAc,GAAG,gBAAgB,YAAY;AAAA,MACnE,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAuC,aAAa,UAAU,YAAY;AAAA,IACvG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeO,uBACH,WACA,UAAqD,CAAC,GACtD,gBACuD;AACvD,WAAY,oBAAoB,YAAY,KAAK,yBAAyB,WAAW,SAAS,cAAc,CAAC;AAAA,EACjH;AAAA,EAEA,MAAc,yBACV,WACA,UAAqD,CAAC,GACtD,gBAC4D;AAC5D,UAAM,EAAE,MAAM,KAAK,IAAI;AACvB,UAAM,eAA6E,CAAC;AACpF,QAAI,QAAQ,MAAM;AACd,mBAAa,MAAM,IAAI,KAAK,SAAS;AAAA,IACzC;AAEA,QAAI,QAAQ,MAAM;AACd,mBAAa,MAAM,IAAI,KAAK,SAAS;AAAA,IACzC;AAEA,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC,+BAA+B,mBAAmB,SAAS;AAAA,MAC/D;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,iBAAiB,EAAE,GAAG,cAAc,GAAG,gBAAgB,YAAY;AAAA,MACnE,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAuC,aAAa,UAAU,YAAY;AAAA,IACvG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA,EAEA,MAAgB,0BAAuD;AACnE,UAAM,SAAS,MAAW,SAAS,IAAI,KAAK,SAAS,KAAK;AAC1D,QAAI,UAAU,MAAM;AAChB,aAAO,UAAU;AAAA,IACrB;AAEA,WAAO;AAAA,EACX;AACJ;;;ACtXO,IAAM,cAAN,MAAkB;AAAA,EAGrB,YAAY,UAA+B;AACvC,SAAK,WAAW;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBO,iBACH,SACA,gBACqD;AACrD,WAAY,oBAAoB,YAAY,KAAK,mBAAmB,SAAS,cAAc,CAAC;AAAA,EAChG;AAAA,EAEA,MAAc,mBACV,SACA,gBAC0D;AAC1D,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC;AAAA,MACJ;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,aAAa;AAAA,MACb,iBAAiB,gBAAgB;AAAA,MACjC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAqC,aAAa,UAAU,YAAY;AAAA,IACrG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW,wBAAwB,sDAAsD;AAAA,MACnG,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA,EAEA,MAAgB,0BAAuD;AACnE,UAAM,SAAS,MAAW,SAAS,IAAI,KAAK,SAAS,KAAK;AAC1D,QAAI,UAAU,MAAM;AAChB,aAAO,UAAU;AAAA,IACrB;AAEA,WAAO;AAAA,EACX;AACJ;;;AChGO,IAAM,oBAAN,MAAwB;AAAA,EAG3B,YAAY,UAAqC;AAC7C,SAAK,WAAW;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcO,qBACH,UAAmD,CAAC,GACpD,gBACuD;AACvD,WAAY,oBAAoB,YAAY,KAAK,uBAAuB,SAAS,cAAc,CAAC;AAAA,EACpG;AAAA,EAEA,MAAc,uBACV,UAAmD,CAAC,GACpD,gBAC4D;AAC5D,UAAM,EAAE,MAAM,KAAK,IAAI;AACvB,UAAM,eAA6E,CAAC;AACpF,QAAI,QAAQ,MAAM;AACd,mBAAa,MAAM,IAAI,KAAK,SAAS;AAAA,IACzC;AAEA,QAAI,QAAQ,MAAM;AACd,mBAAa,MAAM,IAAI,KAAK,SAAS;AAAA,IACzC;AAEA,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC;AAAA,MACJ;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,iBAAiB,EAAE,GAAG,cAAc,GAAG,gBAAgB,YAAY;AAAA,MACnE,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAuC,aAAa,UAAU,YAAY;AAAA,IACvG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBO,uBACH,SACA,gBACqD;AACrD,WAAY,oBAAoB,YAAY,KAAK,yBAAyB,SAAS,cAAc,CAAC;AAAA,EACtG;AAAA,EAEA,MAAc,yBACV,SACA,gBAC0D;AAC1D,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC;AAAA,MACJ;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,aAAa;AAAA,MACb,iBAAiB,gBAAgB;AAAA,MACjC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAqC,aAAa,UAAU,YAAY;AAAA,IACrG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWO,oBACH,YACA,gBACqD;AACrD,WAAY,oBAAoB,YAAY,KAAK,sBAAsB,YAAY,cAAc,CAAC;AAAA,EACtG;AAAA,EAEA,MAAc,sBACV,YACA,gBAC0D;AAC1D,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC,6BAA6B,mBAAmB,UAAU;AAAA,MAC9D;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,iBAAiB,gBAAgB;AAAA,MACjC,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAqC,aAAa,UAAU,YAAY;AAAA,IACrG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWO,uBACH,YACA,gBACqD;AACrD,WAAY,oBAAoB,YAAY,KAAK,yBAAyB,YAAY,cAAc,CAAC;AAAA,EACzG;AAAA,EAEA,MAAc,yBACV,YACA,gBAC0D;AAC1D,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC,6BAA6B,mBAAmB,UAAU;AAAA,MAC9D;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,iBAAiB,gBAAgB;AAAA,MACjC,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAqC,aAAa,UAAU,YAAY;AAAA,IACrG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWO,uBACH,YACA,gBACqD;AACrD,WAAY,oBAAoB,YAAY,KAAK,yBAAyB,YAAY,cAAc,CAAC;AAAA,EACzG;AAAA,EAEA,MAAc,yBACV,YACA,gBAC0D;AAC1D,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC,6BAA6B,mBAAmB,UAAU;AAAA,MAC9D;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,iBAAiB,gBAAgB;AAAA,MACjC,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAqC,aAAa,UAAU,YAAY;AAAA,IACrG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcO,qBACH,YACA,UAAmD,CAAC,GACpD,gBACqD;AACrD,WAAY,oBAAoB,YAAY,KAAK,uBAAuB,YAAY,SAAS,cAAc,CAAC;AAAA,EAChH;AAAA,EAEA,MAAc,uBACV,YACA,UAAmD,CAAC,GACpD,gBAC0D;AAC1D,UAAM,EAAE,kBAAkB,IAAI;AAC9B,UAAM,eAA6E,CAAC;AACpF,QAAI,qBAAqB,MAAM;AAC3B,mBAAa,mBAAmB,IAAI;AAAA,IACxC;AAEA,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC,6BAA6B,mBAAmB,UAAU;AAAA,MAC9D;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,iBAAiB,EAAE,GAAG,cAAc,GAAG,gBAAgB,YAAY;AAAA,MACnE,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAqC,aAAa,UAAU,YAAY;AAAA,IACrG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBO,eACH,YACA,SACA,gBACqD;AACrD,WAAY,oBAAoB,YAAY,KAAK,iBAAiB,YAAY,SAAS,cAAc,CAAC;AAAA,EAC1G;AAAA,EAEA,MAAc,iBACV,YACA,SACA,gBAC0D;AAC1D,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC,6BAA6B,mBAAmB,UAAU;AAAA,MAC9D;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,aAAa;AAAA,MACb,iBAAiB,gBAAgB;AAAA,MACjC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAqC,aAAa,UAAU,YAAY;AAAA,IACrG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA,EAEA,MAAgB,0BAAuD;AACnE,UAAM,SAAS,MAAW,SAAS,IAAI,KAAK,SAAS,KAAK;AAC1D,QAAI,UAAU,MAAM;AAChB,aAAO,UAAU;AAAA,IACrB;AAEA,WAAO;AAAA,EACX;AACJ;;;ACjkBO,IAAM,oBAAN,MAAwB;AAAA,EAG3B,YAAY,UAAqC;AAC7C,SAAK,WAAW;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBO,qBACH,UAAmD,CAAC,GACpD,gBACuD;AACvD,WAAY,oBAAoB,YAAY,KAAK,uBAAuB,SAAS,cAAc,CAAC;AAAA,EACpG;AAAA,EAEA,MAAc,uBACV,UAAmD,CAAC,GACpD,gBAC4D;AAC5D,UAAM,EAAE,MAAM,MAAM,iBAAiB,SAAS,mBAAmB,IAAI;AACrE,UAAM,eAA6E,CAAC;AACpF,QAAI,QAAQ,MAAM;AACd,mBAAa,MAAM,IAAI,KAAK,SAAS;AAAA,IACzC;AAEA,QAAI,QAAQ,MAAM;AACd,mBAAa,MAAM,IAAI,KAAK,SAAS;AAAA,IACzC;AAEA,QAAI,mBAAmB,MAAM;AACzB,mBAAa,iBAAiB,IAAI;AAAA,IACtC;AAEA,QAAI,WAAW,MAAM;AACjB,mBAAa,SAAS,IAAI;AAAA,IAC9B;AAEA,QAAI,sBAAsB,MAAM;AAC5B,mBAAa,oBAAoB,IAAI;AAAA,IACzC;AAEA,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC;AAAA,MACJ;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,iBAAiB,EAAE,GAAG,cAAc,GAAG,gBAAgB,YAAY;AAAA,MACnE,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAuC,aAAa,UAAU,YAAY;AAAA,IACvG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWO,oBACH,YACA,gBACqD;AACrD,WAAY,oBAAoB,YAAY,KAAK,sBAAsB,YAAY,cAAc,CAAC;AAAA,EACtG;AAAA,EAEA,MAAc,sBACV,YACA,gBAC0D;AAC1D,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC,6BAA6B,mBAAmB,UAAU;AAAA,MAC9D;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,iBAAiB,gBAAgB;AAAA,MACjC,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAqC,aAAa,UAAU,YAAY;AAAA,IACrG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,6BACH,SACA,iBACA,gBACqD;AACrD,WAAY,oBAAoB;AAAA,MAC5B,KAAK,+BAA+B,SAAS,iBAAiB,cAAc;AAAA,IAChF;AAAA,EACJ;AAAA,EAEA,MAAc,+BACV,SACA,iBACA,gBAC0D;AAC1D,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC,6BAA6B,mBAAmB,OAAO,KAAK,mBAAmB,eAAe;AAAA,MAClG;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,iBAAiB,gBAAgB;AAAA,MACjC,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAqC,aAAa,UAAU,YAAY;AAAA,IACrG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcO,iBACH,SACA,gBACqD;AACrD,WAAY,oBAAoB,YAAY,KAAK,mBAAmB,SAAS,cAAc,CAAC;AAAA,EAChG;AAAA,EAEA,MAAc,mBACV,SACA,gBAC0D;AAC1D,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC;AAAA,MACJ;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,aAAa;AAAA,MACb,iBAAiB,gBAAgB;AAAA,MACjC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAqC,aAAa,UAAU,YAAY;AAAA,IACrG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBO,eACH,SACA,gBACqD;AACrD,WAAY,oBAAoB,YAAY,KAAK,iBAAiB,SAAS,cAAc,CAAC;AAAA,EAC9F;AAAA,EAEA,MAAc,iBACV,SACA,gBAC0D;AAC1D,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC;AAAA,MACJ;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,aAAa;AAAA,MACb,iBAAiB,gBAAgB;AAAA,MACjC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAqC,aAAa,UAAU,YAAY;AAAA,IACrG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA,EAEA,MAAgB,0BAAuD;AACnE,UAAM,SAAS,MAAW,SAAS,IAAI,KAAK,SAAS,KAAK;AAC1D,QAAI,UAAU,MAAM;AAChB,aAAO,UAAU;AAAA,IACrB;AAEA,WAAO;AAAA,EACX;AACJ;;;AClbO,IAAM,uBAAN,MAA2B;AAAA,EAG9B,YAAY,UAAwC;AAChD,SAAK,WAAW;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,qBACH,SACA,iBACA,gBACqD;AACrD,WAAY,oBAAoB;AAAA,MAC5B,KAAK,uBAAuB,SAAS,iBAAiB,cAAc;AAAA,IACxE;AAAA,EACJ;AAAA,EAEA,MAAc,uBACV,SACA,iBACA,gBAC0D;AAC1D,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC,wCAAwC,mBAAmB,OAAO,sBAAsB,mBAAmB,eAAe;AAAA,MAC9H;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,iBAAiB,gBAAgB;AAAA,MACjC,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAqC,aAAa,UAAU,YAAY;AAAA,IACrG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBO,iBACH,SACA,iBACA,SACA,gBACqD;AACrD,WAAY,oBAAoB;AAAA,MAC5B,KAAK,mBAAmB,SAAS,iBAAiB,SAAS,cAAc;AAAA,IAC7E;AAAA,EACJ;AAAA,EAEA,MAAc,mBACV,SACA,iBACA,SACA,gBAC0D;AAC1D,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC,wCAAwC,mBAAmB,OAAO,sBAAsB,mBAAmB,eAAe;AAAA,MAC9H;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,aAAa;AAAA,MACb,iBAAiB,gBAAgB;AAAA,MACjC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAqC,aAAa,UAAU,YAAY;AAAA,IACrG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBO,kBACH,SACA,iBACA,SACA,gBACqD;AACrD,WAAY,oBAAoB;AAAA,MAC5B,KAAK,oBAAoB,SAAS,iBAAiB,SAAS,cAAc;AAAA,IAC9E;AAAA,EACJ;AAAA,EAEA,MAAc,oBACV,SACA,iBACA,SACA,gBAC0D;AAC1D,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC,wCAAwC,mBAAmB,OAAO,sBAAsB,mBAAmB,eAAe;AAAA,MAC9H;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,aAAa;AAAA,MACb,iBAAiB,gBAAgB;AAAA,MACjC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAqC,aAAa,UAAU,YAAY;AAAA,IACrG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,sBACH,SACA,MACA,gBACqD;AACrD,WAAY,oBAAoB,YAAY,KAAK,wBAAwB,SAAS,MAAM,cAAc,CAAC;AAAA,EAC3G;AAAA,EAEA,MAAc,wBACV,SACA,MACA,gBAC0D;AAC1D,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC,wCAAwC,mBAAmB,OAAO,QAAQ,mBAAmB,IAAI;AAAA,MACrG;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,iBAAiB,gBAAgB;AAAA,MACjC,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAqC,aAAa,UAAU,YAAY;AAAA,IACrG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA,EAEA,MAAgB,0BAAuD;AACnE,UAAM,SAAS,MAAW,SAAS,IAAI,KAAK,SAAS,KAAK;AAC1D,QAAI,UAAU,MAAM;AAChB,aAAO,UAAU;AAAA,IACrB;AAEA,WAAO;AAAA,EACX;AACJ;;;ACrWO,IAAM,eAAN,MAAmB;AAAA,EAGtB,YAAY,UAAgC;AACxC,SAAK,WAAW;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcO,UACH,UAAwC,CAAC,GACzC,gBACuD;AACvD,WAAY,oBAAoB,YAAY,KAAK,YAAY,SAAS,cAAc,CAAC;AAAA,EACzF;AAAA,EAEA,MAAc,YACV,UAAwC,CAAC,GACzC,gBAC4D;AAC5D,UAAM,EAAE,MAAM,KAAK,IAAI;AACvB,UAAM,eAA6E,CAAC;AACpF,QAAI,QAAQ,MAAM;AACd,mBAAa,MAAM,IAAI,KAAK,SAAS;AAAA,IACzC;AAEA,QAAI,QAAQ,MAAM;AACd,mBAAa,MAAM,IAAI,KAAK,SAAS;AAAA,IACzC;AAEA,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC;AAAA,MACJ;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,iBAAiB,EAAE,GAAG,cAAc,GAAG,gBAAgB,YAAY;AAAA,MACnE,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAuC,aAAa,UAAU,YAAY;AAAA,IACvG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBO,cACH,SACA,gBACqD;AACrD,WAAY,oBAAoB,YAAY,KAAK,gBAAgB,SAAS,cAAc,CAAC;AAAA,EAC7F;AAAA,EAEA,MAAc,gBACV,SACA,gBAC0D;AAC1D,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC;AAAA,MACJ;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,aAAa;AAAA,MACb,iBAAiB,gBAAgB;AAAA,MACjC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAqC,aAAa,UAAU,YAAY;AAAA,IACrG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaO,aACH,SACA,gBACqD;AACrD,WAAY,oBAAoB,YAAY,KAAK,eAAe,SAAS,cAAc,CAAC;AAAA,EAC5F;AAAA,EAEA,MAAc,eACV,SACA,gBAC0D;AAC1D,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC;AAAA,MACJ;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,aAAa;AAAA,MACb,iBAAiB,gBAAgB;AAAA,MACjC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAqC,aAAa,UAAU,YAAY;AAAA,IACrG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcO,eACH,UAA6C,CAAC,GAC9C,gBACuD;AACvD,WAAY,oBAAoB,YAAY,KAAK,iBAAiB,SAAS,cAAc,CAAC;AAAA,EAC9F;AAAA,EAEA,MAAc,iBACV,UAA6C,CAAC,GAC9C,gBAC4D;AAC5D,UAAM,EAAE,MAAM,KAAK,IAAI;AACvB,UAAM,eAA6E,CAAC;AACpF,QAAI,QAAQ,MAAM;AACd,mBAAa,MAAM,IAAI,KAAK,SAAS;AAAA,IACzC;AAEA,QAAI,QAAQ,MAAM;AACd,mBAAa,MAAM,IAAI,KAAK,SAAS;AAAA,IACzC;AAEA,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC;AAAA,MACJ;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,iBAAiB,EAAE,GAAG,cAAc,GAAG,gBAAgB,YAAY;AAAA,MACnE,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAuC,aAAa,UAAU,YAAY;AAAA,IACvG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBO,iBACH,SACA,gBACqD;AACrD,WAAY,oBAAoB,YAAY,KAAK,mBAAmB,SAAS,cAAc,CAAC;AAAA,EAChG;AAAA,EAEA,MAAc,mBACV,SACA,gBAC0D;AAC1D,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC;AAAA,MACJ;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,aAAa;AAAA,MACb,iBAAiB,gBAAgB;AAAA,MACjC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAqC,aAAa,UAAU,YAAY;AAAA,IACrG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWO,cACH,IACA,gBACqD;AACrD,WAAY,oBAAoB,YAAY,KAAK,gBAAgB,IAAI,cAAc,CAAC;AAAA,EACxF;AAAA,EAEA,MAAc,gBACV,IACA,gBAC0D;AAC1D,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC,mCAAmC,mBAAmB,EAAE;AAAA,MAC5D;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,iBAAiB,gBAAgB;AAAA,MACjC,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAqC,aAAa,UAAU,YAAY;AAAA,IACrG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWO,iBACH,IACA,gBACqD;AACrD,WAAY,oBAAoB,YAAY,KAAK,mBAAmB,IAAI,cAAc,CAAC;AAAA,EAC3F;AAAA,EAEA,MAAc,mBACV,IACA,gBAC0D;AAC1D,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC,mCAAmC,mBAAmB,EAAE;AAAA,MAC5D;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,iBAAiB,gBAAgB;AAAA,MACjC,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAqC,aAAa,UAAU,YAAY;AAAA,IACrG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,0BACH,IACA,SACA,gBACqD;AACrD,WAAY,oBAAoB,YAAY,KAAK,4BAA4B,IAAI,SAAS,cAAc,CAAC;AAAA,EAC7G;AAAA,EAEA,MAAc,4BACV,IACA,SACA,gBAC0D;AAC1D,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC,mCAAmC,mBAAmB,EAAE,YAAY,mBAAmB,OAAO;AAAA,MAClG;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,iBAAiB,gBAAgB;AAAA,MACjC,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAqC,aAAa,UAAU,YAAY;AAAA,IACrG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBO,UACH,IACA,SACA,gBACqD;AACrD,WAAY,oBAAoB,YAAY,KAAK,YAAY,IAAI,SAAS,cAAc,CAAC;AAAA,EAC7F;AAAA,EAEA,MAAc,YACV,IACA,SACA,gBAC0D;AAC1D,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC,mCAAmC,mBAAmB,EAAE;AAAA,MAC5D;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,aAAa;AAAA,MACb,iBAAiB,gBAAgB;AAAA,MACjC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAqC,aAAa,UAAU,YAAY;AAAA,IACrG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBO,UACH,IACA,SACA,gBACqD;AACrD,WAAY,oBAAoB,YAAY,KAAK,YAAY,IAAI,SAAS,cAAc,CAAC;AAAA,EAC7F;AAAA,EAEA,MAAc,YACV,IACA,SACA,gBAC0D;AAC1D,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC,mCAAmC,mBAAmB,EAAE;AAAA,MAC5D;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,aAAa;AAAA,MACb,iBAAiB,gBAAgB;AAAA,MACjC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAqC,aAAa,UAAU,YAAY;AAAA,IACrG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBO,oBACH,UAAkD,CAAC,GACnD,gBACqD;AACrD,WAAY,oBAAoB,YAAY,KAAK,sBAAsB,SAAS,cAAc,CAAC;AAAA,EACnG;AAAA,EAEA,MAAc,sBACV,UAAkD,CAAC,GACnD,gBAC0D;AAC1D,UAAM,EAAE,IAAI,MAAM,OAAO,MAAM,KAAK,IAAI;AACxC,UAAM,eAA6E,CAAC;AACpF,QAAI,MAAM,MAAM;AACZ,mBAAa,IAAI,IAAI;AAAA,IACzB;AAEA,QAAI,SAAS,MAAM;AACf,mBAAa,MAAM,IAAI;AAAA,IAC3B;AAEA,QAAI,QAAQ,MAAM;AACd,mBAAa,MAAM,IAAI,KAAK,SAAS;AAAA,IACzC;AAEA,QAAI,QAAQ,MAAM;AACd,mBAAa,MAAM,IAAI,KAAK,SAAS;AAAA,IACzC;AAEA,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC;AAAA,MACJ;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,iBAAiB,EAAE,GAAG,cAAc,GAAG,gBAAgB,YAAY;AAAA,MACnE,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAqC,aAAa,UAAU,YAAY;AAAA,IACrG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,cAAQ,UAAU,MAAM,YAAY;AAAA,QAChC,KAAK;AACD,gBAAM,IAAgB;AAAA,YAClB,UAAU,MAAM;AAAA,YAChB,UAAU;AAAA,UACd;AAAA,QACJ;AACI,gBAAM,IAAW,iBAAiB;AAAA,YAC9B,YAAY,UAAU,MAAM;AAAA,YAC5B,MAAM,UAAU,MAAM;AAAA,YACtB,aAAa,UAAU;AAAA,UAC3B,CAAC;AAAA,MACT;AAAA,IACJ;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWO,YACH,IACA,gBACqD;AACrD,WAAY,oBAAoB,YAAY,KAAK,cAAc,IAAI,cAAc,CAAC;AAAA,EACtF;AAAA,EAEA,MAAc,cACV,IACA,gBAC0D;AAC1D,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC,8BAA8B,mBAAmB,EAAE;AAAA,MACvD;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,iBAAiB,gBAAgB;AAAA,MACjC,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAqC,aAAa,UAAU,YAAY;AAAA,IACrG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,YAAM,IAAW,iBAAiB;AAAA,QAC9B,YAAY,UAAU,MAAM;AAAA,QAC5B,MAAM,UAAU,MAAM;AAAA,QACtB,aAAa,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA,EAEA,MAAgB,0BAAuD;AACnE,UAAM,SAAS,MAAW,SAAS,IAAI,KAAK,SAAS,KAAK;AAC1D,QAAI,UAAU,MAAM;AAChB,aAAO,UAAU;AAAA,IACrB;AAEA,WAAO;AAAA,EACX;AACJ;;;AC3/BO,IAAM,WAAN,MAAe;AAAA,EAGlB,YAAY,UAA4B;AACpC,SAAK,WAAW;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaO,0BACH,YACA,gBACqD;AACrD,WAAY,oBAAoB,YAAY,KAAK,4BAA4B,YAAY,cAAc,CAAC;AAAA,EAC5G;AAAA,EAEA,MAAc,4BACV,YACA,gBAC0D;AAC1D,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC,6BAA6B,mBAAmB,UAAU;AAAA,MAC9D;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,iBAAiB,gBAAgB;AAAA,MACjC,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAqC,aAAa,UAAU,YAAY;AAAA,IACrG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,cAAQ,UAAU,MAAM,YAAY;AAAA,QAChC,KAAK;AACD,gBAAM,IAAgB;AAAA,YAClB,UAAU,MAAM;AAAA,YAChB,UAAU;AAAA,UACd;AAAA,QACJ;AACI,gBAAM,IAAW,iBAAiB;AAAA,YAC9B,YAAY,UAAU,MAAM;AAAA,YAC5B,MAAM,UAAU,MAAM;AAAA,YACtB,aAAa,UAAU;AAAA,UAC3B,CAAC;AAAA,MACT;AAAA,IACJ;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA,EAEA,MAAgB,0BAAuD;AACnE,UAAM,SAAS,MAAW,SAAS,IAAI,KAAK,SAAS,KAAK;AAC1D,QAAI,UAAU,MAAM;AAChB,aAAO,UAAU;AAAA,IACrB;AAEA,WAAO;AAAA,EACX;AACJ;;;ACnGO,IAAM,SAAN,MAAa;AAAA,EAGhB,YAAY,UAA0B;AAClC,SAAK,WAAW;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBO,UACH,UAAwC,CAAC,GACzC,gBACqD;AACrD,WAAY,oBAAoB,YAAY,KAAK,YAAY,SAAS,cAAc,CAAC;AAAA,EACzF;AAAA,EAEA,MAAc,YACV,UAAwC,CAAC,GACzC,gBAC0D;AAC1D,UAAM,EAAE,SAAS,UAAU,iBAAiB,gBAAgB,MAAM,KAAK,IAAI;AAC3E,UAAM,eAA6E,CAAC;AACpF,QAAI,WAAW,MAAM;AACjB,mBAAa,SAAS,IAAI;AAAA,IAC9B;AAEA,QAAI,YAAY,MAAM;AAClB,mBAAa,UAAU,IAAI;AAAA,IAC/B;AAEA,QAAI,mBAAmB,MAAM;AACzB,mBAAa,iBAAiB,IAAI;AAAA,IACtC;AAEA,QAAI,kBAAkB,MAAM;AACxB,mBAAa,gBAAgB,IAAI;AAAA,IACrC;AAEA,QAAI,QAAQ,MAAM;AACd,mBAAa,MAAM,IAAI,KAAK,SAAS;AAAA,IACzC;AAEA,QAAI,QAAQ,MAAM;AACd,mBAAa,MAAM,IAAI,KAAK,SAAS;AAAA,IACzC;AAEA,QAAI,WAAyC;AAAA,MACzC,KAAK,UAAU;AAAA,MACf,wBAAwB;AAAA,QACpB,eAAe,MAAM,KAAK,wBAAwB;AAAA,QAClD,iBAAiB,gBAAgB,cAAc;AAAA,QAC/C,aAAa,gBAAgB,UAAU,KAAK,UAAU;AAAA,MAC1D,CAAC;AAAA,MACD,gBAAgB;AAAA,IACpB;AACA,UAAM,YAAY,MAAW,QAAQ;AAAA,MACjC,KAAU,YAAI;AAAA,QACT,MAAW,SAAS,IAAI,KAAK,SAAS,OAAO,KACzC,MAAW,SAAS,IAAI,KAAK,SAAS,WAAW,KACrC,uBAAuB;AAAA,QACxC;AAAA,MACJ;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,iBAAiB,EAAE,GAAG,cAAc,GAAG,gBAAgB,YAAY;AAAA,MACnE,WAAW,gBAAgB,oBAAoB,OAAO,eAAe,mBAAmB,MAAO;AAAA,MAC/F,YAAY,gBAAgB;AAAA,MAC5B,aAAa,gBAAgB;AAAA,IACjC,CAAC;AACD,QAAI,UAAU,IAAI;AACd,aAAO,EAAE,MAAM,UAAU,MAAqC,aAAa,UAAU,YAAY;AAAA,IACrG;AAEA,QAAI,UAAU,MAAM,WAAW,eAAe;AAC1C,cAAQ,UAAU,MAAM,YAAY;AAAA,QAChC,KAAK;AACD,gBAAM,IAAgB;AAAA,YAClB,UAAU,MAAM;AAAA,YAChB,UAAU;AAAA,UACd;AAAA,QACJ;AACI,gBAAM,IAAW,iBAAiB;AAAA,YAC9B,YAAY,UAAU,MAAM;AAAA,YAC5B,MAAM,UAAU,MAAM;AAAA,YACtB,aAAa,UAAU;AAAA,UAC3B,CAAC;AAAA,MACT;AAAA,IACJ;AAEA,YAAQ,UAAU,MAAM,QAAQ;AAAA,MAC5B,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,YAAY,UAAU,MAAM;AAAA,UAC5B,MAAM,UAAU,MAAM;AAAA,UACtB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,MACL,KAAK;AACD,cAAM,IAAW,wBAAwB,mDAAmD;AAAA,MAChG,KAAK;AACD,cAAM,IAAW,iBAAiB;AAAA,UAC9B,SAAS,UAAU,MAAM;AAAA,UACzB,aAAa,UAAU;AAAA,QAC3B,CAAC;AAAA,IACT;AAAA,EACJ;AAAA,EAEA,MAAgB,0BAAuD;AACnE,UAAM,SAAS,MAAW,SAAS,IAAI,KAAK,SAAS,KAAK;AAC1D,QAAI,UAAU,MAAM;AAChB,aAAO,UAAU;AAAA,IACrB;AAEA,WAAO;AAAA,EACX;AACJ;;;AC5HO,IAAM,oBAAN,MAAwB;AAAA,EAc3B,YAAY,UAAqC;AAC7C,SAAK,WAAW;AAAA,MACZ,GAAG;AAAA,MACH,SAAS;AAAA,QACL;AAAA,UACI,iBAAiB,UAAU,cAAc;AAAA,UACzC,aAAa,UAAU;AAAA,UACvB,mBAAmB;AAAA,UACnB,kBAAuB,QAAQ;AAAA,UAC/B,0BAA+B,QAAQ;AAAA,QAC3C;AAAA,QACA,UAAU;AAAA,MACd;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,IAAW,WAAqB;AAC5B,WAAQ,KAAK,cAAL,KAAK,YAAc,IAAI,SAAS,KAAK,QAAQ;AAAA,EACzD;AAAA,EAEA,IAAW,UAAmB;AAC1B,WAAQ,KAAK,aAAL,KAAK,WAAa,IAAI,QAAQ,KAAK,QAAQ;AAAA,EACvD;AAAA,EAEA,IAAW,YAAuB;AAC9B,WAAQ,KAAK,eAAL,KAAK,aAAe,IAAI,UAAU,KAAK,QAAQ;AAAA,EAC3D;AAAA,EAEA,IAAW,eAA6B;AACpC,WAAQ,KAAK,kBAAL,KAAK,gBAAkB,IAAI,aAAa,KAAK,QAAQ;AAAA,EACjE;AAAA,EAEA,IAAW,cAA2B;AAClC,WAAQ,KAAK,iBAAL,KAAK,eAAiB,IAAI,YAAY,KAAK,QAAQ;AAAA,EAC/D;AAAA,EAEA,IAAW,oBAAuC;AAC9C,WAAQ,KAAK,uBAAL,KAAK,qBAAuB,IAAI,kBAAkB,KAAK,QAAQ;AAAA,EAC3E;AAAA,EAEA,IAAW,oBAAuC;AAC9C,WAAQ,KAAK,uBAAL,KAAK,qBAAuB,IAAI,kBAAkB,KAAK,QAAQ;AAAA,EAC3E;AAAA,EAEA,IAAW,uBAA6C;AACpD,WAAQ,KAAK,0BAAL,KAAK,wBAA0B,IAAI,qBAAqB,KAAK,QAAQ;AAAA,EACjF;AAAA,EAEA,IAAW,eAA6B;AACpC,WAAQ,KAAK,kBAAL,KAAK,gBAAkB,IAAI,aAAa,KAAK,QAAQ;AAAA,EACjE;AAAA,EAEA,IAAW,WAAqB;AAC5B,WAAQ,KAAK,cAAL,KAAK,YAAc,IAAI,SAAS,KAAK,QAAQ;AAAA,EACzD;AAAA,EAEA,IAAW,SAAiB;AACxB,WAAQ,KAAK,YAAL,KAAK,UAAY,IAAI,OAAO,KAAK,QAAQ;AAAA,EACrD;AACJ","sourcesContent":["export * from \"./resources/index.js\";\nexport * from \"./types/index.js\";\nexport * from \"./errors/index.js\";\n","export * from \"./types/index.js\";\nexport * from \"./client/index.js\";\n","// This file was auto-generated by Fern from our API Definition.\n\nexport const GetDeployedContractsRequestNetwork = {\n Btc: \"BTC\",\n TBtc: \"tBTC\",\n Eth: \"ETH\",\n TEth: \"tETH\",\n} as const;\nexport type GetDeployedContractsRequestNetwork =\n (typeof GetDeployedContractsRequestNetwork)[keyof typeof GetDeployedContractsRequestNetwork];\n","export * from \"./types/index.js\";\nexport * from \"./client/index.js\";\n","// This file was auto-generated by Fern from our API Definition.\n\nexport const GetCollectionTokensRequestType = {\n Mint: \"MINT\",\n Burn: \"BURN\",\n} as const;\nexport type GetCollectionTokensRequestType =\n (typeof GetCollectionTokensRequestType)[keyof typeof GetCollectionTokensRequestType];\n","// This file was auto-generated by Fern from our API Definition.\n\n/**\n * @example\n * {\n * type: \"NON_FUNGIBLE_TOKEN\",\n * addressId: \"addressId\",\n * clientShare: \"clientShare\",\n * createParams: {\n * initializeParams: [{\n * name: \"name\",\n * type: \"type\",\n * value: \"value\"\n * }]\n * }\n * }\n */\nexport interface CreateCollectionRequest {\n /** Blockchain network */\n network?: string;\n /** Collection type */\n type: CreateCollectionRequest.Type;\n /** Address ID for collection creation */\n addressId: string;\n /** Client share for signing */\n clientShare: string;\n createParams: CreateCollectionRequest.CreateParams;\n /** Collection description */\n description?: string;\n /** Collection display name */\n displayName?: string;\n /** Use gasless transaction */\n useGasless?: boolean;\n /** Transaction fee */\n fee?: string;\n /** Fee level */\n feeLevel?: string;\n}\n\nexport namespace CreateCollectionRequest {\n /** Collection type */\n export const Type = {\n NonFungibleToken: \"NON_FUNGIBLE_TOKEN\",\n SemiFungibleToken: \"SEMI_FUNGIBLE_TOKEN\",\n } as const;\n export type Type = (typeof Type)[keyof typeof Type];\n\n export interface CreateParams {\n /** Initialize parameters */\n initializeParams: CreateParams.InitializeParams.Item[];\n }\n\n export namespace CreateParams {\n export type InitializeParams = InitializeParams.Item[];\n\n export namespace InitializeParams {\n export interface Item {\n /** Parameter name */\n name: string;\n /** Parameter type */\n type: string;\n /** Parameter value */\n value: string;\n }\n }\n }\n}\n","export * from \"./client/index.js\";\n","// This file was auto-generated by Fern from our API Definition.\n\n/**\n * @example\n * {\n * reference: \"reference\",\n * type: \"User\"\n * }\n */\nexport interface CreateProfileRequest {\n /** Profile reference identifier */\n reference: string;\n /** Profile type */\n type: CreateProfileRequest.Type;\n}\n\nexport namespace CreateProfileRequest {\n /** Profile type */\n export const Type = {\n User: \"User\",\n Department: \"Department\",\n Merchant: \"Merchant\",\n } as const;\n export type Type = (typeof Type)[keyof typeof Type];\n}\n","export * from \"./client/index.js\";\n","// This file was auto-generated by Fern from our API Definition.\n\n/**\n * @example\n * {\n * reference: \"reference\",\n * network: \"BTC\"\n * }\n */\nexport interface CreateWalletRequest {\n /** Profile reference */\n reference: string;\n /** Blockchain network */\n network: CreateWalletRequest.Network;\n}\n\nexport namespace CreateWalletRequest {\n /** Blockchain network */\n export const Network = {\n Btc: \"BTC\",\n TBtc: \"tBTC\",\n Eth: \"ETH\",\n TEth: \"tETH\",\n } as const;\n export type Network = (typeof Network)[keyof typeof Network];\n}\n","export * from \"./client/index.js\";\n","export * from \"./client/index.js\";\n","export * from \"./client/index.js\";\n","// This file was auto-generated by Fern from our API Definition.\n\n/**\n * @example\n * {\n * to: \"to\",\n * amount: \"amount\",\n * from: [\"from\"],\n * network: \"BTC\",\n * clientShare: \"clientShare\"\n * }\n */\nexport interface CreateWithdrawalRequest {\n /** Recipient address for withdrawal */\n to: string;\n /** Withdrawal amount */\n amount: string;\n /** Array of source addresses for withdrawal */\n from: string[];\n /** Blockchain network */\n network: CreateWithdrawalRequest.Network;\n /** Client share for signing */\n clientShare: string;\n}\n\nexport namespace CreateWithdrawalRequest {\n /** Blockchain network */\n export const Network = {\n Btc: \"BTC\",\n TBtc: \"tBTC\",\n Eth: \"ETH\",\n TEth: \"tETH\",\n } as const;\n export type Network = (typeof Network)[keyof typeof Network];\n}\n","export * from \"./client/index.js\";\n","// This file was auto-generated by Fern from our API Definition.\n\n/**\n * @example\n * {\n * name: \"name\",\n * description: \"description\",\n * abi: [{\n * \"key\": \"value\"\n * }],\n * bytecode: \"bytecode\"\n * }\n */\nexport interface CreateContractTemplateRequest {\n /** Contract template name */\n name: string;\n /** Contract template description */\n description: string;\n /** Contract ABI */\n abi: Record<string, unknown>[];\n /** Contract bytecode */\n bytecode: string;\n /** Long description of the contract */\n longDescription?: string;\n /** Contract source code */\n sourceCode?: string;\n /** Contract type */\n type?: string;\n /** Contract documentation */\n docs?: CreateContractTemplateRequest.Docs;\n /** Contract attributes */\n attributes?: CreateContractTemplateRequest.Attributes;\n}\n\nexport namespace CreateContractTemplateRequest {\n /**\n * Contract documentation\n */\n export interface Docs {\n details?: string;\n events?: string;\n kind?: Docs.Kind;\n methods?: Docs.Methods.Item[];\n version?: string;\n }\n\n export namespace Docs {\n export const Kind = {\n Dev: \"dev\",\n User: \"user\",\n } as const;\n export type Kind = (typeof Kind)[keyof typeof Kind];\n export type Methods = Methods.Item[];\n\n export namespace Methods {\n export interface Item {\n name?: string;\n description?: string;\n params?: Record<string, unknown>;\n returns?: Record<string, unknown>;\n }\n }\n }\n\n /**\n * Contract attributes\n */\n export interface Attributes {\n useCases?: string[];\n standards?: string[];\n auditor?: Attributes.Auditor;\n }\n\n export namespace Attributes {\n export interface Auditor {\n name?: string;\n imageURL?: string;\n link?: string;\n }\n }\n}\n","export * from \"./client/index.js\";\n","// This file was auto-generated by Fern from our API Definition.\n\n/**\n * @example\n * {\n * addressId: \"addressId\",\n * clientShare: \"clientShare\",\n * abiFunction: {\n * name: \"name\",\n * inputs: [{}],\n * outputs: [{}],\n * type: \"type\"\n * }\n * }\n */\nexport interface WriteFunctionRequest {\n /** Address ID for transaction */\n addressId: string;\n /** Client share for signing */\n clientShare: string;\n /** ABI function definition */\n abiFunction: WriteFunctionRequest.AbiFunction;\n /** ETH value to send */\n amount?: string;\n /** Fee level for transaction */\n feeLevel?: WriteFunctionRequest.FeeLevel;\n}\n\nexport namespace WriteFunctionRequest {\n /**\n * ABI function definition\n */\n export interface AbiFunction {\n /** Function name */\n name: string;\n /** Function input parameters */\n inputs: AbiFunction.Inputs.Item[];\n /** Function output parameters */\n outputs: AbiFunction.Outputs.Item[];\n stateMutability?: string;\n type: string;\n }\n\n export namespace AbiFunction {\n export type Inputs = Inputs.Item[];\n\n export namespace Inputs {\n export interface Item {\n name?: string;\n type?: string;\n internalType?: string;\n }\n }\n\n export type Outputs = Outputs.Item[];\n\n export namespace Outputs {\n export interface Item {\n name?: string;\n type?: string;\n internalType?: string;\n }\n }\n }\n\n /** Fee level for transaction */\n export const FeeLevel = {\n Low: \"LOW\",\n Medium: \"MEDIUM\",\n High: \"HIGH\",\n } as const;\n export type FeeLevel = (typeof FeeLevel)[keyof typeof FeeLevel];\n}\n","export * from \"./client/index.js\";\n","export * from \"./client/index.js\";\n","// This file was auto-generated by Fern from our API Definition.\n\nexport interface CreateAddressRequest {\n /** Profile reference */\n reference: string;\n /** Blockchain network */\n network: CreateAddressRequest.Network;\n /** Client share for signing */\n clientShare: string;\n}\n\nexport namespace CreateAddressRequest {\n /** Blockchain network */\n export const Network = {\n Btc: \"BTC\",\n TBtc: \"tBTC\",\n Eth: \"ETH\",\n TEth: \"tETH\",\n } as const;\n export type Network = (typeof Network)[keyof typeof Network];\n}\n","/**\n * Serialize a value to JSON\n * @param value A JavaScript value, usually an object or array, to be converted.\n * @param replacer A function that transforms the results.\n * @param space Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read.\n * @returns JSON string\n */\nexport const toJson = (\n value: unknown,\n replacer?: (this: unknown, key: string, value: unknown) => unknown,\n space?: string | number,\n): string => {\n return JSON.stringify(value, replacer, space);\n};\n\n/**\n * Parse JSON string to object, array, or other type\n * @param text A valid JSON string.\n * @param reviver A function that transforms the results. This function is called for each member of the object. If a member contains nested objects, the nested objects are transformed before the parent object is.\n * @returns Parsed object, array, or other type\n */\nexport function fromJson<T = unknown>(\n text: string,\n reviver?: (this: unknown, key: string, value: unknown) => unknown,\n): T {\n return JSON.parse(text, reviver);\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport * as core from \"../core/index.js\";\nimport { toJson } from \"../core/json.js\";\n\nexport class OumlaSdkApiError extends Error {\n public readonly statusCode?: number;\n public readonly body?: unknown;\n public readonly rawResponse?: core.RawResponse;\n\n constructor({\n message,\n statusCode,\n body,\n rawResponse,\n }: {\n message?: string;\n statusCode?: number;\n body?: unknown;\n rawResponse?: core.RawResponse;\n }) {\n super(buildMessage({ message, statusCode, body }));\n Object.setPrototypeOf(this, OumlaSdkApiError.prototype);\n this.statusCode = statusCode;\n this.body = body;\n this.rawResponse = rawResponse;\n }\n}\n\nfunction buildMessage({\n message,\n statusCode,\n body,\n}: {\n message: string | undefined;\n statusCode: number | undefined;\n body: unknown | undefined;\n}): string {\n let lines: string[] = [];\n if (message != null) {\n lines.push(message);\n }\n\n if (statusCode != null) {\n lines.push(`Status code: ${statusCode.toString()}`);\n }\n\n if (body != null) {\n lines.push(`Body: ${toJson(body, undefined, 2)}`);\n }\n\n return lines.join(\"\\n\");\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nexport class OumlaSdkApiTimeoutError extends Error {\n constructor(message: string) {\n super(message);\n Object.setPrototypeOf(this, OumlaSdkApiTimeoutError.prototype);\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport * as errors from \"../../errors/index.js\";\nimport * as OumlaSdkApi from \"../index.js\";\nimport * as core from \"../../core/index.js\";\n\nexport class BadRequestError extends errors.OumlaSdkApiError {\n constructor(body: OumlaSdkApi.ErrorResponse, rawResponse?: core.RawResponse) {\n super({\n message: \"BadRequestError\",\n statusCode: 400,\n body: body,\n rawResponse: rawResponse,\n });\n Object.setPrototypeOf(this, BadRequestError.prototype);\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport * as errors from \"../../errors/index.js\";\nimport * as OumlaSdkApi from \"../index.js\";\nimport * as core from \"../../core/index.js\";\n\nexport class NotFoundError extends errors.OumlaSdkApiError {\n constructor(body: OumlaSdkApi.ErrorResponse, rawResponse?: core.RawResponse) {\n super({\n message: \"NotFoundError\",\n statusCode: 404,\n body: body,\n rawResponse: rawResponse,\n });\n Object.setPrototypeOf(this, NotFoundError.prototype);\n }\n}\n","import { EndpointMetadata } from \"./EndpointMetadata.js\";\nimport { Supplier } from \"./Supplier.js\";\n\ntype EndpointSupplierFn<T> = (arg: { endpointMetadata: EndpointMetadata }) => T | Promise<T>;\nexport type EndpointSupplier<T> = Supplier<T> | EndpointSupplierFn<T>;\nexport const EndpointSupplier = {\n get: async <T>(supplier: EndpointSupplier<T>, arg: { endpointMetadata: EndpointMetadata }): Promise<T> => {\n if (typeof supplier === \"function\") {\n return (supplier as EndpointSupplierFn<T>)(arg);\n } else {\n return supplier;\n }\n },\n};\n","interface QueryStringOptions {\n arrayFormat?: \"indices\" | \"repeat\";\n encode?: boolean;\n}\n\nconst defaultQsOptions: Required<QueryStringOptions> = {\n arrayFormat: \"indices\",\n encode: true,\n} as const;\n\nfunction encodeValue(value: unknown, shouldEncode: boolean): string {\n if (value === undefined) {\n return \"\";\n }\n if (value === null) {\n return \"\";\n }\n const stringValue = String(value);\n return shouldEncode ? encodeURIComponent(stringValue) : stringValue;\n}\n\nfunction stringifyObject(obj: Record<string, unknown>, prefix = \"\", options: Required<QueryStringOptions>): string[] {\n const parts: string[] = [];\n\n for (const [key, value] of Object.entries(obj)) {\n const fullKey = prefix ? `${prefix}[${key}]` : key;\n\n if (value === undefined) {\n continue;\n }\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n continue;\n }\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n if (item === undefined) {\n continue;\n }\n if (typeof item === \"object\" && !Array.isArray(item) && item !== null) {\n const arrayKey = options.arrayFormat === \"indices\" ? `${fullKey}[${i}]` : fullKey;\n parts.push(...stringifyObject(item as Record<string, unknown>, arrayKey, options));\n } else {\n const arrayKey = options.arrayFormat === \"indices\" ? `${fullKey}[${i}]` : fullKey;\n const encodedKey = options.encode ? encodeURIComponent(arrayKey) : arrayKey;\n parts.push(`${encodedKey}=${encodeValue(item, options.encode)}`);\n }\n }\n } else if (typeof value === \"object\" && value !== null) {\n if (Object.keys(value as Record<string, unknown>).length === 0) {\n continue;\n }\n parts.push(...stringifyObject(value as Record<string, unknown>, fullKey, options));\n } else {\n const encodedKey = options.encode ? encodeURIComponent(fullKey) : fullKey;\n parts.push(`${encodedKey}=${encodeValue(value, options.encode)}`);\n }\n }\n\n return parts;\n}\n\nexport function toQueryString(obj: unknown, options?: QueryStringOptions): string {\n if (obj == null || typeof obj !== \"object\") {\n return \"\";\n }\n\n const parts = stringifyObject(obj as Record<string, unknown>, \"\", {\n ...defaultQsOptions,\n ...options,\n });\n return parts.join(\"&\");\n}\n","import { toQueryString } from \"../url/qs.js\";\n\nexport function createRequestUrl(baseUrl: string, queryParameters?: Record<string, unknown>): string {\n const queryString = toQueryString(queryParameters, { arrayFormat: \"repeat\" });\n return queryString ? `${baseUrl}?${queryString}` : baseUrl;\n}\n","import { ResponseWithBody } from \"./ResponseWithBody.js\";\n\nexport type BinaryResponse = {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/bodyUsed) */\n bodyUsed: boolean;\n /**\n * Returns a ReadableStream of the response body.\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/body)\n */\n stream: () => ReadableStream<Uint8Array>;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/arrayBuffer) */\n arrayBuffer: () => Promise<ArrayBuffer>;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/blob) */\n blob: () => Promise<Blob>;\n /**\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/bytes)\n * Some versions of the Fetch API may not support this method.\n */\n bytes?(): Promise<Uint8Array>;\n};\n\nexport function getBinaryResponse(response: ResponseWithBody): BinaryResponse {\n const binaryResponse: BinaryResponse = {\n get bodyUsed() {\n return response.bodyUsed;\n },\n stream: () => response.body,\n arrayBuffer: response.arrayBuffer.bind(response),\n blob: response.blob.bind(response),\n };\n if (\"bytes\" in response && typeof response.bytes === \"function\") {\n binaryResponse.bytes = response.bytes.bind(response);\n }\n\n return binaryResponse;\n}\n","export type ResponseWithBody = Response & {\n body: ReadableStream<Uint8Array>;\n};\n\nexport function isResponseWithBody(response: Response): response is ResponseWithBody {\n return (response as ResponseWithBody).body != null;\n}\n","import { getBinaryResponse } from \"./BinaryResponse.js\";\nimport { isResponseWithBody } from \"./ResponseWithBody.js\";\nimport { fromJson } from \"../json.js\";\n\nexport async function getResponseBody(response: Response, responseType?: string): Promise<unknown> {\n if (!isResponseWithBody(response)) {\n return undefined;\n }\n switch (responseType) {\n case \"binary-response\":\n return getBinaryResponse(response);\n case \"blob\":\n return await response.blob();\n case \"arrayBuffer\":\n return await response.arrayBuffer();\n case \"sse\":\n return response.body;\n case \"streaming\":\n return response.body;\n\n case \"text\":\n return await response.text();\n }\n\n // if responseType is \"json\" or not specified, try to parse as JSON\n const text = await response.text();\n if (text.length > 0) {\n try {\n let responseBody = fromJson(text);\n return responseBody;\n } catch (err) {\n return {\n ok: false,\n error: {\n reason: \"non-json\",\n statusCode: response.status,\n rawBody: text,\n },\n };\n }\n }\n return undefined;\n}\n","import { fromJson } from \"../json.js\";\nimport { getResponseBody } from \"./getResponseBody.js\";\n\nexport async function getErrorResponseBody(response: Response): Promise<unknown> {\n let contentType = response.headers.get(\"Content-Type\")?.toLowerCase();\n if (contentType == null || contentType.length === 0) {\n return getResponseBody(response);\n }\n\n if (contentType.indexOf(\";\") !== -1) {\n contentType = contentType.split(\";\")[0]?.trim() ?? \"\";\n }\n switch (contentType) {\n case \"application/hal+json\":\n case \"application/json\":\n case \"application/ld+json\":\n case \"application/problem+json\":\n case \"application/vnd.api+json\":\n case \"text/json\":\n const text = await response.text();\n return text.length > 0 ? fromJson(text) : undefined;\n default:\n if (contentType.startsWith(\"application/vnd.\") && contentType.endsWith(\"+json\")) {\n const text = await response.text();\n return text.length > 0 ? fromJson(text) : undefined;\n }\n\n // Fallback to plain text if content type is not recognized\n // Even if no body is present, the response will be an empty string\n return await response.text();\n }\n}\n","export async function getFetchFn(): Promise<typeof fetch> {\n return fetch;\n}\n","import { toJson } from \"../json.js\";\n\nexport declare namespace GetRequestBody {\n interface Args {\n body: unknown;\n type: \"json\" | \"file\" | \"bytes\" | \"other\";\n }\n}\n\nexport async function getRequestBody({ body, type }: GetRequestBody.Args): Promise<BodyInit | undefined> {\n if (type.includes(\"json\")) {\n return toJson(body);\n } else {\n return body as BodyInit;\n }\n}\n","const TIMEOUT = \"timeout\";\n\nexport function getTimeoutSignal(timeoutMs: number): { signal: AbortSignal; abortId: NodeJS.Timeout } {\n const controller = new AbortController();\n const abortId = setTimeout(() => controller.abort(TIMEOUT), timeoutMs);\n return { signal: controller.signal, abortId };\n}\n\n/**\n * Returns an abort signal that is getting aborted when\n * at least one of the specified abort signals is aborted.\n *\n * Requires at least node.js 18.\n */\nexport function anySignal(...args: AbortSignal[] | [AbortSignal[]]): AbortSignal {\n // Allowing signals to be passed either as array\n // of signals or as multiple arguments.\n const signals = (args.length === 1 && Array.isArray(args[0]) ? args[0] : args) as AbortSignal[];\n\n const controller = new AbortController();\n\n for (const signal of signals) {\n if (signal.aborted) {\n // Exiting early if one of the signals\n // is already aborted.\n controller.abort((signal as any)?.reason);\n break;\n }\n\n // Listening for signals and removing the listeners\n // when at least one symbol is aborted.\n signal.addEventListener(\"abort\", () => controller.abort((signal as any)?.reason), {\n signal: controller.signal,\n });\n }\n\n return controller.signal;\n}\n","import { anySignal, getTimeoutSignal } from \"./signals.js\";\n\nexport const makeRequest = async (\n fetchFn: (url: string, init: RequestInit) => Promise<Response>,\n url: string,\n method: string,\n headers: Record<string, string>,\n requestBody: BodyInit | undefined,\n timeoutMs?: number,\n abortSignal?: AbortSignal,\n withCredentials?: boolean,\n duplex?: \"half\",\n): Promise<Response> => {\n const signals: AbortSignal[] = [];\n\n // Add timeout signal\n let timeoutAbortId: NodeJS.Timeout | undefined = undefined;\n if (timeoutMs != null) {\n const { signal, abortId } = getTimeoutSignal(timeoutMs);\n timeoutAbortId = abortId;\n signals.push(signal);\n }\n\n // Add arbitrary signal\n if (abortSignal != null) {\n signals.push(abortSignal);\n }\n let newSignals = anySignal(signals);\n const response = await fetchFn(url, {\n method: method,\n headers,\n body: requestBody,\n signal: newSignals,\n credentials: withCredentials ? \"include\" : undefined,\n // @ts-ignore\n duplex,\n });\n\n if (timeoutAbortId != null) {\n clearTimeout(timeoutAbortId);\n }\n\n return response;\n};\n","let Headers: typeof globalThis.Headers;\n\nif (typeof globalThis.Headers !== \"undefined\") {\n Headers = globalThis.Headers;\n} else {\n Headers = class Headers implements Headers {\n private headers: Map<string, string[]>;\n\n constructor(init?: HeadersInit) {\n this.headers = new Map();\n\n if (init) {\n if (init instanceof Headers) {\n init.forEach((value, key) => this.append(key, value));\n } else if (Array.isArray(init)) {\n for (const [key, value] of init) {\n if (typeof key === \"string\" && typeof value === \"string\") {\n this.append(key, value);\n } else {\n throw new TypeError(\"Each header entry must be a [string, string] tuple\");\n }\n }\n } else {\n for (const [key, value] of Object.entries(init)) {\n if (typeof value === \"string\") {\n this.append(key, value);\n } else {\n throw new TypeError(\"Header values must be strings\");\n }\n }\n }\n }\n }\n\n append(name: string, value: string): void {\n const key = name.toLowerCase();\n const existing = this.headers.get(key) || [];\n this.headers.set(key, [...existing, value]);\n }\n\n delete(name: string): void {\n const key = name.toLowerCase();\n this.headers.delete(key);\n }\n\n get(name: string): string | null {\n const key = name.toLowerCase();\n const values = this.headers.get(key);\n return values ? values.join(\", \") : null;\n }\n\n has(name: string): boolean {\n const key = name.toLowerCase();\n return this.headers.has(key);\n }\n\n set(name: string, value: string): void {\n const key = name.toLowerCase();\n this.headers.set(key, [value]);\n }\n\n forEach(callbackfn: (value: string, key: string, parent: Headers) => void, thisArg?: unknown): void {\n const boundCallback = thisArg ? callbackfn.bind(thisArg) : callbackfn;\n this.headers.forEach((values, key) => boundCallback(values.join(\", \"), key, this));\n }\n\n getSetCookie(): string[] {\n return this.headers.get(\"set-cookie\") || [];\n }\n\n *entries(): HeadersIterator<[string, string]> {\n for (const [key, values] of this.headers.entries()) {\n yield [key, values.join(\", \")];\n }\n }\n\n *keys(): HeadersIterator<string> {\n yield* this.headers.keys();\n }\n\n *values(): HeadersIterator<string> {\n for (const values of this.headers.values()) {\n yield values.join(\", \");\n }\n }\n\n [Symbol.iterator](): HeadersIterator<[string, string]> {\n return this.entries();\n }\n };\n}\n\nexport { Headers };\n","import { Headers } from \"./Headers.js\";\n\n/**\n * The raw response from the fetch call excluding the body.\n */\nexport type RawResponse = Omit<\n {\n [K in keyof Response as Response[K] extends Function ? never : K]: Response[K]; // strips out functions\n },\n \"ok\" | \"body\" | \"bodyUsed\"\n>; // strips out body and bodyUsed\n\n/**\n * A raw response indicating that the request was aborted.\n */\nexport const abortRawResponse: RawResponse = {\n headers: new Headers(),\n redirected: false,\n status: 499,\n statusText: \"Client Closed Request\",\n type: \"error\",\n url: \"\",\n} as const;\n\n/**\n * A raw response indicating an unknown error.\n */\nexport const unknownRawResponse: RawResponse = {\n headers: new Headers(),\n redirected: false,\n status: 0,\n statusText: \"Unknown Error\",\n type: \"error\",\n url: \"\",\n} as const;\n\n/**\n * Converts a `RawResponse` object into a `RawResponse` by extracting its properties,\n * excluding the `body` and `bodyUsed` fields.\n *\n * @param response - The `RawResponse` object to convert.\n * @returns A `RawResponse` object containing the extracted properties of the input response.\n */\nexport function toRawResponse(response: Response): RawResponse {\n return {\n headers: response.headers,\n redirected: response.redirected,\n status: response.status,\n statusText: response.statusText,\n type: response.type,\n url: response.url,\n };\n}\n\n/**\n * Creates a `RawResponse` from a standard `Response` object.\n */\nexport interface WithRawResponse<T> {\n readonly data: T;\n readonly rawResponse: RawResponse;\n}\n","const INITIAL_RETRY_DELAY = 1000; // in milliseconds\nconst MAX_RETRY_DELAY = 60000; // in milliseconds\nconst DEFAULT_MAX_RETRIES = 2;\nconst JITTER_FACTOR = 0.2; // 20% random jitter\n\nfunction addPositiveJitter(delay: number): number {\n // Generate a random value between 0 and +JITTER_FACTOR\n const jitterMultiplier = 1 + Math.random() * JITTER_FACTOR;\n return delay * jitterMultiplier;\n}\n\nfunction addSymmetricJitter(delay: number): number {\n // Generate a random value in a JITTER_FACTOR-sized percentage range around delay\n const jitterMultiplier = 1 + (Math.random() - 0.5) * JITTER_FACTOR;\n return delay * jitterMultiplier;\n}\n\nfunction getRetryDelayFromHeaders(response: Response, retryAttempt: number): number {\n // Check for Retry-After header first (RFC 7231), with no jitter\n const retryAfter = response.headers.get(\"Retry-After\");\n if (retryAfter) {\n // Parse as number of seconds...\n const retryAfterSeconds = parseInt(retryAfter, 10);\n if (!isNaN(retryAfterSeconds) && retryAfterSeconds > 0) {\n return Math.min(retryAfterSeconds * 1000, MAX_RETRY_DELAY);\n }\n\n // ...or as an HTTP date; both are valid\n const retryAfterDate = new Date(retryAfter);\n if (!isNaN(retryAfterDate.getTime())) {\n const delay = retryAfterDate.getTime() - Date.now();\n if (delay > 0) {\n return Math.min(Math.max(delay, 0), MAX_RETRY_DELAY);\n }\n }\n }\n\n // Then check for industry-standard X-RateLimit-Reset header, with positive jitter\n const rateLimitReset = response.headers.get(\"X-RateLimit-Reset\");\n if (rateLimitReset) {\n const resetTime = parseInt(rateLimitReset, 10);\n if (!isNaN(resetTime)) {\n // Assume Unix timestamp in epoch seconds\n const delay = resetTime * 1000 - Date.now();\n if (delay > 0) {\n return addPositiveJitter(Math.min(delay, MAX_RETRY_DELAY));\n }\n }\n }\n\n // Fall back to exponential backoff, with symmetric jitter\n return addSymmetricJitter(Math.min(INITIAL_RETRY_DELAY * Math.pow(2, retryAttempt), MAX_RETRY_DELAY));\n}\n\nexport async function requestWithRetries(\n requestFn: () => Promise<Response>,\n maxRetries: number = DEFAULT_MAX_RETRIES,\n): Promise<Response> {\n let response: Response = await requestFn();\n\n for (let i = 0; i < maxRetries; ++i) {\n if ([408, 429].includes(response.status) || response.status >= 500) {\n // Get delay with appropriate jitter applied\n const delay = getRetryDelayFromHeaders(response, i);\n\n await new Promise((resolve) => setTimeout(resolve, delay));\n response = await requestFn();\n } else {\n break;\n }\n }\n return response!;\n}\n","import { toJson } from \"../json.js\";\nimport { APIResponse } from \"./APIResponse.js\";\nimport { createRequestUrl } from \"./createRequestUrl.js\";\nimport { EndpointMetadata } from \"./EndpointMetadata.js\";\nimport { EndpointSupplier } from \"./EndpointSupplier.js\";\nimport { getErrorResponseBody } from \"./getErrorResponseBody.js\";\nimport { getFetchFn } from \"./getFetchFn.js\";\nimport { getRequestBody } from \"./getRequestBody.js\";\nimport { getResponseBody } from \"./getResponseBody.js\";\nimport { makeRequest } from \"./makeRequest.js\";\nimport { abortRawResponse, toRawResponse, unknownRawResponse } from \"./RawResponse.js\";\nimport { requestWithRetries } from \"./requestWithRetries.js\";\n\nexport type FetchFunction = <R = unknown>(args: Fetcher.Args) => Promise<APIResponse<R, Fetcher.Error>>;\n\nexport declare namespace Fetcher {\n export interface Args {\n url: string;\n method: string;\n contentType?: string;\n headers?: Record<string, string | EndpointSupplier<string | null | undefined> | null | undefined>;\n queryParameters?: Record<string, unknown>;\n body?: unknown;\n timeoutMs?: number;\n maxRetries?: number;\n withCredentials?: boolean;\n abortSignal?: AbortSignal;\n requestType?: \"json\" | \"file\" | \"bytes\";\n responseType?: \"json\" | \"blob\" | \"sse\" | \"streaming\" | \"text\" | \"arrayBuffer\" | \"binary-response\";\n duplex?: \"half\";\n endpointMetadata?: EndpointMetadata;\n }\n\n export type Error = FailedStatusCodeError | NonJsonError | TimeoutError | UnknownError;\n\n export interface FailedStatusCodeError {\n reason: \"status-code\";\n statusCode: number;\n body: unknown;\n }\n\n export interface NonJsonError {\n reason: \"non-json\";\n statusCode: number;\n rawBody: string;\n }\n\n export interface TimeoutError {\n reason: \"timeout\";\n }\n\n export interface UnknownError {\n reason: \"unknown\";\n errorMessage: string;\n }\n}\n\nasync function getHeaders(args: Fetcher.Args): Promise<Record<string, string>> {\n const newHeaders: Record<string, string> = {};\n if (args.body !== undefined && args.contentType != null) {\n newHeaders[\"Content-Type\"] = args.contentType;\n }\n\n if (args.headers == null) {\n return newHeaders;\n }\n\n for (const [key, value] of Object.entries(args.headers)) {\n const result = await EndpointSupplier.get(value, { endpointMetadata: args.endpointMetadata ?? {} });\n if (typeof result === \"string\") {\n newHeaders[key] = result;\n continue;\n }\n if (result == null) {\n continue;\n }\n newHeaders[key] = `${result}`;\n }\n return newHeaders;\n}\n\nexport async function fetcherImpl<R = unknown>(args: Fetcher.Args): Promise<APIResponse<R, Fetcher.Error>> {\n const url = createRequestUrl(args.url, args.queryParameters);\n const requestBody: BodyInit | undefined = await getRequestBody({\n body: args.body,\n type: args.requestType === \"json\" ? \"json\" : \"other\",\n });\n const fetchFn = await getFetchFn();\n\n try {\n const response = await requestWithRetries(\n async () =>\n makeRequest(\n fetchFn,\n url,\n args.method,\n await getHeaders(args),\n requestBody,\n args.timeoutMs,\n args.abortSignal,\n args.withCredentials,\n args.duplex,\n ),\n args.maxRetries,\n );\n\n if (response.status >= 200 && response.status < 400) {\n return {\n ok: true,\n body: (await getResponseBody(response, args.responseType)) as R,\n headers: response.headers,\n rawResponse: toRawResponse(response),\n };\n } else {\n return {\n ok: false,\n error: {\n reason: \"status-code\",\n statusCode: response.status,\n body: await getErrorResponseBody(response),\n },\n rawResponse: toRawResponse(response),\n };\n }\n } catch (error) {\n if (args.abortSignal != null && args.abortSignal.aborted) {\n return {\n ok: false,\n error: {\n reason: \"unknown\",\n errorMessage: \"The user aborted a request\",\n },\n rawResponse: abortRawResponse,\n };\n } else if (error instanceof Error && error.name === \"AbortError\") {\n return {\n ok: false,\n error: {\n reason: \"timeout\",\n },\n rawResponse: abortRawResponse,\n };\n } else if (error instanceof Error) {\n return {\n ok: false,\n error: {\n reason: \"unknown\",\n errorMessage: error.message,\n },\n rawResponse: unknownRawResponse,\n };\n }\n\n return {\n ok: false,\n error: {\n reason: \"unknown\",\n errorMessage: toJson(error),\n },\n rawResponse: unknownRawResponse,\n };\n }\n}\n\nexport const fetcher: FetchFunction = fetcherImpl;\n","import { WithRawResponse } from \"./RawResponse.js\";\n\n/**\n * A promise that returns the parsed response and lets you retrieve the raw response too.\n */\nexport class HttpResponsePromise<T> extends Promise<T> {\n private innerPromise: Promise<WithRawResponse<T>>;\n private unwrappedPromise: Promise<T> | undefined;\n\n private constructor(promise: Promise<WithRawResponse<T>>) {\n // Initialize with a no-op to avoid premature parsing\n super((resolve) => {\n resolve(undefined as unknown as T);\n });\n this.innerPromise = promise;\n }\n\n /**\n * Creates an `HttpResponsePromise` from a function that returns a promise.\n *\n * @param fn - A function that returns a promise resolving to a `WithRawResponse` object.\n * @param args - Arguments to pass to the function.\n * @returns An `HttpResponsePromise` instance.\n */\n public static fromFunction<F extends (...args: never[]) => Promise<WithRawResponse<T>>, T>(\n fn: F,\n ...args: Parameters<F>\n ): HttpResponsePromise<T> {\n return new HttpResponsePromise<T>(fn(...args));\n }\n\n /**\n * Creates a function that returns an `HttpResponsePromise` from a function that returns a promise.\n *\n * @param fn - A function that returns a promise resolving to a `WithRawResponse` object.\n * @returns A function that returns an `HttpResponsePromise` instance.\n */\n public static interceptFunction<\n F extends (...args: never[]) => Promise<WithRawResponse<T>>,\n T = Awaited<ReturnType<F>>[\"data\"],\n >(fn: F): (...args: Parameters<F>) => HttpResponsePromise<T> {\n return (...args: Parameters<F>): HttpResponsePromise<T> => {\n return HttpResponsePromise.fromPromise<T>(fn(...args));\n };\n }\n\n /**\n * Creates an `HttpResponsePromise` from an existing promise.\n *\n * @param promise - A promise resolving to a `WithRawResponse` object.\n * @returns An `HttpResponsePromise` instance.\n */\n public static fromPromise<T>(promise: Promise<WithRawResponse<T>>): HttpResponsePromise<T> {\n return new HttpResponsePromise<T>(promise);\n }\n\n /**\n * Creates an `HttpResponsePromise` from an executor function.\n *\n * @param executor - A function that takes resolve and reject callbacks to create a promise.\n * @returns An `HttpResponsePromise` instance.\n */\n public static fromExecutor<T>(\n executor: (resolve: (value: WithRawResponse<T>) => void, reject: (reason?: unknown) => void) => void,\n ): HttpResponsePromise<T> {\n const promise = new Promise<WithRawResponse<T>>(executor);\n return new HttpResponsePromise<T>(promise);\n }\n\n /**\n * Creates an `HttpResponsePromise` from a resolved result.\n *\n * @param result - A `WithRawResponse` object to resolve immediately.\n * @returns An `HttpResponsePromise` instance.\n */\n public static fromResult<T>(result: WithRawResponse<T>): HttpResponsePromise<T> {\n const promise = Promise.resolve(result);\n return new HttpResponsePromise<T>(promise);\n }\n\n private unwrap(): Promise<T> {\n if (!this.unwrappedPromise) {\n this.unwrappedPromise = this.innerPromise.then(({ data }) => data);\n }\n return this.unwrappedPromise;\n }\n\n /** @inheritdoc */\n public override then<TResult1 = T, TResult2 = never>(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null,\n ): Promise<TResult1 | TResult2> {\n return this.unwrap().then(onfulfilled, onrejected);\n }\n\n /** @inheritdoc */\n public override catch<TResult = never>(\n onrejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | null,\n ): Promise<T | TResult> {\n return this.unwrap().catch(onrejected);\n }\n\n /** @inheritdoc */\n public override finally(onfinally?: (() => void) | null): Promise<T> {\n return this.unwrap().finally(onfinally);\n }\n\n /**\n * Retrieves the data and raw response.\n *\n * @returns A promise resolving to a `WithRawResponse` object.\n */\n public async withRawResponse(): Promise<WithRawResponse<T>> {\n return await this.innerPromise;\n }\n}\n","export type Supplier<T> = T | Promise<T> | (() => T | Promise<T>);\n\nexport const Supplier = {\n get: async <T>(supplier: Supplier<T>): Promise<T> => {\n if (typeof supplier === \"function\") {\n return (supplier as () => T)();\n } else {\n return supplier;\n }\n },\n};\n","interface DenoGlobal {\n version: {\n deno: string;\n };\n}\n\ninterface BunGlobal {\n version: string;\n}\n\ndeclare const Deno: DenoGlobal | undefined;\ndeclare const Bun: BunGlobal | undefined;\ndeclare const EdgeRuntime: string | undefined;\ndeclare const self: typeof globalThis.self & {\n importScripts?: unknown;\n};\n\n/**\n * A constant that indicates which environment and version the SDK is running in.\n */\nexport const RUNTIME: Runtime = evaluateRuntime();\n\nexport interface Runtime {\n type: \"browser\" | \"web-worker\" | \"deno\" | \"bun\" | \"node\" | \"react-native\" | \"unknown\" | \"workerd\" | \"edge-runtime\";\n version?: string;\n parsedVersion?: number;\n}\n\nfunction evaluateRuntime(): Runtime {\n /**\n * A constant that indicates whether the environment the code is running is a Web Browser.\n */\n const isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n if (isBrowser) {\n return {\n type: \"browser\",\n version: window.navigator.userAgent,\n };\n }\n\n /**\n * A constant that indicates whether the environment the code is running is Cloudflare.\n * https://developers.cloudflare.com/workers/runtime-apis/web-standards/#navigatoruseragent\n */\n const isCloudflare = typeof globalThis !== \"undefined\" && globalThis?.navigator?.userAgent === \"Cloudflare-Workers\";\n if (isCloudflare) {\n return {\n type: \"workerd\",\n };\n }\n\n /**\n * A constant that indicates whether the environment the code is running is Edge Runtime.\n * https://vercel.com/docs/functions/runtimes/edge-runtime#check-if-you're-running-on-the-edge-runtime\n */\n const isEdgeRuntime = typeof EdgeRuntime === \"string\";\n if (isEdgeRuntime) {\n return {\n type: \"edge-runtime\",\n };\n }\n\n /**\n * A constant that indicates whether the environment the code is running is a Web Worker.\n */\n const isWebWorker =\n typeof self === \"object\" &&\n typeof self?.importScripts === \"function\" &&\n (self.constructor?.name === \"DedicatedWorkerGlobalScope\" ||\n self.constructor?.name === \"ServiceWorkerGlobalScope\" ||\n self.constructor?.name === \"SharedWorkerGlobalScope\");\n if (isWebWorker) {\n return {\n type: \"web-worker\",\n };\n }\n\n /**\n * A constant that indicates whether the environment the code is running is Deno.\n * FYI Deno spoofs process.versions.node, see https://deno.land/std@0.177.0/node/process.ts?s=versions\n */\n const isDeno =\n typeof Deno !== \"undefined\" && typeof Deno.version !== \"undefined\" && typeof Deno.version.deno !== \"undefined\";\n if (isDeno) {\n return {\n type: \"deno\",\n version: Deno.version.deno,\n };\n }\n\n /**\n * A constant that indicates whether the environment the code is running is Bun.sh.\n */\n const isBun = typeof Bun !== \"undefined\" && typeof Bun.version !== \"undefined\";\n if (isBun) {\n return {\n type: \"bun\",\n version: Bun.version,\n };\n }\n\n /**\n * A constant that indicates whether the environment the code is running is Node.JS.\n */\n const isNode =\n typeof process !== \"undefined\" &&\n \"version\" in process &&\n !!process.version &&\n \"versions\" in process &&\n !!process.versions?.node;\n if (isNode) {\n return {\n type: \"node\",\n version: process.versions.node,\n parsedVersion: Number(process.versions.node.split(\".\")[0]),\n };\n }\n\n /**\n * A constant that indicates whether the environment the code is running is in React-Native.\n * https://github.com/facebook/react-native/blob/main/packages/react-native/Libraries/Core/setUpNavigator.js\n */\n const isReactNative = typeof navigator !== \"undefined\" && navigator?.product === \"ReactNative\";\n if (isReactNative) {\n return {\n type: \"react-native\",\n };\n }\n\n return {\n type: \"unknown\",\n };\n}\n","export { join } from \"./join.js\";\nexport { toQueryString } from \"./qs.js\";\n","export function join(base: string, ...segments: string[]): string {\n if (!base) {\n return \"\";\n }\n\n if (segments.length === 0) {\n return base;\n }\n\n if (base.includes(\"://\")) {\n let url: URL;\n try {\n url = new URL(base);\n } catch {\n // Fallback to path joining if URL is malformed\n return joinPath(base, ...segments);\n }\n\n const lastSegment = segments[segments.length - 1];\n const shouldPreserveTrailingSlash = lastSegment && lastSegment.endsWith(\"/\");\n\n for (const segment of segments) {\n const cleanSegment = trimSlashes(segment);\n if (cleanSegment) {\n url.pathname = joinPathSegments(url.pathname, cleanSegment);\n }\n }\n\n if (shouldPreserveTrailingSlash && !url.pathname.endsWith(\"/\")) {\n url.pathname += \"/\";\n }\n\n return url.toString();\n }\n\n return joinPath(base, ...segments);\n}\n\nfunction joinPath(base: string, ...segments: string[]): string {\n if (segments.length === 0) {\n return base;\n }\n\n let result = base;\n\n const lastSegment = segments[segments.length - 1];\n const shouldPreserveTrailingSlash = lastSegment && lastSegment.endsWith(\"/\");\n\n for (const segment of segments) {\n const cleanSegment = trimSlashes(segment);\n if (cleanSegment) {\n result = joinPathSegments(result, cleanSegment);\n }\n }\n\n if (shouldPreserveTrailingSlash && !result.endsWith(\"/\")) {\n result += \"/\";\n }\n\n return result;\n}\n\nfunction joinPathSegments(left: string, right: string): string {\n if (left.endsWith(\"/\")) {\n return left + right;\n }\n return left + \"/\" + right;\n}\n\nfunction trimSlashes(str: string): string {\n if (!str) return str;\n\n let start = 0;\n let end = str.length;\n\n if (str.startsWith(\"/\")) start = 1;\n if (str.endsWith(\"/\")) end = str.length - 1;\n\n return start === 0 && end === str.length ? str : str.slice(start, end);\n}\n","export function mergeHeaders<THeaderValue>(\n ...headersArray: (Record<string, THeaderValue> | null | undefined)[]\n): Record<string, string | THeaderValue> {\n const result: Record<string, THeaderValue> = {};\n\n for (const [key, value] of headersArray\n .filter((headers) => headers != null)\n .flatMap((headers) => Object.entries(headers))) {\n if (value != null) {\n result[key] = value;\n } else if (key in result) {\n delete result[key];\n }\n }\n\n return result;\n}\n\nexport function mergeOnlyDefinedHeaders<THeaderValue>(\n ...headersArray: (Record<string, THeaderValue> | null | undefined)[]\n): Record<string, THeaderValue> {\n const result: Record<string, THeaderValue> = {};\n\n for (const [key, value] of headersArray\n .filter((headers) => headers != null)\n .flatMap((headers) => Object.entries(headers))) {\n if (value != null) {\n result[key] = value;\n }\n }\n\n return result;\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nexport const OumlaSdkApiEnvironment = {\n Production: \"https://api.oumla.com\",\n} as const;\n\nexport type OumlaSdkApiEnvironment = typeof OumlaSdkApiEnvironment.Production;\n","// This file was auto-generated by Fern from our API Definition.\n\nimport * as environments from \"../../../../environments.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as OumlaSdkApi from \"../../../index.js\";\nimport { mergeHeaders, mergeOnlyDefinedHeaders } from \"../../../../core/headers.js\";\nimport * as errors from \"../../../../errors/index.js\";\n\nexport declare namespace Profiles {\n export interface Options {\n environment?: core.Supplier<environments.OumlaSdkApiEnvironment | string>;\n /** Specify a custom URL to connect the client to. */\n baseUrl?: core.Supplier<string>;\n token?: core.Supplier<core.BearerToken | undefined>;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey: core.Supplier<string>;\n /** Additional headers to include in requests. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n\n export interface RequestOptions {\n /** The maximum time to wait for a response in seconds. */\n timeoutInSeconds?: number;\n /** The number of times to retry the request. Defaults to 2. */\n maxRetries?: number;\n /** A hook to abort the request. */\n abortSignal?: AbortSignal;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey?: string;\n /** Additional query string parameters to include in the request. */\n queryParams?: Record<string, unknown>;\n /** Additional headers to include in the request. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n}\n\n/**\n * User profile management\n */\nexport class Profiles {\n protected readonly _options: Profiles.Options;\n\n constructor(_options: Profiles.Options) {\n this._options = _options;\n }\n\n /**\n * Retrieve a paginated list of profiles\n *\n * @param {OumlaSdkApi.GetProfilesRequest} request\n * @param {Profiles.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.profiles.getProfiles({\n * skip: 1,\n * take: 1\n * })\n */\n public getProfiles(\n request: OumlaSdkApi.GetProfilesRequest = {},\n requestOptions?: Profiles.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.PaginatedResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getProfiles(request, requestOptions));\n }\n\n private async __getProfiles(\n request: OumlaSdkApi.GetProfilesRequest = {},\n requestOptions?: Profiles.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.PaginatedResponse>> {\n const { skip, take } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (skip != null) {\n _queryParams[\"skip\"] = skip.toString();\n }\n\n if (take != null) {\n _queryParams[\"take\"] = take.toString();\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/profiles\",\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.PaginatedResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\"Timeout exceeded when calling GET /api/v1/profiles.\");\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Create a new user profile\n *\n * @param {OumlaSdkApi.CreateProfileRequest} request\n * @param {Profiles.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link OumlaSdkApi.BadRequestError}\n *\n * @example\n * await client.profiles.createProfile({\n * reference: \"reference\",\n * type: \"User\"\n * })\n */\n public createProfile(\n request: OumlaSdkApi.CreateProfileRequest,\n requestOptions?: Profiles.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__createProfile(request, requestOptions));\n }\n\n private async __createProfile(\n request: OumlaSdkApi.CreateProfileRequest,\n requestOptions?: Profiles.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/profiles\",\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryParameters: requestOptions?.queryParams,\n requestType: \"json\",\n body: request,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 400:\n throw new OumlaSdkApi.BadRequestError(\n _response.error.body as OumlaSdkApi.ErrorResponse,\n _response.rawResponse,\n );\n default:\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\"Timeout exceeded when calling POST /api/v1/profiles.\");\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n protected async _getAuthorizationHeader(): Promise<string | undefined> {\n const bearer = await core.Supplier.get(this._options.token);\n if (bearer != null) {\n return `Bearer ${bearer}`;\n }\n\n return undefined;\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport * as environments from \"../../../../environments.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as OumlaSdkApi from \"../../../index.js\";\nimport { mergeHeaders, mergeOnlyDefinedHeaders } from \"../../../../core/headers.js\";\nimport * as errors from \"../../../../errors/index.js\";\n\nexport declare namespace Wallets {\n export interface Options {\n environment?: core.Supplier<environments.OumlaSdkApiEnvironment | string>;\n /** Specify a custom URL to connect the client to. */\n baseUrl?: core.Supplier<string>;\n token?: core.Supplier<core.BearerToken | undefined>;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey: core.Supplier<string>;\n /** Additional headers to include in requests. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n\n export interface RequestOptions {\n /** The maximum time to wait for a response in seconds. */\n timeoutInSeconds?: number;\n /** The number of times to retry the request. Defaults to 2. */\n maxRetries?: number;\n /** A hook to abort the request. */\n abortSignal?: AbortSignal;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey?: string;\n /** Additional query string parameters to include in the request. */\n queryParams?: Record<string, unknown>;\n /** Additional headers to include in the request. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n}\n\n/**\n * Wallet creation and management\n */\nexport class Wallets {\n protected readonly _options: Wallets.Options;\n\n constructor(_options: Wallets.Options) {\n this._options = _options;\n }\n\n /**\n * Retrieve wallets for the organization\n *\n * @param {OumlaSdkApi.GetOrganizationWalletsRequest} request\n * @param {Wallets.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.wallets.getOrganizationWallets({\n * skip: 1,\n * take: 1\n * })\n */\n public getOrganizationWallets(\n request: OumlaSdkApi.GetOrganizationWalletsRequest = {},\n requestOptions?: Wallets.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.PaginatedResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getOrganizationWallets(request, requestOptions));\n }\n\n private async __getOrganizationWallets(\n request: OumlaSdkApi.GetOrganizationWalletsRequest = {},\n requestOptions?: Wallets.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.PaginatedResponse>> {\n const { skip, take } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (skip != null) {\n _queryParams[\"skip\"] = skip.toString();\n }\n\n if (take != null) {\n _queryParams[\"take\"] = take.toString();\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/wallets/organization\",\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.PaginatedResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/wallets/organization.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Retrieve wallets for a specific profile\n *\n * @param {string} reference - Profile reference\n * @param {OumlaSdkApi.GetProfileWalletsRequest} request\n * @param {Wallets.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.wallets.getProfileWallets(\"reference\", {\n * skip: 1,\n * take: 1\n * })\n */\n public getProfileWallets(\n reference: string,\n request: OumlaSdkApi.GetProfileWalletsRequest = {},\n requestOptions?: Wallets.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.PaginatedResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getProfileWallets(reference, request, requestOptions));\n }\n\n private async __getProfileWallets(\n reference: string,\n request: OumlaSdkApi.GetProfileWalletsRequest = {},\n requestOptions?: Wallets.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.PaginatedResponse>> {\n const { skip, take } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (skip != null) {\n _queryParams[\"skip\"] = skip.toString();\n }\n\n if (take != null) {\n _queryParams[\"take\"] = take.toString();\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/wallets/profile/${encodeURIComponent(reference)}`,\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.PaginatedResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/wallets/profile/{reference}.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Generate a new wallet for a profile\n *\n * @param {OumlaSdkApi.CreateWalletRequest} request\n * @param {Wallets.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.wallets.generateWallet({\n * reference: \"reference\",\n * network: \"BTC\"\n * })\n */\n public generateWallet(\n request: OumlaSdkApi.CreateWalletRequest,\n requestOptions?: Wallets.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__generateWallet(request, requestOptions));\n }\n\n private async __generateWallet(\n request: OumlaSdkApi.CreateWalletRequest,\n requestOptions?: Wallets.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/wallets/generate\",\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryParameters: requestOptions?.queryParams,\n requestType: \"json\",\n body: request,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling POST /api/v1/wallets/generate.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n protected async _getAuthorizationHeader(): Promise<string | undefined> {\n const bearer = await core.Supplier.get(this._options.token);\n if (bearer != null) {\n return `Bearer ${bearer}`;\n }\n\n return undefined;\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport * as environments from \"../../../../environments.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as OumlaSdkApi from \"../../../index.js\";\nimport { mergeHeaders, mergeOnlyDefinedHeaders } from \"../../../../core/headers.js\";\nimport * as errors from \"../../../../errors/index.js\";\n\nexport declare namespace Addresses {\n export interface Options {\n environment?: core.Supplier<environments.OumlaSdkApiEnvironment | string>;\n /** Specify a custom URL to connect the client to. */\n baseUrl?: core.Supplier<string>;\n token?: core.Supplier<core.BearerToken | undefined>;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey: core.Supplier<string>;\n /** Additional headers to include in requests. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n\n export interface RequestOptions {\n /** The maximum time to wait for a response in seconds. */\n timeoutInSeconds?: number;\n /** The number of times to retry the request. Defaults to 2. */\n maxRetries?: number;\n /** A hook to abort the request. */\n abortSignal?: AbortSignal;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey?: string;\n /** Additional query string parameters to include in the request. */\n queryParams?: Record<string, unknown>;\n /** Additional headers to include in the request. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n}\n\n/**\n * Address generation and management\n */\nexport class Addresses {\n protected readonly _options: Addresses.Options;\n\n constructor(_options: Addresses.Options) {\n this._options = _options;\n }\n\n /**\n * Retrieve addresses for the organization\n *\n * @param {OumlaSdkApi.GetOrganizationAddressesRequest} request\n * @param {Addresses.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.addresses.getOrganizationAddresses({\n * skip: 1,\n * take: 1\n * })\n */\n public getOrganizationAddresses(\n request: OumlaSdkApi.GetOrganizationAddressesRequest = {},\n requestOptions?: Addresses.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.PaginatedResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getOrganizationAddresses(request, requestOptions));\n }\n\n private async __getOrganizationAddresses(\n request: OumlaSdkApi.GetOrganizationAddressesRequest = {},\n requestOptions?: Addresses.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.PaginatedResponse>> {\n const { skip, take } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (skip != null) {\n _queryParams[\"skip\"] = skip.toString();\n }\n\n if (take != null) {\n _queryParams[\"take\"] = take.toString();\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/addresses/organization\",\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.PaginatedResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/addresses/organization.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Retrieve addresses for a specific profile\n *\n * @param {string} reference - Profile reference\n * @param {OumlaSdkApi.GetProfileAddressesRequest} request\n * @param {Addresses.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.addresses.getProfileAddresses(\"reference\", {\n * skip: 1,\n * take: 1\n * })\n */\n public getProfileAddresses(\n reference: string,\n request: OumlaSdkApi.GetProfileAddressesRequest = {},\n requestOptions?: Addresses.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.PaginatedResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getProfileAddresses(reference, request, requestOptions));\n }\n\n private async __getProfileAddresses(\n reference: string,\n request: OumlaSdkApi.GetProfileAddressesRequest = {},\n requestOptions?: Addresses.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.PaginatedResponse>> {\n const { skip, take } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (skip != null) {\n _queryParams[\"skip\"] = skip.toString();\n }\n\n if (take != null) {\n _queryParams[\"take\"] = take.toString();\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/addresses/${encodeURIComponent(reference)}`,\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.PaginatedResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/addresses/{reference}.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Generate a new address for a profile\n *\n * @param {OumlaSdkApi.CreateAddressRequest} request\n * @param {Addresses.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.addresses.generateAddressV1({\n * reference: \"reference\",\n * network: \"BTC\",\n * clientShare: \"clientShare\"\n * })\n */\n public generateAddressV1(\n request: OumlaSdkApi.CreateAddressRequest,\n requestOptions?: Addresses.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__generateAddressV1(request, requestOptions));\n }\n\n private async __generateAddressV1(\n request: OumlaSdkApi.CreateAddressRequest,\n requestOptions?: Addresses.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/addresses/generate\",\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryParameters: requestOptions?.queryParams,\n requestType: \"json\",\n body: request,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling POST /api/v1/addresses/generate.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Generate a new address for a profile\n *\n * @param {OumlaSdkApi.CreateAddressRequest} request\n * @param {Addresses.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.addresses.generateAddressV2({\n * reference: \"reference\",\n * network: \"BTC\",\n * clientShare: \"clientShare\"\n * })\n */\n public generateAddressV2(\n request: OumlaSdkApi.CreateAddressRequest,\n requestOptions?: Addresses.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__generateAddressV2(request, requestOptions));\n }\n\n private async __generateAddressV2(\n request: OumlaSdkApi.CreateAddressRequest,\n requestOptions?: Addresses.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v2/addresses/generate\",\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryParameters: requestOptions?.queryParams,\n requestType: \"json\",\n body: request,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling POST /api/v2/addresses/generate.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n protected async _getAuthorizationHeader(): Promise<string | undefined> {\n const bearer = await core.Supplier.get(this._options.token);\n if (bearer != null) {\n return `Bearer ${bearer}`;\n }\n\n return undefined;\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport * as environments from \"../../../../environments.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as OumlaSdkApi from \"../../../index.js\";\nimport { mergeHeaders, mergeOnlyDefinedHeaders } from \"../../../../core/headers.js\";\nimport * as errors from \"../../../../errors/index.js\";\n\nexport declare namespace Transactions {\n export interface Options {\n environment?: core.Supplier<environments.OumlaSdkApiEnvironment | string>;\n /** Specify a custom URL to connect the client to. */\n baseUrl?: core.Supplier<string>;\n token?: core.Supplier<core.BearerToken | undefined>;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey: core.Supplier<string>;\n /** Additional headers to include in requests. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n\n export interface RequestOptions {\n /** The maximum time to wait for a response in seconds. */\n timeoutInSeconds?: number;\n /** The number of times to retry the request. Defaults to 2. */\n maxRetries?: number;\n /** A hook to abort the request. */\n abortSignal?: AbortSignal;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey?: string;\n /** Additional query string parameters to include in the request. */\n queryParams?: Record<string, unknown>;\n /** Additional headers to include in the request. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n}\n\n/**\n * Transaction history and tracking\n */\nexport class Transactions {\n protected readonly _options: Transactions.Options;\n\n constructor(_options: Transactions.Options) {\n this._options = _options;\n }\n\n /**\n * Retrieve transactions for a specific address\n *\n * @param {string} address - Blockchain address\n * @param {OumlaSdkApi.GetTransactionsByAddressRequest} request\n * @param {Transactions.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.transactions.getTransactionsByAddress(\"address\", {\n * skip: 1,\n * take: 1\n * })\n */\n public getTransactionsByAddress(\n address: string,\n request: OumlaSdkApi.GetTransactionsByAddressRequest = {},\n requestOptions?: Transactions.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.PaginatedResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getTransactionsByAddress(address, request, requestOptions));\n }\n\n private async __getTransactionsByAddress(\n address: string,\n request: OumlaSdkApi.GetTransactionsByAddressRequest = {},\n requestOptions?: Transactions.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.PaginatedResponse>> {\n const { skip, take } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (skip != null) {\n _queryParams[\"skip\"] = skip.toString();\n }\n\n if (take != null) {\n _queryParams[\"take\"] = take.toString();\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/transactions/address/${encodeURIComponent(address)}`,\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.PaginatedResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/transactions/address/{address}.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Retrieve transactions for a specific wallet\n *\n * @param {string} miniWalletId - Mini wallet ID\n * @param {OumlaSdkApi.GetTransactionsByWalletRequest} request\n * @param {Transactions.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.transactions.getTransactionsByWallet(\"miniWalletId\", {\n * skip: 1,\n * take: 1\n * })\n */\n public getTransactionsByWallet(\n miniWalletId: string,\n request: OumlaSdkApi.GetTransactionsByWalletRequest = {},\n requestOptions?: Transactions.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.PaginatedResponse> {\n return core.HttpResponsePromise.fromPromise(\n this.__getTransactionsByWallet(miniWalletId, request, requestOptions),\n );\n }\n\n private async __getTransactionsByWallet(\n miniWalletId: string,\n request: OumlaSdkApi.GetTransactionsByWalletRequest = {},\n requestOptions?: Transactions.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.PaginatedResponse>> {\n const { skip, take } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (skip != null) {\n _queryParams[\"skip\"] = skip.toString();\n }\n\n if (take != null) {\n _queryParams[\"take\"] = take.toString();\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/transactions/wallet/${encodeURIComponent(miniWalletId)}`,\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.PaginatedResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/transactions/wallet/{miniWalletId}.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Retrieve transactions for the organization\n *\n * @param {OumlaSdkApi.GetOrganizationTransactionsRequest} request\n * @param {Transactions.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.transactions.getOrganizationTransactions({\n * skip: 1,\n * take: 1\n * })\n */\n public getOrganizationTransactions(\n request: OumlaSdkApi.GetOrganizationTransactionsRequest = {},\n requestOptions?: Transactions.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.PaginatedResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getOrganizationTransactions(request, requestOptions));\n }\n\n private async __getOrganizationTransactions(\n request: OumlaSdkApi.GetOrganizationTransactionsRequest = {},\n requestOptions?: Transactions.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.PaginatedResponse>> {\n const { skip, take } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (skip != null) {\n _queryParams[\"skip\"] = skip.toString();\n }\n\n if (take != null) {\n _queryParams[\"take\"] = take.toString();\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/transactions/organization\",\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.PaginatedResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/transactions/organization.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Retrieve transactions for a specific profile\n *\n * @param {string} reference - Profile reference\n * @param {OumlaSdkApi.GetProfileTransactionsRequest} request\n * @param {Transactions.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.transactions.getProfileTransactions(\"reference\", {\n * skip: 1,\n * take: 1\n * })\n */\n public getProfileTransactions(\n reference: string,\n request: OumlaSdkApi.GetProfileTransactionsRequest = {},\n requestOptions?: Transactions.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.PaginatedResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getProfileTransactions(reference, request, requestOptions));\n }\n\n private async __getProfileTransactions(\n reference: string,\n request: OumlaSdkApi.GetProfileTransactionsRequest = {},\n requestOptions?: Transactions.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.PaginatedResponse>> {\n const { skip, take } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (skip != null) {\n _queryParams[\"skip\"] = skip.toString();\n }\n\n if (take != null) {\n _queryParams[\"take\"] = take.toString();\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/transactions/profile/${encodeURIComponent(reference)}`,\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.PaginatedResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/transactions/profile/{reference}.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n protected async _getAuthorizationHeader(): Promise<string | undefined> {\n const bearer = await core.Supplier.get(this._options.token);\n if (bearer != null) {\n return `Bearer ${bearer}`;\n }\n\n return undefined;\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport * as environments from \"../../../../environments.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as OumlaSdkApi from \"../../../index.js\";\nimport { mergeHeaders, mergeOnlyDefinedHeaders } from \"../../../../core/headers.js\";\nimport * as errors from \"../../../../errors/index.js\";\n\nexport declare namespace Withdrawals {\n export interface Options {\n environment?: core.Supplier<environments.OumlaSdkApiEnvironment | string>;\n /** Specify a custom URL to connect the client to. */\n baseUrl?: core.Supplier<string>;\n token?: core.Supplier<core.BearerToken | undefined>;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey: core.Supplier<string>;\n /** Additional headers to include in requests. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n\n export interface RequestOptions {\n /** The maximum time to wait for a response in seconds. */\n timeoutInSeconds?: number;\n /** The number of times to retry the request. Defaults to 2. */\n maxRetries?: number;\n /** A hook to abort the request. */\n abortSignal?: AbortSignal;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey?: string;\n /** Additional query string parameters to include in the request. */\n queryParams?: Record<string, unknown>;\n /** Additional headers to include in the request. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n}\n\n/**\n * Withdrawal operations\n */\nexport class Withdrawals {\n protected readonly _options: Withdrawals.Options;\n\n constructor(_options: Withdrawals.Options) {\n this._options = _options;\n }\n\n /**\n * Create a new withdrawal request\n *\n * @param {OumlaSdkApi.CreateWithdrawalRequest} request\n * @param {Withdrawals.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.withdrawals.createWithdrawal({\n * to: \"to\",\n * amount: \"amount\",\n * from: [\"from\"],\n * network: \"BTC\",\n * clientShare: \"clientShare\"\n * })\n */\n public createWithdrawal(\n request: OumlaSdkApi.CreateWithdrawalRequest,\n requestOptions?: Withdrawals.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__createWithdrawal(request, requestOptions));\n }\n\n private async __createWithdrawal(\n request: OumlaSdkApi.CreateWithdrawalRequest,\n requestOptions?: Withdrawals.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/withdraw\",\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryParameters: requestOptions?.queryParams,\n requestType: \"json\",\n body: request,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\"Timeout exceeded when calling POST /api/v1/withdraw.\");\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n protected async _getAuthorizationHeader(): Promise<string | undefined> {\n const bearer = await core.Supplier.get(this._options.token);\n if (bearer != null) {\n return `Bearer ${bearer}`;\n }\n\n return undefined;\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport * as environments from \"../../../../environments.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as OumlaSdkApi from \"../../../index.js\";\nimport { mergeHeaders, mergeOnlyDefinedHeaders } from \"../../../../core/headers.js\";\nimport * as errors from \"../../../../errors/index.js\";\n\nexport declare namespace ContractTemplates {\n export interface Options {\n environment?: core.Supplier<environments.OumlaSdkApiEnvironment | string>;\n /** Specify a custom URL to connect the client to. */\n baseUrl?: core.Supplier<string>;\n token?: core.Supplier<core.BearerToken | undefined>;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey: core.Supplier<string>;\n /** Additional headers to include in requests. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n\n export interface RequestOptions {\n /** The maximum time to wait for a response in seconds. */\n timeoutInSeconds?: number;\n /** The number of times to retry the request. Defaults to 2. */\n maxRetries?: number;\n /** A hook to abort the request. */\n abortSignal?: AbortSignal;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey?: string;\n /** Additional query string parameters to include in the request. */\n queryParams?: Record<string, unknown>;\n /** Additional headers to include in the request. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n}\n\n/**\n * Smart contract template management\n */\nexport class ContractTemplates {\n protected readonly _options: ContractTemplates.Options;\n\n constructor(_options: ContractTemplates.Options) {\n this._options = _options;\n }\n\n /**\n * Retrieve a paginated list of contract templates\n *\n * @param {OumlaSdkApi.GetContractTemplatesRequest} request\n * @param {ContractTemplates.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.contractTemplates.getContractTemplates({\n * skip: 1,\n * take: 1\n * })\n */\n public getContractTemplates(\n request: OumlaSdkApi.GetContractTemplatesRequest = {},\n requestOptions?: ContractTemplates.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.PaginatedResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getContractTemplates(request, requestOptions));\n }\n\n private async __getContractTemplates(\n request: OumlaSdkApi.GetContractTemplatesRequest = {},\n requestOptions?: ContractTemplates.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.PaginatedResponse>> {\n const { skip, take } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (skip != null) {\n _queryParams[\"skip\"] = skip.toString();\n }\n\n if (take != null) {\n _queryParams[\"take\"] = take.toString();\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/contract-templates\",\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.PaginatedResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/contract-templates.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Create a new contract template\n *\n * @param {OumlaSdkApi.CreateContractTemplateRequest} request\n * @param {ContractTemplates.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.contractTemplates.createContractTemplate({\n * name: \"name\",\n * description: \"description\",\n * abi: [{\n * \"key\": \"value\"\n * }],\n * bytecode: \"bytecode\"\n * })\n */\n public createContractTemplate(\n request: OumlaSdkApi.CreateContractTemplateRequest,\n requestOptions?: ContractTemplates.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__createContractTemplate(request, requestOptions));\n }\n\n private async __createContractTemplate(\n request: OumlaSdkApi.CreateContractTemplateRequest,\n requestOptions?: ContractTemplates.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/contract-templates\",\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryParameters: requestOptions?.queryParams,\n requestType: \"json\",\n body: request,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling POST /api/v1/contract-templates.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Retrieve a specific contract template\n *\n * @param {string} templateId - Contract template ID\n * @param {ContractTemplates.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.contractTemplates.getContractTemplate(\"templateId\")\n */\n public getContractTemplate(\n templateId: string,\n requestOptions?: ContractTemplates.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getContractTemplate(templateId, requestOptions));\n }\n\n private async __getContractTemplate(\n templateId: string,\n requestOptions?: ContractTemplates.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/contract-templates/${encodeURIComponent(templateId)}`,\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: requestOptions?.queryParams,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/contract-templates/{templateId}.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Delete a contract template\n *\n * @param {string} templateId - Contract template ID\n * @param {ContractTemplates.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.contractTemplates.deleteContractTemplate(\"templateId\")\n */\n public deleteContractTemplate(\n templateId: string,\n requestOptions?: ContractTemplates.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__deleteContractTemplate(templateId, requestOptions));\n }\n\n private async __deleteContractTemplate(\n templateId: string,\n requestOptions?: ContractTemplates.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/contract-templates/${encodeURIComponent(templateId)}`,\n ),\n method: \"DELETE\",\n headers: _headers,\n queryParameters: requestOptions?.queryParams,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling DELETE /api/v1/contract-templates/{templateId}.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Retrieve constructor information for a contract template\n *\n * @param {string} templateId - Contract template ID\n * @param {ContractTemplates.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.contractTemplates.getContractConstructor(\"templateId\")\n */\n public getContractConstructor(\n templateId: string,\n requestOptions?: ContractTemplates.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getContractConstructor(templateId, requestOptions));\n }\n\n private async __getContractConstructor(\n templateId: string,\n requestOptions?: ContractTemplates.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/contract-templates/${encodeURIComponent(templateId)}/constructorInfo`,\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: requestOptions?.queryParams,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/contract-templates/{templateId}/constructorInfo.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Retrieve function information for a contract template\n *\n * @param {string} templateId - Contract template ID\n * @param {OumlaSdkApi.GetTemplateFunctionsRequest} request\n * @param {ContractTemplates.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.contractTemplates.getTemplateFunctions(\"templateId\", {\n * functionSignature: \"functionSignature\"\n * })\n */\n public getTemplateFunctions(\n templateId: string,\n request: OumlaSdkApi.GetTemplateFunctionsRequest = {},\n requestOptions?: ContractTemplates.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getTemplateFunctions(templateId, request, requestOptions));\n }\n\n private async __getTemplateFunctions(\n templateId: string,\n request: OumlaSdkApi.GetTemplateFunctionsRequest = {},\n requestOptions?: ContractTemplates.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n const { functionSignature } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (functionSignature != null) {\n _queryParams[\"functionSignature\"] = functionSignature;\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/contract-templates/${encodeURIComponent(templateId)}/function`,\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/contract-templates/{templateId}/function.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Deploy a contract from a template\n *\n * @param {string} templateId - Contract template ID\n * @param {OumlaSdkApi.DeployContractRequest} request\n * @param {ContractTemplates.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.contractTemplates.deployContract(\"templateId\", {\n * network: \"network\",\n * addressId: \"addressId\",\n * clientShare: \"clientShare\"\n * })\n */\n public deployContract(\n templateId: string,\n request: OumlaSdkApi.DeployContractRequest,\n requestOptions?: ContractTemplates.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__deployContract(templateId, request, requestOptions));\n }\n\n private async __deployContract(\n templateId: string,\n request: OumlaSdkApi.DeployContractRequest,\n requestOptions?: ContractTemplates.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/contract-templates/${encodeURIComponent(templateId)}/deploy`,\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryParameters: requestOptions?.queryParams,\n requestType: \"json\",\n body: request,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling POST /api/v1/contract-templates/{templateId}/deploy.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n protected async _getAuthorizationHeader(): Promise<string | undefined> {\n const bearer = await core.Supplier.get(this._options.token);\n if (bearer != null) {\n return `Bearer ${bearer}`;\n }\n\n return undefined;\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport * as environments from \"../../../../environments.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as OumlaSdkApi from \"../../../index.js\";\nimport { mergeHeaders, mergeOnlyDefinedHeaders } from \"../../../../core/headers.js\";\nimport * as errors from \"../../../../errors/index.js\";\n\nexport declare namespace DeployedContracts {\n export interface Options {\n environment?: core.Supplier<environments.OumlaSdkApiEnvironment | string>;\n /** Specify a custom URL to connect the client to. */\n baseUrl?: core.Supplier<string>;\n token?: core.Supplier<core.BearerToken | undefined>;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey: core.Supplier<string>;\n /** Additional headers to include in requests. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n\n export interface RequestOptions {\n /** The maximum time to wait for a response in seconds. */\n timeoutInSeconds?: number;\n /** The number of times to retry the request. Defaults to 2. */\n maxRetries?: number;\n /** A hook to abort the request. */\n abortSignal?: AbortSignal;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey?: string;\n /** Additional query string parameters to include in the request. */\n queryParams?: Record<string, unknown>;\n /** Additional headers to include in the request. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n}\n\n/**\n * Deployed contract management\n */\nexport class DeployedContracts {\n protected readonly _options: DeployedContracts.Options;\n\n constructor(_options: DeployedContracts.Options) {\n this._options = _options;\n }\n\n /**\n * Retrieve a paginated list of deployed contracts\n *\n * @param {OumlaSdkApi.GetDeployedContractsRequest} request\n * @param {DeployedContracts.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.deployedContracts.getDeployedContracts({\n * skip: 1,\n * take: 1,\n * contractAddress: \"contractAddress\",\n * network: \"BTC\",\n * contractTemplateId: \"contractTemplateId\"\n * })\n */\n public getDeployedContracts(\n request: OumlaSdkApi.GetDeployedContractsRequest = {},\n requestOptions?: DeployedContracts.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.PaginatedResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getDeployedContracts(request, requestOptions));\n }\n\n private async __getDeployedContracts(\n request: OumlaSdkApi.GetDeployedContractsRequest = {},\n requestOptions?: DeployedContracts.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.PaginatedResponse>> {\n const { skip, take, contractAddress, network, contractTemplateId } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (skip != null) {\n _queryParams[\"skip\"] = skip.toString();\n }\n\n if (take != null) {\n _queryParams[\"take\"] = take.toString();\n }\n\n if (contractAddress != null) {\n _queryParams[\"contractAddress\"] = contractAddress;\n }\n\n if (network != null) {\n _queryParams[\"network\"] = network;\n }\n\n if (contractTemplateId != null) {\n _queryParams[\"contractTemplateId\"] = contractTemplateId;\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/deployed-contracts\",\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.PaginatedResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/deployed-contracts.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Retrieve a specific deployed contract\n *\n * @param {string} contractId - Deployed contract ID\n * @param {DeployedContracts.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.deployedContracts.getDeployedContract(\"contractId\")\n */\n public getDeployedContract(\n contractId: string,\n requestOptions?: DeployedContracts.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getDeployedContract(contractId, requestOptions));\n }\n\n private async __getDeployedContract(\n contractId: string,\n requestOptions?: DeployedContracts.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/deployed-contracts/${encodeURIComponent(contractId)}`,\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: requestOptions?.queryParams,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/deployed-contracts/{contractId}.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Retrieve a deployed contract by network and address\n *\n * @param {string} network - Blockchain network\n * @param {string} contractAddress - Contract address\n * @param {DeployedContracts.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.deployedContracts.getDeployedContractByAddress(\"network\", \"contractAddress\")\n */\n public getDeployedContractByAddress(\n network: string,\n contractAddress: string,\n requestOptions?: DeployedContracts.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(\n this.__getDeployedContractByAddress(network, contractAddress, requestOptions),\n );\n }\n\n private async __getDeployedContractByAddress(\n network: string,\n contractAddress: string,\n requestOptions?: DeployedContracts.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/deployed-contracts/${encodeURIComponent(network)}/${encodeURIComponent(contractAddress)}`,\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: requestOptions?.queryParams,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/deployed-contracts/{network}/{contractAddress}.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Fetch ABI for a deployed contract\n *\n * @param {OumlaSdkApi.FetchContractAbiRequest} request\n * @param {DeployedContracts.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.deployedContracts.fetchContractAbi({\n * network: \"network\",\n * contractAddress: \"contractAddress\"\n * })\n */\n public fetchContractAbi(\n request: OumlaSdkApi.FetchContractAbiRequest,\n requestOptions?: DeployedContracts.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__fetchContractAbi(request, requestOptions));\n }\n\n private async __fetchContractAbi(\n request: OumlaSdkApi.FetchContractAbiRequest,\n requestOptions?: DeployedContracts.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/deployed-contracts/fetch-abi\",\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryParameters: requestOptions?.queryParams,\n requestType: \"json\",\n body: request,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling POST /api/v1/deployed-contracts/fetch-abi.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Add ABI for a deployed contract\n *\n * @param {OumlaSdkApi.AddContractAbiRequest} request\n * @param {DeployedContracts.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.deployedContracts.addContractAbi({\n * network: \"network\",\n * contractAddress: \"contractAddress\",\n * name: \"name\",\n * abi: [{\n * \"key\": \"value\"\n * }]\n * })\n */\n public addContractAbi(\n request: OumlaSdkApi.AddContractAbiRequest,\n requestOptions?: DeployedContracts.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__addContractAbi(request, requestOptions));\n }\n\n private async __addContractAbi(\n request: OumlaSdkApi.AddContractAbiRequest,\n requestOptions?: DeployedContracts.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/deployed-contracts/add-abi\",\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryParameters: requestOptions?.queryParams,\n requestType: \"json\",\n body: request,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling POST /api/v1/deployed-contracts/add-abi.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n protected async _getAuthorizationHeader(): Promise<string | undefined> {\n const bearer = await core.Supplier.get(this._options.token);\n if (bearer != null) {\n return `Bearer ${bearer}`;\n }\n\n return undefined;\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport * as environments from \"../../../../environments.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as OumlaSdkApi from \"../../../index.js\";\nimport { mergeHeaders, mergeOnlyDefinedHeaders } from \"../../../../core/headers.js\";\nimport * as errors from \"../../../../errors/index.js\";\n\nexport declare namespace ContractInteractions {\n export interface Options {\n environment?: core.Supplier<environments.OumlaSdkApiEnvironment | string>;\n /** Specify a custom URL to connect the client to. */\n baseUrl?: core.Supplier<string>;\n token?: core.Supplier<core.BearerToken | undefined>;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey: core.Supplier<string>;\n /** Additional headers to include in requests. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n\n export interface RequestOptions {\n /** The maximum time to wait for a response in seconds. */\n timeoutInSeconds?: number;\n /** The number of times to retry the request. Defaults to 2. */\n maxRetries?: number;\n /** A hook to abort the request. */\n abortSignal?: AbortSignal;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey?: string;\n /** Additional query string parameters to include in the request. */\n queryParams?: Record<string, unknown>;\n /** Additional headers to include in the request. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n}\n\n/**\n * Smart contract interaction operations\n */\nexport class ContractInteractions {\n protected readonly _options: ContractInteractions.Options;\n\n constructor(_options: ContractInteractions.Options) {\n this._options = _options;\n }\n\n /**\n * Retrieve available functions for a deployed contract\n *\n * @param {string} network - Blockchain network\n * @param {string} contractAddress - Contract address\n * @param {ContractInteractions.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.contractInteractions.getContractFunctions(\"network\", \"contractAddress\")\n */\n public getContractFunctions(\n network: string,\n contractAddress: string,\n requestOptions?: ContractInteractions.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(\n this.__getContractFunctions(network, contractAddress, requestOptions),\n );\n }\n\n private async __getContractFunctions(\n network: string,\n contractAddress: string,\n requestOptions?: ContractInteractions.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/contract-interactions/network/${encodeURIComponent(network)}/contract-address/${encodeURIComponent(contractAddress)}/functions`,\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: requestOptions?.queryParams,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/contract-interactions/network/{network}/contract-address/{contractAddress}/functions.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Call a read function on a deployed contract\n *\n * @param {string} network - Blockchain network\n * @param {string} contractAddress - Contract address\n * @param {OumlaSdkApi.ReadFunctionRequest} request\n * @param {ContractInteractions.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.contractInteractions.callReadFunction(\"network\", \"contractAddress\", {\n * abiFunction: {\n * name: \"name\",\n * inputs: [{}],\n * outputs: [{}],\n * type: \"type\"\n * }\n * })\n */\n public callReadFunction(\n network: string,\n contractAddress: string,\n request: OumlaSdkApi.ReadFunctionRequest,\n requestOptions?: ContractInteractions.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(\n this.__callReadFunction(network, contractAddress, request, requestOptions),\n );\n }\n\n private async __callReadFunction(\n network: string,\n contractAddress: string,\n request: OumlaSdkApi.ReadFunctionRequest,\n requestOptions?: ContractInteractions.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/contract-interactions/network/${encodeURIComponent(network)}/contract-address/${encodeURIComponent(contractAddress)}/functions/read`,\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryParameters: requestOptions?.queryParams,\n requestType: \"json\",\n body: request,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling POST /api/v1/contract-interactions/network/{network}/contract-address/{contractAddress}/functions/read.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Call a write function on a deployed contract\n *\n * @param {string} network - Blockchain network\n * @param {string} contractAddress - Contract address\n * @param {OumlaSdkApi.WriteFunctionRequest} request\n * @param {ContractInteractions.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.contractInteractions.callWriteFunction(\"network\", \"contractAddress\", {\n * addressId: \"addressId\",\n * clientShare: \"clientShare\",\n * abiFunction: {\n * name: \"name\",\n * inputs: [{}],\n * outputs: [{}],\n * type: \"type\"\n * }\n * })\n */\n public callWriteFunction(\n network: string,\n contractAddress: string,\n request: OumlaSdkApi.WriteFunctionRequest,\n requestOptions?: ContractInteractions.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(\n this.__callWriteFunction(network, contractAddress, request, requestOptions),\n );\n }\n\n private async __callWriteFunction(\n network: string,\n contractAddress: string,\n request: OumlaSdkApi.WriteFunctionRequest,\n requestOptions?: ContractInteractions.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/contract-interactions/network/${encodeURIComponent(network)}/contract-address/${encodeURIComponent(contractAddress)}/functions/write`,\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryParameters: requestOptions?.queryParams,\n requestType: \"json\",\n body: request,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling POST /api/v1/contract-interactions/network/{network}/contract-address/{contractAddress}/functions/write.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Retrieve transaction receipt for a specific transaction\n *\n * @param {string} network - Blockchain network\n * @param {string} txId - Transaction ID\n * @param {ContractInteractions.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.contractInteractions.getTransactionReceipt(\"network\", \"txId\")\n */\n public getTransactionReceipt(\n network: string,\n txId: string,\n requestOptions?: ContractInteractions.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getTransactionReceipt(network, txId, requestOptions));\n }\n\n private async __getTransactionReceipt(\n network: string,\n txId: string,\n requestOptions?: ContractInteractions.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/contract-interactions/network/${encodeURIComponent(network)}/tx/${encodeURIComponent(txId)}`,\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: requestOptions?.queryParams,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/contract-interactions/network/{network}/tx/{txId}.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n protected async _getAuthorizationHeader(): Promise<string | undefined> {\n const bearer = await core.Supplier.get(this._options.token);\n if (bearer != null) {\n return `Bearer ${bearer}`;\n }\n\n return undefined;\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport * as environments from \"../../../../environments.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as OumlaSdkApi from \"../../../index.js\";\nimport { mergeHeaders, mergeOnlyDefinedHeaders } from \"../../../../core/headers.js\";\nimport * as errors from \"../../../../errors/index.js\";\n\nexport declare namespace Tokenization {\n export interface Options {\n environment?: core.Supplier<environments.OumlaSdkApiEnvironment | string>;\n /** Specify a custom URL to connect the client to. */\n baseUrl?: core.Supplier<string>;\n token?: core.Supplier<core.BearerToken | undefined>;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey: core.Supplier<string>;\n /** Additional headers to include in requests. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n\n export interface RequestOptions {\n /** The maximum time to wait for a response in seconds. */\n timeoutInSeconds?: number;\n /** The number of times to retry the request. Defaults to 2. */\n maxRetries?: number;\n /** A hook to abort the request. */\n abortSignal?: AbortSignal;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey?: string;\n /** Additional query string parameters to include in the request. */\n queryParams?: Record<string, unknown>;\n /** Additional headers to include in the request. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n}\n\n/**\n * Token creation, minting, and management\n */\nexport class Tokenization {\n protected readonly _options: Tokenization.Options;\n\n constructor(_options: Tokenization.Options) {\n this._options = _options;\n }\n\n /**\n * Retrieve a paginated list of tokens\n *\n * @param {OumlaSdkApi.GetTokensRequest} request\n * @param {Tokenization.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.tokenization.getTokens({\n * skip: 1,\n * take: 1\n * })\n */\n public getTokens(\n request: OumlaSdkApi.GetTokensRequest = {},\n requestOptions?: Tokenization.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.PaginatedResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getTokens(request, requestOptions));\n }\n\n private async __getTokens(\n request: OumlaSdkApi.GetTokensRequest = {},\n requestOptions?: Tokenization.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.PaginatedResponse>> {\n const { skip, take } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (skip != null) {\n _queryParams[\"skip\"] = skip.toString();\n }\n\n if (take != null) {\n _queryParams[\"take\"] = take.toString();\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/tokenization/tokens\",\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.PaginatedResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/tokenization/tokens.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Issue a new token using a contract template\n *\n * @param {OumlaSdkApi.IssueNewTokenRequest} request\n * @param {Tokenization.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.tokenization.issueNewToken({\n * addressId: \"addressId\",\n * clientShare: \"clientShare\",\n * deploymentId: \"deploymentId\",\n * createParams: {\n * initializeParams: [{\n * name: \"name\",\n * type: \"type\",\n * value: \"value\"\n * }]\n * }\n * })\n */\n public issueNewToken(\n request: OumlaSdkApi.IssueNewTokenRequest,\n requestOptions?: Tokenization.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__issueNewToken(request, requestOptions));\n }\n\n private async __issueNewToken(\n request: OumlaSdkApi.IssueNewTokenRequest,\n requestOptions?: Tokenization.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/tokenization/tokens\",\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryParameters: requestOptions?.queryParams,\n requestType: \"json\",\n body: request,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling POST /api/v1/tokenization/tokens.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Link an existing contract to the platform\n *\n * @param {OumlaSdkApi.LinkContractRequest} request\n * @param {Tokenization.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.tokenization.linkContract({\n * contractAddress: \"contractAddress\"\n * })\n */\n public linkContract(\n request: OumlaSdkApi.LinkContractRequest,\n requestOptions?: Tokenization.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__linkContract(request, requestOptions));\n }\n\n private async __linkContract(\n request: OumlaSdkApi.LinkContractRequest,\n requestOptions?: Tokenization.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/tokenization/tokens/link\",\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryParameters: requestOptions?.queryParams,\n requestType: \"json\",\n body: request,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling POST /api/v1/tokenization/tokens/link.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Retrieve a paginated list of collections\n *\n * @param {OumlaSdkApi.GetCollectionsRequest} request\n * @param {Tokenization.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.tokenization.getCollections({\n * skip: 1,\n * take: 1\n * })\n */\n public getCollections(\n request: OumlaSdkApi.GetCollectionsRequest = {},\n requestOptions?: Tokenization.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.PaginatedResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getCollections(request, requestOptions));\n }\n\n private async __getCollections(\n request: OumlaSdkApi.GetCollectionsRequest = {},\n requestOptions?: Tokenization.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.PaginatedResponse>> {\n const { skip, take } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (skip != null) {\n _queryParams[\"skip\"] = skip.toString();\n }\n\n if (take != null) {\n _queryParams[\"take\"] = take.toString();\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/tokenization/collections\",\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.PaginatedResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/tokenization/collections.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Create a new token collection\n *\n * @param {OumlaSdkApi.CreateCollectionRequest} request\n * @param {Tokenization.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.tokenization.createCollection({\n * type: \"NON_FUNGIBLE_TOKEN\",\n * addressId: \"addressId\",\n * clientShare: \"clientShare\",\n * createParams: {\n * initializeParams: [{\n * name: \"name\",\n * type: \"type\",\n * value: \"value\"\n * }]\n * }\n * })\n */\n public createCollection(\n request: OumlaSdkApi.CreateCollectionRequest,\n requestOptions?: Tokenization.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__createCollection(request, requestOptions));\n }\n\n private async __createCollection(\n request: OumlaSdkApi.CreateCollectionRequest,\n requestOptions?: Tokenization.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/tokenization/collections\",\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryParameters: requestOptions?.queryParams,\n requestType: \"json\",\n body: request,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling POST /api/v1/tokenization/collections.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Retrieve a specific collection\n *\n * @param {string} id - Collection ID\n * @param {Tokenization.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.tokenization.getCollection(\"id\")\n */\n public getCollection(\n id: string,\n requestOptions?: Tokenization.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getCollection(id, requestOptions));\n }\n\n private async __getCollection(\n id: string,\n requestOptions?: Tokenization.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/tokenization/collections/${encodeURIComponent(id)}`,\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: requestOptions?.queryParams,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/tokenization/collections/{id}.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Delete a collection\n *\n * @param {string} id - Collection ID\n * @param {Tokenization.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.tokenization.deleteCollection(\"id\")\n */\n public deleteCollection(\n id: string,\n requestOptions?: Tokenization.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__deleteCollection(id, requestOptions));\n }\n\n private async __deleteCollection(\n id: string,\n requestOptions?: Tokenization.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/tokenization/collections/${encodeURIComponent(id)}`,\n ),\n method: \"DELETE\",\n headers: _headers,\n queryParameters: requestOptions?.queryParams,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling DELETE /api/v1/tokenization/collections/{id}.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Retrieve details for a specific token in a collection\n *\n * @param {string} id - Collection ID\n * @param {string} tokenId - Token ID\n * @param {Tokenization.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.tokenization.getCollectionTokenDetails(\"id\", \"tokenId\")\n */\n public getCollectionTokenDetails(\n id: string,\n tokenId: string,\n requestOptions?: Tokenization.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getCollectionTokenDetails(id, tokenId, requestOptions));\n }\n\n private async __getCollectionTokenDetails(\n id: string,\n tokenId: string,\n requestOptions?: Tokenization.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/tokenization/collections/${encodeURIComponent(id)}/tokens/${encodeURIComponent(tokenId)}`,\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: requestOptions?.queryParams,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/tokenization/collections/{id}/tokens/{tokenId}.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Mint a new token in a collection\n *\n * @param {string} id - Collection ID\n * @param {OumlaSdkApi.MintTokenRequest} request\n * @param {Tokenization.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.tokenization.mintToken(\"id\", {\n * addressId: \"addressId\",\n * clientShare: \"clientShare\",\n * to: \"to\",\n * tokenId: \"tokenId\"\n * })\n */\n public mintToken(\n id: string,\n request: OumlaSdkApi.MintTokenRequest,\n requestOptions?: Tokenization.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__mintToken(id, request, requestOptions));\n }\n\n private async __mintToken(\n id: string,\n request: OumlaSdkApi.MintTokenRequest,\n requestOptions?: Tokenization.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/tokenization/collections/${encodeURIComponent(id)}/tokens/mint`,\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryParameters: requestOptions?.queryParams,\n requestType: \"json\",\n body: request,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling POST /api/v1/tokenization/collections/{id}/tokens/mint.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Burn a token\n *\n * @param {string} id - Collection ID\n * @param {OumlaSdkApi.BurnTokenRequest} request\n * @param {Tokenization.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.tokenization.burnToken(\"id\", {\n * addressId: \"addressId\",\n * clientShare: \"clientShare\",\n * tokenId: \"tokenId\"\n * })\n */\n public burnToken(\n id: string,\n request: OumlaSdkApi.BurnTokenRequest,\n requestOptions?: Tokenization.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__burnToken(id, request, requestOptions));\n }\n\n private async __burnToken(\n id: string,\n request: OumlaSdkApi.BurnTokenRequest,\n requestOptions?: Tokenization.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/tokenization/collections/${encodeURIComponent(id)}/tokens/burn`,\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryParameters: requestOptions?.queryParams,\n requestType: \"json\",\n body: request,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling POST /api/v1/tokenization/collections/{id}/tokens/burn.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Retrieve collection tokens (mints or burns) filtered by collection ID and type\n *\n * @param {OumlaSdkApi.GetCollectionTokensRequest} request\n * @param {Tokenization.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link OumlaSdkApi.NotFoundError}\n *\n * @example\n * await client.tokenization.getCollectionTokens({\n * id: \"id\",\n * type: \"MINT\",\n * skip: 1,\n * take: 1\n * })\n */\n public getCollectionTokens(\n request: OumlaSdkApi.GetCollectionTokensRequest = {},\n requestOptions?: Tokenization.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getCollectionTokens(request, requestOptions));\n }\n\n private async __getCollectionTokens(\n request: OumlaSdkApi.GetCollectionTokensRequest = {},\n requestOptions?: Tokenization.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n const { id, type: type_, skip, take } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (id != null) {\n _queryParams[\"id\"] = id;\n }\n\n if (type_ != null) {\n _queryParams[\"type\"] = type_;\n }\n\n if (skip != null) {\n _queryParams[\"skip\"] = skip.toString();\n }\n\n if (take != null) {\n _queryParams[\"take\"] = take.toString();\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/tokenization/collection/tokens\",\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 404:\n throw new OumlaSdkApi.NotFoundError(\n _response.error.body as OumlaSdkApi.ErrorResponse,\n _response.rawResponse,\n );\n default:\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/tokenization/collection/tokens.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n /**\n * Unlink a token from the platform\n *\n * @param {string} id - Token ID\n * @param {Tokenization.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.tokenization.unlinkToken(\"id\")\n */\n public unlinkToken(\n id: string,\n requestOptions?: Tokenization.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__unlinkToken(id, requestOptions));\n }\n\n private async __unlinkToken(\n id: string,\n requestOptions?: Tokenization.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/tokenization/tokens/${encodeURIComponent(id)}`,\n ),\n method: \"DELETE\",\n headers: _headers,\n queryParameters: requestOptions?.queryParams,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling DELETE /api/v1/tokenization/tokens/{id}.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n protected async _getAuthorizationHeader(): Promise<string | undefined> {\n const bearer = await core.Supplier.get(this._options.token);\n if (bearer != null) {\n return `Bearer ${bearer}`;\n }\n\n return undefined;\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport * as environments from \"../../../../environments.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as OumlaSdkApi from \"../../../index.js\";\nimport { mergeHeaders, mergeOnlyDefinedHeaders } from \"../../../../core/headers.js\";\nimport * as errors from \"../../../../errors/index.js\";\n\nexport declare namespace Temporal {\n export interface Options {\n environment?: core.Supplier<environments.OumlaSdkApiEnvironment | string>;\n /** Specify a custom URL to connect the client to. */\n baseUrl?: core.Supplier<string>;\n token?: core.Supplier<core.BearerToken | undefined>;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey: core.Supplier<string>;\n /** Additional headers to include in requests. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n\n export interface RequestOptions {\n /** The maximum time to wait for a response in seconds. */\n timeoutInSeconds?: number;\n /** The number of times to retry the request. Defaults to 2. */\n maxRetries?: number;\n /** A hook to abort the request. */\n abortSignal?: AbortSignal;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey?: string;\n /** Additional query string parameters to include in the request. */\n queryParams?: Record<string, unknown>;\n /** Additional headers to include in the request. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n}\n\n/**\n * Temporal workflow operations\n */\nexport class Temporal {\n protected readonly _options: Temporal.Options;\n\n constructor(_options: Temporal.Options) {\n this._options = _options;\n }\n\n /**\n * Get workflow status and result\n *\n * @param {string} workflowId - Temporal workflow ID\n * @param {Temporal.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link OumlaSdkApi.NotFoundError}\n *\n * @example\n * await client.temporal.getTemporalWorkflowStatus(\"workflowId\")\n */\n public getTemporalWorkflowStatus(\n workflowId: string,\n requestOptions?: Temporal.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getTemporalWorkflowStatus(workflowId, requestOptions));\n }\n\n private async __getTemporalWorkflowStatus(\n workflowId: string,\n requestOptions?: Temporal.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n `api/v1/temporal/workflows/${encodeURIComponent(workflowId)}/status`,\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: requestOptions?.queryParams,\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 404:\n throw new OumlaSdkApi.NotFoundError(\n _response.error.body as OumlaSdkApi.ErrorResponse,\n _response.rawResponse,\n );\n default:\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\n \"Timeout exceeded when calling GET /api/v1/temporal/workflows/{workflowId}/status.\",\n );\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n protected async _getAuthorizationHeader(): Promise<string | undefined> {\n const bearer = await core.Supplier.get(this._options.token);\n if (bearer != null) {\n return `Bearer ${bearer}`;\n }\n\n return undefined;\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport * as environments from \"../../../../environments.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as OumlaSdkApi from \"../../../index.js\";\nimport { mergeHeaders, mergeOnlyDefinedHeaders } from \"../../../../core/headers.js\";\nimport * as errors from \"../../../../errors/index.js\";\n\nexport declare namespace Assets {\n export interface Options {\n environment?: core.Supplier<environments.OumlaSdkApiEnvironment | string>;\n /** Specify a custom URL to connect the client to. */\n baseUrl?: core.Supplier<string>;\n token?: core.Supplier<core.BearerToken | undefined>;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey: core.Supplier<string>;\n /** Additional headers to include in requests. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n\n export interface RequestOptions {\n /** The maximum time to wait for a response in seconds. */\n timeoutInSeconds?: number;\n /** The number of times to retry the request. Defaults to 2. */\n maxRetries?: number;\n /** A hook to abort the request. */\n abortSignal?: AbortSignal;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey?: string;\n /** Additional query string parameters to include in the request. */\n queryParams?: Record<string, unknown>;\n /** Additional headers to include in the request. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n}\n\n/**\n * Asset management and tracking\n */\nexport class Assets {\n protected readonly _options: Assets.Options;\n\n constructor(_options: Assets.Options) {\n this._options = _options;\n }\n\n /**\n * Retrieve assets for the organization filtered by address, wallet ID, contract address, or tokenization ID\n *\n * @param {OumlaSdkApi.GetAssetsRequest} request\n * @param {Assets.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link OumlaSdkApi.NotFoundError}\n *\n * @example\n * await client.assets.getAssets({\n * address: \"address\",\n * walletId: \"walletId\",\n * contractAddress: \"contractAddress\",\n * tokenizationId: \"tokenizationId\",\n * skip: 1,\n * take: 1\n * })\n */\n public getAssets(\n request: OumlaSdkApi.GetAssetsRequest = {},\n requestOptions?: Assets.RequestOptions,\n ): core.HttpResponsePromise<OumlaSdkApi.SuccessResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getAssets(request, requestOptions));\n }\n\n private async __getAssets(\n request: OumlaSdkApi.GetAssetsRequest = {},\n requestOptions?: Assets.RequestOptions,\n ): Promise<core.WithRawResponse<OumlaSdkApi.SuccessResponse>> {\n const { address, walletId, contractAddress, tokenizationId, skip, take } = request;\n const _queryParams: Record<string, string | string[] | object | object[] | null> = {};\n if (address != null) {\n _queryParams[\"address\"] = address;\n }\n\n if (walletId != null) {\n _queryParams[\"walletId\"] = walletId;\n }\n\n if (contractAddress != null) {\n _queryParams[\"contractAddress\"] = contractAddress;\n }\n\n if (tokenizationId != null) {\n _queryParams[\"tokenizationId\"] = tokenizationId;\n }\n\n if (skip != null) {\n _queryParams[\"skip\"] = skip.toString();\n }\n\n if (take != null) {\n _queryParams[\"take\"] = take.toString();\n }\n\n let _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n mergeOnlyDefinedHeaders({\n Authorization: await this._getAuthorizationHeader(),\n \"x-sdk-version\": requestOptions?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": requestOptions?.apiKey ?? this._options?.apiKey,\n }),\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.OumlaSdkApiEnvironment.Production,\n \"api/v1/assets\",\n ),\n method: \"GET\",\n headers: _headers,\n queryParameters: { ..._queryParams, ...requestOptions?.queryParams },\n timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000,\n maxRetries: requestOptions?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n });\n if (_response.ok) {\n return { data: _response.body as OumlaSdkApi.SuccessResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 404:\n throw new OumlaSdkApi.NotFoundError(\n _response.error.body as OumlaSdkApi.ErrorResponse,\n _response.rawResponse,\n );\n default:\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n switch (_response.error.reason) {\n case \"non-json\":\n throw new errors.OumlaSdkApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.rawBody,\n rawResponse: _response.rawResponse,\n });\n case \"timeout\":\n throw new errors.OumlaSdkApiTimeoutError(\"Timeout exceeded when calling GET /api/v1/assets.\");\n case \"unknown\":\n throw new errors.OumlaSdkApiError({\n message: _response.error.errorMessage,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n protected async _getAuthorizationHeader(): Promise<string | undefined> {\n const bearer = await core.Supplier.get(this._options.token);\n if (bearer != null) {\n return `Bearer ${bearer}`;\n }\n\n return undefined;\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport * as environments from \"./environments.js\";\nimport * as core from \"./core/index.js\";\nimport { mergeHeaders } from \"./core/headers.js\";\nimport { Profiles } from \"./api/resources/profiles/client/Client.js\";\nimport { Wallets } from \"./api/resources/wallets/client/Client.js\";\nimport { Addresses } from \"./api/resources/addresses/client/Client.js\";\nimport { Transactions } from \"./api/resources/transactions/client/Client.js\";\nimport { Withdrawals } from \"./api/resources/withdrawals/client/Client.js\";\nimport { ContractTemplates } from \"./api/resources/contractTemplates/client/Client.js\";\nimport { DeployedContracts } from \"./api/resources/deployedContracts/client/Client.js\";\nimport { ContractInteractions } from \"./api/resources/contractInteractions/client/Client.js\";\nimport { Tokenization } from \"./api/resources/tokenization/client/Client.js\";\nimport { Temporal } from \"./api/resources/temporal/client/Client.js\";\nimport { Assets } from \"./api/resources/assets/client/Client.js\";\n\nexport declare namespace OumlaSdkApiClient {\n export interface Options {\n environment?: core.Supplier<environments.OumlaSdkApiEnvironment | string>;\n /** Specify a custom URL to connect the client to. */\n baseUrl?: core.Supplier<string>;\n token?: core.Supplier<core.BearerToken | undefined>;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey: core.Supplier<string>;\n /** Additional headers to include in requests. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n\n export interface RequestOptions {\n /** The maximum time to wait for a response in seconds. */\n timeoutInSeconds?: number;\n /** The number of times to retry the request. Defaults to 2. */\n maxRetries?: number;\n /** A hook to abort the request. */\n abortSignal?: AbortSignal;\n /** Override the x-sdk-version header */\n sdkVersion?: \"1.0.0\";\n /** Override the x-api-key header */\n apiKey?: string;\n /** Additional query string parameters to include in the request. */\n queryParams?: Record<string, unknown>;\n /** Additional headers to include in the request. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n }\n}\n\nexport class OumlaSdkApiClient {\n protected readonly _options: OumlaSdkApiClient.Options;\n protected _profiles: Profiles | undefined;\n protected _wallets: Wallets | undefined;\n protected _addresses: Addresses | undefined;\n protected _transactions: Transactions | undefined;\n protected _withdrawals: Withdrawals | undefined;\n protected _contractTemplates: ContractTemplates | undefined;\n protected _deployedContracts: DeployedContracts | undefined;\n protected _contractInteractions: ContractInteractions | undefined;\n protected _tokenization: Tokenization | undefined;\n protected _temporal: Temporal | undefined;\n protected _assets: Assets | undefined;\n\n constructor(_options: OumlaSdkApiClient.Options) {\n this._options = {\n ..._options,\n headers: mergeHeaders(\n {\n \"x-sdk-version\": _options?.sdkVersion ?? \"1.0.0\",\n \"x-api-key\": _options?.apiKey,\n \"X-Fern-Language\": \"JavaScript\",\n \"X-Fern-Runtime\": core.RUNTIME.type,\n \"X-Fern-Runtime-Version\": core.RUNTIME.version,\n },\n _options?.headers,\n ),\n };\n }\n\n public get profiles(): Profiles {\n return (this._profiles ??= new Profiles(this._options));\n }\n\n public get wallets(): Wallets {\n return (this._wallets ??= new Wallets(this._options));\n }\n\n public get addresses(): Addresses {\n return (this._addresses ??= new Addresses(this._options));\n }\n\n public get transactions(): Transactions {\n return (this._transactions ??= new Transactions(this._options));\n }\n\n public get withdrawals(): Withdrawals {\n return (this._withdrawals ??= new Withdrawals(this._options));\n }\n\n public get contractTemplates(): ContractTemplates {\n return (this._contractTemplates ??= new ContractTemplates(this._options));\n }\n\n public get deployedContracts(): DeployedContracts {\n return (this._deployedContracts ??= new DeployedContracts(this._options));\n }\n\n public get contractInteractions(): ContractInteractions {\n return (this._contractInteractions ??= new ContractInteractions(this._options));\n }\n\n public get tokenization(): Tokenization {\n return (this._tokenization ??= new Tokenization(this._options));\n }\n\n public get temporal(): Temporal {\n return (this._temporal ??= new Temporal(this._options));\n }\n\n public get assets(): Assets {\n return (this._assets ??= new Assets(this._options));\n }\n}\n"]}