@chainstream-io/sdk 0.1.25 → 0.2.1
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/chainstream-BYuhgvxX.d.cts +5539 -0
- package/dist/chainstream-BYuhgvxX.d.ts +5539 -0
- package/dist/chainstream.cjs +2263 -0
- package/dist/chainstream.cjs.map +1 -0
- package/dist/chainstream.d.cts +2 -0
- package/dist/chainstream.d.ts +2 -0
- package/dist/chainstream.mjs +2234 -0
- package/dist/chainstream.mjs.map +1 -0
- package/dist/index.cjs +2655 -7281
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.mjs +2490 -7282
- package/dist/index.mjs.map +1 -1
- package/dist/stream/index.cjs +777 -1112
- package/dist/stream/index.cjs.map +1 -1
- package/dist/stream/index.d.cts +2 -2
- package/dist/stream/index.d.ts +2 -2
- package/dist/stream/index.mjs +772 -1107
- package/dist/stream/index.mjs.map +1 -1
- package/package.json +64 -9
- package/README.md +0 -46
- package/dist/WatchlistApi-BG3KoB75.d.cts +0 -9327
- package/dist/WatchlistApi-BG3KoB75.d.ts +0 -9327
- package/dist/index-C0qP5IcI.d.ts +0 -540
- package/dist/index-DLgQWpoA.d.cts +0 -540
- package/dist/openapi/index.cjs +0 -10452
- package/dist/openapi/index.cjs.map +0 -1
- package/dist/openapi/index.d.cts +0 -135
- package/dist/openapi/index.d.ts +0 -135
- package/dist/openapi/index.mjs +0 -9870
- package/dist/openapi/index.mjs.map +0 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/stream/stream.ts","../src/stream/stream.fields.ts","../src/openapi/runtime.ts","../src/openapi/models/AddressExposure.ts","../src/openapi/models/AddressRiskResponseDTO.ts","../src/openapi/models/AlertDetail.ts","../src/openapi/models/OnChainActivity.ts","../src/openapi/models/AlteryaIdentification.ts","../src/openapi/models/BlockchainDTO.ts","../src/openapi/models/BlockchainLatestBlockDTO.ts","../src/openapi/models/BooleanResultDTO.ts","../src/openapi/models/CalculatePnlInput.ts","../src/openapi/models/Resolution.ts","../src/openapi/models/Candle.ts","../src/openapi/models/Chain.ts","../src/openapi/models/ChainalysisAddressIdentification.ts","../src/openapi/models/ClaimRedPacketInput.ts","../src/openapi/models/CreateEndpointInput.ts","../src/openapi/models/CreateRedPacketInput.ts","../src/openapi/models/CreateRedPacketReply.ts","../src/openapi/models/CreateTokenInput.ts","../src/openapi/models/CreateTokenReply.ts","../src/openapi/models/TokenMarketData.ts","../src/openapi/models/TokenExtraDTO.ts","../src/openapi/models/TokenCreatorsDTO.ts","../src/openapi/models/TokenSocialMediasDTO.ts","../src/openapi/models/TokenMetadata.ts","../src/openapi/models/TokenStat.ts","../src/openapi/models/DevTokenDTO.ts","../src/openapi/models/DexDTO.ts","../src/openapi/models/DexPage.ts","../src/openapi/models/DexPoolDTO.ts","../src/openapi/models/DirectExposureDetail.ts","../src/openapi/models/EndpointResponse.ts","../src/openapi/models/EndpointListResponse.ts","../src/openapi/models/EndpointOperationResponse.ts","../src/openapi/models/EndpointSecretResponse.ts","../src/openapi/models/EstimateGasLimitInput.ts","../src/openapi/models/EstimateGasLimitResponse.ts","../src/openapi/models/GasPriceResponse.ts","../src/openapi/models/JobDTO.ts","../src/openapi/models/JobStreamingDTO.ts","../src/openapi/models/KYTRegisterTransferRequest.ts","../src/openapi/models/KYTRegisterWithdrawalRequest.ts","../src/openapi/models/Link.ts","../src/openapi/models/MoonshotCreateTokenInput.ts","../src/openapi/models/MoonshotCreateTokenReply.ts","../src/openapi/models/MoonshotSubmitCreateToken200Response.ts","../src/openapi/models/MoonshotSubmitCreateTokenInput.ts","../src/openapi/models/NetworkIdentificationOrg.ts","../src/openapi/models/PumpCreateTokenInput.ts","../src/openapi/models/PumpCreateTokenReply.ts","../src/openapi/models/QuoteResponse.ts","../src/openapi/models/RedPacketClaimDTO.ts","../src/openapi/models/RedPacketClaimsPage.ts","../src/openapi/models/RedPacketDTO.ts","../src/openapi/models/RedPacketReply.ts","../src/openapi/models/RedPacketSendTxInput.ts","../src/openapi/models/RedPacketSendTxResponse.ts","../src/openapi/models/RedPacketsPage.ts","../src/openapi/models/RegisterAddressRequest.ts","../src/openapi/models/RegisterAddressResponseDTO.ts","../src/openapi/models/SendTxInput.ts","../src/openapi/models/SendTxResponse.ts","../src/openapi/models/SwapInput.ts","../src/openapi/models/SwapReply.ts","../src/openapi/models/SwapRouteInput.ts","../src/openapi/models/SwapRouteResponse.ts","../src/openapi/models/Token.ts","../src/openapi/models/TokenCreationDTO.ts","../src/openapi/models/TokenCreationPage.ts","../src/openapi/models/TokenHolder.ts","../src/openapi/models/TokenHolderPage.ts","../src/openapi/models/TokenListPage.ts","../src/openapi/models/TokenPage.ts","../src/openapi/models/TokenPriceDTO.ts","../src/openapi/models/TokenPricePage.ts","../src/openapi/models/TokenTrader.ts","../src/openapi/models/TradeDetailDTO.ts","../src/openapi/models/TradePage.ts","../src/openapi/models/TransferAlertsResponseDTO.ts","../src/openapi/models/TransferBaseResponseDTO.ts","../src/openapi/models/TransferDirectExposureResponseDTO.ts","../src/openapi/models/TransferNetworkIdentificationsResponseDTO.ts","../src/openapi/models/UpdateEndpointInput.ts","../src/openapi/models/WalletBalanceDetailDTO.ts","../src/openapi/models/WalletBalancesDTO.ts","../src/openapi/models/WalletPnlDTO.ts","../src/openapi/models/WithdrawalAddressIdentificationsResponseDTO.ts","../src/openapi/models/WithdrawalBaseResponseDTO.ts","../src/openapi/models/WithdrawalFraudAssessmentResponseDTO.ts","../src/openapi/apis/BlockchainApi.ts","../src/openapi/apis/DefiSolanaMoonshotApi.ts","../src/openapi/apis/DefiSolanaPumpfunApi.ts","../src/openapi/apis/DexApi.ts","../src/openapi/apis/DexPoolApi.ts","../src/openapi/apis/EndpointApi.ts","../src/openapi/apis/IpfsApi.ts","../src/openapi/apis/JobsApi.ts","../src/openapi/apis/KYTApi.ts","../src/openapi/apis/RankingApi.ts","../src/openapi/apis/RedPacketApi.ts","../src/openapi/apis/TokenApi.ts","../src/openapi/apis/TradeApi.ts","../src/openapi/apis/TransactionApi.ts","../src/openapi/apis/WalletApi.ts","../src/openapi/apis/WatchlistApi.ts","../src/index.ts"],"sourcesContent":["import { Centrifuge, ConnectionTokenContext } from \"@chainstream-io/centrifuge\";\nimport { DexRequestContext } from \"..\";\nimport { Resolution } from \"../openapi\";\nimport {\n DexPoolBalance,\n NewToken,\n TokenMetadata,\n TokenHolder,\n TokenStat,\n TokenLiquidity,\n WalletBalance,\n TokenSupply,\n WalletPnl,\n ChannelType,\n TokenCandle,\n TradeActivity,\n WalletTokenPnl,\n RankingType,\n Dex,\n RankingTokenList,\n TokenBondingCurve,\n} from \"./stream.model\";\nimport { replaceFilterFields } from \"./stream.fields\";\n\nexport interface Unsubscrible {\n unsubscribe(): void;\n}\n\nexport class StreamApi {\n private realtimeClient!: Centrifuge;\n private listenersMap: Map<string, Set<(data: any) => void>>;\n private context: DexRequestContext;\n private initPromise: Promise<void> | null = null;\n\n constructor(context: DexRequestContext) {\n this.context = context;\n this.listenersMap = new Map();\n }\n\n /**\n * Initialize Centrifuge client with current token\n * This is called lazily when connect() is called\n */\n private async initClient(): Promise<void> {\n if (this.realtimeClient) {\n return;\n }\n\n // Get initial token for URL\n const token = await this.getTokenValue();\n const realtimeEndpoint = this.buildWsUrl(this.context.streamUrl, token);\n\n this.realtimeClient = new Centrifuge(realtimeEndpoint, {\n getToken: async (_ctx: ConnectionTokenContext) => {\n return this.getTokenValue();\n },\n });\n\n this.realtimeClient\n .on(\"connected\", () => {\n console.log(\"[streaming] connected\");\n })\n .on(\"disconnected\", (ctx) => {\n console.warn(\"[streaming] disconnected\", ctx);\n })\n .on(\"error\", (err) => {\n console.error(\"[streaming] error: \", err);\n });\n }\n\n /**\n * Wait for initialization to complete\n * If not initialized, auto-connect first\n */\n private async ensureInitialized(): Promise<void> {\n if (!this.initPromise) {\n // Auto-connect if not initialized\n this.connect();\n }\n await this.initPromise;\n }\n\n /**\n * Get token value from string or TokenProvider\n */\n private async getTokenValue(): Promise<string> {\n return typeof this.context.accessToken === \"string\"\n ? this.context.accessToken\n : await this.context.accessToken.getToken();\n }\n\n /**\n * Build WebSocket URL with token as query parameter\n */\n private buildWsUrl(endpoint: string, token: string): string {\n const url = new URL(endpoint);\n url.searchParams.set('token', token);\n return url.toString();\n }\n\n /**\n * Connect to the WebSocket server.\n * This is automatically called when you use subscribe methods if not already connected.\n * You can also call this method manually for explicit control.\n */\n connect(): void {\n // Start initialization and store the promise\n this.initPromise = this.initClient().then(() => {\n this.realtimeClient.connect();\n });\n }\n\n /**\n * Disconnect from the WebSocket server.\n * All subscriptions will be automatically removed.\n */\n disconnect() {\n if (this.realtimeClient) {\n this.realtimeClient.disconnect();\n }\n }\n\n /**\n * Check if the WebSocket is currently connected.\n */\n isConnected(): boolean {\n return this.realtimeClient?.state === 'connected';\n }\n\n /**\n * Start batching commands for efficient bulk operations\n * All subscription commands after this call will be batched until stopBatching is called\n */\n startBatching() {\n if (this.realtimeClient) {\n this.realtimeClient.startBatching();\n }\n }\n\n /**\n * Stop batching and flush all collected commands to the server\n * This will send all batched subscription commands in a single network request\n */\n stopBatching() {\n if (this.realtimeClient) {\n this.realtimeClient.stopBatching();\n }\n }\n\n /**\n * Batch subscribe method that accepts a function containing subscription calls\n * All subscription methods called within the function will be batched\n * @param batchFunction Function containing subscription method calls\n * @returns Array of unsubscribe functions\n */\n batchSubscribe(batchFunction: () => Unsubscrible[]): Unsubscrible[] {\n // Start batching commands\n this.startBatching();\n\n // Execute the batch function (all subscription calls will be batched)\n const unsubscribles = batchFunction();\n\n // Stop batching and flush all commands\n this.stopBatching();\n\n return unsubscribles;\n }\n\n /**\n * Batch unsubscribe method that accepts an array of unsubscribe functions\n * All unsubscribe calls will be executed at once\n * @param unsubscribles Array of unsubscribe functions to execute\n */\n batchUnsubscribe(unsubscribles: Unsubscrible[]): void {\n if (!unsubscribles || unsubscribles.length === 0) {\n return;\n }\n\n // Execute all unsubscribe calls\n unsubscribles.forEach((unsub) => {\n if (unsub && typeof unsub.unsubscribe === \"function\") {\n unsub.unsubscribe();\n }\n });\n }\n\n subscribe<T = any>(channel: string, fn: (data: T) => void, filter?: string, methodName?: string): Unsubscrible {\n // Add listener immediately\n let listeners = this.listenersMap.get(channel);\n if (!listeners) {\n listeners = new Set();\n this.listenersMap.set(channel, listeners);\n }\n listeners.add(fn);\n\n // Perform subscription after initialization is complete\n this.ensureInitialized().then(() => {\n let sub = this.realtimeClient.getSubscription(channel);\n\n if (!sub) {\n console.log(\"[xrealtime] create new sub: \", channel);\n\n // Process filter expression with method-specific field mappings\n const processedFilter = filter && methodName ? replaceFilterFields(filter, methodName) : filter;\n\n sub = this.realtimeClient.newSubscription(channel, {\n delta: \"fossil\",\n ...(processedFilter && { filter: processedFilter }),\n });\n\n sub\n .on(\"subscribed\", () => {\n console.log(\"[xrealtime] subscribed\", channel);\n })\n .on(\"unsubscribed\", () => {\n console.log(\"[xrealtime] unsubscribed\", channel);\n })\n .on(\"publication\", (ctx) => {\n const currentListeners = this.listenersMap.get(channel);\n currentListeners?.forEach((it) => it(ctx.data));\n })\n .subscribe();\n }\n });\n\n return new StreamUnsubscrible<T>(this, channel, fn);\n }\n\n unsubscribe<T = any>(channel: string, fn: (data: T) => void) {\n const listeners = this.listenersMap.get(channel);\n if (!listeners) {\n return;\n }\n\n listeners.delete(fn);\n console.log(\"unsubscribe, remain listeners: \", listeners.size);\n\n if (listeners.size === 0) {\n console.log(\"unsubscribe channel: \", channel);\n this.listenersMap.delete(channel);\n\n // Remove subscription after initialization is complete\n this.ensureInitialized().then(() => {\n const sub = this.realtimeClient.getSubscription(channel);\n if (sub) {\n sub.unsubscribe();\n this.realtimeClient.removeSubscription(sub);\n }\n });\n }\n }\n\n private formatScientificNotation(value: any): string {\n if (value === null || value === undefined) {\n return \"0\";\n }\n\n const strValue = value.toString();\n if (strValue.includes(\"e-\") || strValue.includes(\"E-\")) {\n return Number(value)\n .toFixed(20)\n .replace(/\\.?0+$/, \"\");\n }\n\n return strValue;\n }\n\n subscribeTokenCandles({\n chain,\n tokenAddress,\n resolution,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n resolution: Resolution;\n callback: (data: TokenCandle) => void;\n filter?: string;\n }): Unsubscrible {\n const channel = `dex-candle:${chain}_${tokenAddress}_${resolution}`;\n return this.subscribe(channel, (data: any) => {\n callback({\n open: data.o,\n close: data.c,\n high: data.h,\n low: data.l,\n volume: data.v,\n resolution: data.r,\n time: data.t,\n number: data.n,\n });\n }, filter, \"subscribeTokenCandles\");\n }\n\n subscribeTokenStats({\n chain,\n tokenAddress,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n callback: (data: TokenStat) => void;\n filter?: string;\n }): Unsubscrible {\n const channel = `dex-token-stats:${chain}_${tokenAddress}`;\n return this.subscribe(channel, (data: any) =>\n callback({\n address: data.a,\n timestamp: data.t,\n buys1m: data.b1m,\n sells1m: data.s1m,\n buyers1m: data.be1m,\n sellers1m: data.se1m,\n buyVolumeInUsd1m: this.formatScientificNotation(data.bviu1m),\n sellVolumeInUsd1m: this.formatScientificNotation(data.sviu1m),\n price1m: this.formatScientificNotation(data.p1m),\n openInUsd1m: this.formatScientificNotation(data.oiu1m),\n closeInUsd1m: this.formatScientificNotation(data.ciu1m),\n\n buys5m: data.b5m,\n sells5m: data.s5m,\n buyers5m: data.be5m,\n sellers5m: data.se5m,\n buyVolumeInUsd5m: this.formatScientificNotation(data.bviu5m),\n sellVolumeInUsd5m: this.formatScientificNotation(data.sviu5m),\n price5m: this.formatScientificNotation(data.p5m),\n openInUsd5m: this.formatScientificNotation(data.oiu5m),\n closeInUsd5m: this.formatScientificNotation(data.ciu5m),\n\n buys15m: data.b15m,\n sells15m: data.s15m,\n buyers15m: data.be15m,\n sellers15m: data.se15m,\n buyVolumeInUsd15m: this.formatScientificNotation(data.bviu15m),\n sellVolumeInUsd15m: this.formatScientificNotation(data.sviu15m),\n price15m: this.formatScientificNotation(data.p15m),\n openInUsd15m: this.formatScientificNotation(data.oiu15m),\n closeInUsd15m: this.formatScientificNotation(data.ciu15m),\n\n buys30m: data.b30m,\n sells30m: data.s30m,\n buyers30m: data.be30m,\n sellers30m: data.se30m,\n buyVolumeInUsd30m: this.formatScientificNotation(data.bviu30m),\n sellVolumeInUsd30m: this.formatScientificNotation(data.sviu30m),\n price30m: this.formatScientificNotation(data.p30m),\n openInUsd30m: this.formatScientificNotation(data.oiu30m),\n closeInUsd30m: this.formatScientificNotation(data.ciu30m),\n\n buys1h: data.b1h,\n sells1h: data.s1h,\n buyers1h: data.be1h,\n sellers1h: data.se1h,\n buyVolumeInUsd1h: this.formatScientificNotation(data.bviu1h),\n sellVolumeInUsd1h: this.formatScientificNotation(data.sviu1h),\n price1h: this.formatScientificNotation(data.p1h),\n openInUsd1h: this.formatScientificNotation(data.oiu1h),\n closeInUsd1h: this.formatScientificNotation(data.ciu1h),\n\n buys4h: data.b4h,\n sells4h: data.s4h,\n buyers4h: data.be4h,\n sellers4h: data.se4h,\n buyVolumeInUsd4h: this.formatScientificNotation(data.bviu4h),\n sellVolumeInUsd4h: this.formatScientificNotation(data.sviu4h),\n price4h: this.formatScientificNotation(data.p4h),\n openInUsd4h: this.formatScientificNotation(data.oiu4h),\n closeInUsd4h: this.formatScientificNotation(data.ciu4h),\n\n buys24h: data.b24h,\n sells24h: data.s24h,\n buyers24h: data.be24h,\n sellers24h: data.se24h,\n buyVolumeInUsd24h: this.formatScientificNotation(data.bviu24h),\n sellVolumeInUsd24h: this.formatScientificNotation(data.sviu24h),\n price24h: this.formatScientificNotation(data.p24h),\n openInUsd24h: this.formatScientificNotation(data.oiu24h),\n closeInUsd24h: this.formatScientificNotation(data.ciu24h),\n\n price: this.formatScientificNotation(data.p),\n }), filter, \"subscribeTokenStats\");\n }\n\n subscribeTokenHolders({\n chain,\n tokenAddress,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n callback: (data: TokenHolder) => void;\n filter?: string;\n }): Unsubscrible {\n const channel = `dex-token-holding:${chain}_${tokenAddress}`;\n return this.subscribe(channel, (data: any) =>\n callback({\n tokenAddress: data.a,\n holders: data.h,\n top100HoldersAmount: this.formatScientificNotation(data.t100a),\n top50HoldersAmount: this.formatScientificNotation(data.t50a),\n top10HoldersAmount: this.formatScientificNotation(data.t10a),\n top100Holders: data.t100h,\n top50Holders: data.t50h,\n top10Holders: data.t10h,\n top100HoldersRatio: this.formatScientificNotation(data.t100r),\n top50HoldersRatio: this.formatScientificNotation(data.t50r),\n top10HoldersRatio: this.formatScientificNotation(data.t10r),\n creatorsHolders: data.ch,\n creatorsAmount: this.formatScientificNotation(data.ca),\n creatorsRatio: this.formatScientificNotation(data.cr),\n balanceTagFreshHolders: data.btfh,\n balanceTagFreshAmount: this.formatScientificNotation(data.btfa),\n balanceTagFreshRatio: this.formatScientificNotation(data.btfr),\n balanceTagSandwichHolders: data.btsh,\n balanceTagSandwichAmount: this.formatScientificNotation(data.btsa),\n balanceTagSandwichRatio: this.formatScientificNotation(data.btsr),\n balanceTagBundleHolders: data.btbh,\n balanceTagBundleAmount: this.formatScientificNotation(data.btba),\n balanceTagBundleRatio: this.formatScientificNotation(data.btbr),\n balanceTagSniperHolders: data.btsnh,\n balanceTagSniperAmount: this.formatScientificNotation(data.btsna),\n balanceTagSniperRatio: this.formatScientificNotation(data.btsnr),\n balanceTagDevHolders: data.btdh,\n balanceTagDevAmount: this.formatScientificNotation(data.btda),\n balanceTagDevRatio: this.formatScientificNotation(data.btdr),\n balanceTagProHolders: data.btph,\n balanceTagProAmount: this.formatScientificNotation(data.btpa),\n balanceTagProRatio: this.formatScientificNotation(data.btpr),\n balanceTagInsiderHolders: data.btih,\n balanceTagInsiderAmount: this.formatScientificNotation(data.btia),\n balanceTagInsiderRatio: this.formatScientificNotation(data.btir),\n balanceTagSmartHolders: data.btsmh,\n balanceTagSmartAmount: this.formatScientificNotation(data.btsma),\n balanceTagSmartRatio: this.formatScientificNotation(data.btsmr),\n balanceTagKolHolders: data.btkh,\n balanceTagKolAmount: this.formatScientificNotation(data.btka),\n balanceTagKolRatio: this.formatScientificNotation(data.btkr),\n balanceTagPhishingHolders: data.btphh,\n balanceTagPhishingAmount: this.formatScientificNotation(data.btpha),\n balanceTagPhishingRatio: this.formatScientificNotation(data.btphr),\n balanceTagBluechipHolders: data.btblh,\n balanceTagBluechipAmount: this.formatScientificNotation(data.btbla),\n balanceTagBluechipRatio: this.formatScientificNotation(data.btblr),\n balanceTagRatHolders: data.btrh,\n balanceTagRatAmount: this.formatScientificNotation(data.btra),\n balanceTagRatRatio: this.formatScientificNotation(data.btrr),\n timestamp: data.ts,\n }), filter, \"subscribeTokenHolders\");\n }\n\n subscribeNewToken({\n chain,\n callback,\n filter,\n }: {\n chain: string;\n callback: (data: NewToken) => void;\n filter?: string;\n }): Unsubscrible {\n const channel = `dex-new-token:${chain}`;\n return this.subscribe(channel, (data: any) => {\n const result: any = {\n tokenAddress: data.a,\n name: data.n,\n symbol: data.s,\n createdAtMs: data.cts,\n };\n \n if (data.dec) {\n result.decimals = data.dec;\n }\n \n if (data.lf) {\n result.launchFrom = {};\n if (data.lf.pa) { result.launchFrom.programAddress = data.lf.pa }\n if (data.lf.pf) { result.launchFrom.protocolFamily = data.lf.pf }\n if (data.lf.pn) { result.launchFrom.protocolName = data.lf.pn }\n }\n \n callback(result);\n }, filter, \"subscribeNewToken\");\n }\n\n subscribeNewTokensMetadata({\n chain,\n callback,\n }: {\n chain: string;\n callback: (data: TokenMetadata[]) => void;\n }): Unsubscrible {\n const channel = `dex-new-tokens-metadata:${chain}`;\n return this.subscribe(channel, (data: any[]) =>\n callback(\n data.map(\n (it: any) =>\n ({\n tokenAddress: it.a,\n name: it.n,\n symbol: it.s,\n imageUrl: it.iu,\n description: it.de,\n socialMedia: (() => {\n const socialMedia: any = {};\n if (it.sm?.tw) { socialMedia.twitter = it.sm.tw }\n if (it.sm?.tg) { socialMedia.telegram = it.sm.tg }\n if (it.sm?.w) { socialMedia.website = it.sm.w }\n if (it.sm?.tt) { socialMedia.tiktok = it.sm.tt }\n if (it.sm?.dc) { socialMedia.discord = it.sm.dc }\n if (it.sm?.fb) { socialMedia.facebook = it.sm.fb }\n if (it.sm?.gh) { socialMedia.github = it.sm.gh }\n if (it.sm?.ig) { socialMedia.instagram = it.sm.ig }\n if (it.sm?.li) { socialMedia.linkedin = it.sm.li }\n if (it.sm?.md) { socialMedia.medium = it.sm.md }\n if (it.sm?.rd) { socialMedia.reddit = it.sm.rd }\n if (it.sm?.yt) { socialMedia.youtube = it.sm.yt }\n if (it.sm?.bb) { socialMedia.bitbucket = it.sm.bb }\n return socialMedia;\n })(),\n createdAtMs: it.cts,\n })\n )\n )\n );\n }\n\n // subscribeNewTokens({\n // chain,\n // callback,\n // }: {\n // chain: string;\n // callback: (data: NewToken[]) => void;\n // }): Unsubscrible {\n // const channel = `dex-new-tokens:${chain}`;\n // return this.subscribe(channel, (data: any[]) =>\n // callback(\n // data.map(\n // (it: any) =>\n // ({\n // tokenAddress: it.a,\n // name: it.n,\n // symbol: it.s,\n // description: it.de,\n // createdAtMs: it.cts,\n // }) as NewToken\n // )\n // )\n // );\n // }\n\n subscribeTokenSupply({\n chain,\n tokenAddress,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n callback: (data: TokenSupply) => void;\n filter?: string;\n }): Unsubscrible {\n const channel = `dex-token-supply:${chain}_${tokenAddress}`;\n return this.subscribe(channel, (data: any) =>\n callback({\n tokenAddress: data.a,\n supply: data.s,\n marketCapInUsd: data.mc,\n timestamp: data.ts,\n }), filter, \"subscribeTokenSupply\");\n }\n\n subscribeTokenLiquidity({\n chain,\n tokenAddress,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n callback: (data: TokenLiquidity) => void;\n filter?: string;\n }): Unsubscrible {\n const channel = `dex-token-general-stat-num:${chain}_${tokenAddress}`;\n return this.subscribe(channel, (data: any) =>\n callback({\n tokenAddress: data.a,\n metricType: data.t,\n value: data.v,\n timestamp: data.ts,\n }), filter, \"subscribeTokenLiquidity\");\n }\n\n subscribeRankingTokensLiquidity({\n chain,\n channelType,\n callback,\n }: {\n chain: string;\n channelType: ChannelType;\n callback: (data: TokenLiquidity[]) => void;\n }): Unsubscrible {\n const channel = `dex-ranking-token-general_stat_num-list:${chain}_${channelType}`;\n return this.subscribe(channel, (data: any[]) =>\n callback(\n data?.map(\n (it: any) =>\n ({\n tokenAddress: it.a,\n metricType: it.t,\n value: it.v,\n timestamp: it.ts,\n }) as TokenLiquidity\n )\n )\n );\n }\n\n subscribeRankingTokensList({\n chain,\n ranking_type,\n dex,\n callback,\n }: {\n chain: string;\n ranking_type: RankingType;\n dex?: Dex;\n callback: (data: RankingTokenList[]) => void;\n }): Unsubscrible {\n const channel = dex\n ? `dex-ranking-list:${chain}_${ranking_type}_${dex}`\n : `dex-ranking-list:${chain}_${ranking_type}`;\n return this.subscribe(channel, (data: any[]) =>\n callback(\n data?.map((item: any) => {\n const result: RankingTokenList = {} as RankingTokenList;\n\n // TokenMetadata (t)\n if (item.t) {\n result.metadata = {\n tokenAddress: item.t.a,\n };\n if (item.t.n) { result.metadata.name = item.t.n }\n if (item.t.s) { result.metadata.symbol = item.t.s }\n if (item.t.iu) { result.metadata.imageUrl = item.t.iu }\n if (item.t.de) { result.metadata.description = item.t.de }\n if (item.t.d) { result.metadata.decimals = item.t.dec }\n if (item.t.cts) { result.metadata.createdAtMs = item.t.cts }\n if (item.t.lf) {\n result.metadata.launchFrom = {};\n if (item.t.lf.pa) { result.metadata.launchFrom.programAddress = item.t.lf.pa }\n if (item.t.lf.pf) { result.metadata.launchFrom.protocolFamily = item.t.lf.pf }\n if (item.t.lf.pn) { result.metadata.launchFrom.protocolName = item.t.lf.pn }\n }\n if (item.t.mt) {\n result.metadata.migratedTo = {};\n if (item.t.mt.pa) { result.metadata.migratedTo.programAddress = item.t.mt.pa }\n if (item.t.mt.pf) { result.metadata.migratedTo.protocolFamily = item.t.mt.pf }\n if (item.t.mt.pn) { result.metadata.migratedTo.protocolName = item.t.mt.pn }\n }\n if (item.t.sm) {\n result.metadata.socialMedia = {};\n if (item.t.sm.tw) { result.metadata.socialMedia.twitter = item.t.sm.tw }\n if (item.t.sm.tg) { result.metadata.socialMedia.telegram = item.t.sm.tg }\n if (item.t.sm.w) { result.metadata.socialMedia.website = item.t.sm.w }\n if (item.t.sm.tt) { result.metadata.socialMedia.tiktok = item.t.sm.tt }\n if (item.t.sm.dc) { result.metadata.socialMedia.discord = item.t.sm.dc }\n if (item.t.sm.fb) { result.metadata.socialMedia.facebook = item.t.sm.fb }\n if (item.t.sm.gh) { result.metadata.socialMedia.github = item.t.sm.gh }\n if (item.t.sm.ig) { result.metadata.socialMedia.instagram = item.t.sm.ig }\n if (item.t.sm.li) { result.metadata.socialMedia.linkedin = item.t.sm.li }\n if (item.t.sm.md) { result.metadata.socialMedia.medium = item.t.sm.md }\n if (item.t.sm.rd) { result.metadata.socialMedia.reddit = item.t.sm.rd }\n if (item.t.sm.yt) { result.metadata.socialMedia.youtube = item.t.sm.yt }\n if (item.t.sm.bb) { result.metadata.socialMedia.bitbucket = item.t.sm.bb }\n }\n if (item.t.cts) { result.metadata.createdAtMs = item.t.cts }\n }\n\n // TokenBondingCurve (bc)\n if (item.bc) {\n result.bondingCurve = {};\n if (item.bc.pr) { result.bondingCurve.progressRatio = this.formatScientificNotation(item.bc.pr) }\n }\n\n // TokenHolder (h)\n if (item.h) {\n result.holder = {\n tokenAddress: item.h.a,\n timestamp: item.h.ts || 0,\n };\n if (item.h.h) { result.holder.holders = item.h.h }\n if (item.h.t100a) { result.holder.top100HoldersAmount = this.formatScientificNotation(item.h.t100a) }\n if (item.h.t50a) { result.holder.top50HoldersAmount = this.formatScientificNotation(item.h.t50a) }\n if (item.h.t10a) { result.holder.top10HoldersAmount = this.formatScientificNotation(item.h.t10a) }\n if (item.h.t100h) { result.holder.top100Holders = item.h.t100h }\n if (item.h.t50h) { result.holder.top50Holders = item.h.t50h }\n if (item.h.t10h) { result.holder.top10Holders = item.h.t10h }\n if (item.h.t100r) { result.holder.top100HoldersRatio = this.formatScientificNotation(item.h.t100r) }\n if (item.h.t50r) { result.holder.top50HoldersRatio = this.formatScientificNotation(item.h.t50r) }\n if (item.h.t10r) { result.holder.top10HoldersRatio = this.formatScientificNotation(item.h.t10r) }\n if (item.h.ch) { result.holder.creatorsHolders = item.h.ch }\n if (item.h.ca) { result.holder.creatorsAmount = this.formatScientificNotation(item.h.ca) }\n if (item.h.cr) { result.holder.creatorsRatio = this.formatScientificNotation(item.h.cr) }\n if (item.h.btfh) { result.holder.balanceTagFreshHolders = item.h.btfh }\n if (item.h.btfa) { result.holder.balanceTagFreshAmount = this.formatScientificNotation(item.h.btfa) }\n if (item.h.btfr) { result.holder.balanceTagFreshRatio = this.formatScientificNotation(item.h.btfr) }\n if (item.h.btsh) { result.holder.balanceTagSandwichHolders = item.h.btsh }\n if (item.h.btsa) { result.holder.balanceTagSandwichAmount = this.formatScientificNotation(item.h.btsa) }\n if (item.h.btsr) { result.holder.balanceTagSandwichRatio = this.formatScientificNotation(item.h.btsr) }\n if (item.h.btbh) { result.holder.balanceTagBundleHolders = item.h.btbh }\n if (item.h.btba) { result.holder.balanceTagBundleAmount = this.formatScientificNotation(item.h.btba) }\n if (item.h.btbr) { result.holder.balanceTagBundleRatio = this.formatScientificNotation(item.h.btbr) }\n if (item.h.btsnh) { result.holder.balanceTagSniperHolders = item.h.btsnh }\n if (item.h.btsna) { result.holder.balanceTagSniperAmount = this.formatScientificNotation(item.h.btsna) }\n if (item.h.btsnr) { result.holder.balanceTagSniperRatio = this.formatScientificNotation(item.h.btsnr) }\n if (item.h.btdh) { result.holder.balanceTagDevHolders = item.h.btdh }\n if (item.h.btda) { result.holder.balanceTagDevAmount = this.formatScientificNotation(item.h.btda) }\n if (item.h.btdr) { result.holder.balanceTagDevRatio = this.formatScientificNotation(item.h.btdr) }\n if (item.h.btph) { result.holder.balanceTagProHolders = item.h.btph }\n if (item.h.btpa) { result.holder.balanceTagProAmount = this.formatScientificNotation(item.h.btpa) }\n if (item.h.btpr) { result.holder.balanceTagProRatio = this.formatScientificNotation(item.h.btpr) }\n if (item.h.btih) { result.holder.balanceTagInsiderHolders = item.h.btih }\n if (item.h.btia) { result.holder.balanceTagInsiderAmount = this.formatScientificNotation(item.h.btia) }\n if (item.h.btir) { result.holder.balanceTagInsiderRatio = this.formatScientificNotation(item.h.btir) }\n if (item.h.btsmh) { result.holder.balanceTagSmartHolders = item.h.btsmh }\n if (item.h.btsma) { result.holder.balanceTagSmartAmount = this.formatScientificNotation(item.h.btsma) }\n if (item.h.btsmr) { result.holder.balanceTagSmartRatio = this.formatScientificNotation(item.h.btsmr) }\n if (item.h.btkh) { result.holder.balanceTagKolHolders = item.h.btkh }\n if (item.h.btka) { result.holder.balanceTagKolAmount = this.formatScientificNotation(item.h.btka) }\n if (item.h.btkr) { result.holder.balanceTagKolRatio = this.formatScientificNotation(item.h.btkr) }\n if (item.h.btphh) { result.holder.balanceTagPhishingHolders = item.h.btphh }\n if (item.h.btpha) { result.holder.balanceTagPhishingAmount = this.formatScientificNotation(item.h.btpha) }\n if (item.h.btphr) { result.holder.balanceTagPhishingRatio = this.formatScientificNotation(item.h.btphr) }\n if (item.h.btblh) { result.holder.balanceTagBluechipHolders = item.h.btblh }\n if (item.h.btbla) { result.holder.balanceTagBluechipAmount = this.formatScientificNotation(item.h.btbla) }\n if (item.h.btblr) { result.holder.balanceTagBluechipRatio = this.formatScientificNotation(item.h.btblr) }\n if (item.h.btrh) { result.holder.balanceTagRatHolders = item.h.btrh }\n if (item.h.btra) { result.holder.balanceTagRatAmount = this.formatScientificNotation(item.h.btra) }\n if (item.h.btrr) { result.holder.balanceTagRatRatio = this.formatScientificNotation(item.h.btrr) }\n }\n\n // TokenSupply (s)\n if (item.s) {\n result.supply = {\n tokenAddress: item.s.a,\n timestamp: item.s.ts || 0,\n };\n if (item.s.s) { result.supply.supply = item.s.s }\n if (item.s.mc) { result.supply.marketCapInUsd = item.s.mc }\n }\n\n // TokenStat (ts)\n if (item.ts) {\n result.stat = {\n address: item.ts.a,\n timestamp: item.ts.t || 0,\n };\n\n // 1m data\n if (item.ts.b1m) { result.stat.buys1m = item.ts.b1m }\n if (item.ts.s1m) { result.stat.sells1m = item.ts.s1m }\n if (item.ts.be1m) { result.stat.buyers1m = item.ts.be1m }\n if (item.ts.se1m) { result.stat.sellers1m = item.ts.se1m }\n if (item.ts.bviu1m) { result.stat.buyVolumeInUsd1m = this.formatScientificNotation(item.ts.bviu1m) }\n if (item.ts.sviu1m) { result.stat.sellVolumeInUsd1m = this.formatScientificNotation(item.ts.sviu1m) }\n if (item.ts.p1m) { result.stat.price1m = this.formatScientificNotation(item.ts.p1m) }\n if (item.ts.oiu1m) { result.stat.openInUsd1m = this.formatScientificNotation(item.ts.oiu1m) }\n if (item.ts.ciu1m) { result.stat.closeInUsd1m = this.formatScientificNotation(item.ts.ciu1m) }\n\n // 5m data\n if (item.ts.b5m) { result.stat.buys5m = item.ts.b5m }\n if (item.ts.s5m) { result.stat.sells5m = item.ts.s5m }\n if (item.ts.be5m) { result.stat.buyers5m = item.ts.be5m }\n if (item.ts.se5m) { result.stat.sellers5m = item.ts.se5m }\n if (item.ts.bviu5m) { result.stat.buyVolumeInUsd5m = this.formatScientificNotation(item.ts.bviu5m) }\n if (item.ts.sviu5m) { result.stat.sellVolumeInUsd5m = this.formatScientificNotation(item.ts.sviu5m) }\n if (item.ts.p5m) { result.stat.price5m = this.formatScientificNotation(item.ts.p5m) }\n if (item.ts.oiu5m) { result.stat.openInUsd5m = this.formatScientificNotation(item.ts.oiu5m) }\n if (item.ts.ciu5m) { result.stat.closeInUsd5m = this.formatScientificNotation(item.ts.ciu5m) }\n\n // 15m data\n if (item.ts.b15m) { result.stat.buys15m = item.ts.b15m }\n if (item.ts.s15m) { result.stat.sells15m = item.ts.s15m }\n if (item.ts.be15m) { result.stat.buyers15m = item.ts.be15m }\n if (item.ts.se15m) { result.stat.sellers15m = item.ts.se15m }\n if (item.ts.bviu15m) { result.stat.buyVolumeInUsd15m = this.formatScientificNotation(item.ts.bviu15m) }\n if (item.ts.sviu15m) { result.stat.sellVolumeInUsd15m = this.formatScientificNotation(item.ts.sviu15m) }\n if (item.ts.p15m) { result.stat.price15m = this.formatScientificNotation(item.ts.p15m) }\n if (item.ts.oiu15m) { result.stat.openInUsd15m = this.formatScientificNotation(item.ts.oiu15m) }\n if (item.ts.ciu15m) { result.stat.closeInUsd15m = this.formatScientificNotation(item.ts.ciu15m) }\n\n // 30m data\n if (item.ts.b30m) { result.stat.buys30m = item.ts.b30m }\n if (item.ts.s30m) { result.stat.sells30m = item.ts.s30m }\n if (item.ts.be30m) { result.stat.buyers30m = item.ts.be30m }\n if (item.ts.se30m) { result.stat.sellers30m = item.ts.se30m }\n if (item.ts.bviu30m) { result.stat.buyVolumeInUsd30m = this.formatScientificNotation(item.ts.bviu30m) }\n if (item.ts.sviu30m) { result.stat.sellVolumeInUsd30m = this.formatScientificNotation(item.ts.sviu30m) }\n if (item.ts.p30m) { result.stat.price30m = this.formatScientificNotation(item.ts.p30m) }\n if (item.ts.oiu30m) { result.stat.openInUsd30m = this.formatScientificNotation(item.ts.oiu30m) }\n if (item.ts.ciu30m) { result.stat.closeInUsd30m = this.formatScientificNotation(item.ts.ciu30m) }\n\n // 1h data\n if (item.ts.b1h) { result.stat.buys1h = item.ts.b1h }\n if (item.ts.s1h) { result.stat.sells1h = item.ts.s1h }\n if (item.ts.be1h) { result.stat.buyers1h = item.ts.be1h }\n if (item.ts.se1h) { result.stat.sellers1h = item.ts.se1h }\n if (item.ts.bviu1h) { result.stat.buyVolumeInUsd1h = this.formatScientificNotation(item.ts.bviu1h) }\n if (item.ts.sviu1h) { result.stat.sellVolumeInUsd1h = this.formatScientificNotation(item.ts.sviu1h) }\n if (item.ts.p1h) { result.stat.price1h = this.formatScientificNotation(item.ts.p1h) }\n if (item.ts.oiu1h) { result.stat.openInUsd1h = this.formatScientificNotation(item.ts.oiu1h) }\n if (item.ts.ciu1h) { result.stat.closeInUsd1h = this.formatScientificNotation(item.ts.ciu1h) }\n\n // 4h data\n if (item.ts.b4h) { result.stat.buys4h = item.ts.b4h }\n if (item.ts.s4h) { result.stat.sells4h = item.ts.s4h }\n if (item.ts.be4h) { result.stat.buyers4h = item.ts.be4h }\n if (item.ts.se4h) { result.stat.sellers4h = item.ts.se4h }\n if (item.ts.bviu4h) { result.stat.buyVolumeInUsd4h = this.formatScientificNotation(item.ts.bviu4h) }\n if (item.ts.sviu4h) { result.stat.sellVolumeInUsd4h = this.formatScientificNotation(item.ts.sviu4h) }\n if (item.ts.p4h) { result.stat.price4h = this.formatScientificNotation(item.ts.p4h) }\n if (item.ts.oiu4h) { result.stat.openInUsd4h = this.formatScientificNotation(item.ts.oiu4h) }\n if (item.ts.ciu4h) { result.stat.closeInUsd4h = this.formatScientificNotation(item.ts.ciu4h) }\n\n // 24h data\n if (item.ts.b24h) { result.stat.buys24h = item.ts.b24h }\n if (item.ts.s24h) { result.stat.sells24h = item.ts.s24h }\n if (item.ts.be24h) { result.stat.buyers24h = item.ts.be24h }\n if (item.ts.se24h) { result.stat.sellers24h = item.ts.se24h }\n if (item.ts.bviu24h) { result.stat.buyVolumeInUsd24h = this.formatScientificNotation(item.ts.bviu24h) }\n if (item.ts.sviu24h) { result.stat.sellVolumeInUsd24h = this.formatScientificNotation(item.ts.sviu24h) }\n if (item.ts.p24h) { result.stat.price24h = this.formatScientificNotation(item.ts.p24h) }\n if (item.ts.oiu24h) { result.stat.openInUsd24h = this.formatScientificNotation(item.ts.oiu24h) }\n if (item.ts.ciu24h) { result.stat.closeInUsd24h = this.formatScientificNotation(item.ts.ciu24h) }\n\n // Current price\n if (item.ts.p) { result.stat.price = this.formatScientificNotation(item.ts.p) }\n }\n\n return result;\n })\n )\n );\n }\n\n subscribeRankingTokensStats({\n chain,\n channelType,\n callback,\n }: {\n chain: string;\n channelType: ChannelType;\n callback: (data: TokenStat[]) => void;\n }): Unsubscrible {\n const channel = `dex-ranking-token-stats-list:${chain}_${channelType}`;\n return this.subscribe(channel, (data: any[]) =>\n callback(\n data?.map(\n (it: any) =>\n ({\n address: it.a,\n timestamp: it.t,\n buys1m: it.b1m,\n sells1m: it.s1m,\n buyers1m: it.be1m,\n sellers1m: it.se1m,\n buyVolumeInUsd1m: this.formatScientificNotation(it.bviu1m),\n sellVolumeInUsd1m: this.formatScientificNotation(it.sviu1m),\n price1m: this.formatScientificNotation(it.p1m),\n openInUsd1m: this.formatScientificNotation(it.oiu1m),\n closeInUsd1m: this.formatScientificNotation(it.ciu1m),\n buys5m: it.b5m,\n sells5m: it.s5m,\n buyers5m: it.be5m,\n sellers5m: it.se5m,\n buyVolumeInUsd5m: this.formatScientificNotation(it.bviu5m),\n sellVolumeInUsd5m: this.formatScientificNotation(it.sviu5m),\n price5m: this.formatScientificNotation(it.p5m),\n openInUsd5m: this.formatScientificNotation(it.oiu5m),\n closeInUsd5m: this.formatScientificNotation(it.ciu5m),\n buys15m: it.b15m,\n sells15m: it.s15m,\n buyers15m: it.be15m,\n sellers15m: it.se15m,\n buyVolumeInUsd15m: this.formatScientificNotation(it.bviu15m),\n sellVolumeInUsd15m: this.formatScientificNotation(it.sviu15m),\n price15m: this.formatScientificNotation(it.p15m),\n openInUsd15m: this.formatScientificNotation(it.oiu15m),\n closeInUsd15m: this.formatScientificNotation(it.ciu15m),\n buys30m: it.b30m,\n sells30m: it.s30m,\n buyers30m: it.be30m,\n sellers30m: it.se30m,\n buyVolumeInUsd30m: this.formatScientificNotation(it.bviu30m),\n sellVolumeInUsd30m: this.formatScientificNotation(it.sviu30m),\n price30m: this.formatScientificNotation(it.p30m),\n openInUsd30m: this.formatScientificNotation(it.oiu30m),\n closeInUsd30m: this.formatScientificNotation(it.ciu30m),\n buys1h: it.b1h,\n sells1h: it.s1h,\n buyers1h: it.be1h,\n sellers1h: it.se1h,\n buyVolumeInUsd1h: this.formatScientificNotation(it.bviu1h),\n sellVolumeInUsd1h: this.formatScientificNotation(it.sviu1h),\n price1h: this.formatScientificNotation(it.p1h),\n openInUsd1h: this.formatScientificNotation(it.oiu1h),\n closeInUsd1h: this.formatScientificNotation(it.ciu1h),\n buys4h: it.b4h,\n sells4h: it.s4h,\n buyers4h: it.be4h,\n sellers4h: it.se4h,\n buyVolumeInUsd4h: this.formatScientificNotation(it.bviu4h),\n sellVolumeInUsd4h: this.formatScientificNotation(it.sviu4h),\n price4h: this.formatScientificNotation(it.p4h),\n openInUsd4h: this.formatScientificNotation(it.oiu4h),\n closeInUsd4h: this.formatScientificNotation(it.ciu4h),\n buys24h: it.b24h,\n sells24h: it.s24h,\n buyers24h: it.be24h,\n sellers24h: it.se24h,\n buyVolumeInUsd24h: this.formatScientificNotation(it.bviu24h),\n sellVolumeInUsd24h: this.formatScientificNotation(it.sviu24h),\n price24h: this.formatScientificNotation(it.p24h),\n price: this.formatScientificNotation(it.p),\n openInUsd24h: this.formatScientificNotation(it.oiu24h),\n closeInUsd24h: this.formatScientificNotation(it.ciu24h),\n }) as TokenStat\n )\n )\n );\n }\n\n subscribeRankingTokensHolders({\n chain,\n channelType,\n callback,\n }: {\n chain: string;\n channelType: ChannelType;\n callback: (data: TokenHolder[]) => void;\n }): Unsubscrible {\n const channel = `dex-ranking-token-holding-list:${chain}_${channelType}`;\n return this.subscribe(channel, (data: any[]) =>\n callback(\n data?.map(\n (it: any) =>\n ({\n tokenAddress: it.a,\n holders: it.h,\n top100HoldersAmount: this.formatScientificNotation(it.t100a),\n top50HoldersAmount: this.formatScientificNotation(it.t50a),\n top10HoldersAmount: this.formatScientificNotation(it.t10a),\n top100Holders: it.t100h,\n top50Holders: it.t50h,\n top10Holders: it.t10h,\n top100HoldersRatio: this.formatScientificNotation(it.t100r),\n top50HoldersRatio: this.formatScientificNotation(it.t50r),\n top10HoldersRatio: this.formatScientificNotation(it.t10r),\n creatorsHolders: it.ch,\n creatorsAmount: this.formatScientificNotation(it.ca),\n creatorsRatio: this.formatScientificNotation(it.cr),\n balanceTagFreshHolders: it.btfh,\n balanceTagFreshAmount: this.formatScientificNotation(it.btfa),\n balanceTagFreshRatio: this.formatScientificNotation(it.btfr),\n balanceTagSandwichHolders: it.btsh,\n balanceTagSandwichAmount: this.formatScientificNotation(it.btsa),\n balanceTagSandwichRatio: this.formatScientificNotation(it.btsr),\n balanceTagBundleHolders: it.btbh,\n balanceTagBundleAmount: this.formatScientificNotation(it.btba),\n balanceTagBundleRatio: this.formatScientificNotation(it.btbr),\n balanceTagSniperHolders: it.btsnh,\n balanceTagSniperAmount: this.formatScientificNotation(it.btsna),\n balanceTagSniperRatio: this.formatScientificNotation(it.btsnr),\n balanceTagDevHolders: it.btdh,\n balanceTagDevAmount: this.formatScientificNotation(it.btda),\n balanceTagDevRatio: this.formatScientificNotation(it.btdr),\n balanceTagProHolders: it.btph,\n balanceTagProAmount: this.formatScientificNotation(it.btpa),\n balanceTagProRatio: this.formatScientificNotation(it.btpr),\n balanceTagInsiderHolders: it.btih,\n balanceTagInsiderAmount: this.formatScientificNotation(it.btia),\n balanceTagInsiderRatio: this.formatScientificNotation(it.btir),\n balanceTagSmartHolders: it.btsmh,\n balanceTagSmartAmount: this.formatScientificNotation(it.btsma),\n balanceTagSmartRatio: this.formatScientificNotation(it.btsmr),\n balanceTagKolHolders: it.btkh,\n balanceTagKolAmount: this.formatScientificNotation(it.btka),\n balanceTagKolRatio: this.formatScientificNotation(it.btkr),\n balanceTagPhishingHolders: it.btphh,\n balanceTagPhishingAmount: this.formatScientificNotation(it.btpha),\n balanceTagPhishingRatio: this.formatScientificNotation(it.btphr),\n balanceTagBluechipHolders: it.btblh,\n balanceTagBluechipAmount: this.formatScientificNotation(it.btbla),\n balanceTagBluechipRatio: this.formatScientificNotation(it.btblr),\n balanceTagRatHolders: it.btrh,\n balanceTagRatAmount: this.formatScientificNotation(it.btra),\n balanceTagRatRatio: this.formatScientificNotation(it.btrr),\n timestamp: it.ts,\n }) as TokenHolder\n )\n )\n );\n }\n\n subscribeRankingTokensSupply({\n chain,\n channelType,\n callback,\n }: {\n chain: string;\n channelType: ChannelType;\n callback: (data: TokenSupply[]) => void;\n }): Unsubscrible {\n const channel = `dex-ranking-token-supply-list:${chain}_${channelType}`;\n return this.subscribe(channel, (data: any[]) =>\n callback(\n data?.map(\n (it: any) =>\n ({\n tokenAddress: it.a,\n supply: it.s,\n marketCapInUsd: it.mc,\n timestamp: it.ts,\n })\n )\n )\n );\n }\n\n subscribeRankingTokensBondingCurve({\n chain,\n callback,\n }: {\n chain: string;\n callback: (data: TokenBondingCurve[]) => void;\n }): Unsubscrible {\n const channel = `dex-ranking-token-bounding-curve-list:${chain}_new`;\n return this.subscribe(channel, (data: any[]) =>\n callback(\n data?.map(\n (it: any) =>\n ({\n tokenAddress: it.a,\n progressRatio: it.pr,\n })\n )\n )\n );\n }\n\n // subscribeTokenTrades({\n // chain,\n // tokenAddress,\n // callback,\n // }: {\n // chain: string;\n // tokenAddress: string;\n // callback: (data: TradeEvent[]) => void;\n // }): Unsubscrible {\n // const channel = `dex-trades:${chain}_${tokenAddress}`;\n // return this.subscribe(channel, (data: any[]) =>\n // callback(\n // data?.map(\n // (it: any) =>\n // ({\n // maker: it.bwa,\n // baseAmount: it.ba,\n // quoteAmount: it.sa,\n // // quoteSymbol: ,\n // quoteAddress: it.swa,\n // amountInUsd: it.baiu,\n // timestamp: it.t,\n // event: it.k,\n // txHash: it.h,\n // // priceInUsd: ,\n // // id: ,\n // // buyCostUsd: it.,\n // tokenAddress: it.a,\n // }) as TradeEvent\n // )\n // )\n // );\n // }\n\n subscribeWalletBalance({\n chain,\n walletAddress,\n callback,\n filter,\n }: {\n chain: string;\n walletAddress: string;\n callback: (data: WalletBalance[]) => void;\n filter?: string;\n }): Unsubscrible {\n const channel = `dex-wallet-balance:${chain}_${walletAddress}`;\n return this.subscribe(channel, (data: any) =>\n callback([\n {\n walletAddress: data.a,\n tokenAddress: data.ta,\n tokenPriceInUsd: data.tpiu,\n balance: data.b,\n timestamp: data.t,\n },\n ]), filter, \"subscribeWalletBalance\");\n }\n\n subscribeWalletPnl({\n chain,\n walletAddress,\n callback,\n filter,\n }: {\n chain: string;\n walletAddress: string;\n callback: (data: WalletTokenPnl) => void;\n filter?: string;\n }): Unsubscrible {\n const channel = `dex-wallet-token-pnl:${chain}_${walletAddress}`;\n return this.subscribe(channel, (data: any) =>\n callback({\n walletAddress: data.a,\n tokenAddress: data.ta,\n tokenPriceInUsd: data.tpiu,\n timestamp: data.t,\n opentime: data.ot,\n lasttime: data.lt,\n closetime: data.ct,\n buyAmount: data.ba,\n buyAmountInUsd: data.baiu,\n buyCount: data.bs,\n buyCount30d: data.bs30d,\n buyCount7d: data.bs7d,\n sellAmount: data.sa,\n sellAmountInUsd: data.saiu,\n sellCount: data.ss,\n sellCount30d: data.ss30d,\n sellCount7d: data.ss7d,\n heldDurationTimestamp: data.hdts,\n averageBuyPriceInUsd: data.abpiu,\n averageSellPriceInUsd: data.aspiu,\n unrealizedProfitInUsd: data.upiu,\n unrealizedProfitRatio: data.upr,\n realizedProfitInUsd: data.rpiu,\n realizedProfitRatio: data.rpr,\n totalRealizedProfitInUsd: data.trpiu,\n totalRealizedProfitRatio: data.trr,\n }), filter, \"subscribeWalletPnl\");\n }\n\n subscribeWalletPnlList({\n chain,\n walletAddress,\n callback,\n }: {\n chain: string;\n walletAddress: string;\n callback: (data: WalletPnl[]) => void;\n }): Unsubscrible {\n const channel = `dex-wallet-pnl-list:${chain}_${walletAddress}`;\n return this.subscribe(channel, (data: any[]) =>\n callback(\n data?.map(\n (it: any) =>\n ({\n walletAddress: it.a,\n buys: it.bs,\n buyAmount: it.ba,\n buyAmountInUsd: it.baiu,\n averageBuyPriceInUsd: it.abpiu,\n sellAmount: it.sa,\n sellAmountInUsd: it.saiu,\n sells: it.ss,\n wins: it.ws,\n winRatio: it.wr,\n pnlInUsd: it.piu,\n averagePnlInUsd: it.apiu,\n pnlRatio: it.pr,\n profitableDays: it.pd,\n losingDays: it.ld,\n tokens: it.ts,\n resolution: it.r,\n }) as WalletPnl\n )\n )\n );\n }\n\n subscribeTokenTrade({\n chain,\n tokenAddress,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n callback: (data: TradeActivity) => void;\n filter?: string;\n }): Unsubscrible {\n const channel = `dex-trade:${chain}_${tokenAddress}`;\n return this.subscribe(channel, (data: any) =>\n callback({\n tokenAddress: data.a,\n timestamp: data.t,\n kind: data.k,\n buyAmount: data.ba,\n buyAmountInUsd: data.baiu,\n buyTokenAddress: data.btma,\n buyTokenName: data.btn,\n buyTokenSymbol: data.bts,\n buyWalletAddress: data.bwa,\n sellAmount: data.sa,\n sellAmountInUsd: data.saiu,\n sellTokenAddress: data.stma,\n sellTokenName: data.stn,\n sellTokenSymbol: data.sts,\n sellWalletAddress: data.swa,\n txHash: data.h,\n }), filter, \"subscribeTokenTrades\");\n }\n\n subscribeWalletTrade({\n chain,\n walletAddress,\n callback,\n filter,\n }: {\n chain: string;\n walletAddress: string;\n callback: (data: TradeActivity) => void;\n filter?: string;\n }): Unsubscrible {\n const channel = `dex-wallet-trade:${chain}_${walletAddress}`;\n return this.subscribe(channel, (data: any) =>\n callback({\n tokenAddress: data.a,\n timestamp: data.t,\n kind: data.k,\n buyAmount: data.ba,\n buyAmountInUsd: data.baiu,\n buyTokenAddress: data.btma,\n buyTokenName: data.btn,\n buyTokenSymbol: data.bts,\n buyWalletAddress: data.bwa,\n sellAmount: data.sa,\n sellAmountInUsd: data.saiu,\n sellTokenAddress: data.stma,\n sellTokenName: data.stn,\n sellTokenSymbol: data.sts,\n sellWalletAddress: data.swa,\n txHash: data.h,\n }), filter, \"subscribeTokenTrades\");\n }\n\n subscribeDexPoolBalance({\n chain,\n poolAddress,\n callback,\n }: {\n chain: string;\n poolAddress: string;\n callback: (data: DexPoolBalance) => void;\n }): Unsubscrible {\n const channel = `dex-pool-balance:${chain}_${poolAddress}`;\n return this.subscribe(channel, (data: any) =>\n callback({\n poolAddress: data.a,\n tokenAAddress: data.taa,\n tokenALiquidityInUsd: data.taliu,\n tokenBAddress: data.tba,\n tokenBLiquidityInUsd: data.tbliu,\n })\n );\n }\n}\nclass StreamUnsubscrible<T> {\n constructor(\n private readonly streamApi: StreamApi,\n private readonly channel: string,\n private readonly fn: (data: T) => void\n ) { }\n\n unsubscribe() {\n this.streamApi.unsubscribe(this.channel, this.fn);\n }\n}","/**\n * Field mappings for CEL filter expressions\n * Maps human-readable field names to short field names used in the API\n * Organized by subscription method to handle field name conflicts\n */\n\nexport interface FieldMapping {\n readonly [key: string]: string;\n}\n\nexport interface MethodFieldMappings {\n readonly [methodName: string]: FieldMapping;\n}\n\n/**\n * Field mappings organized by subscription method\n * Each method can have its own field mappings to handle conflicts\n */\nexport const CEL_FIELD_MAPPINGS: MethodFieldMappings = {\n // Wallet balance subscription fields\n \"subscribeWalletBalance\": {\n \"walletAddress\": \"a\",\n \"tokenAddress\": \"ta\",\n \"tokenPriceInUsd\": \"tpiu\",\n \"balance\": \"b\",\n \"timestamp\": \"t\",\n },\n\n // Token candles subscription fields\n \"subscribeTokenCandles\": {\n \"open\": \"o\",\n \"close\": \"c\",\n \"high\": \"h\",\n \"low\": \"l\",\n \"volume\": \"v\",\n \"resolution\": \"r\",\n \"time\": \"t\",\n \"number\": \"n\",\n },\n\n // Token stats subscription fields\n \"subscribeTokenStats\": {\n \"address\": \"a\",\n \"timestamp\": \"t\",\n \"buys1m\": \"b1m\",\n \"sells1m\": \"s1m\",\n \"buyers1m\": \"be1m\",\n \"sellers1m\": \"se1m\",\n \"buyVolumeInUsd1m\": \"bviu1m\",\n \"sellVolumeInUsd1m\": \"sviu1m\",\n \"price1m\": \"p1m\",\n \"openInUsd1m\": \"oiu1m\",\n \"closeInUsd1m\": \"ciu1m\",\n \"buys5m\": \"b5m\",\n \"sells5m\": \"s5m\",\n \"buyers5m\": \"be5m\",\n \"sellers5m\": \"se5m\",\n \"buyVolumeInUsd5m\": \"bviu5m\",\n \"sellVolumeInUsd5m\": \"sviu5m\",\n \"price5m\": \"p5m\",\n \"openInUsd5m\": \"oiu5m\",\n \"closeInUsd5m\": \"ciu5m\",\n \"buys15m\": \"b15m\",\n \"sells15m\": \"s15m\",\n \"buyers15m\": \"be15m\",\n \"sellers15m\": \"se15m\",\n \"buyVolumeInUsd15m\": \"bviu15m\",\n \"sellVolumeInUsd15m\": \"sviu15m\",\n \"price15m\": \"p15m\",\n \"openInUsd15m\": \"oiu15m\",\n \"closeInUsd15m\": \"ciu15m\",\n \"buys30m\": \"b30m\",\n \"sells30m\": \"s30m\",\n \"buyers30m\": \"be30m\",\n \"sellers30m\": \"se30m\",\n \"buyVolumeInUsd30m\": \"bviu30m\",\n \"sellVolumeInUsd30m\": \"sviu30m\",\n \"price30m\": \"p30m\",\n \"openInUsd30m\": \"oiu30m\",\n \"closeInUsd30m\": \"ciu30m\",\n \"buys1h\": \"b1h\",\n \"sells1h\": \"s1h\",\n \"buyers1h\": \"be1h\",\n \"sellers1h\": \"se1h\",\n \"buyVolumeInUsd1h\": \"bviu1h\",\n \"sellVolumeInUsd1h\": \"sviu1h\",\n \"price1h\": \"p1h\",\n \"openInUsd1h\": \"oiu1h\",\n \"closeInUsd1h\": \"ciu1h\",\n \"buys4h\": \"b4h\",\n \"sells4h\": \"s4h\",\n \"buyers4h\": \"be4h\",\n \"sellers4h\": \"se4h\",\n \"buyVolumeInUsd4h\": \"bviu4h\",\n \"sellVolumeInUsd4h\": \"sviu4h\",\n \"price4h\": \"p4h\",\n \"openInUsd4h\": \"oiu4h\",\n \"closeInUsd4h\": \"ciu4h\",\n \"buys24h\": \"b24h\",\n \"sells24h\": \"s24h\",\n \"buyers24h\": \"be24h\",\n \"sellers24h\": \"se24h\",\n \"buyVolumeInUsd24h\": \"bviu24h\",\n \"sellVolumeInUsd24h\": \"sviu24h\",\n \"price24h\": \"p24h\",\n \"price\": \"p\",\n \"openInUsd24h\": \"oiu24h\",\n \"closeInUsd24h\": \"ciu24h\",\n },\n\n // Token holder subscription fields\n \"subscribeTokenHolders\": {\n \"tokenAddress\": \"a\",\n \"holders\": \"h\",\n \"top100HoldersAmount\": \"t100a\",\n \"top50HoldersAmount\": \"t50a\",\n \"top10HoldersAmount\": \"t10a\",\n \"top100Holders\": \"t100h\",\n \"top50Holders\": \"t50h\",\n \"top10Holders\": \"t10h\",\n \"top100HoldersRatio\": \"t100r\",\n \"top50HoldersRatio\": \"t50r\",\n \"top10HoldersRatio\": \"t10r\",\n \"creatorsHolders\": \"ch\",\n \"creatorsAmount\": \"ca\",\n \"creatorsRatio\": \"cr\",\n \"balanceTagFreshHolders\": \"btfh\",\n \"balanceTagFreshAmount\": \"btfa\",\n \"balanceTagFreshRatio\": \"btfr\",\n \"balanceTagSandwichHolders\": \"btsh\",\n \"balanceTagSandwichAmount\": \"btsa\",\n \"balanceTagSandwichRatio\": \"btsr\",\n \"balanceTagBundleHolders\": \"btbh\",\n \"balanceTagBundleAmount\": \"btba\",\n \"balanceTagBundleRatio\": \"btbr\",\n \"balanceTagSniperHolders\": \"btsnh\",\n \"balanceTagSniperAmount\": \"btsna\",\n \"balanceTagSniperRatio\": \"btsnr\",\n \"balanceTagDevHolders\": \"btdh\",\n \"balanceTagDevAmount\": \"btda\",\n \"balanceTagDevRatio\": \"btdr\",\n \"balanceTagProHolders\": \"btph\",\n \"balanceTagProAmount\": \"btpa\",\n \"balanceTagProRatio\": \"btpr\",\n \"balanceTagInsiderHolders\": \"btih\",\n \"balanceTagInsiderAmount\": \"btia\",\n \"balanceTagInsiderRatio\": \"btir\",\n \"balanceTagSmartHolders\": \"btsmh\",\n \"balanceTagSmartAmount\": \"btsma\",\n \"balanceTagSmartRatio\": \"btsmr\",\n \"balanceTagKolHolders\": \"btkh\",\n \"balanceTagKolAmount\": \"btka\",\n \"balanceTagKolRatio\": \"btkr\",\n \"balanceTagPhishingHolders\": \"btphh\",\n \"balanceTagPhishingAmount\": \"btpha\",\n \"balanceTagPhishingRatio\": \"btphr\",\n \"balanceTagBluechipHolders\": \"btblh\",\n \"balanceTagBluechipAmount\": \"btbla\",\n \"balanceTagBluechipRatio\": \"btblr\",\n \"balanceTagRatHolders\": \"btrh\",\n \"balanceTagRatAmount\": \"btra\",\n \"balanceTagRatRatio\": \"btrr\",\n \"timestamp\": \"ts\",\n },\n\n // New token subscription fields\n \"subscribeNewToken\": {\n \"tokenAddress\": \"a\",\n \"name\": \"n\",\n \"symbol\": \"s\",\n \"createdAtMs\": \"cts\",\n },\n\n // Token supply subscription fields\n \"subscribeTokenSupply\": {\n \"tokenAddress\": \"a\",\n \"supply\": \"s\",\n \"timestamp\": \"ts\",\n },\n\n // Dex pool balance subscription fields\n \"subscribeDexPoolBalance\": {\n \"poolAddress\": \"a\",\n \"tokenAAddress\": \"taa\",\n \"tokenALiquidityInUsd\": \"taliu\",\n \"tokenBAddress\": \"tba\",\n \"tokenBLiquidityInUsd\": \"tbliu\",\n },\n\n // Token liquidity subscription fields\n \"subscribeTokenLiquidity\": {\n \"tokenAddress\": \"a\",\n \"metricType\": \"t\",\n \"value\": \"v\",\n \"timestamp\": \"ts\",\n },\n\n // New token metadata subscription fields\n \"subscribeNewTokensMetadata\": {\n \"tokenAddress\": \"a\",\n \"name\": \"n\",\n \"symbol\": \"s\",\n \"imageUrl\": \"iu\",\n \"description\": \"de\",\n \"socialMedia\": \"sm\",\n \"createdAtMs\": \"cts\",\n },\n\n // Token trades subscription fields\n \"subscribeTokenTrades\": {\n \"tokenAddress\": \"a\",\n \"timestamp\": \"t\",\n \"kind\": \"k\",\n \"buyAmount\": \"ba\",\n \"buyAmountInUsd\": \"baiu\",\n \"buyTokenAddress\": \"btma\",\n \"buyTokenName\": \"btn\",\n \"buyTokenSymbol\": \"bts\",\n \"buyWalletAddress\": \"bwa\",\n \"sellAmount\": \"sa\",\n \"sellAmountInUsd\": \"saiu\",\n \"sellTokenAddress\": \"stma\",\n \"sellTokenName\": \"stn\",\n \"sellTokenSymbol\": \"sts\",\n \"sellWalletAddress\": \"swa\",\n \"txHash\": \"h\",\n },\n\n // Wallet token PnL subscription fields\n \"subscribeWalletPnl\": {\n \"walletAddress\": \"a\",\n \"tokenAddress\": \"ta\",\n \"tokenPriceInUsd\": \"tpiu\",\n \"timestamp\": \"t\",\n \"opentime\": \"ot\",\n \"lasttime\": \"lt\",\n \"closetime\": \"ct\",\n \"buyAmount\": \"ba\",\n \"buyAmountInUsd\": \"baiu\",\n \"buyCount\": \"bs\",\n \"buyCount30d\": \"bs30d\",\n \"buyCount7d\": \"bs7d\",\n \"sellAmount\": \"sa\",\n \"sellAmountInUsd\": \"saiu\",\n \"sellCount\": \"ss\",\n \"sellCount30d\": \"ss30d\",\n \"sellCount7d\": \"ss7d\",\n \"heldDurationTimestamp\": \"hdts\",\n \"averageBuyPriceInUsd\": \"abpiu\",\n \"averageSellPriceInUsd\": \"aspiu\",\n \"unrealizedProfitInUsd\": \"upiu\",\n \"unrealizedProfitRatio\": \"upr\",\n \"realizedProfitInUsd\": \"rpiu\",\n \"realizedProfitRatio\": \"rpr\",\n \"totalRealizedProfitInUsd\": \"trpiu\",\n \"totalRealizedProfitRatio\": \"trr\",\n },\n} as const;\n\n/**\n * Get field mappings for a specific subscription method\n * @param methodName - The name of the subscription method\n * @returns Field mapping object for the method, or empty object if not found\n */\nexport function getFieldMappings(methodName: string): FieldMapping {\n return CEL_FIELD_MAPPINGS[methodName] || {};\n}\n\n/**\n * Replace long field names with short field names in a filter expression\n * Automatically adds meta. prefix if not present\n * @param filter - Original filter expression\n * @param methodName - The name of the subscription method\n * @returns Filter expression with short field names and meta. prefix\n */\nexport function replaceFilterFields(filter: string, methodName: string): string {\n if (!filter) {return filter}\n \n const fieldMappings = getFieldMappings(methodName);\n let result = filter;\n \n // Replace all long field names with short field names\n for (const [longField, shortField] of Object.entries(fieldMappings)) {\n // Handle both cases: with and without meta. prefix\n const patterns = [\n // Pattern 1: fieldName (without meta. prefix)\n new RegExp(`\\\\b${longField}\\\\b`, \"g\"),\n // Pattern 2: meta.fieldName (with meta. prefix)\n new RegExp(`\\\\bmeta\\\\.${longField}\\\\b`, \"g\"),\n ];\n \n patterns.forEach((pattern) => {\n result = result.replace(pattern, `meta.${shortField}`);\n });\n }\n \n return result;\n}\n\n/**\n * Type-safe field mapping for specific subscription methods\n */\nexport type SubscriptionMethod = keyof typeof CEL_FIELD_MAPPINGS;\n\n/**\n * Get available field names for a specific subscription method\n * @param methodName - The name of the subscription method\n * @returns Array of available field names\n */\nexport function getAvailableFields(methodName: string): string[] {\n const mappings = getFieldMappings(methodName);\n return Object.keys(mappings);\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nexport const BASE_PATH = \"http://localhost\".replace(/\\/+$/, \"\");\n\nexport interface ConfigurationParameters {\n basePath?: string; // override base path\n fetchApi?: FetchAPI; // override for fetch implementation\n middleware?: Middleware[]; // middleware to apply before/after fetch requests\n queryParamsStringify?: (params: HTTPQuery) => string; // stringify function for query strings\n username?: string; // parameter for basic security\n password?: string; // parameter for basic security\n apiKey?: string | Promise<string> | ((name: string) => string | Promise<string>); // parameter for apiKey security\n accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string | Promise<string>); // parameter for oauth2 security\n headers?: HTTPHeaders; //header params we want to use on every request\n credentials?: RequestCredentials; //value for the credentials param we want to use on each request\n}\n\nexport class Configuration {\n constructor(private configuration: ConfigurationParameters = {}) {}\n\n set config(configuration: Configuration) {\n this.configuration = configuration;\n }\n\n get basePath(): string {\n return this.configuration.basePath != null ? this.configuration.basePath : BASE_PATH;\n }\n\n get fetchApi(): FetchAPI | undefined {\n return this.configuration.fetchApi;\n }\n\n get middleware(): Middleware[] {\n return this.configuration.middleware || [];\n }\n\n get queryParamsStringify(): (params: HTTPQuery) => string {\n return this.configuration.queryParamsStringify || querystring;\n }\n\n get username(): string | undefined {\n return this.configuration.username;\n }\n\n get password(): string | undefined {\n return this.configuration.password;\n }\n\n get apiKey(): ((name: string) => string | Promise<string>) | undefined {\n const apiKey = this.configuration.apiKey;\n if (apiKey) {\n return typeof apiKey === 'function' ? apiKey : () => apiKey;\n }\n return undefined;\n }\n\n get accessToken(): ((name?: string, scopes?: string[]) => string | Promise<string>) | undefined {\n const accessToken = this.configuration.accessToken;\n if (accessToken) {\n return typeof accessToken === 'function' ? accessToken : async () => accessToken;\n }\n return undefined;\n }\n\n get headers(): HTTPHeaders | undefined {\n return this.configuration.headers;\n }\n\n get credentials(): RequestCredentials | undefined {\n return this.configuration.credentials;\n }\n}\n\nexport const DefaultConfig = new Configuration();\n\n/**\n * This is the base class for all generated API classes.\n */\nexport class BaseAPI {\n\n private static readonly jsonRegex = new RegExp('^(:?application\\/json|[^;/ \\t]+\\/[^;/ \\t]+[+]json)[ \\t]*(:?;.*)?$', 'i');\n private middleware: Middleware[];\n\n constructor(protected configuration = DefaultConfig) {\n this.middleware = configuration.middleware;\n }\n\n withMiddleware<T extends BaseAPI>(this: T, ...middlewares: Middleware[]) {\n const next = this.clone<T>();\n next.middleware = next.middleware.concat(...middlewares);\n return next;\n }\n\n withPreMiddleware<T extends BaseAPI>(this: T, ...preMiddlewares: Array<Middleware['pre']>) {\n const middlewares = preMiddlewares.map((pre) => ({ pre }));\n return this.withMiddleware<T>(...middlewares);\n }\n\n withPostMiddleware<T extends BaseAPI>(this: T, ...postMiddlewares: Array<Middleware['post']>) {\n const middlewares = postMiddlewares.map((post) => ({ post }));\n return this.withMiddleware<T>(...middlewares);\n }\n\n /**\n * Check if the given MIME is a JSON MIME.\n * JSON MIME examples:\n * application/json\n * application/json; charset=UTF8\n * APPLICATION/JSON\n * application/vnd.company+json\n * @param mime - MIME (Multipurpose Internet Mail Extensions)\n * @return True if the given MIME is JSON, false otherwise.\n */\n protected isJsonMime(mime: string | null | undefined): boolean {\n if (!mime) {\n return false;\n }\n return BaseAPI.jsonRegex.test(mime);\n }\n\n protected async request(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction): Promise<Response> {\n const { url, init } = await this.createFetchParams(context, initOverrides);\n const response = await this.fetchApi(url, init);\n if (response && (response.status >= 200 && response.status < 300)) {\n return response;\n }\n throw new ResponseError(response, 'Response returned an error code');\n }\n\n private async createFetchParams(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction) {\n let url = this.configuration.basePath + context.path;\n if (context.query !== undefined && Object.keys(context.query).length !== 0) {\n // only add the querystring to the URL if there are query parameters.\n // this is done to avoid urls ending with a \"?\" character which buggy webservers\n // do not handle correctly sometimes.\n url += '?' + this.configuration.queryParamsStringify(context.query);\n }\n\n const headers = Object.assign({}, this.configuration.headers, context.headers);\n Object.keys(headers).forEach(key => headers[key] === undefined ? delete headers[key] : {});\n\n const initOverrideFn =\n typeof initOverrides === \"function\"\n ? initOverrides\n : async () => initOverrides;\n\n const initParams = {\n method: context.method,\n headers,\n body: context.body,\n credentials: this.configuration.credentials,\n };\n\n const overriddenInit: RequestInit = {\n ...initParams,\n ...(await initOverrideFn({\n init: initParams,\n context,\n }))\n };\n\n let body: any;\n if (isFormData(overriddenInit.body)\n || (overriddenInit.body instanceof URLSearchParams)\n || isBlob(overriddenInit.body)) {\n body = overriddenInit.body;\n } else if (this.isJsonMime(headers['Content-Type'])) {\n body = JSON.stringify(overriddenInit.body);\n } else {\n body = overriddenInit.body;\n }\n\n const init: RequestInit = {\n ...overriddenInit,\n body\n };\n\n return { url, init };\n }\n\n private fetchApi = async (url: string, init: RequestInit) => {\n let fetchParams = { url, init };\n for (const middleware of this.middleware) {\n if (middleware.pre) {\n fetchParams = await middleware.pre({\n fetch: this.fetchApi,\n ...fetchParams,\n }) || fetchParams;\n }\n }\n let response: Response | undefined = undefined;\n try {\n response = await (this.configuration.fetchApi || fetch)(fetchParams.url, fetchParams.init);\n } catch (e) {\n for (const middleware of this.middleware) {\n if (middleware.onError) {\n response = await middleware.onError({\n fetch: this.fetchApi,\n url: fetchParams.url,\n init: fetchParams.init,\n error: e,\n response: response ? response.clone() : undefined,\n }) || response;\n }\n }\n if (response === undefined) {\n if (e instanceof Error) {\n throw new FetchError(e, 'The request failed and the interceptors did not return an alternative response');\n } else {\n throw e;\n }\n }\n }\n for (const middleware of this.middleware) {\n if (middleware.post) {\n response = await middleware.post({\n fetch: this.fetchApi,\n url: fetchParams.url,\n init: fetchParams.init,\n response: response.clone(),\n }) || response;\n }\n }\n return response;\n }\n\n /**\n * Create a shallow clone of `this` by constructing a new instance\n * and then shallow cloning data members.\n */\n private clone<T extends BaseAPI>(this: T): T {\n const constructor = this.constructor as any;\n const next = new constructor(this.configuration);\n next.middleware = this.middleware.slice();\n return next;\n }\n};\n\nfunction isBlob(value: any): value is Blob {\n return typeof Blob !== 'undefined' && value instanceof Blob;\n}\n\nfunction isFormData(value: any): value is FormData {\n return typeof FormData !== \"undefined\" && value instanceof FormData;\n}\n\nexport class ResponseError extends Error {\n override name: \"ResponseError\" = \"ResponseError\";\n constructor(public response: Response, msg?: string) {\n super(msg);\n }\n}\n\nexport class FetchError extends Error {\n override name: \"FetchError\" = \"FetchError\";\n constructor(public cause: Error, msg?: string) {\n super(msg);\n }\n}\n\nexport class RequiredError extends Error {\n override name: \"RequiredError\" = \"RequiredError\";\n constructor(public field: string, msg?: string) {\n super(msg);\n }\n}\n\nexport const COLLECTION_FORMATS = {\n csv: \",\",\n ssv: \" \",\n tsv: \"\\t\",\n pipes: \"|\",\n};\n\nexport type FetchAPI = WindowOrWorkerGlobalScope['fetch'];\n\nexport type Json = any;\nexport type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD';\nexport type HTTPHeaders = { [key: string]: string };\nexport type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery };\nexport type HTTPBody = Json | FormData | URLSearchParams;\nexport type HTTPRequestInit = { headers?: HTTPHeaders; method: HTTPMethod; credentials?: RequestCredentials; body?: HTTPBody };\nexport type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';\n\nexport type InitOverrideFunction = (requestContext: { init: HTTPRequestInit, context: RequestOpts }) => Promise<RequestInit>\n\nexport interface FetchParams {\n url: string;\n init: RequestInit;\n}\n\nexport interface RequestOpts {\n path: string;\n method: HTTPMethod;\n headers: HTTPHeaders;\n query?: HTTPQuery;\n body?: HTTPBody;\n}\n\nexport function querystring(params: HTTPQuery, prefix: string = ''): string {\n return Object.keys(params)\n .map(key => querystringSingleKey(key, params[key], prefix))\n .filter(part => part.length > 0)\n .join('&');\n}\n\nfunction querystringSingleKey(key: string, value: string | number | null | undefined | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery, keyPrefix: string = ''): string {\n const fullKey = keyPrefix + (keyPrefix.length ? `[${key}]` : key);\n if (value instanceof Array) {\n const multiValue = value.map(singleValue => encodeURIComponent(String(singleValue)))\n .join(`&${encodeURIComponent(fullKey)}=`);\n return `${encodeURIComponent(fullKey)}=${multiValue}`;\n }\n if (value instanceof Set) {\n const valueAsArray = Array.from(value);\n return querystringSingleKey(key, valueAsArray, keyPrefix);\n }\n if (value instanceof Date) {\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`;\n }\n if (value instanceof Object) {\n return querystring(value as HTTPQuery, fullKey);\n }\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`;\n}\n\nexport function exists(json: any, key: string) {\n const value = json[key];\n return value !== null && value !== undefined;\n}\n\nexport function mapValues(data: any, fn: (item: any) => any) {\n const result: { [key: string]: any } = {};\n for (const key of Object.keys(data)) {\n result[key] = fn(data[key]);\n }\n return result;\n}\n\nexport function canConsumeForm(consumes: Consume[]): boolean {\n for (const consume of consumes) {\n if ('multipart/form-data' === consume.contentType) {\n return true;\n }\n }\n return false;\n}\n\nexport interface Consume {\n contentType: string;\n}\n\nexport interface RequestContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n}\n\nexport interface ResponseContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n response: Response;\n}\n\nexport interface ErrorContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n error: unknown;\n response?: Response;\n}\n\nexport interface Middleware {\n pre?(context: RequestContext): Promise<FetchParams | void>;\n post?(context: ResponseContext): Promise<Response | void>;\n onError?(context: ErrorContext): Promise<Response | void>;\n}\n\nexport interface ApiResponse<T> {\n raw: Response;\n value(): Promise<T>;\n}\n\nexport interface ResponseTransformer<T> {\n (json: any): T;\n}\n\nexport class JSONApiResponse<T> {\n constructor(public raw: Response, private transformer: ResponseTransformer<T> = (jsonValue: any) => jsonValue) {}\n\n async value(): Promise<T> {\n return this.transformer(await this.raw.json());\n }\n}\n\nexport class VoidApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<void> {\n return undefined;\n }\n}\n\nexport class BlobApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<Blob> {\n return await this.raw.blob();\n };\n}\n\nexport class TextApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<string> {\n return await this.raw.text();\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface AddressExposure\n */\nexport interface AddressExposure {\n /**\n * DTO.KYT.ADDRESS_EXPOSURE.CATEGORY\n * @type {string}\n * @memberof AddressExposure\n */\n category: string;\n /**\n * DTO.KYT.ADDRESS_EXPOSURE.VALUE\n * @type {string}\n * @memberof AddressExposure\n */\n value: string;\n /**\n * DTO.KYT.ADDRESS_EXPOSURE.EXPOSURE_TYPE\n * @type {string}\n * @memberof AddressExposure\n */\n exposureType: string;\n /**\n * DTO.KYT.ADDRESS_EXPOSURE.DIRECTION\n * @type {string}\n * @memberof AddressExposure\n */\n direction: string;\n}\n\n/**\n * Check if a given object implements the AddressExposure interface.\n */\nexport function instanceOfAddressExposure(value: object): value is AddressExposure {\n if (!('category' in value) || value['category'] === undefined) return false;\n if (!('value' in value) || value['value'] === undefined) return false;\n if (!('exposureType' in value) || value['exposureType'] === undefined) return false;\n if (!('direction' in value) || value['direction'] === undefined) return false;\n return true;\n}\n\nexport function AddressExposureFromJSON(json: any): AddressExposure {\n return AddressExposureFromJSONTyped(json, false);\n}\n\nexport function AddressExposureFromJSONTyped(json: any, ignoreDiscriminator: boolean): AddressExposure {\n if (json == null) {\n return json;\n }\n return {\n \n 'category': json['category'],\n 'value': json['value'],\n 'exposureType': json['exposureType'],\n 'direction': json['direction'],\n };\n}\n\nexport function AddressExposureToJSON(json: any): AddressExposure {\n return AddressExposureToJSONTyped(json, false);\n}\n\nexport function AddressExposureToJSONTyped(value?: AddressExposure | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'category': value['category'],\n 'value': value['value'],\n 'exposureType': value['exposureType'],\n 'direction': value['direction'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { AddressExposure } from './AddressExposure';\nimport {\n AddressExposureFromJSON,\n AddressExposureFromJSONTyped,\n AddressExposureToJSON,\n AddressExposureToJSONTyped,\n} from './AddressExposure';\n\n/**\n * \n * @export\n * @interface AddressRiskResponseDTO\n */\nexport interface AddressRiskResponseDTO {\n /**\n * DTO.KYT.ADDRESS_RISK_RESPONSE.ADDRESS\n * @type {string}\n * @memberof AddressRiskResponseDTO\n */\n address: string;\n /**\n * DTO.KYT.ADDRESS_RISK_RESPONSE.RISK\n * @type {string}\n * @memberof AddressRiskResponseDTO\n */\n risk: string;\n /**\n * DTO.KYT.ADDRESS_RISK_RESPONSE.RISK_REASON\n * @type {string}\n * @memberof AddressRiskResponseDTO\n */\n riskReason: string;\n /**\n * DTO.KYT.ADDRESS_RISK_RESPONSE.ADDRESS_TYPE\n * @type {string}\n * @memberof AddressRiskResponseDTO\n */\n addressType: string;\n /**\n * DTO.KYT.ADDRESS_RISK_RESPONSE.CLUSTER\n * @type {string}\n * @memberof AddressRiskResponseDTO\n */\n cluster: string;\n /**\n * DTO.KYT.ADDRESS_RISK_RESPONSE.ADDRESS_IDENTIFICATIONS\n * @type {Array<string>}\n * @memberof AddressRiskResponseDTO\n */\n addressIdentifications: Array<string>;\n /**\n * DTO.KYT.ADDRESS_RISK_RESPONSE.EXPOSURES\n * @type {Array<AddressExposure>}\n * @memberof AddressRiskResponseDTO\n */\n exposures: Array<AddressExposure>;\n /**\n * DTO.KYT.ADDRESS_RISK_RESPONSE.TRIGGERS\n * @type {Array<string>}\n * @memberof AddressRiskResponseDTO\n */\n triggers: Array<string>;\n /**\n * DTO.KYT.ADDRESS_RISK_RESPONSE.STATUS\n * @type {string}\n * @memberof AddressRiskResponseDTO\n */\n status: string;\n}\n\n/**\n * Check if a given object implements the AddressRiskResponseDTO interface.\n */\nexport function instanceOfAddressRiskResponseDTO(value: object): value is AddressRiskResponseDTO {\n if (!('address' in value) || value['address'] === undefined) return false;\n if (!('risk' in value) || value['risk'] === undefined) return false;\n if (!('riskReason' in value) || value['riskReason'] === undefined) return false;\n if (!('addressType' in value) || value['addressType'] === undefined) return false;\n if (!('cluster' in value) || value['cluster'] === undefined) return false;\n if (!('addressIdentifications' in value) || value['addressIdentifications'] === undefined) return false;\n if (!('exposures' in value) || value['exposures'] === undefined) return false;\n if (!('triggers' in value) || value['triggers'] === undefined) return false;\n if (!('status' in value) || value['status'] === undefined) return false;\n return true;\n}\n\nexport function AddressRiskResponseDTOFromJSON(json: any): AddressRiskResponseDTO {\n return AddressRiskResponseDTOFromJSONTyped(json, false);\n}\n\nexport function AddressRiskResponseDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): AddressRiskResponseDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'address': json['address'],\n 'risk': json['risk'],\n 'riskReason': json['riskReason'],\n 'addressType': json['addressType'],\n 'cluster': json['cluster'],\n 'addressIdentifications': json['addressIdentifications'],\n 'exposures': ((json['exposures'] as Array<any>).map(AddressExposureFromJSON)),\n 'triggers': json['triggers'],\n 'status': json['status'],\n };\n}\n\nexport function AddressRiskResponseDTOToJSON(json: any): AddressRiskResponseDTO {\n return AddressRiskResponseDTOToJSONTyped(json, false);\n}\n\nexport function AddressRiskResponseDTOToJSONTyped(value?: AddressRiskResponseDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'address': value['address'],\n 'risk': value['risk'],\n 'riskReason': value['riskReason'],\n 'addressType': value['addressType'],\n 'cluster': value['cluster'],\n 'addressIdentifications': value['addressIdentifications'],\n 'exposures': ((value['exposures'] as Array<any>).map(AddressExposureToJSON)),\n 'triggers': value['triggers'],\n 'status': value['status'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface AlertDetail\n */\nexport interface AlertDetail {\n /**\n * DTO.KYT.ALERT_DETAIL.ALERT_LEVEL\n * @type {string}\n * @memberof AlertDetail\n */\n alertLevel: string;\n /**\n * DTO.KYT.ALERT_DETAIL.SERVICE\n * @type {string}\n * @memberof AlertDetail\n */\n service: string;\n /**\n * DTO.KYT.ALERT_DETAIL.EXTERNAL_ID\n * @type {string}\n * @memberof AlertDetail\n */\n externalId: string;\n /**\n * DTO.KYT.ALERT_DETAIL.ALERT_AMOUNT\n * @type {string}\n * @memberof AlertDetail\n */\n alertAmount: string;\n /**\n * DTO.KYT.ALERT_DETAIL.EXPOSURE_TYPE\n * @type {string}\n * @memberof AlertDetail\n */\n exposureType: string;\n /**\n * DTO.KYT.ALERT_DETAIL.CATEGORY_ID\n * @type {number}\n * @memberof AlertDetail\n */\n categoryId: number;\n /**\n * DTO.KYT.ALERT_DETAIL.MEMO\n * @type {string}\n * @memberof AlertDetail\n */\n memo: string;\n}\n\n/**\n * Check if a given object implements the AlertDetail interface.\n */\nexport function instanceOfAlertDetail(value: object): value is AlertDetail {\n if (!('alertLevel' in value) || value['alertLevel'] === undefined) return false;\n if (!('service' in value) || value['service'] === undefined) return false;\n if (!('externalId' in value) || value['externalId'] === undefined) return false;\n if (!('alertAmount' in value) || value['alertAmount'] === undefined) return false;\n if (!('exposureType' in value) || value['exposureType'] === undefined) return false;\n if (!('categoryId' in value) || value['categoryId'] === undefined) return false;\n if (!('memo' in value) || value['memo'] === undefined) return false;\n return true;\n}\n\nexport function AlertDetailFromJSON(json: any): AlertDetail {\n return AlertDetailFromJSONTyped(json, false);\n}\n\nexport function AlertDetailFromJSONTyped(json: any, ignoreDiscriminator: boolean): AlertDetail {\n if (json == null) {\n return json;\n }\n return {\n \n 'alertLevel': json['alertLevel'],\n 'service': json['service'],\n 'externalId': json['externalId'],\n 'alertAmount': json['alertAmount'],\n 'exposureType': json['exposureType'],\n 'categoryId': json['categoryId'],\n 'memo': json['memo'],\n };\n}\n\nexport function AlertDetailToJSON(json: any): AlertDetail {\n return AlertDetailToJSONTyped(json, false);\n}\n\nexport function AlertDetailToJSONTyped(value?: AlertDetail | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'alertLevel': value['alertLevel'],\n 'service': value['service'],\n 'externalId': value['externalId'],\n 'alertAmount': value['alertAmount'],\n 'exposureType': value['exposureType'],\n 'categoryId': value['categoryId'],\n 'memo': value['memo'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface OnChainActivity\n */\nexport interface OnChainActivity {\n /**\n * DTO.KYT.ON_CHAIN_ACTIVITY.FIRST_TRANSACTION_AT\n * @type {number}\n * @memberof OnChainActivity\n */\n firstTransactionAt: number;\n}\n\n/**\n * Check if a given object implements the OnChainActivity interface.\n */\nexport function instanceOfOnChainActivity(value: object): value is OnChainActivity {\n if (!('firstTransactionAt' in value) || value['firstTransactionAt'] === undefined) return false;\n return true;\n}\n\nexport function OnChainActivityFromJSON(json: any): OnChainActivity {\n return OnChainActivityFromJSONTyped(json, false);\n}\n\nexport function OnChainActivityFromJSONTyped(json: any, ignoreDiscriminator: boolean): OnChainActivity {\n if (json == null) {\n return json;\n }\n return {\n \n 'firstTransactionAt': json['first_transaction_at'],\n };\n}\n\nexport function OnChainActivityToJSON(json: any): OnChainActivity {\n return OnChainActivityToJSONTyped(json, false);\n}\n\nexport function OnChainActivityToJSONTyped(value?: OnChainActivity | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'first_transaction_at': value['firstTransactionAt'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { OnChainActivity } from './OnChainActivity';\nimport {\n OnChainActivityFromJSON,\n OnChainActivityFromJSONTyped,\n OnChainActivityToJSON,\n OnChainActivityToJSONTyped,\n} from './OnChainActivity';\n\n/**\n * \n * @export\n * @interface AlteryaIdentification\n */\nexport interface AlteryaIdentification {\n /**\n * DTO.KYT.ALTERYA_IDENTIFICATION.OBJECT\n * @type {string}\n * @memberof AlteryaIdentification\n */\n object: string;\n /**\n * DTO.KYT.ALTERYA_IDENTIFICATION.ADDRESS\n * @type {string}\n * @memberof AlteryaIdentification\n */\n address: string;\n /**\n * DTO.KYT.ALTERYA_IDENTIFICATION.CHAIN\n * @type {string}\n * @memberof AlteryaIdentification\n */\n chain: string;\n /**\n * DTO.KYT.ALTERYA_IDENTIFICATION.RISK_LEVEL\n * @type {string}\n * @memberof AlteryaIdentification\n */\n riskLevel: string;\n /**\n * DTO.KYT.ALTERYA_IDENTIFICATION.REASON\n * @type {string}\n * @memberof AlteryaIdentification\n */\n reason: string;\n /**\n * DTO.KYT.ALTERYA_IDENTIFICATION.LABELS\n * @type {Array<string>}\n * @memberof AlteryaIdentification\n */\n labels: Array<string>;\n /**\n * DTO.KYT.ALTERYA_IDENTIFICATION.ON_CHAIN_ACTIVITY\n * @type {OnChainActivity}\n * @memberof AlteryaIdentification\n */\n onChainActivity: OnChainActivity;\n /**\n * DTO.KYT.ALTERYA_IDENTIFICATION.RISK_SCORE\n * @type {string}\n * @memberof AlteryaIdentification\n */\n riskScore: string;\n}\n\n/**\n * Check if a given object implements the AlteryaIdentification interface.\n */\nexport function instanceOfAlteryaIdentification(value: object): value is AlteryaIdentification {\n if (!('object' in value) || value['object'] === undefined) return false;\n if (!('address' in value) || value['address'] === undefined) return false;\n if (!('chain' in value) || value['chain'] === undefined) return false;\n if (!('riskLevel' in value) || value['riskLevel'] === undefined) return false;\n if (!('reason' in value) || value['reason'] === undefined) return false;\n if (!('labels' in value) || value['labels'] === undefined) return false;\n if (!('onChainActivity' in value) || value['onChainActivity'] === undefined) return false;\n if (!('riskScore' in value) || value['riskScore'] === undefined) return false;\n return true;\n}\n\nexport function AlteryaIdentificationFromJSON(json: any): AlteryaIdentification {\n return AlteryaIdentificationFromJSONTyped(json, false);\n}\n\nexport function AlteryaIdentificationFromJSONTyped(json: any, ignoreDiscriminator: boolean): AlteryaIdentification {\n if (json == null) {\n return json;\n }\n return {\n \n 'object': json['object'],\n 'address': json['address'],\n 'chain': json['chain'],\n 'riskLevel': json['risk_level'],\n 'reason': json['reason'],\n 'labels': json['labels'],\n 'onChainActivity': OnChainActivityFromJSON(json['on_chain_activity']),\n 'riskScore': json['risk_score'],\n };\n}\n\nexport function AlteryaIdentificationToJSON(json: any): AlteryaIdentification {\n return AlteryaIdentificationToJSONTyped(json, false);\n}\n\nexport function AlteryaIdentificationToJSONTyped(value?: AlteryaIdentification | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'object': value['object'],\n 'address': value['address'],\n 'chain': value['chain'],\n 'risk_level': value['riskLevel'],\n 'reason': value['reason'],\n 'labels': value['labels'],\n 'on_chain_activity': OnChainActivityToJSON(value['onChainActivity']),\n 'risk_score': value['riskScore'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface BlockchainDTO\n */\nexport interface BlockchainDTO {\n /**\n * DTO.BLOCKCHAIN.SYMBOL\n * @type {string}\n * @memberof BlockchainDTO\n */\n symbol: string;\n /**\n * DTO.BLOCKCHAIN.NAME\n * @type {string}\n * @memberof BlockchainDTO\n */\n name: string;\n /**\n * DTO.BLOCKCHAIN.EXPLORER_URL\n * @type {string}\n * @memberof BlockchainDTO\n */\n explorerUrl: string;\n /**\n * DTO.BLOCKCHAIN.CHAIN_ID\n * @type {number}\n * @memberof BlockchainDTO\n */\n chainId: number;\n}\n\n/**\n * Check if a given object implements the BlockchainDTO interface.\n */\nexport function instanceOfBlockchainDTO(value: object): value is BlockchainDTO {\n if (!('symbol' in value) || value['symbol'] === undefined) return false;\n if (!('name' in value) || value['name'] === undefined) return false;\n if (!('explorerUrl' in value) || value['explorerUrl'] === undefined) return false;\n if (!('chainId' in value) || value['chainId'] === undefined) return false;\n return true;\n}\n\nexport function BlockchainDTOFromJSON(json: any): BlockchainDTO {\n return BlockchainDTOFromJSONTyped(json, false);\n}\n\nexport function BlockchainDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): BlockchainDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'symbol': json['symbol'],\n 'name': json['name'],\n 'explorerUrl': json['explorerUrl'],\n 'chainId': json['chainId'],\n };\n}\n\nexport function BlockchainDTOToJSON(json: any): BlockchainDTO {\n return BlockchainDTOToJSONTyped(json, false);\n}\n\nexport function BlockchainDTOToJSONTyped(value?: BlockchainDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'symbol': value['symbol'],\n 'name': value['name'],\n 'explorerUrl': value['explorerUrl'],\n 'chainId': value['chainId'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface BlockchainLatestBlockDTO\n */\nexport interface BlockchainLatestBlockDTO {\n /**\n * DTO.BLOCKCHAIN.LATEST_BLOCK.BLOCKHASH\n * @type {string}\n * @memberof BlockchainLatestBlockDTO\n */\n blockhash: string;\n /**\n * DTO.BLOCKCHAIN.LATEST_BLOCK.LAST_VALID_BLOCK_HEIGHT\n * @type {number}\n * @memberof BlockchainLatestBlockDTO\n */\n lastValidBlockHeight: number;\n}\n\n/**\n * Check if a given object implements the BlockchainLatestBlockDTO interface.\n */\nexport function instanceOfBlockchainLatestBlockDTO(value: object): value is BlockchainLatestBlockDTO {\n if (!('blockhash' in value) || value['blockhash'] === undefined) return false;\n if (!('lastValidBlockHeight' in value) || value['lastValidBlockHeight'] === undefined) return false;\n return true;\n}\n\nexport function BlockchainLatestBlockDTOFromJSON(json: any): BlockchainLatestBlockDTO {\n return BlockchainLatestBlockDTOFromJSONTyped(json, false);\n}\n\nexport function BlockchainLatestBlockDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): BlockchainLatestBlockDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'blockhash': json['blockhash'],\n 'lastValidBlockHeight': json['lastValidBlockHeight'],\n };\n}\n\nexport function BlockchainLatestBlockDTOToJSON(json: any): BlockchainLatestBlockDTO {\n return BlockchainLatestBlockDTOToJSONTyped(json, false);\n}\n\nexport function BlockchainLatestBlockDTOToJSONTyped(value?: BlockchainLatestBlockDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'blockhash': value['blockhash'],\n 'lastValidBlockHeight': value['lastValidBlockHeight'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface BooleanResultDTO\n */\nexport interface BooleanResultDTO {\n /**\n * DTO.BOOLEAN_RESULT.SUCCESS\n * @type {boolean}\n * @memberof BooleanResultDTO\n */\n success: boolean;\n}\n\n/**\n * Check if a given object implements the BooleanResultDTO interface.\n */\nexport function instanceOfBooleanResultDTO(value: object): value is BooleanResultDTO {\n if (!('success' in value) || value['success'] === undefined) return false;\n return true;\n}\n\nexport function BooleanResultDTOFromJSON(json: any): BooleanResultDTO {\n return BooleanResultDTOFromJSONTyped(json, false);\n}\n\nexport function BooleanResultDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): BooleanResultDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'success': json['success'],\n };\n}\n\nexport function BooleanResultDTOToJSON(json: any): BooleanResultDTO {\n return BooleanResultDTOToJSONTyped(json, false);\n}\n\nexport function BooleanResultDTOToJSONTyped(value?: BooleanResultDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'success': value['success'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface CalculatePnlInput\n */\nexport interface CalculatePnlInput {\n /**\n * DTO.WALLET.CALCULATE_PNL.INPUT.TOKEN_ADDRESSES\n * @type {Array<string>}\n * @memberof CalculatePnlInput\n */\n tokenAddresses?: Array<string>;\n}\n\n/**\n * Check if a given object implements the CalculatePnlInput interface.\n */\nexport function instanceOfCalculatePnlInput(value: object): value is CalculatePnlInput {\n return true;\n}\n\nexport function CalculatePnlInputFromJSON(json: any): CalculatePnlInput {\n return CalculatePnlInputFromJSONTyped(json, false);\n}\n\nexport function CalculatePnlInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): CalculatePnlInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'tokenAddresses': json['tokenAddresses'] == null ? undefined : json['tokenAddresses'],\n };\n}\n\nexport function CalculatePnlInputToJSON(json: any): CalculatePnlInput {\n return CalculatePnlInputToJSONTyped(json, false);\n}\n\nexport function CalculatePnlInputToJSONTyped(value?: CalculatePnlInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'tokenAddresses': value['tokenAddresses'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const Resolution = {\n _1s: '1s',\n _15s: '15s',\n _30s: '30s',\n _1m: '1m',\n _5m: '5m',\n _15m: '15m',\n _1h: '1h',\n _4h: '4h',\n _12h: '12h',\n _1d: '1d'\n} as const;\nexport type Resolution = typeof Resolution[keyof typeof Resolution];\n\n\nexport function instanceOfResolution(value: any): boolean {\n for (const key in Resolution) {\n if (Object.prototype.hasOwnProperty.call(Resolution, key)) {\n if (Resolution[key as keyof typeof Resolution] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function ResolutionFromJSON(json: any): Resolution {\n return ResolutionFromJSONTyped(json, false);\n}\n\nexport function ResolutionFromJSONTyped(json: any, ignoreDiscriminator: boolean): Resolution {\n return json as Resolution;\n}\n\nexport function ResolutionToJSON(value?: Resolution | null): any {\n return value as any;\n}\n\nexport function ResolutionToJSONTyped(value: any, ignoreDiscriminator: boolean): Resolution {\n return value as Resolution;\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { Resolution } from './Resolution';\nimport {\n ResolutionFromJSON,\n ResolutionFromJSONTyped,\n ResolutionToJSON,\n ResolutionToJSONTyped,\n} from './Resolution';\n\n/**\n * \n * @export\n * @interface Candle\n */\nexport interface Candle {\n /**\n * DTO.CANDLE.OPEN\n * @type {string}\n * @memberof Candle\n */\n open: string;\n /**\n * DTO.CANDLE.CLOSE\n * @type {string}\n * @memberof Candle\n */\n close: string;\n /**\n * DTO.CANDLE.HIGH\n * @type {string}\n * @memberof Candle\n */\n high: string;\n /**\n * DTO.CANDLE.LOW\n * @type {string}\n * @memberof Candle\n */\n low: string;\n /**\n * DTO.CANDLE.VOLUME\n * @type {string}\n * @memberof Candle\n */\n volume: string;\n /**\n * DTO.CANDLE.RESOLUTION\n * @type {Resolution}\n * @memberof Candle\n */\n resolution: Resolution;\n /**\n * DTO.CANDLE.TIME\n * @type {number}\n * @memberof Candle\n */\n time: number;\n}\n\n\n\n/**\n * Check if a given object implements the Candle interface.\n */\nexport function instanceOfCandle(value: object): value is Candle {\n if (!('open' in value) || value['open'] === undefined) return false;\n if (!('close' in value) || value['close'] === undefined) return false;\n if (!('high' in value) || value['high'] === undefined) return false;\n if (!('low' in value) || value['low'] === undefined) return false;\n if (!('volume' in value) || value['volume'] === undefined) return false;\n if (!('resolution' in value) || value['resolution'] === undefined) return false;\n if (!('time' in value) || value['time'] === undefined) return false;\n return true;\n}\n\nexport function CandleFromJSON(json: any): Candle {\n return CandleFromJSONTyped(json, false);\n}\n\nexport function CandleFromJSONTyped(json: any, ignoreDiscriminator: boolean): Candle {\n if (json == null) {\n return json;\n }\n return {\n \n 'open': json['open'],\n 'close': json['close'],\n 'high': json['high'],\n 'low': json['low'],\n 'volume': json['volume'],\n 'resolution': ResolutionFromJSON(json['resolution']),\n 'time': json['time'],\n };\n}\n\nexport function CandleToJSON(json: any): Candle {\n return CandleToJSONTyped(json, false);\n}\n\nexport function CandleToJSONTyped(value?: Candle | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'open': value['open'],\n 'close': value['close'],\n 'high': value['high'],\n 'low': value['low'],\n 'volume': value['volume'],\n 'resolution': ResolutionToJSON(value['resolution']),\n 'time': value['time'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const Chain = {\n Sol: 'sol',\n Base: 'base',\n Bsc: 'bsc',\n Polygon: 'polygon',\n Arbitrum: 'arbitrum',\n Optimism: 'optimism',\n Avalanche: 'avalanche',\n Eth: 'eth',\n Zksync: 'zksync',\n Sui: 'sui'\n} as const;\nexport type Chain = typeof Chain[keyof typeof Chain];\n\n\nexport function instanceOfChain(value: any): boolean {\n for (const key in Chain) {\n if (Object.prototype.hasOwnProperty.call(Chain, key)) {\n if (Chain[key as keyof typeof Chain] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function ChainFromJSON(json: any): Chain {\n return ChainFromJSONTyped(json, false);\n}\n\nexport function ChainFromJSONTyped(json: any, ignoreDiscriminator: boolean): Chain {\n return json as Chain;\n}\n\nexport function ChainToJSON(value?: Chain | null): any {\n return value as any;\n}\n\nexport function ChainToJSONTyped(value: any, ignoreDiscriminator: boolean): Chain {\n return value as Chain;\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ChainalysisAddressIdentification\n */\nexport interface ChainalysisAddressIdentification {\n /**\n * DTO.KYT.CHAINALYSIS_ADDRESS_IDENTIFICATION.ADDRESS_NAME\n * @type {string}\n * @memberof ChainalysisAddressIdentification\n */\n addressName: string;\n /**\n * DTO.KYT.CHAINALYSIS_ADDRESS_IDENTIFICATION.DESCRIPTION\n * @type {string}\n * @memberof ChainalysisAddressIdentification\n */\n description: string;\n /**\n * DTO.KYT.CHAINALYSIS_ADDRESS_IDENTIFICATION.CATEGORY_ID\n * @type {number}\n * @memberof ChainalysisAddressIdentification\n */\n categoryId: number;\n}\n\n/**\n * Check if a given object implements the ChainalysisAddressIdentification interface.\n */\nexport function instanceOfChainalysisAddressIdentification(value: object): value is ChainalysisAddressIdentification {\n if (!('addressName' in value) || value['addressName'] === undefined) return false;\n if (!('description' in value) || value['description'] === undefined) return false;\n if (!('categoryId' in value) || value['categoryId'] === undefined) return false;\n return true;\n}\n\nexport function ChainalysisAddressIdentificationFromJSON(json: any): ChainalysisAddressIdentification {\n return ChainalysisAddressIdentificationFromJSONTyped(json, false);\n}\n\nexport function ChainalysisAddressIdentificationFromJSONTyped(json: any, ignoreDiscriminator: boolean): ChainalysisAddressIdentification {\n if (json == null) {\n return json;\n }\n return {\n \n 'addressName': json['addressName'],\n 'description': json['description'],\n 'categoryId': json['categoryId'],\n };\n}\n\nexport function ChainalysisAddressIdentificationToJSON(json: any): ChainalysisAddressIdentification {\n return ChainalysisAddressIdentificationToJSONTyped(json, false);\n}\n\nexport function ChainalysisAddressIdentificationToJSONTyped(value?: ChainalysisAddressIdentification | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'addressName': value['addressName'],\n 'description': value['description'],\n 'categoryId': value['categoryId'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ClaimRedPacketInput\n */\nexport interface ClaimRedPacketInput {\n /**\n * DTO.RED_PACKET.CHAIN\n * @type {string}\n * @memberof ClaimRedPacketInput\n */\n chain: ClaimRedPacketInputChainEnum;\n /**\n * DTO.RED_PACKET.PACKET_ID\n * @type {string}\n * @memberof ClaimRedPacketInput\n */\n packetId?: string;\n /**\n * DTO.RED_PACKET.SHARE_ID\n * @type {string}\n * @memberof ClaimRedPacketInput\n */\n shareId?: string;\n /**\n * DTO.RED_PACKET.PASSWORD\n * @type {string}\n * @memberof ClaimRedPacketInput\n */\n password?: string;\n /**\n * DTO.RED_PACKET.CLAIMER\n * @type {string}\n * @memberof ClaimRedPacketInput\n */\n claimer: string;\n}\n\n\n/**\n * @export\n */\nexport const ClaimRedPacketInputChainEnum = {\n Sol: 'sol',\n Base: 'base',\n Bsc: 'bsc',\n Polygon: 'polygon',\n Arbitrum: 'arbitrum',\n Optimism: 'optimism',\n Avalanche: 'avalanche',\n Eth: 'eth',\n Zksync: 'zksync',\n Sui: 'sui'\n} as const;\nexport type ClaimRedPacketInputChainEnum = typeof ClaimRedPacketInputChainEnum[keyof typeof ClaimRedPacketInputChainEnum];\n\n\n/**\n * Check if a given object implements the ClaimRedPacketInput interface.\n */\nexport function instanceOfClaimRedPacketInput(value: object): value is ClaimRedPacketInput {\n if (!('chain' in value) || value['chain'] === undefined) return false;\n if (!('claimer' in value) || value['claimer'] === undefined) return false;\n return true;\n}\n\nexport function ClaimRedPacketInputFromJSON(json: any): ClaimRedPacketInput {\n return ClaimRedPacketInputFromJSONTyped(json, false);\n}\n\nexport function ClaimRedPacketInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): ClaimRedPacketInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'chain': json['chain'],\n 'packetId': json['packetId'] == null ? undefined : json['packetId'],\n 'shareId': json['shareId'] == null ? undefined : json['shareId'],\n 'password': json['password'] == null ? undefined : json['password'],\n 'claimer': json['claimer'],\n };\n}\n\nexport function ClaimRedPacketInputToJSON(json: any): ClaimRedPacketInput {\n return ClaimRedPacketInputToJSONTyped(json, false);\n}\n\nexport function ClaimRedPacketInputToJSONTyped(value?: ClaimRedPacketInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'chain': value['chain'],\n 'packetId': value['packetId'],\n 'shareId': value['shareId'],\n 'password': value['password'],\n 'claimer': value['claimer'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface CreateEndpointInput\n */\nexport interface CreateEndpointInput {\n /**\n * DTO.ENDPOINT.CHANNELS\n * @type {Array<string>}\n * @memberof CreateEndpointInput\n */\n channels?: Array<string>;\n /**\n * DTO.ENDPOINT.DESCRIPTION\n * @type {string}\n * @memberof CreateEndpointInput\n */\n description?: string;\n /**\n * DTO.ENDPOINT.DISABLED\n * @type {boolean}\n * @memberof CreateEndpointInput\n */\n disabled?: boolean;\n /**\n * DTO.ENDPOINT.FILTER_TYPES\n * @type {Array<string>}\n * @memberof CreateEndpointInput\n */\n filterTypes?: Array<string>;\n /**\n * DTO.ENDPOINT.METADATA\n * @type {object}\n * @memberof CreateEndpointInput\n */\n metadata?: object;\n /**\n * DTO.ENDPOINT.RATE_LIMIT\n * @type {number}\n * @memberof CreateEndpointInput\n */\n rateLimit?: number;\n /**\n * DTO.ENDPOINT.URL\n * @type {string}\n * @memberof CreateEndpointInput\n */\n url?: string;\n /**\n * DTO.ENDPOINT.FILTER\n * @type {string}\n * @memberof CreateEndpointInput\n */\n filter?: string;\n}\n\n/**\n * Check if a given object implements the CreateEndpointInput interface.\n */\nexport function instanceOfCreateEndpointInput(value: object): value is CreateEndpointInput {\n return true;\n}\n\nexport function CreateEndpointInputFromJSON(json: any): CreateEndpointInput {\n return CreateEndpointInputFromJSONTyped(json, false);\n}\n\nexport function CreateEndpointInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): CreateEndpointInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'channels': json['channels'] == null ? undefined : json['channels'],\n 'description': json['description'] == null ? undefined : json['description'],\n 'disabled': json['disabled'] == null ? undefined : json['disabled'],\n 'filterTypes': json['filterTypes'] == null ? undefined : json['filterTypes'],\n 'metadata': json['metadata'] == null ? undefined : json['metadata'],\n 'rateLimit': json['rateLimit'] == null ? undefined : json['rateLimit'],\n 'url': json['url'] == null ? undefined : json['url'],\n 'filter': json['filter'] == null ? undefined : json['filter'],\n };\n}\n\nexport function CreateEndpointInputToJSON(json: any): CreateEndpointInput {\n return CreateEndpointInputToJSONTyped(json, false);\n}\n\nexport function CreateEndpointInputToJSONTyped(value?: CreateEndpointInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'channels': value['channels'],\n 'description': value['description'],\n 'disabled': value['disabled'],\n 'filterTypes': value['filterTypes'],\n 'metadata': value['metadata'],\n 'rateLimit': value['rateLimit'],\n 'url': value['url'],\n 'filter': value['filter'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface CreateRedPacketInput\n */\nexport interface CreateRedPacketInput {\n /**\n * DTO.RED_PACKET.CHAIN\n * @type {string}\n * @memberof CreateRedPacketInput\n */\n chain: CreateRedPacketInputChainEnum;\n /**\n * DTO.RED_PACKET.CREATOR\n * @type {string}\n * @memberof CreateRedPacketInput\n */\n creator: string;\n /**\n * DTO.RED_PACKET.MINT\n * @type {string}\n * @memberof CreateRedPacketInput\n */\n mint: string;\n /**\n * DTO.RED_PACKET.MAX_CLAIMS\n * @type {number}\n * @memberof CreateRedPacketInput\n */\n maxClaims: number;\n /**\n * DTO.RED_PACKET.TOTAL_AMOUNT\n * @type {string}\n * @memberof CreateRedPacketInput\n */\n totalAmount?: string;\n /**\n * DTO.RED_PACKET.FIXED_AMOUNT\n * @type {string}\n * @memberof CreateRedPacketInput\n */\n fixedAmount?: string;\n /**\n * DTO.RED_PACKET.MEMO\n * @type {string}\n * @memberof CreateRedPacketInput\n */\n memo?: string;\n /**\n * DTO.RED_PACKET.PASSWORD\n * @type {string}\n * @memberof CreateRedPacketInput\n */\n password?: string;\n /**\n * DTO.RED_PACKET.CLAIM_AUTHORITY\n * @type {string}\n * @memberof CreateRedPacketInput\n */\n claimAuthority?: string;\n}\n\n\n/**\n * @export\n */\nexport const CreateRedPacketInputChainEnum = {\n Sol: 'sol',\n Base: 'base',\n Bsc: 'bsc',\n Polygon: 'polygon',\n Arbitrum: 'arbitrum',\n Optimism: 'optimism',\n Avalanche: 'avalanche',\n Eth: 'eth',\n Zksync: 'zksync',\n Sui: 'sui'\n} as const;\nexport type CreateRedPacketInputChainEnum = typeof CreateRedPacketInputChainEnum[keyof typeof CreateRedPacketInputChainEnum];\n\n\n/**\n * Check if a given object implements the CreateRedPacketInput interface.\n */\nexport function instanceOfCreateRedPacketInput(value: object): value is CreateRedPacketInput {\n if (!('chain' in value) || value['chain'] === undefined) return false;\n if (!('creator' in value) || value['creator'] === undefined) return false;\n if (!('mint' in value) || value['mint'] === undefined) return false;\n if (!('maxClaims' in value) || value['maxClaims'] === undefined) return false;\n return true;\n}\n\nexport function CreateRedPacketInputFromJSON(json: any): CreateRedPacketInput {\n return CreateRedPacketInputFromJSONTyped(json, false);\n}\n\nexport function CreateRedPacketInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): CreateRedPacketInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'chain': json['chain'],\n 'creator': json['creator'],\n 'mint': json['mint'],\n 'maxClaims': json['maxClaims'],\n 'totalAmount': json['totalAmount'] == null ? undefined : json['totalAmount'],\n 'fixedAmount': json['fixedAmount'] == null ? undefined : json['fixedAmount'],\n 'memo': json['memo'] == null ? undefined : json['memo'],\n 'password': json['password'] == null ? undefined : json['password'],\n 'claimAuthority': json['claimAuthority'] == null ? undefined : json['claimAuthority'],\n };\n}\n\nexport function CreateRedPacketInputToJSON(json: any): CreateRedPacketInput {\n return CreateRedPacketInputToJSONTyped(json, false);\n}\n\nexport function CreateRedPacketInputToJSONTyped(value?: CreateRedPacketInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'chain': value['chain'],\n 'creator': value['creator'],\n 'mint': value['mint'],\n 'maxClaims': value['maxClaims'],\n 'totalAmount': value['totalAmount'],\n 'fixedAmount': value['fixedAmount'],\n 'memo': value['memo'],\n 'password': value['password'],\n 'claimAuthority': value['claimAuthority'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface CreateRedPacketReply\n */\nexport interface CreateRedPacketReply {\n /**\n * DTO.RED_PACKET.SERIALIZED_TX\n * @type {string}\n * @memberof CreateRedPacketReply\n */\n txSerialize: string;\n /**\n * DTO.RED_PACKET.SHARE_ID\n * @type {string}\n * @memberof CreateRedPacketReply\n */\n shareId: string;\n}\n\n/**\n * Check if a given object implements the CreateRedPacketReply interface.\n */\nexport function instanceOfCreateRedPacketReply(value: object): value is CreateRedPacketReply {\n if (!('txSerialize' in value) || value['txSerialize'] === undefined) return false;\n if (!('shareId' in value) || value['shareId'] === undefined) return false;\n return true;\n}\n\nexport function CreateRedPacketReplyFromJSON(json: any): CreateRedPacketReply {\n return CreateRedPacketReplyFromJSONTyped(json, false);\n}\n\nexport function CreateRedPacketReplyFromJSONTyped(json: any, ignoreDiscriminator: boolean): CreateRedPacketReply {\n if (json == null) {\n return json;\n }\n return {\n \n 'txSerialize': json['txSerialize'],\n 'shareId': json['shareId'],\n };\n}\n\nexport function CreateRedPacketReplyToJSON(json: any): CreateRedPacketReply {\n return CreateRedPacketReplyToJSONTyped(json, false);\n}\n\nexport function CreateRedPacketReplyToJSONTyped(value?: CreateRedPacketReply | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'txSerialize': value['txSerialize'],\n 'shareId': value['shareId'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface CreateTokenInput\n */\nexport interface CreateTokenInput {\n /**\n * DTO.DEX.IDENTIFIER\n * @type {string}\n * @memberof CreateTokenInput\n */\n dex: CreateTokenInputDexEnum;\n /**\n * DTO.DEX.WALLET\n * @type {string}\n * @memberof CreateTokenInput\n */\n userAddress: string;\n /**\n * DTO.DEX.BASE.PRIORITY_FEE\n * @type {string}\n * @memberof CreateTokenInput\n */\n priorityFee?: string;\n /**\n * DTO.DEX.MINT.NAME\n * @type {string}\n * @memberof CreateTokenInput\n */\n name: string;\n /**\n * DTO.DEX.MINT.SYMBOL\n * @type {string}\n * @memberof CreateTokenInput\n */\n symbol: string;\n /**\n * DTO.DEX.MINT.URI\n * @type {string}\n * @memberof CreateTokenInput\n */\n uri?: string;\n /**\n * DTO.DEX.MINT.IMAGE\n * @type {string}\n * @memberof CreateTokenInput\n */\n image?: string;\n /**\n * DTO.DEX.MINT.EXTRA\n * @type {object}\n * @memberof CreateTokenInput\n */\n extra?: object;\n}\n\n\n/**\n * @export\n */\nexport const CreateTokenInputDexEnum = {\n Raydium: 'raydium',\n Pumpfun: 'pumpfun',\n Moonshot: 'moonshot',\n Candy: 'candy',\n Launchpad: 'launchpad'\n} as const;\nexport type CreateTokenInputDexEnum = typeof CreateTokenInputDexEnum[keyof typeof CreateTokenInputDexEnum];\n\n\n/**\n * Check if a given object implements the CreateTokenInput interface.\n */\nexport function instanceOfCreateTokenInput(value: object): value is CreateTokenInput {\n if (!('dex' in value) || value['dex'] === undefined) return false;\n if (!('userAddress' in value) || value['userAddress'] === undefined) return false;\n if (!('name' in value) || value['name'] === undefined) return false;\n if (!('symbol' in value) || value['symbol'] === undefined) return false;\n return true;\n}\n\nexport function CreateTokenInputFromJSON(json: any): CreateTokenInput {\n return CreateTokenInputFromJSONTyped(json, false);\n}\n\nexport function CreateTokenInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): CreateTokenInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'dex': json['dex'],\n 'userAddress': json['userAddress'],\n 'priorityFee': json['priorityFee'] == null ? undefined : json['priorityFee'],\n 'name': json['name'],\n 'symbol': json['symbol'],\n 'uri': json['uri'] == null ? undefined : json['uri'],\n 'image': json['image'] == null ? undefined : json['image'],\n 'extra': json['extra'] == null ? undefined : json['extra'],\n };\n}\n\nexport function CreateTokenInputToJSON(json: any): CreateTokenInput {\n return CreateTokenInputToJSONTyped(json, false);\n}\n\nexport function CreateTokenInputToJSONTyped(value?: CreateTokenInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'dex': value['dex'],\n 'userAddress': value['userAddress'],\n 'priorityFee': value['priorityFee'],\n 'name': value['name'],\n 'symbol': value['symbol'],\n 'uri': value['uri'],\n 'image': value['image'],\n 'extra': value['extra'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface CreateTokenReply\n */\nexport interface CreateTokenReply {\n /**\n * DTO.DEX.CREATE_TOKEN.SERIALIZED_TX\n * @type {string}\n * @memberof CreateTokenReply\n */\n serializedTx: string;\n /**\n * DTO.DEX.CREATE_TOKEN.MINT_ADDRESS\n * @type {string}\n * @memberof CreateTokenReply\n */\n mintAddress: string;\n}\n\n/**\n * Check if a given object implements the CreateTokenReply interface.\n */\nexport function instanceOfCreateTokenReply(value: object): value is CreateTokenReply {\n if (!('serializedTx' in value) || value['serializedTx'] === undefined) return false;\n if (!('mintAddress' in value) || value['mintAddress'] === undefined) return false;\n return true;\n}\n\nexport function CreateTokenReplyFromJSON(json: any): CreateTokenReply {\n return CreateTokenReplyFromJSONTyped(json, false);\n}\n\nexport function CreateTokenReplyFromJSONTyped(json: any, ignoreDiscriminator: boolean): CreateTokenReply {\n if (json == null) {\n return json;\n }\n return {\n \n 'serializedTx': json['serializedTx'],\n 'mintAddress': json['mintAddress'],\n };\n}\n\nexport function CreateTokenReplyToJSON(json: any): CreateTokenReply {\n return CreateTokenReplyToJSONTyped(json, false);\n}\n\nexport function CreateTokenReplyToJSONTyped(value?: CreateTokenReply | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'serializedTx': value['serializedTx'],\n 'mintAddress': value['mintAddress'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TokenMarketData\n */\nexport interface TokenMarketData {\n /**\n * DTO.TOKEN.MARKET_CAP.TOTAL_SUPPLY\n * @type {string}\n * @memberof TokenMarketData\n */\n totalSupply: string;\n /**\n * DTO.TOKEN.MARKET_CAP.MARKET_CAP_IN_SOL\n * @type {string}\n * @memberof TokenMarketData\n */\n marketCapInSol?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.MARKET_CAP_IN_USD\n * @type {string}\n * @memberof TokenMarketData\n */\n marketCapInUsd: string;\n /**\n * DTO.TOKEN.MARKET_CAP.TOP10_TOTAL_HOLDINGS\n * @type {string}\n * @memberof TokenMarketData\n */\n top10TotalHoldings?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.TOP10_HOLDINGS_RATIO\n * @type {string}\n * @memberof TokenMarketData\n */\n top10HoldingsRatio?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.TOP100_TOTAL_HOLDINGS\n * @type {string}\n * @memberof TokenMarketData\n */\n top100TotalHoldings?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.TOP100_HOLDINGS_RATIO\n * @type {string}\n * @memberof TokenMarketData\n */\n top100HoldingsRatio?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.HOLDERS\n * @type {string}\n * @memberof TokenMarketData\n */\n holders: string;\n /**\n * DTO.TOKEN.MARKET_CAP.PRICE_IN_SOL\n * @type {string}\n * @memberof TokenMarketData\n */\n priceInSol?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.PRICE_IN_USD\n * @type {string}\n * @memberof TokenMarketData\n */\n priceInUsd: string;\n /**\n * DTO.TOKEN.MARKET_CAP.LIQUIDITY_IN_SOL\n * @type {string}\n * @memberof TokenMarketData\n */\n tvlInSol?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.LIQUIDITY_IN_USD\n * @type {string}\n * @memberof TokenMarketData\n */\n tvlInUsd: string;\n /**\n * DTO.TOKEN.MARKET_CAP.COMPLETION_RATIO\n * @type {string}\n * @memberof TokenMarketData\n */\n completionRatio?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.TOP50_TOTAL_HOLDINGS\n * @type {string}\n * @memberof TokenMarketData\n */\n top50TotalHoldings?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.TOP50_HOLDINGS_RATIO\n * @type {string}\n * @memberof TokenMarketData\n */\n top50HoldingsRatio?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.BLUECHIP_TOTAL_HOLDERS\n * @type {string}\n * @memberof TokenMarketData\n */\n bluechipTotalHolders?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.BLUECHIP_TOTAL_HOLDINGS\n * @type {string}\n * @memberof TokenMarketData\n */\n bluechipTotalHoldings?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.BLUECHIP_HOLDINGS_RATIO\n * @type {string}\n * @memberof TokenMarketData\n */\n bluechipHoldingsRatio?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.KOL_TOTAL_HOLDERS\n * @type {string}\n * @memberof TokenMarketData\n */\n kolTotalHolders?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.KOL_TOTAL_HOLDINGS\n * @type {string}\n * @memberof TokenMarketData\n */\n kolTotalHoldings?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.KOL_HOLDINGS_RATIO\n * @type {string}\n * @memberof TokenMarketData\n */\n kolHoldingsRatio?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.SNIPER_TOTAL_HOLDERS\n * @type {string}\n * @memberof TokenMarketData\n */\n sniperTotalHolders?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.SNIPER_TOTAL_HOLDINGS\n * @type {string}\n * @memberof TokenMarketData\n */\n sniperTotalHoldings?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.SNIPER_HOLDINGS_RATIO\n * @type {string}\n * @memberof TokenMarketData\n */\n sniperHoldingsRatio?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.PRO_TOTAL_HOLDERS\n * @type {string}\n * @memberof TokenMarketData\n */\n proTotalHolders?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.PRO_TOTAL_HOLDINGS\n * @type {string}\n * @memberof TokenMarketData\n */\n proTotalHoldings?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.PRO_HOLDINGS_RATIO\n * @type {string}\n * @memberof TokenMarketData\n */\n proHoldingsRatio?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.INSIDER_TOTAL_HOLDERS\n * @type {string}\n * @memberof TokenMarketData\n */\n insiderTotalHolders?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.INSIDER_TOTAL_HOLDINGS\n * @type {string}\n * @memberof TokenMarketData\n */\n insiderTotalHoldings?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.INSIDER_HOLDINGS_RATIO\n * @type {string}\n * @memberof TokenMarketData\n */\n insiderHoldingsRatio?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.SANDWISH_TOTAL_HOLDERS\n * @type {string}\n * @memberof TokenMarketData\n */\n sandwishTotalHolders?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.SANDWISH_TOTAL_HOLDINGS\n * @type {string}\n * @memberof TokenMarketData\n */\n sandwishTotalHoldings?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.SANDWISH_HOLDINGS_RATIO\n * @type {string}\n * @memberof TokenMarketData\n */\n sandwishHoldingsRatio?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.FRESH_TOTAL_HOLDERS\n * @type {string}\n * @memberof TokenMarketData\n */\n freshTotalHolders?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.FRESH_TOTAL_HOLDINGS\n * @type {string}\n * @memberof TokenMarketData\n */\n freshTotalHoldings?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.FRESH_HOLDINGS_RATIO\n * @type {string}\n * @memberof TokenMarketData\n */\n freshHoldingsRatio?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.BUNDLE_TOTAL_HOLDERS\n * @type {string}\n * @memberof TokenMarketData\n */\n bundleTotalHolders?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.BUNDLE_TOTAL_HOLDINGS\n * @type {string}\n * @memberof TokenMarketData\n */\n bundleTotalHoldings?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.BUNDLE_HOLDINGS_RATIO\n * @type {string}\n * @memberof TokenMarketData\n */\n bundleHoldingsRatio?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.DEV_TOTAL_HOLDERS\n * @type {string}\n * @memberof TokenMarketData\n */\n devTotalHolders?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.DEV_TOTAL_HOLDINGS\n * @type {string}\n * @memberof TokenMarketData\n */\n devTotalHoldings?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.DEV_HOLDINGS_RATIO\n * @type {string}\n * @memberof TokenMarketData\n */\n devHoldingsRatio?: string;\n}\n\n/**\n * Check if a given object implements the TokenMarketData interface.\n */\nexport function instanceOfTokenMarketData(value: object): value is TokenMarketData {\n if (!('totalSupply' in value) || value['totalSupply'] === undefined) return false;\n if (!('marketCapInUsd' in value) || value['marketCapInUsd'] === undefined) return false;\n if (!('holders' in value) || value['holders'] === undefined) return false;\n if (!('priceInUsd' in value) || value['priceInUsd'] === undefined) return false;\n if (!('tvlInUsd' in value) || value['tvlInUsd'] === undefined) return false;\n return true;\n}\n\nexport function TokenMarketDataFromJSON(json: any): TokenMarketData {\n return TokenMarketDataFromJSONTyped(json, false);\n}\n\nexport function TokenMarketDataFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenMarketData {\n if (json == null) {\n return json;\n }\n return {\n \n 'totalSupply': json['totalSupply'],\n 'marketCapInSol': json['marketCapInSol'] == null ? undefined : json['marketCapInSol'],\n 'marketCapInUsd': json['marketCapInUsd'],\n 'top10TotalHoldings': json['top10TotalHoldings'] == null ? undefined : json['top10TotalHoldings'],\n 'top10HoldingsRatio': json['top10HoldingsRatio'] == null ? undefined : json['top10HoldingsRatio'],\n 'top100TotalHoldings': json['top100TotalHoldings'] == null ? undefined : json['top100TotalHoldings'],\n 'top100HoldingsRatio': json['top100HoldingsRatio'] == null ? undefined : json['top100HoldingsRatio'],\n 'holders': json['holders'],\n 'priceInSol': json['priceInSol'] == null ? undefined : json['priceInSol'],\n 'priceInUsd': json['priceInUsd'],\n 'tvlInSol': json['tvlInSol'] == null ? undefined : json['tvlInSol'],\n 'tvlInUsd': json['tvlInUsd'],\n 'completionRatio': json['completionRatio'] == null ? undefined : json['completionRatio'],\n 'top50TotalHoldings': json['top50TotalHoldings'] == null ? undefined : json['top50TotalHoldings'],\n 'top50HoldingsRatio': json['top50HoldingsRatio'] == null ? undefined : json['top50HoldingsRatio'],\n 'bluechipTotalHolders': json['bluechipTotalHolders'] == null ? undefined : json['bluechipTotalHolders'],\n 'bluechipTotalHoldings': json['bluechipTotalHoldings'] == null ? undefined : json['bluechipTotalHoldings'],\n 'bluechipHoldingsRatio': json['bluechipHoldingsRatio'] == null ? undefined : json['bluechipHoldingsRatio'],\n 'kolTotalHolders': json['kolTotalHolders'] == null ? undefined : json['kolTotalHolders'],\n 'kolTotalHoldings': json['kolTotalHoldings'] == null ? undefined : json['kolTotalHoldings'],\n 'kolHoldingsRatio': json['kolHoldingsRatio'] == null ? undefined : json['kolHoldingsRatio'],\n 'sniperTotalHolders': json['sniperTotalHolders'] == null ? undefined : json['sniperTotalHolders'],\n 'sniperTotalHoldings': json['sniperTotalHoldings'] == null ? undefined : json['sniperTotalHoldings'],\n 'sniperHoldingsRatio': json['sniperHoldingsRatio'] == null ? undefined : json['sniperHoldingsRatio'],\n 'proTotalHolders': json['proTotalHolders'] == null ? undefined : json['proTotalHolders'],\n 'proTotalHoldings': json['proTotalHoldings'] == null ? undefined : json['proTotalHoldings'],\n 'proHoldingsRatio': json['proHoldingsRatio'] == null ? undefined : json['proHoldingsRatio'],\n 'insiderTotalHolders': json['insiderTotalHolders'] == null ? undefined : json['insiderTotalHolders'],\n 'insiderTotalHoldings': json['insiderTotalHoldings'] == null ? undefined : json['insiderTotalHoldings'],\n 'insiderHoldingsRatio': json['insiderHoldingsRatio'] == null ? undefined : json['insiderHoldingsRatio'],\n 'sandwishTotalHolders': json['sandwishTotalHolders'] == null ? undefined : json['sandwishTotalHolders'],\n 'sandwishTotalHoldings': json['sandwishTotalHoldings'] == null ? undefined : json['sandwishTotalHoldings'],\n 'sandwishHoldingsRatio': json['sandwishHoldingsRatio'] == null ? undefined : json['sandwishHoldingsRatio'],\n 'freshTotalHolders': json['freshTotalHolders'] == null ? undefined : json['freshTotalHolders'],\n 'freshTotalHoldings': json['freshTotalHoldings'] == null ? undefined : json['freshTotalHoldings'],\n 'freshHoldingsRatio': json['freshHoldingsRatio'] == null ? undefined : json['freshHoldingsRatio'],\n 'bundleTotalHolders': json['bundleTotalHolders'] == null ? undefined : json['bundleTotalHolders'],\n 'bundleTotalHoldings': json['bundleTotalHoldings'] == null ? undefined : json['bundleTotalHoldings'],\n 'bundleHoldingsRatio': json['bundleHoldingsRatio'] == null ? undefined : json['bundleHoldingsRatio'],\n 'devTotalHolders': json['devTotalHolders'] == null ? undefined : json['devTotalHolders'],\n 'devTotalHoldings': json['devTotalHoldings'] == null ? undefined : json['devTotalHoldings'],\n 'devHoldingsRatio': json['devHoldingsRatio'] == null ? undefined : json['devHoldingsRatio'],\n };\n}\n\nexport function TokenMarketDataToJSON(json: any): TokenMarketData {\n return TokenMarketDataToJSONTyped(json, false);\n}\n\nexport function TokenMarketDataToJSONTyped(value?: TokenMarketData | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'totalSupply': value['totalSupply'],\n 'marketCapInSol': value['marketCapInSol'],\n 'marketCapInUsd': value['marketCapInUsd'],\n 'top10TotalHoldings': value['top10TotalHoldings'],\n 'top10HoldingsRatio': value['top10HoldingsRatio'],\n 'top100TotalHoldings': value['top100TotalHoldings'],\n 'top100HoldingsRatio': value['top100HoldingsRatio'],\n 'holders': value['holders'],\n 'priceInSol': value['priceInSol'],\n 'priceInUsd': value['priceInUsd'],\n 'tvlInSol': value['tvlInSol'],\n 'tvlInUsd': value['tvlInUsd'],\n 'completionRatio': value['completionRatio'],\n 'top50TotalHoldings': value['top50TotalHoldings'],\n 'top50HoldingsRatio': value['top50HoldingsRatio'],\n 'bluechipTotalHolders': value['bluechipTotalHolders'],\n 'bluechipTotalHoldings': value['bluechipTotalHoldings'],\n 'bluechipHoldingsRatio': value['bluechipHoldingsRatio'],\n 'kolTotalHolders': value['kolTotalHolders'],\n 'kolTotalHoldings': value['kolTotalHoldings'],\n 'kolHoldingsRatio': value['kolHoldingsRatio'],\n 'sniperTotalHolders': value['sniperTotalHolders'],\n 'sniperTotalHoldings': value['sniperTotalHoldings'],\n 'sniperHoldingsRatio': value['sniperHoldingsRatio'],\n 'proTotalHolders': value['proTotalHolders'],\n 'proTotalHoldings': value['proTotalHoldings'],\n 'proHoldingsRatio': value['proHoldingsRatio'],\n 'insiderTotalHolders': value['insiderTotalHolders'],\n 'insiderTotalHoldings': value['insiderTotalHoldings'],\n 'insiderHoldingsRatio': value['insiderHoldingsRatio'],\n 'sandwishTotalHolders': value['sandwishTotalHolders'],\n 'sandwishTotalHoldings': value['sandwishTotalHoldings'],\n 'sandwishHoldingsRatio': value['sandwishHoldingsRatio'],\n 'freshTotalHolders': value['freshTotalHolders'],\n 'freshTotalHoldings': value['freshTotalHoldings'],\n 'freshHoldingsRatio': value['freshHoldingsRatio'],\n 'bundleTotalHolders': value['bundleTotalHolders'],\n 'bundleTotalHoldings': value['bundleTotalHoldings'],\n 'bundleHoldingsRatio': value['bundleHoldingsRatio'],\n 'devTotalHolders': value['devTotalHolders'],\n 'devTotalHoldings': value['devTotalHoldings'],\n 'devHoldingsRatio': value['devHoldingsRatio'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TokenExtraDTO\n */\nexport interface TokenExtraDTO {\n /**\n * DTO.TOKEN.EXTRA.COLLECTION_ADDRESS\n * @type {string}\n * @memberof TokenExtraDTO\n */\n collectionAddress?: string;\n /**\n * DTO.TOKEN.EXTRA.EDITION_NONCE\n * @type {number}\n * @memberof TokenExtraDTO\n */\n editionNonce?: number;\n /**\n * DTO.TOKEN.EXTRA.FUNGIBLE\n * @type {boolean}\n * @memberof TokenExtraDTO\n */\n fungible?: boolean;\n /**\n * DTO.TOKEN.EXTRA.IS_MUTABLE\n * @type {boolean}\n * @memberof TokenExtraDTO\n */\n isMutable?: boolean;\n /**\n * DTO.TOKEN.EXTRA.KEY\n * @type {string}\n * @memberof TokenExtraDTO\n */\n key?: string;\n /**\n * DTO.TOKEN.EXTRA.IS_NATIVE\n * @type {boolean}\n * @memberof TokenExtraDTO\n */\n isNative?: boolean;\n /**\n * DTO.TOKEN.EXTRA.PRIMARY_SALE_HAPPENED\n * @type {boolean}\n * @memberof TokenExtraDTO\n */\n primarySaleHappened?: boolean;\n /**\n * DTO.TOKEN.EXTRA.LAUNCH_FROM_PROGRAM_ADDRESS\n * @type {string}\n * @memberof TokenExtraDTO\n */\n launchFromProgramAddress?: string;\n /**\n * DTO.TOKEN.EXTRA.LAUNCH_FROM_PROTOCOL_FAMILY\n * @type {string}\n * @memberof TokenExtraDTO\n */\n launchFromProtocolFamily?: string;\n /**\n * DTO.TOKEN.EXTRA.PROGRAM_ADDRESS\n * @type {string}\n * @memberof TokenExtraDTO\n */\n programAddress?: string;\n /**\n * DTO.TOKEN.EXTRA.MIGRATED_TO_PROGRAM_ADDRESS\n * @type {string}\n * @memberof TokenExtraDTO\n */\n migratedToProgramAddress?: string;\n /**\n * DTO.TOKEN.EXTRA.MIGRATED_TO_PROTOCOL_FAMILY\n * @type {string}\n * @memberof TokenExtraDTO\n */\n migratedToProtocolFamily?: string;\n /**\n * DTO.TOKEN.EXTRA.MIGRATED_TO_POOL_ADDRESS\n * @type {string}\n * @memberof TokenExtraDTO\n */\n migratedToPoolAddress?: string;\n /**\n * DTO.TOKEN.EXTRA.MIGRATED_AT\n * @type {number}\n * @memberof TokenExtraDTO\n */\n migratedAt?: number;\n /**\n * DTO.TOKEN.EXTRA.SELLER_FEE_BASIS_POINTS\n * @type {number}\n * @memberof TokenExtraDTO\n */\n sellerFeeBasisPoints?: number;\n /**\n * DTO.TOKEN.EXTRA.TOKEN_STANDARD\n * @type {string}\n * @memberof TokenExtraDTO\n */\n tokenStandard?: string;\n /**\n * DTO.TOKEN.EXTRA.MINT_AUTHORITY\n * @type {string}\n * @memberof TokenExtraDTO\n */\n mintAuthority?: string;\n /**\n * DTO.TOKEN.EXTRA.FREEZE_AUTHORITY\n * @type {string}\n * @memberof TokenExtraDTO\n */\n freezeAuthority?: string;\n /**\n * DTO.TOKEN.EXTRA.UPDATE_AUTHORITY\n * @type {string}\n * @memberof TokenExtraDTO\n */\n updateAuthority?: string;\n /**\n * DTO.TOKEN.EXTRA.IS_VERIFIED_COLLECTION\n * @type {boolean}\n * @memberof TokenExtraDTO\n */\n isVerifiedCollection?: boolean;\n /**\n * DTO.TOKEN.EXTRA.IS_WRAPPED\n * @type {boolean}\n * @memberof TokenExtraDTO\n */\n isWrapped?: boolean;\n}\n\n/**\n * Check if a given object implements the TokenExtraDTO interface.\n */\nexport function instanceOfTokenExtraDTO(value: object): value is TokenExtraDTO {\n return true;\n}\n\nexport function TokenExtraDTOFromJSON(json: any): TokenExtraDTO {\n return TokenExtraDTOFromJSONTyped(json, false);\n}\n\nexport function TokenExtraDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenExtraDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'collectionAddress': json['collectionAddress'] == null ? undefined : json['collectionAddress'],\n 'editionNonce': json['editionNonce'] == null ? undefined : json['editionNonce'],\n 'fungible': json['fungible'] == null ? undefined : json['fungible'],\n 'isMutable': json['isMutable'] == null ? undefined : json['isMutable'],\n 'key': json['key'] == null ? undefined : json['key'],\n 'isNative': json['isNative'] == null ? undefined : json['isNative'],\n 'primarySaleHappened': json['primarySaleHappened'] == null ? undefined : json['primarySaleHappened'],\n 'launchFromProgramAddress': json['launchFromProgramAddress'] == null ? undefined : json['launchFromProgramAddress'],\n 'launchFromProtocolFamily': json['launchFromProtocolFamily'] == null ? undefined : json['launchFromProtocolFamily'],\n 'programAddress': json['programAddress'] == null ? undefined : json['programAddress'],\n 'migratedToProgramAddress': json['migratedToProgramAddress'] == null ? undefined : json['migratedToProgramAddress'],\n 'migratedToProtocolFamily': json['migratedToProtocolFamily'] == null ? undefined : json['migratedToProtocolFamily'],\n 'migratedToPoolAddress': json['migratedToPoolAddress'] == null ? undefined : json['migratedToPoolAddress'],\n 'migratedAt': json['migratedAt'] == null ? undefined : json['migratedAt'],\n 'sellerFeeBasisPoints': json['sellerFeeBasisPoints'] == null ? undefined : json['sellerFeeBasisPoints'],\n 'tokenStandard': json['tokenStandard'] == null ? undefined : json['tokenStandard'],\n 'mintAuthority': json['mintAuthority'] == null ? undefined : json['mintAuthority'],\n 'freezeAuthority': json['freezeAuthority'] == null ? undefined : json['freezeAuthority'],\n 'updateAuthority': json['updateAuthority'] == null ? undefined : json['updateAuthority'],\n 'isVerifiedCollection': json['isVerifiedCollection'] == null ? undefined : json['isVerifiedCollection'],\n 'isWrapped': json['isWrapped'] == null ? undefined : json['isWrapped'],\n };\n}\n\nexport function TokenExtraDTOToJSON(json: any): TokenExtraDTO {\n return TokenExtraDTOToJSONTyped(json, false);\n}\n\nexport function TokenExtraDTOToJSONTyped(value?: TokenExtraDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'collectionAddress': value['collectionAddress'],\n 'editionNonce': value['editionNonce'],\n 'fungible': value['fungible'],\n 'isMutable': value['isMutable'],\n 'key': value['key'],\n 'isNative': value['isNative'],\n 'primarySaleHappened': value['primarySaleHappened'],\n 'launchFromProgramAddress': value['launchFromProgramAddress'],\n 'launchFromProtocolFamily': value['launchFromProtocolFamily'],\n 'programAddress': value['programAddress'],\n 'migratedToProgramAddress': value['migratedToProgramAddress'],\n 'migratedToProtocolFamily': value['migratedToProtocolFamily'],\n 'migratedToPoolAddress': value['migratedToPoolAddress'],\n 'migratedAt': value['migratedAt'],\n 'sellerFeeBasisPoints': value['sellerFeeBasisPoints'],\n 'tokenStandard': value['tokenStandard'],\n 'mintAuthority': value['mintAuthority'],\n 'freezeAuthority': value['freezeAuthority'],\n 'updateAuthority': value['updateAuthority'],\n 'isVerifiedCollection': value['isVerifiedCollection'],\n 'isWrapped': value['isWrapped'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TokenCreatorsDTO\n */\nexport interface TokenCreatorsDTO {\n /**\n * DTO.TOKEN.CREATORS.ADDRESS\n * @type {string}\n * @memberof TokenCreatorsDTO\n */\n address?: string;\n /**\n * DTO.TOKEN.CREATORS.SHARE\n * @type {number}\n * @memberof TokenCreatorsDTO\n */\n share?: number;\n /**\n * DTO.TOKEN.CREATORS.IS_VERIFIED\n * @type {boolean}\n * @memberof TokenCreatorsDTO\n */\n isVerified?: boolean;\n}\n\n/**\n * Check if a given object implements the TokenCreatorsDTO interface.\n */\nexport function instanceOfTokenCreatorsDTO(value: object): value is TokenCreatorsDTO {\n return true;\n}\n\nexport function TokenCreatorsDTOFromJSON(json: any): TokenCreatorsDTO {\n return TokenCreatorsDTOFromJSONTyped(json, false);\n}\n\nexport function TokenCreatorsDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenCreatorsDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'address': json['address'] == null ? undefined : json['address'],\n 'share': json['share'] == null ? undefined : json['share'],\n 'isVerified': json['isVerified'] == null ? undefined : json['isVerified'],\n };\n}\n\nexport function TokenCreatorsDTOToJSON(json: any): TokenCreatorsDTO {\n return TokenCreatorsDTOToJSONTyped(json, false);\n}\n\nexport function TokenCreatorsDTOToJSONTyped(value?: TokenCreatorsDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'address': value['address'],\n 'share': value['share'],\n 'isVerified': value['isVerified'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TokenSocialMediasDTO\n */\nexport interface TokenSocialMediasDTO {\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.TWITTER\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n twitter?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.TELEGRAM\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n telegram?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.WEBSITE\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n website?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.TIKTOK\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n tiktok?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.DISCORD\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n discord?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.FACEBOOK\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n facebook?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.GITHUB\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n github?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.INSTAGRAM\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n instagram?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.LINKEDIN\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n linkedin?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.MEDIUM\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n medium?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.REDDIT\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n reddit?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.YOUTUBE\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n youtube?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.BITBUCKET\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n bitbucket?: string;\n}\n\n/**\n * Check if a given object implements the TokenSocialMediasDTO interface.\n */\nexport function instanceOfTokenSocialMediasDTO(value: object): value is TokenSocialMediasDTO {\n return true;\n}\n\nexport function TokenSocialMediasDTOFromJSON(json: any): TokenSocialMediasDTO {\n return TokenSocialMediasDTOFromJSONTyped(json, false);\n}\n\nexport function TokenSocialMediasDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenSocialMediasDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'twitter': json['twitter'] == null ? undefined : json['twitter'],\n 'telegram': json['telegram'] == null ? undefined : json['telegram'],\n 'website': json['website'] == null ? undefined : json['website'],\n 'tiktok': json['tiktok'] == null ? undefined : json['tiktok'],\n 'discord': json['discord'] == null ? undefined : json['discord'],\n 'facebook': json['facebook'] == null ? undefined : json['facebook'],\n 'github': json['github'] == null ? undefined : json['github'],\n 'instagram': json['instagram'] == null ? undefined : json['instagram'],\n 'linkedin': json['linkedin'] == null ? undefined : json['linkedin'],\n 'medium': json['medium'] == null ? undefined : json['medium'],\n 'reddit': json['reddit'] == null ? undefined : json['reddit'],\n 'youtube': json['youtube'] == null ? undefined : json['youtube'],\n 'bitbucket': json['bitbucket'] == null ? undefined : json['bitbucket'],\n };\n}\n\nexport function TokenSocialMediasDTOToJSON(json: any): TokenSocialMediasDTO {\n return TokenSocialMediasDTOToJSONTyped(json, false);\n}\n\nexport function TokenSocialMediasDTOToJSONTyped(value?: TokenSocialMediasDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'twitter': value['twitter'],\n 'telegram': value['telegram'],\n 'website': value['website'],\n 'tiktok': value['tiktok'],\n 'discord': value['discord'],\n 'facebook': value['facebook'],\n 'github': value['github'],\n 'instagram': value['instagram'],\n 'linkedin': value['linkedin'],\n 'medium': value['medium'],\n 'reddit': value['reddit'],\n 'youtube': value['youtube'],\n 'bitbucket': value['bitbucket'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { TokenExtraDTO } from './TokenExtraDTO';\nimport {\n TokenExtraDTOFromJSON,\n TokenExtraDTOFromJSONTyped,\n TokenExtraDTOToJSON,\n TokenExtraDTOToJSONTyped,\n} from './TokenExtraDTO';\nimport type { TokenCreatorsDTO } from './TokenCreatorsDTO';\nimport {\n TokenCreatorsDTOFromJSON,\n TokenCreatorsDTOFromJSONTyped,\n TokenCreatorsDTOToJSON,\n TokenCreatorsDTOToJSONTyped,\n} from './TokenCreatorsDTO';\nimport type { TokenSocialMediasDTO } from './TokenSocialMediasDTO';\nimport {\n TokenSocialMediasDTOFromJSON,\n TokenSocialMediasDTOFromJSONTyped,\n TokenSocialMediasDTOToJSON,\n TokenSocialMediasDTOToJSONTyped,\n} from './TokenSocialMediasDTO';\n\n/**\n * \n * @export\n * @interface TokenMetadata\n */\nexport interface TokenMetadata {\n /**\n * DTO.TOKEN.METADATA.CHAIN\n * @type {string}\n * @memberof TokenMetadata\n */\n chain: string;\n /**\n * DTO.TOKEN.METADATA.DECIMALS\n * @type {number}\n * @memberof TokenMetadata\n */\n decimals: number;\n /**\n * DTO.TOKEN.METADATA.NAME\n * @type {string}\n * @memberof TokenMetadata\n */\n name: string;\n /**\n * DTO.TOKEN.METADATA.SYMBOL\n * @type {string}\n * @memberof TokenMetadata\n */\n symbol: string;\n /**\n * DTO.TOKEN.METADATA.METADATA_ADDRESS\n * @type {string}\n * @memberof TokenMetadata\n */\n metadataAddress?: string;\n /**\n * DTO.TOKEN.METADATA.ADDRESS\n * @type {string}\n * @memberof TokenMetadata\n */\n address: string;\n /**\n * DTO.TOKEN.METADATA.TOKEN_CREATORS\n * @type {Array<TokenCreatorsDTO>}\n * @memberof TokenMetadata\n */\n tokenCreators?: Array<TokenCreatorsDTO>;\n /**\n * DTO.TOKEN.METADATA.IMAGE_URL\n * @type {string}\n * @memberof TokenMetadata\n */\n imageUrl?: string;\n /**\n * DTO.TOKEN.METADATA.URI\n * @type {string}\n * @memberof TokenMetadata\n */\n uri?: string;\n /**\n * DTO.TOKEN.METADATA.EXTRA\n * @type {TokenExtraDTO}\n * @memberof TokenMetadata\n */\n extra?: TokenExtraDTO;\n /**\n * DTO.TOKEN.METADATA.SOCIAL_MEDIAS\n * @type {TokenSocialMediasDTO}\n * @memberof TokenMetadata\n */\n socialMedias?: TokenSocialMediasDTO;\n /**\n * DTO.TOKEN.METADATA.TOKEN_CREATED_AT\n * @type {number}\n * @memberof TokenMetadata\n */\n tokenCreatedAt?: number;\n /**\n * DTO.TOKEN.METADATA.DESCRIPTION\n * @type {string}\n * @memberof TokenMetadata\n */\n description?: string;\n /**\n * DTO.TOKEN.METADATA.DEV_TOTAL_TOKENS\n * @type {string}\n * @memberof TokenMetadata\n */\n devTotalTokens?: string;\n /**\n * DTO.TOKEN.METADATA.DEV_LAST_TOKEN_CREATED_AT\n * @type {string}\n * @memberof TokenMetadata\n */\n devLastTokenCreatedAt?: string;\n}\n\n/**\n * Check if a given object implements the TokenMetadata interface.\n */\nexport function instanceOfTokenMetadata(value: object): value is TokenMetadata {\n if (!('chain' in value) || value['chain'] === undefined) return false;\n if (!('decimals' in value) || value['decimals'] === undefined) return false;\n if (!('name' in value) || value['name'] === undefined) return false;\n if (!('symbol' in value) || value['symbol'] === undefined) return false;\n if (!('address' in value) || value['address'] === undefined) return false;\n return true;\n}\n\nexport function TokenMetadataFromJSON(json: any): TokenMetadata {\n return TokenMetadataFromJSONTyped(json, false);\n}\n\nexport function TokenMetadataFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenMetadata {\n if (json == null) {\n return json;\n }\n return {\n \n 'chain': json['chain'],\n 'decimals': json['decimals'],\n 'name': json['name'],\n 'symbol': json['symbol'],\n 'metadataAddress': json['metadataAddress'] == null ? undefined : json['metadataAddress'],\n 'address': json['address'],\n 'tokenCreators': json['tokenCreators'] == null ? undefined : ((json['tokenCreators'] as Array<any>).map(TokenCreatorsDTOFromJSON)),\n 'imageUrl': json['imageUrl'] == null ? undefined : json['imageUrl'],\n 'uri': json['uri'] == null ? undefined : json['uri'],\n 'extra': json['extra'] == null ? undefined : TokenExtraDTOFromJSON(json['extra']),\n 'socialMedias': json['socialMedias'] == null ? undefined : TokenSocialMediasDTOFromJSON(json['socialMedias']),\n 'tokenCreatedAt': json['tokenCreatedAt'] == null ? undefined : json['tokenCreatedAt'],\n 'description': json['description'] == null ? undefined : json['description'],\n 'devTotalTokens': json['devTotalTokens'] == null ? undefined : json['devTotalTokens'],\n 'devLastTokenCreatedAt': json['devLastTokenCreatedAt'] == null ? undefined : json['devLastTokenCreatedAt'],\n };\n}\n\nexport function TokenMetadataToJSON(json: any): TokenMetadata {\n return TokenMetadataToJSONTyped(json, false);\n}\n\nexport function TokenMetadataToJSONTyped(value?: TokenMetadata | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'chain': value['chain'],\n 'decimals': value['decimals'],\n 'name': value['name'],\n 'symbol': value['symbol'],\n 'metadataAddress': value['metadataAddress'],\n 'address': value['address'],\n 'tokenCreators': value['tokenCreators'] == null ? undefined : ((value['tokenCreators'] as Array<any>).map(TokenCreatorsDTOToJSON)),\n 'imageUrl': value['imageUrl'],\n 'uri': value['uri'],\n 'extra': TokenExtraDTOToJSON(value['extra']),\n 'socialMedias': TokenSocialMediasDTOToJSON(value['socialMedias']),\n 'tokenCreatedAt': value['tokenCreatedAt'],\n 'description': value['description'],\n 'devTotalTokens': value['devTotalTokens'],\n 'devLastTokenCreatedAt': value['devLastTokenCreatedAt'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TokenStat\n */\nexport interface TokenStat {\n /**\n * DTO.TOKEN.STAT.ADDRESS\n * @type {string}\n * @memberof TokenStat\n */\n address: string;\n /**\n * DTO.TOKEN.STAT.PRICE_1M\n * @type {string}\n * @memberof TokenStat\n */\n price1m: string;\n /**\n * DTO.TOKEN.STAT.BUYS_1M\n * @type {string}\n * @memberof TokenStat\n */\n buys1m: string;\n /**\n * DTO.TOKEN.STAT.SELLS_1M\n * @type {string}\n * @memberof TokenStat\n */\n sells1m: string;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_1M\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumes1m: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_1M\n * @type {string}\n * @memberof TokenStat\n */\n sellsVolumes1m: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_1M\n * @type {string}\n * @memberof TokenStat\n */\n volumes1m: string;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_1M\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumesInUsd1m: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_1M\n * @type {string}\n * @memberof TokenStat\n */\n sellVolumesInUsd1m: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_IN_USD_1M\n * @type {string}\n * @memberof TokenStat\n */\n volumesInUsd1m: string;\n /**\n * DTO.TOKEN.STAT.BUYERS_1M\n * @type {string}\n * @memberof TokenStat\n */\n buyers1m?: string;\n /**\n * DTO.TOKEN.STAT.SELLERS_1M\n * @type {string}\n * @memberof TokenStat\n */\n sellers1m?: string;\n /**\n * DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_1M\n * @type {string}\n * @memberof TokenStat\n */\n openPriceInUsd1m: string;\n /**\n * DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_1M\n * @type {string}\n * @memberof TokenStat\n */\n closePriceInUsd1m: string;\n /**\n * DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_1M\n * @type {string}\n * @memberof TokenStat\n */\n priceChangeRatioInUsd1m: string;\n /**\n * DTO.TOKEN.STAT.TRADES_1M\n * @type {string}\n * @memberof TokenStat\n */\n trades1m: string;\n /**\n * DTO.TOKEN.STAT.TRADERS_1M\n * @type {string}\n * @memberof TokenStat\n */\n traders1m?: string;\n /**\n * DTO.TOKEN.STAT.HIGH_IN_USD_1M\n * @type {string}\n * @memberof TokenStat\n */\n highInUsd1m?: string;\n /**\n * DTO.TOKEN.STAT.LOW_IN_USD_1M\n * @type {string}\n * @memberof TokenStat\n */\n lowInUsd1m?: string;\n /**\n * DTO.TOKEN.STAT.PRICE_5M\n * @type {string}\n * @memberof TokenStat\n */\n price5m: string;\n /**\n * DTO.TOKEN.STAT.BUYS_5M\n * @type {string}\n * @memberof TokenStat\n */\n buys5m: string;\n /**\n * DTO.TOKEN.STAT.SELLS_5M\n * @type {string}\n * @memberof TokenStat\n */\n sells5m: string;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_5M\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumes5m: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_5M\n * @type {string}\n * @memberof TokenStat\n */\n sellsVolumes5m: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_5M\n * @type {string}\n * @memberof TokenStat\n */\n volumes5m: string;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_5M\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumesInUsd5m: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_5M\n * @type {string}\n * @memberof TokenStat\n */\n sellVolumesInUsd5m: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_IN_USD_5M\n * @type {string}\n * @memberof TokenStat\n */\n volumesInUsd5m: string;\n /**\n * DTO.TOKEN.STAT.BUYERS_5M\n * @type {string}\n * @memberof TokenStat\n */\n buyers5m?: string;\n /**\n * DTO.TOKEN.STAT.SELLERS_5M\n * @type {string}\n * @memberof TokenStat\n */\n sellers5m?: string;\n /**\n * DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_5M\n * @type {string}\n * @memberof TokenStat\n */\n openPriceInUsd5m: string;\n /**\n * DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_5M\n * @type {string}\n * @memberof TokenStat\n */\n closePriceInUsd5m: string;\n /**\n * DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_5M\n * @type {string}\n * @memberof TokenStat\n */\n priceChangeRatioInUsd5m: string;\n /**\n * DTO.TOKEN.STAT.TRADES_5M\n * @type {string}\n * @memberof TokenStat\n */\n trades5m: string;\n /**\n * DTO.TOKEN.STAT.TRADERS_5M\n * @type {string}\n * @memberof TokenStat\n */\n traders5m?: string;\n /**\n * DTO.TOKEN.STAT.HIGH_IN_USD_5M\n * @type {string}\n * @memberof TokenStat\n */\n highInUsd5m?: string;\n /**\n * DTO.TOKEN.STAT.LOW_IN_USD_5M\n * @type {string}\n * @memberof TokenStat\n */\n lowInUsd5m?: string;\n /**\n * DTO.TOKEN.STAT.PRICE_15M\n * @type {string}\n * @memberof TokenStat\n */\n price15m?: string;\n /**\n * DTO.TOKEN.STAT.BUYS_15M\n * @type {string}\n * @memberof TokenStat\n */\n buys15m?: string;\n /**\n * DTO.TOKEN.STAT.SELLS_15M\n * @type {string}\n * @memberof TokenStat\n */\n sells15m?: string;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_15M\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumes15m?: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_15M\n * @type {string}\n * @memberof TokenStat\n */\n sellsVolumes15m?: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_15M\n * @type {string}\n * @memberof TokenStat\n */\n volumes15m?: string;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_15M\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumesInUsd15m?: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_15M\n * @type {string}\n * @memberof TokenStat\n */\n sellVolumesInUsd15m?: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_IN_USD_15M\n * @type {string}\n * @memberof TokenStat\n */\n volumesInUsd15m?: string;\n /**\n * DTO.TOKEN.STAT.BUYERS_15M\n * @type {string}\n * @memberof TokenStat\n */\n buyers15m?: string;\n /**\n * DTO.TOKEN.STAT.SELLERS_15M\n * @type {string}\n * @memberof TokenStat\n */\n sellers15m?: string;\n /**\n * DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_15M\n * @type {string}\n * @memberof TokenStat\n */\n openPriceInUsd15m?: string;\n /**\n * DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_15M\n * @type {string}\n * @memberof TokenStat\n */\n closePriceInUsd15m?: string;\n /**\n * DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_15M\n * @type {string}\n * @memberof TokenStat\n */\n priceChangeRatioInUsd15m?: string;\n /**\n * DTO.TOKEN.STAT.TRADES_15M\n * @type {string}\n * @memberof TokenStat\n */\n trades15m?: string;\n /**\n * DTO.TOKEN.STAT.TRADERS_15M\n * @type {string}\n * @memberof TokenStat\n */\n traders15m?: string;\n /**\n * DTO.TOKEN.STAT.HIGH_IN_USD_15M\n * @type {string}\n * @memberof TokenStat\n */\n highInUsd15m?: string;\n /**\n * DTO.TOKEN.STAT.LOW_IN_USD_15M\n * @type {string}\n * @memberof TokenStat\n */\n lowInUsd15m?: string;\n /**\n * DTO.TOKEN.STAT.PRICE_30M\n * @type {string}\n * @memberof TokenStat\n */\n price30m: string;\n /**\n * DTO.TOKEN.STAT.BUYS_30M\n * @type {string}\n * @memberof TokenStat\n */\n buys30m: string;\n /**\n * DTO.TOKEN.STAT.SELLS_30M\n * @type {string}\n * @memberof TokenStat\n */\n sells30m: string;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_30M\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumes30m: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_30M\n * @type {string}\n * @memberof TokenStat\n */\n sellsVolumes30m: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_30M\n * @type {string}\n * @memberof TokenStat\n */\n volumes30m: string;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_30M\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumesInUsd30m: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_30M\n * @type {string}\n * @memberof TokenStat\n */\n sellVolumesInUsd30m: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_IN_USD_30M\n * @type {string}\n * @memberof TokenStat\n */\n volumesInUsd30m: string;\n /**\n * DTO.TOKEN.STAT.BUYERS_30M\n * @type {string}\n * @memberof TokenStat\n */\n buyers30m?: string;\n /**\n * DTO.TOKEN.STAT.SELLERS_30M\n * @type {string}\n * @memberof TokenStat\n */\n sellers30m?: string;\n /**\n * DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_30M\n * @type {string}\n * @memberof TokenStat\n */\n openPriceInUsd30m: string;\n /**\n * DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_30M\n * @type {string}\n * @memberof TokenStat\n */\n closePriceInUsd30m: string;\n /**\n * DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_30M\n * @type {string}\n * @memberof TokenStat\n */\n priceChangeRatioInUsd30m: string;\n /**\n * DTO.TOKEN.STAT.TRADES_30M\n * @type {string}\n * @memberof TokenStat\n */\n trades30m: string;\n /**\n * DTO.TOKEN.STAT.TRADERS_30M\n * @type {string}\n * @memberof TokenStat\n */\n traders30m?: string;\n /**\n * DTO.TOKEN.STAT.HIGH_IN_USD_30M\n * @type {string}\n * @memberof TokenStat\n */\n highInUsd30m?: string;\n /**\n * DTO.TOKEN.STAT.LOW_IN_USD_30M\n * @type {string}\n * @memberof TokenStat\n */\n lowInUsd30m?: string;\n /**\n * DTO.TOKEN.STAT.PRICE_1H\n * @type {string}\n * @memberof TokenStat\n */\n price1h: string;\n /**\n * DTO.TOKEN.STAT.BUYS_1H\n * @type {string}\n * @memberof TokenStat\n */\n buys1h: string;\n /**\n * DTO.TOKEN.STAT.SELLS_1H\n * @type {string}\n * @memberof TokenStat\n */\n sells1h: string;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_1H\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumes1h: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_1H\n * @type {string}\n * @memberof TokenStat\n */\n sellsVolumes1h: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_1H\n * @type {string}\n * @memberof TokenStat\n */\n volumes1h: string;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_1H\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumesInUsd1h: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_1H\n * @type {string}\n * @memberof TokenStat\n */\n sellVolumesInUsd1h: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_IN_USD_1H\n * @type {string}\n * @memberof TokenStat\n */\n volumesInUsd1h: string;\n /**\n * DTO.TOKEN.STAT.BUYERS_1H\n * @type {string}\n * @memberof TokenStat\n */\n buyers1h?: string;\n /**\n * DTO.TOKEN.STAT.SELLERS_1H\n * @type {string}\n * @memberof TokenStat\n */\n sellers1h?: string;\n /**\n * DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_1H\n * @type {string}\n * @memberof TokenStat\n */\n openPriceInUsd1h: string;\n /**\n * DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_1H\n * @type {string}\n * @memberof TokenStat\n */\n closePriceInUsd1h: string;\n /**\n * DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_1H\n * @type {string}\n * @memberof TokenStat\n */\n priceChangeRatioInUsd1h: string;\n /**\n * DTO.TOKEN.STAT.TRADES_1H\n * @type {string}\n * @memberof TokenStat\n */\n trades1h: string;\n /**\n * DTO.TOKEN.STAT.TRADERS_1H\n * @type {string}\n * @memberof TokenStat\n */\n traders1h?: string;\n /**\n * DTO.TOKEN.STAT.HIGH_IN_USD_1H\n * @type {string}\n * @memberof TokenStat\n */\n highInUsd1h?: string;\n /**\n * DTO.TOKEN.STAT.LOW_IN_USD_1H\n * @type {string}\n * @memberof TokenStat\n */\n lowInUsd1h?: string;\n /**\n * DTO.TOKEN.STAT.PRICE_4H\n * @type {string}\n * @memberof TokenStat\n */\n price4h: string;\n /**\n * DTO.TOKEN.STAT.BUYS_4H\n * @type {string}\n * @memberof TokenStat\n */\n buys4h: string;\n /**\n * DTO.TOKEN.STAT.SELLS_4H\n * @type {string}\n * @memberof TokenStat\n */\n sells4h: string;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_4H\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumes4h: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_4H\n * @type {string}\n * @memberof TokenStat\n */\n sellsVolumes4h: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_4H\n * @type {string}\n * @memberof TokenStat\n */\n volumes4h: string;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_4H\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumesInUsd4h: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_4H\n * @type {string}\n * @memberof TokenStat\n */\n sellVolumesInUsd4h: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_IN_USD_4H\n * @type {string}\n * @memberof TokenStat\n */\n volumesInUsd4h: string;\n /**\n * DTO.TOKEN.STAT.BUYERS_4H\n * @type {string}\n * @memberof TokenStat\n */\n buyers4h?: string;\n /**\n * DTO.TOKEN.STAT.SELLERS_4H\n * @type {string}\n * @memberof TokenStat\n */\n sellers4h?: string;\n /**\n * DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_4H\n * @type {string}\n * @memberof TokenStat\n */\n openPriceInUsd4h: string;\n /**\n * DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_4H\n * @type {string}\n * @memberof TokenStat\n */\n closePriceInUsd4h: string;\n /**\n * DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_4H\n * @type {string}\n * @memberof TokenStat\n */\n priceChangeRatioInUsd4h: string;\n /**\n * DTO.TOKEN.STAT.TRADES_4H\n * @type {string}\n * @memberof TokenStat\n */\n trades4h: string;\n /**\n * DTO.TOKEN.STAT.TRADERS_4H\n * @type {string}\n * @memberof TokenStat\n */\n traders4h?: string;\n /**\n * DTO.TOKEN.STAT.HIGH_IN_USD_4H\n * @type {string}\n * @memberof TokenStat\n */\n highInUsd4h?: string;\n /**\n * DTO.TOKEN.STAT.LOW_IN_USD_4H\n * @type {string}\n * @memberof TokenStat\n */\n lowInUsd4h?: string;\n /**\n * DTO.TOKEN.STAT.PRICE_24H\n * @type {string}\n * @memberof TokenStat\n */\n price24h: string;\n /**\n * DTO.TOKEN.STAT.BUYS_24H\n * @type {string}\n * @memberof TokenStat\n */\n buys24h: string;\n /**\n * DTO.TOKEN.STAT.SELLS_24H\n * @type {string}\n * @memberof TokenStat\n */\n sells24h: string;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_24H\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumes24h: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_24H\n * @type {string}\n * @memberof TokenStat\n */\n sellsVolumes24h: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_24H\n * @type {string}\n * @memberof TokenStat\n */\n volumes24h: string;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_24H\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumesInUsd24h: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_24H\n * @type {string}\n * @memberof TokenStat\n */\n sellVolumesInUsd24h: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_IN_USD_24H\n * @type {string}\n * @memberof TokenStat\n */\n volumesInUsd24h: string;\n /**\n * DTO.TOKEN.STAT.BUYERS_24H\n * @type {string}\n * @memberof TokenStat\n */\n buyers24h?: string;\n /**\n * DTO.TOKEN.STAT.SELLERS_24H\n * @type {string}\n * @memberof TokenStat\n */\n sellers24h?: string;\n /**\n * DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_24H\n * @type {string}\n * @memberof TokenStat\n */\n openPriceInUsd24h: string;\n /**\n * DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_24H\n * @type {string}\n * @memberof TokenStat\n */\n closePriceInUsd24h: string;\n /**\n * DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_24H\n * @type {string}\n * @memberof TokenStat\n */\n priceChangeRatioInUsd24h: string;\n /**\n * DTO.TOKEN.STAT.TRADES_24H\n * @type {string}\n * @memberof TokenStat\n */\n trades24h: string;\n /**\n * DTO.TOKEN.STAT.TRADERS_24H\n * @type {string}\n * @memberof TokenStat\n */\n traders24h?: string;\n /**\n * DTO.TOKEN.STAT.HIGH_IN_USD_24H\n * @type {string}\n * @memberof TokenStat\n */\n highInUsd24h?: string;\n /**\n * DTO.TOKEN.STAT.LOW_IN_USD_24H\n * @type {string}\n * @memberof TokenStat\n */\n lowInUsd24h?: string;\n}\n\n/**\n * Check if a given object implements the TokenStat interface.\n */\nexport function instanceOfTokenStat(value: object): value is TokenStat {\n if (!('address' in value) || value['address'] === undefined) return false;\n if (!('price1m' in value) || value['price1m'] === undefined) return false;\n if (!('buys1m' in value) || value['buys1m'] === undefined) return false;\n if (!('sells1m' in value) || value['sells1m'] === undefined) return false;\n if (!('buyVolumes1m' in value) || value['buyVolumes1m'] === undefined) return false;\n if (!('sellsVolumes1m' in value) || value['sellsVolumes1m'] === undefined) return false;\n if (!('volumes1m' in value) || value['volumes1m'] === undefined) return false;\n if (!('buyVolumesInUsd1m' in value) || value['buyVolumesInUsd1m'] === undefined) return false;\n if (!('sellVolumesInUsd1m' in value) || value['sellVolumesInUsd1m'] === undefined) return false;\n if (!('volumesInUsd1m' in value) || value['volumesInUsd1m'] === undefined) return false;\n if (!('openPriceInUsd1m' in value) || value['openPriceInUsd1m'] === undefined) return false;\n if (!('closePriceInUsd1m' in value) || value['closePriceInUsd1m'] === undefined) return false;\n if (!('priceChangeRatioInUsd1m' in value) || value['priceChangeRatioInUsd1m'] === undefined) return false;\n if (!('trades1m' in value) || value['trades1m'] === undefined) return false;\n if (!('price5m' in value) || value['price5m'] === undefined) return false;\n if (!('buys5m' in value) || value['buys5m'] === undefined) return false;\n if (!('sells5m' in value) || value['sells5m'] === undefined) return false;\n if (!('buyVolumes5m' in value) || value['buyVolumes5m'] === undefined) return false;\n if (!('sellsVolumes5m' in value) || value['sellsVolumes5m'] === undefined) return false;\n if (!('volumes5m' in value) || value['volumes5m'] === undefined) return false;\n if (!('buyVolumesInUsd5m' in value) || value['buyVolumesInUsd5m'] === undefined) return false;\n if (!('sellVolumesInUsd5m' in value) || value['sellVolumesInUsd5m'] === undefined) return false;\n if (!('volumesInUsd5m' in value) || value['volumesInUsd5m'] === undefined) return false;\n if (!('openPriceInUsd5m' in value) || value['openPriceInUsd5m'] === undefined) return false;\n if (!('closePriceInUsd5m' in value) || value['closePriceInUsd5m'] === undefined) return false;\n if (!('priceChangeRatioInUsd5m' in value) || value['priceChangeRatioInUsd5m'] === undefined) return false;\n if (!('trades5m' in value) || value['trades5m'] === undefined) return false;\n if (!('price30m' in value) || value['price30m'] === undefined) return false;\n if (!('buys30m' in value) || value['buys30m'] === undefined) return false;\n if (!('sells30m' in value) || value['sells30m'] === undefined) return false;\n if (!('buyVolumes30m' in value) || value['buyVolumes30m'] === undefined) return false;\n if (!('sellsVolumes30m' in value) || value['sellsVolumes30m'] === undefined) return false;\n if (!('volumes30m' in value) || value['volumes30m'] === undefined) return false;\n if (!('buyVolumesInUsd30m' in value) || value['buyVolumesInUsd30m'] === undefined) return false;\n if (!('sellVolumesInUsd30m' in value) || value['sellVolumesInUsd30m'] === undefined) return false;\n if (!('volumesInUsd30m' in value) || value['volumesInUsd30m'] === undefined) return false;\n if (!('openPriceInUsd30m' in value) || value['openPriceInUsd30m'] === undefined) return false;\n if (!('closePriceInUsd30m' in value) || value['closePriceInUsd30m'] === undefined) return false;\n if (!('priceChangeRatioInUsd30m' in value) || value['priceChangeRatioInUsd30m'] === undefined) return false;\n if (!('trades30m' in value) || value['trades30m'] === undefined) return false;\n if (!('price1h' in value) || value['price1h'] === undefined) return false;\n if (!('buys1h' in value) || value['buys1h'] === undefined) return false;\n if (!('sells1h' in value) || value['sells1h'] === undefined) return false;\n if (!('buyVolumes1h' in value) || value['buyVolumes1h'] === undefined) return false;\n if (!('sellsVolumes1h' in value) || value['sellsVolumes1h'] === undefined) return false;\n if (!('volumes1h' in value) || value['volumes1h'] === undefined) return false;\n if (!('buyVolumesInUsd1h' in value) || value['buyVolumesInUsd1h'] === undefined) return false;\n if (!('sellVolumesInUsd1h' in value) || value['sellVolumesInUsd1h'] === undefined) return false;\n if (!('volumesInUsd1h' in value) || value['volumesInUsd1h'] === undefined) return false;\n if (!('openPriceInUsd1h' in value) || value['openPriceInUsd1h'] === undefined) return false;\n if (!('closePriceInUsd1h' in value) || value['closePriceInUsd1h'] === undefined) return false;\n if (!('priceChangeRatioInUsd1h' in value) || value['priceChangeRatioInUsd1h'] === undefined) return false;\n if (!('trades1h' in value) || value['trades1h'] === undefined) return false;\n if (!('price4h' in value) || value['price4h'] === undefined) return false;\n if (!('buys4h' in value) || value['buys4h'] === undefined) return false;\n if (!('sells4h' in value) || value['sells4h'] === undefined) return false;\n if (!('buyVolumes4h' in value) || value['buyVolumes4h'] === undefined) return false;\n if (!('sellsVolumes4h' in value) || value['sellsVolumes4h'] === undefined) return false;\n if (!('volumes4h' in value) || value['volumes4h'] === undefined) return false;\n if (!('buyVolumesInUsd4h' in value) || value['buyVolumesInUsd4h'] === undefined) return false;\n if (!('sellVolumesInUsd4h' in value) || value['sellVolumesInUsd4h'] === undefined) return false;\n if (!('volumesInUsd4h' in value) || value['volumesInUsd4h'] === undefined) return false;\n if (!('openPriceInUsd4h' in value) || value['openPriceInUsd4h'] === undefined) return false;\n if (!('closePriceInUsd4h' in value) || value['closePriceInUsd4h'] === undefined) return false;\n if (!('priceChangeRatioInUsd4h' in value) || value['priceChangeRatioInUsd4h'] === undefined) return false;\n if (!('trades4h' in value) || value['trades4h'] === undefined) return false;\n if (!('price24h' in value) || value['price24h'] === undefined) return false;\n if (!('buys24h' in value) || value['buys24h'] === undefined) return false;\n if (!('sells24h' in value) || value['sells24h'] === undefined) return false;\n if (!('buyVolumes24h' in value) || value['buyVolumes24h'] === undefined) return false;\n if (!('sellsVolumes24h' in value) || value['sellsVolumes24h'] === undefined) return false;\n if (!('volumes24h' in value) || value['volumes24h'] === undefined) return false;\n if (!('buyVolumesInUsd24h' in value) || value['buyVolumesInUsd24h'] === undefined) return false;\n if (!('sellVolumesInUsd24h' in value) || value['sellVolumesInUsd24h'] === undefined) return false;\n if (!('volumesInUsd24h' in value) || value['volumesInUsd24h'] === undefined) return false;\n if (!('openPriceInUsd24h' in value) || value['openPriceInUsd24h'] === undefined) return false;\n if (!('closePriceInUsd24h' in value) || value['closePriceInUsd24h'] === undefined) return false;\n if (!('priceChangeRatioInUsd24h' in value) || value['priceChangeRatioInUsd24h'] === undefined) return false;\n if (!('trades24h' in value) || value['trades24h'] === undefined) return false;\n return true;\n}\n\nexport function TokenStatFromJSON(json: any): TokenStat {\n return TokenStatFromJSONTyped(json, false);\n}\n\nexport function TokenStatFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenStat {\n if (json == null) {\n return json;\n }\n return {\n \n 'address': json['address'],\n 'price1m': json['price1m'],\n 'buys1m': json['buys1m'],\n 'sells1m': json['sells1m'],\n 'buyVolumes1m': json['buyVolumes1m'],\n 'sellsVolumes1m': json['sellsVolumes1m'],\n 'volumes1m': json['volumes1m'],\n 'buyVolumesInUsd1m': json['buyVolumesInUsd1m'],\n 'sellVolumesInUsd1m': json['sellVolumesInUsd1m'],\n 'volumesInUsd1m': json['volumesInUsd1m'],\n 'buyers1m': json['buyers1m'] == null ? undefined : json['buyers1m'],\n 'sellers1m': json['sellers1m'] == null ? undefined : json['sellers1m'],\n 'openPriceInUsd1m': json['openPriceInUsd1m'],\n 'closePriceInUsd1m': json['closePriceInUsd1m'],\n 'priceChangeRatioInUsd1m': json['priceChangeRatioInUsd1m'],\n 'trades1m': json['trades1m'],\n 'traders1m': json['traders1m'] == null ? undefined : json['traders1m'],\n 'highInUsd1m': json['highInUsd1m'] == null ? undefined : json['highInUsd1m'],\n 'lowInUsd1m': json['lowInUsd1m'] == null ? undefined : json['lowInUsd1m'],\n 'price5m': json['price5m'],\n 'buys5m': json['buys5m'],\n 'sells5m': json['sells5m'],\n 'buyVolumes5m': json['buyVolumes5m'],\n 'sellsVolumes5m': json['sellsVolumes5m'],\n 'volumes5m': json['volumes5m'],\n 'buyVolumesInUsd5m': json['buyVolumesInUsd5m'],\n 'sellVolumesInUsd5m': json['sellVolumesInUsd5m'],\n 'volumesInUsd5m': json['volumesInUsd5m'],\n 'buyers5m': json['buyers5m'] == null ? undefined : json['buyers5m'],\n 'sellers5m': json['sellers5m'] == null ? undefined : json['sellers5m'],\n 'openPriceInUsd5m': json['openPriceInUsd5m'],\n 'closePriceInUsd5m': json['closePriceInUsd5m'],\n 'priceChangeRatioInUsd5m': json['priceChangeRatioInUsd5m'],\n 'trades5m': json['trades5m'],\n 'traders5m': json['traders5m'] == null ? undefined : json['traders5m'],\n 'highInUsd5m': json['highInUsd5m'] == null ? undefined : json['highInUsd5m'],\n 'lowInUsd5m': json['lowInUsd5m'] == null ? undefined : json['lowInUsd5m'],\n 'price15m': json['price15m'] == null ? undefined : json['price15m'],\n 'buys15m': json['buys15m'] == null ? undefined : json['buys15m'],\n 'sells15m': json['sells15m'] == null ? undefined : json['sells15m'],\n 'buyVolumes15m': json['buyVolumes15m'] == null ? undefined : json['buyVolumes15m'],\n 'sellsVolumes15m': json['sellsVolumes15m'] == null ? undefined : json['sellsVolumes15m'],\n 'volumes15m': json['volumes15m'] == null ? undefined : json['volumes15m'],\n 'buyVolumesInUsd15m': json['buyVolumesInUsd15m'] == null ? undefined : json['buyVolumesInUsd15m'],\n 'sellVolumesInUsd15m': json['sellVolumesInUsd15m'] == null ? undefined : json['sellVolumesInUsd15m'],\n 'volumesInUsd15m': json['volumesInUsd15m'] == null ? undefined : json['volumesInUsd15m'],\n 'buyers15m': json['buyers15m'] == null ? undefined : json['buyers15m'],\n 'sellers15m': json['sellers15m'] == null ? undefined : json['sellers15m'],\n 'openPriceInUsd15m': json['openPriceInUsd15m'] == null ? undefined : json['openPriceInUsd15m'],\n 'closePriceInUsd15m': json['closePriceInUsd15m'] == null ? undefined : json['closePriceInUsd15m'],\n 'priceChangeRatioInUsd15m': json['priceChangeRatioInUsd15m'] == null ? undefined : json['priceChangeRatioInUsd15m'],\n 'trades15m': json['trades15m'] == null ? undefined : json['trades15m'],\n 'traders15m': json['traders15m'] == null ? undefined : json['traders15m'],\n 'highInUsd15m': json['highInUsd15m'] == null ? undefined : json['highInUsd15m'],\n 'lowInUsd15m': json['lowInUsd15m'] == null ? undefined : json['lowInUsd15m'],\n 'price30m': json['price30m'],\n 'buys30m': json['buys30m'],\n 'sells30m': json['sells30m'],\n 'buyVolumes30m': json['buyVolumes30m'],\n 'sellsVolumes30m': json['sellsVolumes30m'],\n 'volumes30m': json['volumes30m'],\n 'buyVolumesInUsd30m': json['buyVolumesInUsd30m'],\n 'sellVolumesInUsd30m': json['sellVolumesInUsd30m'],\n 'volumesInUsd30m': json['volumesInUsd30m'],\n 'buyers30m': json['buyers30m'] == null ? undefined : json['buyers30m'],\n 'sellers30m': json['sellers30m'] == null ? undefined : json['sellers30m'],\n 'openPriceInUsd30m': json['openPriceInUsd30m'],\n 'closePriceInUsd30m': json['closePriceInUsd30m'],\n 'priceChangeRatioInUsd30m': json['priceChangeRatioInUsd30m'],\n 'trades30m': json['trades30m'],\n 'traders30m': json['traders30m'] == null ? undefined : json['traders30m'],\n 'highInUsd30m': json['highInUsd30m'] == null ? undefined : json['highInUsd30m'],\n 'lowInUsd30m': json['lowInUsd30m'] == null ? undefined : json['lowInUsd30m'],\n 'price1h': json['price1h'],\n 'buys1h': json['buys1h'],\n 'sells1h': json['sells1h'],\n 'buyVolumes1h': json['buyVolumes1h'],\n 'sellsVolumes1h': json['sellsVolumes1h'],\n 'volumes1h': json['volumes1h'],\n 'buyVolumesInUsd1h': json['buyVolumesInUsd1h'],\n 'sellVolumesInUsd1h': json['sellVolumesInUsd1h'],\n 'volumesInUsd1h': json['volumesInUsd1h'],\n 'buyers1h': json['buyers1h'] == null ? undefined : json['buyers1h'],\n 'sellers1h': json['sellers1h'] == null ? undefined : json['sellers1h'],\n 'openPriceInUsd1h': json['openPriceInUsd1h'],\n 'closePriceInUsd1h': json['closePriceInUsd1h'],\n 'priceChangeRatioInUsd1h': json['priceChangeRatioInUsd1h'],\n 'trades1h': json['trades1h'],\n 'traders1h': json['traders1h'] == null ? undefined : json['traders1h'],\n 'highInUsd1h': json['highInUsd1h'] == null ? undefined : json['highInUsd1h'],\n 'lowInUsd1h': json['lowInUsd1h'] == null ? undefined : json['lowInUsd1h'],\n 'price4h': json['price4h'],\n 'buys4h': json['buys4h'],\n 'sells4h': json['sells4h'],\n 'buyVolumes4h': json['buyVolumes4h'],\n 'sellsVolumes4h': json['sellsVolumes4h'],\n 'volumes4h': json['volumes4h'],\n 'buyVolumesInUsd4h': json['buyVolumesInUsd4h'],\n 'sellVolumesInUsd4h': json['sellVolumesInUsd4h'],\n 'volumesInUsd4h': json['volumesInUsd4h'],\n 'buyers4h': json['buyers4h'] == null ? undefined : json['buyers4h'],\n 'sellers4h': json['sellers4h'] == null ? undefined : json['sellers4h'],\n 'openPriceInUsd4h': json['openPriceInUsd4h'],\n 'closePriceInUsd4h': json['closePriceInUsd4h'],\n 'priceChangeRatioInUsd4h': json['priceChangeRatioInUsd4h'],\n 'trades4h': json['trades4h'],\n 'traders4h': json['traders4h'] == null ? undefined : json['traders4h'],\n 'highInUsd4h': json['highInUsd4h'] == null ? undefined : json['highInUsd4h'],\n 'lowInUsd4h': json['lowInUsd4h'] == null ? undefined : json['lowInUsd4h'],\n 'price24h': json['price24h'],\n 'buys24h': json['buys24h'],\n 'sells24h': json['sells24h'],\n 'buyVolumes24h': json['buyVolumes24h'],\n 'sellsVolumes24h': json['sellsVolumes24h'],\n 'volumes24h': json['volumes24h'],\n 'buyVolumesInUsd24h': json['buyVolumesInUsd24h'],\n 'sellVolumesInUsd24h': json['sellVolumesInUsd24h'],\n 'volumesInUsd24h': json['volumesInUsd24h'],\n 'buyers24h': json['buyers24h'] == null ? undefined : json['buyers24h'],\n 'sellers24h': json['sellers24h'] == null ? undefined : json['sellers24h'],\n 'openPriceInUsd24h': json['openPriceInUsd24h'],\n 'closePriceInUsd24h': json['closePriceInUsd24h'],\n 'priceChangeRatioInUsd24h': json['priceChangeRatioInUsd24h'],\n 'trades24h': json['trades24h'],\n 'traders24h': json['traders24h'] == null ? undefined : json['traders24h'],\n 'highInUsd24h': json['highInUsd24h'] == null ? undefined : json['highInUsd24h'],\n 'lowInUsd24h': json['lowInUsd24h'] == null ? undefined : json['lowInUsd24h'],\n };\n}\n\nexport function TokenStatToJSON(json: any): TokenStat {\n return TokenStatToJSONTyped(json, false);\n}\n\nexport function TokenStatToJSONTyped(value?: TokenStat | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'address': value['address'],\n 'price1m': value['price1m'],\n 'buys1m': value['buys1m'],\n 'sells1m': value['sells1m'],\n 'buyVolumes1m': value['buyVolumes1m'],\n 'sellsVolumes1m': value['sellsVolumes1m'],\n 'volumes1m': value['volumes1m'],\n 'buyVolumesInUsd1m': value['buyVolumesInUsd1m'],\n 'sellVolumesInUsd1m': value['sellVolumesInUsd1m'],\n 'volumesInUsd1m': value['volumesInUsd1m'],\n 'buyers1m': value['buyers1m'],\n 'sellers1m': value['sellers1m'],\n 'openPriceInUsd1m': value['openPriceInUsd1m'],\n 'closePriceInUsd1m': value['closePriceInUsd1m'],\n 'priceChangeRatioInUsd1m': value['priceChangeRatioInUsd1m'],\n 'trades1m': value['trades1m'],\n 'traders1m': value['traders1m'],\n 'highInUsd1m': value['highInUsd1m'],\n 'lowInUsd1m': value['lowInUsd1m'],\n 'price5m': value['price5m'],\n 'buys5m': value['buys5m'],\n 'sells5m': value['sells5m'],\n 'buyVolumes5m': value['buyVolumes5m'],\n 'sellsVolumes5m': value['sellsVolumes5m'],\n 'volumes5m': value['volumes5m'],\n 'buyVolumesInUsd5m': value['buyVolumesInUsd5m'],\n 'sellVolumesInUsd5m': value['sellVolumesInUsd5m'],\n 'volumesInUsd5m': value['volumesInUsd5m'],\n 'buyers5m': value['buyers5m'],\n 'sellers5m': value['sellers5m'],\n 'openPriceInUsd5m': value['openPriceInUsd5m'],\n 'closePriceInUsd5m': value['closePriceInUsd5m'],\n 'priceChangeRatioInUsd5m': value['priceChangeRatioInUsd5m'],\n 'trades5m': value['trades5m'],\n 'traders5m': value['traders5m'],\n 'highInUsd5m': value['highInUsd5m'],\n 'lowInUsd5m': value['lowInUsd5m'],\n 'price15m': value['price15m'],\n 'buys15m': value['buys15m'],\n 'sells15m': value['sells15m'],\n 'buyVolumes15m': value['buyVolumes15m'],\n 'sellsVolumes15m': value['sellsVolumes15m'],\n 'volumes15m': value['volumes15m'],\n 'buyVolumesInUsd15m': value['buyVolumesInUsd15m'],\n 'sellVolumesInUsd15m': value['sellVolumesInUsd15m'],\n 'volumesInUsd15m': value['volumesInUsd15m'],\n 'buyers15m': value['buyers15m'],\n 'sellers15m': value['sellers15m'],\n 'openPriceInUsd15m': value['openPriceInUsd15m'],\n 'closePriceInUsd15m': value['closePriceInUsd15m'],\n 'priceChangeRatioInUsd15m': value['priceChangeRatioInUsd15m'],\n 'trades15m': value['trades15m'],\n 'traders15m': value['traders15m'],\n 'highInUsd15m': value['highInUsd15m'],\n 'lowInUsd15m': value['lowInUsd15m'],\n 'price30m': value['price30m'],\n 'buys30m': value['buys30m'],\n 'sells30m': value['sells30m'],\n 'buyVolumes30m': value['buyVolumes30m'],\n 'sellsVolumes30m': value['sellsVolumes30m'],\n 'volumes30m': value['volumes30m'],\n 'buyVolumesInUsd30m': value['buyVolumesInUsd30m'],\n 'sellVolumesInUsd30m': value['sellVolumesInUsd30m'],\n 'volumesInUsd30m': value['volumesInUsd30m'],\n 'buyers30m': value['buyers30m'],\n 'sellers30m': value['sellers30m'],\n 'openPriceInUsd30m': value['openPriceInUsd30m'],\n 'closePriceInUsd30m': value['closePriceInUsd30m'],\n 'priceChangeRatioInUsd30m': value['priceChangeRatioInUsd30m'],\n 'trades30m': value['trades30m'],\n 'traders30m': value['traders30m'],\n 'highInUsd30m': value['highInUsd30m'],\n 'lowInUsd30m': value['lowInUsd30m'],\n 'price1h': value['price1h'],\n 'buys1h': value['buys1h'],\n 'sells1h': value['sells1h'],\n 'buyVolumes1h': value['buyVolumes1h'],\n 'sellsVolumes1h': value['sellsVolumes1h'],\n 'volumes1h': value['volumes1h'],\n 'buyVolumesInUsd1h': value['buyVolumesInUsd1h'],\n 'sellVolumesInUsd1h': value['sellVolumesInUsd1h'],\n 'volumesInUsd1h': value['volumesInUsd1h'],\n 'buyers1h': value['buyers1h'],\n 'sellers1h': value['sellers1h'],\n 'openPriceInUsd1h': value['openPriceInUsd1h'],\n 'closePriceInUsd1h': value['closePriceInUsd1h'],\n 'priceChangeRatioInUsd1h': value['priceChangeRatioInUsd1h'],\n 'trades1h': value['trades1h'],\n 'traders1h': value['traders1h'],\n 'highInUsd1h': value['highInUsd1h'],\n 'lowInUsd1h': value['lowInUsd1h'],\n 'price4h': value['price4h'],\n 'buys4h': value['buys4h'],\n 'sells4h': value['sells4h'],\n 'buyVolumes4h': value['buyVolumes4h'],\n 'sellsVolumes4h': value['sellsVolumes4h'],\n 'volumes4h': value['volumes4h'],\n 'buyVolumesInUsd4h': value['buyVolumesInUsd4h'],\n 'sellVolumesInUsd4h': value['sellVolumesInUsd4h'],\n 'volumesInUsd4h': value['volumesInUsd4h'],\n 'buyers4h': value['buyers4h'],\n 'sellers4h': value['sellers4h'],\n 'openPriceInUsd4h': value['openPriceInUsd4h'],\n 'closePriceInUsd4h': value['closePriceInUsd4h'],\n 'priceChangeRatioInUsd4h': value['priceChangeRatioInUsd4h'],\n 'trades4h': value['trades4h'],\n 'traders4h': value['traders4h'],\n 'highInUsd4h': value['highInUsd4h'],\n 'lowInUsd4h': value['lowInUsd4h'],\n 'price24h': value['price24h'],\n 'buys24h': value['buys24h'],\n 'sells24h': value['sells24h'],\n 'buyVolumes24h': value['buyVolumes24h'],\n 'sellsVolumes24h': value['sellsVolumes24h'],\n 'volumes24h': value['volumes24h'],\n 'buyVolumesInUsd24h': value['buyVolumesInUsd24h'],\n 'sellVolumesInUsd24h': value['sellVolumesInUsd24h'],\n 'volumesInUsd24h': value['volumesInUsd24h'],\n 'buyers24h': value['buyers24h'],\n 'sellers24h': value['sellers24h'],\n 'openPriceInUsd24h': value['openPriceInUsd24h'],\n 'closePriceInUsd24h': value['closePriceInUsd24h'],\n 'priceChangeRatioInUsd24h': value['priceChangeRatioInUsd24h'],\n 'trades24h': value['trades24h'],\n 'traders24h': value['traders24h'],\n 'highInUsd24h': value['highInUsd24h'],\n 'lowInUsd24h': value['lowInUsd24h'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { TokenMarketData } from './TokenMarketData';\nimport {\n TokenMarketDataFromJSON,\n TokenMarketDataFromJSONTyped,\n TokenMarketDataToJSON,\n TokenMarketDataToJSONTyped,\n} from './TokenMarketData';\nimport type { TokenMetadata } from './TokenMetadata';\nimport {\n TokenMetadataFromJSON,\n TokenMetadataFromJSONTyped,\n TokenMetadataToJSON,\n TokenMetadataToJSONTyped,\n} from './TokenMetadata';\nimport type { TokenStat } from './TokenStat';\nimport {\n TokenStatFromJSON,\n TokenStatFromJSONTyped,\n TokenStatToJSON,\n TokenStatToJSONTyped,\n} from './TokenStat';\n\n/**\n * \n * @export\n * @interface DevTokenDTO\n */\nexport interface DevTokenDTO {\n /**\n * DTO.DEV_TOKEN.ADDRESS\n * @type {string}\n * @memberof DevTokenDTO\n */\n address: string;\n /**\n * DTO.DEV_TOKEN.METADATA\n * @type {TokenMetadata}\n * @memberof DevTokenDTO\n */\n metadata: TokenMetadata;\n /**\n * DTO.DEV_TOKEN.MARKET_DATA\n * @type {TokenMarketData}\n * @memberof DevTokenDTO\n */\n marketData: TokenMarketData;\n /**\n * DTO.DEV_TOKEN.STATS\n * @type {TokenStat}\n * @memberof DevTokenDTO\n */\n stats: TokenStat;\n}\n\n/**\n * Check if a given object implements the DevTokenDTO interface.\n */\nexport function instanceOfDevTokenDTO(value: object): value is DevTokenDTO {\n if (!('address' in value) || value['address'] === undefined) return false;\n if (!('metadata' in value) || value['metadata'] === undefined) return false;\n if (!('marketData' in value) || value['marketData'] === undefined) return false;\n if (!('stats' in value) || value['stats'] === undefined) return false;\n return true;\n}\n\nexport function DevTokenDTOFromJSON(json: any): DevTokenDTO {\n return DevTokenDTOFromJSONTyped(json, false);\n}\n\nexport function DevTokenDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): DevTokenDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'address': json['address'],\n 'metadata': TokenMetadataFromJSON(json['metadata']),\n 'marketData': TokenMarketDataFromJSON(json['marketData']),\n 'stats': TokenStatFromJSON(json['stats']),\n };\n}\n\nexport function DevTokenDTOToJSON(json: any): DevTokenDTO {\n return DevTokenDTOToJSONTyped(json, false);\n}\n\nexport function DevTokenDTOToJSONTyped(value?: DevTokenDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'address': value['address'],\n 'metadata': TokenMetadataToJSON(value['metadata']),\n 'marketData': TokenMarketDataToJSON(value['marketData']),\n 'stats': TokenStatToJSON(value['stats']),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface DexDTO\n */\nexport interface DexDTO {\n /**\n * DTO.DEX.PROGRAM_ADDRESS\n * @type {string}\n * @memberof DexDTO\n */\n programAddress?: string;\n /**\n * DTO.DEX.PROTOCOL_FAMILY\n * @type {string}\n * @memberof DexDTO\n */\n protocolFamily?: string;\n /**\n * DTO.DEX.IMAGE\n * @type {string}\n * @memberof DexDTO\n */\n image?: string;\n /**\n * DTO.DEX.CHAIN\n * @type {string}\n * @memberof DexDTO\n */\n chain: string;\n}\n\n/**\n * Check if a given object implements the DexDTO interface.\n */\nexport function instanceOfDexDTO(value: object): value is DexDTO {\n if (!('chain' in value) || value['chain'] === undefined) return false;\n return true;\n}\n\nexport function DexDTOFromJSON(json: any): DexDTO {\n return DexDTOFromJSONTyped(json, false);\n}\n\nexport function DexDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): DexDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'programAddress': json['programAddress'] == null ? undefined : json['programAddress'],\n 'protocolFamily': json['protocolFamily'] == null ? undefined : json['protocolFamily'],\n 'image': json['image'] == null ? undefined : json['image'],\n 'chain': json['chain'],\n };\n}\n\nexport function DexDTOToJSON(json: any): DexDTO {\n return DexDTOToJSONTyped(json, false);\n}\n\nexport function DexDTOToJSONTyped(value?: DexDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'programAddress': value['programAddress'],\n 'protocolFamily': value['protocolFamily'],\n 'image': value['image'],\n 'chain': value['chain'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { DexDTO } from './DexDTO';\nimport {\n DexDTOFromJSON,\n DexDTOFromJSONTyped,\n DexDTOToJSON,\n DexDTOToJSONTyped,\n} from './DexDTO';\n\n/**\n * \n * @export\n * @interface DexPage\n */\nexport interface DexPage {\n /**\n * DTO.PAGE.HAS_NEXT\n * @type {boolean}\n * @memberof DexPage\n */\n hasNext?: boolean;\n /**\n * DTO.PAGE.HAS_PREV\n * @type {boolean}\n * @memberof DexPage\n */\n hasPrev?: boolean;\n /**\n * DTO.PAGE.START_CURSOR\n * @type {string}\n * @memberof DexPage\n */\n startCursor?: string;\n /**\n * DTO.PAGE.END_CURSOR\n * @type {string}\n * @memberof DexPage\n */\n endCursor?: string;\n /**\n * DTO.PAGE.TOTAL\n * @type {number}\n * @memberof DexPage\n */\n total?: number;\n /**\n * DTO.DEX.PAGE.DATA\n * @type {Array<DexDTO>}\n * @memberof DexPage\n */\n data: Array<DexDTO>;\n}\n\n/**\n * Check if a given object implements the DexPage interface.\n */\nexport function instanceOfDexPage(value: object): value is DexPage {\n if (!('data' in value) || value['data'] === undefined) return false;\n return true;\n}\n\nexport function DexPageFromJSON(json: any): DexPage {\n return DexPageFromJSONTyped(json, false);\n}\n\nexport function DexPageFromJSONTyped(json: any, ignoreDiscriminator: boolean): DexPage {\n if (json == null) {\n return json;\n }\n return {\n \n 'hasNext': json['hasNext'] == null ? undefined : json['hasNext'],\n 'hasPrev': json['hasPrev'] == null ? undefined : json['hasPrev'],\n 'startCursor': json['startCursor'] == null ? undefined : json['startCursor'],\n 'endCursor': json['endCursor'] == null ? undefined : json['endCursor'],\n 'total': json['total'] == null ? undefined : json['total'],\n 'data': ((json['data'] as Array<any>).map(DexDTOFromJSON)),\n };\n}\n\nexport function DexPageToJSON(json: any): DexPage {\n return DexPageToJSONTyped(json, false);\n}\n\nexport function DexPageToJSONTyped(value?: DexPage | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'hasNext': value['hasNext'],\n 'hasPrev': value['hasPrev'],\n 'startCursor': value['startCursor'],\n 'endCursor': value['endCursor'],\n 'total': value['total'],\n 'data': ((value['data'] as Array<any>).map(DexDTOToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface DexPoolDTO\n */\nexport interface DexPoolDTO {\n /**\n * DTO.DEX.PROGRAM_ADDRESS\n * @type {string}\n * @memberof DexPoolDTO\n */\n programAddress?: string;\n /**\n * DTO.DEX.PROTOCOL_FAMILY\n * @type {string}\n * @memberof DexPoolDTO\n */\n protocolFamily?: string;\n /**\n * DTO.DEX.IMAGE\n * @type {string}\n * @memberof DexPoolDTO\n */\n image?: string;\n /**\n * DTO.DEX.CHAIN\n * @type {string}\n * @memberof DexPoolDTO\n */\n chain: string;\n /**\n * DTO.DEXPOOL.POOL_ADDRESS\n * @type {string}\n * @memberof DexPoolDTO\n */\n poolAddress: string;\n /**\n * DTO.DEXPOOL.PROTOCOL_NAME\n * @type {string}\n * @memberof DexPoolDTO\n */\n protocolName?: string;\n /**\n * DTO.DEXPOOL.TOKEN_A\n * @type {string}\n * @memberof DexPoolDTO\n */\n tokenAAddress: string;\n /**\n * DTO.DEXPOOL.TOKEN_B\n * @type {string}\n * @memberof DexPoolDTO\n */\n tokenBAddress: string;\n /**\n * DTO.DEXPOOL.TVL_USD\n * @type {string}\n * @memberof DexPoolDTO\n */\n tvlInUsd?: string;\n /**\n * DTO.DEXPOOL.TVL_SOL\n * @type {string}\n * @memberof DexPoolDTO\n */\n tvlInSol?: string;\n}\n\n/**\n * Check if a given object implements the DexPoolDTO interface.\n */\nexport function instanceOfDexPoolDTO(value: object): value is DexPoolDTO {\n if (!('chain' in value) || value['chain'] === undefined) return false;\n if (!('poolAddress' in value) || value['poolAddress'] === undefined) return false;\n if (!('tokenAAddress' in value) || value['tokenAAddress'] === undefined) return false;\n if (!('tokenBAddress' in value) || value['tokenBAddress'] === undefined) return false;\n return true;\n}\n\nexport function DexPoolDTOFromJSON(json: any): DexPoolDTO {\n return DexPoolDTOFromJSONTyped(json, false);\n}\n\nexport function DexPoolDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): DexPoolDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'programAddress': json['programAddress'] == null ? undefined : json['programAddress'],\n 'protocolFamily': json['protocolFamily'] == null ? undefined : json['protocolFamily'],\n 'image': json['image'] == null ? undefined : json['image'],\n 'chain': json['chain'],\n 'poolAddress': json['poolAddress'],\n 'protocolName': json['protocolName'] == null ? undefined : json['protocolName'],\n 'tokenAAddress': json['tokenAAddress'],\n 'tokenBAddress': json['tokenBAddress'],\n 'tvlInUsd': json['tvlInUsd'] == null ? undefined : json['tvlInUsd'],\n 'tvlInSol': json['tvlInSol'] == null ? undefined : json['tvlInSol'],\n };\n}\n\nexport function DexPoolDTOToJSON(json: any): DexPoolDTO {\n return DexPoolDTOToJSONTyped(json, false);\n}\n\nexport function DexPoolDTOToJSONTyped(value?: DexPoolDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'programAddress': value['programAddress'],\n 'protocolFamily': value['protocolFamily'],\n 'image': value['image'],\n 'chain': value['chain'],\n 'poolAddress': value['poolAddress'],\n 'protocolName': value['protocolName'],\n 'tokenAAddress': value['tokenAAddress'],\n 'tokenBAddress': value['tokenBAddress'],\n 'tvlInUsd': value['tvlInUsd'],\n 'tvlInSol': value['tvlInSol'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface DirectExposureDetail\n */\nexport interface DirectExposureDetail {\n /**\n * DTO.KYT.DIRECT_EXPOSURE_DETAIL.NAME\n * @type {string}\n * @memberof DirectExposureDetail\n */\n name: string;\n /**\n * DTO.KYT.DIRECT_EXPOSURE_DETAIL.CATEGORY_ID\n * @type {number}\n * @memberof DirectExposureDetail\n */\n categoryId: number;\n}\n\n/**\n * Check if a given object implements the DirectExposureDetail interface.\n */\nexport function instanceOfDirectExposureDetail(value: object): value is DirectExposureDetail {\n if (!('name' in value) || value['name'] === undefined) return false;\n if (!('categoryId' in value) || value['categoryId'] === undefined) return false;\n return true;\n}\n\nexport function DirectExposureDetailFromJSON(json: any): DirectExposureDetail {\n return DirectExposureDetailFromJSONTyped(json, false);\n}\n\nexport function DirectExposureDetailFromJSONTyped(json: any, ignoreDiscriminator: boolean): DirectExposureDetail {\n if (json == null) {\n return json;\n }\n return {\n \n 'name': json['name'],\n 'categoryId': json['categoryId'],\n };\n}\n\nexport function DirectExposureDetailToJSON(json: any): DirectExposureDetail {\n return DirectExposureDetailToJSONTyped(json, false);\n}\n\nexport function DirectExposureDetailToJSONTyped(value?: DirectExposureDetail | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'name': value['name'],\n 'categoryId': value['categoryId'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface EndpointResponse\n */\nexport interface EndpointResponse {\n /**\n * DTO.ENDPOINT.ID\n * @type {string}\n * @memberof EndpointResponse\n */\n id?: string;\n /**\n * DTO.ENDPOINT.URL\n * @type {string}\n * @memberof EndpointResponse\n */\n url?: string;\n /**\n * DTO.ENDPOINT.DESCRIPTION\n * @type {string}\n * @memberof EndpointResponse\n */\n description?: string;\n /**\n * DTO.ENDPOINT.FILTER_TYPES\n * @type {Array<string>}\n * @memberof EndpointResponse\n */\n filterTypes?: Array<string>;\n /**\n * DTO.ENDPOINT.CHANNELS\n * @type {Array<string>}\n * @memberof EndpointResponse\n */\n channels?: Array<string>;\n /**\n * DTO.ENDPOINT.DISABLED\n * @type {boolean}\n * @memberof EndpointResponse\n */\n disabled?: boolean;\n /**\n * DTO.ENDPOINT.METADATA\n * @type {object}\n * @memberof EndpointResponse\n */\n metadata?: object;\n /**\n * DTO.ENDPOINT.RATE_LIMIT\n * @type {number}\n * @memberof EndpointResponse\n */\n rateLimit?: number;\n /**\n * DTO.ENDPOINT.FILTER\n * @type {string}\n * @memberof EndpointResponse\n */\n filter?: string;\n /**\n * DTO.ENDPOINT.CREATED_AT\n * @type {string}\n * @memberof EndpointResponse\n */\n createdAt?: string;\n /**\n * DTO.ENDPOINT.UPDATED_AT\n * @type {string}\n * @memberof EndpointResponse\n */\n updatedAt?: string;\n}\n\n/**\n * Check if a given object implements the EndpointResponse interface.\n */\nexport function instanceOfEndpointResponse(value: object): value is EndpointResponse {\n return true;\n}\n\nexport function EndpointResponseFromJSON(json: any): EndpointResponse {\n return EndpointResponseFromJSONTyped(json, false);\n}\n\nexport function EndpointResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): EndpointResponse {\n if (json == null) {\n return json;\n }\n return {\n \n 'id': json['id'] == null ? undefined : json['id'],\n 'url': json['url'] == null ? undefined : json['url'],\n 'description': json['description'] == null ? undefined : json['description'],\n 'filterTypes': json['filterTypes'] == null ? undefined : json['filterTypes'],\n 'channels': json['channels'] == null ? undefined : json['channels'],\n 'disabled': json['disabled'] == null ? undefined : json['disabled'],\n 'metadata': json['metadata'] == null ? undefined : json['metadata'],\n 'rateLimit': json['rateLimit'] == null ? undefined : json['rateLimit'],\n 'filter': json['filter'] == null ? undefined : json['filter'],\n 'createdAt': json['createdAt'] == null ? undefined : json['createdAt'],\n 'updatedAt': json['updatedAt'] == null ? undefined : json['updatedAt'],\n };\n}\n\nexport function EndpointResponseToJSON(json: any): EndpointResponse {\n return EndpointResponseToJSONTyped(json, false);\n}\n\nexport function EndpointResponseToJSONTyped(value?: EndpointResponse | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'id': value['id'],\n 'url': value['url'],\n 'description': value['description'],\n 'filterTypes': value['filterTypes'],\n 'channels': value['channels'],\n 'disabled': value['disabled'],\n 'metadata': value['metadata'],\n 'rateLimit': value['rateLimit'],\n 'filter': value['filter'],\n 'createdAt': value['createdAt'],\n 'updatedAt': value['updatedAt'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { EndpointResponse } from './EndpointResponse';\nimport {\n EndpointResponseFromJSON,\n EndpointResponseFromJSONTyped,\n EndpointResponseToJSON,\n EndpointResponseToJSONTyped,\n} from './EndpointResponse';\n\n/**\n * \n * @export\n * @interface EndpointListResponse\n */\nexport interface EndpointListResponse {\n /**\n * DTO.ENDPOINT.PAGE.DATA\n * @type {Array<EndpointResponse>}\n * @memberof EndpointListResponse\n */\n data?: Array<EndpointResponse>;\n /**\n * DTO.ENDPOINT.PAGE.DONE\n * @type {boolean}\n * @memberof EndpointListResponse\n */\n done?: boolean;\n /**\n * DTO.ENDPOINT.PAGE.ITERATOR\n * @type {string}\n * @memberof EndpointListResponse\n */\n iterator?: string;\n /**\n * DTO.ENDPOINT.PAGE.PREV_ITERATOR\n * @type {string}\n * @memberof EndpointListResponse\n */\n prevIterator?: string;\n}\n\n/**\n * Check if a given object implements the EndpointListResponse interface.\n */\nexport function instanceOfEndpointListResponse(value: object): value is EndpointListResponse {\n return true;\n}\n\nexport function EndpointListResponseFromJSON(json: any): EndpointListResponse {\n return EndpointListResponseFromJSONTyped(json, false);\n}\n\nexport function EndpointListResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): EndpointListResponse {\n if (json == null) {\n return json;\n }\n return {\n \n 'data': json['data'] == null ? undefined : ((json['data'] as Array<any>).map(EndpointResponseFromJSON)),\n 'done': json['done'] == null ? undefined : json['done'],\n 'iterator': json['iterator'] == null ? undefined : json['iterator'],\n 'prevIterator': json['prevIterator'] == null ? undefined : json['prevIterator'],\n };\n}\n\nexport function EndpointListResponseToJSON(json: any): EndpointListResponse {\n return EndpointListResponseToJSONTyped(json, false);\n}\n\nexport function EndpointListResponseToJSONTyped(value?: EndpointListResponse | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'data': value['data'] == null ? undefined : ((value['data'] as Array<any>).map(EndpointResponseToJSON)),\n 'done': value['done'],\n 'iterator': value['iterator'],\n 'prevIterator': value['prevIterator'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface EndpointOperationResponse\n */\nexport interface EndpointOperationResponse {\n /**\n * DTO.ENDPOINT.SUCCESS\n * @type {boolean}\n * @memberof EndpointOperationResponse\n */\n success?: boolean;\n}\n\n/**\n * Check if a given object implements the EndpointOperationResponse interface.\n */\nexport function instanceOfEndpointOperationResponse(value: object): value is EndpointOperationResponse {\n return true;\n}\n\nexport function EndpointOperationResponseFromJSON(json: any): EndpointOperationResponse {\n return EndpointOperationResponseFromJSONTyped(json, false);\n}\n\nexport function EndpointOperationResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): EndpointOperationResponse {\n if (json == null) {\n return json;\n }\n return {\n \n 'success': json['success'] == null ? undefined : json['success'],\n };\n}\n\nexport function EndpointOperationResponseToJSON(json: any): EndpointOperationResponse {\n return EndpointOperationResponseToJSONTyped(json, false);\n}\n\nexport function EndpointOperationResponseToJSONTyped(value?: EndpointOperationResponse | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'success': value['success'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface EndpointSecretResponse\n */\nexport interface EndpointSecretResponse {\n /**\n * DTO.ENDPOINT.SECRET\n * @type {string}\n * @memberof EndpointSecretResponse\n */\n secret?: string;\n}\n\n/**\n * Check if a given object implements the EndpointSecretResponse interface.\n */\nexport function instanceOfEndpointSecretResponse(value: object): value is EndpointSecretResponse {\n return true;\n}\n\nexport function EndpointSecretResponseFromJSON(json: any): EndpointSecretResponse {\n return EndpointSecretResponseFromJSONTyped(json, false);\n}\n\nexport function EndpointSecretResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): EndpointSecretResponse {\n if (json == null) {\n return json;\n }\n return {\n \n 'secret': json['secret'] == null ? undefined : json['secret'],\n };\n}\n\nexport function EndpointSecretResponseToJSON(json: any): EndpointSecretResponse {\n return EndpointSecretResponseToJSONTyped(json, false);\n}\n\nexport function EndpointSecretResponseToJSONTyped(value?: EndpointSecretResponse | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'secret': value['secret'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface EstimateGasLimitInput\n */\nexport interface EstimateGasLimitInput {\n /**\n * From address\n * @type {string}\n * @memberof EstimateGasLimitInput\n */\n from: string;\n /**\n * To address\n * @type {string}\n * @memberof EstimateGasLimitInput\n */\n to: string;\n /**\n * Transaction data (hex)\n * @type {string}\n * @memberof EstimateGasLimitInput\n */\n data: string;\n /**\n * Value to send (in wei, hex string)\n * @type {string}\n * @memberof EstimateGasLimitInput\n */\n value?: string;\n}\n\n/**\n * Check if a given object implements the EstimateGasLimitInput interface.\n */\nexport function instanceOfEstimateGasLimitInput(value: object): value is EstimateGasLimitInput {\n if (!('from' in value) || value['from'] === undefined) return false;\n if (!('to' in value) || value['to'] === undefined) return false;\n if (!('data' in value) || value['data'] === undefined) return false;\n return true;\n}\n\nexport function EstimateGasLimitInputFromJSON(json: any): EstimateGasLimitInput {\n return EstimateGasLimitInputFromJSONTyped(json, false);\n}\n\nexport function EstimateGasLimitInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): EstimateGasLimitInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'from': json['from'],\n 'to': json['to'],\n 'data': json['data'],\n 'value': json['value'] == null ? undefined : json['value'],\n };\n}\n\nexport function EstimateGasLimitInputToJSON(json: any): EstimateGasLimitInput {\n return EstimateGasLimitInputToJSONTyped(json, false);\n}\n\nexport function EstimateGasLimitInputToJSONTyped(value?: EstimateGasLimitInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'from': value['from'],\n 'to': value['to'],\n 'data': value['data'],\n 'value': value['value'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface EstimateGasLimitResponse\n */\nexport interface EstimateGasLimitResponse {\n /**\n * Estimated gas limit (hex string)\n * @type {string}\n * @memberof EstimateGasLimitResponse\n */\n gasLimit: string;\n /**\n * Chain symbol\n * @type {string}\n * @memberof EstimateGasLimitResponse\n */\n chain: string;\n}\n\n/**\n * Check if a given object implements the EstimateGasLimitResponse interface.\n */\nexport function instanceOfEstimateGasLimitResponse(value: object): value is EstimateGasLimitResponse {\n if (!('gasLimit' in value) || value['gasLimit'] === undefined) return false;\n if (!('chain' in value) || value['chain'] === undefined) return false;\n return true;\n}\n\nexport function EstimateGasLimitResponseFromJSON(json: any): EstimateGasLimitResponse {\n return EstimateGasLimitResponseFromJSONTyped(json, false);\n}\n\nexport function EstimateGasLimitResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): EstimateGasLimitResponse {\n if (json == null) {\n return json;\n }\n return {\n \n 'gasLimit': json['gasLimit'],\n 'chain': json['chain'],\n };\n}\n\nexport function EstimateGasLimitResponseToJSON(json: any): EstimateGasLimitResponse {\n return EstimateGasLimitResponseToJSONTyped(json, false);\n}\n\nexport function EstimateGasLimitResponseToJSONTyped(value?: EstimateGasLimitResponse | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'gasLimit': value['gasLimit'],\n 'chain': value['chain'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface GasPriceResponse\n */\nexport interface GasPriceResponse {\n /**\n * Current gas price in wei (hex string)\n * @type {string}\n * @memberof GasPriceResponse\n */\n gasPrice: string;\n /**\n * Chain symbol\n * @type {string}\n * @memberof GasPriceResponse\n */\n chain: string;\n}\n\n/**\n * Check if a given object implements the GasPriceResponse interface.\n */\nexport function instanceOfGasPriceResponse(value: object): value is GasPriceResponse {\n if (!('gasPrice' in value) || value['gasPrice'] === undefined) return false;\n if (!('chain' in value) || value['chain'] === undefined) return false;\n return true;\n}\n\nexport function GasPriceResponseFromJSON(json: any): GasPriceResponse {\n return GasPriceResponseFromJSONTyped(json, false);\n}\n\nexport function GasPriceResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): GasPriceResponse {\n if (json == null) {\n return json;\n }\n return {\n \n 'gasPrice': json['gasPrice'],\n 'chain': json['chain'],\n };\n}\n\nexport function GasPriceResponseToJSON(json: any): GasPriceResponse {\n return GasPriceResponseToJSONTyped(json, false);\n}\n\nexport function GasPriceResponseToJSONTyped(value?: GasPriceResponse | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'gasPrice': value['gasPrice'],\n 'chain': value['chain'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface JobDTO\n */\nexport interface JobDTO {\n /**\n * DTO.JOB.STATE\n * @type {string}\n * @memberof JobDTO\n */\n state: string;\n /**\n * DTO.JOB.RESULT\n * @type {object}\n * @memberof JobDTO\n */\n result: object;\n}\n\n/**\n * Check if a given object implements the JobDTO interface.\n */\nexport function instanceOfJobDTO(value: object): value is JobDTO {\n if (!('state' in value) || value['state'] === undefined) return false;\n if (!('result' in value) || value['result'] === undefined) return false;\n return true;\n}\n\nexport function JobDTOFromJSON(json: any): JobDTO {\n return JobDTOFromJSONTyped(json, false);\n}\n\nexport function JobDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): JobDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'state': json['state'],\n 'result': json['result'],\n };\n}\n\nexport function JobDTOToJSON(json: any): JobDTO {\n return JobDTOToJSONTyped(json, false);\n}\n\nexport function JobDTOToJSONTyped(value?: JobDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'state': value['state'],\n 'result': value['result'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface JobStreamingDTO\n */\nexport interface JobStreamingDTO {\n /**\n * DTO.JOB.STREAMING.ID\n * @type {number}\n * @memberof JobStreamingDTO\n */\n id: number;\n /**\n * DTO.JOB.STREAMING.DATA\n * @type {object}\n * @memberof JobStreamingDTO\n */\n data: object;\n}\n\n/**\n * Check if a given object implements the JobStreamingDTO interface.\n */\nexport function instanceOfJobStreamingDTO(value: object): value is JobStreamingDTO {\n if (!('id' in value) || value['id'] === undefined) return false;\n if (!('data' in value) || value['data'] === undefined) return false;\n return true;\n}\n\nexport function JobStreamingDTOFromJSON(json: any): JobStreamingDTO {\n return JobStreamingDTOFromJSONTyped(json, false);\n}\n\nexport function JobStreamingDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): JobStreamingDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'id': json['id'],\n 'data': json['data'],\n };\n}\n\nexport function JobStreamingDTOToJSON(json: any): JobStreamingDTO {\n return JobStreamingDTOToJSONTyped(json, false);\n}\n\nexport function JobStreamingDTOToJSONTyped(value?: JobStreamingDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'id': value['id'],\n 'data': value['data'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface KYTRegisterTransferRequest\n */\nexport interface KYTRegisterTransferRequest {\n /**\n * DTO.KYT.KYT_REGISTER_TRANSFER_REQUEST.NETWORK\n * @type {string}\n * @memberof KYTRegisterTransferRequest\n */\n network: KYTRegisterTransferRequestNetworkEnum;\n /**\n * DTO.KYT.KYT_REGISTER_TRANSFER_REQUEST.ASSET\n * @type {string}\n * @memberof KYTRegisterTransferRequest\n */\n asset: string;\n /**\n * DTO.KYT.KYT_REGISTER_TRANSFER_REQUEST.TRANSFER_REFERENCE\n * @type {string}\n * @memberof KYTRegisterTransferRequest\n */\n transferReference: string;\n /**\n * DTO.KYT.KYT_REGISTER_TRANSFER_REQUEST.DIRECTION\n * @type {string}\n * @memberof KYTRegisterTransferRequest\n */\n direction: KYTRegisterTransferRequestDirectionEnum;\n}\n\n\n/**\n * @export\n */\nexport const KYTRegisterTransferRequestNetworkEnum = {\n Bitcoin: 'bitcoin',\n Ethereum: 'ethereum',\n Solana: 'Solana'\n} as const;\nexport type KYTRegisterTransferRequestNetworkEnum = typeof KYTRegisterTransferRequestNetworkEnum[keyof typeof KYTRegisterTransferRequestNetworkEnum];\n\n/**\n * @export\n */\nexport const KYTRegisterTransferRequestDirectionEnum = {\n Sent: 'sent',\n Received: 'received'\n} as const;\nexport type KYTRegisterTransferRequestDirectionEnum = typeof KYTRegisterTransferRequestDirectionEnum[keyof typeof KYTRegisterTransferRequestDirectionEnum];\n\n\n/**\n * Check if a given object implements the KYTRegisterTransferRequest interface.\n */\nexport function instanceOfKYTRegisterTransferRequest(value: object): value is KYTRegisterTransferRequest {\n if (!('network' in value) || value['network'] === undefined) return false;\n if (!('asset' in value) || value['asset'] === undefined) return false;\n if (!('transferReference' in value) || value['transferReference'] === undefined) return false;\n if (!('direction' in value) || value['direction'] === undefined) return false;\n return true;\n}\n\nexport function KYTRegisterTransferRequestFromJSON(json: any): KYTRegisterTransferRequest {\n return KYTRegisterTransferRequestFromJSONTyped(json, false);\n}\n\nexport function KYTRegisterTransferRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): KYTRegisterTransferRequest {\n if (json == null) {\n return json;\n }\n return {\n \n 'network': json['network'],\n 'asset': json['asset'],\n 'transferReference': json['transferReference'],\n 'direction': json['direction'],\n };\n}\n\nexport function KYTRegisterTransferRequestToJSON(json: any): KYTRegisterTransferRequest {\n return KYTRegisterTransferRequestToJSONTyped(json, false);\n}\n\nexport function KYTRegisterTransferRequestToJSONTyped(value?: KYTRegisterTransferRequest | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'network': value['network'],\n 'asset': value['asset'],\n 'transferReference': value['transferReference'],\n 'direction': value['direction'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface KYTRegisterWithdrawalRequest\n */\nexport interface KYTRegisterWithdrawalRequest {\n /**\n * DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.NETWORK\n * @type {string}\n * @memberof KYTRegisterWithdrawalRequest\n */\n network: KYTRegisterWithdrawalRequestNetworkEnum;\n /**\n * DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.ASSET\n * @type {string}\n * @memberof KYTRegisterWithdrawalRequest\n */\n asset: string;\n /**\n * DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.ADDRESS\n * @type {string}\n * @memberof KYTRegisterWithdrawalRequest\n */\n address: string;\n /**\n * DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.ASSET_AMOUNT\n * @type {string}\n * @memberof KYTRegisterWithdrawalRequest\n */\n assetAmount: string;\n /**\n * DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.ATTEMPT_TIMESTAMP\n * @type {string}\n * @memberof KYTRegisterWithdrawalRequest\n */\n attemptTimestamp: string;\n /**\n * DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.ASSET_PRICE\n * @type {string}\n * @memberof KYTRegisterWithdrawalRequest\n */\n assetPrice?: string;\n /**\n * DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.ASSET_DENOMINATION\n * @type {string}\n * @memberof KYTRegisterWithdrawalRequest\n */\n assetDenomination?: string;\n /**\n * DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.ASSET_ID\n * @type {string}\n * @memberof KYTRegisterWithdrawalRequest\n */\n assetId?: string;\n /**\n * DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.MEMO\n * @type {string}\n * @memberof KYTRegisterWithdrawalRequest\n */\n memo?: string;\n}\n\n\n/**\n * @export\n */\nexport const KYTRegisterWithdrawalRequestNetworkEnum = {\n Bitcoin: 'bitcoin',\n Ethereum: 'ethereum',\n Solana: 'Solana'\n} as const;\nexport type KYTRegisterWithdrawalRequestNetworkEnum = typeof KYTRegisterWithdrawalRequestNetworkEnum[keyof typeof KYTRegisterWithdrawalRequestNetworkEnum];\n\n\n/**\n * Check if a given object implements the KYTRegisterWithdrawalRequest interface.\n */\nexport function instanceOfKYTRegisterWithdrawalRequest(value: object): value is KYTRegisterWithdrawalRequest {\n if (!('network' in value) || value['network'] === undefined) return false;\n if (!('asset' in value) || value['asset'] === undefined) return false;\n if (!('address' in value) || value['address'] === undefined) return false;\n if (!('assetAmount' in value) || value['assetAmount'] === undefined) return false;\n if (!('attemptTimestamp' in value) || value['attemptTimestamp'] === undefined) return false;\n return true;\n}\n\nexport function KYTRegisterWithdrawalRequestFromJSON(json: any): KYTRegisterWithdrawalRequest {\n return KYTRegisterWithdrawalRequestFromJSONTyped(json, false);\n}\n\nexport function KYTRegisterWithdrawalRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): KYTRegisterWithdrawalRequest {\n if (json == null) {\n return json;\n }\n return {\n \n 'network': json['network'],\n 'asset': json['asset'],\n 'address': json['address'],\n 'assetAmount': json['assetAmount'],\n 'attemptTimestamp': json['attemptTimestamp'],\n 'assetPrice': json['assetPrice'] == null ? undefined : json['assetPrice'],\n 'assetDenomination': json['assetDenomination'] == null ? undefined : json['assetDenomination'],\n 'assetId': json['assetId'] == null ? undefined : json['assetId'],\n 'memo': json['memo'] == null ? undefined : json['memo'],\n };\n}\n\nexport function KYTRegisterWithdrawalRequestToJSON(json: any): KYTRegisterWithdrawalRequest {\n return KYTRegisterWithdrawalRequestToJSONTyped(json, false);\n}\n\nexport function KYTRegisterWithdrawalRequestToJSONTyped(value?: KYTRegisterWithdrawalRequest | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'network': value['network'],\n 'asset': value['asset'],\n 'address': value['address'],\n 'assetAmount': value['assetAmount'],\n 'attemptTimestamp': value['attemptTimestamp'],\n 'assetPrice': value['assetPrice'],\n 'assetDenomination': value['assetDenomination'],\n 'assetId': value['assetId'],\n 'memo': value['memo'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface Link\n */\nexport interface Link {\n /**\n * DTO.DEX.MOONSHOT.LINK.URL\n * @type {string}\n * @memberof Link\n */\n url: string;\n /**\n * DTO.DEX.MOONSHOT.LINK.LABEL\n * @type {string}\n * @memberof Link\n */\n label: LinkLabelEnum;\n}\n\n\n/**\n * @export\n */\nexport const LinkLabelEnum = {\n Website: 'website',\n Twitter: 'twitter',\n Telegram: 'telegram',\n Discord: 'discord'\n} as const;\nexport type LinkLabelEnum = typeof LinkLabelEnum[keyof typeof LinkLabelEnum];\n\n\n/**\n * Check if a given object implements the Link interface.\n */\nexport function instanceOfLink(value: object): value is Link {\n if (!('url' in value) || value['url'] === undefined) return false;\n if (!('label' in value) || value['label'] === undefined) return false;\n return true;\n}\n\nexport function LinkFromJSON(json: any): Link {\n return LinkFromJSONTyped(json, false);\n}\n\nexport function LinkFromJSONTyped(json: any, ignoreDiscriminator: boolean): Link {\n if (json == null) {\n return json;\n }\n return {\n \n 'url': json['url'],\n 'label': json['label'],\n };\n}\n\nexport function LinkToJSON(json: any): Link {\n return LinkToJSONTyped(json, false);\n}\n\nexport function LinkToJSONTyped(value?: Link | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'url': value['url'],\n 'label': value['label'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { Link } from './Link';\nimport {\n LinkFromJSON,\n LinkFromJSONTyped,\n LinkToJSON,\n LinkToJSONTyped,\n} from './Link';\n\n/**\n * \n * @export\n * @interface MoonshotCreateTokenInput\n */\nexport interface MoonshotCreateTokenInput {\n /**\n * DTO.DEX.IDENTIFIER\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n dex: MoonshotCreateTokenInputDexEnum;\n /**\n * DTO.DEX.WALLET\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n userAddress: string;\n /**\n * DTO.DEX.BASE.PRIORITY_FEE\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n priorityFee?: string;\n /**\n * DTO.DEX.MOONSHOT.MINT.NAME\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n name: string;\n /**\n * DTO.DEX.MOONSHOT.MINT.SYMBOL\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n symbol: string;\n /**\n * DTO.DEX.MOONSHOT.MINT.MIGRATION_DEX\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n migrationDex: MoonshotCreateTokenInputMigrationDexEnum;\n /**\n * DTO.DEX.MOONSHOT.MINT.ICON\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n icon: string;\n /**\n * DTO.DEX.MOONSHOT.MINT.DESCRIPTION\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n description: string;\n /**\n * DTO.DEX.MOONSHOT.MINT.LINKS\n * @type {Array<Link>}\n * @memberof MoonshotCreateTokenInput\n */\n links: Array<Link>;\n /**\n * DTO.DEX.MOONSHOT.MINT.BANNER\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n banner?: string;\n /**\n * DTO.DEX.MOONSHOT.MINT.TOKEN_AMOUNT\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n tokenAmount: string;\n}\n\n\n/**\n * @export\n */\nexport const MoonshotCreateTokenInputDexEnum = {\n Moonshot: 'moonshot'\n} as const;\nexport type MoonshotCreateTokenInputDexEnum = typeof MoonshotCreateTokenInputDexEnum[keyof typeof MoonshotCreateTokenInputDexEnum];\n\n/**\n * @export\n */\nexport const MoonshotCreateTokenInputMigrationDexEnum = {\n Raydium: 'RAYDIUM',\n Meteora: 'METEORA',\n Uniswap: 'UNISWAP'\n} as const;\nexport type MoonshotCreateTokenInputMigrationDexEnum = typeof MoonshotCreateTokenInputMigrationDexEnum[keyof typeof MoonshotCreateTokenInputMigrationDexEnum];\n\n\n/**\n * Check if a given object implements the MoonshotCreateTokenInput interface.\n */\nexport function instanceOfMoonshotCreateTokenInput(value: object): value is MoonshotCreateTokenInput {\n if (!('dex' in value) || value['dex'] === undefined) return false;\n if (!('userAddress' in value) || value['userAddress'] === undefined) return false;\n if (!('name' in value) || value['name'] === undefined) return false;\n if (!('symbol' in value) || value['symbol'] === undefined) return false;\n if (!('migrationDex' in value) || value['migrationDex'] === undefined) return false;\n if (!('icon' in value) || value['icon'] === undefined) return false;\n if (!('description' in value) || value['description'] === undefined) return false;\n if (!('links' in value) || value['links'] === undefined) return false;\n if (!('tokenAmount' in value) || value['tokenAmount'] === undefined) return false;\n return true;\n}\n\nexport function MoonshotCreateTokenInputFromJSON(json: any): MoonshotCreateTokenInput {\n return MoonshotCreateTokenInputFromJSONTyped(json, false);\n}\n\nexport function MoonshotCreateTokenInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): MoonshotCreateTokenInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'dex': json['dex'],\n 'userAddress': json['userAddress'],\n 'priorityFee': json['priorityFee'] == null ? undefined : json['priorityFee'],\n 'name': json['name'],\n 'symbol': json['symbol'],\n 'migrationDex': json['migrationDex'],\n 'icon': json['icon'],\n 'description': json['description'],\n 'links': ((json['links'] as Array<any>).map(LinkFromJSON)),\n 'banner': json['banner'] == null ? undefined : json['banner'],\n 'tokenAmount': json['tokenAmount'],\n };\n}\n\nexport function MoonshotCreateTokenInputToJSON(json: any): MoonshotCreateTokenInput {\n return MoonshotCreateTokenInputToJSONTyped(json, false);\n}\n\nexport function MoonshotCreateTokenInputToJSONTyped(value?: MoonshotCreateTokenInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'dex': value['dex'],\n 'userAddress': value['userAddress'],\n 'priorityFee': value['priorityFee'],\n 'name': value['name'],\n 'symbol': value['symbol'],\n 'migrationDex': value['migrationDex'],\n 'icon': value['icon'],\n 'description': value['description'],\n 'links': ((value['links'] as Array<any>).map(LinkToJSON)),\n 'banner': value['banner'],\n 'tokenAmount': value['tokenAmount'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface MoonshotCreateTokenReply\n */\nexport interface MoonshotCreateTokenReply {\n /**\n * DTO.DEX.MOONSHOT.CREATE_TOKEN.SERIALIZED_TX\n * @type {string}\n * @memberof MoonshotCreateTokenReply\n */\n serializedTx: string;\n /**\n * DTO.DEX.MOONSHOT.CREATE_TOKEN.EXTRA\n * @type {object}\n * @memberof MoonshotCreateTokenReply\n */\n extra: object;\n}\n\n/**\n * Check if a given object implements the MoonshotCreateTokenReply interface.\n */\nexport function instanceOfMoonshotCreateTokenReply(value: object): value is MoonshotCreateTokenReply {\n if (!('serializedTx' in value) || value['serializedTx'] === undefined) return false;\n if (!('extra' in value) || value['extra'] === undefined) return false;\n return true;\n}\n\nexport function MoonshotCreateTokenReplyFromJSON(json: any): MoonshotCreateTokenReply {\n return MoonshotCreateTokenReplyFromJSONTyped(json, false);\n}\n\nexport function MoonshotCreateTokenReplyFromJSONTyped(json: any, ignoreDiscriminator: boolean): MoonshotCreateTokenReply {\n if (json == null) {\n return json;\n }\n return {\n \n 'serializedTx': json['serializedTx'],\n 'extra': json['extra'],\n };\n}\n\nexport function MoonshotCreateTokenReplyToJSON(json: any): MoonshotCreateTokenReply {\n return MoonshotCreateTokenReplyToJSONTyped(json, false);\n}\n\nexport function MoonshotCreateTokenReplyToJSONTyped(value?: MoonshotCreateTokenReply | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'serializedTx': value['serializedTx'],\n 'extra': value['extra'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface MoonshotSubmitCreateToken200Response\n */\nexport interface MoonshotSubmitCreateToken200Response {\n /**\n * Transaction signature\n * @type {string}\n * @memberof MoonshotSubmitCreateToken200Response\n */\n signature?: string;\n /**\n * Block slot number\n * @type {number}\n * @memberof MoonshotSubmitCreateToken200Response\n */\n slot?: number;\n}\n\n/**\n * Check if a given object implements the MoonshotSubmitCreateToken200Response interface.\n */\nexport function instanceOfMoonshotSubmitCreateToken200Response(value: object): value is MoonshotSubmitCreateToken200Response {\n return true;\n}\n\nexport function MoonshotSubmitCreateToken200ResponseFromJSON(json: any): MoonshotSubmitCreateToken200Response {\n return MoonshotSubmitCreateToken200ResponseFromJSONTyped(json, false);\n}\n\nexport function MoonshotSubmitCreateToken200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): MoonshotSubmitCreateToken200Response {\n if (json == null) {\n return json;\n }\n return {\n \n 'signature': json['signature'] == null ? undefined : json['signature'],\n 'slot': json['slot'] == null ? undefined : json['slot'],\n };\n}\n\nexport function MoonshotSubmitCreateToken200ResponseToJSON(json: any): MoonshotSubmitCreateToken200Response {\n return MoonshotSubmitCreateToken200ResponseToJSONTyped(json, false);\n}\n\nexport function MoonshotSubmitCreateToken200ResponseToJSONTyped(value?: MoonshotSubmitCreateToken200Response | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'signature': value['signature'],\n 'slot': value['slot'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface MoonshotSubmitCreateTokenInput\n */\nexport interface MoonshotSubmitCreateTokenInput {\n /**\n * DTO.DEX.MOONSHOT.SUBMIT.CREATE_TOKEN.SIGNED_TX\n * @type {string}\n * @memberof MoonshotSubmitCreateTokenInput\n */\n signedTx: string;\n /**\n * DTO.DEX.MOONSHOT.SUBMIT.CREATE_TOKEN.EXTRA\n * @type {object}\n * @memberof MoonshotSubmitCreateTokenInput\n */\n extra?: object;\n}\n\n/**\n * Check if a given object implements the MoonshotSubmitCreateTokenInput interface.\n */\nexport function instanceOfMoonshotSubmitCreateTokenInput(value: object): value is MoonshotSubmitCreateTokenInput {\n if (!('signedTx' in value) || value['signedTx'] === undefined) return false;\n return true;\n}\n\nexport function MoonshotSubmitCreateTokenInputFromJSON(json: any): MoonshotSubmitCreateTokenInput {\n return MoonshotSubmitCreateTokenInputFromJSONTyped(json, false);\n}\n\nexport function MoonshotSubmitCreateTokenInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): MoonshotSubmitCreateTokenInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'signedTx': json['signedTx'],\n 'extra': json['extra'] == null ? undefined : json['extra'],\n };\n}\n\nexport function MoonshotSubmitCreateTokenInputToJSON(json: any): MoonshotSubmitCreateTokenInput {\n return MoonshotSubmitCreateTokenInputToJSONTyped(json, false);\n}\n\nexport function MoonshotSubmitCreateTokenInputToJSONTyped(value?: MoonshotSubmitCreateTokenInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'signedTx': value['signedTx'],\n 'extra': value['extra'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface NetworkIdentificationOrg\n */\nexport interface NetworkIdentificationOrg {\n /**\n * DTO.KYT.NETWORK_IDENTIFICATION_ORG.NAME\n * @type {string}\n * @memberof NetworkIdentificationOrg\n */\n name: string;\n}\n\n/**\n * Check if a given object implements the NetworkIdentificationOrg interface.\n */\nexport function instanceOfNetworkIdentificationOrg(value: object): value is NetworkIdentificationOrg {\n if (!('name' in value) || value['name'] === undefined) return false;\n return true;\n}\n\nexport function NetworkIdentificationOrgFromJSON(json: any): NetworkIdentificationOrg {\n return NetworkIdentificationOrgFromJSONTyped(json, false);\n}\n\nexport function NetworkIdentificationOrgFromJSONTyped(json: any, ignoreDiscriminator: boolean): NetworkIdentificationOrg {\n if (json == null) {\n return json;\n }\n return {\n \n 'name': json['name'],\n };\n}\n\nexport function NetworkIdentificationOrgToJSON(json: any): NetworkIdentificationOrg {\n return NetworkIdentificationOrgToJSONTyped(json, false);\n}\n\nexport function NetworkIdentificationOrgToJSONTyped(value?: NetworkIdentificationOrg | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'name': value['name'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface PumpCreateTokenInput\n */\nexport interface PumpCreateTokenInput {\n /**\n * DTO.DEX.IDENTIFIER\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n dex: PumpCreateTokenInputDexEnum;\n /**\n * DTO.DEX.WALLET\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n userAddress: string;\n /**\n * DTO.DEX.BASE.PRIORITY_FEE\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n priorityFee?: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.TWITTER\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n twitter?: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.TELEGRAM\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n telegram?: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.WEBSITE\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n website?: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.NAME\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n name: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.SYMBOL\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n symbol: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.MIGRATION_DEX\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n migrationDex: PumpCreateTokenInputMigrationDexEnum;\n /**\n * DTO.DEX.PUMPFUN.MINT.IMAGE\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n image: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.MINT_ADDRESS\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n mintAddress: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.DESCRIPTION\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n description: string;\n}\n\n\n/**\n * @export\n */\nexport const PumpCreateTokenInputDexEnum = {\n Pumpfun: 'pumpfun'\n} as const;\nexport type PumpCreateTokenInputDexEnum = typeof PumpCreateTokenInputDexEnum[keyof typeof PumpCreateTokenInputDexEnum];\n\n/**\n * @export\n */\nexport const PumpCreateTokenInputMigrationDexEnum = {\n Raydium: 'RAYDIUM',\n Meteora: 'METEORA'\n} as const;\nexport type PumpCreateTokenInputMigrationDexEnum = typeof PumpCreateTokenInputMigrationDexEnum[keyof typeof PumpCreateTokenInputMigrationDexEnum];\n\n\n/**\n * Check if a given object implements the PumpCreateTokenInput interface.\n */\nexport function instanceOfPumpCreateTokenInput(value: object): value is PumpCreateTokenInput {\n if (!('dex' in value) || value['dex'] === undefined) return false;\n if (!('userAddress' in value) || value['userAddress'] === undefined) return false;\n if (!('name' in value) || value['name'] === undefined) return false;\n if (!('symbol' in value) || value['symbol'] === undefined) return false;\n if (!('migrationDex' in value) || value['migrationDex'] === undefined) return false;\n if (!('image' in value) || value['image'] === undefined) return false;\n if (!('mintAddress' in value) || value['mintAddress'] === undefined) return false;\n if (!('description' in value) || value['description'] === undefined) return false;\n return true;\n}\n\nexport function PumpCreateTokenInputFromJSON(json: any): PumpCreateTokenInput {\n return PumpCreateTokenInputFromJSONTyped(json, false);\n}\n\nexport function PumpCreateTokenInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): PumpCreateTokenInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'dex': json['dex'],\n 'userAddress': json['userAddress'],\n 'priorityFee': json['priorityFee'] == null ? undefined : json['priorityFee'],\n 'twitter': json['twitter'] == null ? undefined : json['twitter'],\n 'telegram': json['telegram'] == null ? undefined : json['telegram'],\n 'website': json['website'] == null ? undefined : json['website'],\n 'name': json['name'],\n 'symbol': json['symbol'],\n 'migrationDex': json['migrationDex'],\n 'image': json['image'],\n 'mintAddress': json['mintAddress'],\n 'description': json['description'],\n };\n}\n\nexport function PumpCreateTokenInputToJSON(json: any): PumpCreateTokenInput {\n return PumpCreateTokenInputToJSONTyped(json, false);\n}\n\nexport function PumpCreateTokenInputToJSONTyped(value?: PumpCreateTokenInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'dex': value['dex'],\n 'userAddress': value['userAddress'],\n 'priorityFee': value['priorityFee'],\n 'twitter': value['twitter'],\n 'telegram': value['telegram'],\n 'website': value['website'],\n 'name': value['name'],\n 'symbol': value['symbol'],\n 'migrationDex': value['migrationDex'],\n 'image': value['image'],\n 'mintAddress': value['mintAddress'],\n 'description': value['description'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface PumpCreateTokenReply\n */\nexport interface PumpCreateTokenReply {\n /**\n * DTO.DEX.PUMPFUN.MINT.SERIALIZED_TX\n * @type {string}\n * @memberof PumpCreateTokenReply\n */\n serializedTx: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.EXTRA\n * @type {object}\n * @memberof PumpCreateTokenReply\n */\n extra?: object;\n}\n\n/**\n * Check if a given object implements the PumpCreateTokenReply interface.\n */\nexport function instanceOfPumpCreateTokenReply(value: object): value is PumpCreateTokenReply {\n if (!('serializedTx' in value) || value['serializedTx'] === undefined) return false;\n return true;\n}\n\nexport function PumpCreateTokenReplyFromJSON(json: any): PumpCreateTokenReply {\n return PumpCreateTokenReplyFromJSONTyped(json, false);\n}\n\nexport function PumpCreateTokenReplyFromJSONTyped(json: any, ignoreDiscriminator: boolean): PumpCreateTokenReply {\n if (json == null) {\n return json;\n }\n return {\n \n 'serializedTx': json['serializedTx'],\n 'extra': json['extra'] == null ? undefined : json['extra'],\n };\n}\n\nexport function PumpCreateTokenReplyToJSON(json: any): PumpCreateTokenReply {\n return PumpCreateTokenReplyToJSONTyped(json, false);\n}\n\nexport function PumpCreateTokenReplyToJSONTyped(value?: PumpCreateTokenReply | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'serializedTx': value['serializedTx'],\n 'extra': value['extra'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface QuoteResponse\n */\nexport interface QuoteResponse {\n /**\n * DTO.DEX.QUOTE.AMOUNT_OUT\n * @type {string}\n * @memberof QuoteResponse\n */\n amountOut?: string;\n /**\n * DTO.DEX.QUOTE.MIN_AMOUNT_OUT\n * @type {string}\n * @memberof QuoteResponse\n */\n minAmountOut?: string;\n /**\n * DTO.DEX.QUOTE.CURRENT_PRICE\n * @type {string}\n * @memberof QuoteResponse\n */\n currentPrice?: string;\n /**\n * DTO.DEX.QUOTE.EXECUTION_PRICE\n * @type {string}\n * @memberof QuoteResponse\n */\n executionPrice?: string;\n /**\n * DTO.DEX.QUOTE.PRICE_IMPACT\n * @type {string}\n * @memberof QuoteResponse\n */\n priceImpact?: string;\n /**\n * DTO.DEX.QUOTE.FEE\n * @type {string}\n * @memberof QuoteResponse\n */\n fee?: string;\n}\n\n/**\n * Check if a given object implements the QuoteResponse interface.\n */\nexport function instanceOfQuoteResponse(value: object): value is QuoteResponse {\n return true;\n}\n\nexport function QuoteResponseFromJSON(json: any): QuoteResponse {\n return QuoteResponseFromJSONTyped(json, false);\n}\n\nexport function QuoteResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): QuoteResponse {\n if (json == null) {\n return json;\n }\n return {\n \n 'amountOut': json['amountOut'] == null ? undefined : json['amountOut'],\n 'minAmountOut': json['minAmountOut'] == null ? undefined : json['minAmountOut'],\n 'currentPrice': json['currentPrice'] == null ? undefined : json['currentPrice'],\n 'executionPrice': json['executionPrice'] == null ? undefined : json['executionPrice'],\n 'priceImpact': json['priceImpact'] == null ? undefined : json['priceImpact'],\n 'fee': json['fee'] == null ? undefined : json['fee'],\n };\n}\n\nexport function QuoteResponseToJSON(json: any): QuoteResponse {\n return QuoteResponseToJSONTyped(json, false);\n}\n\nexport function QuoteResponseToJSONTyped(value?: QuoteResponse | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'amountOut': value['amountOut'],\n 'minAmountOut': value['minAmountOut'],\n 'currentPrice': value['currentPrice'],\n 'executionPrice': value['executionPrice'],\n 'priceImpact': value['priceImpact'],\n 'fee': value['fee'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { Chain } from './Chain';\nimport {\n ChainFromJSON,\n ChainFromJSONTyped,\n ChainToJSON,\n ChainToJSONTyped,\n} from './Chain';\n\n/**\n * \n * @export\n * @interface RedPacketClaimDTO\n */\nexport interface RedPacketClaimDTO {\n /**\n * DTO.RED_PACKET.PACKET_ID\n * @type {string}\n * @memberof RedPacketClaimDTO\n */\n packetId: string;\n /**\n * DTO.RED_PACKET.CHAIN\n * @type {Chain}\n * @memberof RedPacketClaimDTO\n */\n chain: Chain;\n /**\n * DTO.RED_PACKET.CLAIMER\n * @type {string}\n * @memberof RedPacketClaimDTO\n */\n claimer: string;\n /**\n * DTO.RED_PACKET.MINT\n * @type {string}\n * @memberof RedPacketClaimDTO\n */\n mint: string;\n /**\n * DTO.RED_PACKET.AMOUNT\n * @type {string}\n * @memberof RedPacketClaimDTO\n */\n amount: string;\n /**\n * DTO.RED_PACKET.CLAIMED_AT\n * @type {number}\n * @memberof RedPacketClaimDTO\n */\n claimedAt: number;\n /**\n * DTO.RED_PACKET.CREATOR\n * @type {string}\n * @memberof RedPacketClaimDTO\n */\n creator: string;\n /**\n * DTO.RED_PACKET.TX_HASH\n * @type {string}\n * @memberof RedPacketClaimDTO\n */\n txHash: string;\n}\n\n\n\n/**\n * Check if a given object implements the RedPacketClaimDTO interface.\n */\nexport function instanceOfRedPacketClaimDTO(value: object): value is RedPacketClaimDTO {\n if (!('packetId' in value) || value['packetId'] === undefined) return false;\n if (!('chain' in value) || value['chain'] === undefined) return false;\n if (!('claimer' in value) || value['claimer'] === undefined) return false;\n if (!('mint' in value) || value['mint'] === undefined) return false;\n if (!('amount' in value) || value['amount'] === undefined) return false;\n if (!('claimedAt' in value) || value['claimedAt'] === undefined) return false;\n if (!('creator' in value) || value['creator'] === undefined) return false;\n if (!('txHash' in value) || value['txHash'] === undefined) return false;\n return true;\n}\n\nexport function RedPacketClaimDTOFromJSON(json: any): RedPacketClaimDTO {\n return RedPacketClaimDTOFromJSONTyped(json, false);\n}\n\nexport function RedPacketClaimDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): RedPacketClaimDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'packetId': json['packetId'],\n 'chain': ChainFromJSON(json['chain']),\n 'claimer': json['claimer'],\n 'mint': json['mint'],\n 'amount': json['amount'],\n 'claimedAt': json['claimedAt'],\n 'creator': json['creator'],\n 'txHash': json['txHash'],\n };\n}\n\nexport function RedPacketClaimDTOToJSON(json: any): RedPacketClaimDTO {\n return RedPacketClaimDTOToJSONTyped(json, false);\n}\n\nexport function RedPacketClaimDTOToJSONTyped(value?: RedPacketClaimDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'packetId': value['packetId'],\n 'chain': ChainToJSON(value['chain']),\n 'claimer': value['claimer'],\n 'mint': value['mint'],\n 'amount': value['amount'],\n 'claimedAt': value['claimedAt'],\n 'creator': value['creator'],\n 'txHash': value['txHash'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { RedPacketClaimDTO } from './RedPacketClaimDTO';\nimport {\n RedPacketClaimDTOFromJSON,\n RedPacketClaimDTOFromJSONTyped,\n RedPacketClaimDTOToJSON,\n RedPacketClaimDTOToJSONTyped,\n} from './RedPacketClaimDTO';\n\n/**\n * \n * @export\n * @interface RedPacketClaimsPage\n */\nexport interface RedPacketClaimsPage {\n /**\n * DTO.PAGE.TOTAL\n * @type {number}\n * @memberof RedPacketClaimsPage\n */\n total: number;\n /**\n * DTO.PAGE.HAS_NEXT\n * @type {boolean}\n * @memberof RedPacketClaimsPage\n */\n hasNextPage: boolean;\n /**\n * DTO.PAGE.START_CURSOR\n * @type {string}\n * @memberof RedPacketClaimsPage\n */\n startCursor: string;\n /**\n * DTO.PAGE.END_CURSOR\n * @type {string}\n * @memberof RedPacketClaimsPage\n */\n endCursor: string;\n /**\n * Array of claim records\n * @type {Array<RedPacketClaimDTO>}\n * @memberof RedPacketClaimsPage\n */\n records: Array<RedPacketClaimDTO>;\n}\n\n/**\n * Check if a given object implements the RedPacketClaimsPage interface.\n */\nexport function instanceOfRedPacketClaimsPage(value: object): value is RedPacketClaimsPage {\n if (!('total' in value) || value['total'] === undefined) return false;\n if (!('hasNextPage' in value) || value['hasNextPage'] === undefined) return false;\n if (!('startCursor' in value) || value['startCursor'] === undefined) return false;\n if (!('endCursor' in value) || value['endCursor'] === undefined) return false;\n if (!('records' in value) || value['records'] === undefined) return false;\n return true;\n}\n\nexport function RedPacketClaimsPageFromJSON(json: any): RedPacketClaimsPage {\n return RedPacketClaimsPageFromJSONTyped(json, false);\n}\n\nexport function RedPacketClaimsPageFromJSONTyped(json: any, ignoreDiscriminator: boolean): RedPacketClaimsPage {\n if (json == null) {\n return json;\n }\n return {\n \n 'total': json['total'],\n 'hasNextPage': json['hasNextPage'],\n 'startCursor': json['startCursor'],\n 'endCursor': json['endCursor'],\n 'records': ((json['records'] as Array<any>).map(RedPacketClaimDTOFromJSON)),\n };\n}\n\nexport function RedPacketClaimsPageToJSON(json: any): RedPacketClaimsPage {\n return RedPacketClaimsPageToJSONTyped(json, false);\n}\n\nexport function RedPacketClaimsPageToJSONTyped(value?: RedPacketClaimsPage | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'total': value['total'],\n 'hasNextPage': value['hasNextPage'],\n 'startCursor': value['startCursor'],\n 'endCursor': value['endCursor'],\n 'records': ((value['records'] as Array<any>).map(RedPacketClaimDTOToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { Chain } from './Chain';\nimport {\n ChainFromJSON,\n ChainFromJSONTyped,\n ChainToJSON,\n ChainToJSONTyped,\n} from './Chain';\n\n/**\n * \n * @export\n * @interface RedPacketDTO\n */\nexport interface RedPacketDTO {\n /**\n * GLOBAL.CHAIN.DESCRIPTION\n * @type {Chain}\n * @memberof RedPacketDTO\n */\n chain: Chain;\n /**\n * DTO.RED_PACKET.ID\n * @type {string}\n * @memberof RedPacketDTO\n */\n id: string;\n /**\n * DTO.RED_PACKET.SHARE_ID\n * @type {string}\n * @memberof RedPacketDTO\n */\n shareId: string;\n /**\n * DTO.RED_PACKET.TX_HASH\n * @type {string}\n * @memberof RedPacketDTO\n */\n txHash: string;\n /**\n * DTO.RED_PACKET.CREATOR\n * @type {string}\n * @memberof RedPacketDTO\n */\n creator: string;\n /**\n * DTO.RED_PACKET.MINT\n * @type {string}\n * @memberof RedPacketDTO\n */\n mint: string;\n /**\n * DTO.RED_PACKET.TOTAL_AMOUNT\n * @type {string}\n * @memberof RedPacketDTO\n */\n totalAmount: string;\n /**\n * DTO.RED_PACKET.MEMO\n * @type {string}\n * @memberof RedPacketDTO\n */\n memo: string;\n /**\n * DTO.RED_PACKET.MAX_CLAIMS\n * @type {number}\n * @memberof RedPacketDTO\n */\n maxClaims: number;\n /**\n * DTO.RED_PACKET.CLAIM_AUTHORITY\n * @type {string}\n * @memberof RedPacketDTO\n */\n claimAuthority: string;\n /**\n * DTO.RED_PACKET.WITHDRAWED\n * @type {boolean}\n * @memberof RedPacketDTO\n */\n expired: boolean;\n /**\n * DTO.RED_PACKET.EXPIRATION\n * @type {number}\n * @memberof RedPacketDTO\n */\n expiration: number;\n /**\n * DTO.RED_PACKET.CREATED_AT\n * @type {number}\n * @memberof RedPacketDTO\n */\n createdAt: number;\n /**\n * DTO.RED_PACKET.EXPIRES_AT\n * @type {number}\n * @memberof RedPacketDTO\n */\n expiredAt: number;\n /**\n * DTO.RED_PACKET.CLAIMED_COUNT\n * @type {number}\n * @memberof RedPacketDTO\n */\n claimedCount: number;\n /**\n * DTO.RED_PACKET.CLAIMED_AMOUNT\n * @type {string}\n * @memberof RedPacketDTO\n */\n claimedAmount: string;\n /**\n * DTO.RED_PACKET.REFUND_AMOUNT\n * @type {string}\n * @memberof RedPacketDTO\n */\n refundedAmount: string;\n}\n\n\n\n/**\n * Check if a given object implements the RedPacketDTO interface.\n */\nexport function instanceOfRedPacketDTO(value: object): value is RedPacketDTO {\n if (!('chain' in value) || value['chain'] === undefined) return false;\n if (!('id' in value) || value['id'] === undefined) return false;\n if (!('shareId' in value) || value['shareId'] === undefined) return false;\n if (!('txHash' in value) || value['txHash'] === undefined) return false;\n if (!('creator' in value) || value['creator'] === undefined) return false;\n if (!('mint' in value) || value['mint'] === undefined) return false;\n if (!('totalAmount' in value) || value['totalAmount'] === undefined) return false;\n if (!('memo' in value) || value['memo'] === undefined) return false;\n if (!('maxClaims' in value) || value['maxClaims'] === undefined) return false;\n if (!('claimAuthority' in value) || value['claimAuthority'] === undefined) return false;\n if (!('expired' in value) || value['expired'] === undefined) return false;\n if (!('expiration' in value) || value['expiration'] === undefined) return false;\n if (!('createdAt' in value) || value['createdAt'] === undefined) return false;\n if (!('expiredAt' in value) || value['expiredAt'] === undefined) return false;\n if (!('claimedCount' in value) || value['claimedCount'] === undefined) return false;\n if (!('claimedAmount' in value) || value['claimedAmount'] === undefined) return false;\n if (!('refundedAmount' in value) || value['refundedAmount'] === undefined) return false;\n return true;\n}\n\nexport function RedPacketDTOFromJSON(json: any): RedPacketDTO {\n return RedPacketDTOFromJSONTyped(json, false);\n}\n\nexport function RedPacketDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): RedPacketDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'chain': ChainFromJSON(json['chain']),\n 'id': json['id'],\n 'shareId': json['shareId'],\n 'txHash': json['txHash'],\n 'creator': json['creator'],\n 'mint': json['mint'],\n 'totalAmount': json['totalAmount'],\n 'memo': json['memo'],\n 'maxClaims': json['maxClaims'],\n 'claimAuthority': json['claimAuthority'],\n 'expired': json['expired'],\n 'expiration': json['expiration'],\n 'createdAt': json['createdAt'],\n 'expiredAt': json['expiredAt'],\n 'claimedCount': json['claimedCount'],\n 'claimedAmount': json['claimedAmount'],\n 'refundedAmount': json['refundedAmount'],\n };\n}\n\nexport function RedPacketDTOToJSON(json: any): RedPacketDTO {\n return RedPacketDTOToJSONTyped(json, false);\n}\n\nexport function RedPacketDTOToJSONTyped(value?: RedPacketDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'chain': ChainToJSON(value['chain']),\n 'id': value['id'],\n 'shareId': value['shareId'],\n 'txHash': value['txHash'],\n 'creator': value['creator'],\n 'mint': value['mint'],\n 'totalAmount': value['totalAmount'],\n 'memo': value['memo'],\n 'maxClaims': value['maxClaims'],\n 'claimAuthority': value['claimAuthority'],\n 'expired': value['expired'],\n 'expiration': value['expiration'],\n 'createdAt': value['createdAt'],\n 'expiredAt': value['expiredAt'],\n 'claimedCount': value['claimedCount'],\n 'claimedAmount': value['claimedAmount'],\n 'refundedAmount': value['refundedAmount'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface RedPacketReply\n */\nexport interface RedPacketReply {\n /**\n * DTO.RED_PACKET.SERIALIZED_TX\n * @type {string}\n * @memberof RedPacketReply\n */\n txSerialize: string;\n}\n\n/**\n * Check if a given object implements the RedPacketReply interface.\n */\nexport function instanceOfRedPacketReply(value: object): value is RedPacketReply {\n if (!('txSerialize' in value) || value['txSerialize'] === undefined) return false;\n return true;\n}\n\nexport function RedPacketReplyFromJSON(json: any): RedPacketReply {\n return RedPacketReplyFromJSONTyped(json, false);\n}\n\nexport function RedPacketReplyFromJSONTyped(json: any, ignoreDiscriminator: boolean): RedPacketReply {\n if (json == null) {\n return json;\n }\n return {\n \n 'txSerialize': json['txSerialize'],\n };\n}\n\nexport function RedPacketReplyToJSON(json: any): RedPacketReply {\n return RedPacketReplyToJSONTyped(json, false);\n}\n\nexport function RedPacketReplyToJSONTyped(value?: RedPacketReply | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'txSerialize': value['txSerialize'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface RedPacketSendTxInput\n */\nexport interface RedPacketSendTxInput {\n /**\n * DTO.RED_PACKET.SIGNED_TX\n * @type {string}\n * @memberof RedPacketSendTxInput\n */\n signedTx: string;\n}\n\n/**\n * Check if a given object implements the RedPacketSendTxInput interface.\n */\nexport function instanceOfRedPacketSendTxInput(value: object): value is RedPacketSendTxInput {\n if (!('signedTx' in value) || value['signedTx'] === undefined) return false;\n return true;\n}\n\nexport function RedPacketSendTxInputFromJSON(json: any): RedPacketSendTxInput {\n return RedPacketSendTxInputFromJSONTyped(json, false);\n}\n\nexport function RedPacketSendTxInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): RedPacketSendTxInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'signedTx': json['signedTx'],\n };\n}\n\nexport function RedPacketSendTxInputToJSON(json: any): RedPacketSendTxInput {\n return RedPacketSendTxInputToJSONTyped(json, false);\n}\n\nexport function RedPacketSendTxInputToJSONTyped(value?: RedPacketSendTxInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'signedTx': value['signedTx'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface RedPacketSendTxResponse\n */\nexport interface RedPacketSendTxResponse {\n /**\n * DTO.RED_PACKET.SIGNATURE\n * @type {string}\n * @memberof RedPacketSendTxResponse\n */\n signature: string;\n}\n\n/**\n * Check if a given object implements the RedPacketSendTxResponse interface.\n */\nexport function instanceOfRedPacketSendTxResponse(value: object): value is RedPacketSendTxResponse {\n if (!('signature' in value) || value['signature'] === undefined) return false;\n return true;\n}\n\nexport function RedPacketSendTxResponseFromJSON(json: any): RedPacketSendTxResponse {\n return RedPacketSendTxResponseFromJSONTyped(json, false);\n}\n\nexport function RedPacketSendTxResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): RedPacketSendTxResponse {\n if (json == null) {\n return json;\n }\n return {\n \n 'signature': json['signature'],\n };\n}\n\nexport function RedPacketSendTxResponseToJSON(json: any): RedPacketSendTxResponse {\n return RedPacketSendTxResponseToJSONTyped(json, false);\n}\n\nexport function RedPacketSendTxResponseToJSONTyped(value?: RedPacketSendTxResponse | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'signature': value['signature'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { RedPacketDTO } from './RedPacketDTO';\nimport {\n RedPacketDTOFromJSON,\n RedPacketDTOFromJSONTyped,\n RedPacketDTOToJSON,\n RedPacketDTOToJSONTyped,\n} from './RedPacketDTO';\n\n/**\n * \n * @export\n * @interface RedPacketsPage\n */\nexport interface RedPacketsPage {\n /**\n * DTO.PAGE.TOTAL\n * @type {number}\n * @memberof RedPacketsPage\n */\n total: number;\n /**\n * DTO.PAGE.HAS_NEXT\n * @type {boolean}\n * @memberof RedPacketsPage\n */\n hasNextPage: boolean;\n /**\n * DTO.PAGE.START_CURSOR\n * @type {string}\n * @memberof RedPacketsPage\n */\n startCursor: string;\n /**\n * DTO.PAGE.END_CURSOR\n * @type {string}\n * @memberof RedPacketsPage\n */\n endCursor: string;\n /**\n * Array of red packets\n * @type {Array<RedPacketDTO>}\n * @memberof RedPacketsPage\n */\n records: Array<RedPacketDTO>;\n}\n\n/**\n * Check if a given object implements the RedPacketsPage interface.\n */\nexport function instanceOfRedPacketsPage(value: object): value is RedPacketsPage {\n if (!('total' in value) || value['total'] === undefined) return false;\n if (!('hasNextPage' in value) || value['hasNextPage'] === undefined) return false;\n if (!('startCursor' in value) || value['startCursor'] === undefined) return false;\n if (!('endCursor' in value) || value['endCursor'] === undefined) return false;\n if (!('records' in value) || value['records'] === undefined) return false;\n return true;\n}\n\nexport function RedPacketsPageFromJSON(json: any): RedPacketsPage {\n return RedPacketsPageFromJSONTyped(json, false);\n}\n\nexport function RedPacketsPageFromJSONTyped(json: any, ignoreDiscriminator: boolean): RedPacketsPage {\n if (json == null) {\n return json;\n }\n return {\n \n 'total': json['total'],\n 'hasNextPage': json['hasNextPage'],\n 'startCursor': json['startCursor'],\n 'endCursor': json['endCursor'],\n 'records': ((json['records'] as Array<any>).map(RedPacketDTOFromJSON)),\n };\n}\n\nexport function RedPacketsPageToJSON(json: any): RedPacketsPage {\n return RedPacketsPageToJSONTyped(json, false);\n}\n\nexport function RedPacketsPageToJSONTyped(value?: RedPacketsPage | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'total': value['total'],\n 'hasNextPage': value['hasNextPage'],\n 'startCursor': value['startCursor'],\n 'endCursor': value['endCursor'],\n 'records': ((value['records'] as Array<any>).map(RedPacketDTOToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface RegisterAddressRequest\n */\nexport interface RegisterAddressRequest {\n /**\n * DTO.KYT.REGISTER_ADDRESS_REQUEST.ADDRESS\n * @type {string}\n * @memberof RegisterAddressRequest\n */\n address: string;\n}\n\n/**\n * Check if a given object implements the RegisterAddressRequest interface.\n */\nexport function instanceOfRegisterAddressRequest(value: object): value is RegisterAddressRequest {\n if (!('address' in value) || value['address'] === undefined) return false;\n return true;\n}\n\nexport function RegisterAddressRequestFromJSON(json: any): RegisterAddressRequest {\n return RegisterAddressRequestFromJSONTyped(json, false);\n}\n\nexport function RegisterAddressRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): RegisterAddressRequest {\n if (json == null) {\n return json;\n }\n return {\n \n 'address': json['address'],\n };\n}\n\nexport function RegisterAddressRequestToJSON(json: any): RegisterAddressRequest {\n return RegisterAddressRequestToJSONTyped(json, false);\n}\n\nexport function RegisterAddressRequestToJSONTyped(value?: RegisterAddressRequest | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'address': value['address'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface RegisterAddressResponseDTO\n */\nexport interface RegisterAddressResponseDTO {\n /**\n * DTO.KYT.REGISTER_ADDRESS_RESPONSE.ADDRESS\n * @type {string}\n * @memberof RegisterAddressResponseDTO\n */\n address: string;\n}\n\n/**\n * Check if a given object implements the RegisterAddressResponseDTO interface.\n */\nexport function instanceOfRegisterAddressResponseDTO(value: object): value is RegisterAddressResponseDTO {\n if (!('address' in value) || value['address'] === undefined) return false;\n return true;\n}\n\nexport function RegisterAddressResponseDTOFromJSON(json: any): RegisterAddressResponseDTO {\n return RegisterAddressResponseDTOFromJSONTyped(json, false);\n}\n\nexport function RegisterAddressResponseDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): RegisterAddressResponseDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'address': json['address'],\n };\n}\n\nexport function RegisterAddressResponseDTOToJSON(json: any): RegisterAddressResponseDTO {\n return RegisterAddressResponseDTOToJSONTyped(json, false);\n}\n\nexport function RegisterAddressResponseDTOToJSONTyped(value?: RegisterAddressResponseDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'address': value['address'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface SendTxInput\n */\nexport interface SendTxInput {\n /**\n * DTO.TRANSACTION.SEND.SIGNED_TX\n * @type {string}\n * @memberof SendTxInput\n */\n signedTx: string;\n /**\n * DTO.TRANSACTION.SEND.SUBMIT_TYPE\n * @type {string}\n * @memberof SendTxInput\n */\n submitType?: SendTxInputSubmitTypeEnum;\n /**\n * DTO.TRANSACTION.SEND.OPTIONS\n * @type {object}\n * @memberof SendTxInput\n */\n options?: object;\n}\n\n\n/**\n * @export\n */\nexport const SendTxInputSubmitTypeEnum = {\n Default: 'default',\n Priority: 'priority'\n} as const;\nexport type SendTxInputSubmitTypeEnum = typeof SendTxInputSubmitTypeEnum[keyof typeof SendTxInputSubmitTypeEnum];\n\n\n/**\n * Check if a given object implements the SendTxInput interface.\n */\nexport function instanceOfSendTxInput(value: object): value is SendTxInput {\n if (!('signedTx' in value) || value['signedTx'] === undefined) return false;\n return true;\n}\n\nexport function SendTxInputFromJSON(json: any): SendTxInput {\n return SendTxInputFromJSONTyped(json, false);\n}\n\nexport function SendTxInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): SendTxInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'signedTx': json['signedTx'],\n 'submitType': json['submitType'] == null ? undefined : json['submitType'],\n 'options': json['options'] == null ? undefined : json['options'],\n };\n}\n\nexport function SendTxInputToJSON(json: any): SendTxInput {\n return SendTxInputToJSONTyped(json, false);\n}\n\nexport function SendTxInputToJSONTyped(value?: SendTxInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'signedTx': value['signedTx'],\n 'submitType': value['submitType'],\n 'options': value['options'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface SendTxResponse\n */\nexport interface SendTxResponse {\n /**\n * DTO.TRANSACTION.SEND.SIGNATURE\n * @type {string}\n * @memberof SendTxResponse\n */\n signature: string;\n /**\n * DTO.TRANSACTION.SEND.ELAPSED_TIME\n * @type {number}\n * @memberof SendTxResponse\n */\n elapsedTime: number;\n /**\n * DTO.TRANSACTION.SEND.JOB_ID\n * @type {string}\n * @memberof SendTxResponse\n */\n jobId: string;\n}\n\n/**\n * Check if a given object implements the SendTxResponse interface.\n */\nexport function instanceOfSendTxResponse(value: object): value is SendTxResponse {\n if (!('signature' in value) || value['signature'] === undefined) return false;\n if (!('elapsedTime' in value) || value['elapsedTime'] === undefined) return false;\n if (!('jobId' in value) || value['jobId'] === undefined) return false;\n return true;\n}\n\nexport function SendTxResponseFromJSON(json: any): SendTxResponse {\n return SendTxResponseFromJSONTyped(json, false);\n}\n\nexport function SendTxResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): SendTxResponse {\n if (json == null) {\n return json;\n }\n return {\n \n 'signature': json['signature'],\n 'elapsedTime': json['elapsedTime'],\n 'jobId': json['jobId'],\n };\n}\n\nexport function SendTxResponseToJSON(json: any): SendTxResponse {\n return SendTxResponseToJSONTyped(json, false);\n}\n\nexport function SendTxResponseToJSONTyped(value?: SendTxResponse | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'signature': value['signature'],\n 'elapsedTime': value['elapsedTime'],\n 'jobId': value['jobId'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface SwapInput\n */\nexport interface SwapInput {\n /**\n * DTO.DEX.IDENTIFIER\n * @type {string}\n * @memberof SwapInput\n */\n dex: SwapInputDexEnum;\n /**\n * DTO.DEX.WALLET\n * @type {string}\n * @memberof SwapInput\n */\n userAddress: string;\n /**\n * DTO.DEX.BASE.PRIORITY_FEE\n * @type {string}\n * @memberof SwapInput\n */\n priorityFee?: string;\n /**\n * DTO.DEX.SWAP.POOL_ADDRESS\n * @type {string}\n * @memberof SwapInput\n */\n poolAddress?: string;\n /**\n * DTO.DEX.SWAP.AMOUNT\n * @type {string}\n * @memberof SwapInput\n */\n amount: string;\n /**\n * DTO.DEX.SWAP.MODE\n * @type {string}\n * @memberof SwapInput\n */\n swapMode: SwapInputSwapModeEnum;\n /**\n * DTO.DEX.SWAP.SLIPPAGE\n * @type {number}\n * @memberof SwapInput\n */\n slippage: number;\n /**\n * DTO.DEX.SWAP.INPUT_MINT\n * @type {string}\n * @memberof SwapInput\n */\n inputMint?: string;\n /**\n * DTO.DEX.SWAP.OUTPUT_MINT\n * @type {string}\n * @memberof SwapInput\n */\n outputMint?: string;\n}\n\n\n/**\n * @export\n */\nexport const SwapInputDexEnum = {\n Raydium: 'raydium',\n Pumpfun: 'pumpfun',\n Moonshot: 'moonshot',\n Candy: 'candy',\n Launchpad: 'launchpad'\n} as const;\nexport type SwapInputDexEnum = typeof SwapInputDexEnum[keyof typeof SwapInputDexEnum];\n\n/**\n * @export\n */\nexport const SwapInputSwapModeEnum = {\n ExactIn: 'ExactIn',\n ExactOut: 'ExactOut'\n} as const;\nexport type SwapInputSwapModeEnum = typeof SwapInputSwapModeEnum[keyof typeof SwapInputSwapModeEnum];\n\n\n/**\n * Check if a given object implements the SwapInput interface.\n */\nexport function instanceOfSwapInput(value: object): value is SwapInput {\n if (!('dex' in value) || value['dex'] === undefined) return false;\n if (!('userAddress' in value) || value['userAddress'] === undefined) return false;\n if (!('amount' in value) || value['amount'] === undefined) return false;\n if (!('swapMode' in value) || value['swapMode'] === undefined) return false;\n if (!('slippage' in value) || value['slippage'] === undefined) return false;\n return true;\n}\n\nexport function SwapInputFromJSON(json: any): SwapInput {\n return SwapInputFromJSONTyped(json, false);\n}\n\nexport function SwapInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): SwapInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'dex': json['dex'],\n 'userAddress': json['userAddress'],\n 'priorityFee': json['priorityFee'] == null ? undefined : json['priorityFee'],\n 'poolAddress': json['poolAddress'] == null ? undefined : json['poolAddress'],\n 'amount': json['amount'],\n 'swapMode': json['swapMode'],\n 'slippage': json['slippage'],\n 'inputMint': json['inputMint'] == null ? undefined : json['inputMint'],\n 'outputMint': json['outputMint'] == null ? undefined : json['outputMint'],\n };\n}\n\nexport function SwapInputToJSON(json: any): SwapInput {\n return SwapInputToJSONTyped(json, false);\n}\n\nexport function SwapInputToJSONTyped(value?: SwapInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'dex': value['dex'],\n 'userAddress': value['userAddress'],\n 'priorityFee': value['priorityFee'],\n 'poolAddress': value['poolAddress'],\n 'amount': value['amount'],\n 'swapMode': value['swapMode'],\n 'slippage': value['slippage'],\n 'inputMint': value['inputMint'],\n 'outputMint': value['outputMint'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface SwapReply\n */\nexport interface SwapReply {\n /**\n * DTO.DEX.SWAP.SERIALIZED_TX\n * @type {string}\n * @memberof SwapReply\n */\n serializedTx: string;\n /**\n * DTO.DEX.SWAP.ELAPSED_TIME\n * @type {number}\n * @memberof SwapReply\n */\n elapsedTime: number;\n}\n\n/**\n * Check if a given object implements the SwapReply interface.\n */\nexport function instanceOfSwapReply(value: object): value is SwapReply {\n if (!('serializedTx' in value) || value['serializedTx'] === undefined) return false;\n if (!('elapsedTime' in value) || value['elapsedTime'] === undefined) return false;\n return true;\n}\n\nexport function SwapReplyFromJSON(json: any): SwapReply {\n return SwapReplyFromJSONTyped(json, false);\n}\n\nexport function SwapReplyFromJSONTyped(json: any, ignoreDiscriminator: boolean): SwapReply {\n if (json == null) {\n return json;\n }\n return {\n \n 'serializedTx': json['serializedTx'],\n 'elapsedTime': json['elapsedTime'],\n };\n}\n\nexport function SwapReplyToJSON(json: any): SwapReply {\n return SwapReplyToJSONTyped(json, false);\n}\n\nexport function SwapReplyToJSONTyped(value?: SwapReply | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'serializedTx': value['serializedTx'],\n 'elapsedTime': value['elapsedTime'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface SwapRouteInput\n */\nexport interface SwapRouteInput {\n /**\n * DTO.DEX.IDENTIFIER\n * @type {string}\n * @memberof SwapRouteInput\n */\n dex: SwapRouteInputDexEnum;\n /**\n * DTO.DEX.WALLET\n * @type {string}\n * @memberof SwapRouteInput\n */\n userAddress: string;\n /**\n * DTO.DEX.BASE.PRIORITY_FEE\n * @type {string}\n * @memberof SwapRouteInput\n */\n priorityFee?: string;\n /**\n * DTO.DEX.SWAP.AMOUNT\n * @type {string}\n * @memberof SwapRouteInput\n */\n amount: string;\n /**\n * DTO.DEX.SWAP.MODE\n * @type {string}\n * @memberof SwapRouteInput\n */\n swapMode: SwapRouteInputSwapModeEnum;\n /**\n * DTO.DEX.SWAP.SLIPPAGE\n * @type {number}\n * @memberof SwapRouteInput\n */\n slippage: number;\n /**\n * DTO.DEX.SWAP.INPUT_MINT\n * @type {string}\n * @memberof SwapRouteInput\n */\n inputMint?: string;\n /**\n * DTO.DEX.SWAP.OUTPUT_MINT\n * @type {string}\n * @memberof SwapRouteInput\n */\n outputMint?: string;\n /**\n * DTO.DEX.SWAP.RECIPIENT_ADDRESS\n * @type {string}\n * @memberof SwapRouteInput\n */\n recipientAddress?: string;\n /**\n * DTO.DEX.SWAP.PERMIT\n * @type {string}\n * @memberof SwapRouteInput\n */\n permit?: string;\n /**\n * DTO.DEX.SWAP.DEADLINE\n * @type {number}\n * @memberof SwapRouteInput\n */\n deadline?: number;\n /**\n * DTO.DEX.BASE.TIP_FEE\n * @type {string}\n * @memberof SwapRouteInput\n */\n tipFee?: string;\n /**\n * DTO.DEX.BASE.IS_ANTI_MEV\n * @type {boolean}\n * @memberof SwapRouteInput\n */\n isAntiMev?: boolean;\n}\n\n\n/**\n * @export\n */\nexport const SwapRouteInputDexEnum = {\n Jupiter: 'jupiter',\n Kyberswap: 'kyberswap'\n} as const;\nexport type SwapRouteInputDexEnum = typeof SwapRouteInputDexEnum[keyof typeof SwapRouteInputDexEnum];\n\n/**\n * @export\n */\nexport const SwapRouteInputSwapModeEnum = {\n ExactIn: 'ExactIn',\n ExactOut: 'ExactOut'\n} as const;\nexport type SwapRouteInputSwapModeEnum = typeof SwapRouteInputSwapModeEnum[keyof typeof SwapRouteInputSwapModeEnum];\n\n\n/**\n * Check if a given object implements the SwapRouteInput interface.\n */\nexport function instanceOfSwapRouteInput(value: object): value is SwapRouteInput {\n if (!('dex' in value) || value['dex'] === undefined) return false;\n if (!('userAddress' in value) || value['userAddress'] === undefined) return false;\n if (!('amount' in value) || value['amount'] === undefined) return false;\n if (!('swapMode' in value) || value['swapMode'] === undefined) return false;\n if (!('slippage' in value) || value['slippage'] === undefined) return false;\n return true;\n}\n\nexport function SwapRouteInputFromJSON(json: any): SwapRouteInput {\n return SwapRouteInputFromJSONTyped(json, false);\n}\n\nexport function SwapRouteInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): SwapRouteInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'dex': json['dex'],\n 'userAddress': json['userAddress'],\n 'priorityFee': json['priorityFee'] == null ? undefined : json['priorityFee'],\n 'amount': json['amount'],\n 'swapMode': json['swapMode'],\n 'slippage': json['slippage'],\n 'inputMint': json['inputMint'] == null ? undefined : json['inputMint'],\n 'outputMint': json['outputMint'] == null ? undefined : json['outputMint'],\n 'recipientAddress': json['recipientAddress'] == null ? undefined : json['recipientAddress'],\n 'permit': json['permit'] == null ? undefined : json['permit'],\n 'deadline': json['deadline'] == null ? undefined : json['deadline'],\n 'tipFee': json['tipFee'] == null ? undefined : json['tipFee'],\n 'isAntiMev': json['isAntiMev'] == null ? undefined : json['isAntiMev'],\n };\n}\n\nexport function SwapRouteInputToJSON(json: any): SwapRouteInput {\n return SwapRouteInputToJSONTyped(json, false);\n}\n\nexport function SwapRouteInputToJSONTyped(value?: SwapRouteInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'dex': value['dex'],\n 'userAddress': value['userAddress'],\n 'priorityFee': value['priorityFee'],\n 'amount': value['amount'],\n 'swapMode': value['swapMode'],\n 'slippage': value['slippage'],\n 'inputMint': value['inputMint'],\n 'outputMint': value['outputMint'],\n 'recipientAddress': value['recipientAddress'],\n 'permit': value['permit'],\n 'deadline': value['deadline'],\n 'tipFee': value['tipFee'],\n 'isAntiMev': value['isAntiMev'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { SwapRouteInput } from './SwapRouteInput';\nimport {\n SwapRouteInputFromJSON,\n SwapRouteInputFromJSONTyped,\n SwapRouteInputToJSON,\n SwapRouteInputToJSONTyped,\n} from './SwapRouteInput';\n\n/**\n * \n * @export\n * @interface SwapRouteResponse\n */\nexport interface SwapRouteResponse {\n /**\n * DTO.DEX.SWAP.ARGS\n * @type {SwapRouteInput}\n * @memberof SwapRouteResponse\n */\n args: SwapRouteInput;\n /**\n * DTO.DEX.SWAP.SERIALIZED_TX\n * @type {string}\n * @memberof SwapRouteResponse\n */\n serializedTx: string;\n /**\n * DTO.DEX.SWAP.ROUTE_INFO\n * @type {object}\n * @memberof SwapRouteResponse\n */\n routeInfo: object;\n /**\n * DTO.DEX.SWAP.ELAPSED_TIME\n * @type {number}\n * @memberof SwapRouteResponse\n */\n elapsedTime: number;\n}\n\n/**\n * Check if a given object implements the SwapRouteResponse interface.\n */\nexport function instanceOfSwapRouteResponse(value: object): value is SwapRouteResponse {\n if (!('args' in value) || value['args'] === undefined) return false;\n if (!('serializedTx' in value) || value['serializedTx'] === undefined) return false;\n if (!('routeInfo' in value) || value['routeInfo'] === undefined) return false;\n if (!('elapsedTime' in value) || value['elapsedTime'] === undefined) return false;\n return true;\n}\n\nexport function SwapRouteResponseFromJSON(json: any): SwapRouteResponse {\n return SwapRouteResponseFromJSONTyped(json, false);\n}\n\nexport function SwapRouteResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): SwapRouteResponse {\n if (json == null) {\n return json;\n }\n return {\n \n 'args': SwapRouteInputFromJSON(json['args']),\n 'serializedTx': json['serializedTx'],\n 'routeInfo': json['routeInfo'],\n 'elapsedTime': json['elapsedTime'],\n };\n}\n\nexport function SwapRouteResponseToJSON(json: any): SwapRouteResponse {\n return SwapRouteResponseToJSONTyped(json, false);\n}\n\nexport function SwapRouteResponseToJSONTyped(value?: SwapRouteResponse | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'args': SwapRouteInputToJSON(value['args']),\n 'serializedTx': value['serializedTx'],\n 'routeInfo': value['routeInfo'],\n 'elapsedTime': value['elapsedTime'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { DexPoolDTO } from './DexPoolDTO';\nimport {\n DexPoolDTOFromJSON,\n DexPoolDTOFromJSONTyped,\n DexPoolDTOToJSON,\n DexPoolDTOToJSONTyped,\n} from './DexPoolDTO';\nimport type { TokenMarketData } from './TokenMarketData';\nimport {\n TokenMarketDataFromJSON,\n TokenMarketDataFromJSONTyped,\n TokenMarketDataToJSON,\n TokenMarketDataToJSONTyped,\n} from './TokenMarketData';\nimport type { TokenExtraDTO } from './TokenExtraDTO';\nimport {\n TokenExtraDTOFromJSON,\n TokenExtraDTOFromJSONTyped,\n TokenExtraDTOToJSON,\n TokenExtraDTOToJSONTyped,\n} from './TokenExtraDTO';\nimport type { TokenCreatorsDTO } from './TokenCreatorsDTO';\nimport {\n TokenCreatorsDTOFromJSON,\n TokenCreatorsDTOFromJSONTyped,\n TokenCreatorsDTOToJSON,\n TokenCreatorsDTOToJSONTyped,\n} from './TokenCreatorsDTO';\nimport type { TokenStat } from './TokenStat';\nimport {\n TokenStatFromJSON,\n TokenStatFromJSONTyped,\n TokenStatToJSON,\n TokenStatToJSONTyped,\n} from './TokenStat';\nimport type { TokenSocialMediasDTO } from './TokenSocialMediasDTO';\nimport {\n TokenSocialMediasDTOFromJSON,\n TokenSocialMediasDTOFromJSONTyped,\n TokenSocialMediasDTOToJSON,\n TokenSocialMediasDTOToJSONTyped,\n} from './TokenSocialMediasDTO';\n\n/**\n * \n * @export\n * @interface Token\n */\nexport interface Token {\n /**\n * DTO.TOKEN.METADATA.CHAIN\n * @type {string}\n * @memberof Token\n */\n chain: string;\n /**\n * DTO.TOKEN.METADATA.DECIMALS\n * @type {number}\n * @memberof Token\n */\n decimals: number;\n /**\n * DTO.TOKEN.METADATA.NAME\n * @type {string}\n * @memberof Token\n */\n name: string;\n /**\n * DTO.TOKEN.METADATA.SYMBOL\n * @type {string}\n * @memberof Token\n */\n symbol: string;\n /**\n * DTO.TOKEN.METADATA.METADATA_ADDRESS\n * @type {string}\n * @memberof Token\n */\n metadataAddress?: string;\n /**\n * DTO.TOKEN.METADATA.ADDRESS\n * @type {string}\n * @memberof Token\n */\n address: string;\n /**\n * DTO.TOKEN.METADATA.TOKEN_CREATORS\n * @type {Array<TokenCreatorsDTO>}\n * @memberof Token\n */\n tokenCreators?: Array<TokenCreatorsDTO>;\n /**\n * DTO.TOKEN.METADATA.IMAGE_URL\n * @type {string}\n * @memberof Token\n */\n imageUrl?: string;\n /**\n * DTO.TOKEN.METADATA.URI\n * @type {string}\n * @memberof Token\n */\n uri?: string;\n /**\n * DTO.TOKEN.METADATA.EXTRA\n * @type {TokenExtraDTO}\n * @memberof Token\n */\n extra?: TokenExtraDTO;\n /**\n * DTO.TOKEN.METADATA.SOCIAL_MEDIAS\n * @type {TokenSocialMediasDTO}\n * @memberof Token\n */\n socialMedias?: TokenSocialMediasDTO;\n /**\n * DTO.TOKEN.METADATA.TOKEN_CREATED_AT\n * @type {number}\n * @memberof Token\n */\n tokenCreatedAt?: number;\n /**\n * DTO.TOKEN.METADATA.DESCRIPTION\n * @type {string}\n * @memberof Token\n */\n description?: string;\n /**\n * DTO.TOKEN.METADATA.DEV_TOTAL_TOKENS\n * @type {string}\n * @memberof Token\n */\n devTotalTokens?: string;\n /**\n * DTO.TOKEN.METADATA.DEV_LAST_TOKEN_CREATED_AT\n * @type {string}\n * @memberof Token\n */\n devLastTokenCreatedAt?: string;\n /**\n * DTO.TOKEN.MARKET_ID\n * @type {string}\n * @memberof Token\n */\n market?: string;\n /**\n * DTO.TOKEN.EXTENSION\n * @type {object}\n * @memberof Token\n */\n extension?: object;\n /**\n * DTO.TOKEN.STATS\n * @type {TokenStat}\n * @memberof Token\n */\n stats?: TokenStat;\n /**\n * DTO.TOKEN.LIQUIDITY\n * @type {Array<DexPoolDTO>}\n * @memberof Token\n */\n liquidity?: Array<DexPoolDTO>;\n /**\n * DTO.TOKEN.MARKET_CAP_INFO\n * @type {TokenMarketData}\n * @memberof Token\n */\n marketData: TokenMarketData;\n}\n\n/**\n * Check if a given object implements the Token interface.\n */\nexport function instanceOfToken(value: object): value is Token {\n if (!('chain' in value) || value['chain'] === undefined) return false;\n if (!('decimals' in value) || value['decimals'] === undefined) return false;\n if (!('name' in value) || value['name'] === undefined) return false;\n if (!('symbol' in value) || value['symbol'] === undefined) return false;\n if (!('address' in value) || value['address'] === undefined) return false;\n if (!('marketData' in value) || value['marketData'] === undefined) return false;\n return true;\n}\n\nexport function TokenFromJSON(json: any): Token {\n return TokenFromJSONTyped(json, false);\n}\n\nexport function TokenFromJSONTyped(json: any, ignoreDiscriminator: boolean): Token {\n if (json == null) {\n return json;\n }\n return {\n \n 'chain': json['chain'],\n 'decimals': json['decimals'],\n 'name': json['name'],\n 'symbol': json['symbol'],\n 'metadataAddress': json['metadataAddress'] == null ? undefined : json['metadataAddress'],\n 'address': json['address'],\n 'tokenCreators': json['tokenCreators'] == null ? undefined : ((json['tokenCreators'] as Array<any>).map(TokenCreatorsDTOFromJSON)),\n 'imageUrl': json['imageUrl'] == null ? undefined : json['imageUrl'],\n 'uri': json['uri'] == null ? undefined : json['uri'],\n 'extra': json['extra'] == null ? undefined : TokenExtraDTOFromJSON(json['extra']),\n 'socialMedias': json['socialMedias'] == null ? undefined : TokenSocialMediasDTOFromJSON(json['socialMedias']),\n 'tokenCreatedAt': json['tokenCreatedAt'] == null ? undefined : json['tokenCreatedAt'],\n 'description': json['description'] == null ? undefined : json['description'],\n 'devTotalTokens': json['devTotalTokens'] == null ? undefined : json['devTotalTokens'],\n 'devLastTokenCreatedAt': json['devLastTokenCreatedAt'] == null ? undefined : json['devLastTokenCreatedAt'],\n 'market': json['market'] == null ? undefined : json['market'],\n 'extension': json['extension'] == null ? undefined : json['extension'],\n 'stats': json['stats'] == null ? undefined : TokenStatFromJSON(json['stats']),\n 'liquidity': json['liquidity'] == null ? undefined : ((json['liquidity'] as Array<any>).map(DexPoolDTOFromJSON)),\n 'marketData': TokenMarketDataFromJSON(json['marketData']),\n };\n}\n\nexport function TokenToJSON(json: any): Token {\n return TokenToJSONTyped(json, false);\n}\n\nexport function TokenToJSONTyped(value?: Token | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'chain': value['chain'],\n 'decimals': value['decimals'],\n 'name': value['name'],\n 'symbol': value['symbol'],\n 'metadataAddress': value['metadataAddress'],\n 'address': value['address'],\n 'tokenCreators': value['tokenCreators'] == null ? undefined : ((value['tokenCreators'] as Array<any>).map(TokenCreatorsDTOToJSON)),\n 'imageUrl': value['imageUrl'],\n 'uri': value['uri'],\n 'extra': TokenExtraDTOToJSON(value['extra']),\n 'socialMedias': TokenSocialMediasDTOToJSON(value['socialMedias']),\n 'tokenCreatedAt': value['tokenCreatedAt'],\n 'description': value['description'],\n 'devTotalTokens': value['devTotalTokens'],\n 'devLastTokenCreatedAt': value['devLastTokenCreatedAt'],\n 'market': value['market'],\n 'extension': value['extension'],\n 'stats': TokenStatToJSON(value['stats']),\n 'liquidity': value['liquidity'] == null ? undefined : ((value['liquidity'] as Array<any>).map(DexPoolDTOToJSON)),\n 'marketData': TokenMarketDataToJSON(value['marketData']),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TokenCreationDTO\n */\nexport interface TokenCreationDTO {\n /**\n * DTO.TOKEN.CREATION.TOKEN_ADDRESS\n * @type {string}\n * @memberof TokenCreationDTO\n */\n tokenAddress: string;\n /**\n * DTO.TOKEN.CREATION.BLOCK_HEIGHT\n * @type {number}\n * @memberof TokenCreationDTO\n */\n blockHeight: number;\n /**\n * DTO.TOKEN.CREATION.BLOCK_SLOT\n * @type {number}\n * @memberof TokenCreationDTO\n */\n blockSlot: number;\n /**\n * DTO.TOKEN.CREATION.BLOCK_HASH\n * @type {string}\n * @memberof TokenCreationDTO\n */\n blockHash: string;\n /**\n * DTO.TOKEN.CREATION.BLOCK_TIMESTAMP\n * @type {number}\n * @memberof TokenCreationDTO\n */\n blockTimestamp?: number;\n /**\n * DTO.TOKEN.CREATION.TRANSACTION_SIGNATURE\n * @type {string}\n * @memberof TokenCreationDTO\n */\n transactionSignature: string;\n /**\n * DTO.TOKEN.CREATION.TYPE\n * @type {string}\n * @memberof TokenCreationDTO\n */\n type: TokenCreationDTOTypeEnum;\n}\n\n\n/**\n * @export\n */\nexport const TokenCreationDTOTypeEnum = {\n Create: 'create',\n Mint: 'mint',\n Burn: 'burn'\n} as const;\nexport type TokenCreationDTOTypeEnum = typeof TokenCreationDTOTypeEnum[keyof typeof TokenCreationDTOTypeEnum];\n\n\n/**\n * Check if a given object implements the TokenCreationDTO interface.\n */\nexport function instanceOfTokenCreationDTO(value: object): value is TokenCreationDTO {\n if (!('tokenAddress' in value) || value['tokenAddress'] === undefined) return false;\n if (!('blockHeight' in value) || value['blockHeight'] === undefined) return false;\n if (!('blockSlot' in value) || value['blockSlot'] === undefined) return false;\n if (!('blockHash' in value) || value['blockHash'] === undefined) return false;\n if (!('transactionSignature' in value) || value['transactionSignature'] === undefined) return false;\n if (!('type' in value) || value['type'] === undefined) return false;\n return true;\n}\n\nexport function TokenCreationDTOFromJSON(json: any): TokenCreationDTO {\n return TokenCreationDTOFromJSONTyped(json, false);\n}\n\nexport function TokenCreationDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenCreationDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'tokenAddress': json['tokenAddress'],\n 'blockHeight': json['blockHeight'],\n 'blockSlot': json['blockSlot'],\n 'blockHash': json['blockHash'],\n 'blockTimestamp': json['blockTimestamp'] == null ? undefined : json['blockTimestamp'],\n 'transactionSignature': json['transactionSignature'],\n 'type': json['type'],\n };\n}\n\nexport function TokenCreationDTOToJSON(json: any): TokenCreationDTO {\n return TokenCreationDTOToJSONTyped(json, false);\n}\n\nexport function TokenCreationDTOToJSONTyped(value?: TokenCreationDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'tokenAddress': value['tokenAddress'],\n 'blockHeight': value['blockHeight'],\n 'blockSlot': value['blockSlot'],\n 'blockHash': value['blockHash'],\n 'blockTimestamp': value['blockTimestamp'],\n 'transactionSignature': value['transactionSignature'],\n 'type': value['type'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { TokenCreationDTO } from './TokenCreationDTO';\nimport {\n TokenCreationDTOFromJSON,\n TokenCreationDTOFromJSONTyped,\n TokenCreationDTOToJSON,\n TokenCreationDTOToJSONTyped,\n} from './TokenCreationDTO';\n\n/**\n * \n * @export\n * @interface TokenCreationPage\n */\nexport interface TokenCreationPage {\n /**\n * DTO.PAGE.HAS_NEXT\n * @type {boolean}\n * @memberof TokenCreationPage\n */\n hasNext?: boolean;\n /**\n * DTO.PAGE.HAS_PREV\n * @type {boolean}\n * @memberof TokenCreationPage\n */\n hasPrev?: boolean;\n /**\n * DTO.PAGE.START_CURSOR\n * @type {string}\n * @memberof TokenCreationPage\n */\n startCursor?: string;\n /**\n * DTO.PAGE.END_CURSOR\n * @type {string}\n * @memberof TokenCreationPage\n */\n endCursor?: string;\n /**\n * DTO.PAGE.TOTAL\n * @type {number}\n * @memberof TokenCreationPage\n */\n total?: number;\n /**\n * DTO.TOKEN.CREATION.PAGE.DATA\n * @type {Array<TokenCreationDTO>}\n * @memberof TokenCreationPage\n */\n data: Array<TokenCreationDTO>;\n}\n\n/**\n * Check if a given object implements the TokenCreationPage interface.\n */\nexport function instanceOfTokenCreationPage(value: object): value is TokenCreationPage {\n if (!('data' in value) || value['data'] === undefined) return false;\n return true;\n}\n\nexport function TokenCreationPageFromJSON(json: any): TokenCreationPage {\n return TokenCreationPageFromJSONTyped(json, false);\n}\n\nexport function TokenCreationPageFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenCreationPage {\n if (json == null) {\n return json;\n }\n return {\n \n 'hasNext': json['hasNext'] == null ? undefined : json['hasNext'],\n 'hasPrev': json['hasPrev'] == null ? undefined : json['hasPrev'],\n 'startCursor': json['startCursor'] == null ? undefined : json['startCursor'],\n 'endCursor': json['endCursor'] == null ? undefined : json['endCursor'],\n 'total': json['total'] == null ? undefined : json['total'],\n 'data': ((json['data'] as Array<any>).map(TokenCreationDTOFromJSON)),\n };\n}\n\nexport function TokenCreationPageToJSON(json: any): TokenCreationPage {\n return TokenCreationPageToJSONTyped(json, false);\n}\n\nexport function TokenCreationPageToJSONTyped(value?: TokenCreationPage | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'hasNext': value['hasNext'],\n 'hasPrev': value['hasPrev'],\n 'startCursor': value['startCursor'],\n 'endCursor': value['endCursor'],\n 'total': value['total'],\n 'data': ((value['data'] as Array<any>).map(TokenCreationDTOToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TokenHolder\n */\nexport interface TokenHolder {\n /**\n * DTO.TOKEN_HOLDER.WALLET_ADDRESS\n * @type {string}\n * @memberof TokenHolder\n */\n walletAddress: string;\n /**\n * DTO.TOKEN_HOLDER.AMOUNT\n * @type {string}\n * @memberof TokenHolder\n */\n amount: string;\n /**\n * DTO.TOKEN_HOLDER.AMOUNT_USD\n * @type {string}\n * @memberof TokenHolder\n */\n amountInUsd: string;\n /**\n * DTO.TOKEN_HOLDER.PERCENTAGE\n * @type {string}\n * @memberof TokenHolder\n */\n percentage: string;\n}\n\n/**\n * Check if a given object implements the TokenHolder interface.\n */\nexport function instanceOfTokenHolder(value: object): value is TokenHolder {\n if (!('walletAddress' in value) || value['walletAddress'] === undefined) return false;\n if (!('amount' in value) || value['amount'] === undefined) return false;\n if (!('amountInUsd' in value) || value['amountInUsd'] === undefined) return false;\n if (!('percentage' in value) || value['percentage'] === undefined) return false;\n return true;\n}\n\nexport function TokenHolderFromJSON(json: any): TokenHolder {\n return TokenHolderFromJSONTyped(json, false);\n}\n\nexport function TokenHolderFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenHolder {\n if (json == null) {\n return json;\n }\n return {\n \n 'walletAddress': json['walletAddress'],\n 'amount': json['amount'],\n 'amountInUsd': json['amountInUsd'],\n 'percentage': json['percentage'],\n };\n}\n\nexport function TokenHolderToJSON(json: any): TokenHolder {\n return TokenHolderToJSONTyped(json, false);\n}\n\nexport function TokenHolderToJSONTyped(value?: TokenHolder | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'walletAddress': value['walletAddress'],\n 'amount': value['amount'],\n 'amountInUsd': value['amountInUsd'],\n 'percentage': value['percentage'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { TokenHolder } from './TokenHolder';\nimport {\n TokenHolderFromJSON,\n TokenHolderFromJSONTyped,\n TokenHolderToJSON,\n TokenHolderToJSONTyped,\n} from './TokenHolder';\n\n/**\n * \n * @export\n * @interface TokenHolderPage\n */\nexport interface TokenHolderPage {\n /**\n * DTO.PAGE.HAS_NEXT\n * @type {boolean}\n * @memberof TokenHolderPage\n */\n hasNext?: boolean;\n /**\n * DTO.PAGE.HAS_PREV\n * @type {boolean}\n * @memberof TokenHolderPage\n */\n hasPrev?: boolean;\n /**\n * DTO.PAGE.START_CURSOR\n * @type {string}\n * @memberof TokenHolderPage\n */\n startCursor?: string;\n /**\n * DTO.PAGE.END_CURSOR\n * @type {string}\n * @memberof TokenHolderPage\n */\n endCursor?: string;\n /**\n * DTO.PAGE.TOTAL\n * @type {number}\n * @memberof TokenHolderPage\n */\n total?: number;\n /**\n * DTO.TOKEN_HOLDER.PAGE.DATA\n * @type {Array<TokenHolder>}\n * @memberof TokenHolderPage\n */\n data: Array<TokenHolder>;\n}\n\n/**\n * Check if a given object implements the TokenHolderPage interface.\n */\nexport function instanceOfTokenHolderPage(value: object): value is TokenHolderPage {\n if (!('data' in value) || value['data'] === undefined) return false;\n return true;\n}\n\nexport function TokenHolderPageFromJSON(json: any): TokenHolderPage {\n return TokenHolderPageFromJSONTyped(json, false);\n}\n\nexport function TokenHolderPageFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenHolderPage {\n if (json == null) {\n return json;\n }\n return {\n \n 'hasNext': json['hasNext'] == null ? undefined : json['hasNext'],\n 'hasPrev': json['hasPrev'] == null ? undefined : json['hasPrev'],\n 'startCursor': json['startCursor'] == null ? undefined : json['startCursor'],\n 'endCursor': json['endCursor'] == null ? undefined : json['endCursor'],\n 'total': json['total'] == null ? undefined : json['total'],\n 'data': ((json['data'] as Array<any>).map(TokenHolderFromJSON)),\n };\n}\n\nexport function TokenHolderPageToJSON(json: any): TokenHolderPage {\n return TokenHolderPageToJSONTyped(json, false);\n}\n\nexport function TokenHolderPageToJSONTyped(value?: TokenHolderPage | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'hasNext': value['hasNext'],\n 'hasPrev': value['hasPrev'],\n 'startCursor': value['startCursor'],\n 'endCursor': value['endCursor'],\n 'total': value['total'],\n 'data': ((value['data'] as Array<any>).map(TokenHolderToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { Token } from './Token';\nimport {\n TokenFromJSON,\n TokenFromJSONTyped,\n TokenToJSON,\n TokenToJSONTyped,\n} from './Token';\n\n/**\n * \n * @export\n * @interface TokenListPage\n */\nexport interface TokenListPage {\n /**\n * DTO.PAGE.HAS_NEXT\n * @type {boolean}\n * @memberof TokenListPage\n */\n hasNext?: boolean;\n /**\n * DTO.PAGE.HAS_PREV\n * @type {boolean}\n * @memberof TokenListPage\n */\n hasPrev?: boolean;\n /**\n * DTO.PAGE.START_CURSOR\n * @type {string}\n * @memberof TokenListPage\n */\n startCursor?: string;\n /**\n * DTO.PAGE.END_CURSOR\n * @type {string}\n * @memberof TokenListPage\n */\n endCursor?: string;\n /**\n * DTO.PAGE.TOTAL\n * @type {number}\n * @memberof TokenListPage\n */\n total?: number;\n /**\n * DTO.TOKEN.PAGE.DATA\n * @type {Array<Token>}\n * @memberof TokenListPage\n */\n data: Array<Token>;\n}\n\n/**\n * Check if a given object implements the TokenListPage interface.\n */\nexport function instanceOfTokenListPage(value: object): value is TokenListPage {\n if (!('data' in value) || value['data'] === undefined) return false;\n return true;\n}\n\nexport function TokenListPageFromJSON(json: any): TokenListPage {\n return TokenListPageFromJSONTyped(json, false);\n}\n\nexport function TokenListPageFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenListPage {\n if (json == null) {\n return json;\n }\n return {\n \n 'hasNext': json['hasNext'] == null ? undefined : json['hasNext'],\n 'hasPrev': json['hasPrev'] == null ? undefined : json['hasPrev'],\n 'startCursor': json['startCursor'] == null ? undefined : json['startCursor'],\n 'endCursor': json['endCursor'] == null ? undefined : json['endCursor'],\n 'total': json['total'] == null ? undefined : json['total'],\n 'data': ((json['data'] as Array<any>).map(TokenFromJSON)),\n };\n}\n\nexport function TokenListPageToJSON(json: any): TokenListPage {\n return TokenListPageToJSONTyped(json, false);\n}\n\nexport function TokenListPageToJSONTyped(value?: TokenListPage | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'hasNext': value['hasNext'],\n 'hasPrev': value['hasPrev'],\n 'startCursor': value['startCursor'],\n 'endCursor': value['endCursor'],\n 'total': value['total'],\n 'data': ((value['data'] as Array<any>).map(TokenToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { Token } from './Token';\nimport {\n TokenFromJSON,\n TokenFromJSONTyped,\n TokenToJSON,\n TokenToJSONTyped,\n} from './Token';\n\n/**\n * \n * @export\n * @interface TokenPage\n */\nexport interface TokenPage {\n /**\n * DTO.PAGE.HAS_NEXT\n * @type {boolean}\n * @memberof TokenPage\n */\n hasNext?: boolean;\n /**\n * DTO.PAGE.HAS_PREV\n * @type {boolean}\n * @memberof TokenPage\n */\n hasPrev?: boolean;\n /**\n * DTO.PAGE.START_CURSOR\n * @type {string}\n * @memberof TokenPage\n */\n startCursor?: string;\n /**\n * DTO.PAGE.END_CURSOR\n * @type {string}\n * @memberof TokenPage\n */\n endCursor?: string;\n /**\n * DTO.PAGE.TOTAL\n * @type {number}\n * @memberof TokenPage\n */\n total?: number;\n /**\n * DTO.TOKEN.PAGE.COUNTS_BY_PROTOCOLS\n * @type {object}\n * @memberof TokenPage\n */\n countsByProtocols?: object;\n /**\n * DTO.TOKEN.PAGE.DATA\n * @type {Array<Token>}\n * @memberof TokenPage\n */\n data: Array<Token>;\n}\n\n/**\n * Check if a given object implements the TokenPage interface.\n */\nexport function instanceOfTokenPage(value: object): value is TokenPage {\n if (!('data' in value) || value['data'] === undefined) return false;\n return true;\n}\n\nexport function TokenPageFromJSON(json: any): TokenPage {\n return TokenPageFromJSONTyped(json, false);\n}\n\nexport function TokenPageFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenPage {\n if (json == null) {\n return json;\n }\n return {\n \n 'hasNext': json['hasNext'] == null ? undefined : json['hasNext'],\n 'hasPrev': json['hasPrev'] == null ? undefined : json['hasPrev'],\n 'startCursor': json['startCursor'] == null ? undefined : json['startCursor'],\n 'endCursor': json['endCursor'] == null ? undefined : json['endCursor'],\n 'total': json['total'] == null ? undefined : json['total'],\n 'countsByProtocols': json['countsByProtocols'] == null ? undefined : json['countsByProtocols'],\n 'data': ((json['data'] as Array<any>).map(TokenFromJSON)),\n };\n}\n\nexport function TokenPageToJSON(json: any): TokenPage {\n return TokenPageToJSONTyped(json, false);\n}\n\nexport function TokenPageToJSONTyped(value?: TokenPage | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'hasNext': value['hasNext'],\n 'hasPrev': value['hasPrev'],\n 'startCursor': value['startCursor'],\n 'endCursor': value['endCursor'],\n 'total': value['total'],\n 'countsByProtocols': value['countsByProtocols'],\n 'data': ((value['data'] as Array<any>).map(TokenToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TokenPriceDTO\n */\nexport interface TokenPriceDTO {\n /**\n * DTO.TOKEN.PRICE.TOKEN_ADDRESS\n * @type {string}\n * @memberof TokenPriceDTO\n */\n tokenAddress: string;\n /**\n * DTO.TOKEN.PRICE.PRICE_IN_USD\n * @type {string}\n * @memberof TokenPriceDTO\n */\n priceInUsd: string;\n /**\n * DTO.TOKEN.PRICE.PRICE_IN_NATIVE\n * @type {string}\n * @memberof TokenPriceDTO\n */\n priceInNative: string;\n /**\n * DTO.TOKEN.PRICE.TIMESTAMP\n * @type {number}\n * @memberof TokenPriceDTO\n */\n timestamp: number;\n}\n\n/**\n * Check if a given object implements the TokenPriceDTO interface.\n */\nexport function instanceOfTokenPriceDTO(value: object): value is TokenPriceDTO {\n if (!('tokenAddress' in value) || value['tokenAddress'] === undefined) return false;\n if (!('priceInUsd' in value) || value['priceInUsd'] === undefined) return false;\n if (!('priceInNative' in value) || value['priceInNative'] === undefined) return false;\n if (!('timestamp' in value) || value['timestamp'] === undefined) return false;\n return true;\n}\n\nexport function TokenPriceDTOFromJSON(json: any): TokenPriceDTO {\n return TokenPriceDTOFromJSONTyped(json, false);\n}\n\nexport function TokenPriceDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenPriceDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'tokenAddress': json['tokenAddress'],\n 'priceInUsd': json['priceInUsd'],\n 'priceInNative': json['priceInNative'],\n 'timestamp': json['timestamp'],\n };\n}\n\nexport function TokenPriceDTOToJSON(json: any): TokenPriceDTO {\n return TokenPriceDTOToJSONTyped(json, false);\n}\n\nexport function TokenPriceDTOToJSONTyped(value?: TokenPriceDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'tokenAddress': value['tokenAddress'],\n 'priceInUsd': value['priceInUsd'],\n 'priceInNative': value['priceInNative'],\n 'timestamp': value['timestamp'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { TokenPriceDTO } from './TokenPriceDTO';\nimport {\n TokenPriceDTOFromJSON,\n TokenPriceDTOFromJSONTyped,\n TokenPriceDTOToJSON,\n TokenPriceDTOToJSONTyped,\n} from './TokenPriceDTO';\n\n/**\n * \n * @export\n * @interface TokenPricePage\n */\nexport interface TokenPricePage {\n /**\n * DTO.PAGE.HAS_NEXT\n * @type {boolean}\n * @memberof TokenPricePage\n */\n hasNext?: boolean;\n /**\n * DTO.PAGE.HAS_PREV\n * @type {boolean}\n * @memberof TokenPricePage\n */\n hasPrev?: boolean;\n /**\n * DTO.PAGE.START_CURSOR\n * @type {string}\n * @memberof TokenPricePage\n */\n startCursor?: string;\n /**\n * DTO.PAGE.END_CURSOR\n * @type {string}\n * @memberof TokenPricePage\n */\n endCursor?: string;\n /**\n * DTO.PAGE.TOTAL\n * @type {number}\n * @memberof TokenPricePage\n */\n total?: number;\n /**\n * DTO.TOKEN.PRICE.PAGE.DATA\n * @type {Array<TokenPriceDTO>}\n * @memberof TokenPricePage\n */\n data: Array<TokenPriceDTO>;\n}\n\n/**\n * Check if a given object implements the TokenPricePage interface.\n */\nexport function instanceOfTokenPricePage(value: object): value is TokenPricePage {\n if (!('data' in value) || value['data'] === undefined) return false;\n return true;\n}\n\nexport function TokenPricePageFromJSON(json: any): TokenPricePage {\n return TokenPricePageFromJSONTyped(json, false);\n}\n\nexport function TokenPricePageFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenPricePage {\n if (json == null) {\n return json;\n }\n return {\n \n 'hasNext': json['hasNext'] == null ? undefined : json['hasNext'],\n 'hasPrev': json['hasPrev'] == null ? undefined : json['hasPrev'],\n 'startCursor': json['startCursor'] == null ? undefined : json['startCursor'],\n 'endCursor': json['endCursor'] == null ? undefined : json['endCursor'],\n 'total': json['total'] == null ? undefined : json['total'],\n 'data': ((json['data'] as Array<any>).map(TokenPriceDTOFromJSON)),\n };\n}\n\nexport function TokenPricePageToJSON(json: any): TokenPricePage {\n return TokenPricePageToJSONTyped(json, false);\n}\n\nexport function TokenPricePageToJSONTyped(value?: TokenPricePage | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'hasNext': value['hasNext'],\n 'hasPrev': value['hasPrev'],\n 'startCursor': value['startCursor'],\n 'endCursor': value['endCursor'],\n 'total': value['total'],\n 'data': ((value['data'] as Array<any>).map(TokenPriceDTOToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TokenTrader\n */\nexport interface TokenTrader {\n /**\n * DTO.TOKEN_TRADER.ADDRESS\n * @type {string}\n * @memberof TokenTrader\n */\n address: string;\n /**\n * DTO.TOKEN_TRADER.TRANSACTION_SIGNATURE\n * @type {string}\n * @memberof TokenTrader\n */\n transactionSignature?: string;\n /**\n * DTO.TOKEN_TRADER.BLOCK_HASH\n * @type {string}\n * @memberof TokenTrader\n */\n blockHash?: string;\n /**\n * DTO.TOKEN_TRADER.BLOCK_HEIGHT\n * @type {number}\n * @memberof TokenTrader\n */\n blockHeight?: number;\n /**\n * DTO.TOKEN_TRADER.BLOCK_SLOT\n * @type {number}\n * @memberof TokenTrader\n */\n blockSlot?: number;\n /**\n * DTO.TOKEN_TRADER.BLOCK_TIMESTAMP\n * @type {Date}\n * @memberof TokenTrader\n */\n blockTimestamp?: Date;\n /**\n * DTO.TOKEN_TRADER.ONCHAIN_CREATED_AT\n * @type {object}\n * @memberof TokenTrader\n */\n onchainCreatedAt?: object;\n /**\n * DTO.TOKEN_TRADER.TRADE_COUNT\n * @type {number}\n * @memberof TokenTrader\n */\n tradeCount?: number;\n /**\n * DTO.TOKEN_TRADER.TRADE_AMOUNT_IN_NATIVE\n * @type {string}\n * @memberof TokenTrader\n */\n tradeAmountInNative?: string;\n /**\n * DTO.TOKEN_TRADER.TRADE_AMOUNT_IN_USD\n * @type {string}\n * @memberof TokenTrader\n */\n tradeAmountInUsd?: string;\n /**\n * DTO.TOKEN_TRADER.PERCENTILE_RANK_TRADE_COUNT\n * @type {number}\n * @memberof TokenTrader\n */\n percentileRankTradeCount?: number;\n /**\n * DTO.TOKEN_TRADER.PERCENTILE_RANK_TRADE_AMOUNT_IN_USD\n * @type {string}\n * @memberof TokenTrader\n */\n percentileRankTradeAmountInUsd?: string;\n /**\n * DTO.TOKEN_TRADER.RANK_TRADE_AMOUNT_IN_USD\n * @type {string}\n * @memberof TokenTrader\n */\n rankTradeAmountInUsd?: string;\n}\n\n/**\n * Check if a given object implements the TokenTrader interface.\n */\nexport function instanceOfTokenTrader(value: object): value is TokenTrader {\n if (!('address' in value) || value['address'] === undefined) return false;\n return true;\n}\n\nexport function TokenTraderFromJSON(json: any): TokenTrader {\n return TokenTraderFromJSONTyped(json, false);\n}\n\nexport function TokenTraderFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenTrader {\n if (json == null) {\n return json;\n }\n return {\n \n 'address': json['address'],\n 'transactionSignature': json['transactionSignature'] == null ? undefined : json['transactionSignature'],\n 'blockHash': json['blockHash'] == null ? undefined : json['blockHash'],\n 'blockHeight': json['blockHeight'] == null ? undefined : json['blockHeight'],\n 'blockSlot': json['blockSlot'] == null ? undefined : json['blockSlot'],\n 'blockTimestamp': json['blockTimestamp'] == null ? undefined : (new Date(json['blockTimestamp'])),\n 'onchainCreatedAt': json['onchainCreatedAt'] == null ? undefined : json['onchainCreatedAt'],\n 'tradeCount': json['tradeCount'] == null ? undefined : json['tradeCount'],\n 'tradeAmountInNative': json['tradeAmountInNative'] == null ? undefined : json['tradeAmountInNative'],\n 'tradeAmountInUsd': json['tradeAmountInUsd'] == null ? undefined : json['tradeAmountInUsd'],\n 'percentileRankTradeCount': json['percentileRankTradeCount'] == null ? undefined : json['percentileRankTradeCount'],\n 'percentileRankTradeAmountInUsd': json['percentileRankTradeAmountInUsd'] == null ? undefined : json['percentileRankTradeAmountInUsd'],\n 'rankTradeAmountInUsd': json['rankTradeAmountInUsd'] == null ? undefined : json['rankTradeAmountInUsd'],\n };\n}\n\nexport function TokenTraderToJSON(json: any): TokenTrader {\n return TokenTraderToJSONTyped(json, false);\n}\n\nexport function TokenTraderToJSONTyped(value?: TokenTrader | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'address': value['address'],\n 'transactionSignature': value['transactionSignature'],\n 'blockHash': value['blockHash'],\n 'blockHeight': value['blockHeight'],\n 'blockSlot': value['blockSlot'],\n 'blockTimestamp': value['blockTimestamp'] == null ? value['blockTimestamp'] : value['blockTimestamp'].toISOString(),\n 'onchainCreatedAt': value['onchainCreatedAt'],\n 'tradeCount': value['tradeCount'],\n 'tradeAmountInNative': value['tradeAmountInNative'],\n 'tradeAmountInUsd': value['tradeAmountInUsd'],\n 'percentileRankTradeCount': value['percentileRankTradeCount'],\n 'percentileRankTradeAmountInUsd': value['percentileRankTradeAmountInUsd'],\n 'rankTradeAmountInUsd': value['rankTradeAmountInUsd'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TradeDetailDTO\n */\nexport interface TradeDetailDTO {\n /**\n * DTO.TRADE.DETAIL.CHAIN\n * @type {string}\n * @memberof TradeDetailDTO\n */\n chain: string;\n /**\n * DTO.TRADE.DETAIL.BLOCK_HEIGHT\n * @type {number}\n * @memberof TradeDetailDTO\n */\n blockHeight: number;\n /**\n * DTO.TRADE.DETAIL.BLOCK_TIMESTAMP\n * @type {number}\n * @memberof TradeDetailDTO\n */\n blockTimestamp: number;\n /**\n * DTO.TRADE.DETAIL.ACCOUNT_OWNER_ADDRESS\n * @type {string}\n * @memberof TradeDetailDTO\n */\n accountOwnerAddress: string;\n /**\n * DTO.TRADE.DETAIL.TRANSACTION_SIGNATURE\n * @type {string}\n * @memberof TradeDetailDTO\n */\n transactionSignature: string;\n /**\n * DTO.TRADE.DETAIL.TOKEN_NAME\n * @type {string}\n * @memberof TradeDetailDTO\n */\n tokenName: string;\n /**\n * DTO.TRADE.DETAIL.TOKEN_SYMBOL\n * @type {string}\n * @memberof TradeDetailDTO\n */\n tokenSymbol: string;\n /**\n * DTO.TRADE.DETAIL.TOKEN_IMAGE_URL\n * @type {string}\n * @memberof TradeDetailDTO\n */\n tokenImageUrl: string;\n /**\n * DTO.TRADE.DETAIL.TOKEN_ADDRESS\n * @type {string}\n * @memberof TradeDetailDTO\n */\n tokenAddress: string;\n /**\n * DTO.TRADE.DETAIL.POOL_ADDRESS\n * @type {string}\n * @memberof TradeDetailDTO\n */\n poolAddress: string;\n /**\n * DTO.TRADE.DETAIL.DEX_PROGRAM_ADDRESS\n * @type {string}\n * @memberof TradeDetailDTO\n */\n dexProgramAddress: string;\n /**\n * DTO.TRADE.DETAIL.DEX_PROTOCOL_FAMILY\n * @type {string}\n * @memberof TradeDetailDTO\n */\n dexProtocolFamily: string;\n /**\n * DTO.TRADE.DETAIL.DEX_IMAGE\n * @type {string}\n * @memberof TradeDetailDTO\n */\n dexImage: string;\n /**\n * DTO.TRADE.DETAIL.TOKEN_AMOUNT\n * @type {string}\n * @memberof TradeDetailDTO\n */\n tokenAmount: string;\n /**\n * DTO.TRADE.DETAIL.TOKEN_PRICE_IN_USD\n * @type {string}\n * @memberof TradeDetailDTO\n */\n tokenPriceInUsd: string;\n /**\n * DTO.TRADE.DETAIL.TOKEN_AMOUNT_IN_USD\n * @type {string}\n * @memberof TradeDetailDTO\n */\n tokenAmountInUsd: string;\n /**\n * DTO.TRADE.DETAIL.TYPE\n * @type {string}\n * @memberof TradeDetailDTO\n */\n type: string;\n /**\n * DTO.TRADE.DETAIL.SIDE_TOKEN_NAME\n * @type {string}\n * @memberof TradeDetailDTO\n */\n sideTokenName: string;\n /**\n * DTO.TRADE.DETAIL.SIDE_TOKEN_SYMBOL\n * @type {string}\n * @memberof TradeDetailDTO\n */\n sideTokenSymbol: string;\n /**\n * DTO.TRADE.DETAIL.SIDE_TOKEN_IMAGE_URL\n * @type {string}\n * @memberof TradeDetailDTO\n */\n sideTokenImageUrl: string;\n /**\n * DTO.TRADE.DETAIL.SIDE_TOKEN_ADDRESS\n * @type {string}\n * @memberof TradeDetailDTO\n */\n sideTokenAddress: string;\n /**\n * DTO.TRADE.DETAIL.SIDE_TOKEN_PRICE_IN_USD\n * @type {string}\n * @memberof TradeDetailDTO\n */\n sideTokenPriceInUsd: string;\n /**\n * DTO.TRADE.DETAIL.SIDE_TOKEN_AMOUNT\n * @type {string}\n * @memberof TradeDetailDTO\n */\n sideTokenAmount: string;\n /**\n * DTO.TRADE.DETAIL.SIDE_TOKEN_AMOUNT_IN_USD\n * @type {string}\n * @memberof TradeDetailDTO\n */\n sideTokenAmountInUsd: string;\n /**\n * DTO.TRADE.DETAIL.STATUS\n * @type {string}\n * @memberof TradeDetailDTO\n */\n status: string;\n}\n\n/**\n * Check if a given object implements the TradeDetailDTO interface.\n */\nexport function instanceOfTradeDetailDTO(value: object): value is TradeDetailDTO {\n if (!('chain' in value) || value['chain'] === undefined) return false;\n if (!('blockHeight' in value) || value['blockHeight'] === undefined) return false;\n if (!('blockTimestamp' in value) || value['blockTimestamp'] === undefined) return false;\n if (!('accountOwnerAddress' in value) || value['accountOwnerAddress'] === undefined) return false;\n if (!('transactionSignature' in value) || value['transactionSignature'] === undefined) return false;\n if (!('tokenName' in value) || value['tokenName'] === undefined) return false;\n if (!('tokenSymbol' in value) || value['tokenSymbol'] === undefined) return false;\n if (!('tokenImageUrl' in value) || value['tokenImageUrl'] === undefined) return false;\n if (!('tokenAddress' in value) || value['tokenAddress'] === undefined) return false;\n if (!('poolAddress' in value) || value['poolAddress'] === undefined) return false;\n if (!('dexProgramAddress' in value) || value['dexProgramAddress'] === undefined) return false;\n if (!('dexProtocolFamily' in value) || value['dexProtocolFamily'] === undefined) return false;\n if (!('dexImage' in value) || value['dexImage'] === undefined) return false;\n if (!('tokenAmount' in value) || value['tokenAmount'] === undefined) return false;\n if (!('tokenPriceInUsd' in value) || value['tokenPriceInUsd'] === undefined) return false;\n if (!('tokenAmountInUsd' in value) || value['tokenAmountInUsd'] === undefined) return false;\n if (!('type' in value) || value['type'] === undefined) return false;\n if (!('sideTokenName' in value) || value['sideTokenName'] === undefined) return false;\n if (!('sideTokenSymbol' in value) || value['sideTokenSymbol'] === undefined) return false;\n if (!('sideTokenImageUrl' in value) || value['sideTokenImageUrl'] === undefined) return false;\n if (!('sideTokenAddress' in value) || value['sideTokenAddress'] === undefined) return false;\n if (!('sideTokenPriceInUsd' in value) || value['sideTokenPriceInUsd'] === undefined) return false;\n if (!('sideTokenAmount' in value) || value['sideTokenAmount'] === undefined) return false;\n if (!('sideTokenAmountInUsd' in value) || value['sideTokenAmountInUsd'] === undefined) return false;\n if (!('status' in value) || value['status'] === undefined) return false;\n return true;\n}\n\nexport function TradeDetailDTOFromJSON(json: any): TradeDetailDTO {\n return TradeDetailDTOFromJSONTyped(json, false);\n}\n\nexport function TradeDetailDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): TradeDetailDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'chain': json['chain'],\n 'blockHeight': json['blockHeight'],\n 'blockTimestamp': json['blockTimestamp'],\n 'accountOwnerAddress': json['accountOwnerAddress'],\n 'transactionSignature': json['transactionSignature'],\n 'tokenName': json['tokenName'],\n 'tokenSymbol': json['tokenSymbol'],\n 'tokenImageUrl': json['tokenImageUrl'],\n 'tokenAddress': json['tokenAddress'],\n 'poolAddress': json['poolAddress'],\n 'dexProgramAddress': json['dexProgramAddress'],\n 'dexProtocolFamily': json['dexProtocolFamily'],\n 'dexImage': json['dexImage'],\n 'tokenAmount': json['tokenAmount'],\n 'tokenPriceInUsd': json['tokenPriceInUsd'],\n 'tokenAmountInUsd': json['tokenAmountInUsd'],\n 'type': json['type'],\n 'sideTokenName': json['sideTokenName'],\n 'sideTokenSymbol': json['sideTokenSymbol'],\n 'sideTokenImageUrl': json['sideTokenImageUrl'],\n 'sideTokenAddress': json['sideTokenAddress'],\n 'sideTokenPriceInUsd': json['sideTokenPriceInUsd'],\n 'sideTokenAmount': json['sideTokenAmount'],\n 'sideTokenAmountInUsd': json['sideTokenAmountInUsd'],\n 'status': json['status'],\n };\n}\n\nexport function TradeDetailDTOToJSON(json: any): TradeDetailDTO {\n return TradeDetailDTOToJSONTyped(json, false);\n}\n\nexport function TradeDetailDTOToJSONTyped(value?: TradeDetailDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'chain': value['chain'],\n 'blockHeight': value['blockHeight'],\n 'blockTimestamp': value['blockTimestamp'],\n 'accountOwnerAddress': value['accountOwnerAddress'],\n 'transactionSignature': value['transactionSignature'],\n 'tokenName': value['tokenName'],\n 'tokenSymbol': value['tokenSymbol'],\n 'tokenImageUrl': value['tokenImageUrl'],\n 'tokenAddress': value['tokenAddress'],\n 'poolAddress': value['poolAddress'],\n 'dexProgramAddress': value['dexProgramAddress'],\n 'dexProtocolFamily': value['dexProtocolFamily'],\n 'dexImage': value['dexImage'],\n 'tokenAmount': value['tokenAmount'],\n 'tokenPriceInUsd': value['tokenPriceInUsd'],\n 'tokenAmountInUsd': value['tokenAmountInUsd'],\n 'type': value['type'],\n 'sideTokenName': value['sideTokenName'],\n 'sideTokenSymbol': value['sideTokenSymbol'],\n 'sideTokenImageUrl': value['sideTokenImageUrl'],\n 'sideTokenAddress': value['sideTokenAddress'],\n 'sideTokenPriceInUsd': value['sideTokenPriceInUsd'],\n 'sideTokenAmount': value['sideTokenAmount'],\n 'sideTokenAmountInUsd': value['sideTokenAmountInUsd'],\n 'status': value['status'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { TradeDetailDTO } from './TradeDetailDTO';\nimport {\n TradeDetailDTOFromJSON,\n TradeDetailDTOFromJSONTyped,\n TradeDetailDTOToJSON,\n TradeDetailDTOToJSONTyped,\n} from './TradeDetailDTO';\n\n/**\n * \n * @export\n * @interface TradePage\n */\nexport interface TradePage {\n /**\n * DTO.PAGE.HAS_NEXT\n * @type {boolean}\n * @memberof TradePage\n */\n hasNext?: boolean;\n /**\n * DTO.PAGE.HAS_PREV\n * @type {boolean}\n * @memberof TradePage\n */\n hasPrev?: boolean;\n /**\n * DTO.PAGE.START_CURSOR\n * @type {string}\n * @memberof TradePage\n */\n startCursor?: string;\n /**\n * DTO.PAGE.END_CURSOR\n * @type {string}\n * @memberof TradePage\n */\n endCursor?: string;\n /**\n * DTO.PAGE.TOTAL\n * @type {number}\n * @memberof TradePage\n */\n total?: number;\n /**\n * DTO.TRADE.PAGE.DATA\n * @type {Array<TradeDetailDTO>}\n * @memberof TradePage\n */\n data: Array<TradeDetailDTO>;\n}\n\n/**\n * Check if a given object implements the TradePage interface.\n */\nexport function instanceOfTradePage(value: object): value is TradePage {\n if (!('data' in value) || value['data'] === undefined) return false;\n return true;\n}\n\nexport function TradePageFromJSON(json: any): TradePage {\n return TradePageFromJSONTyped(json, false);\n}\n\nexport function TradePageFromJSONTyped(json: any, ignoreDiscriminator: boolean): TradePage {\n if (json == null) {\n return json;\n }\n return {\n \n 'hasNext': json['hasNext'] == null ? undefined : json['hasNext'],\n 'hasPrev': json['hasPrev'] == null ? undefined : json['hasPrev'],\n 'startCursor': json['startCursor'] == null ? undefined : json['startCursor'],\n 'endCursor': json['endCursor'] == null ? undefined : json['endCursor'],\n 'total': json['total'] == null ? undefined : json['total'],\n 'data': ((json['data'] as Array<any>).map(TradeDetailDTOFromJSON)),\n };\n}\n\nexport function TradePageToJSON(json: any): TradePage {\n return TradePageToJSONTyped(json, false);\n}\n\nexport function TradePageToJSONTyped(value?: TradePage | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'hasNext': value['hasNext'],\n 'hasPrev': value['hasPrev'],\n 'startCursor': value['startCursor'],\n 'endCursor': value['endCursor'],\n 'total': value['total'],\n 'data': ((value['data'] as Array<any>).map(TradeDetailDTOToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { AlertDetail } from './AlertDetail';\nimport {\n AlertDetailFromJSON,\n AlertDetailFromJSONTyped,\n AlertDetailToJSON,\n AlertDetailToJSONTyped,\n} from './AlertDetail';\n\n/**\n * \n * @export\n * @interface TransferAlertsResponseDTO\n */\nexport interface TransferAlertsResponseDTO {\n /**\n * DTO.KYT.TRANSFER_ALERTS_RESPONSE.ALERTS\n * @type {Array<AlertDetail>}\n * @memberof TransferAlertsResponseDTO\n */\n alerts: Array<AlertDetail>;\n}\n\n/**\n * Check if a given object implements the TransferAlertsResponseDTO interface.\n */\nexport function instanceOfTransferAlertsResponseDTO(value: object): value is TransferAlertsResponseDTO {\n if (!('alerts' in value) || value['alerts'] === undefined) return false;\n return true;\n}\n\nexport function TransferAlertsResponseDTOFromJSON(json: any): TransferAlertsResponseDTO {\n return TransferAlertsResponseDTOFromJSONTyped(json, false);\n}\n\nexport function TransferAlertsResponseDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): TransferAlertsResponseDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'alerts': ((json['alerts'] as Array<any>).map(AlertDetailFromJSON)),\n };\n}\n\nexport function TransferAlertsResponseDTOToJSON(json: any): TransferAlertsResponseDTO {\n return TransferAlertsResponseDTOToJSONTyped(json, false);\n}\n\nexport function TransferAlertsResponseDTOToJSONTyped(value?: TransferAlertsResponseDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'alerts': ((value['alerts'] as Array<any>).map(AlertDetailToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TransferBaseResponseDTO\n */\nexport interface TransferBaseResponseDTO {\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.UPDATED_AT\n * @type {string}\n * @memberof TransferBaseResponseDTO\n */\n updatedAt: string;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.ASSET\n * @type {string}\n * @memberof TransferBaseResponseDTO\n */\n asset: string;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.ASSET_ID\n * @type {string}\n * @memberof TransferBaseResponseDTO\n */\n assetId: string;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.NETWORK\n * @type {string}\n * @memberof TransferBaseResponseDTO\n */\n network: string;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.TRANSFER_REFERENCE\n * @type {string}\n * @memberof TransferBaseResponseDTO\n */\n transferReference: string;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.MEMO\n * @type {string}\n * @memberof TransferBaseResponseDTO\n */\n memo: string;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.TX\n * @type {string}\n * @memberof TransferBaseResponseDTO\n */\n tx: string;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.IDX\n * @type {number}\n * @memberof TransferBaseResponseDTO\n */\n idx: number;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.USD_AMOUNT\n * @type {string}\n * @memberof TransferBaseResponseDTO\n */\n usdAmount: string;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.ASSET_AMOUNT\n * @type {string}\n * @memberof TransferBaseResponseDTO\n */\n assetAmount: string;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.TIMESTAMP\n * @type {string}\n * @memberof TransferBaseResponseDTO\n */\n timestamp: string;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.OUTPUT_ADDRESS\n * @type {string}\n * @memberof TransferBaseResponseDTO\n */\n outputAddress: string;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.EXTERNAL_ID\n * @type {string}\n * @memberof TransferBaseResponseDTO\n */\n externalId: string;\n}\n\n/**\n * Check if a given object implements the TransferBaseResponseDTO interface.\n */\nexport function instanceOfTransferBaseResponseDTO(value: object): value is TransferBaseResponseDTO {\n if (!('updatedAt' in value) || value['updatedAt'] === undefined) return false;\n if (!('asset' in value) || value['asset'] === undefined) return false;\n if (!('assetId' in value) || value['assetId'] === undefined) return false;\n if (!('network' in value) || value['network'] === undefined) return false;\n if (!('transferReference' in value) || value['transferReference'] === undefined) return false;\n if (!('memo' in value) || value['memo'] === undefined) return false;\n if (!('tx' in value) || value['tx'] === undefined) return false;\n if (!('idx' in value) || value['idx'] === undefined) return false;\n if (!('usdAmount' in value) || value['usdAmount'] === undefined) return false;\n if (!('assetAmount' in value) || value['assetAmount'] === undefined) return false;\n if (!('timestamp' in value) || value['timestamp'] === undefined) return false;\n if (!('outputAddress' in value) || value['outputAddress'] === undefined) return false;\n if (!('externalId' in value) || value['externalId'] === undefined) return false;\n return true;\n}\n\nexport function TransferBaseResponseDTOFromJSON(json: any): TransferBaseResponseDTO {\n return TransferBaseResponseDTOFromJSONTyped(json, false);\n}\n\nexport function TransferBaseResponseDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): TransferBaseResponseDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'updatedAt': json['updatedAt'],\n 'asset': json['asset'],\n 'assetId': json['assetId'],\n 'network': json['network'],\n 'transferReference': json['transferReference'],\n 'memo': json['memo'],\n 'tx': json['tx'],\n 'idx': json['idx'],\n 'usdAmount': json['usdAmount'],\n 'assetAmount': json['assetAmount'],\n 'timestamp': json['timestamp'],\n 'outputAddress': json['outputAddress'],\n 'externalId': json['externalId'],\n };\n}\n\nexport function TransferBaseResponseDTOToJSON(json: any): TransferBaseResponseDTO {\n return TransferBaseResponseDTOToJSONTyped(json, false);\n}\n\nexport function TransferBaseResponseDTOToJSONTyped(value?: TransferBaseResponseDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'updatedAt': value['updatedAt'],\n 'asset': value['asset'],\n 'assetId': value['assetId'],\n 'network': value['network'],\n 'transferReference': value['transferReference'],\n 'memo': value['memo'],\n 'tx': value['tx'],\n 'idx': value['idx'],\n 'usdAmount': value['usdAmount'],\n 'assetAmount': value['assetAmount'],\n 'timestamp': value['timestamp'],\n 'outputAddress': value['outputAddress'],\n 'externalId': value['externalId'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { DirectExposureDetail } from './DirectExposureDetail';\nimport {\n DirectExposureDetailFromJSON,\n DirectExposureDetailFromJSONTyped,\n DirectExposureDetailToJSON,\n DirectExposureDetailToJSONTyped,\n} from './DirectExposureDetail';\n\n/**\n * \n * @export\n * @interface TransferDirectExposureResponseDTO\n */\nexport interface TransferDirectExposureResponseDTO {\n /**\n * DTO.KYT.TRANSFER_DIRECT_EXPOSURE_RESPONSE.DIRECT\n * @type {DirectExposureDetail}\n * @memberof TransferDirectExposureResponseDTO\n */\n direct: DirectExposureDetail;\n}\n\n/**\n * Check if a given object implements the TransferDirectExposureResponseDTO interface.\n */\nexport function instanceOfTransferDirectExposureResponseDTO(value: object): value is TransferDirectExposureResponseDTO {\n if (!('direct' in value) || value['direct'] === undefined) return false;\n return true;\n}\n\nexport function TransferDirectExposureResponseDTOFromJSON(json: any): TransferDirectExposureResponseDTO {\n return TransferDirectExposureResponseDTOFromJSONTyped(json, false);\n}\n\nexport function TransferDirectExposureResponseDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): TransferDirectExposureResponseDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'direct': DirectExposureDetailFromJSON(json['direct']),\n };\n}\n\nexport function TransferDirectExposureResponseDTOToJSON(json: any): TransferDirectExposureResponseDTO {\n return TransferDirectExposureResponseDTOToJSONTyped(json, false);\n}\n\nexport function TransferDirectExposureResponseDTOToJSONTyped(value?: TransferDirectExposureResponseDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'direct': DirectExposureDetailToJSON(value['direct']),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { NetworkIdentificationOrg } from './NetworkIdentificationOrg';\nimport {\n NetworkIdentificationOrgFromJSON,\n NetworkIdentificationOrgFromJSONTyped,\n NetworkIdentificationOrgToJSON,\n NetworkIdentificationOrgToJSONTyped,\n} from './NetworkIdentificationOrg';\n\n/**\n * \n * @export\n * @interface TransferNetworkIdentificationsResponseDTO\n */\nexport interface TransferNetworkIdentificationsResponseDTO {\n /**\n * DTO.KYT.TRANSFER_NETWORK_IDENTIFICATIONS_RESPONSE.COUNT\n * @type {number}\n * @memberof TransferNetworkIdentificationsResponseDTO\n */\n count: number;\n /**\n * DTO.KYT.TRANSFER_NETWORK_IDENTIFICATIONS_RESPONSE.NETWORK_IDENTIFICATION_ORGS\n * @type {Array<NetworkIdentificationOrg>}\n * @memberof TransferNetworkIdentificationsResponseDTO\n */\n networkIdentificationOrgs: Array<NetworkIdentificationOrg>;\n}\n\n/**\n * Check if a given object implements the TransferNetworkIdentificationsResponseDTO interface.\n */\nexport function instanceOfTransferNetworkIdentificationsResponseDTO(value: object): value is TransferNetworkIdentificationsResponseDTO {\n if (!('count' in value) || value['count'] === undefined) return false;\n if (!('networkIdentificationOrgs' in value) || value['networkIdentificationOrgs'] === undefined) return false;\n return true;\n}\n\nexport function TransferNetworkIdentificationsResponseDTOFromJSON(json: any): TransferNetworkIdentificationsResponseDTO {\n return TransferNetworkIdentificationsResponseDTOFromJSONTyped(json, false);\n}\n\nexport function TransferNetworkIdentificationsResponseDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): TransferNetworkIdentificationsResponseDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'count': json['count'],\n 'networkIdentificationOrgs': ((json['networkIdentificationOrgs'] as Array<any>).map(NetworkIdentificationOrgFromJSON)),\n };\n}\n\nexport function TransferNetworkIdentificationsResponseDTOToJSON(json: any): TransferNetworkIdentificationsResponseDTO {\n return TransferNetworkIdentificationsResponseDTOToJSONTyped(json, false);\n}\n\nexport function TransferNetworkIdentificationsResponseDTOToJSONTyped(value?: TransferNetworkIdentificationsResponseDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'count': value['count'],\n 'networkIdentificationOrgs': ((value['networkIdentificationOrgs'] as Array<any>).map(NetworkIdentificationOrgToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface UpdateEndpointInput\n */\nexport interface UpdateEndpointInput {\n /**\n * DTO.ENDPOINT.ENDPOINT_ID\n * @type {string}\n * @memberof UpdateEndpointInput\n */\n endpointId?: string;\n /**\n * DTO.ENDPOINT.CHANNELS\n * @type {Array<string>}\n * @memberof UpdateEndpointInput\n */\n channels?: Array<string>;\n /**\n * DTO.ENDPOINT.DESCRIPTION\n * @type {string}\n * @memberof UpdateEndpointInput\n */\n description?: string;\n /**\n * DTO.ENDPOINT.DISABLED\n * @type {boolean}\n * @memberof UpdateEndpointInput\n */\n disabled?: boolean;\n /**\n * DTO.ENDPOINT.FILTER_TYPES\n * @type {Array<string>}\n * @memberof UpdateEndpointInput\n */\n filterTypes?: Array<string>;\n /**\n * DTO.ENDPOINT.METADATA\n * @type {object}\n * @memberof UpdateEndpointInput\n */\n metadata?: object;\n /**\n * DTO.ENDPOINT.RATE_LIMIT\n * @type {number}\n * @memberof UpdateEndpointInput\n */\n rateLimit?: number;\n /**\n * DTO.ENDPOINT.URL\n * @type {string}\n * @memberof UpdateEndpointInput\n */\n url?: string;\n /**\n * DTO.ENDPOINT.FILTER\n * @type {string}\n * @memberof UpdateEndpointInput\n */\n filter?: string;\n}\n\n/**\n * Check if a given object implements the UpdateEndpointInput interface.\n */\nexport function instanceOfUpdateEndpointInput(value: object): value is UpdateEndpointInput {\n return true;\n}\n\nexport function UpdateEndpointInputFromJSON(json: any): UpdateEndpointInput {\n return UpdateEndpointInputFromJSONTyped(json, false);\n}\n\nexport function UpdateEndpointInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): UpdateEndpointInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'endpointId': json['endpointId'] == null ? undefined : json['endpointId'],\n 'channels': json['channels'] == null ? undefined : json['channels'],\n 'description': json['description'] == null ? undefined : json['description'],\n 'disabled': json['disabled'] == null ? undefined : json['disabled'],\n 'filterTypes': json['filterTypes'] == null ? undefined : json['filterTypes'],\n 'metadata': json['metadata'] == null ? undefined : json['metadata'],\n 'rateLimit': json['rateLimit'] == null ? undefined : json['rateLimit'],\n 'url': json['url'] == null ? undefined : json['url'],\n 'filter': json['filter'] == null ? undefined : json['filter'],\n };\n}\n\nexport function UpdateEndpointInputToJSON(json: any): UpdateEndpointInput {\n return UpdateEndpointInputToJSONTyped(json, false);\n}\n\nexport function UpdateEndpointInputToJSONTyped(value?: UpdateEndpointInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'endpointId': value['endpointId'],\n 'channels': value['channels'],\n 'description': value['description'],\n 'disabled': value['disabled'],\n 'filterTypes': value['filterTypes'],\n 'metadata': value['metadata'],\n 'rateLimit': value['rateLimit'],\n 'url': value['url'],\n 'filter': value['filter'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface WalletBalanceDetailDTO\n */\nexport interface WalletBalanceDetailDTO {\n /**\n * DTO.WALLET.BALANCE.TOKEN_ADDRESS\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n tokenAddress: string;\n /**\n * DTO.WALLET.BALANCE.AMOUNT\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n amount: string;\n /**\n * DTO.WALLET.BALANCE.AMOUNT_IN_USD\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n valueInUsd: string;\n /**\n * DTO.WALLET.BALANCE.TOKEN_NAME\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n name: string;\n /**\n * DTO.WALLET.BALANCE.TOKEN_SYMBOL\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n symbol: string;\n /**\n * DTO.WALLET.BALANCE.TOKEN_IMAGE_URL\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n imageUrl: string;\n /**\n * DTO.WALLET.BALANCE.TOKEN_PRICE_IN_SOL\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n priceInSol: string;\n /**\n * DTO.WALLET.BALANCE.TOKEN_PRICE_IN_USD\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n priceInUsd: string;\n /**\n * DTO.WALLET.BALANCE.PRICE_CHANGE_24H\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n priceChangeRatioInUsd24h: string;\n /**\n * DTO.WALLET.BALANCE.UNREALIZED_PROFIT\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n unrealizedProfitInUsd: string;\n /**\n * DTO.WALLET.BALANCE.UNREALIZED_PROFIT_RATIO\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n unrealizedProfitRatio: string;\n /**\n * DTO.WALLET.BALANCE.OPEN_TIME\n * @type {number}\n * @memberof WalletBalanceDetailDTO\n */\n openTime: number;\n /**\n * DTO.WALLET.BALANCE.CLOSE_TIME\n * @type {number}\n * @memberof WalletBalanceDetailDTO\n */\n closeTime: number;\n /**\n * DTO.WALLET.BALANCE.BUYS\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n buys: string;\n /**\n * DTO.WALLET.BALANCE.BUY_AMOUNT\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n buyAmount: string;\n /**\n * DTO.WALLET.BALANCE.BUY_AMOUNT_USD\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n buyAmountInUsd: string;\n /**\n * DTO.WALLET.BALANCE.SELLS\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n sells: string;\n /**\n * DTO.WALLET.BALANCE.SELL_AMOUNT\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n sellAmount: string;\n /**\n * DTO.WALLET.BALANCE.SELL_AMOUNT_USD\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n sellAmountInUsd: string;\n /**\n * DTO.WALLET.BALANCE.AVERAGE_BUY_PRICE\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n averageBuyPriceInUsd: string;\n /**\n * DTO.WALLET.BALANCE.AVERAGE_SELL_PRICE\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n averageSellPriceInUsd: string;\n /**\n * DTO.WALLET.BALANCE.REALIZED_PROFIT_IN_USD\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n realizedProfitInUsd: string;\n /**\n * DTO.WALLET.BALANCE.REALIZED_PROFIT_RATIO\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n realizedProfitRatio: string;\n /**\n * DTO.WALLET.BALANCE.TOTAL_REALIZED_PROFIT\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n totalRealizedProfitInUsd: string;\n /**\n * DTO.WALLET.BALANCE.TOTAL_REALIZED_PROFIT_RATIO\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n totalRealizedProfitRatio: string;\n}\n\n/**\n * Check if a given object implements the WalletBalanceDetailDTO interface.\n */\nexport function instanceOfWalletBalanceDetailDTO(value: object): value is WalletBalanceDetailDTO {\n if (!('tokenAddress' in value) || value['tokenAddress'] === undefined) return false;\n if (!('amount' in value) || value['amount'] === undefined) return false;\n if (!('valueInUsd' in value) || value['valueInUsd'] === undefined) return false;\n if (!('name' in value) || value['name'] === undefined) return false;\n if (!('symbol' in value) || value['symbol'] === undefined) return false;\n if (!('imageUrl' in value) || value['imageUrl'] === undefined) return false;\n if (!('priceInSol' in value) || value['priceInSol'] === undefined) return false;\n if (!('priceInUsd' in value) || value['priceInUsd'] === undefined) return false;\n if (!('priceChangeRatioInUsd24h' in value) || value['priceChangeRatioInUsd24h'] === undefined) return false;\n if (!('unrealizedProfitInUsd' in value) || value['unrealizedProfitInUsd'] === undefined) return false;\n if (!('unrealizedProfitRatio' in value) || value['unrealizedProfitRatio'] === undefined) return false;\n if (!('openTime' in value) || value['openTime'] === undefined) return false;\n if (!('closeTime' in value) || value['closeTime'] === undefined) return false;\n if (!('buys' in value) || value['buys'] === undefined) return false;\n if (!('buyAmount' in value) || value['buyAmount'] === undefined) return false;\n if (!('buyAmountInUsd' in value) || value['buyAmountInUsd'] === undefined) return false;\n if (!('sells' in value) || value['sells'] === undefined) return false;\n if (!('sellAmount' in value) || value['sellAmount'] === undefined) return false;\n if (!('sellAmountInUsd' in value) || value['sellAmountInUsd'] === undefined) return false;\n if (!('averageBuyPriceInUsd' in value) || value['averageBuyPriceInUsd'] === undefined) return false;\n if (!('averageSellPriceInUsd' in value) || value['averageSellPriceInUsd'] === undefined) return false;\n if (!('realizedProfitInUsd' in value) || value['realizedProfitInUsd'] === undefined) return false;\n if (!('realizedProfitRatio' in value) || value['realizedProfitRatio'] === undefined) return false;\n if (!('totalRealizedProfitInUsd' in value) || value['totalRealizedProfitInUsd'] === undefined) return false;\n if (!('totalRealizedProfitRatio' in value) || value['totalRealizedProfitRatio'] === undefined) return false;\n return true;\n}\n\nexport function WalletBalanceDetailDTOFromJSON(json: any): WalletBalanceDetailDTO {\n return WalletBalanceDetailDTOFromJSONTyped(json, false);\n}\n\nexport function WalletBalanceDetailDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): WalletBalanceDetailDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'tokenAddress': json['tokenAddress'],\n 'amount': json['amount'],\n 'valueInUsd': json['valueInUsd'],\n 'name': json['name'],\n 'symbol': json['symbol'],\n 'imageUrl': json['imageUrl'],\n 'priceInSol': json['priceInSol'],\n 'priceInUsd': json['priceInUsd'],\n 'priceChangeRatioInUsd24h': json['priceChangeRatioInUsd24h'],\n 'unrealizedProfitInUsd': json['unrealizedProfitInUsd'],\n 'unrealizedProfitRatio': json['unrealizedProfitRatio'],\n 'openTime': json['openTime'],\n 'closeTime': json['closeTime'],\n 'buys': json['buys'],\n 'buyAmount': json['buyAmount'],\n 'buyAmountInUsd': json['buyAmountInUsd'],\n 'sells': json['sells'],\n 'sellAmount': json['sellAmount'],\n 'sellAmountInUsd': json['sellAmountInUsd'],\n 'averageBuyPriceInUsd': json['averageBuyPriceInUsd'],\n 'averageSellPriceInUsd': json['averageSellPriceInUsd'],\n 'realizedProfitInUsd': json['realizedProfitInUsd'],\n 'realizedProfitRatio': json['realizedProfitRatio'],\n 'totalRealizedProfitInUsd': json['totalRealizedProfitInUsd'],\n 'totalRealizedProfitRatio': json['totalRealizedProfitRatio'],\n };\n}\n\nexport function WalletBalanceDetailDTOToJSON(json: any): WalletBalanceDetailDTO {\n return WalletBalanceDetailDTOToJSONTyped(json, false);\n}\n\nexport function WalletBalanceDetailDTOToJSONTyped(value?: WalletBalanceDetailDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'tokenAddress': value['tokenAddress'],\n 'amount': value['amount'],\n 'valueInUsd': value['valueInUsd'],\n 'name': value['name'],\n 'symbol': value['symbol'],\n 'imageUrl': value['imageUrl'],\n 'priceInSol': value['priceInSol'],\n 'priceInUsd': value['priceInUsd'],\n 'priceChangeRatioInUsd24h': value['priceChangeRatioInUsd24h'],\n 'unrealizedProfitInUsd': value['unrealizedProfitInUsd'],\n 'unrealizedProfitRatio': value['unrealizedProfitRatio'],\n 'openTime': value['openTime'],\n 'closeTime': value['closeTime'],\n 'buys': value['buys'],\n 'buyAmount': value['buyAmount'],\n 'buyAmountInUsd': value['buyAmountInUsd'],\n 'sells': value['sells'],\n 'sellAmount': value['sellAmount'],\n 'sellAmountInUsd': value['sellAmountInUsd'],\n 'averageBuyPriceInUsd': value['averageBuyPriceInUsd'],\n 'averageSellPriceInUsd': value['averageSellPriceInUsd'],\n 'realizedProfitInUsd': value['realizedProfitInUsd'],\n 'realizedProfitRatio': value['realizedProfitRatio'],\n 'totalRealizedProfitInUsd': value['totalRealizedProfitInUsd'],\n 'totalRealizedProfitRatio': value['totalRealizedProfitRatio'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { WalletBalanceDetailDTO } from './WalletBalanceDetailDTO';\nimport {\n WalletBalanceDetailDTOFromJSON,\n WalletBalanceDetailDTOFromJSONTyped,\n WalletBalanceDetailDTOToJSON,\n WalletBalanceDetailDTOToJSONTyped,\n} from './WalletBalanceDetailDTO';\n\n/**\n * \n * @export\n * @interface WalletBalancesDTO\n */\nexport interface WalletBalancesDTO {\n /**\n * DTO.WALLET.BALANCES.TOTAL_BALANCES_IN_USD\n * @type {string}\n * @memberof WalletBalancesDTO\n */\n totalBalancesInUsd: string;\n /**\n * DTO.WALLET.BALANCES.TOTAL_PROFIT_IN_USD\n * @type {string}\n * @memberof WalletBalancesDTO\n */\n totalProfitInUsd: string;\n /**\n * DTO.WALLET.BALANCES.BALANCES.DETAIL\n * @type {Array<WalletBalanceDetailDTO>}\n * @memberof WalletBalancesDTO\n */\n balances: Array<WalletBalanceDetailDTO>;\n}\n\n/**\n * Check if a given object implements the WalletBalancesDTO interface.\n */\nexport function instanceOfWalletBalancesDTO(value: object): value is WalletBalancesDTO {\n if (!('totalBalancesInUsd' in value) || value['totalBalancesInUsd'] === undefined) return false;\n if (!('totalProfitInUsd' in value) || value['totalProfitInUsd'] === undefined) return false;\n if (!('balances' in value) || value['balances'] === undefined) return false;\n return true;\n}\n\nexport function WalletBalancesDTOFromJSON(json: any): WalletBalancesDTO {\n return WalletBalancesDTOFromJSONTyped(json, false);\n}\n\nexport function WalletBalancesDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): WalletBalancesDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'totalBalancesInUsd': json['totalBalancesInUsd'],\n 'totalProfitInUsd': json['totalProfitInUsd'],\n 'balances': ((json['balances'] as Array<any>).map(WalletBalanceDetailDTOFromJSON)),\n };\n}\n\nexport function WalletBalancesDTOToJSON(json: any): WalletBalancesDTO {\n return WalletBalancesDTOToJSONTyped(json, false);\n}\n\nexport function WalletBalancesDTOToJSONTyped(value?: WalletBalancesDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'totalBalancesInUsd': value['totalBalancesInUsd'],\n 'totalProfitInUsd': value['totalProfitInUsd'],\n 'balances': ((value['balances'] as Array<any>).map(WalletBalanceDetailDTOToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface WalletPnlDTO\n */\nexport interface WalletPnlDTO {\n /**\n * DTO.WALLET.PNL.ID\n * @type {number}\n * @memberof WalletPnlDTO\n */\n id: number;\n /**\n * DTO.WALLET.PNL.CHAIN\n * @type {string}\n * @memberof WalletPnlDTO\n */\n chain: string;\n /**\n * DTO.WALLET.PNL.WALLET_ADDRESS\n * @type {string}\n * @memberof WalletPnlDTO\n */\n walletAddress: string;\n /**\n * DTO.WALLET.PNL.TOKEN_ADDRESS\n * @type {string}\n * @memberof WalletPnlDTO\n */\n tokenAddress: string;\n /**\n * DTO.WALLET.PNL.TOKEN_PRICE\n * @type {string}\n * @memberof WalletPnlDTO\n */\n tokenPriceInUsd: string;\n /**\n * DTO.WALLET.PNL.OPEN_TIME\n * @type {number}\n * @memberof WalletPnlDTO\n */\n openTime: number;\n /**\n * DTO.WALLET.PNL.CLOSE_TIME\n * @type {number}\n * @memberof WalletPnlDTO\n */\n closeTime: number;\n /**\n * DTO.WALLET.PNL.LAST_TIME\n * @type {number}\n * @memberof WalletPnlDTO\n */\n lastTime: number;\n /**\n * DTO.WALLET.PNL.BALANCE\n * @type {string}\n * @memberof WalletPnlDTO\n */\n balance: string;\n /**\n * DTO.WALLET.PNL.BUY_AMOUNT\n * @type {string}\n * @memberof WalletPnlDTO\n */\n buyAmount: string;\n /**\n * DTO.WALLET.PNL.BUY_AMOUNT_USD\n * @type {string}\n * @memberof WalletPnlDTO\n */\n buyAmountInUsd: string;\n /**\n * DTO.WALLET.PNL.BUYS\n * @type {string}\n * @memberof WalletPnlDTO\n */\n buys: string;\n /**\n * DTO.WALLET.PNL.SELL_AMOUNT\n * @type {string}\n * @memberof WalletPnlDTO\n */\n sellAmount: string;\n /**\n * DTO.WALLET.PNL.SELL_AMOUNT_USD\n * @type {string}\n * @memberof WalletPnlDTO\n */\n sellAmountInUsd: string;\n /**\n * DTO.WALLET.PNL.SELLS\n * @type {string}\n * @memberof WalletPnlDTO\n */\n sells: string;\n /**\n * DTO.WALLET.PNL.AVERAGE_BUY_PRICE\n * @type {string}\n * @memberof WalletPnlDTO\n */\n averageBuyPriceInUsd: string;\n /**\n * DTO.WALLET.PNL.AVERAGE_SELL_PRICE\n * @type {string}\n * @memberof WalletPnlDTO\n */\n averageSellPriceInUsd: string;\n /**\n * DTO.WALLET.PNL.UNREALIZED_PROFIT\n * @type {string}\n * @memberof WalletPnlDTO\n */\n unrealizedProfitInUsd: string;\n /**\n * DTO.WALLET.PNL.UNREALIZED_PROFIT_RATIO\n * @type {string}\n * @memberof WalletPnlDTO\n */\n unrealizedProfitRatio: string;\n /**\n * DTO.WALLET.PNL.REALIZED_PROFIT\n * @type {string}\n * @memberof WalletPnlDTO\n */\n realizedProfitInUsd: string;\n /**\n * DTO.WALLET.PNL.REALIZED_PROFIT_RATIO\n * @type {string}\n * @memberof WalletPnlDTO\n */\n realizedProfitRatio: string;\n /**\n * DTO.WALLET.PNL.TOTAL_REALIZED_PROFIT\n * @type {string}\n * @memberof WalletPnlDTO\n */\n totalRealizedProfitInUsd: string;\n /**\n * DTO.WALLET.PNL.TOTAL_REALIZED_PROFIT_RATIO\n * @type {string}\n * @memberof WalletPnlDTO\n */\n totalRealizedProfitRatio: string;\n}\n\n/**\n * Check if a given object implements the WalletPnlDTO interface.\n */\nexport function instanceOfWalletPnlDTO(value: object): value is WalletPnlDTO {\n if (!('id' in value) || value['id'] === undefined) return false;\n if (!('chain' in value) || value['chain'] === undefined) return false;\n if (!('walletAddress' in value) || value['walletAddress'] === undefined) return false;\n if (!('tokenAddress' in value) || value['tokenAddress'] === undefined) return false;\n if (!('tokenPriceInUsd' in value) || value['tokenPriceInUsd'] === undefined) return false;\n if (!('openTime' in value) || value['openTime'] === undefined) return false;\n if (!('closeTime' in value) || value['closeTime'] === undefined) return false;\n if (!('lastTime' in value) || value['lastTime'] === undefined) return false;\n if (!('balance' in value) || value['balance'] === undefined) return false;\n if (!('buyAmount' in value) || value['buyAmount'] === undefined) return false;\n if (!('buyAmountInUsd' in value) || value['buyAmountInUsd'] === undefined) return false;\n if (!('buys' in value) || value['buys'] === undefined) return false;\n if (!('sellAmount' in value) || value['sellAmount'] === undefined) return false;\n if (!('sellAmountInUsd' in value) || value['sellAmountInUsd'] === undefined) return false;\n if (!('sells' in value) || value['sells'] === undefined) return false;\n if (!('averageBuyPriceInUsd' in value) || value['averageBuyPriceInUsd'] === undefined) return false;\n if (!('averageSellPriceInUsd' in value) || value['averageSellPriceInUsd'] === undefined) return false;\n if (!('unrealizedProfitInUsd' in value) || value['unrealizedProfitInUsd'] === undefined) return false;\n if (!('unrealizedProfitRatio' in value) || value['unrealizedProfitRatio'] === undefined) return false;\n if (!('realizedProfitInUsd' in value) || value['realizedProfitInUsd'] === undefined) return false;\n if (!('realizedProfitRatio' in value) || value['realizedProfitRatio'] === undefined) return false;\n if (!('totalRealizedProfitInUsd' in value) || value['totalRealizedProfitInUsd'] === undefined) return false;\n if (!('totalRealizedProfitRatio' in value) || value['totalRealizedProfitRatio'] === undefined) return false;\n return true;\n}\n\nexport function WalletPnlDTOFromJSON(json: any): WalletPnlDTO {\n return WalletPnlDTOFromJSONTyped(json, false);\n}\n\nexport function WalletPnlDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): WalletPnlDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'id': json['id'],\n 'chain': json['chain'],\n 'walletAddress': json['walletAddress'],\n 'tokenAddress': json['tokenAddress'],\n 'tokenPriceInUsd': json['tokenPriceInUsd'],\n 'openTime': json['openTime'],\n 'closeTime': json['closeTime'],\n 'lastTime': json['lastTime'],\n 'balance': json['balance'],\n 'buyAmount': json['buyAmount'],\n 'buyAmountInUsd': json['buyAmountInUsd'],\n 'buys': json['buys'],\n 'sellAmount': json['sellAmount'],\n 'sellAmountInUsd': json['sellAmountInUsd'],\n 'sells': json['sells'],\n 'averageBuyPriceInUsd': json['averageBuyPriceInUsd'],\n 'averageSellPriceInUsd': json['averageSellPriceInUsd'],\n 'unrealizedProfitInUsd': json['unrealizedProfitInUsd'],\n 'unrealizedProfitRatio': json['unrealizedProfitRatio'],\n 'realizedProfitInUsd': json['realizedProfitInUsd'],\n 'realizedProfitRatio': json['realizedProfitRatio'],\n 'totalRealizedProfitInUsd': json['totalRealizedProfitInUsd'],\n 'totalRealizedProfitRatio': json['totalRealizedProfitRatio'],\n };\n}\n\nexport function WalletPnlDTOToJSON(json: any): WalletPnlDTO {\n return WalletPnlDTOToJSONTyped(json, false);\n}\n\nexport function WalletPnlDTOToJSONTyped(value?: WalletPnlDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'id': value['id'],\n 'chain': value['chain'],\n 'walletAddress': value['walletAddress'],\n 'tokenAddress': value['tokenAddress'],\n 'tokenPriceInUsd': value['tokenPriceInUsd'],\n 'openTime': value['openTime'],\n 'closeTime': value['closeTime'],\n 'lastTime': value['lastTime'],\n 'balance': value['balance'],\n 'buyAmount': value['buyAmount'],\n 'buyAmountInUsd': value['buyAmountInUsd'],\n 'buys': value['buys'],\n 'sellAmount': value['sellAmount'],\n 'sellAmountInUsd': value['sellAmountInUsd'],\n 'sells': value['sells'],\n 'averageBuyPriceInUsd': value['averageBuyPriceInUsd'],\n 'averageSellPriceInUsd': value['averageSellPriceInUsd'],\n 'unrealizedProfitInUsd': value['unrealizedProfitInUsd'],\n 'unrealizedProfitRatio': value['unrealizedProfitRatio'],\n 'realizedProfitInUsd': value['realizedProfitInUsd'],\n 'realizedProfitRatio': value['realizedProfitRatio'],\n 'totalRealizedProfitInUsd': value['totalRealizedProfitInUsd'],\n 'totalRealizedProfitRatio': value['totalRealizedProfitRatio'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { ChainalysisAddressIdentification } from './ChainalysisAddressIdentification';\nimport {\n ChainalysisAddressIdentificationFromJSON,\n ChainalysisAddressIdentificationFromJSONTyped,\n ChainalysisAddressIdentificationToJSON,\n ChainalysisAddressIdentificationToJSONTyped,\n} from './ChainalysisAddressIdentification';\n\n/**\n * \n * @export\n * @interface WithdrawalAddressIdentificationsResponseDTO\n */\nexport interface WithdrawalAddressIdentificationsResponseDTO {\n /**\n * DTO.KYT.WITHDRAWAL_ADDRESS_IDENTIFICATIONS_RESPONSE.CHAINALYSIS_IDENTIFICATIONS\n * @type {Array<ChainalysisAddressIdentification>}\n * @memberof WithdrawalAddressIdentificationsResponseDTO\n */\n chainalysisIdentifications: Array<ChainalysisAddressIdentification>;\n /**\n * DTO.KYT.WITHDRAWAL_ADDRESS_IDENTIFICATIONS_RESPONSE.CUSTOM_ADDRESSES\n * @type {Array<string>}\n * @memberof WithdrawalAddressIdentificationsResponseDTO\n */\n customAddresses: Array<string>;\n}\n\n/**\n * Check if a given object implements the WithdrawalAddressIdentificationsResponseDTO interface.\n */\nexport function instanceOfWithdrawalAddressIdentificationsResponseDTO(value: object): value is WithdrawalAddressIdentificationsResponseDTO {\n if (!('chainalysisIdentifications' in value) || value['chainalysisIdentifications'] === undefined) return false;\n if (!('customAddresses' in value) || value['customAddresses'] === undefined) return false;\n return true;\n}\n\nexport function WithdrawalAddressIdentificationsResponseDTOFromJSON(json: any): WithdrawalAddressIdentificationsResponseDTO {\n return WithdrawalAddressIdentificationsResponseDTOFromJSONTyped(json, false);\n}\n\nexport function WithdrawalAddressIdentificationsResponseDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): WithdrawalAddressIdentificationsResponseDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'chainalysisIdentifications': ((json['chainalysisIdentifications'] as Array<any>).map(ChainalysisAddressIdentificationFromJSON)),\n 'customAddresses': json['customAddresses'],\n };\n}\n\nexport function WithdrawalAddressIdentificationsResponseDTOToJSON(json: any): WithdrawalAddressIdentificationsResponseDTO {\n return WithdrawalAddressIdentificationsResponseDTOToJSONTyped(json, false);\n}\n\nexport function WithdrawalAddressIdentificationsResponseDTOToJSONTyped(value?: WithdrawalAddressIdentificationsResponseDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'chainalysisIdentifications': ((value['chainalysisIdentifications'] as Array<any>).map(ChainalysisAddressIdentificationToJSON)),\n 'customAddresses': value['customAddresses'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface WithdrawalBaseResponseDTO\n */\nexport interface WithdrawalBaseResponseDTO {\n /**\n * DTO.KYT.WITHDRAWAL_BASE_RESPONSE.ASSET\n * @type {string}\n * @memberof WithdrawalBaseResponseDTO\n */\n asset: string;\n /**\n * DTO.KYT.WITHDRAWAL_BASE_RESPONSE.ASSET_ID\n * @type {string}\n * @memberof WithdrawalBaseResponseDTO\n */\n assetId: string;\n /**\n * DTO.KYT.WITHDRAWAL_BASE_RESPONSE.NETWORK\n * @type {string}\n * @memberof WithdrawalBaseResponseDTO\n */\n network: string;\n /**\n * DTO.KYT.WITHDRAWAL_BASE_RESPONSE.ADDRESS\n * @type {string}\n * @memberof WithdrawalBaseResponseDTO\n */\n address: string;\n /**\n * DTO.KYT.WITHDRAWAL_BASE_RESPONSE.MEMO\n * @type {string}\n * @memberof WithdrawalBaseResponseDTO\n */\n memo: string;\n /**\n * DTO.KYT.WITHDRAWAL_BASE_RESPONSE.ATTEMPT_IDENTIFIER\n * @type {string}\n * @memberof WithdrawalBaseResponseDTO\n */\n attemptIdentifier: string;\n /**\n * DTO.KYT.WITHDRAWAL_BASE_RESPONSE.ASSET_AMOUNT\n * @type {string}\n * @memberof WithdrawalBaseResponseDTO\n */\n assetAmount: string;\n /**\n * DTO.KYT.WITHDRAWAL_BASE_RESPONSE.EXTERNAL_ID\n * @type {string}\n * @memberof WithdrawalBaseResponseDTO\n */\n externalId: string;\n /**\n * DTO.KYT.WITHDRAWAL_BASE_RESPONSE.USD_AMOUNT\n * @type {string}\n * @memberof WithdrawalBaseResponseDTO\n */\n usdAmount: string;\n /**\n * DTO.KYT.WITHDRAWAL_BASE_RESPONSE.UPDATED_AT\n * @type {string}\n * @memberof WithdrawalBaseResponseDTO\n */\n updatedAt: string;\n}\n\n/**\n * Check if a given object implements the WithdrawalBaseResponseDTO interface.\n */\nexport function instanceOfWithdrawalBaseResponseDTO(value: object): value is WithdrawalBaseResponseDTO {\n if (!('asset' in value) || value['asset'] === undefined) return false;\n if (!('assetId' in value) || value['assetId'] === undefined) return false;\n if (!('network' in value) || value['network'] === undefined) return false;\n if (!('address' in value) || value['address'] === undefined) return false;\n if (!('memo' in value) || value['memo'] === undefined) return false;\n if (!('attemptIdentifier' in value) || value['attemptIdentifier'] === undefined) return false;\n if (!('assetAmount' in value) || value['assetAmount'] === undefined) return false;\n if (!('externalId' in value) || value['externalId'] === undefined) return false;\n if (!('usdAmount' in value) || value['usdAmount'] === undefined) return false;\n if (!('updatedAt' in value) || value['updatedAt'] === undefined) return false;\n return true;\n}\n\nexport function WithdrawalBaseResponseDTOFromJSON(json: any): WithdrawalBaseResponseDTO {\n return WithdrawalBaseResponseDTOFromJSONTyped(json, false);\n}\n\nexport function WithdrawalBaseResponseDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): WithdrawalBaseResponseDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'asset': json['asset'],\n 'assetId': json['assetId'],\n 'network': json['network'],\n 'address': json['address'],\n 'memo': json['memo'],\n 'attemptIdentifier': json['attemptIdentifier'],\n 'assetAmount': json['assetAmount'],\n 'externalId': json['externalId'],\n 'usdAmount': json['usdAmount'],\n 'updatedAt': json['updatedAt'],\n };\n}\n\nexport function WithdrawalBaseResponseDTOToJSON(json: any): WithdrawalBaseResponseDTO {\n return WithdrawalBaseResponseDTOToJSONTyped(json, false);\n}\n\nexport function WithdrawalBaseResponseDTOToJSONTyped(value?: WithdrawalBaseResponseDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'asset': value['asset'],\n 'assetId': value['assetId'],\n 'network': value['network'],\n 'address': value['address'],\n 'memo': value['memo'],\n 'attemptIdentifier': value['attemptIdentifier'],\n 'assetAmount': value['assetAmount'],\n 'externalId': value['externalId'],\n 'usdAmount': value['usdAmount'],\n 'updatedAt': value['updatedAt'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { AlteryaIdentification } from './AlteryaIdentification';\nimport {\n AlteryaIdentificationFromJSON,\n AlteryaIdentificationFromJSONTyped,\n AlteryaIdentificationToJSON,\n AlteryaIdentificationToJSONTyped,\n} from './AlteryaIdentification';\n\n/**\n * \n * @export\n * @interface WithdrawalFraudAssessmentResponseDTO\n */\nexport interface WithdrawalFraudAssessmentResponseDTO {\n /**\n * DTO.KYT.WITHDRAWAL_FRAUD_ASSESSMENT_RESPONSE.ALTERYA_IDENTIFICATIONS\n * @type {Array<AlteryaIdentification>}\n * @memberof WithdrawalFraudAssessmentResponseDTO\n */\n alteryaIdentifications: Array<AlteryaIdentification>;\n}\n\n/**\n * Check if a given object implements the WithdrawalFraudAssessmentResponseDTO interface.\n */\nexport function instanceOfWithdrawalFraudAssessmentResponseDTO(value: object): value is WithdrawalFraudAssessmentResponseDTO {\n if (!('alteryaIdentifications' in value) || value['alteryaIdentifications'] === undefined) return false;\n return true;\n}\n\nexport function WithdrawalFraudAssessmentResponseDTOFromJSON(json: any): WithdrawalFraudAssessmentResponseDTO {\n return WithdrawalFraudAssessmentResponseDTOFromJSONTyped(json, false);\n}\n\nexport function WithdrawalFraudAssessmentResponseDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): WithdrawalFraudAssessmentResponseDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'alteryaIdentifications': ((json['alteryaIdentifications'] as Array<any>).map(AlteryaIdentificationFromJSON)),\n };\n}\n\nexport function WithdrawalFraudAssessmentResponseDTOToJSON(json: any): WithdrawalFraudAssessmentResponseDTO {\n return WithdrawalFraudAssessmentResponseDTOToJSONTyped(json, false);\n}\n\nexport function WithdrawalFraudAssessmentResponseDTOToJSONTyped(value?: WithdrawalFraudAssessmentResponseDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'alteryaIdentifications': ((value['alteryaIdentifications'] as Array<any>).map(AlteryaIdentificationToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n BlockchainDTO,\n BlockchainLatestBlockDTO,\n ChainSymbol,\n} from '../models/index';\nimport {\n BlockchainDTOFromJSON,\n BlockchainDTOToJSON,\n BlockchainLatestBlockDTOFromJSON,\n BlockchainLatestBlockDTOToJSON,\n ChainSymbolFromJSON,\n ChainSymbolToJSON,\n} from '../models/index';\n\nexport interface GetLatestBlockRequest {\n chain: ChainSymbol;\n}\n\n/**\n * \n */\nexport class BlockchainApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.GET_LATEST_BLOCK.DESCRIPTION\n * CONTROLLER.GET_LATEST_BLOCK.SUMMARY\n */\n async getLatestBlockRaw(requestParameters: GetLatestBlockRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<BlockchainLatestBlockDTO>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getLatestBlock().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/blockchain/{chain}/latest_block`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => BlockchainLatestBlockDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.GET_LATEST_BLOCK.DESCRIPTION\n * CONTROLLER.GET_LATEST_BLOCK.SUMMARY\n */\n async getLatestBlock(requestParameters: GetLatestBlockRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<BlockchainLatestBlockDTO> {\n const response = await this.getLatestBlockRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.GET_SUPPORTED_BLOCKCHAINS.DESCRIPTION\n * CONTROLLER.GET_SUPPORTED_BLOCKCHAINS.SUMMARY\n */\n async getSupportedBlockchainsRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<BlockchainDTO>>> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/blockchain`;\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(BlockchainDTOFromJSON));\n }\n\n /**\n * CONTROLLER.GET_SUPPORTED_BLOCKCHAINS.DESCRIPTION\n * CONTROLLER.GET_SUPPORTED_BLOCKCHAINS.SUMMARY\n */\n async getSupportedBlockchains(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<BlockchainDTO>> {\n const response = await this.getSupportedBlockchainsRaw(initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n MoonshotCreateTokenInput,\n MoonshotCreateTokenReply,\n MoonshotSubmitCreateToken200Response,\n MoonshotSubmitCreateTokenInput,\n} from '../models/index';\nimport {\n MoonshotCreateTokenInputFromJSON,\n MoonshotCreateTokenInputToJSON,\n MoonshotCreateTokenReplyFromJSON,\n MoonshotCreateTokenReplyToJSON,\n MoonshotSubmitCreateToken200ResponseFromJSON,\n MoonshotSubmitCreateToken200ResponseToJSON,\n MoonshotSubmitCreateTokenInputFromJSON,\n MoonshotSubmitCreateTokenInputToJSON,\n} from '../models/index';\n\nexport interface MoonshotCreateTokenRequest {\n moonshotCreateTokenInput: MoonshotCreateTokenInput;\n}\n\nexport interface MoonshotSubmitCreateTokenRequest {\n moonshotSubmitCreateTokenInput: MoonshotSubmitCreateTokenInput;\n}\n\n/**\n * \n */\nexport class DefiSolanaMoonshotApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.MOONSHOT.CREATE_TOKEN.DESCRIPTION\n * CONTROLLER.MOONSHOT.CREATE_TOKEN.SUMMARY\n */\n async moonshotCreateTokenRaw(requestParameters: MoonshotCreateTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<MoonshotCreateTokenReply>> {\n if (requestParameters['moonshotCreateTokenInput'] == null) {\n throw new runtime.RequiredError(\n 'moonshotCreateTokenInput',\n 'Required parameter \"moonshotCreateTokenInput\" was null or undefined when calling moonshotCreateToken().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/solana/moonshot/create`;\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: MoonshotCreateTokenInputToJSON(requestParameters['moonshotCreateTokenInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => MoonshotCreateTokenReplyFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.MOONSHOT.CREATE_TOKEN.DESCRIPTION\n * CONTROLLER.MOONSHOT.CREATE_TOKEN.SUMMARY\n */\n async moonshotCreateToken(requestParameters: MoonshotCreateTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<MoonshotCreateTokenReply> {\n const response = await this.moonshotCreateTokenRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.MOONSHOT.SUBMIT_CREATE_TOKEN.DESCRIPTION\n * CONTROLLER.MOONSHOT.SUBMIT_CREATE_TOKEN.SUMMARY\n */\n async moonshotSubmitCreateTokenRaw(requestParameters: MoonshotSubmitCreateTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<MoonshotSubmitCreateToken200Response>> {\n if (requestParameters['moonshotSubmitCreateTokenInput'] == null) {\n throw new runtime.RequiredError(\n 'moonshotSubmitCreateTokenInput',\n 'Required parameter \"moonshotSubmitCreateTokenInput\" was null or undefined when calling moonshotSubmitCreateToken().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/solana/moonshot/submitCreateToken`;\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: MoonshotSubmitCreateTokenInputToJSON(requestParameters['moonshotSubmitCreateTokenInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => MoonshotSubmitCreateToken200ResponseFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.MOONSHOT.SUBMIT_CREATE_TOKEN.DESCRIPTION\n * CONTROLLER.MOONSHOT.SUBMIT_CREATE_TOKEN.SUMMARY\n */\n async moonshotSubmitCreateToken(requestParameters: MoonshotSubmitCreateTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<MoonshotSubmitCreateToken200Response> {\n const response = await this.moonshotSubmitCreateTokenRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n PumpCreateTokenInput,\n PumpCreateTokenReply,\n} from '../models/index';\nimport {\n PumpCreateTokenInputFromJSON,\n PumpCreateTokenInputToJSON,\n PumpCreateTokenReplyFromJSON,\n PumpCreateTokenReplyToJSON,\n} from '../models/index';\n\nexport interface PumpfunCreateTokenRequest {\n pumpCreateTokenInput: PumpCreateTokenInput;\n}\n\n/**\n * \n */\nexport class DefiSolanaPumpfunApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.PUMPFUN.CREATE_TOKEN.DESCRIPTION\n * CONTROLLER.PUMPFUN.CREATE_TOKEN.SUMMARY\n */\n async pumpfunCreateTokenRaw(requestParameters: PumpfunCreateTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PumpCreateTokenReply>> {\n if (requestParameters['pumpCreateTokenInput'] == null) {\n throw new runtime.RequiredError(\n 'pumpCreateTokenInput',\n 'Required parameter \"pumpCreateTokenInput\" was null or undefined when calling pumpfunCreateToken().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/solana/pumpfun/create`;\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: PumpCreateTokenInputToJSON(requestParameters['pumpCreateTokenInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => PumpCreateTokenReplyFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.PUMPFUN.CREATE_TOKEN.DESCRIPTION\n * CONTROLLER.PUMPFUN.CREATE_TOKEN.SUMMARY\n */\n async pumpfunCreateToken(requestParameters: PumpfunCreateTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PumpCreateTokenReply> {\n const response = await this.pumpfunCreateTokenRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ChainSymbol,\n CreateTokenInput,\n CreateTokenReply,\n DexPage,\n QuoteResponse,\n SwapInput,\n SwapReply,\n SwapRouteInput,\n SwapRouteResponse,\n} from '../models/index';\nimport {\n ChainSymbolFromJSON,\n ChainSymbolToJSON,\n CreateTokenInputFromJSON,\n CreateTokenInputToJSON,\n CreateTokenReplyFromJSON,\n CreateTokenReplyToJSON,\n DexPageFromJSON,\n DexPageToJSON,\n QuoteResponseFromJSON,\n QuoteResponseToJSON,\n SwapInputFromJSON,\n SwapInputToJSON,\n SwapReplyFromJSON,\n SwapReplyToJSON,\n SwapRouteInputFromJSON,\n SwapRouteInputToJSON,\n SwapRouteResponseFromJSON,\n SwapRouteResponseToJSON,\n} from '../models/index';\n\nexport interface CreateTokenRequest {\n chain: ChainSymbol;\n createTokenInput: CreateTokenInput;\n}\n\nexport interface ListDexRequest {\n chains?: Array<string>;\n limit?: number;\n dexProgram?: string;\n}\n\nexport interface QuoteRequest {\n chain: ChainSymbol;\n dex: QuoteDexEnum;\n amount: string;\n inputMint: string;\n outputMint: string;\n exactIn: boolean;\n slippage: number;\n}\n\nexport interface RouteRequest {\n chain: ChainSymbol;\n swapRouteInput: SwapRouteInput;\n}\n\nexport interface SwapRequest {\n chain: ChainSymbol;\n swapInput: SwapInput;\n}\n\n/**\n * \n */\nexport class DexApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.DEX.CREATE.DESCRIPTION\n * CONTROLLER.DEX.CREATE.SUMMARY\n */\n async createTokenRaw(requestParameters: CreateTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CreateTokenReply>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling createToken().'\n );\n }\n\n if (requestParameters['createTokenInput'] == null) {\n throw new runtime.RequiredError(\n 'createTokenInput',\n 'Required parameter \"createTokenInput\" was null or undefined when calling createToken().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/dex/{chain}/create`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: CreateTokenInputToJSON(requestParameters['createTokenInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => CreateTokenReplyFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.DEX.CREATE.DESCRIPTION\n * CONTROLLER.DEX.CREATE.SUMMARY\n */\n async createToken(requestParameters: CreateTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CreateTokenReply> {\n const response = await this.createTokenRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.DEX.LIST.DESCRIPTION\n * CONTROLLER.DEX.LIST.SUMMARY\n */\n async listDexRaw(requestParameters: ListDexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<DexPage>> {\n const queryParameters: any = {};\n\n if (requestParameters['chains'] != null) {\n queryParameters['chains'] = requestParameters['chains'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['dexProgram'] != null) {\n queryParameters['dexProgram'] = requestParameters['dexProgram'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/dex`;\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => DexPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.DEX.LIST.DESCRIPTION\n * CONTROLLER.DEX.LIST.SUMMARY\n */\n async listDex(requestParameters: ListDexRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<DexPage> {\n const response = await this.listDexRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.DEX.QUOTE.DESCRIPTION\n * CONTROLLER.DEX.QUOTE.SUMMARY\n */\n async quoteRaw(requestParameters: QuoteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<QuoteResponse>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling quote().'\n );\n }\n\n if (requestParameters['dex'] == null) {\n throw new runtime.RequiredError(\n 'dex',\n 'Required parameter \"dex\" was null or undefined when calling quote().'\n );\n }\n\n if (requestParameters['amount'] == null) {\n throw new runtime.RequiredError(\n 'amount',\n 'Required parameter \"amount\" was null or undefined when calling quote().'\n );\n }\n\n if (requestParameters['inputMint'] == null) {\n throw new runtime.RequiredError(\n 'inputMint',\n 'Required parameter \"inputMint\" was null or undefined when calling quote().'\n );\n }\n\n if (requestParameters['outputMint'] == null) {\n throw new runtime.RequiredError(\n 'outputMint',\n 'Required parameter \"outputMint\" was null or undefined when calling quote().'\n );\n }\n\n if (requestParameters['exactIn'] == null) {\n throw new runtime.RequiredError(\n 'exactIn',\n 'Required parameter \"exactIn\" was null or undefined when calling quote().'\n );\n }\n\n if (requestParameters['slippage'] == null) {\n throw new runtime.RequiredError(\n 'slippage',\n 'Required parameter \"slippage\" was null or undefined when calling quote().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['dex'] != null) {\n queryParameters['dex'] = requestParameters['dex'];\n }\n\n if (requestParameters['amount'] != null) {\n queryParameters['amount'] = requestParameters['amount'];\n }\n\n if (requestParameters['inputMint'] != null) {\n queryParameters['inputMint'] = requestParameters['inputMint'];\n }\n\n if (requestParameters['outputMint'] != null) {\n queryParameters['outputMint'] = requestParameters['outputMint'];\n }\n\n if (requestParameters['exactIn'] != null) {\n queryParameters['exactIn'] = requestParameters['exactIn'];\n }\n\n if (requestParameters['slippage'] != null) {\n queryParameters['slippage'] = requestParameters['slippage'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/dex/{chain}/quote`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => QuoteResponseFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.DEX.QUOTE.DESCRIPTION\n * CONTROLLER.DEX.QUOTE.SUMMARY\n */\n async quote(requestParameters: QuoteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<QuoteResponse> {\n const response = await this.quoteRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.DEX.ROUTE.DESCRIPTION\n * CONTROLLER.DEX.ROUTE.SUMMARY\n */\n async routeRaw(requestParameters: RouteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SwapRouteResponse>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling route().'\n );\n }\n\n if (requestParameters['swapRouteInput'] == null) {\n throw new runtime.RequiredError(\n 'swapRouteInput',\n 'Required parameter \"swapRouteInput\" was null or undefined when calling route().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/dex/{chain}/route`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: SwapRouteInputToJSON(requestParameters['swapRouteInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SwapRouteResponseFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.DEX.ROUTE.DESCRIPTION\n * CONTROLLER.DEX.ROUTE.SUMMARY\n */\n async route(requestParameters: RouteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SwapRouteResponse> {\n const response = await this.routeRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.DEX.SWAP.DESCRIPTION\n * CONTROLLER.DEX.SWAP.SUMMARY\n */\n async swapRaw(requestParameters: SwapRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SwapReply>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling swap().'\n );\n }\n\n if (requestParameters['swapInput'] == null) {\n throw new runtime.RequiredError(\n 'swapInput',\n 'Required parameter \"swapInput\" was null or undefined when calling swap().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/dex/{chain}/swap`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: SwapInputToJSON(requestParameters['swapInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SwapReplyFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.DEX.SWAP.DESCRIPTION\n * CONTROLLER.DEX.SWAP.SUMMARY\n */\n async swap(requestParameters: SwapRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SwapReply> {\n const response = await this.swapRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n\n/**\n * @export\n */\nexport const QuoteDexEnum = {\n Raydium: 'raydium',\n Pumpfun: 'pumpfun'\n} as const;\nexport type QuoteDexEnum = typeof QuoteDexEnum[keyof typeof QuoteDexEnum];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ChainSymbol,\n DexPoolDTO,\n} from '../models/index';\nimport {\n ChainSymbolFromJSON,\n ChainSymbolToJSON,\n DexPoolDTOFromJSON,\n DexPoolDTOToJSON,\n} from '../models/index';\n\nexport interface GetDexpoolRequest {\n chain: ChainSymbol;\n poolAddress: string;\n}\n\n/**\n * \n */\nexport class DexPoolApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.DEXPOOL.GET.DESCRIPTION\n * CONTROLLER.DEXPOOL.GET.SUMMARY\n */\n async getDexpoolRaw(requestParameters: GetDexpoolRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<DexPoolDTO>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getDexpool().'\n );\n }\n\n if (requestParameters['poolAddress'] == null) {\n throw new runtime.RequiredError(\n 'poolAddress',\n 'Required parameter \"poolAddress\" was null or undefined when calling getDexpool().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/dexpools/{chain}/{poolAddress}`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"poolAddress\"}}`, encodeURIComponent(String(requestParameters['poolAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => DexPoolDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.DEXPOOL.GET.DESCRIPTION\n * CONTROLLER.DEXPOOL.GET.SUMMARY\n */\n async getDexpool(requestParameters: GetDexpoolRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<DexPoolDTO> {\n const response = await this.getDexpoolRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n CreateEndpointInput,\n EndpointListResponse,\n EndpointOperationResponse,\n EndpointResponse,\n EndpointSecretResponse,\n UpdateEndpointInput,\n} from '../models/index';\nimport {\n CreateEndpointInputFromJSON,\n CreateEndpointInputToJSON,\n EndpointListResponseFromJSON,\n EndpointListResponseToJSON,\n EndpointOperationResponseFromJSON,\n EndpointOperationResponseToJSON,\n EndpointResponseFromJSON,\n EndpointResponseToJSON,\n EndpointSecretResponseFromJSON,\n EndpointSecretResponseToJSON,\n UpdateEndpointInputFromJSON,\n UpdateEndpointInputToJSON,\n} from '../models/index';\n\nexport interface CreateEndpointRequest {\n createEndpointInput: CreateEndpointInput;\n}\n\nexport interface DeleteEndpointRequest {\n id: string;\n}\n\nexport interface GetEndpointRequest {\n id: string;\n}\n\nexport interface GetEndpointSecretRequest {\n id: string;\n}\n\nexport interface ListEndpointsRequest {\n limit?: number;\n iterator?: string;\n order?: ListEndpointsOrderEnum;\n}\n\nexport interface RotateEndpointSecretRequest {\n id: string;\n}\n\nexport interface UpdateEndpointRequest {\n updateEndpointInput: UpdateEndpointInput;\n}\n\n/**\n * \n */\nexport class EndpointApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.ENDPOINT.CREATE.DESCRIPTION\n * CONTROLLER.ENDPOINT.CREATE.SUMMARY\n */\n async createEndpointRaw(requestParameters: CreateEndpointRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<EndpointResponse>> {\n if (requestParameters['createEndpointInput'] == null) {\n throw new runtime.RequiredError(\n 'createEndpointInput',\n 'Required parameter \"createEndpointInput\" was null or undefined when calling createEndpoint().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/webhook/endpoint`;\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: CreateEndpointInputToJSON(requestParameters['createEndpointInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => EndpointResponseFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.ENDPOINT.CREATE.DESCRIPTION\n * CONTROLLER.ENDPOINT.CREATE.SUMMARY\n */\n async createEndpoint(requestParameters: CreateEndpointRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<EndpointResponse> {\n const response = await this.createEndpointRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.ENDPOINT.DELETE.DESCRIPTION\n * CONTROLLER.ENDPOINT.DELETE.SUMMARY\n */\n async deleteEndpointRaw(requestParameters: DeleteEndpointRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<EndpointOperationResponse>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling deleteEndpoint().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/webhook/endpoint/{id}`;\n urlPath = urlPath.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => EndpointOperationResponseFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.ENDPOINT.DELETE.DESCRIPTION\n * CONTROLLER.ENDPOINT.DELETE.SUMMARY\n */\n async deleteEndpoint(requestParameters: DeleteEndpointRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<EndpointOperationResponse> {\n const response = await this.deleteEndpointRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.ENDPOINT.GET.DESCRIPTION\n * CONTROLLER.ENDPOINT.GET.SUMMARY\n */\n async getEndpointRaw(requestParameters: GetEndpointRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<EndpointResponse>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling getEndpoint().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/webhook/endpoint/{id}`;\n urlPath = urlPath.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => EndpointResponseFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.ENDPOINT.GET.DESCRIPTION\n * CONTROLLER.ENDPOINT.GET.SUMMARY\n */\n async getEndpoint(requestParameters: GetEndpointRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<EndpointResponse> {\n const response = await this.getEndpointRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.ENDPOINT.GET.SECRET.DESCRIPTION\n * CONTROLLER.ENDPOINT.GET.SECRET.SUMMARY\n */\n async getEndpointSecretRaw(requestParameters: GetEndpointSecretRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<EndpointSecretResponse>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling getEndpointSecret().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/webhook/endpoint/{id}/secret`;\n urlPath = urlPath.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => EndpointSecretResponseFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.ENDPOINT.GET.SECRET.DESCRIPTION\n * CONTROLLER.ENDPOINT.GET.SECRET.SUMMARY\n */\n async getEndpointSecret(requestParameters: GetEndpointSecretRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<EndpointSecretResponse> {\n const response = await this.getEndpointSecretRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.ENDPOINT.LIST.DESCRIPTION\n * CONTROLLER.ENDPOINT.LIST.SUMMARY\n */\n async listEndpointsRaw(requestParameters: ListEndpointsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<EndpointListResponse>> {\n const queryParameters: any = {};\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['iterator'] != null) {\n queryParameters['iterator'] = requestParameters['iterator'];\n }\n\n if (requestParameters['order'] != null) {\n queryParameters['order'] = requestParameters['order'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/webhook/endpoint`;\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => EndpointListResponseFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.ENDPOINT.LIST.DESCRIPTION\n * CONTROLLER.ENDPOINT.LIST.SUMMARY\n */\n async listEndpoints(requestParameters: ListEndpointsRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<EndpointListResponse> {\n const response = await this.listEndpointsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.ENDPOINT.ROTATE.DESCRIPTION\n * CONTROLLER.ENDPOINT.ROTATE.SUMMARY\n */\n async rotateEndpointSecretRaw(requestParameters: RotateEndpointSecretRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<EndpointOperationResponse>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling rotateEndpointSecret().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/webhook/endpoint/{id}/secret/rotate`;\n urlPath = urlPath.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => EndpointOperationResponseFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.ENDPOINT.ROTATE.DESCRIPTION\n * CONTROLLER.ENDPOINT.ROTATE.SUMMARY\n */\n async rotateEndpointSecret(requestParameters: RotateEndpointSecretRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<EndpointOperationResponse> {\n const response = await this.rotateEndpointSecretRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.ENDPOINT.UPDATE.DESCRIPTION\n * CONTROLLER.ENDPOINT.UPDATE.SUMMARY\n */\n async updateEndpointRaw(requestParameters: UpdateEndpointRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<EndpointResponse>> {\n if (requestParameters['updateEndpointInput'] == null) {\n throw new runtime.RequiredError(\n 'updateEndpointInput',\n 'Required parameter \"updateEndpointInput\" was null or undefined when calling updateEndpoint().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/webhook/endpoint`;\n\n const response = await this.request({\n path: urlPath,\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: UpdateEndpointInputToJSON(requestParameters['updateEndpointInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => EndpointResponseFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.ENDPOINT.UPDATE.DESCRIPTION\n * CONTROLLER.ENDPOINT.UPDATE.SUMMARY\n */\n async updateEndpoint(requestParameters: UpdateEndpointRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<EndpointResponse> {\n const response = await this.updateEndpointRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n\n/**\n * @export\n */\nexport const ListEndpointsOrderEnum = {\n Ascending: 'ascending',\n Descending: 'descending'\n} as const;\nexport type ListEndpointsOrderEnum = typeof ListEndpointsOrderEnum[keyof typeof ListEndpointsOrderEnum];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\n\n/**\n * \n */\nexport class IpfsApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.IPFS.PRESIGN.DESCRIPTION\n * CONTROLLER.IPFS.PRESIGN.SUMMARY\n */\n async presignRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<string>> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/ipfs/presign`;\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n if (this.isJsonMime(response.headers.get('content-type'))) {\n return new runtime.JSONApiResponse<string>(response);\n } else {\n return new runtime.TextApiResponse(response) as any;\n }\n }\n\n /**\n * CONTROLLER.IPFS.PRESIGN.DESCRIPTION\n * CONTROLLER.IPFS.PRESIGN.SUMMARY\n */\n async presign(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<string> {\n const response = await this.presignRaw(initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n JobDTO,\n JobStreamingDTO,\n} from '../models/index';\nimport {\n JobDTOFromJSON,\n JobDTOToJSON,\n JobStreamingDTOFromJSON,\n JobStreamingDTOToJSON,\n} from '../models/index';\n\nexport interface GetRequest {\n id: string;\n}\n\nexport interface StreamingRequest {\n id: string;\n}\n\n/**\n * \n */\nexport class JobsApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.JOB.GET.DESCRIPTION\n * CONTROLLER.JOB.GET.SUMMARY\n */\n async getRaw(requestParameters: GetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<JobDTO>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling get().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/jobs/{id}`;\n urlPath = urlPath.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => JobDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.JOB.GET.DESCRIPTION\n * CONTROLLER.JOB.GET.SUMMARY\n */\n async get(requestParameters: GetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<JobDTO> {\n const response = await this.getRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.JOB.STREAMING.DESCRIPTION\n * CONTROLLER.JOB.STREAMING.SUMMARY\n */\n async streamingRaw(requestParameters: StreamingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<JobStreamingDTO>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling streaming().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/jobs/{id}/streaming`;\n urlPath = urlPath.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => JobStreamingDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.JOB.STREAMING.DESCRIPTION\n * CONTROLLER.JOB.STREAMING.SUMMARY\n */\n async streaming(requestParameters: StreamingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<JobStreamingDTO> {\n const response = await this.streamingRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n AddressRiskResponseDTO,\n KYTRegisterTransferRequest,\n KYTRegisterWithdrawalRequest,\n RegisterAddressRequest,\n RegisterAddressResponseDTO,\n TransferAlertsResponseDTO,\n TransferBaseResponseDTO,\n TransferDirectExposureResponseDTO,\n TransferNetworkIdentificationsResponseDTO,\n WithdrawalAddressIdentificationsResponseDTO,\n WithdrawalBaseResponseDTO,\n WithdrawalFraudAssessmentResponseDTO,\n} from '../models/index';\nimport {\n AddressRiskResponseDTOFromJSON,\n AddressRiskResponseDTOToJSON,\n KYTRegisterTransferRequestFromJSON,\n KYTRegisterTransferRequestToJSON,\n KYTRegisterWithdrawalRequestFromJSON,\n KYTRegisterWithdrawalRequestToJSON,\n RegisterAddressRequestFromJSON,\n RegisterAddressRequestToJSON,\n RegisterAddressResponseDTOFromJSON,\n RegisterAddressResponseDTOToJSON,\n TransferAlertsResponseDTOFromJSON,\n TransferAlertsResponseDTOToJSON,\n TransferBaseResponseDTOFromJSON,\n TransferBaseResponseDTOToJSON,\n TransferDirectExposureResponseDTOFromJSON,\n TransferDirectExposureResponseDTOToJSON,\n TransferNetworkIdentificationsResponseDTOFromJSON,\n TransferNetworkIdentificationsResponseDTOToJSON,\n WithdrawalAddressIdentificationsResponseDTOFromJSON,\n WithdrawalAddressIdentificationsResponseDTOToJSON,\n WithdrawalBaseResponseDTOFromJSON,\n WithdrawalBaseResponseDTOToJSON,\n WithdrawalFraudAssessmentResponseDTOFromJSON,\n WithdrawalFraudAssessmentResponseDTOToJSON,\n} from '../models/index';\n\nexport interface GetAddressRiskRequest {\n address: string;\n}\n\nexport interface GetTransferAlertsRequest {\n transferId: string;\n}\n\nexport interface GetTransferDirectExposureRequest {\n transferId: string;\n}\n\nexport interface GetTransferNetworkIdentificationsRequest {\n transferId: string;\n}\n\nexport interface GetTransferSummaryRequest {\n transferId: string;\n}\n\nexport interface GetWithdrawalAddressIdentificationsRequest {\n withdrawalId: string;\n}\n\nexport interface GetWithdrawalAlertsRequest {\n withdrawalId: string;\n}\n\nexport interface GetWithdrawalDirectExposureRequest {\n withdrawalId: string;\n}\n\nexport interface GetWithdrawalFraudAssessmentRequest {\n withdrawalId: string;\n}\n\nexport interface GetWithdrawalNetworkIdentificationsRequest {\n withdrawalId: string;\n}\n\nexport interface GetWithdrawalSummaryRequest {\n withdrawalId: string;\n}\n\nexport interface RegisterAddressOperationRequest {\n registerAddressRequest: RegisterAddressRequest;\n}\n\nexport interface RegisterTransferRequest {\n kYTRegisterTransferRequest: KYTRegisterTransferRequest;\n}\n\nexport interface RegisterWithdrawalRequest {\n kYTRegisterWithdrawalRequest: KYTRegisterWithdrawalRequest;\n}\n\n/**\n * \n */\nexport class KYTApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.KYT.GET_ADDRESS_RISK.DESCRIPTION\n * CONTROLLER.KYT.GET_ADDRESS_RISK.SUMMARY\n */\n async getAddressRiskRaw(requestParameters: GetAddressRiskRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<AddressRiskResponseDTO>> {\n if (requestParameters['address'] == null) {\n throw new runtime.RequiredError(\n 'address',\n 'Required parameter \"address\" was null or undefined when calling getAddressRisk().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/kyt/addresses/{address}/risk`;\n urlPath = urlPath.replace(`{${\"address\"}}`, encodeURIComponent(String(requestParameters['address'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => AddressRiskResponseDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.KYT.GET_ADDRESS_RISK.DESCRIPTION\n * CONTROLLER.KYT.GET_ADDRESS_RISK.SUMMARY\n */\n async getAddressRisk(requestParameters: GetAddressRiskRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<AddressRiskResponseDTO> {\n const response = await this.getAddressRiskRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.KYT.GET_TRANSFER_ALERTS.DESCRIPTION\n * CONTROLLER.KYT.GET_TRANSFER_ALERTS.SUMMARY\n */\n async getTransferAlertsRaw(requestParameters: GetTransferAlertsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TransferAlertsResponseDTO>> {\n if (requestParameters['transferId'] == null) {\n throw new runtime.RequiredError(\n 'transferId',\n 'Required parameter \"transferId\" was null or undefined when calling getTransferAlerts().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/kyt/transfers/{transferId}/alerts`;\n urlPath = urlPath.replace(`{${\"transferId\"}}`, encodeURIComponent(String(requestParameters['transferId'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TransferAlertsResponseDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.KYT.GET_TRANSFER_ALERTS.DESCRIPTION\n * CONTROLLER.KYT.GET_TRANSFER_ALERTS.SUMMARY\n */\n async getTransferAlerts(requestParameters: GetTransferAlertsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TransferAlertsResponseDTO> {\n const response = await this.getTransferAlertsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.KYT.GET_TRANSFER_DIRECT_EXPOSURE.DESCRIPTION\n * CONTROLLER.KYT.GET_TRANSFER_DIRECT_EXPOSURE.SUMMARY\n */\n async getTransferDirectExposureRaw(requestParameters: GetTransferDirectExposureRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TransferDirectExposureResponseDTO>> {\n if (requestParameters['transferId'] == null) {\n throw new runtime.RequiredError(\n 'transferId',\n 'Required parameter \"transferId\" was null or undefined when calling getTransferDirectExposure().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/kyt/transfers/{transferId}/exposures/direct`;\n urlPath = urlPath.replace(`{${\"transferId\"}}`, encodeURIComponent(String(requestParameters['transferId'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TransferDirectExposureResponseDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.KYT.GET_TRANSFER_DIRECT_EXPOSURE.DESCRIPTION\n * CONTROLLER.KYT.GET_TRANSFER_DIRECT_EXPOSURE.SUMMARY\n */\n async getTransferDirectExposure(requestParameters: GetTransferDirectExposureRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TransferDirectExposureResponseDTO> {\n const response = await this.getTransferDirectExposureRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.KYT.GET_TRANSFER_NETWORK_IDENTIFICATIONS.DESCRIPTION\n * CONTROLLER.KYT.GET_TRANSFER_NETWORK_IDENTIFICATIONS.SUMMARY\n */\n async getTransferNetworkIdentificationsRaw(requestParameters: GetTransferNetworkIdentificationsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TransferNetworkIdentificationsResponseDTO>> {\n if (requestParameters['transferId'] == null) {\n throw new runtime.RequiredError(\n 'transferId',\n 'Required parameter \"transferId\" was null or undefined when calling getTransferNetworkIdentifications().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/kyt/transfers/{transferId}/network-identifications`;\n urlPath = urlPath.replace(`{${\"transferId\"}}`, encodeURIComponent(String(requestParameters['transferId'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TransferNetworkIdentificationsResponseDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.KYT.GET_TRANSFER_NETWORK_IDENTIFICATIONS.DESCRIPTION\n * CONTROLLER.KYT.GET_TRANSFER_NETWORK_IDENTIFICATIONS.SUMMARY\n */\n async getTransferNetworkIdentifications(requestParameters: GetTransferNetworkIdentificationsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TransferNetworkIdentificationsResponseDTO> {\n const response = await this.getTransferNetworkIdentificationsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.KYT.GET_TRANSFER_SUMMARY.DESCRIPTION\n * CONTROLLER.KYT.GET_TRANSFER_SUMMARY.SUMMARY\n */\n async getTransferSummaryRaw(requestParameters: GetTransferSummaryRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TransferBaseResponseDTO>> {\n if (requestParameters['transferId'] == null) {\n throw new runtime.RequiredError(\n 'transferId',\n 'Required parameter \"transferId\" was null or undefined when calling getTransferSummary().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/kyt/transfers/{transferId}/summary`;\n urlPath = urlPath.replace(`{${\"transferId\"}}`, encodeURIComponent(String(requestParameters['transferId'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TransferBaseResponseDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.KYT.GET_TRANSFER_SUMMARY.DESCRIPTION\n * CONTROLLER.KYT.GET_TRANSFER_SUMMARY.SUMMARY\n */\n async getTransferSummary(requestParameters: GetTransferSummaryRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TransferBaseResponseDTO> {\n const response = await this.getTransferSummaryRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.KYT.GET_WITHDRAWAL_ADDRESS_IDENTIFICATIONS.DESCRIPTION\n * CONTROLLER.KYT.GET_WITHDRAWAL_ADDRESS_IDENTIFICATIONS.SUMMARY\n */\n async getWithdrawalAddressIdentificationsRaw(requestParameters: GetWithdrawalAddressIdentificationsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<WithdrawalAddressIdentificationsResponseDTO>> {\n if (requestParameters['withdrawalId'] == null) {\n throw new runtime.RequiredError(\n 'withdrawalId',\n 'Required parameter \"withdrawalId\" was null or undefined when calling getWithdrawalAddressIdentifications().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/kyt/withdrawal/{withdrawalId}/address-identifications`;\n urlPath = urlPath.replace(`{${\"withdrawalId\"}}`, encodeURIComponent(String(requestParameters['withdrawalId'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => WithdrawalAddressIdentificationsResponseDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.KYT.GET_WITHDRAWAL_ADDRESS_IDENTIFICATIONS.DESCRIPTION\n * CONTROLLER.KYT.GET_WITHDRAWAL_ADDRESS_IDENTIFICATIONS.SUMMARY\n */\n async getWithdrawalAddressIdentifications(requestParameters: GetWithdrawalAddressIdentificationsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<WithdrawalAddressIdentificationsResponseDTO> {\n const response = await this.getWithdrawalAddressIdentificationsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.KYT.GET_WITHDRAWAL_ALERTS.DESCRIPTION\n * CONTROLLER.KYT.GET_WITHDRAWAL_ALERTS.SUMMARY\n */\n async getWithdrawalAlertsRaw(requestParameters: GetWithdrawalAlertsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TransferAlertsResponseDTO>> {\n if (requestParameters['withdrawalId'] == null) {\n throw new runtime.RequiredError(\n 'withdrawalId',\n 'Required parameter \"withdrawalId\" was null or undefined when calling getWithdrawalAlerts().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/kyt/withdrawal/{withdrawalId}/alerts`;\n urlPath = urlPath.replace(`{${\"withdrawalId\"}}`, encodeURIComponent(String(requestParameters['withdrawalId'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TransferAlertsResponseDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.KYT.GET_WITHDRAWAL_ALERTS.DESCRIPTION\n * CONTROLLER.KYT.GET_WITHDRAWAL_ALERTS.SUMMARY\n */\n async getWithdrawalAlerts(requestParameters: GetWithdrawalAlertsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TransferAlertsResponseDTO> {\n const response = await this.getWithdrawalAlertsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.KYT.GET_WITHDRAWAL_DIRECT_EXPOSURE.DESCRIPTION\n * CONTROLLER.KYT.GET_WITHDRAWAL_DIRECT_EXPOSURE.SUMMARY\n */\n async getWithdrawalDirectExposureRaw(requestParameters: GetWithdrawalDirectExposureRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TransferDirectExposureResponseDTO>> {\n if (requestParameters['withdrawalId'] == null) {\n throw new runtime.RequiredError(\n 'withdrawalId',\n 'Required parameter \"withdrawalId\" was null or undefined when calling getWithdrawalDirectExposure().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/kyt/withdrawal/{withdrawalId}/exposures/direct`;\n urlPath = urlPath.replace(`{${\"withdrawalId\"}}`, encodeURIComponent(String(requestParameters['withdrawalId'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TransferDirectExposureResponseDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.KYT.GET_WITHDRAWAL_DIRECT_EXPOSURE.DESCRIPTION\n * CONTROLLER.KYT.GET_WITHDRAWAL_DIRECT_EXPOSURE.SUMMARY\n */\n async getWithdrawalDirectExposure(requestParameters: GetWithdrawalDirectExposureRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TransferDirectExposureResponseDTO> {\n const response = await this.getWithdrawalDirectExposureRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.KYT.GET_WITHDRAWAL_FRAUD_ASSESSMENT.DESCRIPTION\n * CONTROLLER.KYT.GET_WITHDRAWAL_FRAUD_ASSESSMENT.SUMMARY\n */\n async getWithdrawalFraudAssessmentRaw(requestParameters: GetWithdrawalFraudAssessmentRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<WithdrawalFraudAssessmentResponseDTO>> {\n if (requestParameters['withdrawalId'] == null) {\n throw new runtime.RequiredError(\n 'withdrawalId',\n 'Required parameter \"withdrawalId\" was null or undefined when calling getWithdrawalFraudAssessment().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/kyt/withdrawal/{withdrawalId}/fraud-assessment`;\n urlPath = urlPath.replace(`{${\"withdrawalId\"}}`, encodeURIComponent(String(requestParameters['withdrawalId'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => WithdrawalFraudAssessmentResponseDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.KYT.GET_WITHDRAWAL_FRAUD_ASSESSMENT.DESCRIPTION\n * CONTROLLER.KYT.GET_WITHDRAWAL_FRAUD_ASSESSMENT.SUMMARY\n */\n async getWithdrawalFraudAssessment(requestParameters: GetWithdrawalFraudAssessmentRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<WithdrawalFraudAssessmentResponseDTO> {\n const response = await this.getWithdrawalFraudAssessmentRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.KYT.GET_WITHDRAWAL_NETWORK_IDENTIFICATIONS.DESCRIPTION\n * CONTROLLER.KYT.GET_WITHDRAWAL_NETWORK_IDENTIFICATIONS.SUMMARY\n */\n async getWithdrawalNetworkIdentificationsRaw(requestParameters: GetWithdrawalNetworkIdentificationsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TransferNetworkIdentificationsResponseDTO>> {\n if (requestParameters['withdrawalId'] == null) {\n throw new runtime.RequiredError(\n 'withdrawalId',\n 'Required parameter \"withdrawalId\" was null or undefined when calling getWithdrawalNetworkIdentifications().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/kyt/withdrawal/{withdrawalId}/network-identifications`;\n urlPath = urlPath.replace(`{${\"withdrawalId\"}}`, encodeURIComponent(String(requestParameters['withdrawalId'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TransferNetworkIdentificationsResponseDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.KYT.GET_WITHDRAWAL_NETWORK_IDENTIFICATIONS.DESCRIPTION\n * CONTROLLER.KYT.GET_WITHDRAWAL_NETWORK_IDENTIFICATIONS.SUMMARY\n */\n async getWithdrawalNetworkIdentifications(requestParameters: GetWithdrawalNetworkIdentificationsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TransferNetworkIdentificationsResponseDTO> {\n const response = await this.getWithdrawalNetworkIdentificationsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.KYT.GET_WITHDRAWAL_SUMMARY.DESCRIPTION\n * CONTROLLER.KYT.GET_WITHDRAWAL_SUMMARY.SUMMARY\n */\n async getWithdrawalSummaryRaw(requestParameters: GetWithdrawalSummaryRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<WithdrawalBaseResponseDTO>> {\n if (requestParameters['withdrawalId'] == null) {\n throw new runtime.RequiredError(\n 'withdrawalId',\n 'Required parameter \"withdrawalId\" was null or undefined when calling getWithdrawalSummary().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/kyt/withdrawal/{withdrawalId}/summary`;\n urlPath = urlPath.replace(`{${\"withdrawalId\"}}`, encodeURIComponent(String(requestParameters['withdrawalId'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => WithdrawalBaseResponseDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.KYT.GET_WITHDRAWAL_SUMMARY.DESCRIPTION\n * CONTROLLER.KYT.GET_WITHDRAWAL_SUMMARY.SUMMARY\n */\n async getWithdrawalSummary(requestParameters: GetWithdrawalSummaryRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<WithdrawalBaseResponseDTO> {\n const response = await this.getWithdrawalSummaryRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.KYT.REGISTER_ADDRESS.DESCRIPTION\n * CONTROLLER.KYT.REGISTER_ADDRESS.SUMMARY\n */\n async registerAddressRaw(requestParameters: RegisterAddressOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<RegisterAddressResponseDTO>> {\n if (requestParameters['registerAddressRequest'] == null) {\n throw new runtime.RequiredError(\n 'registerAddressRequest',\n 'Required parameter \"registerAddressRequest\" was null or undefined when calling registerAddress().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/kyt/address`;\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: RegisterAddressRequestToJSON(requestParameters['registerAddressRequest']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => RegisterAddressResponseDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.KYT.REGISTER_ADDRESS.DESCRIPTION\n * CONTROLLER.KYT.REGISTER_ADDRESS.SUMMARY\n */\n async registerAddress(requestParameters: RegisterAddressOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<RegisterAddressResponseDTO> {\n const response = await this.registerAddressRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.KYT.REGISTER_TRANSFER.DESCRIPTION\n * CONTROLLER.KYT.REGISTER_TRANSFER.SUMMARY\n */\n async registerTransferRaw(requestParameters: RegisterTransferRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TransferBaseResponseDTO>> {\n if (requestParameters['kYTRegisterTransferRequest'] == null) {\n throw new runtime.RequiredError(\n 'kYTRegisterTransferRequest',\n 'Required parameter \"kYTRegisterTransferRequest\" was null or undefined when calling registerTransfer().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/kyt/transfer`;\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: KYTRegisterTransferRequestToJSON(requestParameters['kYTRegisterTransferRequest']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TransferBaseResponseDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.KYT.REGISTER_TRANSFER.DESCRIPTION\n * CONTROLLER.KYT.REGISTER_TRANSFER.SUMMARY\n */\n async registerTransfer(requestParameters: RegisterTransferRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TransferBaseResponseDTO> {\n const response = await this.registerTransferRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.KYT.REGISTER_WITHDRAWAL.DESCRIPTION\n * CONTROLLER.KYT.REGISTER_WITHDRAWAL.SUMMARY\n */\n async registerWithdrawalRaw(requestParameters: RegisterWithdrawalRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<WithdrawalBaseResponseDTO>> {\n if (requestParameters['kYTRegisterWithdrawalRequest'] == null) {\n throw new runtime.RequiredError(\n 'kYTRegisterWithdrawalRequest',\n 'Required parameter \"kYTRegisterWithdrawalRequest\" was null or undefined when calling registerWithdrawal().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/kyt/withdrawal`;\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: KYTRegisterWithdrawalRequestToJSON(requestParameters['kYTRegisterWithdrawalRequest']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => WithdrawalBaseResponseDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.KYT.REGISTER_WITHDRAWAL.DESCRIPTION\n * CONTROLLER.KYT.REGISTER_WITHDRAWAL.SUMMARY\n */\n async registerWithdrawal(requestParameters: RegisterWithdrawalRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<WithdrawalBaseResponseDTO> {\n const response = await this.registerWithdrawalRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ChainSymbol,\n FilterCondition,\n Token,\n} from '../models/index';\nimport {\n ChainSymbolFromJSON,\n ChainSymbolToJSON,\n FilterConditionFromJSON,\n FilterConditionToJSON,\n TokenFromJSON,\n TokenToJSON,\n} from '../models/index';\n\nexport interface GetFinalStretchTokensRequest {\n chain: ChainSymbol;\n sortBy?: GetFinalStretchTokensSortByEnum;\n sortDirection?: GetFinalStretchTokensSortDirectionEnum;\n rangeFilters?: Array<FilterCondition>;\n tag?: GetFinalStretchTokensTagEnum;\n filters?: Array<string>;\n launchpadPlatform?: Array<string>;\n searchKeywords?: Array<string>;\n excludeKeywords?: Array<string>;\n}\n\nexport interface GetHotTokensRequest {\n chain: ChainSymbol;\n duration: GetHotTokensDurationEnum;\n sortBy?: GetHotTokensSortByEnum;\n sortDirection?: GetHotTokensSortDirectionEnum;\n rangeFilters?: Array<FilterCondition>;\n tag?: GetHotTokensTagEnum;\n filters?: Array<string>;\n launchpadPlatform?: Array<string>;\n searchKeywords?: Array<string>;\n excludeKeywords?: Array<string>;\n}\n\nexport interface GetMigratedTokensRequest {\n chain: ChainSymbol;\n sortBy?: GetMigratedTokensSortByEnum;\n sortDirection?: GetMigratedTokensSortDirectionEnum;\n rangeFilters?: Array<FilterCondition>;\n tag?: GetMigratedTokensTagEnum;\n filters?: Array<string>;\n launchpadPlatform?: Array<string>;\n searchKeywords?: Array<string>;\n excludeKeywords?: Array<string>;\n}\n\nexport interface GetNewTokensRequest {\n chain: ChainSymbol;\n sortBy?: GetNewTokensSortByEnum;\n sortDirection?: GetNewTokensSortDirectionEnum;\n rangeFilters?: Array<FilterCondition>;\n tag?: GetNewTokensTagEnum;\n filters?: Array<string>;\n launchpadPlatform?: Array<string>;\n searchKeywords?: Array<string>;\n excludeKeywords?: Array<string>;\n}\n\nexport interface GetStocksTokensRequest {\n chain: ChainSymbol;\n sortBy?: GetStocksTokensSortByEnum;\n sortDirection?: GetStocksTokensSortDirectionEnum;\n rangeFilters?: Array<FilterCondition>;\n tag?: GetStocksTokensTagEnum;\n filters?: Array<string>;\n launchpadPlatform?: Array<string>;\n searchKeywords?: Array<string>;\n excludeKeywords?: Array<string>;\n}\n\n/**\n * \n */\nexport class RankingApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.RANKING.FINAL_STRETCH_TOKENS.DESCRIPTION\n * CONTROLLER.RANKING.FINAL_STRETCH_TOKENS.SUMMARY\n */\n async getFinalStretchTokensRaw(requestParameters: GetFinalStretchTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Token>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getFinalStretchTokens().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['sortBy'] != null) {\n queryParameters['sortBy'] = requestParameters['sortBy'];\n }\n\n if (requestParameters['sortDirection'] != null) {\n queryParameters['sortDirection'] = requestParameters['sortDirection'];\n }\n\n if (requestParameters['rangeFilters'] != null) {\n queryParameters['rangeFilters'] = requestParameters['rangeFilters'];\n }\n\n if (requestParameters['tag'] != null) {\n queryParameters['tag'] = requestParameters['tag'];\n }\n\n if (requestParameters['filters'] != null) {\n queryParameters['filters'] = requestParameters['filters'];\n }\n\n if (requestParameters['launchpadPlatform'] != null) {\n queryParameters['launchpadPlatform'] = requestParameters['launchpadPlatform'];\n }\n\n if (requestParameters['searchKeywords'] != null) {\n queryParameters['searchKeywords'] = requestParameters['searchKeywords'];\n }\n\n if (requestParameters['excludeKeywords'] != null) {\n queryParameters['excludeKeywords'] = requestParameters['excludeKeywords'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/ranking/{chain}/finalStretch`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(TokenFromJSON));\n }\n\n /**\n * CONTROLLER.RANKING.FINAL_STRETCH_TOKENS.DESCRIPTION\n * CONTROLLER.RANKING.FINAL_STRETCH_TOKENS.SUMMARY\n */\n async getFinalStretchTokens(requestParameters: GetFinalStretchTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Token>> {\n const response = await this.getFinalStretchTokensRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RANKING.HOT_TOKENS.DESCRIPTION\n * CONTROLLER.RANKING.HOT_TOKENS.SUMMARY\n */\n async getHotTokensRaw(requestParameters: GetHotTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Token>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getHotTokens().'\n );\n }\n\n if (requestParameters['duration'] == null) {\n throw new runtime.RequiredError(\n 'duration',\n 'Required parameter \"duration\" was null or undefined when calling getHotTokens().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['sortBy'] != null) {\n queryParameters['sortBy'] = requestParameters['sortBy'];\n }\n\n if (requestParameters['sortDirection'] != null) {\n queryParameters['sortDirection'] = requestParameters['sortDirection'];\n }\n\n if (requestParameters['rangeFilters'] != null) {\n queryParameters['rangeFilters'] = requestParameters['rangeFilters'];\n }\n\n if (requestParameters['tag'] != null) {\n queryParameters['tag'] = requestParameters['tag'];\n }\n\n if (requestParameters['filters'] != null) {\n queryParameters['filters'] = requestParameters['filters'];\n }\n\n if (requestParameters['launchpadPlatform'] != null) {\n queryParameters['launchpadPlatform'] = requestParameters['launchpadPlatform'];\n }\n\n if (requestParameters['searchKeywords'] != null) {\n queryParameters['searchKeywords'] = requestParameters['searchKeywords'];\n }\n\n if (requestParameters['excludeKeywords'] != null) {\n queryParameters['excludeKeywords'] = requestParameters['excludeKeywords'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/ranking/{chain}/hotTokens/{duration}`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"duration\"}}`, encodeURIComponent(String(requestParameters['duration'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(TokenFromJSON));\n }\n\n /**\n * CONTROLLER.RANKING.HOT_TOKENS.DESCRIPTION\n * CONTROLLER.RANKING.HOT_TOKENS.SUMMARY\n */\n async getHotTokens(requestParameters: GetHotTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Token>> {\n const response = await this.getHotTokensRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RANKING.MIGRATED_TOKENS.DESCRIPTION\n * CONTROLLER.RANKING.MIGRATED_TOKENS.SUMMARY\n */\n async getMigratedTokensRaw(requestParameters: GetMigratedTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Token>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getMigratedTokens().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['sortBy'] != null) {\n queryParameters['sortBy'] = requestParameters['sortBy'];\n }\n\n if (requestParameters['sortDirection'] != null) {\n queryParameters['sortDirection'] = requestParameters['sortDirection'];\n }\n\n if (requestParameters['rangeFilters'] != null) {\n queryParameters['rangeFilters'] = requestParameters['rangeFilters'];\n }\n\n if (requestParameters['tag'] != null) {\n queryParameters['tag'] = requestParameters['tag'];\n }\n\n if (requestParameters['filters'] != null) {\n queryParameters['filters'] = requestParameters['filters'];\n }\n\n if (requestParameters['launchpadPlatform'] != null) {\n queryParameters['launchpadPlatform'] = requestParameters['launchpadPlatform'];\n }\n\n if (requestParameters['searchKeywords'] != null) {\n queryParameters['searchKeywords'] = requestParameters['searchKeywords'];\n }\n\n if (requestParameters['excludeKeywords'] != null) {\n queryParameters['excludeKeywords'] = requestParameters['excludeKeywords'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/ranking/{chain}/migrated`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(TokenFromJSON));\n }\n\n /**\n * CONTROLLER.RANKING.MIGRATED_TOKENS.DESCRIPTION\n * CONTROLLER.RANKING.MIGRATED_TOKENS.SUMMARY\n */\n async getMigratedTokens(requestParameters: GetMigratedTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Token>> {\n const response = await this.getMigratedTokensRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RANKING.NEW_TOKENS.DESCRIPTION\n * CONTROLLER.RANKING.NEW_TOKENS.SUMMARY\n */\n async getNewTokensRaw(requestParameters: GetNewTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Token>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getNewTokens().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['sortBy'] != null) {\n queryParameters['sortBy'] = requestParameters['sortBy'];\n }\n\n if (requestParameters['sortDirection'] != null) {\n queryParameters['sortDirection'] = requestParameters['sortDirection'];\n }\n\n if (requestParameters['rangeFilters'] != null) {\n queryParameters['rangeFilters'] = requestParameters['rangeFilters'];\n }\n\n if (requestParameters['tag'] != null) {\n queryParameters['tag'] = requestParameters['tag'];\n }\n\n if (requestParameters['filters'] != null) {\n queryParameters['filters'] = requestParameters['filters'];\n }\n\n if (requestParameters['launchpadPlatform'] != null) {\n queryParameters['launchpadPlatform'] = requestParameters['launchpadPlatform'];\n }\n\n if (requestParameters['searchKeywords'] != null) {\n queryParameters['searchKeywords'] = requestParameters['searchKeywords'];\n }\n\n if (requestParameters['excludeKeywords'] != null) {\n queryParameters['excludeKeywords'] = requestParameters['excludeKeywords'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/ranking/{chain}/newTokens`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(TokenFromJSON));\n }\n\n /**\n * CONTROLLER.RANKING.NEW_TOKENS.DESCRIPTION\n * CONTROLLER.RANKING.NEW_TOKENS.SUMMARY\n */\n async getNewTokens(requestParameters: GetNewTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Token>> {\n const response = await this.getNewTokensRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RANKING.STOCKS_TOKENS.DESCRIPTION\n * CONTROLLER.RANKING.STOCKS_TOKENS.SUMMARY\n */\n async getStocksTokensRaw(requestParameters: GetStocksTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Token>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getStocksTokens().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['sortBy'] != null) {\n queryParameters['sortBy'] = requestParameters['sortBy'];\n }\n\n if (requestParameters['sortDirection'] != null) {\n queryParameters['sortDirection'] = requestParameters['sortDirection'];\n }\n\n if (requestParameters['rangeFilters'] != null) {\n queryParameters['rangeFilters'] = requestParameters['rangeFilters'];\n }\n\n if (requestParameters['tag'] != null) {\n queryParameters['tag'] = requestParameters['tag'];\n }\n\n if (requestParameters['filters'] != null) {\n queryParameters['filters'] = requestParameters['filters'];\n }\n\n if (requestParameters['launchpadPlatform'] != null) {\n queryParameters['launchpadPlatform'] = requestParameters['launchpadPlatform'];\n }\n\n if (requestParameters['searchKeywords'] != null) {\n queryParameters['searchKeywords'] = requestParameters['searchKeywords'];\n }\n\n if (requestParameters['excludeKeywords'] != null) {\n queryParameters['excludeKeywords'] = requestParameters['excludeKeywords'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/ranking/{chain}/stocks`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(TokenFromJSON));\n }\n\n /**\n * CONTROLLER.RANKING.STOCKS_TOKENS.DESCRIPTION\n * CONTROLLER.RANKING.STOCKS_TOKENS.SUMMARY\n */\n async getStocksTokens(requestParameters: GetStocksTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Token>> {\n const response = await this.getStocksTokensRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n\n/**\n * @export\n */\nexport const GetFinalStretchTokensSortByEnum = {\n MarketDataPriceInUsd: 'marketData.priceInUsd',\n StatsPriceChangeRatioInUsd1m: 'stats.priceChangeRatioInUsd1m',\n StatsPriceChangeRatioInUsd5m: 'stats.priceChangeRatioInUsd5m',\n StatsPriceChangeRatioInUsd1h: 'stats.priceChangeRatioInUsd1h',\n StatsPriceChangeRatioInUsd4h: 'stats.priceChangeRatioInUsd4h',\n StatsPriceChangeRatioInUsd24h: 'stats.priceChangeRatioInUsd24h',\n MarketDataMarketCapInUsd: 'marketData.marketCapInUsd',\n MarketDataTvlInUsd: 'marketData.tvlInUsd',\n MarketDataTop10TotalHoldings: 'marketData.top10TotalHoldings',\n MarketDataTop10HoldingsRatio: 'marketData.top10HoldingsRatio',\n MarketDataTop100TotalHoldings: 'marketData.top100TotalHoldings',\n MarketDataTop100HoldingsRatio: 'marketData.top100HoldingsRatio',\n MarketDataHolders: 'marketData.holders',\n MarketDataCreatorHoldings: 'marketData.creatorHoldings',\n MarketDataCreatorHoldingsRatio: 'marketData.creatorHoldingsRatio',\n StatsBuys1m: 'stats.buys1m',\n StatsBuys5m: 'stats.buys5m',\n StatsBuys15m: 'stats.buys15m',\n StatsBuys30m: 'stats.buys30m',\n StatsBuys1h: 'stats.buys1h',\n StatsBuys4h: 'stats.buys4h',\n StatsBuys24h: 'stats.buys24h',\n StatsSells1m: 'stats.sells1m',\n StatsSells5m: 'stats.sells5m',\n StatsSells15m: 'stats.sells15m',\n StatsSells30m: 'stats.sells30m',\n StatsSells1h: 'stats.sells1h',\n StatsSells4h: 'stats.sells4h',\n StatsSells24h: 'stats.sells24h',\n StatsTrades1m: 'stats.trades1m',\n StatsTrades5m: 'stats.trades5m',\n StatsTrades1h: 'stats.trades1h',\n StatsTrades4h: 'stats.trades4h',\n StatsTrades24h: 'stats.trades24h',\n StatsTraders1m: 'stats.traders1m',\n StatsTraders5m: 'stats.traders5m',\n StatsTraders1h: 'stats.traders1h',\n StatsTraders4h: 'stats.traders4h',\n StatsTraders24h: 'stats.traders24h',\n StatsVolumesInUsd1m: 'stats.volumesInUsd1m',\n StatsVolumesInUsd5m: 'stats.volumesInUsd5m',\n StatsVolumesInUsd1h: 'stats.volumesInUsd1h',\n StatsVolumesInUsd4h: 'stats.volumesInUsd4h',\n StatsVolumesInUsd24h: 'stats.volumesInUsd24h',\n TokenCreatedAt: 'tokenCreatedAt'\n} as const;\nexport type GetFinalStretchTokensSortByEnum = typeof GetFinalStretchTokensSortByEnum[keyof typeof GetFinalStretchTokensSortByEnum];\n/**\n * @export\n */\nexport const GetFinalStretchTokensSortDirectionEnum = {\n Asc: 'ASC',\n Desc: 'DESC'\n} as const;\nexport type GetFinalStretchTokensSortDirectionEnum = typeof GetFinalStretchTokensSortDirectionEnum[keyof typeof GetFinalStretchTokensSortDirectionEnum];\n/**\n * @export\n */\nexport const GetFinalStretchTokensTagEnum = {\n PumpFun: 'pump_fun',\n RaydiumLaunchpad: 'raydium_launchpad',\n MeteoraDynamicBoundingCurve: 'meteora_dynamic_bounding_curve',\n BonkFun: 'bonk_fun',\n MoonitFun: 'moonit_fun'\n} as const;\nexport type GetFinalStretchTokensTagEnum = typeof GetFinalStretchTokensTagEnum[keyof typeof GetFinalStretchTokensTagEnum];\n/**\n * @export\n */\nexport const GetHotTokensDurationEnum = {\n _1m: '1m',\n _5m: '5m',\n _1h: '1h',\n _4h: '4h',\n _24h: '24h'\n} as const;\nexport type GetHotTokensDurationEnum = typeof GetHotTokensDurationEnum[keyof typeof GetHotTokensDurationEnum];\n/**\n * @export\n */\nexport const GetHotTokensSortByEnum = {\n MarketDataPriceInUsd: 'marketData.priceInUsd',\n StatsPriceChangeRatioInUsd1m: 'stats.priceChangeRatioInUsd1m',\n StatsPriceChangeRatioInUsd5m: 'stats.priceChangeRatioInUsd5m',\n StatsPriceChangeRatioInUsd1h: 'stats.priceChangeRatioInUsd1h',\n StatsPriceChangeRatioInUsd4h: 'stats.priceChangeRatioInUsd4h',\n StatsPriceChangeRatioInUsd24h: 'stats.priceChangeRatioInUsd24h',\n MarketDataMarketCapInUsd: 'marketData.marketCapInUsd',\n MarketDataTvlInUsd: 'marketData.tvlInUsd',\n MarketDataTop10TotalHoldings: 'marketData.top10TotalHoldings',\n MarketDataTop10HoldingsRatio: 'marketData.top10HoldingsRatio',\n MarketDataTop100TotalHoldings: 'marketData.top100TotalHoldings',\n MarketDataTop100HoldingsRatio: 'marketData.top100HoldingsRatio',\n MarketDataHolders: 'marketData.holders',\n MarketDataCreatorHoldings: 'marketData.creatorHoldings',\n MarketDataCreatorHoldingsRatio: 'marketData.creatorHoldingsRatio',\n StatsBuys1m: 'stats.buys1m',\n StatsBuys5m: 'stats.buys5m',\n StatsBuys15m: 'stats.buys15m',\n StatsBuys30m: 'stats.buys30m',\n StatsBuys1h: 'stats.buys1h',\n StatsBuys4h: 'stats.buys4h',\n StatsBuys24h: 'stats.buys24h',\n StatsSells1m: 'stats.sells1m',\n StatsSells5m: 'stats.sells5m',\n StatsSells15m: 'stats.sells15m',\n StatsSells30m: 'stats.sells30m',\n StatsSells1h: 'stats.sells1h',\n StatsSells4h: 'stats.sells4h',\n StatsSells24h: 'stats.sells24h',\n StatsTrades1m: 'stats.trades1m',\n StatsTrades5m: 'stats.trades5m',\n StatsTrades1h: 'stats.trades1h',\n StatsTrades4h: 'stats.trades4h',\n StatsTrades24h: 'stats.trades24h',\n StatsTraders1m: 'stats.traders1m',\n StatsTraders5m: 'stats.traders5m',\n StatsTraders1h: 'stats.traders1h',\n StatsTraders4h: 'stats.traders4h',\n StatsTraders24h: 'stats.traders24h',\n StatsVolumesInUsd1m: 'stats.volumesInUsd1m',\n StatsVolumesInUsd5m: 'stats.volumesInUsd5m',\n StatsVolumesInUsd1h: 'stats.volumesInUsd1h',\n StatsVolumesInUsd4h: 'stats.volumesInUsd4h',\n StatsVolumesInUsd24h: 'stats.volumesInUsd24h',\n TokenCreatedAt: 'tokenCreatedAt'\n} as const;\nexport type GetHotTokensSortByEnum = typeof GetHotTokensSortByEnum[keyof typeof GetHotTokensSortByEnum];\n/**\n * @export\n */\nexport const GetHotTokensSortDirectionEnum = {\n Asc: 'ASC',\n Desc: 'DESC'\n} as const;\nexport type GetHotTokensSortDirectionEnum = typeof GetHotTokensSortDirectionEnum[keyof typeof GetHotTokensSortDirectionEnum];\n/**\n * @export\n */\nexport const GetHotTokensTagEnum = {\n PumpFun: 'pump_fun',\n RaydiumLaunchpad: 'raydium_launchpad',\n MeteoraDynamicBoundingCurve: 'meteora_dynamic_bounding_curve',\n BonkFun: 'bonk_fun',\n MoonitFun: 'moonit_fun'\n} as const;\nexport type GetHotTokensTagEnum = typeof GetHotTokensTagEnum[keyof typeof GetHotTokensTagEnum];\n/**\n * @export\n */\nexport const GetMigratedTokensSortByEnum = {\n MarketDataPriceInUsd: 'marketData.priceInUsd',\n StatsPriceChangeRatioInUsd1m: 'stats.priceChangeRatioInUsd1m',\n StatsPriceChangeRatioInUsd5m: 'stats.priceChangeRatioInUsd5m',\n StatsPriceChangeRatioInUsd1h: 'stats.priceChangeRatioInUsd1h',\n StatsPriceChangeRatioInUsd4h: 'stats.priceChangeRatioInUsd4h',\n StatsPriceChangeRatioInUsd24h: 'stats.priceChangeRatioInUsd24h',\n MarketDataMarketCapInUsd: 'marketData.marketCapInUsd',\n MarketDataTvlInUsd: 'marketData.tvlInUsd',\n MarketDataTop10TotalHoldings: 'marketData.top10TotalHoldings',\n MarketDataTop10HoldingsRatio: 'marketData.top10HoldingsRatio',\n MarketDataTop100TotalHoldings: 'marketData.top100TotalHoldings',\n MarketDataTop100HoldingsRatio: 'marketData.top100HoldingsRatio',\n MarketDataHolders: 'marketData.holders',\n MarketDataCreatorHoldings: 'marketData.creatorHoldings',\n MarketDataCreatorHoldingsRatio: 'marketData.creatorHoldingsRatio',\n StatsBuys1m: 'stats.buys1m',\n StatsBuys5m: 'stats.buys5m',\n StatsBuys15m: 'stats.buys15m',\n StatsBuys30m: 'stats.buys30m',\n StatsBuys1h: 'stats.buys1h',\n StatsBuys4h: 'stats.buys4h',\n StatsBuys24h: 'stats.buys24h',\n StatsSells1m: 'stats.sells1m',\n StatsSells5m: 'stats.sells5m',\n StatsSells15m: 'stats.sells15m',\n StatsSells30m: 'stats.sells30m',\n StatsSells1h: 'stats.sells1h',\n StatsSells4h: 'stats.sells4h',\n StatsSells24h: 'stats.sells24h',\n StatsTrades1m: 'stats.trades1m',\n StatsTrades5m: 'stats.trades5m',\n StatsTrades1h: 'stats.trades1h',\n StatsTrades4h: 'stats.trades4h',\n StatsTrades24h: 'stats.trades24h',\n StatsTraders1m: 'stats.traders1m',\n StatsTraders5m: 'stats.traders5m',\n StatsTraders1h: 'stats.traders1h',\n StatsTraders4h: 'stats.traders4h',\n StatsTraders24h: 'stats.traders24h',\n StatsVolumesInUsd1m: 'stats.volumesInUsd1m',\n StatsVolumesInUsd5m: 'stats.volumesInUsd5m',\n StatsVolumesInUsd1h: 'stats.volumesInUsd1h',\n StatsVolumesInUsd4h: 'stats.volumesInUsd4h',\n StatsVolumesInUsd24h: 'stats.volumesInUsd24h',\n TokenCreatedAt: 'tokenCreatedAt'\n} as const;\nexport type GetMigratedTokensSortByEnum = typeof GetMigratedTokensSortByEnum[keyof typeof GetMigratedTokensSortByEnum];\n/**\n * @export\n */\nexport const GetMigratedTokensSortDirectionEnum = {\n Asc: 'ASC',\n Desc: 'DESC'\n} as const;\nexport type GetMigratedTokensSortDirectionEnum = typeof GetMigratedTokensSortDirectionEnum[keyof typeof GetMigratedTokensSortDirectionEnum];\n/**\n * @export\n */\nexport const GetMigratedTokensTagEnum = {\n PumpFun: 'pump_fun',\n RaydiumLaunchpad: 'raydium_launchpad',\n MeteoraDynamicBoundingCurve: 'meteora_dynamic_bounding_curve',\n BonkFun: 'bonk_fun',\n MoonitFun: 'moonit_fun'\n} as const;\nexport type GetMigratedTokensTagEnum = typeof GetMigratedTokensTagEnum[keyof typeof GetMigratedTokensTagEnum];\n/**\n * @export\n */\nexport const GetNewTokensSortByEnum = {\n MarketDataPriceInUsd: 'marketData.priceInUsd',\n StatsPriceChangeRatioInUsd1m: 'stats.priceChangeRatioInUsd1m',\n StatsPriceChangeRatioInUsd5m: 'stats.priceChangeRatioInUsd5m',\n StatsPriceChangeRatioInUsd1h: 'stats.priceChangeRatioInUsd1h',\n StatsPriceChangeRatioInUsd4h: 'stats.priceChangeRatioInUsd4h',\n StatsPriceChangeRatioInUsd24h: 'stats.priceChangeRatioInUsd24h',\n MarketDataMarketCapInUsd: 'marketData.marketCapInUsd',\n MarketDataTvlInUsd: 'marketData.tvlInUsd',\n MarketDataTop10TotalHoldings: 'marketData.top10TotalHoldings',\n MarketDataTop10HoldingsRatio: 'marketData.top10HoldingsRatio',\n MarketDataTop100TotalHoldings: 'marketData.top100TotalHoldings',\n MarketDataTop100HoldingsRatio: 'marketData.top100HoldingsRatio',\n MarketDataHolders: 'marketData.holders',\n MarketDataCreatorHoldings: 'marketData.creatorHoldings',\n MarketDataCreatorHoldingsRatio: 'marketData.creatorHoldingsRatio',\n StatsBuys1m: 'stats.buys1m',\n StatsBuys5m: 'stats.buys5m',\n StatsBuys15m: 'stats.buys15m',\n StatsBuys30m: 'stats.buys30m',\n StatsBuys1h: 'stats.buys1h',\n StatsBuys4h: 'stats.buys4h',\n StatsBuys24h: 'stats.buys24h',\n StatsSells1m: 'stats.sells1m',\n StatsSells5m: 'stats.sells5m',\n StatsSells15m: 'stats.sells15m',\n StatsSells30m: 'stats.sells30m',\n StatsSells1h: 'stats.sells1h',\n StatsSells4h: 'stats.sells4h',\n StatsSells24h: 'stats.sells24h',\n StatsTrades1m: 'stats.trades1m',\n StatsTrades5m: 'stats.trades5m',\n StatsTrades1h: 'stats.trades1h',\n StatsTrades4h: 'stats.trades4h',\n StatsTrades24h: 'stats.trades24h',\n StatsTraders1m: 'stats.traders1m',\n StatsTraders5m: 'stats.traders5m',\n StatsTraders1h: 'stats.traders1h',\n StatsTraders4h: 'stats.traders4h',\n StatsTraders24h: 'stats.traders24h',\n StatsVolumesInUsd1m: 'stats.volumesInUsd1m',\n StatsVolumesInUsd5m: 'stats.volumesInUsd5m',\n StatsVolumesInUsd1h: 'stats.volumesInUsd1h',\n StatsVolumesInUsd4h: 'stats.volumesInUsd4h',\n StatsVolumesInUsd24h: 'stats.volumesInUsd24h',\n TokenCreatedAt: 'tokenCreatedAt'\n} as const;\nexport type GetNewTokensSortByEnum = typeof GetNewTokensSortByEnum[keyof typeof GetNewTokensSortByEnum];\n/**\n * @export\n */\nexport const GetNewTokensSortDirectionEnum = {\n Asc: 'ASC',\n Desc: 'DESC'\n} as const;\nexport type GetNewTokensSortDirectionEnum = typeof GetNewTokensSortDirectionEnum[keyof typeof GetNewTokensSortDirectionEnum];\n/**\n * @export\n */\nexport const GetNewTokensTagEnum = {\n PumpFun: 'pump_fun',\n RaydiumLaunchpad: 'raydium_launchpad',\n MeteoraDynamicBoundingCurve: 'meteora_dynamic_bounding_curve',\n BonkFun: 'bonk_fun',\n MoonitFun: 'moonit_fun'\n} as const;\nexport type GetNewTokensTagEnum = typeof GetNewTokensTagEnum[keyof typeof GetNewTokensTagEnum];\n/**\n * @export\n */\nexport const GetStocksTokensSortByEnum = {\n MarketDataPriceInUsd: 'marketData.priceInUsd',\n StatsPriceChangeRatioInUsd1m: 'stats.priceChangeRatioInUsd1m',\n StatsPriceChangeRatioInUsd5m: 'stats.priceChangeRatioInUsd5m',\n StatsPriceChangeRatioInUsd1h: 'stats.priceChangeRatioInUsd1h',\n StatsPriceChangeRatioInUsd4h: 'stats.priceChangeRatioInUsd4h',\n StatsPriceChangeRatioInUsd24h: 'stats.priceChangeRatioInUsd24h',\n MarketDataMarketCapInUsd: 'marketData.marketCapInUsd',\n MarketDataTvlInUsd: 'marketData.tvlInUsd',\n MarketDataTop10TotalHoldings: 'marketData.top10TotalHoldings',\n MarketDataTop10HoldingsRatio: 'marketData.top10HoldingsRatio',\n MarketDataTop100TotalHoldings: 'marketData.top100TotalHoldings',\n MarketDataTop100HoldingsRatio: 'marketData.top100HoldingsRatio',\n MarketDataHolders: 'marketData.holders',\n MarketDataCreatorHoldings: 'marketData.creatorHoldings',\n MarketDataCreatorHoldingsRatio: 'marketData.creatorHoldingsRatio',\n StatsBuys1m: 'stats.buys1m',\n StatsBuys5m: 'stats.buys5m',\n StatsBuys15m: 'stats.buys15m',\n StatsBuys30m: 'stats.buys30m',\n StatsBuys1h: 'stats.buys1h',\n StatsBuys4h: 'stats.buys4h',\n StatsBuys24h: 'stats.buys24h',\n StatsSells1m: 'stats.sells1m',\n StatsSells5m: 'stats.sells5m',\n StatsSells15m: 'stats.sells15m',\n StatsSells30m: 'stats.sells30m',\n StatsSells1h: 'stats.sells1h',\n StatsSells4h: 'stats.sells4h',\n StatsSells24h: 'stats.sells24h',\n StatsTrades1m: 'stats.trades1m',\n StatsTrades5m: 'stats.trades5m',\n StatsTrades1h: 'stats.trades1h',\n StatsTrades4h: 'stats.trades4h',\n StatsTrades24h: 'stats.trades24h',\n StatsTraders1m: 'stats.traders1m',\n StatsTraders5m: 'stats.traders5m',\n StatsTraders1h: 'stats.traders1h',\n StatsTraders4h: 'stats.traders4h',\n StatsTraders24h: 'stats.traders24h',\n StatsVolumesInUsd1m: 'stats.volumesInUsd1m',\n StatsVolumesInUsd5m: 'stats.volumesInUsd5m',\n StatsVolumesInUsd1h: 'stats.volumesInUsd1h',\n StatsVolumesInUsd4h: 'stats.volumesInUsd4h',\n StatsVolumesInUsd24h: 'stats.volumesInUsd24h',\n TokenCreatedAt: 'tokenCreatedAt'\n} as const;\nexport type GetStocksTokensSortByEnum = typeof GetStocksTokensSortByEnum[keyof typeof GetStocksTokensSortByEnum];\n/**\n * @export\n */\nexport const GetStocksTokensSortDirectionEnum = {\n Asc: 'ASC',\n Desc: 'DESC'\n} as const;\nexport type GetStocksTokensSortDirectionEnum = typeof GetStocksTokensSortDirectionEnum[keyof typeof GetStocksTokensSortDirectionEnum];\n/**\n * @export\n */\nexport const GetStocksTokensTagEnum = {\n PumpFun: 'pump_fun',\n RaydiumLaunchpad: 'raydium_launchpad',\n MeteoraDynamicBoundingCurve: 'meteora_dynamic_bounding_curve',\n BonkFun: 'bonk_fun',\n MoonitFun: 'moonit_fun'\n} as const;\nexport type GetStocksTokensTagEnum = typeof GetStocksTokensTagEnum[keyof typeof GetStocksTokensTagEnum];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ChainSymbol,\n ClaimRedPacketInput,\n CreateRedPacketInput,\n CreateRedPacketReply,\n RedPacketClaimsPage,\n RedPacketDTO,\n RedPacketReply,\n RedPacketSendTxInput,\n RedPacketSendTxResponse,\n RedPacketsPage,\n} from '../models/index';\nimport {\n ChainSymbolFromJSON,\n ChainSymbolToJSON,\n ClaimRedPacketInputFromJSON,\n ClaimRedPacketInputToJSON,\n CreateRedPacketInputFromJSON,\n CreateRedPacketInputToJSON,\n CreateRedPacketReplyFromJSON,\n CreateRedPacketReplyToJSON,\n RedPacketClaimsPageFromJSON,\n RedPacketClaimsPageToJSON,\n RedPacketDTOFromJSON,\n RedPacketDTOToJSON,\n RedPacketReplyFromJSON,\n RedPacketReplyToJSON,\n RedPacketSendTxInputFromJSON,\n RedPacketSendTxInputToJSON,\n RedPacketSendTxResponseFromJSON,\n RedPacketSendTxResponseToJSON,\n RedPacketsPageFromJSON,\n RedPacketsPageToJSON,\n} from '../models/index';\n\nexport interface ClaimRedpacketRequest {\n chain: ChainSymbol;\n claimRedPacketInput: ClaimRedPacketInput;\n}\n\nexport interface CreateRedpacketRequest {\n chain: ChainSymbol;\n createRedPacketInput: CreateRedPacketInput;\n}\n\nexport interface GetClaimsRequest {\n id: string;\n cursor?: string;\n limit?: number;\n direction?: string;\n}\n\nexport interface GetClaimsByAddressRequest {\n address: string;\n cursor?: string;\n limit?: number;\n direction?: string;\n}\n\nexport interface GetRedpacketRequest {\n id: string;\n}\n\nexport interface GetRedpacketsRequest {\n cursor?: string;\n limit?: number;\n direction?: string;\n creator?: string;\n chain?: GetRedpacketsChainEnum;\n}\n\nexport interface GetRedpacketsByAddressRequest {\n address: string;\n cursor?: string;\n limit?: number;\n direction?: string;\n}\n\nexport interface RedpacketSendRequest {\n chain: ChainSymbol;\n redPacketSendTxInput: RedPacketSendTxInput;\n}\n\n/**\n * \n */\nexport class RedPacketApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.RED_PACKET.CLAIM.DESCRIPTION\n * CONTROLLER.RED_PACKET.CLAIM.SUMMARY\n */\n async claimRedpacketRaw(requestParameters: ClaimRedpacketRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<RedPacketReply>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling claimRedpacket().'\n );\n }\n\n if (requestParameters['claimRedPacketInput'] == null) {\n throw new runtime.RequiredError(\n 'claimRedPacketInput',\n 'Required parameter \"claimRedPacketInput\" was null or undefined when calling claimRedpacket().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/redpacket/{chain}/claim`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: ClaimRedPacketInputToJSON(requestParameters['claimRedPacketInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => RedPacketReplyFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.RED_PACKET.CLAIM.DESCRIPTION\n * CONTROLLER.RED_PACKET.CLAIM.SUMMARY\n */\n async claimRedpacket(requestParameters: ClaimRedpacketRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<RedPacketReply> {\n const response = await this.claimRedpacketRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RED_PACKET.CREATE.DESCRIPTION\n * CONTROLLER.RED_PACKET.CREATE.SUMMARY\n */\n async createRedpacketRaw(requestParameters: CreateRedpacketRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CreateRedPacketReply>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling createRedpacket().'\n );\n }\n\n if (requestParameters['createRedPacketInput'] == null) {\n throw new runtime.RequiredError(\n 'createRedPacketInput',\n 'Required parameter \"createRedPacketInput\" was null or undefined when calling createRedpacket().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/redpacket/{chain}/create`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: CreateRedPacketInputToJSON(requestParameters['createRedPacketInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => CreateRedPacketReplyFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.RED_PACKET.CREATE.DESCRIPTION\n * CONTROLLER.RED_PACKET.CREATE.SUMMARY\n */\n async createRedpacket(requestParameters: CreateRedpacketRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CreateRedPacketReply> {\n const response = await this.createRedpacketRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RED_PACKET.GET_CLAIMS.DESCRIPTION\n * CONTROLLER.RED_PACKET.GET_CLAIMS.SUMMARY\n */\n async getClaimsRaw(requestParameters: GetClaimsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<RedPacketClaimsPage>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling getClaims().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['direction'] != null) {\n queryParameters['direction'] = requestParameters['direction'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/redpacket/{id}/claims`;\n urlPath = urlPath.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => RedPacketClaimsPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.RED_PACKET.GET_CLAIMS.DESCRIPTION\n * CONTROLLER.RED_PACKET.GET_CLAIMS.SUMMARY\n */\n async getClaims(requestParameters: GetClaimsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<RedPacketClaimsPage> {\n const response = await this.getClaimsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RED_PACKET.GET_CLAIMS_BY_ADDRESS.DESCRIPTION\n * CONTROLLER.RED_PACKET.GET_CLAIMS_BY_ADDRESS.SUMMARY\n */\n async getClaimsByAddressRaw(requestParameters: GetClaimsByAddressRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<RedPacketClaimsPage>> {\n if (requestParameters['address'] == null) {\n throw new runtime.RequiredError(\n 'address',\n 'Required parameter \"address\" was null or undefined when calling getClaimsByAddress().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['direction'] != null) {\n queryParameters['direction'] = requestParameters['direction'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/redpacket/wallet/{address}/claims`;\n urlPath = urlPath.replace(`{${\"address\"}}`, encodeURIComponent(String(requestParameters['address'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => RedPacketClaimsPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.RED_PACKET.GET_CLAIMS_BY_ADDRESS.DESCRIPTION\n * CONTROLLER.RED_PACKET.GET_CLAIMS_BY_ADDRESS.SUMMARY\n */\n async getClaimsByAddress(requestParameters: GetClaimsByAddressRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<RedPacketClaimsPage> {\n const response = await this.getClaimsByAddressRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RED_PACKET.GET.DESCRIPTION\n * CONTROLLER.RED_PACKET.GET.SUMMARY\n */\n async getRedpacketRaw(requestParameters: GetRedpacketRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<RedPacketDTO>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling getRedpacket().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/redpacket/{id}`;\n urlPath = urlPath.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => RedPacketDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.RED_PACKET.GET.DESCRIPTION\n * CONTROLLER.RED_PACKET.GET.SUMMARY\n */\n async getRedpacket(requestParameters: GetRedpacketRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<RedPacketDTO> {\n const response = await this.getRedpacketRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RED_PACKET.GET_REDPACKETS.DESCRIPTION\n * CONTROLLER.RED_PACKET.GET_REDPACKETS.SUMMARY\n */\n async getRedpacketsRaw(requestParameters: GetRedpacketsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<RedPacketsPage>> {\n const queryParameters: any = {};\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['direction'] != null) {\n queryParameters['direction'] = requestParameters['direction'];\n }\n\n if (requestParameters['creator'] != null) {\n queryParameters['creator'] = requestParameters['creator'];\n }\n\n if (requestParameters['chain'] != null) {\n queryParameters['chain'] = requestParameters['chain'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/redpacket`;\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => RedPacketsPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.RED_PACKET.GET_REDPACKETS.DESCRIPTION\n * CONTROLLER.RED_PACKET.GET_REDPACKETS.SUMMARY\n */\n async getRedpackets(requestParameters: GetRedpacketsRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<RedPacketsPage> {\n const response = await this.getRedpacketsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RED_PACKET.GET_REDPACKETS_BY_ADDRESS.DESCRIPTION\n * CONTROLLER.RED_PACKET.GET_REDPACKETS_BY_ADDRESS.SUMMARY\n */\n async getRedpacketsByAddressRaw(requestParameters: GetRedpacketsByAddressRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<RedPacketsPage>> {\n if (requestParameters['address'] == null) {\n throw new runtime.RequiredError(\n 'address',\n 'Required parameter \"address\" was null or undefined when calling getRedpacketsByAddress().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['direction'] != null) {\n queryParameters['direction'] = requestParameters['direction'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/redpacket/wallet/{address}/redpackets`;\n urlPath = urlPath.replace(`{${\"address\"}}`, encodeURIComponent(String(requestParameters['address'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => RedPacketsPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.RED_PACKET.GET_REDPACKETS_BY_ADDRESS.DESCRIPTION\n * CONTROLLER.RED_PACKET.GET_REDPACKETS_BY_ADDRESS.SUMMARY\n */\n async getRedpacketsByAddress(requestParameters: GetRedpacketsByAddressRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<RedPacketsPage> {\n const response = await this.getRedpacketsByAddressRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RED_PACKET.SEND.DESCRIPTION\n * CONTROLLER.RED_PACKET.SEND.SUMMARY\n */\n async redpacketSendRaw(requestParameters: RedpacketSendRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<RedPacketSendTxResponse>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling redpacketSend().'\n );\n }\n\n if (requestParameters['redPacketSendTxInput'] == null) {\n throw new runtime.RequiredError(\n 'redPacketSendTxInput',\n 'Required parameter \"redPacketSendTxInput\" was null or undefined when calling redpacketSend().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/redpacket/{chain}/send`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: RedPacketSendTxInputToJSON(requestParameters['redPacketSendTxInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => RedPacketSendTxResponseFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.RED_PACKET.SEND.DESCRIPTION\n * CONTROLLER.RED_PACKET.SEND.SUMMARY\n */\n async redpacketSend(requestParameters: RedpacketSendRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<RedPacketSendTxResponse> {\n const response = await this.redpacketSendRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n\n/**\n * @export\n */\nexport const GetRedpacketsChainEnum = {\n Sol: 'sol',\n Base: 'base',\n Bsc: 'bsc',\n Polygon: 'polygon',\n Arbitrum: 'arbitrum',\n Optimism: 'optimism',\n Avalanche: 'avalanche',\n Eth: 'eth',\n Zksync: 'zksync',\n Sui: 'sui'\n} as const;\nexport type GetRedpacketsChainEnum = typeof GetRedpacketsChainEnum[keyof typeof GetRedpacketsChainEnum];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n Candle,\n ChainSymbol,\n DevTokenDTO,\n DexPoolDTO,\n FilterCondition,\n Resolution,\n Token,\n TokenCreationDTO,\n TokenCreationPage,\n TokenHolder,\n TokenHolderPage,\n TokenListPage,\n TokenMarketData,\n TokenMetadata,\n TokenPage,\n TokenPriceDTO,\n TokenPricePage,\n TokenStat,\n TokenTrader,\n TokenTraderTag,\n} from '../models/index';\nimport {\n CandleFromJSON,\n CandleToJSON,\n ChainSymbolFromJSON,\n ChainSymbolToJSON,\n DevTokenDTOFromJSON,\n DevTokenDTOToJSON,\n DexPoolDTOFromJSON,\n DexPoolDTOToJSON,\n FilterConditionFromJSON,\n FilterConditionToJSON,\n ResolutionFromJSON,\n ResolutionToJSON,\n TokenFromJSON,\n TokenToJSON,\n TokenCreationDTOFromJSON,\n TokenCreationDTOToJSON,\n TokenCreationPageFromJSON,\n TokenCreationPageToJSON,\n TokenHolderFromJSON,\n TokenHolderToJSON,\n TokenHolderPageFromJSON,\n TokenHolderPageToJSON,\n TokenListPageFromJSON,\n TokenListPageToJSON,\n TokenMarketDataFromJSON,\n TokenMarketDataToJSON,\n TokenMetadataFromJSON,\n TokenMetadataToJSON,\n TokenPageFromJSON,\n TokenPageToJSON,\n TokenPriceDTOFromJSON,\n TokenPriceDTOToJSON,\n TokenPricePageFromJSON,\n TokenPricePageToJSON,\n TokenStatFromJSON,\n TokenStatToJSON,\n TokenTraderFromJSON,\n TokenTraderToJSON,\n TokenTraderTagFromJSON,\n TokenTraderTagToJSON,\n} from '../models/index';\n\nexport interface GetCandlesRequest {\n chain: ChainSymbol;\n tokenAddress: string;\n resolution: Resolution;\n from?: number;\n to?: number;\n limit?: number;\n}\n\nexport interface GetCreationRequest {\n chain: ChainSymbol;\n tokenAddress: string;\n}\n\nexport interface GetDevTokensRequest {\n chain: ChainSymbol;\n devAddress: string;\n}\n\nexport interface GetHoldersRequest {\n chain: ChainSymbol;\n tokenAddress: string;\n cursor?: string;\n limit?: number;\n direction?: GetHoldersDirectionEnum;\n}\n\nexport interface GetHoldersMultiRequest {\n chain: ChainSymbol;\n tokenAddress: string;\n walletAddresses: string;\n}\n\nexport interface GetMarketDataRequest {\n chain: ChainSymbol;\n tokenAddress: string;\n}\n\nexport interface GetMarketDataMultiRequest {\n chain: ChainSymbol;\n tokenAddresses: string;\n}\n\nexport interface GetMetadataRequest {\n chain: ChainSymbol;\n tokenAddress: string;\n}\n\nexport interface GetMetadataMultiRequest {\n chain: ChainSymbol;\n tokenAddresses: string;\n}\n\nexport interface GetMintAndBurnRequest {\n chain: ChainSymbol;\n tokenAddress: string;\n cursor?: string;\n limit?: number;\n direction?: GetMintAndBurnDirectionEnum;\n type?: GetMintAndBurnTypeEnum;\n}\n\nexport interface GetPoolsRequest {\n chain: ChainSymbol;\n tokenAddress: string;\n sortBy?: GetPoolsSortByEnum;\n sortDirection?: GetPoolsSortDirectionEnum;\n minTvlInSol?: string;\n maxTvlInSol?: string;\n minTvlInUsd?: string;\n maxTvlInUsd?: string;\n}\n\nexport interface GetPriceByTimeRequest {\n chain: ChainSymbol;\n tokenAddress: string;\n timestamp: number;\n}\n\nexport interface GetPricesRequest {\n chain: ChainSymbol;\n tokenAddress: string;\n cursor?: string;\n limit?: number;\n direction?: GetPricesDirectionEnum;\n}\n\nexport interface GetSecurityRequest {\n chain: ChainSymbol;\n tokenAddress: string;\n}\n\nexport interface GetStatsRequest {\n chain: ChainSymbol;\n tokenAddress: string;\n}\n\nexport interface GetStatsMultiRequest {\n chain: ChainSymbol;\n tokenAddresses: string;\n}\n\nexport interface GetTokenRequest {\n chain: ChainSymbol;\n tokenAddress: string;\n}\n\nexport interface GetTokenTradersRequest {\n chain: ChainSymbol;\n tokenAddress: string;\n tag: TokenTraderTag;\n}\n\nexport interface GetTokensRequest {\n chain: ChainSymbol;\n tokenAddresses: string;\n sortBy?: GetTokensSortByEnum;\n sortDirection?: GetTokensSortDirectionEnum;\n filterBy?: Array<FilterCondition>;\n}\n\nexport interface GetTopHoldersRequest {\n chain: ChainSymbol;\n tokenAddress: string;\n}\n\nexport interface ListTokenRequest {\n chain: ChainSymbol;\n cursor?: string;\n limit?: number;\n direction?: ListTokenDirectionEnum;\n sort?: ListTokenSortEnum;\n sortBy?: ListTokenSortByEnum;\n minH24VolumeInUsd?: string;\n maxH24VolumeInUsd?: string;\n minH24PriceChangeRatio?: string;\n maxH24PriceChangeRatio?: string;\n minH24Buys?: string;\n maxH24Buys?: string;\n minH24Sells?: string;\n maxH24Sells?: string;\n minH24Trades?: string;\n maxH24Trades?: string;\n minH24Buyers?: string;\n maxH24Buyers?: string;\n minH24Sellers?: string;\n maxH24Sellers?: string;\n minH24BuyVolumeInUsd?: string;\n maxH24BuyVolumeInUsd?: string;\n minH24SellVolumeInUsd?: string;\n maxH24SellVolumeInUsd?: string;\n minH4VolumeInUsd?: string;\n maxH4VolumeInUsd?: string;\n minH4PriceChangeRatio?: string;\n maxH4PriceChangeRatio?: string;\n minH4Buys?: string;\n maxH4Buys?: string;\n minH4Sells?: string;\n maxH4Sells?: string;\n minH4Trades?: string;\n maxH4Trades?: string;\n minH4Buyers?: string;\n maxH4Buyers?: string;\n minH4Sellers?: string;\n maxH4Sellers?: string;\n minH4BuyVolumeInUsd?: string;\n maxH4BuyVolumeInUsd?: string;\n minH4SellVolumeInUsd?: string;\n maxH4SellVolumeInUsd?: string;\n minH1VolumeInUsd?: string;\n maxH1VolumeInUsd?: string;\n minH1PriceChangeRatio?: string;\n maxH1PriceChangeRatio?: string;\n minH1Buys?: string;\n maxH1Buys?: string;\n minH1Sells?: string;\n maxH1Sells?: string;\n minH1Trades?: string;\n maxH1Trades?: string;\n minH1Buyers?: string;\n maxH1Buyers?: string;\n minH1Sellers?: string;\n maxH1Sellers?: string;\n minH1BuyVolumeInUsd?: string;\n maxH1BuyVolumeInUsd?: string;\n minH1SellVolumeInUsd?: string;\n maxH1SellVolumeInUsd?: string;\n minM30VolumeInUsd?: string;\n maxM30VolumeInUsd?: string;\n minM30PriceChangeRatio?: string;\n maxM30PriceChangeRatio?: string;\n minM30Buys?: string;\n maxM30Buys?: string;\n minM30Sells?: string;\n maxM30Sells?: string;\n minM30Trades?: string;\n maxM30Trades?: string;\n minM30Buyers?: string;\n maxM30Buyers?: string;\n minM30Sellers?: string;\n maxM30Sellers?: string;\n minM30BuyVolumeInUsd?: string;\n maxM30BuyVolumeInUsd?: string;\n minM30SellVolumeInUsd?: string;\n maxM30SellVolumeInUsd?: string;\n minM15VolumeInUsd?: string;\n maxM15VolumeInUsd?: string;\n minM15PriceChangeRatio?: string;\n maxM15PriceChangeRatio?: string;\n minM15Buys?: string;\n maxM15Buys?: string;\n minM15Sells?: string;\n maxM15Sells?: string;\n minM15Trades?: string;\n maxM15Trades?: string;\n minM15Buyers?: string;\n maxM15Buyers?: string;\n minM15Sellers?: string;\n maxM15Sellers?: string;\n minM15BuyVolumeInUsd?: string;\n maxM15BuyVolumeInUsd?: string;\n minM15SellVolumeInUsd?: string;\n maxM15SellVolumeInUsd?: string;\n minM5VolumeInUsd?: string;\n maxM5VolumeInUsd?: string;\n minM5PriceChangeRatio?: string;\n maxM5PriceChangeRatio?: string;\n minM5Buys?: string;\n maxM5Buys?: string;\n minM5Sells?: string;\n maxM5Sells?: string;\n minM5Trades?: string;\n maxM5Trades?: string;\n minM5Buyers?: string;\n maxM5Buyers?: string;\n minM5Sellers?: string;\n maxM5Sellers?: string;\n minM5BuyVolumeInUsd?: string;\n maxM5BuyVolumeInUsd?: string;\n minM5SellVolumeInUsd?: string;\n maxM5SellVolumeInUsd?: string;\n minM1VolumeInUsd?: string;\n maxM1VolumeInUsd?: string;\n minM1PriceChangeRatio?: string;\n maxM1PriceChangeRatio?: string;\n minM1Buys?: string;\n maxM1Buys?: string;\n minM1Sells?: string;\n maxM1Sells?: string;\n minM1Trades?: string;\n maxM1Trades?: string;\n minM1Buyers?: string;\n maxM1Buyers?: string;\n minM1Sellers?: string;\n maxM1Sellers?: string;\n minM1BuyVolumeInUsd?: string;\n maxM1BuyVolumeInUsd?: string;\n minM1SellVolumeInUsd?: string;\n maxM1SellVolumeInUsd?: string;\n}\n\nexport interface SearchRequest {\n chains?: Array<string>;\n q?: string;\n limit?: number;\n sort?: SearchSortEnum;\n protocols?: Array<string>;\n cursor?: string;\n sortBy?: SearchSortByEnum;\n}\n\n/**\n * \n */\nexport class TokenApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.TOKEN.GET_CANDLES.DESCRIPTION\n * CONTROLLER.TOKEN.GET_CANDLES.SUMMARY\n */\n async getCandlesRaw(requestParameters: GetCandlesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Candle>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getCandles().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getCandles().'\n );\n }\n\n if (requestParameters['resolution'] == null) {\n throw new runtime.RequiredError(\n 'resolution',\n 'Required parameter \"resolution\" was null or undefined when calling getCandles().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['resolution'] != null) {\n queryParameters['resolution'] = requestParameters['resolution'];\n }\n\n if (requestParameters['from'] != null) {\n queryParameters['from'] = requestParameters['from'];\n }\n\n if (requestParameters['to'] != null) {\n queryParameters['to'] = requestParameters['to'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/candles`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(CandleFromJSON));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_CANDLES.DESCRIPTION\n * CONTROLLER.TOKEN.GET_CANDLES.SUMMARY\n */\n async getCandles(requestParameters: GetCandlesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Candle>> {\n const response = await this.getCandlesRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_CREATION.DESCRIPTION\n * CONTROLLER.TOKEN.GET_CREATION.SUMMARY\n */\n async getCreationRaw(requestParameters: GetCreationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenCreationDTO>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getCreation().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getCreation().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/creation`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenCreationDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_CREATION.DESCRIPTION\n * CONTROLLER.TOKEN.GET_CREATION.SUMMARY\n */\n async getCreation(requestParameters: GetCreationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenCreationDTO> {\n const response = await this.getCreationRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_DEV_TOKENS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_DEV_TOKENS.SUMMARY\n */\n async getDevTokensRaw(requestParameters: GetDevTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<DevTokenDTO>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getDevTokens().'\n );\n }\n\n if (requestParameters['devAddress'] == null) {\n throw new runtime.RequiredError(\n 'devAddress',\n 'Required parameter \"devAddress\" was null or undefined when calling getDevTokens().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/dev/{devAddress}/tokens`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"devAddress\"}}`, encodeURIComponent(String(requestParameters['devAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(DevTokenDTOFromJSON));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_DEV_TOKENS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_DEV_TOKENS.SUMMARY\n */\n async getDevTokens(requestParameters: GetDevTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<DevTokenDTO>> {\n const response = await this.getDevTokensRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_HOLDERS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_HOLDERS.SUMMARY\n */\n async getHoldersRaw(requestParameters: GetHoldersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenHolderPage>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getHolders().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getHolders().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['direction'] != null) {\n queryParameters['direction'] = requestParameters['direction'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/holders`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenHolderPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_HOLDERS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_HOLDERS.SUMMARY\n */\n async getHolders(requestParameters: GetHoldersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenHolderPage> {\n const response = await this.getHoldersRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_HOLDERS_MULTI.DESCRIPTION\n * CONTROLLER.TOKEN.GET_HOLDERS_MULTI.SUMMARY\n */\n async getHoldersMultiRaw(requestParameters: GetHoldersMultiRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<TokenHolder>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getHoldersMulti().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getHoldersMulti().'\n );\n }\n\n if (requestParameters['walletAddresses'] == null) {\n throw new runtime.RequiredError(\n 'walletAddresses',\n 'Required parameter \"walletAddresses\" was null or undefined when calling getHoldersMulti().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['walletAddresses'] != null) {\n queryParameters['walletAddresses'] = requestParameters['walletAddresses'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/holders/multi`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(TokenHolderFromJSON));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_HOLDERS_MULTI.DESCRIPTION\n * CONTROLLER.TOKEN.GET_HOLDERS_MULTI.SUMMARY\n */\n async getHoldersMulti(requestParameters: GetHoldersMultiRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<TokenHolder>> {\n const response = await this.getHoldersMultiRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_MARKET_CAP.DESCRIPTION\n * CONTROLLER.TOKEN.GET_MARKET_CAP.SUMMARY\n */\n async getMarketDataRaw(requestParameters: GetMarketDataRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenMarketData>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getMarketData().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getMarketData().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/marketData`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenMarketDataFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_MARKET_CAP.DESCRIPTION\n * CONTROLLER.TOKEN.GET_MARKET_CAP.SUMMARY\n */\n async getMarketData(requestParameters: GetMarketDataRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenMarketData> {\n const response = await this.getMarketDataRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_MARKET_DATA_MULTI.DESCRIPTION\n * CONTROLLER.TOKEN.GET_MARKET_DATA_MULTI.SUMMARY\n */\n async getMarketDataMultiRaw(requestParameters: GetMarketDataMultiRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<{ [key: string]: TokenMarketData; }>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getMarketDataMulti().'\n );\n }\n\n if (requestParameters['tokenAddresses'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddresses',\n 'Required parameter \"tokenAddresses\" was null or undefined when calling getMarketDataMulti().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['tokenAddresses'] != null) {\n queryParameters['tokenAddresses'] = requestParameters['tokenAddresses'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/marketData/multi`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => runtime.mapValues(jsonValue, TokenMarketDataFromJSON));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_MARKET_DATA_MULTI.DESCRIPTION\n * CONTROLLER.TOKEN.GET_MARKET_DATA_MULTI.SUMMARY\n */\n async getMarketDataMulti(requestParameters: GetMarketDataMultiRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{ [key: string]: TokenMarketData; }> {\n const response = await this.getMarketDataMultiRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_METADATA.DESCRIPTION\n * CONTROLLER.TOKEN.GET_METADATA.SUMMARY\n */\n async getMetadataRaw(requestParameters: GetMetadataRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenMetadata>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getMetadata().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getMetadata().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/metadata`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenMetadataFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_METADATA.DESCRIPTION\n * CONTROLLER.TOKEN.GET_METADATA.SUMMARY\n */\n async getMetadata(requestParameters: GetMetadataRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenMetadata> {\n const response = await this.getMetadataRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_METADATA_MULTI.DESCRIPTION\n * CONTROLLER.TOKEN.GET_METADATA_MULTI.SUMMARY\n */\n async getMetadataMultiRaw(requestParameters: GetMetadataMultiRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<{ [key: string]: TokenMetadata; }>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getMetadataMulti().'\n );\n }\n\n if (requestParameters['tokenAddresses'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddresses',\n 'Required parameter \"tokenAddresses\" was null or undefined when calling getMetadataMulti().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['tokenAddresses'] != null) {\n queryParameters['tokenAddresses'] = requestParameters['tokenAddresses'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/metadata/multi`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => runtime.mapValues(jsonValue, TokenMetadataFromJSON));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_METADATA_MULTI.DESCRIPTION\n * CONTROLLER.TOKEN.GET_METADATA_MULTI.SUMMARY\n */\n async getMetadataMulti(requestParameters: GetMetadataMultiRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{ [key: string]: TokenMetadata; }> {\n const response = await this.getMetadataMultiRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_MINT_AND_BURN.DESCRIPTION\n * CONTROLLER.TOKEN.GET_MINT_AND_BURN.SUMMARY\n */\n async getMintAndBurnRaw(requestParameters: GetMintAndBurnRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenCreationPage>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getMintAndBurn().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getMintAndBurn().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['direction'] != null) {\n queryParameters['direction'] = requestParameters['direction'];\n }\n\n if (requestParameters['type'] != null) {\n queryParameters['type'] = requestParameters['type'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/mintAndBurn`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenCreationPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_MINT_AND_BURN.DESCRIPTION\n * CONTROLLER.TOKEN.GET_MINT_AND_BURN.SUMMARY\n */\n async getMintAndBurn(requestParameters: GetMintAndBurnRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenCreationPage> {\n const response = await this.getMintAndBurnRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_POOLS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_POOLS.SUMMARY\n */\n async getPoolsRaw(requestParameters: GetPoolsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<DexPoolDTO>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getPools().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getPools().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['sortBy'] != null) {\n queryParameters['sortBy'] = requestParameters['sortBy'];\n }\n\n if (requestParameters['sortDirection'] != null) {\n queryParameters['sortDirection'] = requestParameters['sortDirection'];\n }\n\n if (requestParameters['minTvlInSol'] != null) {\n queryParameters['minTvlInSol'] = requestParameters['minTvlInSol'];\n }\n\n if (requestParameters['maxTvlInSol'] != null) {\n queryParameters['maxTvlInSol'] = requestParameters['maxTvlInSol'];\n }\n\n if (requestParameters['minTvlInUsd'] != null) {\n queryParameters['minTvlInUsd'] = requestParameters['minTvlInUsd'];\n }\n\n if (requestParameters['maxTvlInUsd'] != null) {\n queryParameters['maxTvlInUsd'] = requestParameters['maxTvlInUsd'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/pools`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(DexPoolDTOFromJSON));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_POOLS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_POOLS.SUMMARY\n */\n async getPools(requestParameters: GetPoolsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<DexPoolDTO>> {\n const response = await this.getPoolsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_PRICE_BY_TIME.DESCRIPTION\n * CONTROLLER.TOKEN.GET_PRICE_BY_TIME.SUMMARY\n */\n async getPriceByTimeRaw(requestParameters: GetPriceByTimeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenPriceDTO>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getPriceByTime().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getPriceByTime().'\n );\n }\n\n if (requestParameters['timestamp'] == null) {\n throw new runtime.RequiredError(\n 'timestamp',\n 'Required parameter \"timestamp\" was null or undefined when calling getPriceByTime().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['timestamp'] != null) {\n queryParameters['timestamp'] = requestParameters['timestamp'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/price`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenPriceDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_PRICE_BY_TIME.DESCRIPTION\n * CONTROLLER.TOKEN.GET_PRICE_BY_TIME.SUMMARY\n */\n async getPriceByTime(requestParameters: GetPriceByTimeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenPriceDTO> {\n const response = await this.getPriceByTimeRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_PRICES.DESCRIPTION\n * CONTROLLER.TOKEN.GET_PRICES.SUMMARY\n */\n async getPricesRaw(requestParameters: GetPricesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenPricePage>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getPrices().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getPrices().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['direction'] != null) {\n queryParameters['direction'] = requestParameters['direction'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/prices`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenPricePageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_PRICES.DESCRIPTION\n * CONTROLLER.TOKEN.GET_PRICES.SUMMARY\n */\n async getPrices(requestParameters: GetPricesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenPricePage> {\n const response = await this.getPricesRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_SECURITY.DESCRIPTION\n * CONTROLLER.TOKEN.GET_SECURITY.SUMMARY\n */\n async getSecurityRaw(requestParameters: GetSecurityRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<object>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getSecurity().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getSecurity().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/security`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse<any>(response);\n }\n\n /**\n * CONTROLLER.TOKEN.GET_SECURITY.DESCRIPTION\n * CONTROLLER.TOKEN.GET_SECURITY.SUMMARY\n */\n async getSecurity(requestParameters: GetSecurityRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<object> {\n const response = await this.getSecurityRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_STATS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_STATS.SUMMARY\n */\n async getStatsRaw(requestParameters: GetStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenStat>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getStats().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getStats().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/stats`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenStatFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_STATS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_STATS.SUMMARY\n */\n async getStats(requestParameters: GetStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenStat> {\n const response = await this.getStatsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_STATS_MULTI.DESCRIPTION\n * CONTROLLER.TOKEN.GET_STATS_MULTI.SUMMARY\n */\n async getStatsMultiRaw(requestParameters: GetStatsMultiRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<{ [key: string]: TokenStat; }>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getStatsMulti().'\n );\n }\n\n if (requestParameters['tokenAddresses'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddresses',\n 'Required parameter \"tokenAddresses\" was null or undefined when calling getStatsMulti().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['tokenAddresses'] != null) {\n queryParameters['tokenAddresses'] = requestParameters['tokenAddresses'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/stats/multi`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => runtime.mapValues(jsonValue, TokenStatFromJSON));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_STATS_MULTI.DESCRIPTION\n * CONTROLLER.TOKEN.GET_STATS_MULTI.SUMMARY\n */\n async getStatsMulti(requestParameters: GetStatsMultiRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{ [key: string]: TokenStat; }> {\n const response = await this.getStatsMultiRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET.DESCRIPTION\n * CONTROLLER.TOKEN.GET.SUMMARY\n */\n async getTokenRaw(requestParameters: GetTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Token>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getToken().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getToken().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET.DESCRIPTION\n * CONTROLLER.TOKEN.GET.SUMMARY\n */\n async getToken(requestParameters: GetTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Token> {\n const response = await this.getTokenRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_TOKEN_TRADERS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_TOKEN_TRADERS.SUMMARY\n */\n async getTokenTradersRaw(requestParameters: GetTokenTradersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<TokenTrader>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getTokenTraders().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getTokenTraders().'\n );\n }\n\n if (requestParameters['tag'] == null) {\n throw new runtime.RequiredError(\n 'tag',\n 'Required parameter \"tag\" was null or undefined when calling getTokenTraders().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/traders/{tag}`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n urlPath = urlPath.replace(`{${\"tag\"}}`, encodeURIComponent(String(requestParameters['tag'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(TokenTraderFromJSON));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_TOKEN_TRADERS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_TOKEN_TRADERS.SUMMARY\n */\n async getTokenTraders(requestParameters: GetTokenTradersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<TokenTrader>> {\n const response = await this.getTokenTradersRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_TOKENS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_TOKENS.SUMMARY\n */\n async getTokensRaw(requestParameters: GetTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Token>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getTokens().'\n );\n }\n\n if (requestParameters['tokenAddresses'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddresses',\n 'Required parameter \"tokenAddresses\" was null or undefined when calling getTokens().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['tokenAddresses'] != null) {\n queryParameters['tokenAddresses'] = requestParameters['tokenAddresses'];\n }\n\n if (requestParameters['sortBy'] != null) {\n queryParameters['sortBy'] = requestParameters['sortBy'];\n }\n\n if (requestParameters['sortDirection'] != null) {\n queryParameters['sortDirection'] = requestParameters['sortDirection'];\n }\n\n if (requestParameters['filterBy'] != null) {\n queryParameters['filterBy'] = requestParameters['filterBy'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/multi`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(TokenFromJSON));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_TOKENS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_TOKENS.SUMMARY\n */\n async getTokens(requestParameters: GetTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Token>> {\n const response = await this.getTokensRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_TOP_HOLDERS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_TOP_HOLDERS.SUMMARY\n */\n async getTopHoldersRaw(requestParameters: GetTopHoldersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenHolderPage>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getTopHolders().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getTopHolders().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/topHolders`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenHolderPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_TOP_HOLDERS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_TOP_HOLDERS.SUMMARY\n */\n async getTopHolders(requestParameters: GetTopHoldersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenHolderPage> {\n const response = await this.getTopHoldersRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_TOKEN_LIST.DESCRIPTION\n * CONTROLLER.TOKEN.GET_TOKEN_LIST.SUMMARY\n */\n async listTokenRaw(requestParameters: ListTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenListPage>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling listToken().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['direction'] != null) {\n queryParameters['direction'] = requestParameters['direction'];\n }\n\n if (requestParameters['sort'] != null) {\n queryParameters['sort'] = requestParameters['sort'];\n }\n\n if (requestParameters['sortBy'] != null) {\n queryParameters['sortBy'] = requestParameters['sortBy'];\n }\n\n if (requestParameters['minH24VolumeInUsd'] != null) {\n queryParameters['min_h24_volume_in_usd'] = requestParameters['minH24VolumeInUsd'];\n }\n\n if (requestParameters['maxH24VolumeInUsd'] != null) {\n queryParameters['max_h24_volume_in_usd'] = requestParameters['maxH24VolumeInUsd'];\n }\n\n if (requestParameters['minH24PriceChangeRatio'] != null) {\n queryParameters['min_h24_price_change_ratio'] = requestParameters['minH24PriceChangeRatio'];\n }\n\n if (requestParameters['maxH24PriceChangeRatio'] != null) {\n queryParameters['max_h24_price_change_ratio'] = requestParameters['maxH24PriceChangeRatio'];\n }\n\n if (requestParameters['minH24Buys'] != null) {\n queryParameters['min_h24_buys'] = requestParameters['minH24Buys'];\n }\n\n if (requestParameters['maxH24Buys'] != null) {\n queryParameters['max_h24_buys'] = requestParameters['maxH24Buys'];\n }\n\n if (requestParameters['minH24Sells'] != null) {\n queryParameters['min_h24_sells'] = requestParameters['minH24Sells'];\n }\n\n if (requestParameters['maxH24Sells'] != null) {\n queryParameters['max_h24_sells'] = requestParameters['maxH24Sells'];\n }\n\n if (requestParameters['minH24Trades'] != null) {\n queryParameters['min_h24_trades'] = requestParameters['minH24Trades'];\n }\n\n if (requestParameters['maxH24Trades'] != null) {\n queryParameters['max_h24_trades'] = requestParameters['maxH24Trades'];\n }\n\n if (requestParameters['minH24Buyers'] != null) {\n queryParameters['min_h24_buyers'] = requestParameters['minH24Buyers'];\n }\n\n if (requestParameters['maxH24Buyers'] != null) {\n queryParameters['max_h24_buyers'] = requestParameters['maxH24Buyers'];\n }\n\n if (requestParameters['minH24Sellers'] != null) {\n queryParameters['min_h24_sellers'] = requestParameters['minH24Sellers'];\n }\n\n if (requestParameters['maxH24Sellers'] != null) {\n queryParameters['max_h24_sellers'] = requestParameters['maxH24Sellers'];\n }\n\n if (requestParameters['minH24BuyVolumeInUsd'] != null) {\n queryParameters['min_h24_buy_volume_in_usd'] = requestParameters['minH24BuyVolumeInUsd'];\n }\n\n if (requestParameters['maxH24BuyVolumeInUsd'] != null) {\n queryParameters['max_h24_buy_volume_in_usd'] = requestParameters['maxH24BuyVolumeInUsd'];\n }\n\n if (requestParameters['minH24SellVolumeInUsd'] != null) {\n queryParameters['min_h24_sell_volume_in_usd'] = requestParameters['minH24SellVolumeInUsd'];\n }\n\n if (requestParameters['maxH24SellVolumeInUsd'] != null) {\n queryParameters['max_h24_sell_volume_in_usd'] = requestParameters['maxH24SellVolumeInUsd'];\n }\n\n if (requestParameters['minH4VolumeInUsd'] != null) {\n queryParameters['min_h4_volume_in_usd'] = requestParameters['minH4VolumeInUsd'];\n }\n\n if (requestParameters['maxH4VolumeInUsd'] != null) {\n queryParameters['max_h4_volume_in_usd'] = requestParameters['maxH4VolumeInUsd'];\n }\n\n if (requestParameters['minH4PriceChangeRatio'] != null) {\n queryParameters['min_h4_price_change_ratio'] = requestParameters['minH4PriceChangeRatio'];\n }\n\n if (requestParameters['maxH4PriceChangeRatio'] != null) {\n queryParameters['max_h4_price_change_ratio'] = requestParameters['maxH4PriceChangeRatio'];\n }\n\n if (requestParameters['minH4Buys'] != null) {\n queryParameters['min_h4_buys'] = requestParameters['minH4Buys'];\n }\n\n if (requestParameters['maxH4Buys'] != null) {\n queryParameters['max_h4_buys'] = requestParameters['maxH4Buys'];\n }\n\n if (requestParameters['minH4Sells'] != null) {\n queryParameters['min_h4_sells'] = requestParameters['minH4Sells'];\n }\n\n if (requestParameters['maxH4Sells'] != null) {\n queryParameters['max_h4_sells'] = requestParameters['maxH4Sells'];\n }\n\n if (requestParameters['minH4Trades'] != null) {\n queryParameters['min_h4_trades'] = requestParameters['minH4Trades'];\n }\n\n if (requestParameters['maxH4Trades'] != null) {\n queryParameters['max_h4_trades'] = requestParameters['maxH4Trades'];\n }\n\n if (requestParameters['minH4Buyers'] != null) {\n queryParameters['min_h4_buyers'] = requestParameters['minH4Buyers'];\n }\n\n if (requestParameters['maxH4Buyers'] != null) {\n queryParameters['max_h4_buyers'] = requestParameters['maxH4Buyers'];\n }\n\n if (requestParameters['minH4Sellers'] != null) {\n queryParameters['min_h4_sellers'] = requestParameters['minH4Sellers'];\n }\n\n if (requestParameters['maxH4Sellers'] != null) {\n queryParameters['max_h4_sellers'] = requestParameters['maxH4Sellers'];\n }\n\n if (requestParameters['minH4BuyVolumeInUsd'] != null) {\n queryParameters['min_h4_buy_volume_in_usd'] = requestParameters['minH4BuyVolumeInUsd'];\n }\n\n if (requestParameters['maxH4BuyVolumeInUsd'] != null) {\n queryParameters['max_h4_buy_volume_in_usd'] = requestParameters['maxH4BuyVolumeInUsd'];\n }\n\n if (requestParameters['minH4SellVolumeInUsd'] != null) {\n queryParameters['min_h4_sell_volume_in_usd'] = requestParameters['minH4SellVolumeInUsd'];\n }\n\n if (requestParameters['maxH4SellVolumeInUsd'] != null) {\n queryParameters['max_h4_sell_volume_in_usd'] = requestParameters['maxH4SellVolumeInUsd'];\n }\n\n if (requestParameters['minH1VolumeInUsd'] != null) {\n queryParameters['min_h1_volume_in_usd'] = requestParameters['minH1VolumeInUsd'];\n }\n\n if (requestParameters['maxH1VolumeInUsd'] != null) {\n queryParameters['max_h1_volume_in_usd'] = requestParameters['maxH1VolumeInUsd'];\n }\n\n if (requestParameters['minH1PriceChangeRatio'] != null) {\n queryParameters['min_h1_price_change_ratio'] = requestParameters['minH1PriceChangeRatio'];\n }\n\n if (requestParameters['maxH1PriceChangeRatio'] != null) {\n queryParameters['max_h1_price_change_ratio'] = requestParameters['maxH1PriceChangeRatio'];\n }\n\n if (requestParameters['minH1Buys'] != null) {\n queryParameters['min_h1_buys'] = requestParameters['minH1Buys'];\n }\n\n if (requestParameters['maxH1Buys'] != null) {\n queryParameters['max_h1_buys'] = requestParameters['maxH1Buys'];\n }\n\n if (requestParameters['minH1Sells'] != null) {\n queryParameters['min_h1_sells'] = requestParameters['minH1Sells'];\n }\n\n if (requestParameters['maxH1Sells'] != null) {\n queryParameters['max_h1_sells'] = requestParameters['maxH1Sells'];\n }\n\n if (requestParameters['minH1Trades'] != null) {\n queryParameters['min_h1_trades'] = requestParameters['minH1Trades'];\n }\n\n if (requestParameters['maxH1Trades'] != null) {\n queryParameters['max_h1_trades'] = requestParameters['maxH1Trades'];\n }\n\n if (requestParameters['minH1Buyers'] != null) {\n queryParameters['min_h1_buyers'] = requestParameters['minH1Buyers'];\n }\n\n if (requestParameters['maxH1Buyers'] != null) {\n queryParameters['max_h1_buyers'] = requestParameters['maxH1Buyers'];\n }\n\n if (requestParameters['minH1Sellers'] != null) {\n queryParameters['min_h1_sellers'] = requestParameters['minH1Sellers'];\n }\n\n if (requestParameters['maxH1Sellers'] != null) {\n queryParameters['max_h1_sellers'] = requestParameters['maxH1Sellers'];\n }\n\n if (requestParameters['minH1BuyVolumeInUsd'] != null) {\n queryParameters['min_h1_buy_volume_in_usd'] = requestParameters['minH1BuyVolumeInUsd'];\n }\n\n if (requestParameters['maxH1BuyVolumeInUsd'] != null) {\n queryParameters['max_h1_buy_volume_in_usd'] = requestParameters['maxH1BuyVolumeInUsd'];\n }\n\n if (requestParameters['minH1SellVolumeInUsd'] != null) {\n queryParameters['min_h1_sell_volume_in_usd'] = requestParameters['minH1SellVolumeInUsd'];\n }\n\n if (requestParameters['maxH1SellVolumeInUsd'] != null) {\n queryParameters['max_h1_sell_volume_in_usd'] = requestParameters['maxH1SellVolumeInUsd'];\n }\n\n if (requestParameters['minM30VolumeInUsd'] != null) {\n queryParameters['min_m30_volume_in_usd'] = requestParameters['minM30VolumeInUsd'];\n }\n\n if (requestParameters['maxM30VolumeInUsd'] != null) {\n queryParameters['max_m30_volume_in_usd'] = requestParameters['maxM30VolumeInUsd'];\n }\n\n if (requestParameters['minM30PriceChangeRatio'] != null) {\n queryParameters['min_m30_price_change_ratio'] = requestParameters['minM30PriceChangeRatio'];\n }\n\n if (requestParameters['maxM30PriceChangeRatio'] != null) {\n queryParameters['max_m30_price_change_ratio'] = requestParameters['maxM30PriceChangeRatio'];\n }\n\n if (requestParameters['minM30Buys'] != null) {\n queryParameters['min_m30_buys'] = requestParameters['minM30Buys'];\n }\n\n if (requestParameters['maxM30Buys'] != null) {\n queryParameters['max_m30_buys'] = requestParameters['maxM30Buys'];\n }\n\n if (requestParameters['minM30Sells'] != null) {\n queryParameters['min_m30_sells'] = requestParameters['minM30Sells'];\n }\n\n if (requestParameters['maxM30Sells'] != null) {\n queryParameters['max_m30_sells'] = requestParameters['maxM30Sells'];\n }\n\n if (requestParameters['minM30Trades'] != null) {\n queryParameters['min_m30_trades'] = requestParameters['minM30Trades'];\n }\n\n if (requestParameters['maxM30Trades'] != null) {\n queryParameters['max_m30_trades'] = requestParameters['maxM30Trades'];\n }\n\n if (requestParameters['minM30Buyers'] != null) {\n queryParameters['min_m30_buyers'] = requestParameters['minM30Buyers'];\n }\n\n if (requestParameters['maxM30Buyers'] != null) {\n queryParameters['max_m30_buyers'] = requestParameters['maxM30Buyers'];\n }\n\n if (requestParameters['minM30Sellers'] != null) {\n queryParameters['min_m30_sellers'] = requestParameters['minM30Sellers'];\n }\n\n if (requestParameters['maxM30Sellers'] != null) {\n queryParameters['max_m30_sellers'] = requestParameters['maxM30Sellers'];\n }\n\n if (requestParameters['minM30BuyVolumeInUsd'] != null) {\n queryParameters['min_m30_buy_volume_in_usd'] = requestParameters['minM30BuyVolumeInUsd'];\n }\n\n if (requestParameters['maxM30BuyVolumeInUsd'] != null) {\n queryParameters['max_m30_buy_volume_in_usd'] = requestParameters['maxM30BuyVolumeInUsd'];\n }\n\n if (requestParameters['minM30SellVolumeInUsd'] != null) {\n queryParameters['min_m30_sell_volume_in_usd'] = requestParameters['minM30SellVolumeInUsd'];\n }\n\n if (requestParameters['maxM30SellVolumeInUsd'] != null) {\n queryParameters['max_m30_sell_volume_in_usd'] = requestParameters['maxM30SellVolumeInUsd'];\n }\n\n if (requestParameters['minM15VolumeInUsd'] != null) {\n queryParameters['min_m15_volume_in_usd'] = requestParameters['minM15VolumeInUsd'];\n }\n\n if (requestParameters['maxM15VolumeInUsd'] != null) {\n queryParameters['max_m15_volume_in_usd'] = requestParameters['maxM15VolumeInUsd'];\n }\n\n if (requestParameters['minM15PriceChangeRatio'] != null) {\n queryParameters['min_m15_price_change_ratio'] = requestParameters['minM15PriceChangeRatio'];\n }\n\n if (requestParameters['maxM15PriceChangeRatio'] != null) {\n queryParameters['max_m15_price_change_ratio'] = requestParameters['maxM15PriceChangeRatio'];\n }\n\n if (requestParameters['minM15Buys'] != null) {\n queryParameters['min_m15_buys'] = requestParameters['minM15Buys'];\n }\n\n if (requestParameters['maxM15Buys'] != null) {\n queryParameters['max_m15_buys'] = requestParameters['maxM15Buys'];\n }\n\n if (requestParameters['minM15Sells'] != null) {\n queryParameters['min_m15_sells'] = requestParameters['minM15Sells'];\n }\n\n if (requestParameters['maxM15Sells'] != null) {\n queryParameters['max_m15_sells'] = requestParameters['maxM15Sells'];\n }\n\n if (requestParameters['minM15Trades'] != null) {\n queryParameters['min_m15_trades'] = requestParameters['minM15Trades'];\n }\n\n if (requestParameters['maxM15Trades'] != null) {\n queryParameters['max_m15_trades'] = requestParameters['maxM15Trades'];\n }\n\n if (requestParameters['minM15Buyers'] != null) {\n queryParameters['min_m15_buyers'] = requestParameters['minM15Buyers'];\n }\n\n if (requestParameters['maxM15Buyers'] != null) {\n queryParameters['max_m15_buyers'] = requestParameters['maxM15Buyers'];\n }\n\n if (requestParameters['minM15Sellers'] != null) {\n queryParameters['min_m15_sellers'] = requestParameters['minM15Sellers'];\n }\n\n if (requestParameters['maxM15Sellers'] != null) {\n queryParameters['max_m15_sellers'] = requestParameters['maxM15Sellers'];\n }\n\n if (requestParameters['minM15BuyVolumeInUsd'] != null) {\n queryParameters['min_m15_buy_volume_in_usd'] = requestParameters['minM15BuyVolumeInUsd'];\n }\n\n if (requestParameters['maxM15BuyVolumeInUsd'] != null) {\n queryParameters['max_m15_buy_volume_in_usd'] = requestParameters['maxM15BuyVolumeInUsd'];\n }\n\n if (requestParameters['minM15SellVolumeInUsd'] != null) {\n queryParameters['min_m15_sell_volume_in_usd'] = requestParameters['minM15SellVolumeInUsd'];\n }\n\n if (requestParameters['maxM15SellVolumeInUsd'] != null) {\n queryParameters['max_m15_sell_volume_in_usd'] = requestParameters['maxM15SellVolumeInUsd'];\n }\n\n if (requestParameters['minM5VolumeInUsd'] != null) {\n queryParameters['min_m5_volume_in_usd'] = requestParameters['minM5VolumeInUsd'];\n }\n\n if (requestParameters['maxM5VolumeInUsd'] != null) {\n queryParameters['max_m5_volume_in_usd'] = requestParameters['maxM5VolumeInUsd'];\n }\n\n if (requestParameters['minM5PriceChangeRatio'] != null) {\n queryParameters['min_m5_price_change_ratio'] = requestParameters['minM5PriceChangeRatio'];\n }\n\n if (requestParameters['maxM5PriceChangeRatio'] != null) {\n queryParameters['max_m5_price_change_ratio'] = requestParameters['maxM5PriceChangeRatio'];\n }\n\n if (requestParameters['minM5Buys'] != null) {\n queryParameters['min_m5_buys'] = requestParameters['minM5Buys'];\n }\n\n if (requestParameters['maxM5Buys'] != null) {\n queryParameters['max_m5_buys'] = requestParameters['maxM5Buys'];\n }\n\n if (requestParameters['minM5Sells'] != null) {\n queryParameters['min_m5_sells'] = requestParameters['minM5Sells'];\n }\n\n if (requestParameters['maxM5Sells'] != null) {\n queryParameters['max_m5_sells'] = requestParameters['maxM5Sells'];\n }\n\n if (requestParameters['minM5Trades'] != null) {\n queryParameters['min_m5_trades'] = requestParameters['minM5Trades'];\n }\n\n if (requestParameters['maxM5Trades'] != null) {\n queryParameters['max_m5_trades'] = requestParameters['maxM5Trades'];\n }\n\n if (requestParameters['minM5Buyers'] != null) {\n queryParameters['min_m5_buyers'] = requestParameters['minM5Buyers'];\n }\n\n if (requestParameters['maxM5Buyers'] != null) {\n queryParameters['max_m5_buyers'] = requestParameters['maxM5Buyers'];\n }\n\n if (requestParameters['minM5Sellers'] != null) {\n queryParameters['min_m5_sellers'] = requestParameters['minM5Sellers'];\n }\n\n if (requestParameters['maxM5Sellers'] != null) {\n queryParameters['max_m5_sellers'] = requestParameters['maxM5Sellers'];\n }\n\n if (requestParameters['minM5BuyVolumeInUsd'] != null) {\n queryParameters['min_m5_buy_volume_in_usd'] = requestParameters['minM5BuyVolumeInUsd'];\n }\n\n if (requestParameters['maxM5BuyVolumeInUsd'] != null) {\n queryParameters['max_m5_buy_volume_in_usd'] = requestParameters['maxM5BuyVolumeInUsd'];\n }\n\n if (requestParameters['minM5SellVolumeInUsd'] != null) {\n queryParameters['min_m5_sell_volume_in_usd'] = requestParameters['minM5SellVolumeInUsd'];\n }\n\n if (requestParameters['maxM5SellVolumeInUsd'] != null) {\n queryParameters['max_m5_sell_volume_in_usd'] = requestParameters['maxM5SellVolumeInUsd'];\n }\n\n if (requestParameters['minM1VolumeInUsd'] != null) {\n queryParameters['min_m1_volume_in_usd'] = requestParameters['minM1VolumeInUsd'];\n }\n\n if (requestParameters['maxM1VolumeInUsd'] != null) {\n queryParameters['max_m1_volume_in_usd'] = requestParameters['maxM1VolumeInUsd'];\n }\n\n if (requestParameters['minM1PriceChangeRatio'] != null) {\n queryParameters['min_m1_price_change_ratio'] = requestParameters['minM1PriceChangeRatio'];\n }\n\n if (requestParameters['maxM1PriceChangeRatio'] != null) {\n queryParameters['max_m1_price_change_ratio'] = requestParameters['maxM1PriceChangeRatio'];\n }\n\n if (requestParameters['minM1Buys'] != null) {\n queryParameters['min_m1_buys'] = requestParameters['minM1Buys'];\n }\n\n if (requestParameters['maxM1Buys'] != null) {\n queryParameters['max_m1_buys'] = requestParameters['maxM1Buys'];\n }\n\n if (requestParameters['minM1Sells'] != null) {\n queryParameters['min_m1_sells'] = requestParameters['minM1Sells'];\n }\n\n if (requestParameters['maxM1Sells'] != null) {\n queryParameters['max_m1_sells'] = requestParameters['maxM1Sells'];\n }\n\n if (requestParameters['minM1Trades'] != null) {\n queryParameters['min_m1_trades'] = requestParameters['minM1Trades'];\n }\n\n if (requestParameters['maxM1Trades'] != null) {\n queryParameters['max_m1_trades'] = requestParameters['maxM1Trades'];\n }\n\n if (requestParameters['minM1Buyers'] != null) {\n queryParameters['min_m1_buyers'] = requestParameters['minM1Buyers'];\n }\n\n if (requestParameters['maxM1Buyers'] != null) {\n queryParameters['max_m1_buyers'] = requestParameters['maxM1Buyers'];\n }\n\n if (requestParameters['minM1Sellers'] != null) {\n queryParameters['min_m1_sellers'] = requestParameters['minM1Sellers'];\n }\n\n if (requestParameters['maxM1Sellers'] != null) {\n queryParameters['max_m1_sellers'] = requestParameters['maxM1Sellers'];\n }\n\n if (requestParameters['minM1BuyVolumeInUsd'] != null) {\n queryParameters['min_m1_buy_volume_in_usd'] = requestParameters['minM1BuyVolumeInUsd'];\n }\n\n if (requestParameters['maxM1BuyVolumeInUsd'] != null) {\n queryParameters['max_m1_buy_volume_in_usd'] = requestParameters['maxM1BuyVolumeInUsd'];\n }\n\n if (requestParameters['minM1SellVolumeInUsd'] != null) {\n queryParameters['min_m1_sell_volume_in_usd'] = requestParameters['minM1SellVolumeInUsd'];\n }\n\n if (requestParameters['maxM1SellVolumeInUsd'] != null) {\n queryParameters['max_m1_sell_volume_in_usd'] = requestParameters['maxM1SellVolumeInUsd'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/list`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenListPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_TOKEN_LIST.DESCRIPTION\n * CONTROLLER.TOKEN.GET_TOKEN_LIST.SUMMARY\n */\n async listToken(requestParameters: ListTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenListPage> {\n const response = await this.listTokenRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.SEARCH.DESCRIPTION\n * CONTROLLER.TOKEN.SEARCH.SUMMARY\n */\n async searchRaw(requestParameters: SearchRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenPage>> {\n const queryParameters: any = {};\n\n if (requestParameters['chains'] != null) {\n queryParameters['chains'] = requestParameters['chains'];\n }\n\n if (requestParameters['q'] != null) {\n queryParameters['q'] = requestParameters['q'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['sort'] != null) {\n queryParameters['sort'] = requestParameters['sort'];\n }\n\n if (requestParameters['protocols'] != null) {\n queryParameters['protocols'] = requestParameters['protocols'];\n }\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['sortBy'] != null) {\n queryParameters['sortBy'] = requestParameters['sortBy'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/search`;\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.SEARCH.DESCRIPTION\n * CONTROLLER.TOKEN.SEARCH.SUMMARY\n */\n async search(requestParameters: SearchRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenPage> {\n const response = await this.searchRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n\n/**\n * @export\n */\nexport const GetHoldersDirectionEnum = {\n Next: 'next',\n Prev: 'prev'\n} as const;\nexport type GetHoldersDirectionEnum = typeof GetHoldersDirectionEnum[keyof typeof GetHoldersDirectionEnum];\n/**\n * @export\n */\nexport const GetMintAndBurnDirectionEnum = {\n Next: 'next',\n Prev: 'prev'\n} as const;\nexport type GetMintAndBurnDirectionEnum = typeof GetMintAndBurnDirectionEnum[keyof typeof GetMintAndBurnDirectionEnum];\n/**\n * @export\n */\nexport const GetMintAndBurnTypeEnum = {\n All: 'all',\n Mint: 'mint',\n Burn: 'burn'\n} as const;\nexport type GetMintAndBurnTypeEnum = typeof GetMintAndBurnTypeEnum[keyof typeof GetMintAndBurnTypeEnum];\n/**\n * @export\n */\nexport const GetPoolsSortByEnum = {\n TvlInSol: 'tvlInSol',\n TvlInUsd: 'tvlInUsd'\n} as const;\nexport type GetPoolsSortByEnum = typeof GetPoolsSortByEnum[keyof typeof GetPoolsSortByEnum];\n/**\n * @export\n */\nexport const GetPoolsSortDirectionEnum = {\n Asc: 'asc',\n Desc: 'desc'\n} as const;\nexport type GetPoolsSortDirectionEnum = typeof GetPoolsSortDirectionEnum[keyof typeof GetPoolsSortDirectionEnum];\n/**\n * @export\n */\nexport const GetPricesDirectionEnum = {\n Next: 'next',\n Prev: 'prev'\n} as const;\nexport type GetPricesDirectionEnum = typeof GetPricesDirectionEnum[keyof typeof GetPricesDirectionEnum];\n/**\n * @export\n */\nexport const GetTokensSortByEnum = {\n MarketDataPriceInUsd: 'marketData.priceInUsd',\n StatsPriceChangeRatioInUsd1m: 'stats.priceChangeRatioInUsd1m',\n StatsPriceChangeRatioInUsd5m: 'stats.priceChangeRatioInUsd5m',\n StatsPriceChangeRatioInUsd1h: 'stats.priceChangeRatioInUsd1h',\n StatsPriceChangeRatioInUsd4h: 'stats.priceChangeRatioInUsd4h',\n StatsPriceChangeRatioInUsd24h: 'stats.priceChangeRatioInUsd24h',\n MarketDataMarketCapInUsd: 'marketData.marketCapInUsd',\n MarketDataTvlInUsd: 'marketData.tvlInUsd',\n MarketDataTop10TotalHoldings: 'marketData.top10TotalHoldings',\n MarketDataTop10HoldingsRatio: 'marketData.top10HoldingsRatio',\n MarketDataTop100TotalHoldings: 'marketData.top100TotalHoldings',\n MarketDataTop100HoldingsRatio: 'marketData.top100HoldingsRatio',\n MarketDataHolders: 'marketData.holders',\n MarketDataCreatorHoldings: 'marketData.creatorHoldings',\n MarketDataCreatorHoldingsRatio: 'marketData.creatorHoldingsRatio',\n StatsBuys1m: 'stats.buys1m',\n StatsBuys5m: 'stats.buys5m',\n StatsBuys15m: 'stats.buys15m',\n StatsBuys30m: 'stats.buys30m',\n StatsBuys1h: 'stats.buys1h',\n StatsBuys4h: 'stats.buys4h',\n StatsBuys24h: 'stats.buys24h',\n StatsSells1m: 'stats.sells1m',\n StatsSells5m: 'stats.sells5m',\n StatsSells15m: 'stats.sells15m',\n StatsSells30m: 'stats.sells30m',\n StatsSells1h: 'stats.sells1h',\n StatsSells4h: 'stats.sells4h',\n StatsSells24h: 'stats.sells24h',\n StatsTrades1m: 'stats.trades1m',\n StatsTrades5m: 'stats.trades5m',\n StatsTrades1h: 'stats.trades1h',\n StatsTrades4h: 'stats.trades4h',\n StatsTrades24h: 'stats.trades24h',\n StatsTraders1m: 'stats.traders1m',\n StatsTraders5m: 'stats.traders5m',\n StatsTraders1h: 'stats.traders1h',\n StatsTraders4h: 'stats.traders4h',\n StatsTraders24h: 'stats.traders24h',\n StatsVolumesInUsd1m: 'stats.volumesInUsd1m',\n StatsVolumesInUsd5m: 'stats.volumesInUsd5m',\n StatsVolumesInUsd1h: 'stats.volumesInUsd1h',\n StatsVolumesInUsd4h: 'stats.volumesInUsd4h',\n StatsVolumesInUsd24h: 'stats.volumesInUsd24h',\n TokenCreatedAt: 'tokenCreatedAt'\n} as const;\nexport type GetTokensSortByEnum = typeof GetTokensSortByEnum[keyof typeof GetTokensSortByEnum];\n/**\n * @export\n */\nexport const GetTokensSortDirectionEnum = {\n Asc: 'ASC',\n Desc: 'DESC'\n} as const;\nexport type GetTokensSortDirectionEnum = typeof GetTokensSortDirectionEnum[keyof typeof GetTokensSortDirectionEnum];\n/**\n * @export\n */\nexport const ListTokenDirectionEnum = {\n Next: 'next',\n Prev: 'prev'\n} as const;\nexport type ListTokenDirectionEnum = typeof ListTokenDirectionEnum[keyof typeof ListTokenDirectionEnum];\n/**\n * @export\n */\nexport const ListTokenSortEnum = {\n Asc: 'asc',\n Desc: 'desc'\n} as const;\nexport type ListTokenSortEnum = typeof ListTokenSortEnum[keyof typeof ListTokenSortEnum];\n/**\n * @export\n */\nexport const ListTokenSortByEnum = {\n H24VolumeInUsd: 'h24VolumeInUsd',\n H24PriceChangeRatio: 'h24PriceChangeRatio',\n H24Buys: 'h24Buys',\n H24Sells: 'h24Sells',\n H24Trades: 'h24Trades',\n H24Buyers: 'h24Buyers',\n H24Sellers: 'h24Sellers',\n H24BuyVolumeInUsd: 'h24BuyVolumeInUsd',\n H24SellVolumeInUsd: 'h24SellVolumeInUsd',\n H4VolumeInUsd: 'h4VolumeInUsd',\n H4PriceChangeRatio: 'h4PriceChangeRatio',\n H4Buys: 'h4Buys',\n H4Sells: 'h4Sells',\n H4Trades: 'h4Trades',\n H4Buyers: 'h4Buyers',\n H4Sellers: 'h4Sellers',\n H4BuyVolumeInUsd: 'h4BuyVolumeInUsd',\n H4SellVolumeInUsd: 'h4SellVolumeInUsd',\n H1VolumeInUsd: 'h1VolumeInUsd',\n H1PriceChangeRatio: 'h1PriceChangeRatio',\n H1Buys: 'h1Buys',\n H1Sells: 'h1Sells',\n H1Trades: 'h1Trades',\n H1Buyers: 'h1Buyers',\n H1Sellers: 'h1Sellers',\n H1BuyVolumeInUsd: 'h1BuyVolumeInUsd',\n H1SellVolumeInUsd: 'h1SellVolumeInUsd',\n M30VolumeInUsd: 'm30VolumeInUsd',\n M30PriceChangeRatio: 'm30PriceChangeRatio',\n M30Buys: 'm30Buys',\n M30Sells: 'm30Sells',\n M30Trades: 'm30Trades',\n M30Buyers: 'm30Buyers',\n M30Sellers: 'm30Sellers',\n M30BuyVolumeInUsd: 'm30BuyVolumeInUsd',\n M30SellVolumeInUsd: 'm30SellVolumeInUsd',\n M15VolumeInUsd: 'm15VolumeInUsd',\n M15PriceChangeRatio: 'm15PriceChangeRatio',\n M15Buys: 'm15Buys',\n M15Sells: 'm15Sells',\n M15Trades: 'm15Trades',\n M15Buyers: 'm15Buyers',\n M15Sellers: 'm15Sellers',\n M15BuyVolumeInUsd: 'm15BuyVolumeInUsd',\n M15SellVolumeInUsd: 'm15SellVolumeInUsd',\n M5VolumeInUsd: 'm5VolumeInUsd',\n M5PriceChangeRatio: 'm5PriceChangeRatio',\n M5Buys: 'm5Buys',\n M5Sells: 'm5Sells',\n M5Trades: 'm5Trades',\n M5Buyers: 'm5Buyers',\n M5Sellers: 'm5Sellers',\n M5BuyVolumeInUsd: 'm5BuyVolumeInUsd',\n M5SellVolumeInUsd: 'm5SellVolumeInUsd',\n M1VolumeInUsd: 'm1VolumeInUsd',\n M1PriceChangeRatio: 'm1PriceChangeRatio',\n M1Buys: 'm1Buys',\n M1Sells: 'm1Sells',\n M1Trades: 'm1Trades',\n M1Buyers: 'm1Buyers',\n M1Sellers: 'm1Sellers',\n M1BuyVolumeInUsd: 'm1BuyVolumeInUsd',\n M1SellVolumeInUsd: 'm1SellVolumeInUsd'\n} as const;\nexport type ListTokenSortByEnum = typeof ListTokenSortByEnum[keyof typeof ListTokenSortByEnum];\n/**\n * @export\n */\nexport const SearchSortEnum = {\n Asc: 'asc',\n Desc: 'desc'\n} as const;\nexport type SearchSortEnum = typeof SearchSortEnum[keyof typeof SearchSortEnum];\n/**\n * @export\n */\nexport const SearchSortByEnum = {\n MarketCapInUsd: 'marketCapInUsd',\n LiquidityInUsd: 'liquidityInUsd',\n PriceInUsd: 'priceInUsd',\n HolderCount: 'holderCount',\n H24VolumeInUsd: 'h24VolumeInUsd',\n H24Transactions: 'h24Transactions',\n TokenCreatedAt: 'tokenCreatedAt'\n} as const;\nexport type SearchSortByEnum = typeof SearchSortByEnum[keyof typeof SearchSortByEnum];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ChainSymbol,\n TradePage,\n} from '../models/index';\nimport {\n ChainSymbolFromJSON,\n ChainSymbolToJSON,\n TradePageFromJSON,\n TradePageToJSON,\n} from '../models/index';\n\nexport interface GetActivitiesRequest {\n chain: ChainSymbol;\n cursor?: string;\n limit?: number;\n direction?: GetActivitiesDirectionEnum;\n tokenAddress?: string;\n walletAddress?: string;\n poolAddress?: string;\n beforeTimestamp?: number;\n afterTimestamp?: number;\n beforeBlockHeight?: number;\n afterBlockHeight?: number;\n transactionsSignature?: string;\n type?: GetActivitiesTypeEnum;\n}\n\nexport interface GetTradesRequest {\n chain: ChainSymbol;\n cursor?: string;\n limit?: number;\n direction?: GetTradesDirectionEnum;\n tokenAddress?: string;\n walletAddress?: string;\n poolAddress?: string;\n beforeTimestamp?: number;\n afterTimestamp?: number;\n beforeBlockHeight?: number;\n afterBlockHeight?: number;\n transactionsSignature?: string;\n type?: GetTradesTypeEnum;\n}\n\n/**\n * \n */\nexport class TradeApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.TRADE.GET.TOKEN_ACTIVITIES.DESCRIPTION\n * CONTROLLER.TRADE.GET.TOKEN_ACTIVITIES.SUMMARY\n */\n async getActivitiesRaw(requestParameters: GetActivitiesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TradePage>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getActivities().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['direction'] != null) {\n queryParameters['direction'] = requestParameters['direction'];\n }\n\n if (requestParameters['tokenAddress'] != null) {\n queryParameters['tokenAddress'] = requestParameters['tokenAddress'];\n }\n\n if (requestParameters['walletAddress'] != null) {\n queryParameters['walletAddress'] = requestParameters['walletAddress'];\n }\n\n if (requestParameters['poolAddress'] != null) {\n queryParameters['poolAddress'] = requestParameters['poolAddress'];\n }\n\n if (requestParameters['beforeTimestamp'] != null) {\n queryParameters['beforeTimestamp'] = requestParameters['beforeTimestamp'];\n }\n\n if (requestParameters['afterTimestamp'] != null) {\n queryParameters['afterTimestamp'] = requestParameters['afterTimestamp'];\n }\n\n if (requestParameters['beforeBlockHeight'] != null) {\n queryParameters['beforeBlockHeight'] = requestParameters['beforeBlockHeight'];\n }\n\n if (requestParameters['afterBlockHeight'] != null) {\n queryParameters['afterBlockHeight'] = requestParameters['afterBlockHeight'];\n }\n\n if (requestParameters['transactionsSignature'] != null) {\n queryParameters['transactionsSignature'] = requestParameters['transactionsSignature'];\n }\n\n if (requestParameters['type'] != null) {\n queryParameters['type'] = requestParameters['type'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/trade/{chain}/activities`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TradePageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TRADE.GET.TOKEN_ACTIVITIES.DESCRIPTION\n * CONTROLLER.TRADE.GET.TOKEN_ACTIVITIES.SUMMARY\n */\n async getActivities(requestParameters: GetActivitiesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TradePage> {\n const response = await this.getActivitiesRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TRADE.GET.TOKEN.DESCRIPTION\n * CONTROLLER.TRADE.GET.TOKEN.SUMMARY\n */\n async getTradesRaw(requestParameters: GetTradesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TradePage>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getTrades().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['direction'] != null) {\n queryParameters['direction'] = requestParameters['direction'];\n }\n\n if (requestParameters['tokenAddress'] != null) {\n queryParameters['tokenAddress'] = requestParameters['tokenAddress'];\n }\n\n if (requestParameters['walletAddress'] != null) {\n queryParameters['walletAddress'] = requestParameters['walletAddress'];\n }\n\n if (requestParameters['poolAddress'] != null) {\n queryParameters['poolAddress'] = requestParameters['poolAddress'];\n }\n\n if (requestParameters['beforeTimestamp'] != null) {\n queryParameters['beforeTimestamp'] = requestParameters['beforeTimestamp'];\n }\n\n if (requestParameters['afterTimestamp'] != null) {\n queryParameters['afterTimestamp'] = requestParameters['afterTimestamp'];\n }\n\n if (requestParameters['beforeBlockHeight'] != null) {\n queryParameters['beforeBlockHeight'] = requestParameters['beforeBlockHeight'];\n }\n\n if (requestParameters['afterBlockHeight'] != null) {\n queryParameters['afterBlockHeight'] = requestParameters['afterBlockHeight'];\n }\n\n if (requestParameters['transactionsSignature'] != null) {\n queryParameters['transactionsSignature'] = requestParameters['transactionsSignature'];\n }\n\n if (requestParameters['type'] != null) {\n queryParameters['type'] = requestParameters['type'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/trade/{chain}`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TradePageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TRADE.GET.TOKEN.DESCRIPTION\n * CONTROLLER.TRADE.GET.TOKEN.SUMMARY\n */\n async getTrades(requestParameters: GetTradesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TradePage> {\n const response = await this.getTradesRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n\n/**\n * @export\n */\nexport const GetActivitiesDirectionEnum = {\n Next: 'next',\n Prev: 'prev'\n} as const;\nexport type GetActivitiesDirectionEnum = typeof GetActivitiesDirectionEnum[keyof typeof GetActivitiesDirectionEnum];\n/**\n * @export\n */\nexport const GetActivitiesTypeEnum = {\n Buy: 'BUY',\n Sell: 'SELL',\n LiquidityInitialize: 'LIQUIDITY_INITIALIZE',\n LiquidityAdd: 'LIQUIDITY_ADD',\n LiquidityRemove: 'LIQUIDITY_REMOVE',\n RedPacketCreate: 'RED_PACKET_CREATE',\n RedPacketClaim: 'RED_PACKET_CLAIM',\n RedPacketComplete: 'RED_PACKET_COMPLETE',\n RedPacketRefund: 'RED_PACKET_REFUND'\n} as const;\nexport type GetActivitiesTypeEnum = typeof GetActivitiesTypeEnum[keyof typeof GetActivitiesTypeEnum];\n/**\n * @export\n */\nexport const GetTradesDirectionEnum = {\n Next: 'next',\n Prev: 'prev'\n} as const;\nexport type GetTradesDirectionEnum = typeof GetTradesDirectionEnum[keyof typeof GetTradesDirectionEnum];\n/**\n * @export\n */\nexport const GetTradesTypeEnum = {\n Buy: 'BUY',\n Sell: 'SELL'\n} as const;\nexport type GetTradesTypeEnum = typeof GetTradesTypeEnum[keyof typeof GetTradesTypeEnum];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n EstimateGasLimitInput,\n EstimateGasLimitResponse,\n GasPriceResponse,\n SendTxInput,\n SendTxResponse,\n} from '../models/index';\nimport {\n EstimateGasLimitInputFromJSON,\n EstimateGasLimitInputToJSON,\n EstimateGasLimitResponseFromJSON,\n EstimateGasLimitResponseToJSON,\n GasPriceResponseFromJSON,\n GasPriceResponseToJSON,\n SendTxInputFromJSON,\n SendTxInputToJSON,\n SendTxResponseFromJSON,\n SendTxResponseToJSON,\n} from '../models/index';\n\nexport interface EstimateGasLimitRequest {\n chain: EstimateGasLimitChainEnum;\n estimateGasLimitInput: EstimateGasLimitInput;\n}\n\nexport interface GetGasPriceRequest {\n chain: GetGasPriceChainEnum;\n}\n\nexport interface SendRequest {\n chain: string;\n sendTxInput: SendTxInput;\n}\n\n/**\n * \n */\nexport class TransactionApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.TRANSACTION.ESTIMATE_GAS_LIMIT.DESCRIPTION\n * CONTROLLER.TRANSACTION.ESTIMATE_GAS_LIMIT.SUMMARY\n */\n async estimateGasLimitRaw(requestParameters: EstimateGasLimitRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<EstimateGasLimitResponse>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling estimateGasLimit().'\n );\n }\n\n if (requestParameters['estimateGasLimitInput'] == null) {\n throw new runtime.RequiredError(\n 'estimateGasLimitInput',\n 'Required parameter \"estimateGasLimitInput\" was null or undefined when calling estimateGasLimit().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/transaction/{chain}/estimate-gas-limit`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: EstimateGasLimitInputToJSON(requestParameters['estimateGasLimitInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => EstimateGasLimitResponseFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TRANSACTION.ESTIMATE_GAS_LIMIT.DESCRIPTION\n * CONTROLLER.TRANSACTION.ESTIMATE_GAS_LIMIT.SUMMARY\n */\n async estimateGasLimit(requestParameters: EstimateGasLimitRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<EstimateGasLimitResponse> {\n const response = await this.estimateGasLimitRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TRANSACTION.GET_GAS_PRICE.DESCRIPTION\n * CONTROLLER.TRANSACTION.GET_GAS_PRICE.SUMMARY\n */\n async getGasPriceRaw(requestParameters: GetGasPriceRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<GasPriceResponse>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getGasPrice().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/transaction/{chain}/gas-price`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => GasPriceResponseFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TRANSACTION.GET_GAS_PRICE.DESCRIPTION\n * CONTROLLER.TRANSACTION.GET_GAS_PRICE.SUMMARY\n */\n async getGasPrice(requestParameters: GetGasPriceRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<GasPriceResponse> {\n const response = await this.getGasPriceRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TRANSACTION.SEND.DESCRIPTION\n * CONTROLLER.TRANSACTION.SEND.SUMMARY\n */\n async sendRaw(requestParameters: SendRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SendTxResponse>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling send().'\n );\n }\n\n if (requestParameters['sendTxInput'] == null) {\n throw new runtime.RequiredError(\n 'sendTxInput',\n 'Required parameter \"sendTxInput\" was null or undefined when calling send().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/transaction/{chain}/send`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: SendTxInputToJSON(requestParameters['sendTxInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SendTxResponseFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TRANSACTION.SEND.DESCRIPTION\n * CONTROLLER.TRANSACTION.SEND.SUMMARY\n */\n async send(requestParameters: SendRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SendTxResponse> {\n const response = await this.sendRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n\n/**\n * @export\n */\nexport const EstimateGasLimitChainEnum = {\n Base: 'base',\n Bsc: 'bsc',\n Polygon: 'polygon',\n Arbitrum: 'arbitrum',\n Optimism: 'optimism',\n Avalanche: 'avalanche',\n Eth: 'eth',\n Zksync: 'zksync'\n} as const;\nexport type EstimateGasLimitChainEnum = typeof EstimateGasLimitChainEnum[keyof typeof EstimateGasLimitChainEnum];\n/**\n * @export\n */\nexport const GetGasPriceChainEnum = {\n Base: 'base',\n Bsc: 'bsc',\n Polygon: 'polygon',\n Arbitrum: 'arbitrum',\n Optimism: 'optimism',\n Avalanche: 'avalanche',\n Eth: 'eth',\n Zksync: 'zksync'\n} as const;\nexport type GetGasPriceChainEnum = typeof GetGasPriceChainEnum[keyof typeof GetGasPriceChainEnum];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n BooleanResultDTO,\n CalculatePnlInput,\n ChainSymbol,\n WalletBalancesDTO,\n WalletPnlDTO,\n} from '../models/index';\nimport {\n BooleanResultDTOFromJSON,\n BooleanResultDTOToJSON,\n CalculatePnlInputFromJSON,\n CalculatePnlInputToJSON,\n ChainSymbolFromJSON,\n ChainSymbolToJSON,\n WalletBalancesDTOFromJSON,\n WalletBalancesDTOToJSON,\n WalletPnlDTOFromJSON,\n WalletPnlDTOToJSON,\n} from '../models/index';\n\nexport interface CalculatePnlRequest {\n chain: ChainSymbol;\n walletAddress: string;\n calculatePnlInput: CalculatePnlInput;\n}\n\nexport interface GetBalanceRequest {\n chain: ChainSymbol;\n walletAddress: string;\n tokenAddress?: string;\n}\n\nexport interface GetPnlRequest {\n chain: ChainSymbol;\n walletAddress: string;\n tokenAddress?: string;\n}\n\nexport interface GetPnlStatsRequest {\n chain: ChainSymbol;\n walletAddress: string;\n}\n\n/**\n * \n */\nexport class WalletApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.WALLET.CALCULATE_PNL.DESCRIPTION\n * CONTROLLER.WALLET.CALCULATE_PNL.SUMMARY\n */\n async calculatePnlRaw(requestParameters: CalculatePnlRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<BooleanResultDTO>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling calculatePnl().'\n );\n }\n\n if (requestParameters['walletAddress'] == null) {\n throw new runtime.RequiredError(\n 'walletAddress',\n 'Required parameter \"walletAddress\" was null or undefined when calling calculatePnl().'\n );\n }\n\n if (requestParameters['calculatePnlInput'] == null) {\n throw new runtime.RequiredError(\n 'calculatePnlInput',\n 'Required parameter \"calculatePnlInput\" was null or undefined when calling calculatePnl().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/wallet/{chain}/{walletAddress}/calculate-pnl`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"walletAddress\"}}`, encodeURIComponent(String(requestParameters['walletAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: CalculatePnlInputToJSON(requestParameters['calculatePnlInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => BooleanResultDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.WALLET.CALCULATE_PNL.DESCRIPTION\n * CONTROLLER.WALLET.CALCULATE_PNL.SUMMARY\n */\n async calculatePnl(requestParameters: CalculatePnlRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<BooleanResultDTO> {\n const response = await this.calculatePnlRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.WALLET.GET_BALANCES.DESCRIPTION\n * CONTROLLER.WALLET.GET_BALANCES.SUMMARY\n */\n async getBalanceRaw(requestParameters: GetBalanceRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<WalletBalancesDTO>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getBalance().'\n );\n }\n\n if (requestParameters['walletAddress'] == null) {\n throw new runtime.RequiredError(\n 'walletAddress',\n 'Required parameter \"walletAddress\" was null or undefined when calling getBalance().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['tokenAddress'] != null) {\n queryParameters['tokenAddress'] = requestParameters['tokenAddress'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/wallet/{chain}/{walletAddress}/balance`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"walletAddress\"}}`, encodeURIComponent(String(requestParameters['walletAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => WalletBalancesDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.WALLET.GET_BALANCES.DESCRIPTION\n * CONTROLLER.WALLET.GET_BALANCES.SUMMARY\n */\n async getBalance(requestParameters: GetBalanceRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<WalletBalancesDTO> {\n const response = await this.getBalanceRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.WALLET.GET_PNL.DESCRIPTION\n * CONTROLLER.WALLET.GET_PNL.SUMMARY\n */\n async getPnlRaw(requestParameters: GetPnlRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<WalletPnlDTO>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getPnl().'\n );\n }\n\n if (requestParameters['walletAddress'] == null) {\n throw new runtime.RequiredError(\n 'walletAddress',\n 'Required parameter \"walletAddress\" was null or undefined when calling getPnl().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['tokenAddress'] != null) {\n queryParameters['tokenAddress'] = requestParameters['tokenAddress'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/wallet/{chain}/{walletAddress}`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"walletAddress\"}}`, encodeURIComponent(String(requestParameters['walletAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(WalletPnlDTOFromJSON));\n }\n\n /**\n * CONTROLLER.WALLET.GET_PNL.DESCRIPTION\n * CONTROLLER.WALLET.GET_PNL.SUMMARY\n */\n async getPnl(requestParameters: GetPnlRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<WalletPnlDTO>> {\n const response = await this.getPnlRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.WALLET.GET_PNL_STATS.DESCRIPTION\n * CONTROLLER.WALLET.GET_PNL_STATS.SUMMARY\n */\n async getPnlStatsRaw(requestParameters: GetPnlStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<WalletPnlDTO>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getPnlStats().'\n );\n }\n\n if (requestParameters['walletAddress'] == null) {\n throw new runtime.RequiredError(\n 'walletAddress',\n 'Required parameter \"walletAddress\" was null or undefined when calling getPnlStats().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/wallet/{chain}/{walletAddress}/stats`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"walletAddress\"}}`, encodeURIComponent(String(requestParameters['walletAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(WalletPnlDTOFromJSON));\n }\n\n /**\n * CONTROLLER.WALLET.GET_PNL_STATS.DESCRIPTION\n * CONTROLLER.WALLET.GET_PNL_STATS.SUMMARY\n */\n async getPnlStats(requestParameters: GetPnlStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<WalletPnlDTO>> {\n const response = await this.getPnlStatsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n BooleanResultDTO,\n ChainSymbol,\n} from '../models/index';\nimport {\n BooleanResultDTOFromJSON,\n BooleanResultDTOToJSON,\n ChainSymbolFromJSON,\n ChainSymbolToJSON,\n} from '../models/index';\n\nexport interface WatchlistAddRequest {\n chain: ChainSymbol;\n walletAddress: string;\n}\n\n/**\n * \n */\nexport class WatchlistApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.WATCHLIST.ADD.DESCRIPTION\n * CONTROLLER.WATCHLIST.ADD.SUMMARY\n */\n async watchlistAddRaw(requestParameters: WatchlistAddRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<BooleanResultDTO>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling watchlistAdd().'\n );\n }\n\n if (requestParameters['walletAddress'] == null) {\n throw new runtime.RequiredError(\n 'walletAddress',\n 'Required parameter \"walletAddress\" was null or undefined when calling watchlistAdd().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/watchlist/{chain}/{walletAddress}`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"walletAddress\"}}`, encodeURIComponent(String(requestParameters['walletAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => BooleanResultDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.WATCHLIST.ADD.DESCRIPTION\n * CONTROLLER.WATCHLIST.ADD.SUMMARY\n */\n async watchlistAdd(requestParameters: WatchlistAddRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<BooleanResultDTO> {\n const response = await this.watchlistAddRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","import { StreamApi } from \"./stream\";\nimport {\n DexApi,\n Configuration,\n TransactionApi,\n DefiSolanaMoonshotApi,\n DefiSolanaPumpfunApi,\n DexPoolApi,\n TokenApi,\n RankingApi,\n TradeApi,\n WalletApi,\n RedPacketApi,\n IpfsApi,\n WatchlistApi,\n BlockchainApi,\n JobsApi,\n KYTApi,\n EndpointApi,\n Middleware,\n RequestContext,\n ResponseContext,\n} from \"./openapi\";\nimport { EventSourcePolyfill } from \"event-source-polyfill\";\n\nexport interface TokenProvider {\n getToken(): Promise<string> | string;\n}\n\nexport interface DexRequestContext {\n baseUrl: string;\n streamUrl: string;\n accessToken: string | TokenProvider;\n}\n\nexport interface DexAggregatorOptions {\n debug?: boolean;\n serverUrl?: string;\n streamUrl?: string;\n /**\n * Whether to automatically connect to WebSocket on initialization.\n * Default: false\n * \n * If set to true, WebSocket will connect automatically.\n * If false or not set, you need to manually call `client.stream.connect()` when needed.\n */\n autoConnectWebSocket?: boolean;\n}\n\nexport const LIB_VERSION = \"0.1.25\";\n\nclass UserAgentMiddleware implements Middleware {\n public async pre(context: RequestContext): Promise<void> {\n if (!context.init.headers) {\n context.init.headers = {};\n }\n\n if (context.init.headers instanceof Headers) {\n context.init.headers.set(\"User-Agent\", `dex/${LIB_VERSION}/javascript`);\n } else {\n (context.init.headers as any)[\n \"User-Agent\"\n ] = `dex/${LIB_VERSION}/javascript`;\n }\n }\n\n public async post(context: ResponseContext): Promise<void> {}\n}\n\nexport class DexClient {\n public readonly requestCtx: DexRequestContext;\n public readonly _configuration: Configuration;\n public readonly dex: DexApi;\n public readonly dexpool: DexPoolApi;\n public readonly token: TokenApi;\n public readonly wallet: WalletApi;\n public readonly trade: TradeApi;\n public readonly ranking: RankingApi;\n public readonly transaction: TransactionApi;\n public readonly moonshot: DefiSolanaMoonshotApi;\n public readonly pumpfun: DefiSolanaPumpfunApi;\n public readonly stream: StreamApi;\n public readonly redPacket: RedPacketApi;\n public readonly ipfs: IpfsApi;\n public readonly blockchain: BlockchainApi;\n public readonly watchlist: WatchlistApi;\n public readonly jobs: JobsApi;\n public readonly kyt: KYTApi;\n public readonly endpoint: EndpointApi;\n public constructor(\n accessToken: string | TokenProvider,\n options: DexAggregatorOptions = {}\n ) {\n const baseUrl: string =\n options.serverUrl ?? \"https://api-dex.chainstream.io\";\n const streamUrl: string =\n options.streamUrl ??\n \"wss://realtime-dex.chainstream.io/connection/websocket\";\n\n this.requestCtx = { baseUrl, streamUrl, accessToken };\n\n const config = new Configuration({\n basePath: baseUrl,\n middleware: [new UserAgentMiddleware()],\n accessToken: async () => {\n return typeof accessToken === \"string\"\n ? accessToken\n : await accessToken.getToken();\n },\n headers: {\n \"User-Agent\": `dex/${LIB_VERSION}/javascript`,\n },\n });\n\n this._configuration = config;\n this.dex = new DexApi(config);\n this.dexpool = new DexPoolApi(config);\n this.token = new TokenApi(config);\n this.trade = new TradeApi(config);\n this.ranking = new RankingApi(config);\n this.transaction = new TransactionApi(config);\n this.moonshot = new DefiSolanaMoonshotApi(config);\n this.pumpfun = new DefiSolanaPumpfunApi(config);\n this.stream = new StreamApi(this.requestCtx);\n this.wallet = new WalletApi(config);\n this.redPacket = new RedPacketApi(config);\n this.ipfs = new IpfsApi(config);\n this.blockchain = new BlockchainApi(config);\n this.watchlist = new WatchlistApi(config);\n this.jobs = new JobsApi(config);\n this.kyt = new KYTApi(config);\n this.endpoint = new EndpointApi(config);\n\n // Only auto-connect WebSocket if explicitly enabled\n if (options.autoConnectWebSocket === true) {\n this.stream.connect();\n }\n }\n\n async waitForJob<T>(jobId: string, timeout = 60000): Promise<T> {\n const accessToken =\n typeof this.requestCtx.accessToken === \"string\"\n ? this.requestCtx.accessToken\n : await this.requestCtx.accessToken.getToken();\n\n return new Promise((resolve, reject) => {\n const sse = new EventSourcePolyfill(\n `${this.requestCtx.baseUrl}/jobs/${jobId}/streaming`,\n {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n }\n );\n\n const timeoutId = setTimeout(() => {\n sse.close();\n reject(new Error(`Job ${jobId} timed out after ${timeout}ms`));\n }, timeout);\n\n sse.onmessage = (event: any) => {\n try {\n console.log(\"event.data: \", event.data);\n const data = JSON.parse(event.data);\n\n if (data.status === \"error\") {\n sse.close();\n reject(new Error(`Error: ${data.message}`));\n } else if (data.status === \"completed\") {\n clearTimeout(timeoutId);\n sse.close();\n resolve(data as T);\n }\n } catch (e) {\n clearTimeout(timeoutId);\n sse.close();\n reject(new Error(\"Error parsing event data\"));\n }\n };\n\n sse.onopen = () => {\n console.log(\"SSE connection opened\");\n };\n\n sse.onerror = (error: any) => {\n if (error.message?.includes(\"No activity within\")) {\n console.log(\"SSE reconnecting due to inactivity...\");\n return;\n }\n\n clearTimeout(timeoutId);\n\n sse.close();\n reject(new Error(`Error in SSE connection: ${error}`));\n };\n });\n }\n}\n\nexport interface PostOptions {\n idempotencyKey?: string;\n}\n"],"mappings":";;;;;AAAA,SAAS,kBAA0C;;;ACkB5C,IAAM,qBAA0C;AAAA;AAAA,EAErD,0BAA0B;AAAA,IACxB,iBAAiB;AAAA,IACjB,gBAAgB;AAAA,IAChB,mBAAmB;AAAA,IACnB,WAAW;AAAA,IACX,aAAa;AAAA,EACf;AAAA;AAAA,EAGA,yBAAyB;AAAA,IACvB,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,UAAU;AAAA,IACV,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AAAA;AAAA,EAGA,uBAAuB;AAAA,IACrB,WAAW;AAAA,IACX,aAAa;AAAA,IACb,UAAU;AAAA,IACV,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,oBAAoB;AAAA,IACpB,qBAAqB;AAAA,IACrB,WAAW;AAAA,IACX,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,UAAU;AAAA,IACV,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,oBAAoB;AAAA,IACpB,qBAAqB;AAAA,IACrB,WAAW;AAAA,IACX,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,cAAc;AAAA,IACd,qBAAqB;AAAA,IACrB,sBAAsB;AAAA,IACtB,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,cAAc;AAAA,IACd,qBAAqB;AAAA,IACrB,sBAAsB;AAAA,IACtB,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,iBAAiB;AAAA,IACjB,UAAU;AAAA,IACV,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,oBAAoB;AAAA,IACpB,qBAAqB;AAAA,IACrB,WAAW;AAAA,IACX,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,UAAU;AAAA,IACV,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,oBAAoB;AAAA,IACpB,qBAAqB;AAAA,IACrB,WAAW;AAAA,IACX,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,cAAc;AAAA,IACd,qBAAqB;AAAA,IACrB,sBAAsB;AAAA,IACtB,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,iBAAiB;AAAA,EACnB;AAAA;AAAA,EAGA,yBAAyB;AAAA,IACvB,gBAAgB;AAAA,IAChB,WAAW;AAAA,IACX,uBAAuB;AAAA,IACvB,sBAAsB;AAAA,IACtB,sBAAsB;AAAA,IACtB,iBAAiB;AAAA,IACjB,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB,sBAAsB;AAAA,IACtB,qBAAqB;AAAA,IACrB,qBAAqB;AAAA,IACrB,mBAAmB;AAAA,IACnB,kBAAkB;AAAA,IAClB,iBAAiB;AAAA,IACjB,0BAA0B;AAAA,IAC1B,yBAAyB;AAAA,IACzB,wBAAwB;AAAA,IACxB,6BAA6B;AAAA,IAC7B,4BAA4B;AAAA,IAC5B,2BAA2B;AAAA,IAC3B,2BAA2B;AAAA,IAC3B,0BAA0B;AAAA,IAC1B,yBAAyB;AAAA,IACzB,2BAA2B;AAAA,IAC3B,0BAA0B;AAAA,IAC1B,yBAAyB;AAAA,IACzB,wBAAwB;AAAA,IACxB,uBAAuB;AAAA,IACvB,sBAAsB;AAAA,IACtB,wBAAwB;AAAA,IACxB,uBAAuB;AAAA,IACvB,sBAAsB;AAAA,IACtB,4BAA4B;AAAA,IAC5B,2BAA2B;AAAA,IAC3B,0BAA0B;AAAA,IAC1B,0BAA0B;AAAA,IAC1B,yBAAyB;AAAA,IACzB,wBAAwB;AAAA,IACxB,wBAAwB;AAAA,IACxB,uBAAuB;AAAA,IACvB,sBAAsB;AAAA,IACtB,6BAA6B;AAAA,IAC7B,4BAA4B;AAAA,IAC5B,2BAA2B;AAAA,IAC3B,6BAA6B;AAAA,IAC7B,4BAA4B;AAAA,IAC5B,2BAA2B;AAAA,IAC3B,wBAAwB;AAAA,IACxB,uBAAuB;AAAA,IACvB,sBAAsB;AAAA,IACtB,aAAa;AAAA,EACf;AAAA;AAAA,EAGA,qBAAqB;AAAA,IACnB,gBAAgB;AAAA,IAChB,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,eAAe;AAAA,EACjB;AAAA;AAAA,EAGA,wBAAwB;AAAA,IACtB,gBAAgB;AAAA,IAChB,UAAU;AAAA,IACV,aAAa;AAAA,EACf;AAAA;AAAA,EAGA,2BAA2B;AAAA,IACzB,eAAe;AAAA,IACf,iBAAiB;AAAA,IACjB,wBAAwB;AAAA,IACxB,iBAAiB;AAAA,IACjB,wBAAwB;AAAA,EAC1B;AAAA;AAAA,EAGA,2BAA2B;AAAA,IACzB,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,SAAS;AAAA,IACT,aAAa;AAAA,EACf;AAAA;AAAA,EAGA,8BAA8B;AAAA,IAC5B,gBAAgB;AAAA,IAChB,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,eAAe;AAAA,IACf,eAAe;AAAA,EACjB;AAAA;AAAA,EAGA,wBAAwB;AAAA,IACtB,gBAAgB;AAAA,IAChB,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,kBAAkB;AAAA,IAClB,mBAAmB;AAAA,IACnB,gBAAgB;AAAA,IAChB,kBAAkB;AAAA,IAClB,oBAAoB;AAAA,IACpB,cAAc;AAAA,IACd,mBAAmB;AAAA,IACnB,oBAAoB;AAAA,IACpB,iBAAiB;AAAA,IACjB,mBAAmB;AAAA,IACnB,qBAAqB;AAAA,IACrB,UAAU;AAAA,EACZ;AAAA;AAAA,EAGA,sBAAsB;AAAA,IACpB,iBAAiB;AAAA,IACjB,gBAAgB;AAAA,IAChB,mBAAmB;AAAA,IACnB,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,aAAa;AAAA,IACb,kBAAkB;AAAA,IAClB,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,cAAc;AAAA,IACd,cAAc;AAAA,IACd,mBAAmB;AAAA,IACnB,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,yBAAyB;AAAA,IACzB,wBAAwB;AAAA,IACxB,yBAAyB;AAAA,IACzB,yBAAyB;AAAA,IACzB,yBAAyB;AAAA,IACzB,uBAAuB;AAAA,IACvB,uBAAuB;AAAA,IACvB,4BAA4B;AAAA,IAC5B,4BAA4B;AAAA,EAC9B;AACF;AAOO,SAAS,iBAAiB,YAAkC;AACjE,SAAO,mBAAmB,UAAU,KAAK,CAAC;AAC5C;AASO,SAAS,oBAAoB,QAAgB,YAA4B;AAC9E,MAAI,CAAC,QAAQ;AAAC,WAAO;AAAA,EAAM;AAE3B,QAAM,gBAAgB,iBAAiB,UAAU;AACjD,MAAI,SAAS;AAGb,aAAW,CAAC,WAAW,UAAU,KAAK,OAAO,QAAQ,aAAa,GAAG;AAEnE,UAAM,WAAW;AAAA;AAAA,MAEf,IAAI,OAAO,MAAM,SAAS,OAAO,GAAG;AAAA;AAAA,MAEpC,IAAI,OAAO,aAAa,SAAS,OAAO,GAAG;AAAA,IAC7C;AAEA,aAAS,QAAQ,CAAC,YAAY;AAC5B,eAAS,OAAO,QAAQ,SAAS,QAAQ,UAAU,EAAE;AAAA,IACvD,CAAC;AAAA,EACH;AAEA,SAAO;AACT;;;AD7QO,IAAM,YAAN,MAAgB;AAAA,EAMrB,YAAY,SAA4B;AALxC,wBAAQ;AACR,wBAAQ;AACR,wBAAQ;AACR,wBAAQ,eAAoC;AAG1C,SAAK,UAAU;AACf,SAAK,eAAe,oBAAI,IAAI;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAc,aAA4B;AACxC,QAAI,KAAK,gBAAgB;AACvB;AAAA,IACF;AAGA,UAAM,QAAQ,MAAM,KAAK,cAAc;AACvC,UAAM,mBAAmB,KAAK,WAAW,KAAK,QAAQ,WAAW,KAAK;AAEtE,SAAK,iBAAiB,IAAI,WAAW,kBAAkB;AAAA,MACrD,UAAU,OAAO,SAAiC;AAChD,eAAO,KAAK,cAAc;AAAA,MAC5B;AAAA,IACF,CAAC;AAED,SAAK,eACF,GAAG,aAAa,MAAM;AACrB,cAAQ,IAAI,uBAAuB;AAAA,IACrC,CAAC,EACA,GAAG,gBAAgB,CAAC,QAAQ;AAC3B,cAAQ,KAAK,4BAA4B,GAAG;AAAA,IAC9C,CAAC,EACA,GAAG,SAAS,CAAC,QAAQ;AACpB,cAAQ,MAAM,uBAAuB,GAAG;AAAA,IAC1C,CAAC;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAc,oBAAmC;AAC/C,QAAI,CAAC,KAAK,aAAa;AAErB,WAAK,QAAQ;AAAA,IACf;AACA,UAAM,KAAK;AAAA,EACb;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,gBAAiC;AAC7C,WAAO,OAAO,KAAK,QAAQ,gBAAgB,WACvC,KAAK,QAAQ,cACb,MAAM,KAAK,QAAQ,YAAY,SAAS;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA,EAKQ,WAAW,UAAkB,OAAuB;AAC1D,UAAM,MAAM,IAAI,IAAI,QAAQ;AAC5B,QAAI,aAAa,IAAI,SAAS,KAAK;AACnC,WAAO,IAAI,SAAS;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,UAAgB;AAEd,SAAK,cAAc,KAAK,WAAW,EAAE,KAAK,MAAM;AAC9C,WAAK,eAAe,QAAQ;AAAA,IAC9B,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAAa;AACX,QAAI,KAAK,gBAAgB;AACvB,WAAK,eAAe,WAAW;AAAA,IACjC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,cAAuB;AACrB,WAAO,KAAK,gBAAgB,UAAU;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,gBAAgB;AACd,QAAI,KAAK,gBAAgB;AACvB,WAAK,eAAe,cAAc;AAAA,IACpC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,eAAe;AACb,QAAI,KAAK,gBAAgB;AACvB,WAAK,eAAe,aAAa;AAAA,IACnC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,eAAe,eAAqD;AAElE,SAAK,cAAc;AAGnB,UAAM,gBAAgB,cAAc;AAGpC,SAAK,aAAa;AAElB,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,iBAAiB,eAAqC;AACpD,QAAI,CAAC,iBAAiB,cAAc,WAAW,GAAG;AAChD;AAAA,IACF;AAGA,kBAAc,QAAQ,CAAC,UAAU;AAC/B,UAAI,SAAS,OAAO,MAAM,gBAAgB,YAAY;AACpD,cAAM,YAAY;AAAA,MACpB;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,UAAmB,SAAiB,IAAuB,QAAiB,YAAmC;AAE7G,QAAI,YAAY,KAAK,aAAa,IAAI,OAAO;AAC7C,QAAI,CAAC,WAAW;AACd,kBAAY,oBAAI,IAAI;AACpB,WAAK,aAAa,IAAI,SAAS,SAAS;AAAA,IAC1C;AACA,cAAU,IAAI,EAAE;AAGhB,SAAK,kBAAkB,EAAE,KAAK,MAAM;AAClC,UAAI,MAAM,KAAK,eAAe,gBAAgB,OAAO;AAErD,UAAI,CAAC,KAAK;AACR,gBAAQ,IAAI,gCAAgC,OAAO;AAGnD,cAAM,kBAAkB,UAAU,aAAa,oBAAoB,QAAQ,UAAU,IAAI;AAEzF,cAAM,KAAK,eAAe,gBAAgB,SAAS;AAAA,UACjD,OAAO;AAAA,UACP,GAAI,mBAAmB,EAAE,QAAQ,gBAAgB;AAAA,QACnD,CAAC;AAED,YACG,GAAG,cAAc,MAAM;AACtB,kBAAQ,IAAI,0BAA0B,OAAO;AAAA,QAC/C,CAAC,EACA,GAAG,gBAAgB,MAAM;AACxB,kBAAQ,IAAI,4BAA4B,OAAO;AAAA,QACjD,CAAC,EACA,GAAG,eAAe,CAAC,QAAQ;AAC1B,gBAAM,mBAAmB,KAAK,aAAa,IAAI,OAAO;AACtD,4BAAkB,QAAQ,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC;AAAA,QAChD,CAAC,EACA,UAAU;AAAA,MACf;AAAA,IACF,CAAC;AAED,WAAO,IAAI,mBAAsB,MAAM,SAAS,EAAE;AAAA,EACpD;AAAA,EAEA,YAAqB,SAAiB,IAAuB;AAC3D,UAAM,YAAY,KAAK,aAAa,IAAI,OAAO;AAC/C,QAAI,CAAC,WAAW;AACd;AAAA,IACF;AAEA,cAAU,OAAO,EAAE;AACnB,YAAQ,IAAI,mCAAmC,UAAU,IAAI;AAE7D,QAAI,UAAU,SAAS,GAAG;AACxB,cAAQ,IAAI,yBAAyB,OAAO;AAC5C,WAAK,aAAa,OAAO,OAAO;AAGhC,WAAK,kBAAkB,EAAE,KAAK,MAAM;AAClC,cAAM,MAAM,KAAK,eAAe,gBAAgB,OAAO;AACvD,YAAI,KAAK;AACP,cAAI,YAAY;AAChB,eAAK,eAAe,mBAAmB,GAAG;AAAA,QAC5C;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEQ,yBAAyB,OAAoB;AACnD,QAAI,UAAU,QAAQ,UAAU,QAAW;AACzC,aAAO;AAAA,IACT;AAEA,UAAM,WAAW,MAAM,SAAS;AAChC,QAAI,SAAS,SAAS,IAAI,KAAK,SAAS,SAAS,IAAI,GAAG;AACtD,aAAO,OAAO,KAAK,EAChB,QAAQ,EAAE,EACV,QAAQ,UAAU,EAAE;AAAA,IACzB;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,sBAAsB;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAMiB;AACf,UAAM,UAAU,cAAc,KAAK,IAAI,YAAY,IAAI,UAAU;AACjE,WAAO,KAAK,UAAU,SAAS,CAAC,SAAc;AAC5C,eAAS;AAAA,QACP,MAAM,KAAK;AAAA,QACX,OAAO,KAAK;AAAA,QACZ,MAAM,KAAK;AAAA,QACX,KAAK,KAAK;AAAA,QACV,QAAQ,KAAK;AAAA,QACb,YAAY,KAAK;AAAA,QACjB,MAAM,KAAK;AAAA,QACX,QAAQ,KAAK;AAAA,MACf,CAAC;AAAA,IACH,GAAG,QAAQ,uBAAuB;AAAA,EACpC;AAAA,EAEA,oBAAoB;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAKiB;AACf,UAAM,UAAU,mBAAmB,KAAK,IAAI,YAAY;AACxD,WAAO,KAAK,UAAU,SAAS,CAAC,SAC9B,SAAS;AAAA,MACP,SAAS,KAAK;AAAA,MACd,WAAW,KAAK;AAAA,MAChB,QAAQ,KAAK;AAAA,MACb,SAAS,KAAK;AAAA,MACd,UAAU,KAAK;AAAA,MACf,WAAW,KAAK;AAAA,MAChB,kBAAkB,KAAK,yBAAyB,KAAK,MAAM;AAAA,MAC3D,mBAAmB,KAAK,yBAAyB,KAAK,MAAM;AAAA,MAC5D,SAAS,KAAK,yBAAyB,KAAK,GAAG;AAAA,MAC/C,aAAa,KAAK,yBAAyB,KAAK,KAAK;AAAA,MACrD,cAAc,KAAK,yBAAyB,KAAK,KAAK;AAAA,MAEtD,QAAQ,KAAK;AAAA,MACb,SAAS,KAAK;AAAA,MACd,UAAU,KAAK;AAAA,MACf,WAAW,KAAK;AAAA,MAChB,kBAAkB,KAAK,yBAAyB,KAAK,MAAM;AAAA,MAC3D,mBAAmB,KAAK,yBAAyB,KAAK,MAAM;AAAA,MAC5D,SAAS,KAAK,yBAAyB,KAAK,GAAG;AAAA,MAC/C,aAAa,KAAK,yBAAyB,KAAK,KAAK;AAAA,MACrD,cAAc,KAAK,yBAAyB,KAAK,KAAK;AAAA,MAEtD,SAAS,KAAK;AAAA,MACd,UAAU,KAAK;AAAA,MACf,WAAW,KAAK;AAAA,MAChB,YAAY,KAAK;AAAA,MACjB,mBAAmB,KAAK,yBAAyB,KAAK,OAAO;AAAA,MAC7D,oBAAoB,KAAK,yBAAyB,KAAK,OAAO;AAAA,MAC9D,UAAU,KAAK,yBAAyB,KAAK,IAAI;AAAA,MACjD,cAAc,KAAK,yBAAyB,KAAK,MAAM;AAAA,MACvD,eAAe,KAAK,yBAAyB,KAAK,MAAM;AAAA,MAExD,SAAS,KAAK;AAAA,MACd,UAAU,KAAK;AAAA,MACf,WAAW,KAAK;AAAA,MAChB,YAAY,KAAK;AAAA,MACjB,mBAAmB,KAAK,yBAAyB,KAAK,OAAO;AAAA,MAC7D,oBAAoB,KAAK,yBAAyB,KAAK,OAAO;AAAA,MAC9D,UAAU,KAAK,yBAAyB,KAAK,IAAI;AAAA,MACjD,cAAc,KAAK,yBAAyB,KAAK,MAAM;AAAA,MACvD,eAAe,KAAK,yBAAyB,KAAK,MAAM;AAAA,MAExD,QAAQ,KAAK;AAAA,MACb,SAAS,KAAK;AAAA,MACd,UAAU,KAAK;AAAA,MACf,WAAW,KAAK;AAAA,MAChB,kBAAkB,KAAK,yBAAyB,KAAK,MAAM;AAAA,MAC3D,mBAAmB,KAAK,yBAAyB,KAAK,MAAM;AAAA,MAC5D,SAAS,KAAK,yBAAyB,KAAK,GAAG;AAAA,MAC/C,aAAa,KAAK,yBAAyB,KAAK,KAAK;AAAA,MACrD,cAAc,KAAK,yBAAyB,KAAK,KAAK;AAAA,MAEtD,QAAQ,KAAK;AAAA,MACb,SAAS,KAAK;AAAA,MACd,UAAU,KAAK;AAAA,MACf,WAAW,KAAK;AAAA,MAChB,kBAAkB,KAAK,yBAAyB,KAAK,MAAM;AAAA,MAC3D,mBAAmB,KAAK,yBAAyB,KAAK,MAAM;AAAA,MAC5D,SAAS,KAAK,yBAAyB,KAAK,GAAG;AAAA,MAC/C,aAAa,KAAK,yBAAyB,KAAK,KAAK;AAAA,MACrD,cAAc,KAAK,yBAAyB,KAAK,KAAK;AAAA,MAEtD,SAAS,KAAK;AAAA,MACd,UAAU,KAAK;AAAA,MACf,WAAW,KAAK;AAAA,MAChB,YAAY,KAAK;AAAA,MACjB,mBAAmB,KAAK,yBAAyB,KAAK,OAAO;AAAA,MAC7D,oBAAoB,KAAK,yBAAyB,KAAK,OAAO;AAAA,MAC9D,UAAU,KAAK,yBAAyB,KAAK,IAAI;AAAA,MACjD,cAAc,KAAK,yBAAyB,KAAK,MAAM;AAAA,MACvD,eAAe,KAAK,yBAAyB,KAAK,MAAM;AAAA,MAExD,OAAO,KAAK,yBAAyB,KAAK,CAAC;AAAA,IAC7C,CAAC,GAAG,QAAQ,qBAAqB;AAAA,EACrC;AAAA,EAEA,sBAAsB;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAKiB;AACf,UAAM,UAAU,qBAAqB,KAAK,IAAI,YAAY;AAC1D,WAAO,KAAK,UAAU,SAAS,CAAC,SAC9B,SAAS;AAAA,MACP,cAAc,KAAK;AAAA,MACnB,SAAS,KAAK;AAAA,MACd,qBAAqB,KAAK,yBAAyB,KAAK,KAAK;AAAA,MAC7D,oBAAoB,KAAK,yBAAyB,KAAK,IAAI;AAAA,MAC3D,oBAAoB,KAAK,yBAAyB,KAAK,IAAI;AAAA,MAC3D,eAAe,KAAK;AAAA,MACpB,cAAc,KAAK;AAAA,MACnB,cAAc,KAAK;AAAA,MACnB,oBAAoB,KAAK,yBAAyB,KAAK,KAAK;AAAA,MAC5D,mBAAmB,KAAK,yBAAyB,KAAK,IAAI;AAAA,MAC1D,mBAAmB,KAAK,yBAAyB,KAAK,IAAI;AAAA,MAC1D,iBAAiB,KAAK;AAAA,MACtB,gBAAgB,KAAK,yBAAyB,KAAK,EAAE;AAAA,MACrD,eAAe,KAAK,yBAAyB,KAAK,EAAE;AAAA,MACpD,wBAAwB,KAAK;AAAA,MAC7B,uBAAuB,KAAK,yBAAyB,KAAK,IAAI;AAAA,MAC9D,sBAAsB,KAAK,yBAAyB,KAAK,IAAI;AAAA,MAC7D,2BAA2B,KAAK;AAAA,MAChC,0BAA0B,KAAK,yBAAyB,KAAK,IAAI;AAAA,MACjE,yBAAyB,KAAK,yBAAyB,KAAK,IAAI;AAAA,MAChE,yBAAyB,KAAK;AAAA,MAC9B,wBAAwB,KAAK,yBAAyB,KAAK,IAAI;AAAA,MAC/D,uBAAuB,KAAK,yBAAyB,KAAK,IAAI;AAAA,MAC9D,yBAAyB,KAAK;AAAA,MAC9B,wBAAwB,KAAK,yBAAyB,KAAK,KAAK;AAAA,MAChE,uBAAuB,KAAK,yBAAyB,KAAK,KAAK;AAAA,MAC/D,sBAAsB,KAAK;AAAA,MAC3B,qBAAqB,KAAK,yBAAyB,KAAK,IAAI;AAAA,MAC5D,oBAAoB,KAAK,yBAAyB,KAAK,IAAI;AAAA,MAC3D,sBAAsB,KAAK;AAAA,MAC3B,qBAAqB,KAAK,yBAAyB,KAAK,IAAI;AAAA,MAC5D,oBAAoB,KAAK,yBAAyB,KAAK,IAAI;AAAA,MAC3D,0BAA0B,KAAK;AAAA,MAC/B,yBAAyB,KAAK,yBAAyB,KAAK,IAAI;AAAA,MAChE,wBAAwB,KAAK,yBAAyB,KAAK,IAAI;AAAA,MAC/D,wBAAwB,KAAK;AAAA,MAC7B,uBAAuB,KAAK,yBAAyB,KAAK,KAAK;AAAA,MAC/D,sBAAsB,KAAK,yBAAyB,KAAK,KAAK;AAAA,MAC9D,sBAAsB,KAAK;AAAA,MAC3B,qBAAqB,KAAK,yBAAyB,KAAK,IAAI;AAAA,MAC5D,oBAAoB,KAAK,yBAAyB,KAAK,IAAI;AAAA,MAC3D,2BAA2B,KAAK;AAAA,MAChC,0BAA0B,KAAK,yBAAyB,KAAK,KAAK;AAAA,MAClE,yBAAyB,KAAK,yBAAyB,KAAK,KAAK;AAAA,MACjE,2BAA2B,KAAK;AAAA,MAChC,0BAA0B,KAAK,yBAAyB,KAAK,KAAK;AAAA,MAClE,yBAAyB,KAAK,yBAAyB,KAAK,KAAK;AAAA,MACjE,sBAAsB,KAAK;AAAA,MAC3B,qBAAqB,KAAK,yBAAyB,KAAK,IAAI;AAAA,MAC5D,oBAAoB,KAAK,yBAAyB,KAAK,IAAI;AAAA,MAC3D,WAAW,KAAK;AAAA,IAClB,CAAC,GAAG,QAAQ,uBAAuB;AAAA,EACvC;AAAA,EAEA,kBAAkB;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAIiB;AACf,UAAM,UAAU,iBAAiB,KAAK;AACtC,WAAO,KAAK,UAAU,SAAS,CAAC,SAAc;AAC5C,YAAM,SAAc;AAAA,QAClB,cAAc,KAAK;AAAA,QACnB,MAAM,KAAK;AAAA,QACX,QAAQ,KAAK;AAAA,QACb,aAAa,KAAK;AAAA,MACpB;AAEA,UAAI,KAAK,KAAK;AACZ,eAAO,WAAW,KAAK;AAAA,MACzB;AAEA,UAAI,KAAK,IAAI;AACX,eAAO,aAAa,CAAC;AACrB,YAAI,KAAK,GAAG,IAAI;AAAE,iBAAO,WAAW,iBAAiB,KAAK,GAAG;AAAA,QAAG;AAChE,YAAI,KAAK,GAAG,IAAI;AAAE,iBAAO,WAAW,iBAAiB,KAAK,GAAG;AAAA,QAAG;AAChE,YAAI,KAAK,GAAG,IAAI;AAAE,iBAAO,WAAW,eAAe,KAAK,GAAG;AAAA,QAAG;AAAA,MAChE;AAEA,eAAS,MAAM;AAAA,IACjB,GAAG,QAAQ,mBAAmB;AAAA,EAChC;AAAA,EAEA,2BAA2B;AAAA,IACzB;AAAA,IACA;AAAA,EACF,GAGiB;AACf,UAAM,UAAU,2BAA2B,KAAK;AAChD,WAAO,KAAK;AAAA,MAAU;AAAA,MAAS,CAAC,SAC9B;AAAA,QACE,KAAK;AAAA,UACH,CAAC,QACA;AAAA,YACC,cAAc,GAAG;AAAA,YACjB,MAAM,GAAG;AAAA,YACT,QAAQ,GAAG;AAAA,YACX,UAAU,GAAG;AAAA,YACb,aAAa,GAAG;AAAA,YAChB,cAAc,MAAM;AAClB,oBAAM,cAAmB,CAAC;AAC1B,kBAAI,GAAG,IAAI,IAAI;AAAE,4BAAY,UAAU,GAAG,GAAG;AAAA,cAAG;AAChD,kBAAI,GAAG,IAAI,IAAI;AAAE,4BAAY,WAAW,GAAG,GAAG;AAAA,cAAG;AACjD,kBAAI,GAAG,IAAI,GAAG;AAAE,4BAAY,UAAU,GAAG,GAAG;AAAA,cAAE;AAC9C,kBAAI,GAAG,IAAI,IAAI;AAAE,4BAAY,SAAS,GAAG,GAAG;AAAA,cAAG;AAC/C,kBAAI,GAAG,IAAI,IAAI;AAAE,4BAAY,UAAU,GAAG,GAAG;AAAA,cAAG;AAChD,kBAAI,GAAG,IAAI,IAAI;AAAE,4BAAY,WAAW,GAAG,GAAG;AAAA,cAAG;AACjD,kBAAI,GAAG,IAAI,IAAI;AAAE,4BAAY,SAAS,GAAG,GAAG;AAAA,cAAG;AAC/C,kBAAI,GAAG,IAAI,IAAI;AAAE,4BAAY,YAAY,GAAG,GAAG;AAAA,cAAG;AAClD,kBAAI,GAAG,IAAI,IAAI;AAAE,4BAAY,WAAW,GAAG,GAAG;AAAA,cAAG;AACjD,kBAAI,GAAG,IAAI,IAAI;AAAE,4BAAY,SAAS,GAAG,GAAG;AAAA,cAAG;AAC/C,kBAAI,GAAG,IAAI,IAAI;AAAE,4BAAY,SAAS,GAAG,GAAG;AAAA,cAAG;AAC/C,kBAAI,GAAG,IAAI,IAAI;AAAE,4BAAY,UAAU,GAAG,GAAG;AAAA,cAAG;AAChD,kBAAI,GAAG,IAAI,IAAI;AAAE,4BAAY,YAAY,GAAG,GAAG;AAAA,cAAG;AAClD,qBAAO;AAAA,YACT,GAAG;AAAA,YACH,aAAa,GAAG;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA0BA,qBAAqB;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAKiB;AACf,UAAM,UAAU,oBAAoB,KAAK,IAAI,YAAY;AACzD,WAAO,KAAK,UAAU,SAAS,CAAC,SAC9B,SAAS;AAAA,MACP,cAAc,KAAK;AAAA,MACnB,QAAQ,KAAK;AAAA,MACb,gBAAgB,KAAK;AAAA,MACrB,WAAW,KAAK;AAAA,IAClB,CAAC,GAAG,QAAQ,sBAAsB;AAAA,EACtC;AAAA,EAEA,wBAAwB;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAKiB;AACf,UAAM,UAAU,8BAA8B,KAAK,IAAI,YAAY;AACnE,WAAO,KAAK,UAAU,SAAS,CAAC,SAC9B,SAAS;AAAA,MACP,cAAc,KAAK;AAAA,MACnB,YAAY,KAAK;AAAA,MACjB,OAAO,KAAK;AAAA,MACZ,WAAW,KAAK;AAAA,IAClB,CAAC,GAAG,QAAQ,yBAAyB;AAAA,EACzC;AAAA,EAEA,gCAAgC;AAAA,IAC9B;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAIiB;AACf,UAAM,UAAU,2CAA2C,KAAK,IAAI,WAAW;AAC/E,WAAO,KAAK;AAAA,MAAU;AAAA,MAAS,CAAC,SAC9B;AAAA,QACE,MAAM;AAAA,UACJ,CAAC,QACE;AAAA,YACC,cAAc,GAAG;AAAA,YACjB,YAAY,GAAG;AAAA,YACf,OAAO,GAAG;AAAA,YACV,WAAW,GAAG;AAAA,UAChB;AAAA,QACJ;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,2BAA2B;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAKiB;AACf,UAAM,UAAU,MACZ,oBAAoB,KAAK,IAAI,YAAY,IAAI,GAAG,KAChD,oBAAoB,KAAK,IAAI,YAAY;AAC7C,WAAO,KAAK;AAAA,MAAU;AAAA,MAAS,CAAC,SAC9B;AAAA,QACE,MAAM,IAAI,CAAC,SAAc;AACvB,gBAAM,SAA2B,CAAC;AAGlC,cAAI,KAAK,GAAG;AACV,mBAAO,WAAW;AAAA,cAChB,cAAc,KAAK,EAAE;AAAA,YACvB;AACA,gBAAI,KAAK,EAAE,GAAG;AAAE,qBAAO,SAAS,OAAO,KAAK,EAAE;AAAA,YAAE;AAChD,gBAAI,KAAK,EAAE,GAAG;AAAE,qBAAO,SAAS,SAAS,KAAK,EAAE;AAAA,YAAE;AAClD,gBAAI,KAAK,EAAE,IAAI;AAAE,qBAAO,SAAS,WAAW,KAAK,EAAE;AAAA,YAAG;AACtD,gBAAI,KAAK,EAAE,IAAI;AAAE,qBAAO,SAAS,cAAc,KAAK,EAAE;AAAA,YAAG;AACzD,gBAAI,KAAK,EAAE,GAAG;AAAE,qBAAO,SAAS,WAAW,KAAK,EAAE;AAAA,YAAI;AACtD,gBAAI,KAAK,EAAE,KAAK;AAAE,qBAAO,SAAS,cAAc,KAAK,EAAE;AAAA,YAAI;AAC3D,gBAAI,KAAK,EAAE,IAAI;AACb,qBAAO,SAAS,aAAa,CAAC;AAC9B,kBAAI,KAAK,EAAE,GAAG,IAAI;AAAE,uBAAO,SAAS,WAAW,iBAAiB,KAAK,EAAE,GAAG;AAAA,cAAG;AAC7E,kBAAI,KAAK,EAAE,GAAG,IAAI;AAAE,uBAAO,SAAS,WAAW,iBAAiB,KAAK,EAAE,GAAG;AAAA,cAAG;AAC7E,kBAAI,KAAK,EAAE,GAAG,IAAI;AAAE,uBAAO,SAAS,WAAW,eAAe,KAAK,EAAE,GAAG;AAAA,cAAG;AAAA,YAC7E;AACA,gBAAI,KAAK,EAAE,IAAI;AACb,qBAAO,SAAS,aAAa,CAAC;AAC9B,kBAAI,KAAK,EAAE,GAAG,IAAI;AAAE,uBAAO,SAAS,WAAW,iBAAiB,KAAK,EAAE,GAAG;AAAA,cAAG;AAC7E,kBAAI,KAAK,EAAE,GAAG,IAAI;AAAE,uBAAO,SAAS,WAAW,iBAAiB,KAAK,EAAE,GAAG;AAAA,cAAG;AAC7E,kBAAI,KAAK,EAAE,GAAG,IAAI;AAAE,uBAAO,SAAS,WAAW,eAAe,KAAK,EAAE,GAAG;AAAA,cAAG;AAAA,YAC7E;AACA,gBAAI,KAAK,EAAE,IAAI;AACb,qBAAO,SAAS,cAAc,CAAC;AAC/B,kBAAI,KAAK,EAAE,GAAG,IAAI;AAAE,uBAAO,SAAS,YAAY,UAAU,KAAK,EAAE,GAAG;AAAA,cAAG;AACvE,kBAAI,KAAK,EAAE,GAAG,IAAI;AAAE,uBAAO,SAAS,YAAY,WAAW,KAAK,EAAE,GAAG;AAAA,cAAG;AACxE,kBAAI,KAAK,EAAE,GAAG,GAAG;AAAE,uBAAO,SAAS,YAAY,UAAU,KAAK,EAAE,GAAG;AAAA,cAAE;AACrE,kBAAI,KAAK,EAAE,GAAG,IAAI;AAAE,uBAAO,SAAS,YAAY,SAAS,KAAK,EAAE,GAAG;AAAA,cAAG;AACtE,kBAAI,KAAK,EAAE,GAAG,IAAI;AAAE,uBAAO,SAAS,YAAY,UAAU,KAAK,EAAE,GAAG;AAAA,cAAG;AACvE,kBAAI,KAAK,EAAE,GAAG,IAAI;AAAE,uBAAO,SAAS,YAAY,WAAW,KAAK,EAAE,GAAG;AAAA,cAAG;AACxE,kBAAI,KAAK,EAAE,GAAG,IAAI;AAAE,uBAAO,SAAS,YAAY,SAAS,KAAK,EAAE,GAAG;AAAA,cAAG;AACtE,kBAAI,KAAK,EAAE,GAAG,IAAI;AAAE,uBAAO,SAAS,YAAY,YAAY,KAAK,EAAE,GAAG;AAAA,cAAG;AACzE,kBAAI,KAAK,EAAE,GAAG,IAAI;AAAE,uBAAO,SAAS,YAAY,WAAW,KAAK,EAAE,GAAG;AAAA,cAAG;AACxE,kBAAI,KAAK,EAAE,GAAG,IAAI;AAAE,uBAAO,SAAS,YAAY,SAAS,KAAK,EAAE,GAAG;AAAA,cAAG;AACtE,kBAAI,KAAK,EAAE,GAAG,IAAI;AAAE,uBAAO,SAAS,YAAY,SAAS,KAAK,EAAE,GAAG;AAAA,cAAG;AACtE,kBAAI,KAAK,EAAE,GAAG,IAAI;AAAE,uBAAO,SAAS,YAAY,UAAU,KAAK,EAAE,GAAG;AAAA,cAAG;AACvE,kBAAI,KAAK,EAAE,GAAG,IAAI;AAAE,uBAAO,SAAS,YAAY,YAAY,KAAK,EAAE,GAAG;AAAA,cAAG;AAAA,YAC3E;AACA,gBAAI,KAAK,EAAE,KAAK;AAAE,qBAAO,SAAS,cAAc,KAAK,EAAE;AAAA,YAAI;AAAA,UAC7D;AAGA,cAAI,KAAK,IAAI;AACX,mBAAO,eAAe,CAAC;AACvB,gBAAI,KAAK,GAAG,IAAI;AAAE,qBAAO,aAAa,gBAAgB,KAAK,yBAAyB,KAAK,GAAG,EAAE;AAAA,YAAE;AAAA,UAClG;AAGA,cAAI,KAAK,GAAG;AACV,mBAAO,SAAS;AAAA,cACd,cAAc,KAAK,EAAE;AAAA,cACrB,WAAW,KAAK,EAAE,MAAM;AAAA,YAC1B;AACA,gBAAI,KAAK,EAAE,GAAG;AAAE,qBAAO,OAAO,UAAU,KAAK,EAAE;AAAA,YAAE;AACjD,gBAAI,KAAK,EAAE,OAAO;AAAE,qBAAO,OAAO,sBAAsB,KAAK,yBAAyB,KAAK,EAAE,KAAK;AAAA,YAAE;AACpG,gBAAI,KAAK,EAAE,MAAM;AAAE,qBAAO,OAAO,qBAAqB,KAAK,yBAAyB,KAAK,EAAE,IAAI;AAAA,YAAE;AACjG,gBAAI,KAAK,EAAE,MAAM;AAAE,qBAAO,OAAO,qBAAqB,KAAK,yBAAyB,KAAK,EAAE,IAAI;AAAA,YAAE;AACjG,gBAAI,KAAK,EAAE,OAAO;AAAE,qBAAO,OAAO,gBAAgB,KAAK,EAAE;AAAA,YAAM;AAC/D,gBAAI,KAAK,EAAE,MAAM;AAAE,qBAAO,OAAO,eAAe,KAAK,EAAE;AAAA,YAAK;AAC5D,gBAAI,KAAK,EAAE,MAAM;AAAE,qBAAO,OAAO,eAAe,KAAK,EAAE;AAAA,YAAK;AAC5D,gBAAI,KAAK,EAAE,OAAO;AAAE,qBAAO,OAAO,qBAAqB,KAAK,yBAAyB,KAAK,EAAE,KAAK;AAAA,YAAE;AACnG,gBAAI,KAAK,EAAE,MAAM;AAAE,qBAAO,OAAO,oBAAoB,KAAK,yBAAyB,KAAK,EAAE,IAAI;AAAA,YAAE;AAChG,gBAAI,KAAK,EAAE,MAAM;AAAE,qBAAO,OAAO,oBAAoB,KAAK,yBAAyB,KAAK,EAAE,IAAI;AAAA,YAAE;AAChG,gBAAI,KAAK,EAAE,IAAI;AAAE,qBAAO,OAAO,kBAAkB,KAAK,EAAE;AAAA,YAAG;AAC3D,gBAAI,KAAK,EAAE,IAAI;AAAE,qBAAO,OAAO,iBAAiB,KAAK,yBAAyB,KAAK,EAAE,EAAE;AAAA,YAAE;AACzF,gBAAI,KAAK,EAAE,IAAI;AAAE,qBAAO,OAAO,gBAAgB,KAAK,yBAAyB,KAAK,EAAE,EAAE;AAAA,YAAE;AACxF,gBAAI,KAAK,EAAE,MAAM;AAAE,qBAAO,OAAO,yBAAyB,KAAK,EAAE;AAAA,YAAK;AACtE,gBAAI,KAAK,EAAE,MAAM;AAAE,qBAAO,OAAO,wBAAwB,KAAK,yBAAyB,KAAK,EAAE,IAAI;AAAA,YAAE;AACpG,gBAAI,KAAK,EAAE,MAAM;AAAE,qBAAO,OAAO,uBAAuB,KAAK,yBAAyB,KAAK,EAAE,IAAI;AAAA,YAAE;AACnG,gBAAI,KAAK,EAAE,MAAM;AAAE,qBAAO,OAAO,4BAA4B,KAAK,EAAE;AAAA,YAAK;AACzE,gBAAI,KAAK,EAAE,MAAM;AAAE,qBAAO,OAAO,2BAA2B,KAAK,yBAAyB,KAAK,EAAE,IAAI;AAAA,YAAE;AACvG,gBAAI,KAAK,EAAE,MAAM;AAAE,qBAAO,OAAO,0BAA0B,KAAK,yBAAyB,KAAK,EAAE,IAAI;AAAA,YAAE;AACtG,gBAAI,KAAK,EAAE,MAAM;AAAE,qBAAO,OAAO,0BAA0B,KAAK,EAAE;AAAA,YAAK;AACvE,gBAAI,KAAK,EAAE,MAAM;AAAE,qBAAO,OAAO,yBAAyB,KAAK,yBAAyB,KAAK,EAAE,IAAI;AAAA,YAAE;AACrG,gBAAI,KAAK,EAAE,MAAM;AAAE,qBAAO,OAAO,wBAAwB,KAAK,yBAAyB,KAAK,EAAE,IAAI;AAAA,YAAE;AACpG,gBAAI,KAAK,EAAE,OAAO;AAAE,qBAAO,OAAO,0BAA0B,KAAK,EAAE;AAAA,YAAM;AACzE,gBAAI,KAAK,EAAE,OAAO;AAAE,qBAAO,OAAO,yBAAyB,KAAK,yBAAyB,KAAK,EAAE,KAAK;AAAA,YAAE;AACvG,gBAAI,KAAK,EAAE,OAAO;AAAE,qBAAO,OAAO,wBAAwB,KAAK,yBAAyB,KAAK,EAAE,KAAK;AAAA,YAAE;AACtG,gBAAI,KAAK,EAAE,MAAM;AAAE,qBAAO,OAAO,uBAAuB,KAAK,EAAE;AAAA,YAAK;AACpE,gBAAI,KAAK,EAAE,MAAM;AAAE,qBAAO,OAAO,sBAAsB,KAAK,yBAAyB,KAAK,EAAE,IAAI;AAAA,YAAE;AAClG,gBAAI,KAAK,EAAE,MAAM;AAAE,qBAAO,OAAO,qBAAqB,KAAK,yBAAyB,KAAK,EAAE,IAAI;AAAA,YAAE;AACjG,gBAAI,KAAK,EAAE,MAAM;AAAE,qBAAO,OAAO,uBAAuB,KAAK,EAAE;AAAA,YAAK;AACpE,gBAAI,KAAK,EAAE,MAAM;AAAE,qBAAO,OAAO,sBAAsB,KAAK,yBAAyB,KAAK,EAAE,IAAI;AAAA,YAAE;AAClG,gBAAI,KAAK,EAAE,MAAM;AAAE,qBAAO,OAAO,qBAAqB,KAAK,yBAAyB,KAAK,EAAE,IAAI;AAAA,YAAE;AACjG,gBAAI,KAAK,EAAE,MAAM;AAAE,qBAAO,OAAO,2BAA2B,KAAK,EAAE;AAAA,YAAK;AACxE,gBAAI,KAAK,EAAE,MAAM;AAAE,qBAAO,OAAO,0BAA0B,KAAK,yBAAyB,KAAK,EAAE,IAAI;AAAA,YAAE;AACtG,gBAAI,KAAK,EAAE,MAAM;AAAE,qBAAO,OAAO,yBAAyB,KAAK,yBAAyB,KAAK,EAAE,IAAI;AAAA,YAAE;AACrG,gBAAI,KAAK,EAAE,OAAO;AAAE,qBAAO,OAAO,yBAAyB,KAAK,EAAE;AAAA,YAAM;AACxE,gBAAI,KAAK,EAAE,OAAO;AAAE,qBAAO,OAAO,wBAAwB,KAAK,yBAAyB,KAAK,EAAE,KAAK;AAAA,YAAE;AACtG,gBAAI,KAAK,EAAE,OAAO;AAAE,qBAAO,OAAO,uBAAuB,KAAK,yBAAyB,KAAK,EAAE,KAAK;AAAA,YAAE;AACrG,gBAAI,KAAK,EAAE,MAAM;AAAE,qBAAO,OAAO,uBAAuB,KAAK,EAAE;AAAA,YAAK;AACpE,gBAAI,KAAK,EAAE,MAAM;AAAE,qBAAO,OAAO,sBAAsB,KAAK,yBAAyB,KAAK,EAAE,IAAI;AAAA,YAAE;AAClG,gBAAI,KAAK,EAAE,MAAM;AAAE,qBAAO,OAAO,qBAAqB,KAAK,yBAAyB,KAAK,EAAE,IAAI;AAAA,YAAE;AACjG,gBAAI,KAAK,EAAE,OAAO;AAAE,qBAAO,OAAO,4BAA4B,KAAK,EAAE;AAAA,YAAM;AAC3E,gBAAI,KAAK,EAAE,OAAO;AAAE,qBAAO,OAAO,2BAA2B,KAAK,yBAAyB,KAAK,EAAE,KAAK;AAAA,YAAE;AACzG,gBAAI,KAAK,EAAE,OAAO;AAAE,qBAAO,OAAO,0BAA0B,KAAK,yBAAyB,KAAK,EAAE,KAAK;AAAA,YAAE;AACxG,gBAAI,KAAK,EAAE,OAAO;AAAE,qBAAO,OAAO,4BAA4B,KAAK,EAAE;AAAA,YAAM;AAC3E,gBAAI,KAAK,EAAE,OAAO;AAAE,qBAAO,OAAO,2BAA2B,KAAK,yBAAyB,KAAK,EAAE,KAAK;AAAA,YAAE;AACzG,gBAAI,KAAK,EAAE,OAAO;AAAE,qBAAO,OAAO,0BAA0B,KAAK,yBAAyB,KAAK,EAAE,KAAK;AAAA,YAAE;AACxG,gBAAI,KAAK,EAAE,MAAM;AAAE,qBAAO,OAAO,uBAAuB,KAAK,EAAE;AAAA,YAAK;AACpE,gBAAI,KAAK,EAAE,MAAM;AAAE,qBAAO,OAAO,sBAAsB,KAAK,yBAAyB,KAAK,EAAE,IAAI;AAAA,YAAE;AAClG,gBAAI,KAAK,EAAE,MAAM;AAAE,qBAAO,OAAO,qBAAqB,KAAK,yBAAyB,KAAK,EAAE,IAAI;AAAA,YAAE;AAAA,UACnG;AAGA,cAAI,KAAK,GAAG;AACV,mBAAO,SAAS;AAAA,cACd,cAAc,KAAK,EAAE;AAAA,cACrB,WAAW,KAAK,EAAE,MAAM;AAAA,YAC1B;AACA,gBAAI,KAAK,EAAE,GAAG;AAAE,qBAAO,OAAO,SAAS,KAAK,EAAE;AAAA,YAAE;AAChD,gBAAI,KAAK,EAAE,IAAI;AAAE,qBAAO,OAAO,iBAAiB,KAAK,EAAE;AAAA,YAAG;AAAA,UAC5D;AAGA,cAAI,KAAK,IAAI;AACX,mBAAO,OAAO;AAAA,cACZ,SAAS,KAAK,GAAG;AAAA,cACjB,WAAW,KAAK,GAAG,KAAK;AAAA,YAC1B;AAGA,gBAAI,KAAK,GAAG,KAAK;AAAE,qBAAO,KAAK,SAAS,KAAK,GAAG;AAAA,YAAI;AACpD,gBAAI,KAAK,GAAG,KAAK;AAAE,qBAAO,KAAK,UAAU,KAAK,GAAG;AAAA,YAAI;AACrD,gBAAI,KAAK,GAAG,MAAM;AAAE,qBAAO,KAAK,WAAW,KAAK,GAAG;AAAA,YAAK;AACxD,gBAAI,KAAK,GAAG,MAAM;AAAE,qBAAO,KAAK,YAAY,KAAK,GAAG;AAAA,YAAK;AACzD,gBAAI,KAAK,GAAG,QAAQ;AAAE,qBAAO,KAAK,mBAAmB,KAAK,yBAAyB,KAAK,GAAG,MAAM;AAAA,YAAE;AACnG,gBAAI,KAAK,GAAG,QAAQ;AAAE,qBAAO,KAAK,oBAAoB,KAAK,yBAAyB,KAAK,GAAG,MAAM;AAAA,YAAE;AACpG,gBAAI,KAAK,GAAG,KAAK;AAAE,qBAAO,KAAK,UAAU,KAAK,yBAAyB,KAAK,GAAG,GAAG;AAAA,YAAE;AACpF,gBAAI,KAAK,GAAG,OAAO;AAAE,qBAAO,KAAK,cAAc,KAAK,yBAAyB,KAAK,GAAG,KAAK;AAAA,YAAE;AAC5F,gBAAI,KAAK,GAAG,OAAO;AAAE,qBAAO,KAAK,eAAe,KAAK,yBAAyB,KAAK,GAAG,KAAK;AAAA,YAAE;AAG7F,gBAAI,KAAK,GAAG,KAAK;AAAE,qBAAO,KAAK,SAAS,KAAK,GAAG;AAAA,YAAI;AACpD,gBAAI,KAAK,GAAG,KAAK;AAAE,qBAAO,KAAK,UAAU,KAAK,GAAG;AAAA,YAAI;AACrD,gBAAI,KAAK,GAAG,MAAM;AAAE,qBAAO,KAAK,WAAW,KAAK,GAAG;AAAA,YAAK;AACxD,gBAAI,KAAK,GAAG,MAAM;AAAE,qBAAO,KAAK,YAAY,KAAK,GAAG;AAAA,YAAK;AACzD,gBAAI,KAAK,GAAG,QAAQ;AAAE,qBAAO,KAAK,mBAAmB,KAAK,yBAAyB,KAAK,GAAG,MAAM;AAAA,YAAE;AACnG,gBAAI,KAAK,GAAG,QAAQ;AAAE,qBAAO,KAAK,oBAAoB,KAAK,yBAAyB,KAAK,GAAG,MAAM;AAAA,YAAE;AACpG,gBAAI,KAAK,GAAG,KAAK;AAAE,qBAAO,KAAK,UAAU,KAAK,yBAAyB,KAAK,GAAG,GAAG;AAAA,YAAE;AACpF,gBAAI,KAAK,GAAG,OAAO;AAAE,qBAAO,KAAK,cAAc,KAAK,yBAAyB,KAAK,GAAG,KAAK;AAAA,YAAE;AAC5F,gBAAI,KAAK,GAAG,OAAO;AAAE,qBAAO,KAAK,eAAe,KAAK,yBAAyB,KAAK,GAAG,KAAK;AAAA,YAAE;AAG7F,gBAAI,KAAK,GAAG,MAAM;AAAE,qBAAO,KAAK,UAAU,KAAK,GAAG;AAAA,YAAK;AACvD,gBAAI,KAAK,GAAG,MAAM;AAAE,qBAAO,KAAK,WAAW,KAAK,GAAG;AAAA,YAAK;AACxD,gBAAI,KAAK,GAAG,OAAO;AAAE,qBAAO,KAAK,YAAY,KAAK,GAAG;AAAA,YAAM;AAC3D,gBAAI,KAAK,GAAG,OAAO;AAAE,qBAAO,KAAK,aAAa,KAAK,GAAG;AAAA,YAAM;AAC5D,gBAAI,KAAK,GAAG,SAAS;AAAE,qBAAO,KAAK,oBAAoB,KAAK,yBAAyB,KAAK,GAAG,OAAO;AAAA,YAAE;AACtG,gBAAI,KAAK,GAAG,SAAS;AAAE,qBAAO,KAAK,qBAAqB,KAAK,yBAAyB,KAAK,GAAG,OAAO;AAAA,YAAE;AACvG,gBAAI,KAAK,GAAG,MAAM;AAAE,qBAAO,KAAK,WAAW,KAAK,yBAAyB,KAAK,GAAG,IAAI;AAAA,YAAE;AACvF,gBAAI,KAAK,GAAG,QAAQ;AAAE,qBAAO,KAAK,eAAe,KAAK,yBAAyB,KAAK,GAAG,MAAM;AAAA,YAAE;AAC/F,gBAAI,KAAK,GAAG,QAAQ;AAAE,qBAAO,KAAK,gBAAgB,KAAK,yBAAyB,KAAK,GAAG,MAAM;AAAA,YAAE;AAGhG,gBAAI,KAAK,GAAG,MAAM;AAAE,qBAAO,KAAK,UAAU,KAAK,GAAG;AAAA,YAAK;AACvD,gBAAI,KAAK,GAAG,MAAM;AAAE,qBAAO,KAAK,WAAW,KAAK,GAAG;AAAA,YAAK;AACxD,gBAAI,KAAK,GAAG,OAAO;AAAE,qBAAO,KAAK,YAAY,KAAK,GAAG;AAAA,YAAM;AAC3D,gBAAI,KAAK,GAAG,OAAO;AAAE,qBAAO,KAAK,aAAa,KAAK,GAAG;AAAA,YAAM;AAC5D,gBAAI,KAAK,GAAG,SAAS;AAAE,qBAAO,KAAK,oBAAoB,KAAK,yBAAyB,KAAK,GAAG,OAAO;AAAA,YAAE;AACtG,gBAAI,KAAK,GAAG,SAAS;AAAE,qBAAO,KAAK,qBAAqB,KAAK,yBAAyB,KAAK,GAAG,OAAO;AAAA,YAAE;AACvG,gBAAI,KAAK,GAAG,MAAM;AAAE,qBAAO,KAAK,WAAW,KAAK,yBAAyB,KAAK,GAAG,IAAI;AAAA,YAAE;AACvF,gBAAI,KAAK,GAAG,QAAQ;AAAE,qBAAO,KAAK,eAAe,KAAK,yBAAyB,KAAK,GAAG,MAAM;AAAA,YAAE;AAC/F,gBAAI,KAAK,GAAG,QAAQ;AAAE,qBAAO,KAAK,gBAAgB,KAAK,yBAAyB,KAAK,GAAG,MAAM;AAAA,YAAE;AAGhG,gBAAI,KAAK,GAAG,KAAK;AAAE,qBAAO,KAAK,SAAS,KAAK,GAAG;AAAA,YAAI;AACpD,gBAAI,KAAK,GAAG,KAAK;AAAE,qBAAO,KAAK,UAAU,KAAK,GAAG;AAAA,YAAI;AACrD,gBAAI,KAAK,GAAG,MAAM;AAAE,qBAAO,KAAK,WAAW,KAAK,GAAG;AAAA,YAAK;AACxD,gBAAI,KAAK,GAAG,MAAM;AAAE,qBAAO,KAAK,YAAY,KAAK,GAAG;AAAA,YAAK;AACzD,gBAAI,KAAK,GAAG,QAAQ;AAAE,qBAAO,KAAK,mBAAmB,KAAK,yBAAyB,KAAK,GAAG,MAAM;AAAA,YAAE;AACnG,gBAAI,KAAK,GAAG,QAAQ;AAAE,qBAAO,KAAK,oBAAoB,KAAK,yBAAyB,KAAK,GAAG,MAAM;AAAA,YAAE;AACpG,gBAAI,KAAK,GAAG,KAAK;AAAE,qBAAO,KAAK,UAAU,KAAK,yBAAyB,KAAK,GAAG,GAAG;AAAA,YAAE;AACpF,gBAAI,KAAK,GAAG,OAAO;AAAE,qBAAO,KAAK,cAAc,KAAK,yBAAyB,KAAK,GAAG,KAAK;AAAA,YAAE;AAC5F,gBAAI,KAAK,GAAG,OAAO;AAAE,qBAAO,KAAK,eAAe,KAAK,yBAAyB,KAAK,GAAG,KAAK;AAAA,YAAE;AAG7F,gBAAI,KAAK,GAAG,KAAK;AAAE,qBAAO,KAAK,SAAS,KAAK,GAAG;AAAA,YAAI;AACpD,gBAAI,KAAK,GAAG,KAAK;AAAE,qBAAO,KAAK,UAAU,KAAK,GAAG;AAAA,YAAI;AACrD,gBAAI,KAAK,GAAG,MAAM;AAAE,qBAAO,KAAK,WAAW,KAAK,GAAG;AAAA,YAAK;AACxD,gBAAI,KAAK,GAAG,MAAM;AAAE,qBAAO,KAAK,YAAY,KAAK,GAAG;AAAA,YAAK;AACzD,gBAAI,KAAK,GAAG,QAAQ;AAAE,qBAAO,KAAK,mBAAmB,KAAK,yBAAyB,KAAK,GAAG,MAAM;AAAA,YAAE;AACnG,gBAAI,KAAK,GAAG,QAAQ;AAAE,qBAAO,KAAK,oBAAoB,KAAK,yBAAyB,KAAK,GAAG,MAAM;AAAA,YAAE;AACpG,gBAAI,KAAK,GAAG,KAAK;AAAE,qBAAO,KAAK,UAAU,KAAK,yBAAyB,KAAK,GAAG,GAAG;AAAA,YAAE;AACpF,gBAAI,KAAK,GAAG,OAAO;AAAE,qBAAO,KAAK,cAAc,KAAK,yBAAyB,KAAK,GAAG,KAAK;AAAA,YAAE;AAC5F,gBAAI,KAAK,GAAG,OAAO;AAAE,qBAAO,KAAK,eAAe,KAAK,yBAAyB,KAAK,GAAG,KAAK;AAAA,YAAE;AAG7F,gBAAI,KAAK,GAAG,MAAM;AAAE,qBAAO,KAAK,UAAU,KAAK,GAAG;AAAA,YAAK;AACvD,gBAAI,KAAK,GAAG,MAAM;AAAE,qBAAO,KAAK,WAAW,KAAK,GAAG;AAAA,YAAK;AACxD,gBAAI,KAAK,GAAG,OAAO;AAAE,qBAAO,KAAK,YAAY,KAAK,GAAG;AAAA,YAAM;AAC3D,gBAAI,KAAK,GAAG,OAAO;AAAE,qBAAO,KAAK,aAAa,KAAK,GAAG;AAAA,YAAM;AAC5D,gBAAI,KAAK,GAAG,SAAS;AAAE,qBAAO,KAAK,oBAAoB,KAAK,yBAAyB,KAAK,GAAG,OAAO;AAAA,YAAE;AACtG,gBAAI,KAAK,GAAG,SAAS;AAAE,qBAAO,KAAK,qBAAqB,KAAK,yBAAyB,KAAK,GAAG,OAAO;AAAA,YAAE;AACvG,gBAAI,KAAK,GAAG,MAAM;AAAE,qBAAO,KAAK,WAAW,KAAK,yBAAyB,KAAK,GAAG,IAAI;AAAA,YAAE;AACvF,gBAAI,KAAK,GAAG,QAAQ;AAAE,qBAAO,KAAK,eAAe,KAAK,yBAAyB,KAAK,GAAG,MAAM;AAAA,YAAE;AAC/F,gBAAI,KAAK,GAAG,QAAQ;AAAE,qBAAO,KAAK,gBAAgB,KAAK,yBAAyB,KAAK,GAAG,MAAM;AAAA,YAAE;AAGhG,gBAAI,KAAK,GAAG,GAAG;AAAE,qBAAO,KAAK,QAAQ,KAAK,yBAAyB,KAAK,GAAG,CAAC;AAAA,YAAE;AAAA,UAChF;AAEA,iBAAO;AAAA,QACT,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAAA,EAEA,4BAA4B;AAAA,IAC1B;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAIiB;AACf,UAAM,UAAU,gCAAgC,KAAK,IAAI,WAAW;AACpE,WAAO,KAAK;AAAA,MAAU;AAAA,MAAS,CAAC,SAC9B;AAAA,QACE,MAAM;AAAA,UACJ,CAAC,QACE;AAAA,YACC,SAAS,GAAG;AAAA,YACZ,WAAW,GAAG;AAAA,YACd,QAAQ,GAAG;AAAA,YACX,SAAS,GAAG;AAAA,YACZ,UAAU,GAAG;AAAA,YACb,WAAW,GAAG;AAAA,YACd,kBAAkB,KAAK,yBAAyB,GAAG,MAAM;AAAA,YACzD,mBAAmB,KAAK,yBAAyB,GAAG,MAAM;AAAA,YAC1D,SAAS,KAAK,yBAAyB,GAAG,GAAG;AAAA,YAC7C,aAAa,KAAK,yBAAyB,GAAG,KAAK;AAAA,YACnD,cAAc,KAAK,yBAAyB,GAAG,KAAK;AAAA,YACpD,QAAQ,GAAG;AAAA,YACX,SAAS,GAAG;AAAA,YACZ,UAAU,GAAG;AAAA,YACb,WAAW,GAAG;AAAA,YACd,kBAAkB,KAAK,yBAAyB,GAAG,MAAM;AAAA,YACzD,mBAAmB,KAAK,yBAAyB,GAAG,MAAM;AAAA,YAC1D,SAAS,KAAK,yBAAyB,GAAG,GAAG;AAAA,YAC7C,aAAa,KAAK,yBAAyB,GAAG,KAAK;AAAA,YACnD,cAAc,KAAK,yBAAyB,GAAG,KAAK;AAAA,YACpD,SAAS,GAAG;AAAA,YACZ,UAAU,GAAG;AAAA,YACb,WAAW,GAAG;AAAA,YACd,YAAY,GAAG;AAAA,YACf,mBAAmB,KAAK,yBAAyB,GAAG,OAAO;AAAA,YAC3D,oBAAoB,KAAK,yBAAyB,GAAG,OAAO;AAAA,YAC5D,UAAU,KAAK,yBAAyB,GAAG,IAAI;AAAA,YAC/C,cAAc,KAAK,yBAAyB,GAAG,MAAM;AAAA,YACrD,eAAe,KAAK,yBAAyB,GAAG,MAAM;AAAA,YACtD,SAAS,GAAG;AAAA,YACZ,UAAU,GAAG;AAAA,YACb,WAAW,GAAG;AAAA,YACd,YAAY,GAAG;AAAA,YACf,mBAAmB,KAAK,yBAAyB,GAAG,OAAO;AAAA,YAC3D,oBAAoB,KAAK,yBAAyB,GAAG,OAAO;AAAA,YAC5D,UAAU,KAAK,yBAAyB,GAAG,IAAI;AAAA,YAC/C,cAAc,KAAK,yBAAyB,GAAG,MAAM;AAAA,YACrD,eAAe,KAAK,yBAAyB,GAAG,MAAM;AAAA,YACtD,QAAQ,GAAG;AAAA,YACX,SAAS,GAAG;AAAA,YACZ,UAAU,GAAG;AAAA,YACb,WAAW,GAAG;AAAA,YACd,kBAAkB,KAAK,yBAAyB,GAAG,MAAM;AAAA,YACzD,mBAAmB,KAAK,yBAAyB,GAAG,MAAM;AAAA,YAC1D,SAAS,KAAK,yBAAyB,GAAG,GAAG;AAAA,YAC7C,aAAa,KAAK,yBAAyB,GAAG,KAAK;AAAA,YACnD,cAAc,KAAK,yBAAyB,GAAG,KAAK;AAAA,YACpD,QAAQ,GAAG;AAAA,YACX,SAAS,GAAG;AAAA,YACZ,UAAU,GAAG;AAAA,YACb,WAAW,GAAG;AAAA,YACd,kBAAkB,KAAK,yBAAyB,GAAG,MAAM;AAAA,YACzD,mBAAmB,KAAK,yBAAyB,GAAG,MAAM;AAAA,YAC1D,SAAS,KAAK,yBAAyB,GAAG,GAAG;AAAA,YAC7C,aAAa,KAAK,yBAAyB,GAAG,KAAK;AAAA,YACnD,cAAc,KAAK,yBAAyB,GAAG,KAAK;AAAA,YACpD,SAAS,GAAG;AAAA,YACZ,UAAU,GAAG;AAAA,YACb,WAAW,GAAG;AAAA,YACd,YAAY,GAAG;AAAA,YACf,mBAAmB,KAAK,yBAAyB,GAAG,OAAO;AAAA,YAC3D,oBAAoB,KAAK,yBAAyB,GAAG,OAAO;AAAA,YAC5D,UAAU,KAAK,yBAAyB,GAAG,IAAI;AAAA,YAC/C,OAAO,KAAK,yBAAyB,GAAG,CAAC;AAAA,YACzC,cAAc,KAAK,yBAAyB,GAAG,MAAM;AAAA,YACrD,eAAe,KAAK,yBAAyB,GAAG,MAAM;AAAA,UACxD;AAAA,QACJ;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,8BAA8B;AAAA,IAC5B;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAIiB;AACf,UAAM,UAAU,kCAAkC,KAAK,IAAI,WAAW;AACtE,WAAO,KAAK;AAAA,MAAU;AAAA,MAAS,CAAC,SAC9B;AAAA,QACE,MAAM;AAAA,UACJ,CAAC,QACE;AAAA,YACC,cAAc,GAAG;AAAA,YACjB,SAAS,GAAG;AAAA,YACZ,qBAAqB,KAAK,yBAAyB,GAAG,KAAK;AAAA,YAC3D,oBAAoB,KAAK,yBAAyB,GAAG,IAAI;AAAA,YACzD,oBAAoB,KAAK,yBAAyB,GAAG,IAAI;AAAA,YACzD,eAAe,GAAG;AAAA,YAClB,cAAc,GAAG;AAAA,YACjB,cAAc,GAAG;AAAA,YACjB,oBAAoB,KAAK,yBAAyB,GAAG,KAAK;AAAA,YAC1D,mBAAmB,KAAK,yBAAyB,GAAG,IAAI;AAAA,YACxD,mBAAmB,KAAK,yBAAyB,GAAG,IAAI;AAAA,YACxD,iBAAiB,GAAG;AAAA,YACpB,gBAAgB,KAAK,yBAAyB,GAAG,EAAE;AAAA,YACnD,eAAe,KAAK,yBAAyB,GAAG,EAAE;AAAA,YAClD,wBAAwB,GAAG;AAAA,YAC3B,uBAAuB,KAAK,yBAAyB,GAAG,IAAI;AAAA,YAC5D,sBAAsB,KAAK,yBAAyB,GAAG,IAAI;AAAA,YAC3D,2BAA2B,GAAG;AAAA,YAC9B,0BAA0B,KAAK,yBAAyB,GAAG,IAAI;AAAA,YAC/D,yBAAyB,KAAK,yBAAyB,GAAG,IAAI;AAAA,YAC9D,yBAAyB,GAAG;AAAA,YAC5B,wBAAwB,KAAK,yBAAyB,GAAG,IAAI;AAAA,YAC7D,uBAAuB,KAAK,yBAAyB,GAAG,IAAI;AAAA,YAC5D,yBAAyB,GAAG;AAAA,YAC5B,wBAAwB,KAAK,yBAAyB,GAAG,KAAK;AAAA,YAC9D,uBAAuB,KAAK,yBAAyB,GAAG,KAAK;AAAA,YAC7D,sBAAsB,GAAG;AAAA,YACzB,qBAAqB,KAAK,yBAAyB,GAAG,IAAI;AAAA,YAC1D,oBAAoB,KAAK,yBAAyB,GAAG,IAAI;AAAA,YACzD,sBAAsB,GAAG;AAAA,YACzB,qBAAqB,KAAK,yBAAyB,GAAG,IAAI;AAAA,YAC1D,oBAAoB,KAAK,yBAAyB,GAAG,IAAI;AAAA,YACzD,0BAA0B,GAAG;AAAA,YAC7B,yBAAyB,KAAK,yBAAyB,GAAG,IAAI;AAAA,YAC9D,wBAAwB,KAAK,yBAAyB,GAAG,IAAI;AAAA,YAC7D,wBAAwB,GAAG;AAAA,YAC3B,uBAAuB,KAAK,yBAAyB,GAAG,KAAK;AAAA,YAC7D,sBAAsB,KAAK,yBAAyB,GAAG,KAAK;AAAA,YAC5D,sBAAsB,GAAG;AAAA,YACzB,qBAAqB,KAAK,yBAAyB,GAAG,IAAI;AAAA,YAC1D,oBAAoB,KAAK,yBAAyB,GAAG,IAAI;AAAA,YACzD,2BAA2B,GAAG;AAAA,YAC9B,0BAA0B,KAAK,yBAAyB,GAAG,KAAK;AAAA,YAChE,yBAAyB,KAAK,yBAAyB,GAAG,KAAK;AAAA,YAC/D,2BAA2B,GAAG;AAAA,YAC9B,0BAA0B,KAAK,yBAAyB,GAAG,KAAK;AAAA,YAChE,yBAAyB,KAAK,yBAAyB,GAAG,KAAK;AAAA,YAC/D,sBAAsB,GAAG;AAAA,YACzB,qBAAqB,KAAK,yBAAyB,GAAG,IAAI;AAAA,YAC1D,oBAAoB,KAAK,yBAAyB,GAAG,IAAI;AAAA,YACzD,WAAW,GAAG;AAAA,UAChB;AAAA,QACJ;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,6BAA6B;AAAA,IAC3B;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAIiB;AACf,UAAM,UAAU,iCAAiC,KAAK,IAAI,WAAW;AACrE,WAAO,KAAK;AAAA,MAAU;AAAA,MAAS,CAAC,SAC9B;AAAA,QACE,MAAM;AAAA,UACJ,CAAC,QACA;AAAA,YACC,cAAc,GAAG;AAAA,YACjB,QAAQ,GAAG;AAAA,YACX,gBAAgB,GAAG;AAAA,YACnB,WAAW,GAAG;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,mCAAmC;AAAA,IACjC;AAAA,IACA;AAAA,EACF,GAGiB;AACf,UAAM,UAAU,yCAAyC,KAAK;AAC9D,WAAO,KAAK;AAAA,MAAU;AAAA,MAAS,CAAC,SAC9B;AAAA,QACE,MAAM;AAAA,UACJ,CAAC,QACA;AAAA,YACC,cAAc,GAAG;AAAA,YACjB,eAAe,GAAG;AAAA,UACpB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoCA,uBAAuB;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAKiB;AACf,UAAM,UAAU,sBAAsB,KAAK,IAAI,aAAa;AAC5D,WAAO,KAAK,UAAU,SAAS,CAAC,SAC9B,SAAS;AAAA,MACP;AAAA,QACE,eAAe,KAAK;AAAA,QACpB,cAAc,KAAK;AAAA,QACnB,iBAAiB,KAAK;AAAA,QACtB,SAAS,KAAK;AAAA,QACd,WAAW,KAAK;AAAA,MAClB;AAAA,IACF,CAAC,GAAG,QAAQ,wBAAwB;AAAA,EACxC;AAAA,EAEA,mBAAmB;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAKiB;AACf,UAAM,UAAU,wBAAwB,KAAK,IAAI,aAAa;AAC9D,WAAO,KAAK,UAAU,SAAS,CAAC,SAC9B,SAAS;AAAA,MACP,eAAe,KAAK;AAAA,MACpB,cAAc,KAAK;AAAA,MACnB,iBAAiB,KAAK;AAAA,MACtB,WAAW,KAAK;AAAA,MAChB,UAAU,KAAK;AAAA,MACf,UAAU,KAAK;AAAA,MACf,WAAW,KAAK;AAAA,MAChB,WAAW,KAAK;AAAA,MAChB,gBAAgB,KAAK;AAAA,MACrB,UAAU,KAAK;AAAA,MACf,aAAa,KAAK;AAAA,MAClB,YAAY,KAAK;AAAA,MACjB,YAAY,KAAK;AAAA,MACjB,iBAAiB,KAAK;AAAA,MACtB,WAAW,KAAK;AAAA,MAChB,cAAc,KAAK;AAAA,MACnB,aAAa,KAAK;AAAA,MAClB,uBAAuB,KAAK;AAAA,MAC5B,sBAAsB,KAAK;AAAA,MAC3B,uBAAuB,KAAK;AAAA,MAC5B,uBAAuB,KAAK;AAAA,MAC5B,uBAAuB,KAAK;AAAA,MAC5B,qBAAqB,KAAK;AAAA,MAC1B,qBAAqB,KAAK;AAAA,MAC1B,0BAA0B,KAAK;AAAA,MAC/B,0BAA0B,KAAK;AAAA,IACjC,CAAC,GAAG,QAAQ,oBAAoB;AAAA,EACpC;AAAA,EAEA,uBAAuB;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAIiB;AACf,UAAM,UAAU,uBAAuB,KAAK,IAAI,aAAa;AAC7D,WAAO,KAAK;AAAA,MAAU;AAAA,MAAS,CAAC,SAC9B;AAAA,QACE,MAAM;AAAA,UACJ,CAAC,QACE;AAAA,YACC,eAAe,GAAG;AAAA,YAClB,MAAM,GAAG;AAAA,YACT,WAAW,GAAG;AAAA,YACd,gBAAgB,GAAG;AAAA,YACnB,sBAAsB,GAAG;AAAA,YACzB,YAAY,GAAG;AAAA,YACf,iBAAiB,GAAG;AAAA,YACpB,OAAO,GAAG;AAAA,YACV,MAAM,GAAG;AAAA,YACT,UAAU,GAAG;AAAA,YACb,UAAU,GAAG;AAAA,YACb,iBAAiB,GAAG;AAAA,YACpB,UAAU,GAAG;AAAA,YACb,gBAAgB,GAAG;AAAA,YACnB,YAAY,GAAG;AAAA,YACf,QAAQ,GAAG;AAAA,YACX,YAAY,GAAG;AAAA,UACjB;AAAA,QACJ;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,oBAAoB;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAKiB;AACf,UAAM,UAAU,aAAa,KAAK,IAAI,YAAY;AAClD,WAAO,KAAK,UAAU,SAAS,CAAC,SAC9B,SAAS;AAAA,MACP,cAAc,KAAK;AAAA,MACnB,WAAW,KAAK;AAAA,MAChB,MAAM,KAAK;AAAA,MACX,WAAW,KAAK;AAAA,MAChB,gBAAgB,KAAK;AAAA,MACrB,iBAAiB,KAAK;AAAA,MACtB,cAAc,KAAK;AAAA,MACnB,gBAAgB,KAAK;AAAA,MACrB,kBAAkB,KAAK;AAAA,MACvB,YAAY,KAAK;AAAA,MACjB,iBAAiB,KAAK;AAAA,MACtB,kBAAkB,KAAK;AAAA,MACvB,eAAe,KAAK;AAAA,MACpB,iBAAiB,KAAK;AAAA,MACtB,mBAAmB,KAAK;AAAA,MACxB,QAAQ,KAAK;AAAA,IACf,CAAC,GAAG,QAAQ,sBAAsB;AAAA,EACtC;AAAA,EAEA,qBAAqB;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAKiB;AACf,UAAM,UAAU,oBAAoB,KAAK,IAAI,aAAa;AAC1D,WAAO,KAAK,UAAU,SAAS,CAAC,SAC9B,SAAS;AAAA,MACP,cAAc,KAAK;AAAA,MACnB,WAAW,KAAK;AAAA,MAChB,MAAM,KAAK;AAAA,MACX,WAAW,KAAK;AAAA,MAChB,gBAAgB,KAAK;AAAA,MACrB,iBAAiB,KAAK;AAAA,MACtB,cAAc,KAAK;AAAA,MACnB,gBAAgB,KAAK;AAAA,MACrB,kBAAkB,KAAK;AAAA,MACvB,YAAY,KAAK;AAAA,MACjB,iBAAiB,KAAK;AAAA,MACtB,kBAAkB,KAAK;AAAA,MACvB,eAAe,KAAK;AAAA,MACpB,iBAAiB,KAAK;AAAA,MACtB,mBAAmB,KAAK;AAAA,MACxB,QAAQ,KAAK;AAAA,IACf,CAAC,GAAG,QAAQ,sBAAsB;AAAA,EACtC;AAAA,EAEA,wBAAwB;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAIiB;AACf,UAAM,UAAU,oBAAoB,KAAK,IAAI,WAAW;AACxD,WAAO,KAAK;AAAA,MAAU;AAAA,MAAS,CAAC,SAC9B,SAAS;AAAA,QACP,aAAa,KAAK;AAAA,QAClB,eAAe,KAAK;AAAA,QACpB,sBAAsB,KAAK;AAAA,QAC3B,eAAe,KAAK;AAAA,QACpB,sBAAsB,KAAK;AAAA,MAC7B,CAAC;AAAA,IACH;AAAA,EACF;AACF;AACA,IAAM,qBAAN,MAA4B;AAAA,EAC1B,YACmB,WACA,SACA,IACjB;AAHiB;AACA;AACA;AAAA,EACf;AAAA,EAEJ,cAAc;AACZ,SAAK,UAAU,YAAY,KAAK,SAAS,KAAK,EAAE;AAAA,EAClD;AACF;;;AEzvCO,IAAM,YAAY,mBAAmB,QAAQ,QAAQ,EAAE;AAevD,IAAM,gBAAN,MAAoB;AAAA,EACvB,YAAoB,gBAAyC,CAAC,GAAG;AAA7C;AAAA,EAA8C;AAAA,EAElE,IAAI,OAAO,eAA8B;AACrC,SAAK,gBAAgB;AAAA,EACzB;AAAA,EAEA,IAAI,WAAmB;AACnB,WAAO,KAAK,cAAc,YAAY,OAAO,KAAK,cAAc,WAAW;AAAA,EAC/E;AAAA,EAEA,IAAI,WAAiC;AACjC,WAAO,KAAK,cAAc;AAAA,EAC9B;AAAA,EAEA,IAAI,aAA2B;AAC3B,WAAO,KAAK,cAAc,cAAc,CAAC;AAAA,EAC7C;AAAA,EAEA,IAAI,uBAAsD;AACtD,WAAO,KAAK,cAAc,wBAAwB;AAAA,EACtD;AAAA,EAEA,IAAI,WAA+B;AAC/B,WAAO,KAAK,cAAc;AAAA,EAC9B;AAAA,EAEA,IAAI,WAA+B;AAC/B,WAAO,KAAK,cAAc;AAAA,EAC9B;AAAA,EAEA,IAAI,SAAmE;AACnE,UAAM,SAAS,KAAK,cAAc;AAClC,QAAI,QAAQ;AACR,aAAO,OAAO,WAAW,aAAa,SAAS,MAAM;AAAA,IACzD;AACA,WAAO;AAAA,EACX;AAAA,EAEA,IAAI,cAA4F;AAC5F,UAAM,cAAc,KAAK,cAAc;AACvC,QAAI,aAAa;AACb,aAAO,OAAO,gBAAgB,aAAa,cAAc,YAAY;AAAA,IACzE;AACA,WAAO;AAAA,EACX;AAAA,EAEA,IAAI,UAAmC;AACnC,WAAO,KAAK,cAAc;AAAA,EAC9B;AAAA,EAEA,IAAI,cAA8C;AAC9C,WAAO,KAAK,cAAc;AAAA,EAC9B;AACJ;AAEO,IAAM,gBAAgB,IAAI,cAAc;AAKxC,IAAM,WAAN,MAAM,SAAQ;AAAA,EAKjB,YAAsB,gBAAgB,eAAe;AAA/B;AAFtB,wBAAQ;AAmGR,wBAAQ,YAAW,OAAO,KAAa,SAAsB;AACzD,UAAI,cAAc,EAAE,KAAK,KAAK;AAC9B,iBAAW,cAAc,KAAK,YAAY;AACtC,YAAI,WAAW,KAAK;AAChB,wBAAc,MAAM,WAAW,IAAI;AAAA,YAC/B,OAAO,KAAK;AAAA,YACZ,GAAG;AAAA,UACP,CAAC,KAAK;AAAA,QACV;AAAA,MACJ;AACA,UAAI,WAAiC;AACrC,UAAI;AACA,mBAAW,OAAO,KAAK,cAAc,YAAY,OAAO,YAAY,KAAK,YAAY,IAAI;AAAA,MAC7F,SAAS,GAAG;AACR,mBAAW,cAAc,KAAK,YAAY;AACtC,cAAI,WAAW,SAAS;AACpB,uBAAW,MAAM,WAAW,QAAQ;AAAA,cAChC,OAAO,KAAK;AAAA,cACZ,KAAK,YAAY;AAAA,cACjB,MAAM,YAAY;AAAA,cAClB,OAAO;AAAA,cACP,UAAU,WAAW,SAAS,MAAM,IAAI;AAAA,YAC5C,CAAC,KAAK;AAAA,UACV;AAAA,QACJ;AACA,YAAI,aAAa,QAAW;AAC1B,cAAI,aAAa,OAAO;AACtB,kBAAM,IAAI,WAAW,GAAG,gFAAgF;AAAA,UAC1G,OAAO;AACL,kBAAM;AAAA,UACR;AAAA,QACF;AAAA,MACJ;AACA,iBAAW,cAAc,KAAK,YAAY;AACtC,YAAI,WAAW,MAAM;AACjB,qBAAW,MAAM,WAAW,KAAK;AAAA,YAC7B,OAAO,KAAK;AAAA,YACZ,KAAK,YAAY;AAAA,YACjB,MAAM,YAAY;AAAA,YAClB,UAAU,SAAS,MAAM;AAAA,UAC7B,CAAC,KAAK;AAAA,QACV;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AA5II,SAAK,aAAa,cAAc;AAAA,EACpC;AAAA,EAEA,kBAA8C,aAA2B;AACrE,UAAM,OAAO,KAAK,MAAS;AAC3B,SAAK,aAAa,KAAK,WAAW,OAAO,GAAG,WAAW;AACvD,WAAO;AAAA,EACX;AAAA,EAEA,qBAAiD,gBAA0C;AACvF,UAAM,cAAc,eAAe,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE;AACzD,WAAO,KAAK,eAAkB,GAAG,WAAW;AAAA,EAChD;AAAA,EAEA,sBAAkD,iBAA4C;AAC1F,UAAM,cAAc,gBAAgB,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE;AAC5D,WAAO,KAAK,eAAkB,GAAG,WAAW;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYU,WAAW,MAA0C;AAC3D,QAAI,CAAC,MAAM;AACP,aAAO;AAAA,IACX;AACA,WAAO,SAAQ,UAAU,KAAK,IAAI;AAAA,EACtC;AAAA,EAEA,MAAgB,QAAQ,SAAsB,eAAuE;AACjH,UAAM,EAAE,KAAK,KAAK,IAAI,MAAM,KAAK,kBAAkB,SAAS,aAAa;AACzE,UAAM,WAAW,MAAM,KAAK,SAAS,KAAK,IAAI;AAC9C,QAAI,aAAa,SAAS,UAAU,OAAO,SAAS,SAAS,MAAM;AAC/D,aAAO;AAAA,IACX;AACA,UAAM,IAAI,cAAc,UAAU,iCAAiC;AAAA,EACvE;AAAA,EAEA,MAAc,kBAAkB,SAAsB,eAAoD;AACtG,QAAI,MAAM,KAAK,cAAc,WAAW,QAAQ;AAChD,QAAI,QAAQ,UAAU,UAAa,OAAO,KAAK,QAAQ,KAAK,EAAE,WAAW,GAAG;AAIxE,aAAO,MAAM,KAAK,cAAc,qBAAqB,QAAQ,KAAK;AAAA,IACtE;AAEA,UAAM,UAAU,OAAO,OAAO,CAAC,GAAG,KAAK,cAAc,SAAS,QAAQ,OAAO;AAC7E,WAAO,KAAK,OAAO,EAAE,QAAQ,SAAO,QAAQ,GAAG,MAAM,SAAY,OAAO,QAAQ,GAAG,IAAI,CAAC,CAAC;AAEzF,UAAM,iBACF,OAAO,kBAAkB,aACnB,gBACA,YAAY;AAEtB,UAAM,aAAa;AAAA,MACf,QAAQ,QAAQ;AAAA,MAChB;AAAA,MACA,MAAM,QAAQ;AAAA,MACd,aAAa,KAAK,cAAc;AAAA,IACpC;AAEA,UAAM,iBAA8B;AAAA,MAChC,GAAG;AAAA,MACH,GAAI,MAAM,eAAe;AAAA,QACrB,MAAM;AAAA,QACN;AAAA,MACJ,CAAC;AAAA,IACL;AAEA,QAAI;AACJ,QAAI,WAAW,eAAe,IAAI,KAC1B,eAAe,gBAAgB,mBAChC,OAAO,eAAe,IAAI,GAAG;AAClC,aAAO,eAAe;AAAA,IACxB,WAAW,KAAK,WAAW,QAAQ,cAAc,CAAC,GAAG;AACnD,aAAO,KAAK,UAAU,eAAe,IAAI;AAAA,IAC3C,OAAO;AACL,aAAO,eAAe;AAAA,IACxB;AAEA,UAAM,OAAoB;AAAA,MACtB,GAAG;AAAA,MACH;AAAA,IACJ;AAEA,WAAO,EAAE,KAAK,KAAK;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAoDQ,QAAqC;AACzC,UAAM,cAAc,KAAK;AACzB,UAAM,OAAO,IAAI,YAAY,KAAK,aAAa;AAC/C,SAAK,aAAa,KAAK,WAAW,MAAM;AACxC,WAAO;AAAA,EACX;AACJ;AA5JI,cAFS,UAEe,aAAY,IAAI,OAAO,gEAAqE,GAAG;AAFpH,IAAM,UAAN;AAgKP,SAAS,OAAO,OAA2B;AACvC,SAAO,OAAO,SAAS,eAAe,iBAAiB;AAC3D;AAEA,SAAS,WAAW,OAA+B;AAC/C,SAAO,OAAO,aAAa,eAAe,iBAAiB;AAC/D;AAEO,IAAM,gBAAN,cAA4B,MAAM;AAAA,EAErC,YAAmB,UAAoB,KAAc;AACjD,UAAM,GAAG;AADM;AADnB,wBAAS,QAAwB;AAAA,EAGjC;AACJ;AAEO,IAAM,aAAN,cAAyB,MAAM;AAAA,EAElC,YAAmB,OAAc,KAAc;AAC3C,UAAM,GAAG;AADM;AADnB,wBAAS,QAAqB;AAAA,EAG9B;AACJ;AAEO,IAAM,gBAAN,cAA4B,MAAM;AAAA,EAErC,YAAmB,OAAe,KAAc;AAC5C,UAAM,GAAG;AADM;AADnB,wBAAS,QAAwB;AAAA,EAGjC;AACJ;AAkCO,SAAS,YAAY,QAAmB,SAAiB,IAAY;AACxE,SAAO,OAAO,KAAK,MAAM,EACpB,IAAI,SAAO,qBAAqB,KAAK,OAAO,GAAG,GAAG,MAAM,CAAC,EACzD,OAAO,UAAQ,KAAK,SAAS,CAAC,EAC9B,KAAK,GAAG;AACjB;AAEA,SAAS,qBAAqB,KAAa,OAAmJ,YAAoB,IAAY;AAC1N,QAAM,UAAU,aAAa,UAAU,SAAS,IAAI,GAAG,MAAM;AAC7D,MAAI,iBAAiB,OAAO;AACxB,UAAM,aAAa,MAAM,IAAI,iBAAe,mBAAmB,OAAO,WAAW,CAAC,CAAC,EAC9E,KAAK,IAAI,mBAAmB,OAAO,CAAC,GAAG;AAC5C,WAAO,GAAG,mBAAmB,OAAO,CAAC,IAAI,UAAU;AAAA,EACvD;AACA,MAAI,iBAAiB,KAAK;AACtB,UAAM,eAAe,MAAM,KAAK,KAAK;AACrC,WAAO,qBAAqB,KAAK,cAAc,SAAS;AAAA,EAC5D;AACA,MAAI,iBAAiB,MAAM;AACvB,WAAO,GAAG,mBAAmB,OAAO,CAAC,IAAI,mBAAmB,MAAM,YAAY,CAAC,CAAC;AAAA,EACpF;AACA,MAAI,iBAAiB,QAAQ;AACzB,WAAO,YAAY,OAAoB,OAAO;AAAA,EAClD;AACA,SAAO,GAAG,mBAAmB,OAAO,CAAC,IAAI,mBAAmB,OAAO,KAAK,CAAC,CAAC;AAC9E;AAOO,SAAS,UAAU,MAAW,IAAwB;AACzD,QAAM,SAAiC,CAAC;AACxC,aAAW,OAAO,OAAO,KAAK,IAAI,GAAG;AACjC,WAAO,GAAG,IAAI,GAAG,KAAK,GAAG,CAAC;AAAA,EAC9B;AACA,SAAO;AACX;AAmDO,IAAM,kBAAN,MAAyB;AAAA,EAC5B,YAAmB,KAAuB,cAAsC,CAAC,cAAmB,WAAW;AAA5F;AAAuB;AAAA,EAAsE;AAAA,EAEhH,MAAM,QAAoB;AACtB,WAAO,KAAK,YAAY,MAAM,KAAK,IAAI,KAAK,CAAC;AAAA,EACjD;AACJ;AAkBO,IAAM,kBAAN,MAAsB;AAAA,EACzB,YAAmB,KAAe;AAAf;AAAA,EAAgB;AAAA,EAEnC,MAAM,QAAyB;AAC3B,WAAO,MAAM,KAAK,IAAI,KAAK;AAAA,EAC/B;AACJ;;;ACrXO,SAAS,wBAAwB,MAA4B;AAChE,SAAO,6BAA6B,MAAM,KAAK;AACnD;AAEO,SAAS,6BAA6B,MAAW,qBAA+C;AACnG,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,YAAY,KAAK,UAAU;AAAA,IAC3B,SAAS,KAAK,OAAO;AAAA,IACrB,gBAAgB,KAAK,cAAc;AAAA,IACnC,aAAa,KAAK,WAAW;AAAA,EACjC;AACJ;;;AC4BO,SAAS,+BAA+B,MAAmC;AAC9E,SAAO,oCAAoC,MAAM,KAAK;AAC1D;AAEO,SAAS,oCAAoC,MAAW,qBAAsD;AACjH,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,WAAW,KAAK,SAAS;AAAA,IACzB,QAAQ,KAAK,MAAM;AAAA,IACnB,cAAc,KAAK,YAAY;AAAA,IAC/B,eAAe,KAAK,aAAa;AAAA,IACjC,WAAW,KAAK,SAAS;AAAA,IACzB,0BAA0B,KAAK,wBAAwB;AAAA,IACvD,aAAe,KAAK,WAAW,EAAiB,IAAI,uBAAuB;AAAA,IAC3E,YAAY,KAAK,UAAU;AAAA,IAC3B,UAAU,KAAK,QAAQ;AAAA,EAC3B;AACJ;;;AC1CO,SAAS,oBAAoB,MAAwB;AACxD,SAAO,yBAAyB,MAAM,KAAK;AAC/C;AAEO,SAAS,yBAAyB,MAAW,qBAA2C;AAC3F,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,cAAc,KAAK,YAAY;AAAA,IAC/B,WAAW,KAAK,SAAS;AAAA,IACzB,cAAc,KAAK,YAAY;AAAA,IAC/B,eAAe,KAAK,aAAa;AAAA,IACjC,gBAAgB,KAAK,cAAc;AAAA,IACnC,cAAc,KAAK,YAAY;AAAA,IAC/B,QAAQ,KAAK,MAAM;AAAA,EACvB;AACJ;;;AC5DO,SAAS,wBAAwB,MAA4B;AAChE,SAAO,6BAA6B,MAAM,KAAK;AACnD;AAEO,SAAS,6BAA6B,MAAW,qBAA+C;AACnG,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,sBAAsB,KAAK,sBAAsB;AAAA,EACrD;AACJ;;;AC6CO,SAAS,8BAA8B,MAAkC;AAC5E,SAAO,mCAAmC,MAAM,KAAK;AACzD;AAEO,SAAS,mCAAmC,MAAW,qBAAqD;AAC/G,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,UAAU,KAAK,QAAQ;AAAA,IACvB,WAAW,KAAK,SAAS;AAAA,IACzB,SAAS,KAAK,OAAO;AAAA,IACrB,aAAa,KAAK,YAAY;AAAA,IAC9B,UAAU,KAAK,QAAQ;AAAA,IACvB,UAAU,KAAK,QAAQ;AAAA,IACvB,mBAAmB,wBAAwB,KAAK,mBAAmB,CAAC;AAAA,IACpE,aAAa,KAAK,YAAY;AAAA,EAClC;AACJ;;;ACvDO,SAAS,sBAAsB,MAA0B;AAC5D,SAAO,2BAA2B,MAAM,KAAK;AACjD;AAEO,SAAS,2BAA2B,MAAW,qBAA6C;AAC/F,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,UAAU,KAAK,QAAQ;AAAA,IACvB,QAAQ,KAAK,MAAM;AAAA,IACnB,eAAe,KAAK,aAAa;AAAA,IACjC,WAAW,KAAK,SAAS;AAAA,EAC7B;AACJ;;;AC7BO,SAAS,iCAAiC,MAAqC;AAClF,SAAO,sCAAsC,MAAM,KAAK;AAC5D;AAEO,SAAS,sCAAsC,MAAW,qBAAwD;AACrH,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,aAAa,KAAK,WAAW;AAAA,IAC7B,wBAAwB,KAAK,sBAAsB;AAAA,EACvD;AACJ;;;ACpBO,SAAS,yBAAyB,MAA6B;AAClE,SAAO,8BAA8B,MAAM,KAAK;AACpD;AAEO,SAAS,8BAA8B,MAAW,qBAAgD;AACrG,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,WAAW,KAAK,SAAS;AAAA,EAC7B;AACJ;;;ACCO,SAAS,wBAAwB,MAA8B;AAClE,SAAO,6BAA6B,MAAM,KAAK;AACnD;AAEO,SAAS,6BAA6B,OAAkC,sBAA+B,OAAY;AACtH,MAAI,SAAS,MAAM;AACf,WAAO;AAAA,EACX;AAEA,SAAO;AAAA,IAEH,kBAAkB,MAAM,gBAAgB;AAAA,EAC5C;AACJ;;;AClBO,SAAS,mBAAmB,MAAuB;AACtD,SAAO,wBAAwB,MAAM,KAAK;AAC9C;AAEO,SAAS,wBAAwB,MAAW,qBAA0C;AACzF,SAAO;AACX;;;ACsCO,SAAS,eAAe,MAAmB;AAC9C,SAAO,oBAAoB,MAAM,KAAK;AAC1C;AAEO,SAAS,oBAAoB,MAAW,qBAAsC;AACjF,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,QAAQ,KAAK,MAAM;AAAA,IACnB,SAAS,KAAK,OAAO;AAAA,IACrB,QAAQ,KAAK,MAAM;AAAA,IACnB,OAAO,KAAK,KAAK;AAAA,IACjB,UAAU,KAAK,QAAQ;AAAA,IACvB,cAAc,mBAAmB,KAAK,YAAY,CAAC;AAAA,IACnD,QAAQ,KAAK,MAAM;AAAA,EACvB;AACJ;;;AC9DO,SAAS,cAAc,MAAkB;AAC5C,SAAO,mBAAmB,MAAM,KAAK;AACzC;AAEO,SAAS,mBAAmB,MAAW,qBAAqC;AAC/E,SAAO;AACX;;;ACAO,SAAS,yCAAyC,MAA6C;AAClG,SAAO,8CAA8C,MAAM,KAAK;AACpE;AAEO,SAAS,8CAA8C,MAAW,qBAAgE;AACrI,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,eAAe,KAAK,aAAa;AAAA,IACjC,eAAe,KAAK,aAAa;AAAA,IACjC,cAAc,KAAK,YAAY;AAAA,EACnC;AACJ;;;ACkCO,SAAS,0BAA0B,MAAgC;AACtE,SAAO,+BAA+B,MAAM,KAAK;AACrD;AAEO,SAAS,+BAA+B,OAAoC,sBAA+B,OAAY;AAC1H,MAAI,SAAS,MAAM;AACf,WAAO;AAAA,EACX;AAEA,SAAO;AAAA,IAEH,SAAS,MAAM,OAAO;AAAA,IACtB,YAAY,MAAM,UAAU;AAAA,IAC5B,WAAW,MAAM,SAAS;AAAA,IAC1B,YAAY,MAAM,UAAU;AAAA,IAC5B,WAAW,MAAM,SAAS;AAAA,EAC9B;AACJ;;;ACjBO,SAAS,0BAA0B,MAAgC;AACtE,SAAO,+BAA+B,MAAM,KAAK;AACrD;AAEO,SAAS,+BAA+B,OAAoC,sBAA+B,OAAY;AAC1H,MAAI,SAAS,MAAM;AACf,WAAO;AAAA,EACX;AAEA,SAAO;AAAA,IAEH,YAAY,MAAM,UAAU;AAAA,IAC5B,eAAe,MAAM,aAAa;AAAA,IAClC,YAAY,MAAM,UAAU;AAAA,IAC5B,eAAe,MAAM,aAAa;AAAA,IAClC,YAAY,MAAM,UAAU;AAAA,IAC5B,aAAa,MAAM,WAAW;AAAA,IAC9B,OAAO,MAAM,KAAK;AAAA,IAClB,UAAU,MAAM,QAAQ;AAAA,EAC5B;AACJ;;;ACUO,SAAS,2BAA2B,MAAiC;AACxE,SAAO,gCAAgC,MAAM,KAAK;AACtD;AAEO,SAAS,gCAAgC,OAAqC,sBAA+B,OAAY;AAC5H,MAAI,SAAS,MAAM;AACf,WAAO;AAAA,EACX;AAEA,SAAO;AAAA,IAEH,SAAS,MAAM,OAAO;AAAA,IACtB,WAAW,MAAM,SAAS;AAAA,IAC1B,QAAQ,MAAM,MAAM;AAAA,IACpB,aAAa,MAAM,WAAW;AAAA,IAC9B,eAAe,MAAM,aAAa;AAAA,IAClC,eAAe,MAAM,aAAa;AAAA,IAClC,QAAQ,MAAM,MAAM;AAAA,IACpB,YAAY,MAAM,UAAU;AAAA,IAC5B,kBAAkB,MAAM,gBAAgB;AAAA,EAC5C;AACJ;;;AC1GO,SAAS,6BAA6B,MAAiC;AAC1E,SAAO,kCAAkC,MAAM,KAAK;AACxD;AAEO,SAAS,kCAAkC,MAAW,qBAAoD;AAC7G,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,eAAe,KAAK,aAAa;AAAA,IACjC,WAAW,KAAK,SAAS;AAAA,EAC7B;AACJ;;;AC4DO,SAAS,uBAAuB,MAA6B;AAChE,SAAO,4BAA4B,MAAM,KAAK;AAClD;AAEO,SAAS,4BAA4B,OAAiC,sBAA+B,OAAY;AACpH,MAAI,SAAS,MAAM;AACf,WAAO;AAAA,EACX;AAEA,SAAO;AAAA,IAEH,OAAO,MAAM,KAAK;AAAA,IAClB,eAAe,MAAM,aAAa;AAAA,IAClC,eAAe,MAAM,aAAa;AAAA,IAClC,QAAQ,MAAM,MAAM;AAAA,IACpB,UAAU,MAAM,QAAQ;AAAA,IACxB,OAAO,MAAM,KAAK;AAAA,IAClB,SAAS,MAAM,OAAO;AAAA,IACtB,SAAS,MAAM,OAAO;AAAA,EAC1B;AACJ;;;AC7FO,SAAS,yBAAyB,MAA6B;AAClE,SAAO,8BAA8B,MAAM,KAAK;AACpD;AAEO,SAAS,8BAA8B,MAAW,qBAAgD;AACrG,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,gBAAgB,KAAK,cAAc;AAAA,IACnC,eAAe,KAAK,aAAa;AAAA,EACrC;AACJ;;;ACsOO,SAAS,wBAAwB,MAA4B;AAChE,SAAO,6BAA6B,MAAM,KAAK;AACnD;AAEO,SAAS,6BAA6B,MAAW,qBAA+C;AACnG,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,eAAe,KAAK,aAAa;AAAA,IACjC,kBAAkB,KAAK,gBAAgB,KAAK,OAAO,SAAY,KAAK,gBAAgB;AAAA,IACpF,kBAAkB,KAAK,gBAAgB;AAAA,IACvC,sBAAsB,KAAK,oBAAoB,KAAK,OAAO,SAAY,KAAK,oBAAoB;AAAA,IAChG,sBAAsB,KAAK,oBAAoB,KAAK,OAAO,SAAY,KAAK,oBAAoB;AAAA,IAChG,uBAAuB,KAAK,qBAAqB,KAAK,OAAO,SAAY,KAAK,qBAAqB;AAAA,IACnG,uBAAuB,KAAK,qBAAqB,KAAK,OAAO,SAAY,KAAK,qBAAqB;AAAA,IACnG,WAAW,KAAK,SAAS;AAAA,IACzB,cAAc,KAAK,YAAY,KAAK,OAAO,SAAY,KAAK,YAAY;AAAA,IACxE,cAAc,KAAK,YAAY;AAAA,IAC/B,YAAY,KAAK,UAAU,KAAK,OAAO,SAAY,KAAK,UAAU;AAAA,IAClE,YAAY,KAAK,UAAU;AAAA,IAC3B,mBAAmB,KAAK,iBAAiB,KAAK,OAAO,SAAY,KAAK,iBAAiB;AAAA,IACvF,sBAAsB,KAAK,oBAAoB,KAAK,OAAO,SAAY,KAAK,oBAAoB;AAAA,IAChG,sBAAsB,KAAK,oBAAoB,KAAK,OAAO,SAAY,KAAK,oBAAoB;AAAA,IAChG,wBAAwB,KAAK,sBAAsB,KAAK,OAAO,SAAY,KAAK,sBAAsB;AAAA,IACtG,yBAAyB,KAAK,uBAAuB,KAAK,OAAO,SAAY,KAAK,uBAAuB;AAAA,IACzG,yBAAyB,KAAK,uBAAuB,KAAK,OAAO,SAAY,KAAK,uBAAuB;AAAA,IACzG,mBAAmB,KAAK,iBAAiB,KAAK,OAAO,SAAY,KAAK,iBAAiB;AAAA,IACvF,oBAAoB,KAAK,kBAAkB,KAAK,OAAO,SAAY,KAAK,kBAAkB;AAAA,IAC1F,oBAAoB,KAAK,kBAAkB,KAAK,OAAO,SAAY,KAAK,kBAAkB;AAAA,IAC1F,sBAAsB,KAAK,oBAAoB,KAAK,OAAO,SAAY,KAAK,oBAAoB;AAAA,IAChG,uBAAuB,KAAK,qBAAqB,KAAK,OAAO,SAAY,KAAK,qBAAqB;AAAA,IACnG,uBAAuB,KAAK,qBAAqB,KAAK,OAAO,SAAY,KAAK,qBAAqB;AAAA,IACnG,mBAAmB,KAAK,iBAAiB,KAAK,OAAO,SAAY,KAAK,iBAAiB;AAAA,IACvF,oBAAoB,KAAK,kBAAkB,KAAK,OAAO,SAAY,KAAK,kBAAkB;AAAA,IAC1F,oBAAoB,KAAK,kBAAkB,KAAK,OAAO,SAAY,KAAK,kBAAkB;AAAA,IAC1F,uBAAuB,KAAK,qBAAqB,KAAK,OAAO,SAAY,KAAK,qBAAqB;AAAA,IACnG,wBAAwB,KAAK,sBAAsB,KAAK,OAAO,SAAY,KAAK,sBAAsB;AAAA,IACtG,wBAAwB,KAAK,sBAAsB,KAAK,OAAO,SAAY,KAAK,sBAAsB;AAAA,IACtG,wBAAwB,KAAK,sBAAsB,KAAK,OAAO,SAAY,KAAK,sBAAsB;AAAA,IACtG,yBAAyB,KAAK,uBAAuB,KAAK,OAAO,SAAY,KAAK,uBAAuB;AAAA,IACzG,yBAAyB,KAAK,uBAAuB,KAAK,OAAO,SAAY,KAAK,uBAAuB;AAAA,IACzG,qBAAqB,KAAK,mBAAmB,KAAK,OAAO,SAAY,KAAK,mBAAmB;AAAA,IAC7F,sBAAsB,KAAK,oBAAoB,KAAK,OAAO,SAAY,KAAK,oBAAoB;AAAA,IAChG,sBAAsB,KAAK,oBAAoB,KAAK,OAAO,SAAY,KAAK,oBAAoB;AAAA,IAChG,sBAAsB,KAAK,oBAAoB,KAAK,OAAO,SAAY,KAAK,oBAAoB;AAAA,IAChG,uBAAuB,KAAK,qBAAqB,KAAK,OAAO,SAAY,KAAK,qBAAqB;AAAA,IACnG,uBAAuB,KAAK,qBAAqB,KAAK,OAAO,SAAY,KAAK,qBAAqB;AAAA,IACnG,mBAAmB,KAAK,iBAAiB,KAAK,OAAO,SAAY,KAAK,iBAAiB;AAAA,IACvF,oBAAoB,KAAK,kBAAkB,KAAK,OAAO,SAAY,KAAK,kBAAkB;AAAA,IAC1F,oBAAoB,KAAK,kBAAkB,KAAK,OAAO,SAAY,KAAK,kBAAkB;AAAA,EAC9F;AACJ;;;ACxLO,SAAS,sBAAsB,MAA0B;AAC5D,SAAO,2BAA2B,MAAM,KAAK;AACjD;AAEO,SAAS,2BAA2B,MAAW,qBAA6C;AAC/F,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,qBAAqB,KAAK,mBAAmB,KAAK,OAAO,SAAY,KAAK,mBAAmB;AAAA,IAC7F,gBAAgB,KAAK,cAAc,KAAK,OAAO,SAAY,KAAK,cAAc;AAAA,IAC9E,YAAY,KAAK,UAAU,KAAK,OAAO,SAAY,KAAK,UAAU;AAAA,IAClE,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,IACrE,OAAO,KAAK,KAAK,KAAK,OAAO,SAAY,KAAK,KAAK;AAAA,IACnD,YAAY,KAAK,UAAU,KAAK,OAAO,SAAY,KAAK,UAAU;AAAA,IAClE,uBAAuB,KAAK,qBAAqB,KAAK,OAAO,SAAY,KAAK,qBAAqB;AAAA,IACnG,4BAA4B,KAAK,0BAA0B,KAAK,OAAO,SAAY,KAAK,0BAA0B;AAAA,IAClH,4BAA4B,KAAK,0BAA0B,KAAK,OAAO,SAAY,KAAK,0BAA0B;AAAA,IAClH,kBAAkB,KAAK,gBAAgB,KAAK,OAAO,SAAY,KAAK,gBAAgB;AAAA,IACpF,4BAA4B,KAAK,0BAA0B,KAAK,OAAO,SAAY,KAAK,0BAA0B;AAAA,IAClH,4BAA4B,KAAK,0BAA0B,KAAK,OAAO,SAAY,KAAK,0BAA0B;AAAA,IAClH,yBAAyB,KAAK,uBAAuB,KAAK,OAAO,SAAY,KAAK,uBAAuB;AAAA,IACzG,cAAc,KAAK,YAAY,KAAK,OAAO,SAAY,KAAK,YAAY;AAAA,IACxE,wBAAwB,KAAK,sBAAsB,KAAK,OAAO,SAAY,KAAK,sBAAsB;AAAA,IACtG,iBAAiB,KAAK,eAAe,KAAK,OAAO,SAAY,KAAK,eAAe;AAAA,IACjF,iBAAiB,KAAK,eAAe,KAAK,OAAO,SAAY,KAAK,eAAe;AAAA,IACjF,mBAAmB,KAAK,iBAAiB,KAAK,OAAO,SAAY,KAAK,iBAAiB;AAAA,IACvF,mBAAmB,KAAK,iBAAiB,KAAK,OAAO,SAAY,KAAK,iBAAiB;AAAA,IACvF,wBAAwB,KAAK,sBAAsB,KAAK,OAAO,SAAY,KAAK,sBAAsB;AAAA,IACtG,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,EACzE;AACJ;;;AC5IO,SAAS,yBAAyB,MAA6B;AAClE,SAAO,8BAA8B,MAAM,KAAK;AACpD;AAEO,SAAS,8BAA8B,MAAW,qBAAgD;AACrG,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,WAAW,KAAK,SAAS,KAAK,OAAO,SAAY,KAAK,SAAS;AAAA,IAC/D,SAAS,KAAK,OAAO,KAAK,OAAO,SAAY,KAAK,OAAO;AAAA,IACzD,cAAc,KAAK,YAAY,KAAK,OAAO,SAAY,KAAK,YAAY;AAAA,EAC5E;AACJ;;;AC8CO,SAAS,6BAA6B,MAAiC;AAC1E,SAAO,kCAAkC,MAAM,KAAK;AACxD;AAEO,SAAS,kCAAkC,MAAW,qBAAoD;AAC7G,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,WAAW,KAAK,SAAS,KAAK,OAAO,SAAY,KAAK,SAAS;AAAA,IAC/D,YAAY,KAAK,UAAU,KAAK,OAAO,SAAY,KAAK,UAAU;AAAA,IAClE,WAAW,KAAK,SAAS,KAAK,OAAO,SAAY,KAAK,SAAS;AAAA,IAC/D,UAAU,KAAK,QAAQ,KAAK,OAAO,SAAY,KAAK,QAAQ;AAAA,IAC5D,WAAW,KAAK,SAAS,KAAK,OAAO,SAAY,KAAK,SAAS;AAAA,IAC/D,YAAY,KAAK,UAAU,KAAK,OAAO,SAAY,KAAK,UAAU;AAAA,IAClE,UAAU,KAAK,QAAQ,KAAK,OAAO,SAAY,KAAK,QAAQ;AAAA,IAC5D,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,IACrE,YAAY,KAAK,UAAU,KAAK,OAAO,SAAY,KAAK,UAAU;AAAA,IAClE,UAAU,KAAK,QAAQ,KAAK,OAAO,SAAY,KAAK,QAAQ;AAAA,IAC5D,UAAU,KAAK,QAAQ,KAAK,OAAO,SAAY,KAAK,QAAQ;AAAA,IAC5D,WAAW,KAAK,SAAS,KAAK,OAAO,SAAY,KAAK,SAAS;AAAA,IAC/D,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,EACzE;AACJ;;;ACeO,SAAS,sBAAsB,MAA0B;AAC5D,SAAO,2BAA2B,MAAM,KAAK;AACjD;AAEO,SAAS,2BAA2B,MAAW,qBAA6C;AAC/F,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,SAAS,KAAK,OAAO;AAAA,IACrB,YAAY,KAAK,UAAU;AAAA,IAC3B,QAAQ,KAAK,MAAM;AAAA,IACnB,UAAU,KAAK,QAAQ;AAAA,IACvB,mBAAmB,KAAK,iBAAiB,KAAK,OAAO,SAAY,KAAK,iBAAiB;AAAA,IACvF,WAAW,KAAK,SAAS;AAAA,IACzB,iBAAiB,KAAK,eAAe,KAAK,OAAO,SAAc,KAAK,eAAe,EAAiB,IAAI,wBAAwB;AAAA,IAChI,YAAY,KAAK,UAAU,KAAK,OAAO,SAAY,KAAK,UAAU;AAAA,IAClE,OAAO,KAAK,KAAK,KAAK,OAAO,SAAY,KAAK,KAAK;AAAA,IACnD,SAAS,KAAK,OAAO,KAAK,OAAO,SAAY,sBAAsB,KAAK,OAAO,CAAC;AAAA,IAChF,gBAAgB,KAAK,cAAc,KAAK,OAAO,SAAY,6BAA6B,KAAK,cAAc,CAAC;AAAA,IAC5G,kBAAkB,KAAK,gBAAgB,KAAK,OAAO,SAAY,KAAK,gBAAgB;AAAA,IACpF,eAAe,KAAK,aAAa,KAAK,OAAO,SAAY,KAAK,aAAa;AAAA,IAC3E,kBAAkB,KAAK,gBAAgB,KAAK,OAAO,SAAY,KAAK,gBAAgB;AAAA,IACpF,yBAAyB,KAAK,uBAAuB,KAAK,OAAO,SAAY,KAAK,uBAAuB;AAAA,EAC7G;AACJ;;;AC0rBO,SAAS,kBAAkB,MAAsB;AACpD,SAAO,uBAAuB,MAAM,KAAK;AAC7C;AAEO,SAAS,uBAAuB,MAAW,qBAAyC;AACvF,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,WAAW,KAAK,SAAS;AAAA,IACzB,WAAW,KAAK,SAAS;AAAA,IACzB,UAAU,KAAK,QAAQ;AAAA,IACvB,WAAW,KAAK,SAAS;AAAA,IACzB,gBAAgB,KAAK,cAAc;AAAA,IACnC,kBAAkB,KAAK,gBAAgB;AAAA,IACvC,aAAa,KAAK,WAAW;AAAA,IAC7B,qBAAqB,KAAK,mBAAmB;AAAA,IAC7C,sBAAsB,KAAK,oBAAoB;AAAA,IAC/C,kBAAkB,KAAK,gBAAgB;AAAA,IACvC,YAAY,KAAK,UAAU,KAAK,OAAO,SAAY,KAAK,UAAU;AAAA,IAClE,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,IACrE,oBAAoB,KAAK,kBAAkB;AAAA,IAC3C,qBAAqB,KAAK,mBAAmB;AAAA,IAC7C,2BAA2B,KAAK,yBAAyB;AAAA,IACzD,YAAY,KAAK,UAAU;AAAA,IAC3B,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,IACrE,eAAe,KAAK,aAAa,KAAK,OAAO,SAAY,KAAK,aAAa;AAAA,IAC3E,cAAc,KAAK,YAAY,KAAK,OAAO,SAAY,KAAK,YAAY;AAAA,IACxE,WAAW,KAAK,SAAS;AAAA,IACzB,UAAU,KAAK,QAAQ;AAAA,IACvB,WAAW,KAAK,SAAS;AAAA,IACzB,gBAAgB,KAAK,cAAc;AAAA,IACnC,kBAAkB,KAAK,gBAAgB;AAAA,IACvC,aAAa,KAAK,WAAW;AAAA,IAC7B,qBAAqB,KAAK,mBAAmB;AAAA,IAC7C,sBAAsB,KAAK,oBAAoB;AAAA,IAC/C,kBAAkB,KAAK,gBAAgB;AAAA,IACvC,YAAY,KAAK,UAAU,KAAK,OAAO,SAAY,KAAK,UAAU;AAAA,IAClE,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,IACrE,oBAAoB,KAAK,kBAAkB;AAAA,IAC3C,qBAAqB,KAAK,mBAAmB;AAAA,IAC7C,2BAA2B,KAAK,yBAAyB;AAAA,IACzD,YAAY,KAAK,UAAU;AAAA,IAC3B,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,IACrE,eAAe,KAAK,aAAa,KAAK,OAAO,SAAY,KAAK,aAAa;AAAA,IAC3E,cAAc,KAAK,YAAY,KAAK,OAAO,SAAY,KAAK,YAAY;AAAA,IACxE,YAAY,KAAK,UAAU,KAAK,OAAO,SAAY,KAAK,UAAU;AAAA,IAClE,WAAW,KAAK,SAAS,KAAK,OAAO,SAAY,KAAK,SAAS;AAAA,IAC/D,YAAY,KAAK,UAAU,KAAK,OAAO,SAAY,KAAK,UAAU;AAAA,IAClE,iBAAiB,KAAK,eAAe,KAAK,OAAO,SAAY,KAAK,eAAe;AAAA,IACjF,mBAAmB,KAAK,iBAAiB,KAAK,OAAO,SAAY,KAAK,iBAAiB;AAAA,IACvF,cAAc,KAAK,YAAY,KAAK,OAAO,SAAY,KAAK,YAAY;AAAA,IACxE,sBAAsB,KAAK,oBAAoB,KAAK,OAAO,SAAY,KAAK,oBAAoB;AAAA,IAChG,uBAAuB,KAAK,qBAAqB,KAAK,OAAO,SAAY,KAAK,qBAAqB;AAAA,IACnG,mBAAmB,KAAK,iBAAiB,KAAK,OAAO,SAAY,KAAK,iBAAiB;AAAA,IACvF,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,IACrE,cAAc,KAAK,YAAY,KAAK,OAAO,SAAY,KAAK,YAAY;AAAA,IACxE,qBAAqB,KAAK,mBAAmB,KAAK,OAAO,SAAY,KAAK,mBAAmB;AAAA,IAC7F,sBAAsB,KAAK,oBAAoB,KAAK,OAAO,SAAY,KAAK,oBAAoB;AAAA,IAChG,4BAA4B,KAAK,0BAA0B,KAAK,OAAO,SAAY,KAAK,0BAA0B;AAAA,IAClH,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,IACrE,cAAc,KAAK,YAAY,KAAK,OAAO,SAAY,KAAK,YAAY;AAAA,IACxE,gBAAgB,KAAK,cAAc,KAAK,OAAO,SAAY,KAAK,cAAc;AAAA,IAC9E,eAAe,KAAK,aAAa,KAAK,OAAO,SAAY,KAAK,aAAa;AAAA,IAC3E,YAAY,KAAK,UAAU;AAAA,IAC3B,WAAW,KAAK,SAAS;AAAA,IACzB,YAAY,KAAK,UAAU;AAAA,IAC3B,iBAAiB,KAAK,eAAe;AAAA,IACrC,mBAAmB,KAAK,iBAAiB;AAAA,IACzC,cAAc,KAAK,YAAY;AAAA,IAC/B,sBAAsB,KAAK,oBAAoB;AAAA,IAC/C,uBAAuB,KAAK,qBAAqB;AAAA,IACjD,mBAAmB,KAAK,iBAAiB;AAAA,IACzC,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,IACrE,cAAc,KAAK,YAAY,KAAK,OAAO,SAAY,KAAK,YAAY;AAAA,IACxE,qBAAqB,KAAK,mBAAmB;AAAA,IAC7C,sBAAsB,KAAK,oBAAoB;AAAA,IAC/C,4BAA4B,KAAK,0BAA0B;AAAA,IAC3D,aAAa,KAAK,WAAW;AAAA,IAC7B,cAAc,KAAK,YAAY,KAAK,OAAO,SAAY,KAAK,YAAY;AAAA,IACxE,gBAAgB,KAAK,cAAc,KAAK,OAAO,SAAY,KAAK,cAAc;AAAA,IAC9E,eAAe,KAAK,aAAa,KAAK,OAAO,SAAY,KAAK,aAAa;AAAA,IAC3E,WAAW,KAAK,SAAS;AAAA,IACzB,UAAU,KAAK,QAAQ;AAAA,IACvB,WAAW,KAAK,SAAS;AAAA,IACzB,gBAAgB,KAAK,cAAc;AAAA,IACnC,kBAAkB,KAAK,gBAAgB;AAAA,IACvC,aAAa,KAAK,WAAW;AAAA,IAC7B,qBAAqB,KAAK,mBAAmB;AAAA,IAC7C,sBAAsB,KAAK,oBAAoB;AAAA,IAC/C,kBAAkB,KAAK,gBAAgB;AAAA,IACvC,YAAY,KAAK,UAAU,KAAK,OAAO,SAAY,KAAK,UAAU;AAAA,IAClE,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,IACrE,oBAAoB,KAAK,kBAAkB;AAAA,IAC3C,qBAAqB,KAAK,mBAAmB;AAAA,IAC7C,2BAA2B,KAAK,yBAAyB;AAAA,IACzD,YAAY,KAAK,UAAU;AAAA,IAC3B,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,IACrE,eAAe,KAAK,aAAa,KAAK,OAAO,SAAY,KAAK,aAAa;AAAA,IAC3E,cAAc,KAAK,YAAY,KAAK,OAAO,SAAY,KAAK,YAAY;AAAA,IACxE,WAAW,KAAK,SAAS;AAAA,IACzB,UAAU,KAAK,QAAQ;AAAA,IACvB,WAAW,KAAK,SAAS;AAAA,IACzB,gBAAgB,KAAK,cAAc;AAAA,IACnC,kBAAkB,KAAK,gBAAgB;AAAA,IACvC,aAAa,KAAK,WAAW;AAAA,IAC7B,qBAAqB,KAAK,mBAAmB;AAAA,IAC7C,sBAAsB,KAAK,oBAAoB;AAAA,IAC/C,kBAAkB,KAAK,gBAAgB;AAAA,IACvC,YAAY,KAAK,UAAU,KAAK,OAAO,SAAY,KAAK,UAAU;AAAA,IAClE,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,IACrE,oBAAoB,KAAK,kBAAkB;AAAA,IAC3C,qBAAqB,KAAK,mBAAmB;AAAA,IAC7C,2BAA2B,KAAK,yBAAyB;AAAA,IACzD,YAAY,KAAK,UAAU;AAAA,IAC3B,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,IACrE,eAAe,KAAK,aAAa,KAAK,OAAO,SAAY,KAAK,aAAa;AAAA,IAC3E,cAAc,KAAK,YAAY,KAAK,OAAO,SAAY,KAAK,YAAY;AAAA,IACxE,YAAY,KAAK,UAAU;AAAA,IAC3B,WAAW,KAAK,SAAS;AAAA,IACzB,YAAY,KAAK,UAAU;AAAA,IAC3B,iBAAiB,KAAK,eAAe;AAAA,IACrC,mBAAmB,KAAK,iBAAiB;AAAA,IACzC,cAAc,KAAK,YAAY;AAAA,IAC/B,sBAAsB,KAAK,oBAAoB;AAAA,IAC/C,uBAAuB,KAAK,qBAAqB;AAAA,IACjD,mBAAmB,KAAK,iBAAiB;AAAA,IACzC,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,IACrE,cAAc,KAAK,YAAY,KAAK,OAAO,SAAY,KAAK,YAAY;AAAA,IACxE,qBAAqB,KAAK,mBAAmB;AAAA,IAC7C,sBAAsB,KAAK,oBAAoB;AAAA,IAC/C,4BAA4B,KAAK,0BAA0B;AAAA,IAC3D,aAAa,KAAK,WAAW;AAAA,IAC7B,cAAc,KAAK,YAAY,KAAK,OAAO,SAAY,KAAK,YAAY;AAAA,IACxE,gBAAgB,KAAK,cAAc,KAAK,OAAO,SAAY,KAAK,cAAc;AAAA,IAC9E,eAAe,KAAK,aAAa,KAAK,OAAO,SAAY,KAAK,aAAa;AAAA,EAC/E;AACJ;;;ACj6BO,SAAS,oBAAoB,MAAwB;AACxD,SAAO,yBAAyB,MAAM,KAAK;AAC/C;AAEO,SAAS,yBAAyB,MAAW,qBAA2C;AAC3F,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,WAAW,KAAK,SAAS;AAAA,IACzB,YAAY,sBAAsB,KAAK,UAAU,CAAC;AAAA,IAClD,cAAc,wBAAwB,KAAK,YAAY,CAAC;AAAA,IACxD,SAAS,kBAAkB,KAAK,OAAO,CAAC;AAAA,EAC5C;AACJ;;;ACxCO,SAAS,eAAe,MAAmB;AAC9C,SAAO,oBAAoB,MAAM,KAAK;AAC1C;AAEO,SAAS,oBAAoB,MAAW,qBAAsC;AACjF,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,kBAAkB,KAAK,gBAAgB,KAAK,OAAO,SAAY,KAAK,gBAAgB;AAAA,IACpF,kBAAkB,KAAK,gBAAgB,KAAK,OAAO,SAAY,KAAK,gBAAgB;AAAA,IACpF,SAAS,KAAK,OAAO,KAAK,OAAO,SAAY,KAAK,OAAO;AAAA,IACzD,SAAS,KAAK,OAAO;AAAA,EACzB;AACJ;;;ACKO,SAAS,gBAAgB,MAAoB;AAChD,SAAO,qBAAqB,MAAM,KAAK;AAC3C;AAEO,SAAS,qBAAqB,MAAW,qBAAuC;AACnF,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,WAAW,KAAK,SAAS,KAAK,OAAO,SAAY,KAAK,SAAS;AAAA,IAC/D,WAAW,KAAK,SAAS,KAAK,OAAO,SAAY,KAAK,SAAS;AAAA,IAC/D,eAAe,KAAK,aAAa,KAAK,OAAO,SAAY,KAAK,aAAa;AAAA,IAC3E,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,IACrE,SAAS,KAAK,OAAO,KAAK,OAAO,SAAY,KAAK,OAAO;AAAA,IACzD,QAAU,KAAK,MAAM,EAAiB,IAAI,cAAc;AAAA,EAC5D;AACJ;;;ACEO,SAAS,mBAAmB,MAAuB;AACtD,SAAO,wBAAwB,MAAM,KAAK;AAC9C;AAEO,SAAS,wBAAwB,MAAW,qBAA0C;AACzF,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,kBAAkB,KAAK,gBAAgB,KAAK,OAAO,SAAY,KAAK,gBAAgB;AAAA,IACpF,kBAAkB,KAAK,gBAAgB,KAAK,OAAO,SAAY,KAAK,gBAAgB;AAAA,IACpF,SAAS,KAAK,OAAO,KAAK,OAAO,SAAY,KAAK,OAAO;AAAA,IACzD,SAAS,KAAK,OAAO;AAAA,IACrB,eAAe,KAAK,aAAa;AAAA,IACjC,gBAAgB,KAAK,cAAc,KAAK,OAAO,SAAY,KAAK,cAAc;AAAA,IAC9E,iBAAiB,KAAK,eAAe;AAAA,IACrC,iBAAiB,KAAK,eAAe;AAAA,IACrC,YAAY,KAAK,UAAU,KAAK,OAAO,SAAY,KAAK,UAAU;AAAA,IAClE,YAAY,KAAK,UAAU,KAAK,OAAO,SAAY,KAAK,UAAU;AAAA,EACtE;AACJ;;;ACvEO,SAAS,6BAA6B,MAAiC;AAC1E,SAAO,kCAAkC,MAAM,KAAK;AACxD;AAEO,SAAS,kCAAkC,MAAW,qBAAoD;AAC7G,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,QAAQ,KAAK,MAAM;AAAA,IACnB,cAAc,KAAK,YAAY;AAAA,EACnC;AACJ;;;ACuCO,SAAS,yBAAyB,MAA6B;AAClE,SAAO,8BAA8B,MAAM,KAAK;AACpD;AAEO,SAAS,8BAA8B,MAAW,qBAAgD;AACrG,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,MAAM,KAAK,IAAI,KAAK,OAAO,SAAY,KAAK,IAAI;AAAA,IAChD,OAAO,KAAK,KAAK,KAAK,OAAO,SAAY,KAAK,KAAK;AAAA,IACnD,eAAe,KAAK,aAAa,KAAK,OAAO,SAAY,KAAK,aAAa;AAAA,IAC3E,eAAe,KAAK,aAAa,KAAK,OAAO,SAAY,KAAK,aAAa;AAAA,IAC3E,YAAY,KAAK,UAAU,KAAK,OAAO,SAAY,KAAK,UAAU;AAAA,IAClE,YAAY,KAAK,UAAU,KAAK,OAAO,SAAY,KAAK,UAAU;AAAA,IAClE,YAAY,KAAK,UAAU,KAAK,OAAO,SAAY,KAAK,UAAU;AAAA,IAClE,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,IACrE,UAAU,KAAK,QAAQ,KAAK,OAAO,SAAY,KAAK,QAAQ;AAAA,IAC5D,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,IACrE,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,EACzE;AACJ;;;ACxDO,SAAS,6BAA6B,MAAiC;AAC1E,SAAO,kCAAkC,MAAM,KAAK;AACxD;AAEO,SAAS,kCAAkC,MAAW,qBAAoD;AAC7G,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,QAAQ,KAAK,MAAM,KAAK,OAAO,SAAc,KAAK,MAAM,EAAiB,IAAI,wBAAwB;AAAA,IACrG,QAAQ,KAAK,MAAM,KAAK,OAAO,SAAY,KAAK,MAAM;AAAA,IACtD,YAAY,KAAK,UAAU,KAAK,OAAO,SAAY,KAAK,UAAU;AAAA,IAClE,gBAAgB,KAAK,cAAc,KAAK,OAAO,SAAY,KAAK,cAAc;AAAA,EAClF;AACJ;;;ACzCO,SAAS,kCAAkC,MAAsC;AACpF,SAAO,uCAAuC,MAAM,KAAK;AAC7D;AAEO,SAAS,uCAAuC,MAAW,qBAAyD;AACvH,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,WAAW,KAAK,SAAS,KAAK,OAAO,SAAY,KAAK,SAAS;AAAA,EACnE;AACJ;;;ACZO,SAAS,+BAA+B,MAAmC;AAC9E,SAAO,oCAAoC,MAAM,KAAK;AAC1D;AAEO,SAAS,oCAAoC,MAAW,qBAAsD;AACjH,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,UAAU,KAAK,QAAQ,KAAK,OAAO,SAAY,KAAK,QAAQ;AAAA,EAChE;AACJ;;;AC0BO,SAAS,4BAA4B,MAAkC;AAC1E,SAAO,iCAAiC,MAAM,KAAK;AACvD;AAEO,SAAS,iCAAiC,OAAsC,sBAA+B,OAAY;AAC9H,MAAI,SAAS,MAAM;AACf,WAAO;AAAA,EACX;AAEA,SAAO;AAAA,IAEH,QAAQ,MAAM,MAAM;AAAA,IACpB,MAAM,MAAM,IAAI;AAAA,IAChB,QAAQ,MAAM,MAAM;AAAA,IACpB,SAAS,MAAM,OAAO;AAAA,EAC1B;AACJ;;;AC9CO,SAAS,iCAAiC,MAAqC;AAClF,SAAO,sCAAsC,MAAM,KAAK;AAC5D;AAEO,SAAS,sCAAsC,MAAW,qBAAwD;AACrH,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,YAAY,KAAK,UAAU;AAAA,IAC3B,SAAS,KAAK,OAAO;AAAA,EACzB;AACJ;;;ACbO,SAAS,yBAAyB,MAA6B;AAClE,SAAO,8BAA8B,MAAM,KAAK;AACpD;AAEO,SAAS,8BAA8B,MAAW,qBAAgD;AACrG,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,YAAY,KAAK,UAAU;AAAA,IAC3B,SAAS,KAAK,OAAO;AAAA,EACzB;AACJ;;;ACbO,SAAS,eAAe,MAAmB;AAC9C,SAAO,oBAAoB,MAAM,KAAK;AAC1C;AAEO,SAAS,oBAAoB,MAAW,qBAAsC;AACjF,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,SAAS,KAAK,OAAO;AAAA,IACrB,UAAU,KAAK,QAAQ;AAAA,EAC3B;AACJ;;;ACbO,SAAS,wBAAwB,MAA4B;AAChE,SAAO,6BAA6B,MAAM,KAAK;AACnD;AAEO,SAAS,6BAA6B,MAAW,qBAA+C;AACnG,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,MAAM,KAAK,IAAI;AAAA,IACf,QAAQ,KAAK,MAAM;AAAA,EACvB;AACJ;;;ACuCO,SAAS,iCAAiC,MAAuC;AACpF,SAAO,sCAAsC,MAAM,KAAK;AAC5D;AAEO,SAAS,sCAAsC,OAA2C,sBAA+B,OAAY;AACxI,MAAI,SAAS,MAAM;AACf,WAAO;AAAA,EACX;AAEA,SAAO;AAAA,IAEH,WAAW,MAAM,SAAS;AAAA,IAC1B,SAAS,MAAM,OAAO;AAAA,IACtB,qBAAqB,MAAM,mBAAmB;AAAA,IAC9C,aAAa,MAAM,WAAW;AAAA,EAClC;AACJ;;;ACWO,SAAS,mCAAmC,MAAyC;AACxF,SAAO,wCAAwC,MAAM,KAAK;AAC9D;AAEO,SAAS,wCAAwC,OAA6C,sBAA+B,OAAY;AAC5I,MAAI,SAAS,MAAM;AACf,WAAO;AAAA,EACX;AAEA,SAAO;AAAA,IAEH,WAAW,MAAM,SAAS;AAAA,IAC1B,SAAS,MAAM,OAAO;AAAA,IACtB,WAAW,MAAM,SAAS;AAAA,IAC1B,eAAe,MAAM,aAAa;AAAA,IAClC,oBAAoB,MAAM,kBAAkB;AAAA,IAC5C,cAAc,MAAM,YAAY;AAAA,IAChC,qBAAqB,MAAM,mBAAmB;AAAA,IAC9C,WAAW,MAAM,SAAS;AAAA,IAC1B,QAAQ,MAAM,MAAM;AAAA,EACxB;AACJ;;;ACxEO,SAAS,WAAW,MAAiB;AACxC,SAAO,gBAAgB,MAAM,KAAK;AACtC;AAEO,SAAS,gBAAgB,OAAqB,sBAA+B,OAAY;AAC5F,MAAI,SAAS,MAAM;AACf,WAAO;AAAA,EACX;AAEA,SAAO;AAAA,IAEH,OAAO,MAAM,KAAK;AAAA,IAClB,SAAS,MAAM,OAAO;AAAA,EAC1B;AACJ;;;ACuEO,SAAS,+BAA+B,MAAqC;AAChF,SAAO,oCAAoC,MAAM,KAAK;AAC1D;AAEO,SAAS,oCAAoC,OAAyC,sBAA+B,OAAY;AACpI,MAAI,SAAS,MAAM;AACf,WAAO;AAAA,EACX;AAEA,SAAO;AAAA,IAEH,OAAO,MAAM,KAAK;AAAA,IAClB,eAAe,MAAM,aAAa;AAAA,IAClC,eAAe,MAAM,aAAa;AAAA,IAClC,QAAQ,MAAM,MAAM;AAAA,IACpB,UAAU,MAAM,QAAQ;AAAA,IACxB,gBAAgB,MAAM,cAAc;AAAA,IACpC,QAAQ,MAAM,MAAM;AAAA,IACpB,eAAe,MAAM,aAAa;AAAA,IAClC,SAAW,MAAM,OAAO,EAAiB,IAAI,UAAU;AAAA,IACvD,UAAU,MAAM,QAAQ;AAAA,IACxB,eAAe,MAAM,aAAa;AAAA,EACtC;AACJ;;;ACxIO,SAAS,iCAAiC,MAAqC;AAClF,SAAO,sCAAsC,MAAM,KAAK;AAC5D;AAEO,SAAS,sCAAsC,MAAW,qBAAwD;AACrH,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,gBAAgB,KAAK,cAAc;AAAA,IACnC,SAAS,KAAK,OAAO;AAAA,EACzB;AACJ;;;ACfO,SAAS,6CAA6C,MAAiD;AAC1G,SAAO,kDAAkD,MAAM,KAAK;AACxE;AAEO,SAAS,kDAAkD,MAAW,qBAAoE;AAC7I,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,IACrE,QAAQ,KAAK,MAAM,KAAK,OAAO,SAAY,KAAK,MAAM;AAAA,EAC1D;AACJ;;;ACGO,SAAS,qCAAqC,MAA2C;AAC5F,SAAO,0CAA0C,MAAM,KAAK;AAChE;AAEO,SAAS,0CAA0C,OAA+C,sBAA+B,OAAY;AAChJ,MAAI,SAAS,MAAM;AACf,WAAO;AAAA,EACX;AAEA,SAAO;AAAA,IAEH,YAAY,MAAM,UAAU;AAAA,IAC5B,SAAS,MAAM,OAAO;AAAA,EAC1B;AACJ;;;ACnCO,SAAS,iCAAiC,MAAqC;AAClF,SAAO,sCAAsC,MAAM,KAAK;AAC5D;AAEO,SAAS,sCAAsC,MAAW,qBAAwD;AACrH,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,QAAQ,KAAK,MAAM;AAAA,EACvB;AACJ;;;ACyGO,SAAS,2BAA2B,MAAiC;AACxE,SAAO,gCAAgC,MAAM,KAAK;AACtD;AAEO,SAAS,gCAAgC,OAAqC,sBAA+B,OAAY;AAC5H,MAAI,SAAS,MAAM;AACf,WAAO;AAAA,EACX;AAEA,SAAO;AAAA,IAEH,OAAO,MAAM,KAAK;AAAA,IAClB,eAAe,MAAM,aAAa;AAAA,IAClC,eAAe,MAAM,aAAa;AAAA,IAClC,WAAW,MAAM,SAAS;AAAA,IAC1B,YAAY,MAAM,UAAU;AAAA,IAC5B,WAAW,MAAM,SAAS;AAAA,IAC1B,QAAQ,MAAM,MAAM;AAAA,IACpB,UAAU,MAAM,QAAQ;AAAA,IACxB,gBAAgB,MAAM,cAAc;AAAA,IACpC,SAAS,MAAM,OAAO;AAAA,IACtB,eAAe,MAAM,aAAa;AAAA,IAClC,eAAe,MAAM,aAAa;AAAA,EACtC;AACJ;;;ACvIO,SAAS,6BAA6B,MAAiC;AAC1E,SAAO,kCAAkC,MAAM,KAAK;AACxD;AAEO,SAAS,kCAAkC,MAAW,qBAAoD;AAC7G,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,gBAAgB,KAAK,cAAc;AAAA,IACnC,SAAS,KAAK,OAAO,KAAK,OAAO,SAAY,KAAK,OAAO;AAAA,EAC7D;AACJ;;;ACUO,SAAS,sBAAsB,MAA0B;AAC5D,SAAO,2BAA2B,MAAM,KAAK;AACjD;AAEO,SAAS,2BAA2B,MAAW,qBAA6C;AAC/F,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,IACrE,gBAAgB,KAAK,cAAc,KAAK,OAAO,SAAY,KAAK,cAAc;AAAA,IAC9E,gBAAgB,KAAK,cAAc,KAAK,OAAO,SAAY,KAAK,cAAc;AAAA,IAC9E,kBAAkB,KAAK,gBAAgB,KAAK,OAAO,SAAY,KAAK,gBAAgB;AAAA,IACpF,eAAe,KAAK,aAAa,KAAK,OAAO,SAAY,KAAK,aAAa;AAAA,IAC3E,OAAO,KAAK,KAAK,KAAK,OAAO,SAAY,KAAK,KAAK;AAAA,EACvD;AACJ;;;ACaO,SAAS,0BAA0B,MAA8B;AACpE,SAAO,+BAA+B,MAAM,KAAK;AACrD;AAEO,SAAS,+BAA+B,MAAW,qBAAiD;AACvG,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,YAAY,KAAK,UAAU;AAAA,IAC3B,SAAS,cAAc,KAAK,OAAO,CAAC;AAAA,IACpC,WAAW,KAAK,SAAS;AAAA,IACzB,QAAQ,KAAK,MAAM;AAAA,IACnB,UAAU,KAAK,QAAQ;AAAA,IACvB,aAAa,KAAK,WAAW;AAAA,IAC7B,WAAW,KAAK,SAAS;AAAA,IACzB,UAAU,KAAK,QAAQ;AAAA,EAC3B;AACJ;;;AC1CO,SAAS,4BAA4B,MAAgC;AACxE,SAAO,iCAAiC,MAAM,KAAK;AACvD;AAEO,SAAS,iCAAiC,MAAW,qBAAmD;AAC3G,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,SAAS,KAAK,OAAO;AAAA,IACrB,eAAe,KAAK,aAAa;AAAA,IACjC,eAAe,KAAK,aAAa;AAAA,IACjC,aAAa,KAAK,WAAW;AAAA,IAC7B,WAAa,KAAK,SAAS,EAAiB,IAAI,yBAAyB;AAAA,EAC7E;AACJ;;;ACsEO,SAAS,qBAAqB,MAAyB;AAC1D,SAAO,0BAA0B,MAAM,KAAK;AAChD;AAEO,SAAS,0BAA0B,MAAW,qBAA4C;AAC7F,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,SAAS,cAAc,KAAK,OAAO,CAAC;AAAA,IACpC,MAAM,KAAK,IAAI;AAAA,IACf,WAAW,KAAK,SAAS;AAAA,IACzB,UAAU,KAAK,QAAQ;AAAA,IACvB,WAAW,KAAK,SAAS;AAAA,IACzB,QAAQ,KAAK,MAAM;AAAA,IACnB,eAAe,KAAK,aAAa;AAAA,IACjC,QAAQ,KAAK,MAAM;AAAA,IACnB,aAAa,KAAK,WAAW;AAAA,IAC7B,kBAAkB,KAAK,gBAAgB;AAAA,IACvC,WAAW,KAAK,SAAS;AAAA,IACzB,cAAc,KAAK,YAAY;AAAA,IAC/B,aAAa,KAAK,WAAW;AAAA,IAC7B,aAAa,KAAK,WAAW;AAAA,IAC7B,gBAAgB,KAAK,cAAc;AAAA,IACnC,iBAAiB,KAAK,eAAe;AAAA,IACrC,kBAAkB,KAAK,gBAAgB;AAAA,EAC3C;AACJ;;;ACtJO,SAAS,uBAAuB,MAA2B;AAC9D,SAAO,4BAA4B,MAAM,KAAK;AAClD;AAEO,SAAS,4BAA4B,MAAW,qBAA8C;AACjG,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,eAAe,KAAK,aAAa;AAAA,EACrC;AACJ;;;ACEO,SAAS,2BAA2B,MAAiC;AACxE,SAAO,gCAAgC,MAAM,KAAK;AACtD;AAEO,SAAS,gCAAgC,OAAqC,sBAA+B,OAAY;AAC5H,MAAI,SAAS,MAAM;AACf,WAAO;AAAA,EACX;AAEA,SAAO;AAAA,IAEH,YAAY,MAAM,UAAU;AAAA,EAChC;AACJ;;;AC3BO,SAAS,gCAAgC,MAAoC;AAChF,SAAO,qCAAqC,MAAM,KAAK;AAC3D;AAEO,SAAS,qCAAqC,MAAW,qBAAuD;AACnH,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,aAAa,KAAK,WAAW;AAAA,EACjC;AACJ;;;ACwBO,SAAS,uBAAuB,MAA2B;AAC9D,SAAO,4BAA4B,MAAM,KAAK;AAClD;AAEO,SAAS,4BAA4B,MAAW,qBAA8C;AACjG,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,SAAS,KAAK,OAAO;AAAA,IACrB,eAAe,KAAK,aAAa;AAAA,IACjC,eAAe,KAAK,aAAa;AAAA,IACjC,aAAa,KAAK,WAAW;AAAA,IAC7B,WAAa,KAAK,SAAS,EAAiB,IAAI,oBAAoB;AAAA,EACxE;AACJ;;;ACtCO,SAAS,6BAA6B,MAAmC;AAC5E,SAAO,kCAAkC,MAAM,KAAK;AACxD;AAEO,SAAS,kCAAkC,OAAuC,sBAA+B,OAAY;AAChI,MAAI,SAAS,MAAM;AACf,WAAO;AAAA,EACX;AAEA,SAAO;AAAA,IAEH,WAAW,MAAM,SAAS;AAAA,EAC9B;AACJ;;;AC3BO,SAAS,mCAAmC,MAAuC;AACtF,SAAO,wCAAwC,MAAM,KAAK;AAC9D;AAEO,SAAS,wCAAwC,MAAW,qBAA0D;AACzH,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,WAAW,KAAK,SAAS;AAAA,EAC7B;AACJ;;;AC2BO,SAAS,kBAAkB,MAAwB;AACtD,SAAO,uBAAuB,MAAM,KAAK;AAC7C;AAEO,SAAS,uBAAuB,OAA4B,sBAA+B,OAAY;AAC1G,MAAI,SAAS,MAAM;AACf,WAAO;AAAA,EACX;AAEA,SAAO;AAAA,IAEH,YAAY,MAAM,UAAU;AAAA,IAC5B,cAAc,MAAM,YAAY;AAAA,IAChC,WAAW,MAAM,SAAS;AAAA,EAC9B;AACJ;;;ACxCO,SAAS,uBAAuB,MAA2B;AAC9D,SAAO,4BAA4B,MAAM,KAAK;AAClD;AAEO,SAAS,4BAA4B,MAAW,qBAA8C;AACjG,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,aAAa,KAAK,WAAW;AAAA,IAC7B,eAAe,KAAK,aAAa;AAAA,IACjC,SAAS,KAAK,OAAO;AAAA,EACzB;AACJ;;;ACqEO,SAAS,gBAAgB,MAAsB;AAClD,SAAO,qBAAqB,MAAM,KAAK;AAC3C;AAEO,SAAS,qBAAqB,OAA0B,sBAA+B,OAAY;AACtG,MAAI,SAAS,MAAM;AACf,WAAO;AAAA,EACX;AAEA,SAAO;AAAA,IAEH,OAAO,MAAM,KAAK;AAAA,IAClB,eAAe,MAAM,aAAa;AAAA,IAClC,eAAe,MAAM,aAAa;AAAA,IAClC,eAAe,MAAM,aAAa;AAAA,IAClC,UAAU,MAAM,QAAQ;AAAA,IACxB,YAAY,MAAM,UAAU;AAAA,IAC5B,YAAY,MAAM,UAAU;AAAA,IAC5B,aAAa,MAAM,WAAW;AAAA,IAC9B,cAAc,MAAM,YAAY;AAAA,EACpC;AACJ;;;AC/GO,SAAS,kBAAkB,MAAsB;AACpD,SAAO,uBAAuB,MAAM,KAAK;AAC7C;AAEO,SAAS,uBAAuB,MAAW,qBAAyC;AACvF,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,gBAAgB,KAAK,cAAc;AAAA,IACnC,eAAe,KAAK,aAAa;AAAA,EACrC;AACJ;;;AC4EO,SAAS,uBAAuB,MAA2B;AAC9D,SAAO,4BAA4B,MAAM,KAAK;AAClD;AAEO,SAAS,4BAA4B,MAAW,qBAA8C;AACjG,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,OAAO,KAAK,KAAK;AAAA,IACjB,eAAe,KAAK,aAAa;AAAA,IACjC,eAAe,KAAK,aAAa,KAAK,OAAO,SAAY,KAAK,aAAa;AAAA,IAC3E,UAAU,KAAK,QAAQ;AAAA,IACvB,YAAY,KAAK,UAAU;AAAA,IAC3B,YAAY,KAAK,UAAU;AAAA,IAC3B,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,IACrE,cAAc,KAAK,YAAY,KAAK,OAAO,SAAY,KAAK,YAAY;AAAA,IACxE,oBAAoB,KAAK,kBAAkB,KAAK,OAAO,SAAY,KAAK,kBAAkB;AAAA,IAC1F,UAAU,KAAK,QAAQ,KAAK,OAAO,SAAY,KAAK,QAAQ;AAAA,IAC5D,YAAY,KAAK,UAAU,KAAK,OAAO,SAAY,KAAK,UAAU;AAAA,IAClE,UAAU,KAAK,QAAQ,KAAK,OAAO,SAAY,KAAK,QAAQ;AAAA,IAC5D,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,EACzE;AACJ;AAEO,SAAS,qBAAqB,MAA2B;AAC5D,SAAO,0BAA0B,MAAM,KAAK;AAChD;AAEO,SAAS,0BAA0B,OAA+B,sBAA+B,OAAY;AAChH,MAAI,SAAS,MAAM;AACf,WAAO;AAAA,EACX;AAEA,SAAO;AAAA,IAEH,OAAO,MAAM,KAAK;AAAA,IAClB,eAAe,MAAM,aAAa;AAAA,IAClC,eAAe,MAAM,aAAa;AAAA,IAClC,UAAU,MAAM,QAAQ;AAAA,IACxB,YAAY,MAAM,UAAU;AAAA,IAC5B,YAAY,MAAM,UAAU;AAAA,IAC5B,aAAa,MAAM,WAAW;AAAA,IAC9B,cAAc,MAAM,YAAY;AAAA,IAChC,oBAAoB,MAAM,kBAAkB;AAAA,IAC5C,UAAU,MAAM,QAAQ;AAAA,IACxB,YAAY,MAAM,UAAU;AAAA,IAC5B,UAAU,MAAM,QAAQ;AAAA,IACxB,aAAa,MAAM,WAAW;AAAA,EAClC;AACJ;;;ACtHO,SAAS,0BAA0B,MAA8B;AACpE,SAAO,+BAA+B,MAAM,KAAK;AACrD;AAEO,SAAS,+BAA+B,MAAW,qBAAiD;AACvG,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,QAAQ,uBAAuB,KAAK,MAAM,CAAC;AAAA,IAC3C,gBAAgB,KAAK,cAAc;AAAA,IACnC,aAAa,KAAK,WAAW;AAAA,IAC7B,eAAe,KAAK,aAAa;AAAA,EACrC;AACJ;;;ACsHO,SAAS,cAAc,MAAkB;AAC5C,SAAO,mBAAmB,MAAM,KAAK;AACzC;AAEO,SAAS,mBAAmB,MAAW,qBAAqC;AAC/E,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,SAAS,KAAK,OAAO;AAAA,IACrB,YAAY,KAAK,UAAU;AAAA,IAC3B,QAAQ,KAAK,MAAM;AAAA,IACnB,UAAU,KAAK,QAAQ;AAAA,IACvB,mBAAmB,KAAK,iBAAiB,KAAK,OAAO,SAAY,KAAK,iBAAiB;AAAA,IACvF,WAAW,KAAK,SAAS;AAAA,IACzB,iBAAiB,KAAK,eAAe,KAAK,OAAO,SAAc,KAAK,eAAe,EAAiB,IAAI,wBAAwB;AAAA,IAChI,YAAY,KAAK,UAAU,KAAK,OAAO,SAAY,KAAK,UAAU;AAAA,IAClE,OAAO,KAAK,KAAK,KAAK,OAAO,SAAY,KAAK,KAAK;AAAA,IACnD,SAAS,KAAK,OAAO,KAAK,OAAO,SAAY,sBAAsB,KAAK,OAAO,CAAC;AAAA,IAChF,gBAAgB,KAAK,cAAc,KAAK,OAAO,SAAY,6BAA6B,KAAK,cAAc,CAAC;AAAA,IAC5G,kBAAkB,KAAK,gBAAgB,KAAK,OAAO,SAAY,KAAK,gBAAgB;AAAA,IACpF,eAAe,KAAK,aAAa,KAAK,OAAO,SAAY,KAAK,aAAa;AAAA,IAC3E,kBAAkB,KAAK,gBAAgB,KAAK,OAAO,SAAY,KAAK,gBAAgB;AAAA,IACpF,yBAAyB,KAAK,uBAAuB,KAAK,OAAO,SAAY,KAAK,uBAAuB;AAAA,IACzG,UAAU,KAAK,QAAQ,KAAK,OAAO,SAAY,KAAK,QAAQ;AAAA,IAC5D,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,IACrE,SAAS,KAAK,OAAO,KAAK,OAAO,SAAY,kBAAkB,KAAK,OAAO,CAAC;AAAA,IAC5E,aAAa,KAAK,WAAW,KAAK,OAAO,SAAc,KAAK,WAAW,EAAiB,IAAI,kBAAkB;AAAA,IAC9G,cAAc,wBAAwB,KAAK,YAAY,CAAC;AAAA,EAC5D;AACJ;;;AC5IO,SAAS,yBAAyB,MAA6B;AAClE,SAAO,8BAA8B,MAAM,KAAK;AACpD;AAEO,SAAS,8BAA8B,MAAW,qBAAgD;AACrG,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,gBAAgB,KAAK,cAAc;AAAA,IACnC,eAAe,KAAK,aAAa;AAAA,IACjC,aAAa,KAAK,WAAW;AAAA,IAC7B,aAAa,KAAK,WAAW;AAAA,IAC7B,kBAAkB,KAAK,gBAAgB,KAAK,OAAO,SAAY,KAAK,gBAAgB;AAAA,IACpF,wBAAwB,KAAK,sBAAsB;AAAA,IACnD,QAAQ,KAAK,MAAM;AAAA,EACvB;AACJ;;;ACjCO,SAAS,0BAA0B,MAA8B;AACpE,SAAO,+BAA+B,MAAM,KAAK;AACrD;AAEO,SAAS,+BAA+B,MAAW,qBAAiD;AACvG,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,WAAW,KAAK,SAAS,KAAK,OAAO,SAAY,KAAK,SAAS;AAAA,IAC/D,WAAW,KAAK,SAAS,KAAK,OAAO,SAAY,KAAK,SAAS;AAAA,IAC/D,eAAe,KAAK,aAAa,KAAK,OAAO,SAAY,KAAK,aAAa;AAAA,IAC3E,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,IACrE,SAAS,KAAK,OAAO,KAAK,OAAO,SAAY,KAAK,OAAO;AAAA,IACzD,QAAU,KAAK,MAAM,EAAiB,IAAI,wBAAwB;AAAA,EACtE;AACJ;;;AClCO,SAAS,oBAAoB,MAAwB;AACxD,SAAO,yBAAyB,MAAM,KAAK;AAC/C;AAEO,SAAS,yBAAyB,MAAW,qBAA2C;AAC3F,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,iBAAiB,KAAK,eAAe;AAAA,IACrC,UAAU,KAAK,QAAQ;AAAA,IACvB,eAAe,KAAK,aAAa;AAAA,IACjC,cAAc,KAAK,YAAY;AAAA,EACnC;AACJ;;;ACEO,SAAS,wBAAwB,MAA4B;AAChE,SAAO,6BAA6B,MAAM,KAAK;AACnD;AAEO,SAAS,6BAA6B,MAAW,qBAA+C;AACnG,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,WAAW,KAAK,SAAS,KAAK,OAAO,SAAY,KAAK,SAAS;AAAA,IAC/D,WAAW,KAAK,SAAS,KAAK,OAAO,SAAY,KAAK,SAAS;AAAA,IAC/D,eAAe,KAAK,aAAa,KAAK,OAAO,SAAY,KAAK,aAAa;AAAA,IAC3E,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,IACrE,SAAS,KAAK,OAAO,KAAK,OAAO,SAAY,KAAK,OAAO;AAAA,IACzD,QAAU,KAAK,MAAM,EAAiB,IAAI,mBAAmB;AAAA,EACjE;AACJ;;;ACjBO,SAAS,sBAAsB,MAA0B;AAC5D,SAAO,2BAA2B,MAAM,KAAK;AACjD;AAEO,SAAS,2BAA2B,MAAW,qBAA6C;AAC/F,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,WAAW,KAAK,SAAS,KAAK,OAAO,SAAY,KAAK,SAAS;AAAA,IAC/D,WAAW,KAAK,SAAS,KAAK,OAAO,SAAY,KAAK,SAAS;AAAA,IAC/D,eAAe,KAAK,aAAa,KAAK,OAAO,SAAY,KAAK,aAAa;AAAA,IAC3E,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,IACrE,SAAS,KAAK,OAAO,KAAK,OAAO,SAAY,KAAK,OAAO;AAAA,IACzD,QAAU,KAAK,MAAM,EAAiB,IAAI,aAAa;AAAA,EAC3D;AACJ;;;ACXO,SAAS,kBAAkB,MAAsB;AACpD,SAAO,uBAAuB,MAAM,KAAK;AAC7C;AAEO,SAAS,uBAAuB,MAAW,qBAAyC;AACvF,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,WAAW,KAAK,SAAS,KAAK,OAAO,SAAY,KAAK,SAAS;AAAA,IAC/D,WAAW,KAAK,SAAS,KAAK,OAAO,SAAY,KAAK,SAAS;AAAA,IAC/D,eAAe,KAAK,aAAa,KAAK,OAAO,SAAY,KAAK,aAAa;AAAA,IAC3E,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,IACrE,SAAS,KAAK,OAAO,KAAK,OAAO,SAAY,KAAK,OAAO;AAAA,IACzD,qBAAqB,KAAK,mBAAmB,KAAK,OAAO,SAAY,KAAK,mBAAmB;AAAA,IAC7F,QAAU,KAAK,MAAM,EAAiB,IAAI,aAAa;AAAA,EAC3D;AACJ;;;ACzCO,SAAS,sBAAsB,MAA0B;AAC5D,SAAO,2BAA2B,MAAM,KAAK;AACjD;AAEO,SAAS,2BAA2B,MAAW,qBAA6C;AAC/F,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,gBAAgB,KAAK,cAAc;AAAA,IACnC,cAAc,KAAK,YAAY;AAAA,IAC/B,iBAAiB,KAAK,eAAe;AAAA,IACrC,aAAa,KAAK,WAAW;AAAA,EACjC;AACJ;;;ACEO,SAAS,uBAAuB,MAA2B;AAC9D,SAAO,4BAA4B,MAAM,KAAK;AAClD;AAEO,SAAS,4BAA4B,MAAW,qBAA8C;AACjG,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,WAAW,KAAK,SAAS,KAAK,OAAO,SAAY,KAAK,SAAS;AAAA,IAC/D,WAAW,KAAK,SAAS,KAAK,OAAO,SAAY,KAAK,SAAS;AAAA,IAC/D,eAAe,KAAK,aAAa,KAAK,OAAO,SAAY,KAAK,aAAa;AAAA,IAC3E,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,IACrE,SAAS,KAAK,OAAO,KAAK,OAAO,SAAY,KAAK,OAAO;AAAA,IACzD,QAAU,KAAK,MAAM,EAAiB,IAAI,qBAAqB;AAAA,EACnE;AACJ;;;ACiBO,SAAS,oBAAoB,MAAwB;AACxD,SAAO,yBAAyB,MAAM,KAAK;AAC/C;AAEO,SAAS,yBAAyB,MAAW,qBAA2C;AAC3F,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,WAAW,KAAK,SAAS;AAAA,IACzB,wBAAwB,KAAK,sBAAsB,KAAK,OAAO,SAAY,KAAK,sBAAsB;AAAA,IACtG,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,IACrE,eAAe,KAAK,aAAa,KAAK,OAAO,SAAY,KAAK,aAAa;AAAA,IAC3E,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,IACrE,kBAAkB,KAAK,gBAAgB,KAAK,OAAO,SAAa,IAAI,KAAK,KAAK,gBAAgB,CAAC;AAAA,IAC/F,oBAAoB,KAAK,kBAAkB,KAAK,OAAO,SAAY,KAAK,kBAAkB;AAAA,IAC1F,cAAc,KAAK,YAAY,KAAK,OAAO,SAAY,KAAK,YAAY;AAAA,IACxE,uBAAuB,KAAK,qBAAqB,KAAK,OAAO,SAAY,KAAK,qBAAqB;AAAA,IACnG,oBAAoB,KAAK,kBAAkB,KAAK,OAAO,SAAY,KAAK,kBAAkB;AAAA,IAC1F,4BAA4B,KAAK,0BAA0B,KAAK,OAAO,SAAY,KAAK,0BAA0B;AAAA,IAClH,kCAAkC,KAAK,gCAAgC,KAAK,OAAO,SAAY,KAAK,gCAAgC;AAAA,IACpI,wBAAwB,KAAK,sBAAsB,KAAK,OAAO,SAAY,KAAK,sBAAsB;AAAA,EAC1G;AACJ;;;ACwEO,SAAS,uBAAuB,MAA2B;AAC9D,SAAO,4BAA4B,MAAM,KAAK;AAClD;AAEO,SAAS,4BAA4B,MAAW,qBAA8C;AACjG,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,SAAS,KAAK,OAAO;AAAA,IACrB,eAAe,KAAK,aAAa;AAAA,IACjC,kBAAkB,KAAK,gBAAgB;AAAA,IACvC,uBAAuB,KAAK,qBAAqB;AAAA,IACjD,wBAAwB,KAAK,sBAAsB;AAAA,IACnD,aAAa,KAAK,WAAW;AAAA,IAC7B,eAAe,KAAK,aAAa;AAAA,IACjC,iBAAiB,KAAK,eAAe;AAAA,IACrC,gBAAgB,KAAK,cAAc;AAAA,IACnC,eAAe,KAAK,aAAa;AAAA,IACjC,qBAAqB,KAAK,mBAAmB;AAAA,IAC7C,qBAAqB,KAAK,mBAAmB;AAAA,IAC7C,YAAY,KAAK,UAAU;AAAA,IAC3B,eAAe,KAAK,aAAa;AAAA,IACjC,mBAAmB,KAAK,iBAAiB;AAAA,IACzC,oBAAoB,KAAK,kBAAkB;AAAA,IAC3C,QAAQ,KAAK,MAAM;AAAA,IACnB,iBAAiB,KAAK,eAAe;AAAA,IACrC,mBAAmB,KAAK,iBAAiB;AAAA,IACzC,qBAAqB,KAAK,mBAAmB;AAAA,IAC7C,oBAAoB,KAAK,kBAAkB;AAAA,IAC3C,uBAAuB,KAAK,qBAAqB;AAAA,IACjD,mBAAmB,KAAK,iBAAiB;AAAA,IACzC,wBAAwB,KAAK,sBAAsB;AAAA,IACnD,UAAU,KAAK,QAAQ;AAAA,EAC3B;AACJ;;;ACtKO,SAAS,kBAAkB,MAAsB;AACpD,SAAO,uBAAuB,MAAM,KAAK;AAC7C;AAEO,SAAS,uBAAuB,MAAW,qBAAyC;AACvF,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,WAAW,KAAK,SAAS,KAAK,OAAO,SAAY,KAAK,SAAS;AAAA,IAC/D,WAAW,KAAK,SAAS,KAAK,OAAO,SAAY,KAAK,SAAS;AAAA,IAC/D,eAAe,KAAK,aAAa,KAAK,OAAO,SAAY,KAAK,aAAa;AAAA,IAC3E,aAAa,KAAK,WAAW,KAAK,OAAO,SAAY,KAAK,WAAW;AAAA,IACrE,SAAS,KAAK,OAAO,KAAK,OAAO,SAAY,KAAK,OAAO;AAAA,IACzD,QAAU,KAAK,MAAM,EAAiB,IAAI,sBAAsB;AAAA,EACpE;AACJ;;;AC/CO,SAAS,kCAAkC,MAAsC;AACpF,SAAO,uCAAuC,MAAM,KAAK;AAC7D;AAEO,SAAS,uCAAuC,MAAW,qBAAyD;AACvH,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,UAAY,KAAK,QAAQ,EAAiB,IAAI,mBAAmB;AAAA,EACrE;AACJ;;;ACgEO,SAAS,gCAAgC,MAAoC;AAChF,SAAO,qCAAqC,MAAM,KAAK;AAC3D;AAEO,SAAS,qCAAqC,MAAW,qBAAuD;AACnH,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,aAAa,KAAK,WAAW;AAAA,IAC7B,SAAS,KAAK,OAAO;AAAA,IACrB,WAAW,KAAK,SAAS;AAAA,IACzB,WAAW,KAAK,SAAS;AAAA,IACzB,qBAAqB,KAAK,mBAAmB;AAAA,IAC7C,QAAQ,KAAK,MAAM;AAAA,IACnB,MAAM,KAAK,IAAI;AAAA,IACf,OAAO,KAAK,KAAK;AAAA,IACjB,aAAa,KAAK,WAAW;AAAA,IAC7B,eAAe,KAAK,aAAa;AAAA,IACjC,aAAa,KAAK,WAAW;AAAA,IAC7B,iBAAiB,KAAK,eAAe;AAAA,IACrC,cAAc,KAAK,YAAY;AAAA,EACnC;AACJ;;;ACpGO,SAAS,0CAA0C,MAA8C;AACpG,SAAO,+CAA+C,MAAM,KAAK;AACrE;AAEO,SAAS,+CAA+C,MAAW,qBAAiE;AACvI,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,UAAU,6BAA6B,KAAK,QAAQ,CAAC;AAAA,EACzD;AACJ;;;ACLO,SAAS,kDAAkD,MAAsD;AACpH,SAAO,uDAAuD,MAAM,KAAK;AAC7E;AAEO,SAAS,uDAAuD,MAAW,qBAAyE;AACvJ,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,SAAS,KAAK,OAAO;AAAA,IACrB,6BAA+B,KAAK,2BAA2B,EAAiB,IAAI,gCAAgC;AAAA,EACxH;AACJ;;;ACyCO,SAAS,0BAA0B,MAAgC;AACtE,SAAO,+BAA+B,MAAM,KAAK;AACrD;AAEO,SAAS,+BAA+B,OAAoC,sBAA+B,OAAY;AAC1H,MAAI,SAAS,MAAM;AACf,WAAO;AAAA,EACX;AAEA,SAAO;AAAA,IAEH,cAAc,MAAM,YAAY;AAAA,IAChC,YAAY,MAAM,UAAU;AAAA,IAC5B,eAAe,MAAM,aAAa;AAAA,IAClC,YAAY,MAAM,UAAU;AAAA,IAC5B,eAAe,MAAM,aAAa;AAAA,IAClC,YAAY,MAAM,UAAU;AAAA,IAC5B,aAAa,MAAM,WAAW;AAAA,IAC9B,OAAO,MAAM,KAAK;AAAA,IAClB,UAAU,MAAM,QAAQ;AAAA,EAC5B;AACJ;;;AC8EO,SAAS,+BAA+B,MAAmC;AAC9E,SAAO,oCAAoC,MAAM,KAAK;AAC1D;AAEO,SAAS,oCAAoC,MAAW,qBAAsD;AACjH,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,gBAAgB,KAAK,cAAc;AAAA,IACnC,UAAU,KAAK,QAAQ;AAAA,IACvB,cAAc,KAAK,YAAY;AAAA,IAC/B,QAAQ,KAAK,MAAM;AAAA,IACnB,UAAU,KAAK,QAAQ;AAAA,IACvB,YAAY,KAAK,UAAU;AAAA,IAC3B,cAAc,KAAK,YAAY;AAAA,IAC/B,cAAc,KAAK,YAAY;AAAA,IAC/B,4BAA4B,KAAK,0BAA0B;AAAA,IAC3D,yBAAyB,KAAK,uBAAuB;AAAA,IACrD,yBAAyB,KAAK,uBAAuB;AAAA,IACrD,YAAY,KAAK,UAAU;AAAA,IAC3B,aAAa,KAAK,WAAW;AAAA,IAC7B,QAAQ,KAAK,MAAM;AAAA,IACnB,aAAa,KAAK,WAAW;AAAA,IAC7B,kBAAkB,KAAK,gBAAgB;AAAA,IACvC,SAAS,KAAK,OAAO;AAAA,IACrB,cAAc,KAAK,YAAY;AAAA,IAC/B,mBAAmB,KAAK,iBAAiB;AAAA,IACzC,wBAAwB,KAAK,sBAAsB;AAAA,IACnD,yBAAyB,KAAK,uBAAuB;AAAA,IACrD,uBAAuB,KAAK,qBAAqB;AAAA,IACjD,uBAAuB,KAAK,qBAAqB;AAAA,IACjD,4BAA4B,KAAK,0BAA0B;AAAA,IAC3D,4BAA4B,KAAK,0BAA0B;AAAA,EAC/D;AACJ;;;ACtLO,SAAS,0BAA0B,MAA8B;AACpE,SAAO,+BAA+B,MAAM,KAAK;AACrD;AAEO,SAAS,+BAA+B,MAAW,qBAAiD;AACvG,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,sBAAsB,KAAK,oBAAoB;AAAA,IAC/C,oBAAoB,KAAK,kBAAkB;AAAA,IAC3C,YAAc,KAAK,UAAU,EAAiB,IAAI,8BAA8B;AAAA,EACpF;AACJ;;;ACsHO,SAAS,qBAAqB,MAAyB;AAC1D,SAAO,0BAA0B,MAAM,KAAK;AAChD;AAEO,SAAS,0BAA0B,MAAW,qBAA4C;AAC7F,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,MAAM,KAAK,IAAI;AAAA,IACf,SAAS,KAAK,OAAO;AAAA,IACrB,iBAAiB,KAAK,eAAe;AAAA,IACrC,gBAAgB,KAAK,cAAc;AAAA,IACnC,mBAAmB,KAAK,iBAAiB;AAAA,IACzC,YAAY,KAAK,UAAU;AAAA,IAC3B,aAAa,KAAK,WAAW;AAAA,IAC7B,YAAY,KAAK,UAAU;AAAA,IAC3B,WAAW,KAAK,SAAS;AAAA,IACzB,aAAa,KAAK,WAAW;AAAA,IAC7B,kBAAkB,KAAK,gBAAgB;AAAA,IACvC,QAAQ,KAAK,MAAM;AAAA,IACnB,cAAc,KAAK,YAAY;AAAA,IAC/B,mBAAmB,KAAK,iBAAiB;AAAA,IACzC,SAAS,KAAK,OAAO;AAAA,IACrB,wBAAwB,KAAK,sBAAsB;AAAA,IACnD,yBAAyB,KAAK,uBAAuB;AAAA,IACrD,yBAAyB,KAAK,uBAAuB;AAAA,IACrD,yBAAyB,KAAK,uBAAuB;AAAA,IACrD,uBAAuB,KAAK,qBAAqB;AAAA,IACjD,uBAAuB,KAAK,qBAAqB;AAAA,IACjD,4BAA4B,KAAK,0BAA0B;AAAA,IAC3D,4BAA4B,KAAK,0BAA0B;AAAA,EAC/D;AACJ;;;AC7KO,SAAS,oDAAoD,MAAwD;AACxH,SAAO,yDAAyD,MAAM,KAAK;AAC/E;AAEO,SAAS,yDAAyD,MAAW,qBAA2E;AAC3J,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,8BAAgC,KAAK,4BAA4B,EAAiB,IAAI,wCAAwC;AAAA,IAC9H,mBAAmB,KAAK,iBAAiB;AAAA,EAC7C;AACJ;;;ACmCO,SAAS,kCAAkC,MAAsC;AACpF,SAAO,uCAAuC,MAAM,KAAK;AAC7D;AAEO,SAAS,uCAAuC,MAAW,qBAAyD;AACvH,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,SAAS,KAAK,OAAO;AAAA,IACrB,WAAW,KAAK,SAAS;AAAA,IACzB,WAAW,KAAK,SAAS;AAAA,IACzB,WAAW,KAAK,SAAS;AAAA,IACzB,QAAQ,KAAK,MAAM;AAAA,IACnB,qBAAqB,KAAK,mBAAmB;AAAA,IAC7C,eAAe,KAAK,aAAa;AAAA,IACjC,cAAc,KAAK,YAAY;AAAA,IAC/B,aAAa,KAAK,WAAW;AAAA,IAC7B,aAAa,KAAK,WAAW;AAAA,EACjC;AACJ;;;AC5EO,SAAS,6CAA6C,MAAiD;AAC1G,SAAO,kDAAkD,MAAM,KAAK;AACxE;AAEO,SAAS,kDAAkD,MAAW,qBAAoE;AAC7I,MAAI,QAAQ,MAAM;AACd,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IAEH,0BAA4B,KAAK,wBAAwB,EAAiB,IAAI,6BAA6B;AAAA,EAC/G;AACJ;;;ACpBO,IAAM,gBAAN,cAAoC,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,EAM/C,MAAM,kBAAkB,mBAA0C,eAAoH;AAClL,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAEhG,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,iCAAiC,SAAS,CAAC;AAAA,EAC3G;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,eAAe,mBAA0C,eAA+F;AAC1J,UAAM,WAAW,MAAM,KAAK,kBAAkB,mBAAmB,aAAa;AAC9E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,2BAA2B,eAAgH;AAC7I,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AAEd,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,UAAU,IAAI,qBAAqB,CAAC;AAAA,EACpG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,wBAAwB,eAA2F;AACrH,UAAM,WAAW,MAAM,KAAK,2BAA2B,aAAa;AACpE,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAEJ;;;ACjFO,IAAM,wBAAN,cAA4C,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMvD,MAAM,uBAAuB,mBAA+C,eAAoH;AAC5L,QAAI,kBAAkB,0BAA0B,KAAK,MAAM;AACvD,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,qBAAiB,cAAc,IAAI;AAEnC,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AAEd,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM,+BAA+B,kBAAkB,0BAA0B,CAAC;AAAA,IACtF,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,iCAAiC,SAAS,CAAC;AAAA,EAC3G;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,oBAAoB,mBAA+C,eAA+F;AACpK,UAAM,WAAW,MAAM,KAAK,uBAAuB,mBAAmB,aAAa;AACnF,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,6BAA6B,mBAAqD,eAAgI;AACpN,QAAI,kBAAkB,gCAAgC,KAAK,MAAM;AAC7D,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,qBAAiB,cAAc,IAAI;AAEnC,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AAEd,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM,qCAAqC,kBAAkB,gCAAgC,CAAC;AAAA,IAClG,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,6CAA6C,SAAS,CAAC;AAAA,EACvH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,0BAA0B,mBAAqD,eAA2G;AAC5L,UAAM,WAAW,MAAM,KAAK,6BAA6B,mBAAmB,aAAa;AACzF,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAEJ;;;AC9GO,IAAM,uBAAN,cAA2C,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMtD,MAAM,sBAAsB,mBAA8C,eAAgH;AACtL,QAAI,kBAAkB,sBAAsB,KAAK,MAAM;AACnD,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,qBAAiB,cAAc,IAAI;AAEnC,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AAEd,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM,2BAA2B,kBAAkB,sBAAsB,CAAC;AAAA,IAC9E,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,6BAA6B,SAAS,CAAC;AAAA,EACvG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,mBAAmB,mBAA8C,eAA2F;AAC9J,UAAM,WAAW,MAAM,KAAK,sBAAsB,mBAAmB,aAAa;AAClF,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAEJ;;;ACHO,IAAM,SAAN,cAA6B,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMxC,MAAM,eAAe,mBAAuC,eAA4G;AACpK,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,kBAAkB,KAAK,MAAM;AAC/C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,qBAAiB,cAAc,IAAI;AAEnC,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAEhG,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM,uBAAuB,kBAAkB,kBAAkB,CAAC;AAAA,IACtE,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,yBAAyB,SAAS,CAAC;AAAA,EACnG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,YAAY,mBAAuC,eAAuF;AAC5I,UAAM,WAAW,MAAM,KAAK,eAAe,mBAAmB,aAAa;AAC3E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,WAAW,mBAAmC,eAAmG;AACnJ,UAAM,kBAAuB,CAAC;AAE9B,QAAI,kBAAkB,QAAQ,KAAK,MAAM;AACrC,sBAAgB,QAAQ,IAAI,kBAAkB,QAAQ;AAAA,IAC1D;AAEA,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,sBAAgB,OAAO,IAAI,kBAAkB,OAAO;AAAA,IACxD;AAEA,QAAI,kBAAkB,YAAY,KAAK,MAAM;AACzC,sBAAgB,YAAY,IAAI,kBAAkB,YAAY;AAAA,IAClE;AAEA,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AAEd,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,gBAAgB,SAAS,CAAC;AAAA,EAC1F;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,QAAQ,oBAAoC,CAAC,GAAG,eAA8E;AAChI,UAAM,WAAW,MAAM,KAAK,WAAW,mBAAmB,aAAa;AACvE,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,SAAS,mBAAiC,eAAyG;AACrJ,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,KAAK,KAAK,MAAM;AAClC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,QAAQ,KAAK,MAAM;AACrC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,WAAW,KAAK,MAAM;AACxC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,YAAY,KAAK,MAAM;AACzC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,SAAS,KAAK,MAAM;AACtC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,UAAU,KAAK,MAAM;AACvC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,QAAI,kBAAkB,KAAK,KAAK,MAAM;AAClC,sBAAgB,KAAK,IAAI,kBAAkB,KAAK;AAAA,IACpD;AAEA,QAAI,kBAAkB,QAAQ,KAAK,MAAM;AACrC,sBAAgB,QAAQ,IAAI,kBAAkB,QAAQ;AAAA,IAC1D;AAEA,QAAI,kBAAkB,WAAW,KAAK,MAAM;AACxC,sBAAgB,WAAW,IAAI,kBAAkB,WAAW;AAAA,IAChE;AAEA,QAAI,kBAAkB,YAAY,KAAK,MAAM;AACzC,sBAAgB,YAAY,IAAI,kBAAkB,YAAY;AAAA,IAClE;AAEA,QAAI,kBAAkB,SAAS,KAAK,MAAM;AACtC,sBAAgB,SAAS,IAAI,kBAAkB,SAAS;AAAA,IAC5D;AAEA,QAAI,kBAAkB,UAAU,KAAK,MAAM;AACvC,sBAAgB,UAAU,IAAI,kBAAkB,UAAU;AAAA,IAC9D;AAEA,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAEhG,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,sBAAsB,SAAS,CAAC;AAAA,EAChG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,MAAM,mBAAiC,eAAoF;AAC7H,UAAM,WAAW,MAAM,KAAK,SAAS,mBAAmB,aAAa;AACrE,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,SAAS,mBAAiC,eAA6G;AACzJ,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,gBAAgB,KAAK,MAAM;AAC7C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,qBAAiB,cAAc,IAAI;AAEnC,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAEhG,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM,qBAAqB,kBAAkB,gBAAgB,CAAC;AAAA,IAClE,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,0BAA0B,SAAS,CAAC;AAAA,EACpG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,MAAM,mBAAiC,eAAwF;AACjI,UAAM,WAAW,MAAM,KAAK,SAAS,mBAAmB,aAAa;AACrE,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,QAAQ,mBAAgC,eAAqG;AAC/I,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,WAAW,KAAK,MAAM;AACxC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,qBAAiB,cAAc,IAAI;AAEnC,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAEhG,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM,gBAAgB,kBAAkB,WAAW,CAAC;AAAA,IACxD,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,kBAAkB,SAAS,CAAC;AAAA,EAC5F;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,KAAK,mBAAgC,eAAgF;AACvH,UAAM,WAAW,MAAM,KAAK,QAAQ,mBAAmB,aAAa;AACpE,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAEJ;;;AChYO,IAAM,aAAN,cAAiC,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,EAM5C,MAAM,cAAc,mBAAsC,eAAsG;AAC5J,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,aAAa,KAAK,MAAM;AAC1C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAChG,cAAU,QAAQ,QAAQ,IAAI,aAAa,KAAK,mBAAmB,OAAO,kBAAkB,aAAa,CAAC,CAAC,CAAC;AAE5G,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,mBAAmB,SAAS,CAAC;AAAA,EAC7F;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,WAAW,mBAAsC,eAAiF;AACpI,UAAM,WAAW,MAAM,KAAK,cAAc,mBAAmB,aAAa;AAC1E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAEJ;;;ACpBO,IAAM,cAAN,cAAkC,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,EAM7C,MAAM,kBAAkB,mBAA0C,eAA4G;AAC1K,QAAI,kBAAkB,qBAAqB,KAAK,MAAM;AAClD,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,qBAAiB,cAAc,IAAI;AAEnC,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AAEd,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM,0BAA0B,kBAAkB,qBAAqB,CAAC;AAAA,IAC5E,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,yBAAyB,SAAS,CAAC;AAAA,EACnG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,eAAe,mBAA0C,eAAuF;AAClJ,UAAM,WAAW,MAAM,KAAK,kBAAkB,mBAAmB,aAAa;AAC9E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,kBAAkB,mBAA0C,eAAqH;AACnL,QAAI,kBAAkB,IAAI,KAAK,MAAM;AACjC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,IAAI,KAAK,mBAAmB,OAAO,kBAAkB,IAAI,CAAC,CAAC,CAAC;AAE1F,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,kCAAkC,SAAS,CAAC;AAAA,EAC5G;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,eAAe,mBAA0C,eAAgG;AAC3J,UAAM,WAAW,MAAM,KAAK,kBAAkB,mBAAmB,aAAa;AAC9E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,eAAe,mBAAuC,eAA4G;AACpK,QAAI,kBAAkB,IAAI,KAAK,MAAM;AACjC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,IAAI,KAAK,mBAAmB,OAAO,kBAAkB,IAAI,CAAC,CAAC,CAAC;AAE1F,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,yBAAyB,SAAS,CAAC;AAAA,EACnG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,YAAY,mBAAuC,eAAuF;AAC5I,UAAM,WAAW,MAAM,KAAK,eAAe,mBAAmB,aAAa;AAC3E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,qBAAqB,mBAA6C,eAAkH;AACtL,QAAI,kBAAkB,IAAI,KAAK,MAAM;AACjC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,IAAI,KAAK,mBAAmB,OAAO,kBAAkB,IAAI,CAAC,CAAC,CAAC;AAE1F,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,+BAA+B,SAAS,CAAC;AAAA,EACzG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,kBAAkB,mBAA6C,eAA6F;AAC9J,UAAM,WAAW,MAAM,KAAK,qBAAqB,mBAAmB,aAAa;AACjF,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,iBAAiB,mBAAyC,eAAgH;AAC5K,UAAM,kBAAuB,CAAC;AAE9B,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,sBAAgB,OAAO,IAAI,kBAAkB,OAAO;AAAA,IACxD;AAEA,QAAI,kBAAkB,UAAU,KAAK,MAAM;AACvC,sBAAgB,UAAU,IAAI,kBAAkB,UAAU;AAAA,IAC9D;AAEA,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,sBAAgB,OAAO,IAAI,kBAAkB,OAAO;AAAA,IACxD;AAEA,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AAEd,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,6BAA6B,SAAS,CAAC;AAAA,EACvG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,cAAc,oBAA0C,CAAC,GAAG,eAA2F;AACzJ,UAAM,WAAW,MAAM,KAAK,iBAAiB,mBAAmB,aAAa;AAC7E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,wBAAwB,mBAAgD,eAAqH;AAC/L,QAAI,kBAAkB,IAAI,KAAK,MAAM;AACjC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,IAAI,KAAK,mBAAmB,OAAO,kBAAkB,IAAI,CAAC,CAAC,CAAC;AAE1F,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,kCAAkC,SAAS,CAAC;AAAA,EAC5G;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,qBAAqB,mBAAgD,eAAgG;AACvK,UAAM,WAAW,MAAM,KAAK,wBAAwB,mBAAmB,aAAa;AACpF,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,kBAAkB,mBAA0C,eAA4G;AAC1K,QAAI,kBAAkB,qBAAqB,KAAK,MAAM;AAClD,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,qBAAiB,cAAc,IAAI;AAEnC,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AAEd,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM,0BAA0B,kBAAkB,qBAAqB,CAAC;AAAA,IAC5E,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,yBAAyB,SAAS,CAAC;AAAA,EACnG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,eAAe,mBAA0C,eAAuF;AAClJ,UAAM,WAAW,MAAM,KAAK,kBAAkB,mBAAmB,aAAa;AAC9E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAEJ;;;ACvYO,IAAM,UAAN,cAA8B,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMzC,MAAM,WAAW,eAAkG;AAC/G,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AAEd,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,QAAI,KAAK,WAAW,SAAS,QAAQ,IAAI,cAAc,CAAC,GAAG;AACvD,aAAO,IAAY,gBAAwB,QAAQ;AAAA,IACvD,OAAO;AACH,aAAO,IAAY,gBAAgB,QAAQ;AAAA,IAC/C;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,QAAQ,eAA6E;AACvF,UAAM,WAAW,MAAM,KAAK,WAAW,aAAa;AACpD,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAEJ;;;AC3BO,IAAM,UAAN,cAA8B,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMzC,MAAM,OAAO,mBAA+B,eAAkG;AAC1I,QAAI,kBAAkB,IAAI,KAAK,MAAM;AACjC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,IAAI,KAAK,mBAAmB,OAAO,kBAAkB,IAAI,CAAC,CAAC,CAAC;AAE1F,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,eAAe,SAAS,CAAC;AAAA,EACzF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,IAAI,mBAA+B,eAA6E;AAClH,UAAM,WAAW,MAAM,KAAK,OAAO,mBAAmB,aAAa;AACnE,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,aAAa,mBAAqC,eAA2G;AAC/J,QAAI,kBAAkB,IAAI,KAAK,MAAM;AACjC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,IAAI,KAAK,mBAAmB,OAAO,kBAAkB,IAAI,CAAC,CAAC,CAAC;AAE1F,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,wBAAwB,SAAS,CAAC;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,UAAU,mBAAqC,eAAsF;AACvI,UAAM,WAAW,MAAM,KAAK,aAAa,mBAAmB,aAAa;AACzE,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAEJ;;;AClBO,IAAM,SAAN,cAA6B,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMxC,MAAM,kBAAkB,mBAA0C,eAAkH;AAChL,QAAI,kBAAkB,SAAS,KAAK,MAAM;AACtC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,SAAS,KAAK,mBAAmB,OAAO,kBAAkB,SAAS,CAAC,CAAC,CAAC;AAEpG,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,+BAA+B,SAAS,CAAC;AAAA,EACzG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,eAAe,mBAA0C,eAA6F;AACxJ,UAAM,WAAW,MAAM,KAAK,kBAAkB,mBAAmB,aAAa;AAC9E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,qBAAqB,mBAA6C,eAAqH;AACzL,QAAI,kBAAkB,YAAY,KAAK,MAAM;AACzC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,YAAY,KAAK,mBAAmB,OAAO,kBAAkB,YAAY,CAAC,CAAC,CAAC;AAE1G,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,kCAAkC,SAAS,CAAC;AAAA,EAC5G;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,kBAAkB,mBAA6C,eAAgG;AACjK,UAAM,WAAW,MAAM,KAAK,qBAAqB,mBAAmB,aAAa;AACjF,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,6BAA6B,mBAAqD,eAA6H;AACjN,QAAI,kBAAkB,YAAY,KAAK,MAAM;AACzC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,YAAY,KAAK,mBAAmB,OAAO,kBAAkB,YAAY,CAAC,CAAC,CAAC;AAE1G,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,0CAA0C,SAAS,CAAC;AAAA,EACpH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,0BAA0B,mBAAqD,eAAwG;AACzL,UAAM,WAAW,MAAM,KAAK,6BAA6B,mBAAmB,aAAa;AACzF,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,qCAAqC,mBAA6D,eAAqI;AACzO,QAAI,kBAAkB,YAAY,KAAK,MAAM;AACzC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,YAAY,KAAK,mBAAmB,OAAO,kBAAkB,YAAY,CAAC,CAAC,CAAC;AAE1G,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,kDAAkD,SAAS,CAAC;AAAA,EAC5H;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,kCAAkC,mBAA6D,eAAgH;AACjN,UAAM,WAAW,MAAM,KAAK,qCAAqC,mBAAmB,aAAa;AACjG,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,sBAAsB,mBAA8C,eAAmH;AACzL,QAAI,kBAAkB,YAAY,KAAK,MAAM;AACzC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,YAAY,KAAK,mBAAmB,OAAO,kBAAkB,YAAY,CAAC,CAAC,CAAC;AAE1G,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,gCAAgC,SAAS,CAAC;AAAA,EAC1G;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,mBAAmB,mBAA8C,eAA8F;AACjK,UAAM,WAAW,MAAM,KAAK,sBAAsB,mBAAmB,aAAa;AAClF,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,uCAAuC,mBAA+D,eAAuI;AAC/O,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,cAAc,KAAK,mBAAmB,OAAO,kBAAkB,cAAc,CAAC,CAAC,CAAC;AAE9G,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,oDAAoD,SAAS,CAAC;AAAA,EAC9H;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,oCAAoC,mBAA+D,eAAkH;AACvN,UAAM,WAAW,MAAM,KAAK,uCAAuC,mBAAmB,aAAa;AACnG,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,uBAAuB,mBAA+C,eAAqH;AAC7L,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,cAAc,KAAK,mBAAmB,OAAO,kBAAkB,cAAc,CAAC,CAAC,CAAC;AAE9G,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,kCAAkC,SAAS,CAAC;AAAA,EAC5G;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,oBAAoB,mBAA+C,eAAgG;AACrK,UAAM,WAAW,MAAM,KAAK,uBAAuB,mBAAmB,aAAa;AACnF,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,+BAA+B,mBAAuD,eAA6H;AACrN,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,cAAc,KAAK,mBAAmB,OAAO,kBAAkB,cAAc,CAAC,CAAC,CAAC;AAE9G,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,0CAA0C,SAAS,CAAC;AAAA,EACpH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,4BAA4B,mBAAuD,eAAwG;AAC7L,UAAM,WAAW,MAAM,KAAK,+BAA+B,mBAAmB,aAAa;AAC3F,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,gCAAgC,mBAAwD,eAAgI;AAC1N,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,cAAc,KAAK,mBAAmB,OAAO,kBAAkB,cAAc,CAAC,CAAC,CAAC;AAE9G,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,6CAA6C,SAAS,CAAC;AAAA,EACvH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,6BAA6B,mBAAwD,eAA2G;AAClM,UAAM,WAAW,MAAM,KAAK,gCAAgC,mBAAmB,aAAa;AAC5F,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,uCAAuC,mBAA+D,eAAqI;AAC7O,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,cAAc,KAAK,mBAAmB,OAAO,kBAAkB,cAAc,CAAC,CAAC,CAAC;AAE9G,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,kDAAkD,SAAS,CAAC;AAAA,EAC5H;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,oCAAoC,mBAA+D,eAAgH;AACrN,UAAM,WAAW,MAAM,KAAK,uCAAuC,mBAAmB,aAAa;AACnG,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,wBAAwB,mBAAgD,eAAqH;AAC/L,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,cAAc,KAAK,mBAAmB,OAAO,kBAAkB,cAAc,CAAC,CAAC,CAAC;AAE9G,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,kCAAkC,SAAS,CAAC;AAAA,EAC5G;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,qBAAqB,mBAAgD,eAAgG;AACvK,UAAM,WAAW,MAAM,KAAK,wBAAwB,mBAAmB,aAAa;AACpF,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,mBAAmB,mBAAoD,eAAsH;AAC/L,QAAI,kBAAkB,wBAAwB,KAAK,MAAM;AACrD,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,qBAAiB,cAAc,IAAI;AAEnC,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AAEd,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM,6BAA6B,kBAAkB,wBAAwB,CAAC;AAAA,IAClF,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,mCAAmC,SAAS,CAAC;AAAA,EAC7G;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,gBAAgB,mBAAoD,eAAiG;AACvK,UAAM,WAAW,MAAM,KAAK,mBAAmB,mBAAmB,aAAa;AAC/E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,oBAAoB,mBAA4C,eAAmH;AACrL,QAAI,kBAAkB,4BAA4B,KAAK,MAAM;AACzD,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,qBAAiB,cAAc,IAAI;AAEnC,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AAEd,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM,iCAAiC,kBAAkB,4BAA4B,CAAC;AAAA,IAC1F,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,gCAAgC,SAAS,CAAC;AAAA,EAC1G;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,iBAAiB,mBAA4C,eAA8F;AAC7J,UAAM,WAAW,MAAM,KAAK,oBAAoB,mBAAmB,aAAa;AAChF,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,sBAAsB,mBAA8C,eAAqH;AAC3L,QAAI,kBAAkB,8BAA8B,KAAK,MAAM;AAC3D,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,qBAAiB,cAAc,IAAI;AAEnC,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AAEd,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM,mCAAmC,kBAAkB,8BAA8B,CAAC;AAAA,IAC9F,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,kCAAkC,SAAS,CAAC;AAAA,EAC5G;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,mBAAmB,mBAA8C,eAAgG;AACnK,UAAM,WAAW,MAAM,KAAK,sBAAsB,mBAAmB,aAAa;AAClF,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAEJ;;;AChrBO,IAAM,aAAN,cAAiC,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,EAM5C,MAAM,yBAAyB,mBAAiD,eAAwG;AACpL,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,QAAI,kBAAkB,QAAQ,KAAK,MAAM;AACrC,sBAAgB,QAAQ,IAAI,kBAAkB,QAAQ;AAAA,IAC1D;AAEA,QAAI,kBAAkB,eAAe,KAAK,MAAM;AAC5C,sBAAgB,eAAe,IAAI,kBAAkB,eAAe;AAAA,IACxE;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,sBAAgB,cAAc,IAAI,kBAAkB,cAAc;AAAA,IACtE;AAEA,QAAI,kBAAkB,KAAK,KAAK,MAAM;AAClC,sBAAgB,KAAK,IAAI,kBAAkB,KAAK;AAAA,IACpD;AAEA,QAAI,kBAAkB,SAAS,KAAK,MAAM;AACtC,sBAAgB,SAAS,IAAI,kBAAkB,SAAS;AAAA,IAC5D;AAEA,QAAI,kBAAkB,mBAAmB,KAAK,MAAM;AAChD,sBAAgB,mBAAmB,IAAI,kBAAkB,mBAAmB;AAAA,IAChF;AAEA,QAAI,kBAAkB,gBAAgB,KAAK,MAAM;AAC7C,sBAAgB,gBAAgB,IAAI,kBAAkB,gBAAgB;AAAA,IAC1E;AAEA,QAAI,kBAAkB,iBAAiB,KAAK,MAAM;AAC9C,sBAAgB,iBAAiB,IAAI,kBAAkB,iBAAiB;AAAA,IAC5E;AAEA,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAEhG,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,UAAU,IAAI,aAAa,CAAC;AAAA,EAC5F;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,sBAAsB,mBAAiD,eAAmF;AAC5J,UAAM,WAAW,MAAM,KAAK,yBAAyB,mBAAmB,aAAa;AACrF,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,gBAAgB,mBAAwC,eAAwG;AAClK,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,UAAU,KAAK,MAAM;AACvC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,QAAI,kBAAkB,QAAQ,KAAK,MAAM;AACrC,sBAAgB,QAAQ,IAAI,kBAAkB,QAAQ;AAAA,IAC1D;AAEA,QAAI,kBAAkB,eAAe,KAAK,MAAM;AAC5C,sBAAgB,eAAe,IAAI,kBAAkB,eAAe;AAAA,IACxE;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,sBAAgB,cAAc,IAAI,kBAAkB,cAAc;AAAA,IACtE;AAEA,QAAI,kBAAkB,KAAK,KAAK,MAAM;AAClC,sBAAgB,KAAK,IAAI,kBAAkB,KAAK;AAAA,IACpD;AAEA,QAAI,kBAAkB,SAAS,KAAK,MAAM;AACtC,sBAAgB,SAAS,IAAI,kBAAkB,SAAS;AAAA,IAC5D;AAEA,QAAI,kBAAkB,mBAAmB,KAAK,MAAM;AAChD,sBAAgB,mBAAmB,IAAI,kBAAkB,mBAAmB;AAAA,IAChF;AAEA,QAAI,kBAAkB,gBAAgB,KAAK,MAAM;AAC7C,sBAAgB,gBAAgB,IAAI,kBAAkB,gBAAgB;AAAA,IAC1E;AAEA,QAAI,kBAAkB,iBAAiB,KAAK,MAAM;AAC9C,sBAAgB,iBAAiB,IAAI,kBAAkB,iBAAiB;AAAA,IAC5E;AAEA,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAChG,cAAU,QAAQ,QAAQ,IAAI,UAAU,KAAK,mBAAmB,OAAO,kBAAkB,UAAU,CAAC,CAAC,CAAC;AAEtG,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,UAAU,IAAI,aAAa,CAAC;AAAA,EAC5F;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,aAAa,mBAAwC,eAAmF;AAC1I,UAAM,WAAW,MAAM,KAAK,gBAAgB,mBAAmB,aAAa;AAC5E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,qBAAqB,mBAA6C,eAAwG;AAC5K,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,QAAI,kBAAkB,QAAQ,KAAK,MAAM;AACrC,sBAAgB,QAAQ,IAAI,kBAAkB,QAAQ;AAAA,IAC1D;AAEA,QAAI,kBAAkB,eAAe,KAAK,MAAM;AAC5C,sBAAgB,eAAe,IAAI,kBAAkB,eAAe;AAAA,IACxE;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,sBAAgB,cAAc,IAAI,kBAAkB,cAAc;AAAA,IACtE;AAEA,QAAI,kBAAkB,KAAK,KAAK,MAAM;AAClC,sBAAgB,KAAK,IAAI,kBAAkB,KAAK;AAAA,IACpD;AAEA,QAAI,kBAAkB,SAAS,KAAK,MAAM;AACtC,sBAAgB,SAAS,IAAI,kBAAkB,SAAS;AAAA,IAC5D;AAEA,QAAI,kBAAkB,mBAAmB,KAAK,MAAM;AAChD,sBAAgB,mBAAmB,IAAI,kBAAkB,mBAAmB;AAAA,IAChF;AAEA,QAAI,kBAAkB,gBAAgB,KAAK,MAAM;AAC7C,sBAAgB,gBAAgB,IAAI,kBAAkB,gBAAgB;AAAA,IAC1E;AAEA,QAAI,kBAAkB,iBAAiB,KAAK,MAAM;AAC9C,sBAAgB,iBAAiB,IAAI,kBAAkB,iBAAiB;AAAA,IAC5E;AAEA,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAEhG,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,UAAU,IAAI,aAAa,CAAC;AAAA,EAC5F;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,kBAAkB,mBAA6C,eAAmF;AACpJ,UAAM,WAAW,MAAM,KAAK,qBAAqB,mBAAmB,aAAa;AACjF,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,gBAAgB,mBAAwC,eAAwG;AAClK,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,QAAI,kBAAkB,QAAQ,KAAK,MAAM;AACrC,sBAAgB,QAAQ,IAAI,kBAAkB,QAAQ;AAAA,IAC1D;AAEA,QAAI,kBAAkB,eAAe,KAAK,MAAM;AAC5C,sBAAgB,eAAe,IAAI,kBAAkB,eAAe;AAAA,IACxE;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,sBAAgB,cAAc,IAAI,kBAAkB,cAAc;AAAA,IACtE;AAEA,QAAI,kBAAkB,KAAK,KAAK,MAAM;AAClC,sBAAgB,KAAK,IAAI,kBAAkB,KAAK;AAAA,IACpD;AAEA,QAAI,kBAAkB,SAAS,KAAK,MAAM;AACtC,sBAAgB,SAAS,IAAI,kBAAkB,SAAS;AAAA,IAC5D;AAEA,QAAI,kBAAkB,mBAAmB,KAAK,MAAM;AAChD,sBAAgB,mBAAmB,IAAI,kBAAkB,mBAAmB;AAAA,IAChF;AAEA,QAAI,kBAAkB,gBAAgB,KAAK,MAAM;AAC7C,sBAAgB,gBAAgB,IAAI,kBAAkB,gBAAgB;AAAA,IAC1E;AAEA,QAAI,kBAAkB,iBAAiB,KAAK,MAAM;AAC9C,sBAAgB,iBAAiB,IAAI,kBAAkB,iBAAiB;AAAA,IAC5E;AAEA,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAEhG,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,UAAU,IAAI,aAAa,CAAC;AAAA,EAC5F;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,aAAa,mBAAwC,eAAmF;AAC1I,UAAM,WAAW,MAAM,KAAK,gBAAgB,mBAAmB,aAAa;AAC5E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,mBAAmB,mBAA2C,eAAwG;AACxK,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,QAAI,kBAAkB,QAAQ,KAAK,MAAM;AACrC,sBAAgB,QAAQ,IAAI,kBAAkB,QAAQ;AAAA,IAC1D;AAEA,QAAI,kBAAkB,eAAe,KAAK,MAAM;AAC5C,sBAAgB,eAAe,IAAI,kBAAkB,eAAe;AAAA,IACxE;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,sBAAgB,cAAc,IAAI,kBAAkB,cAAc;AAAA,IACtE;AAEA,QAAI,kBAAkB,KAAK,KAAK,MAAM;AAClC,sBAAgB,KAAK,IAAI,kBAAkB,KAAK;AAAA,IACpD;AAEA,QAAI,kBAAkB,SAAS,KAAK,MAAM;AACtC,sBAAgB,SAAS,IAAI,kBAAkB,SAAS;AAAA,IAC5D;AAEA,QAAI,kBAAkB,mBAAmB,KAAK,MAAM;AAChD,sBAAgB,mBAAmB,IAAI,kBAAkB,mBAAmB;AAAA,IAChF;AAEA,QAAI,kBAAkB,gBAAgB,KAAK,MAAM;AAC7C,sBAAgB,gBAAgB,IAAI,kBAAkB,gBAAgB;AAAA,IAC1E;AAEA,QAAI,kBAAkB,iBAAiB,KAAK,MAAM;AAC9C,sBAAgB,iBAAiB,IAAI,kBAAkB,iBAAiB;AAAA,IAC5E;AAEA,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAEhG,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,UAAU,IAAI,aAAa,CAAC;AAAA,EAC5F;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,gBAAgB,mBAA2C,eAAmF;AAChJ,UAAM,WAAW,MAAM,KAAK,mBAAmB,mBAAmB,aAAa;AAC/E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAEJ;;;AC7YO,IAAM,eAAN,cAAmC,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,EAM9C,MAAM,kBAAkB,mBAA0C,eAA0G;AACxK,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,qBAAqB,KAAK,MAAM;AAClD,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,qBAAiB,cAAc,IAAI;AAEnC,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAEhG,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM,0BAA0B,kBAAkB,qBAAqB,CAAC;AAAA,IAC5E,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,uBAAuB,SAAS,CAAC;AAAA,EACjG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,eAAe,mBAA0C,eAAqF;AAChJ,UAAM,WAAW,MAAM,KAAK,kBAAkB,mBAAmB,aAAa;AAC9E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,mBAAmB,mBAA2C,eAAgH;AAChL,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,sBAAsB,KAAK,MAAM;AACnD,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,qBAAiB,cAAc,IAAI;AAEnC,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAEhG,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM,2BAA2B,kBAAkB,sBAAsB,CAAC;AAAA,IAC9E,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,6BAA6B,SAAS,CAAC;AAAA,EACvG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,gBAAgB,mBAA2C,eAA2F;AACxJ,UAAM,WAAW,MAAM,KAAK,mBAAmB,mBAAmB,aAAa;AAC/E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,aAAa,mBAAqC,eAA+G;AACnK,QAAI,kBAAkB,IAAI,KAAK,MAAM;AACjC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,QAAI,kBAAkB,QAAQ,KAAK,MAAM;AACrC,sBAAgB,QAAQ,IAAI,kBAAkB,QAAQ;AAAA,IAC1D;AAEA,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,sBAAgB,OAAO,IAAI,kBAAkB,OAAO;AAAA,IACxD;AAEA,QAAI,kBAAkB,WAAW,KAAK,MAAM;AACxC,sBAAgB,WAAW,IAAI,kBAAkB,WAAW;AAAA,IAChE;AAEA,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,IAAI,KAAK,mBAAmB,OAAO,kBAAkB,IAAI,CAAC,CAAC,CAAC;AAE1F,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,4BAA4B,SAAS,CAAC;AAAA,EACtG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,UAAU,mBAAqC,eAA0F;AAC3I,UAAM,WAAW,MAAM,KAAK,aAAa,mBAAmB,aAAa;AACzE,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,sBAAsB,mBAA8C,eAA+G;AACrL,QAAI,kBAAkB,SAAS,KAAK,MAAM;AACtC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,QAAI,kBAAkB,QAAQ,KAAK,MAAM;AACrC,sBAAgB,QAAQ,IAAI,kBAAkB,QAAQ;AAAA,IAC1D;AAEA,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,sBAAgB,OAAO,IAAI,kBAAkB,OAAO;AAAA,IACxD;AAEA,QAAI,kBAAkB,WAAW,KAAK,MAAM;AACxC,sBAAgB,WAAW,IAAI,kBAAkB,WAAW;AAAA,IAChE;AAEA,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,SAAS,KAAK,mBAAmB,OAAO,kBAAkB,SAAS,CAAC,CAAC,CAAC;AAEpG,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,4BAA4B,SAAS,CAAC;AAAA,EACtG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,mBAAmB,mBAA8C,eAA0F;AAC7J,UAAM,WAAW,MAAM,KAAK,sBAAsB,mBAAmB,aAAa;AAClF,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,gBAAgB,mBAAwC,eAAwG;AAClK,QAAI,kBAAkB,IAAI,KAAK,MAAM;AACjC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,IAAI,KAAK,mBAAmB,OAAO,kBAAkB,IAAI,CAAC,CAAC,CAAC;AAE1F,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,qBAAqB,SAAS,CAAC;AAAA,EAC/F;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,aAAa,mBAAwC,eAAmF;AAC1I,UAAM,WAAW,MAAM,KAAK,gBAAgB,mBAAmB,aAAa;AAC5E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,iBAAiB,mBAAyC,eAA0G;AACtK,UAAM,kBAAuB,CAAC;AAE9B,QAAI,kBAAkB,QAAQ,KAAK,MAAM;AACrC,sBAAgB,QAAQ,IAAI,kBAAkB,QAAQ;AAAA,IAC1D;AAEA,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,sBAAgB,OAAO,IAAI,kBAAkB,OAAO;AAAA,IACxD;AAEA,QAAI,kBAAkB,WAAW,KAAK,MAAM;AACxC,sBAAgB,WAAW,IAAI,kBAAkB,WAAW;AAAA,IAChE;AAEA,QAAI,kBAAkB,SAAS,KAAK,MAAM;AACtC,sBAAgB,SAAS,IAAI,kBAAkB,SAAS;AAAA,IAC5D;AAEA,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,sBAAgB,OAAO,IAAI,kBAAkB,OAAO;AAAA,IACxD;AAEA,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AAEd,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,uBAAuB,SAAS,CAAC;AAAA,EACjG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,cAAc,oBAA0C,CAAC,GAAG,eAAqF;AACnJ,UAAM,WAAW,MAAM,KAAK,iBAAiB,mBAAmB,aAAa;AAC7E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,0BAA0B,mBAAkD,eAA0G;AACxL,QAAI,kBAAkB,SAAS,KAAK,MAAM;AACtC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,QAAI,kBAAkB,QAAQ,KAAK,MAAM;AACrC,sBAAgB,QAAQ,IAAI,kBAAkB,QAAQ;AAAA,IAC1D;AAEA,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,sBAAgB,OAAO,IAAI,kBAAkB,OAAO;AAAA,IACxD;AAEA,QAAI,kBAAkB,WAAW,KAAK,MAAM;AACxC,sBAAgB,WAAW,IAAI,kBAAkB,WAAW;AAAA,IAChE;AAEA,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,SAAS,KAAK,mBAAmB,OAAO,kBAAkB,SAAS,CAAC,CAAC,CAAC;AAEpG,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,uBAAuB,SAAS,CAAC;AAAA,EACjG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,uBAAuB,mBAAkD,eAAqF;AAChK,UAAM,WAAW,MAAM,KAAK,0BAA0B,mBAAmB,aAAa;AACtF,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,iBAAiB,mBAAyC,eAAmH;AAC/K,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,sBAAsB,KAAK,MAAM;AACnD,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,qBAAiB,cAAc,IAAI;AAEnC,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAEhG,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM,2BAA2B,kBAAkB,sBAAsB,CAAC;AAAA,IAC9E,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,gCAAgC,SAAS,CAAC;AAAA,EAC1G;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,cAAc,mBAAyC,eAA8F;AACvJ,UAAM,WAAW,MAAM,KAAK,iBAAiB,mBAAmB,aAAa;AAC7E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAEJ;;;AC3MO,IAAM,WAAN,cAA+B,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,EAM1C,MAAM,cAAc,mBAAsC,eAAyG;AAC/J,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,YAAY,KAAK,MAAM;AACzC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,QAAI,kBAAkB,YAAY,KAAK,MAAM;AACzC,sBAAgB,YAAY,IAAI,kBAAkB,YAAY;AAAA,IAClE;AAEA,QAAI,kBAAkB,MAAM,KAAK,MAAM;AACnC,sBAAgB,MAAM,IAAI,kBAAkB,MAAM;AAAA,IACtD;AAEA,QAAI,kBAAkB,IAAI,KAAK,MAAM;AACjC,sBAAgB,IAAI,IAAI,kBAAkB,IAAI;AAAA,IAClD;AAEA,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,sBAAgB,OAAO,IAAI,kBAAkB,OAAO;AAAA,IACxD;AAEA,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAChG,cAAU,QAAQ,QAAQ,IAAI,cAAc,KAAK,mBAAmB,OAAO,kBAAkB,cAAc,CAAC,CAAC,CAAC;AAE9G,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,UAAU,IAAI,cAAc,CAAC;AAAA,EAC7F;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,WAAW,mBAAsC,eAAoF;AACvI,UAAM,WAAW,MAAM,KAAK,cAAc,mBAAmB,aAAa;AAC1E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,eAAe,mBAAuC,eAA4G;AACpK,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAChG,cAAU,QAAQ,QAAQ,IAAI,cAAc,KAAK,mBAAmB,OAAO,kBAAkB,cAAc,CAAC,CAAC,CAAC;AAE9G,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,yBAAyB,SAAS,CAAC;AAAA,EACnG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,YAAY,mBAAuC,eAAuF;AAC5I,UAAM,WAAW,MAAM,KAAK,eAAe,mBAAmB,aAAa;AAC3E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,gBAAgB,mBAAwC,eAA8G;AACxK,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,YAAY,KAAK,MAAM;AACzC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAChG,cAAU,QAAQ,QAAQ,IAAI,YAAY,KAAK,mBAAmB,OAAO,kBAAkB,YAAY,CAAC,CAAC,CAAC;AAE1G,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,UAAU,IAAI,mBAAmB,CAAC;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,aAAa,mBAAwC,eAAyF;AAChJ,UAAM,WAAW,MAAM,KAAK,gBAAgB,mBAAmB,aAAa;AAC5E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,cAAc,mBAAsC,eAA2G;AACjK,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,QAAI,kBAAkB,QAAQ,KAAK,MAAM;AACrC,sBAAgB,QAAQ,IAAI,kBAAkB,QAAQ;AAAA,IAC1D;AAEA,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,sBAAgB,OAAO,IAAI,kBAAkB,OAAO;AAAA,IACxD;AAEA,QAAI,kBAAkB,WAAW,KAAK,MAAM;AACxC,sBAAgB,WAAW,IAAI,kBAAkB,WAAW;AAAA,IAChE;AAEA,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAChG,cAAU,QAAQ,QAAQ,IAAI,cAAc,KAAK,mBAAmB,OAAO,kBAAkB,cAAc,CAAC,CAAC,CAAC;AAE9G,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,wBAAwB,SAAS,CAAC;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,WAAW,mBAAsC,eAAsF;AACzI,UAAM,WAAW,MAAM,KAAK,cAAc,mBAAmB,aAAa;AAC1E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,mBAAmB,mBAA2C,eAA8G;AAC9K,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,iBAAiB,KAAK,MAAM;AAC9C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,QAAI,kBAAkB,iBAAiB,KAAK,MAAM;AAC9C,sBAAgB,iBAAiB,IAAI,kBAAkB,iBAAiB;AAAA,IAC5E;AAEA,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAChG,cAAU,QAAQ,QAAQ,IAAI,cAAc,KAAK,mBAAmB,OAAO,kBAAkB,cAAc,CAAC,CAAC,CAAC;AAE9G,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,UAAU,IAAI,mBAAmB,CAAC;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,gBAAgB,mBAA2C,eAAyF;AACtJ,UAAM,WAAW,MAAM,KAAK,mBAAmB,mBAAmB,aAAa;AAC/E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,iBAAiB,mBAAyC,eAA2G;AACvK,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAChG,cAAU,QAAQ,QAAQ,IAAI,cAAc,KAAK,mBAAmB,OAAO,kBAAkB,cAAc,CAAC,CAAC,CAAC;AAE9G,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,wBAAwB,SAAS,CAAC;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,cAAc,mBAAyC,eAAsF;AAC/I,UAAM,WAAW,MAAM,KAAK,iBAAiB,mBAAmB,aAAa;AAC7E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,sBAAsB,mBAA8C,eAA+H;AACrM,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,gBAAgB,KAAK,MAAM;AAC7C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,QAAI,kBAAkB,gBAAgB,KAAK,MAAM;AAC7C,sBAAgB,gBAAgB,IAAI,kBAAkB,gBAAgB;AAAA,IAC1E;AAEA,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAEhG,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAsB,UAAU,WAAW,uBAAuB,CAAC;AAAA,EACrH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,mBAAmB,mBAA8C,eAA0G;AAC7K,UAAM,WAAW,MAAM,KAAK,sBAAsB,mBAAmB,aAAa;AAClF,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,eAAe,mBAAuC,eAAyG;AACjK,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAChG,cAAU,QAAQ,QAAQ,IAAI,cAAc,KAAK,mBAAmB,OAAO,kBAAkB,cAAc,CAAC,CAAC,CAAC;AAE9G,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,sBAAsB,SAAS,CAAC;AAAA,EAChG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,YAAY,mBAAuC,eAAoF;AACzI,UAAM,WAAW,MAAM,KAAK,eAAe,mBAAmB,aAAa;AAC3E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,oBAAoB,mBAA4C,eAA6H;AAC/L,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,gBAAgB,KAAK,MAAM;AAC7C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,QAAI,kBAAkB,gBAAgB,KAAK,MAAM;AAC7C,sBAAgB,gBAAgB,IAAI,kBAAkB,gBAAgB;AAAA,IAC1E;AAEA,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAEhG,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAsB,UAAU,WAAW,qBAAqB,CAAC;AAAA,EACnH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,iBAAiB,mBAA4C,eAAwG;AACvK,UAAM,WAAW,MAAM,KAAK,oBAAoB,mBAAmB,aAAa;AAChF,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,kBAAkB,mBAA0C,eAA6G;AAC3K,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,QAAI,kBAAkB,QAAQ,KAAK,MAAM;AACrC,sBAAgB,QAAQ,IAAI,kBAAkB,QAAQ;AAAA,IAC1D;AAEA,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,sBAAgB,OAAO,IAAI,kBAAkB,OAAO;AAAA,IACxD;AAEA,QAAI,kBAAkB,WAAW,KAAK,MAAM;AACxC,sBAAgB,WAAW,IAAI,kBAAkB,WAAW;AAAA,IAChE;AAEA,QAAI,kBAAkB,MAAM,KAAK,MAAM;AACnC,sBAAgB,MAAM,IAAI,kBAAkB,MAAM;AAAA,IACtD;AAEA,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAChG,cAAU,QAAQ,QAAQ,IAAI,cAAc,KAAK,mBAAmB,OAAO,kBAAkB,cAAc,CAAC,CAAC,CAAC;AAE9G,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,0BAA0B,SAAS,CAAC;AAAA,EACpG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,eAAe,mBAA0C,eAAwF;AACnJ,UAAM,WAAW,MAAM,KAAK,kBAAkB,mBAAmB,aAAa;AAC9E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,YAAY,mBAAoC,eAA6G;AAC/J,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,QAAI,kBAAkB,QAAQ,KAAK,MAAM;AACrC,sBAAgB,QAAQ,IAAI,kBAAkB,QAAQ;AAAA,IAC1D;AAEA,QAAI,kBAAkB,eAAe,KAAK,MAAM;AAC5C,sBAAgB,eAAe,IAAI,kBAAkB,eAAe;AAAA,IACxE;AAEA,QAAI,kBAAkB,aAAa,KAAK,MAAM;AAC1C,sBAAgB,aAAa,IAAI,kBAAkB,aAAa;AAAA,IACpE;AAEA,QAAI,kBAAkB,aAAa,KAAK,MAAM;AAC1C,sBAAgB,aAAa,IAAI,kBAAkB,aAAa;AAAA,IACpE;AAEA,QAAI,kBAAkB,aAAa,KAAK,MAAM;AAC1C,sBAAgB,aAAa,IAAI,kBAAkB,aAAa;AAAA,IACpE;AAEA,QAAI,kBAAkB,aAAa,KAAK,MAAM;AAC1C,sBAAgB,aAAa,IAAI,kBAAkB,aAAa;AAAA,IACpE;AAEA,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAChG,cAAU,QAAQ,QAAQ,IAAI,cAAc,KAAK,mBAAmB,OAAO,kBAAkB,cAAc,CAAC,CAAC,CAAC;AAE9G,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,UAAU,IAAI,kBAAkB,CAAC;AAAA,EACjG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,SAAS,mBAAoC,eAAwF;AACvI,UAAM,WAAW,MAAM,KAAK,YAAY,mBAAmB,aAAa;AACxE,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,kBAAkB,mBAA0C,eAAyG;AACvK,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,WAAW,KAAK,MAAM;AACxC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,QAAI,kBAAkB,WAAW,KAAK,MAAM;AACxC,sBAAgB,WAAW,IAAI,kBAAkB,WAAW;AAAA,IAChE;AAEA,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAChG,cAAU,QAAQ,QAAQ,IAAI,cAAc,KAAK,mBAAmB,OAAO,kBAAkB,cAAc,CAAC,CAAC,CAAC;AAE9G,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,sBAAsB,SAAS,CAAC;AAAA,EAChG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,eAAe,mBAA0C,eAAoF;AAC/I,UAAM,WAAW,MAAM,KAAK,kBAAkB,mBAAmB,aAAa;AAC9E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,aAAa,mBAAqC,eAA0G;AAC9J,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,QAAI,kBAAkB,QAAQ,KAAK,MAAM;AACrC,sBAAgB,QAAQ,IAAI,kBAAkB,QAAQ;AAAA,IAC1D;AAEA,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,sBAAgB,OAAO,IAAI,kBAAkB,OAAO;AAAA,IACxD;AAEA,QAAI,kBAAkB,WAAW,KAAK,MAAM;AACxC,sBAAgB,WAAW,IAAI,kBAAkB,WAAW;AAAA,IAChE;AAEA,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAChG,cAAU,QAAQ,QAAQ,IAAI,cAAc,KAAK,mBAAmB,OAAO,kBAAkB,cAAc,CAAC,CAAC,CAAC;AAE9G,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,uBAAuB,SAAS,CAAC;AAAA,EACjG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,UAAU,mBAAqC,eAAqF;AACtI,UAAM,WAAW,MAAM,KAAK,aAAa,mBAAmB,aAAa;AACzE,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,eAAe,mBAAuC,eAAkG;AAC1J,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAChG,cAAU,QAAQ,QAAQ,IAAI,cAAc,KAAK,mBAAmB,OAAO,kBAAkB,cAAc,CAAC,CAAC,CAAC;AAE9G,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAqB,QAAQ;AAAA,EACpD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,YAAY,mBAAuC,eAA6E;AAClI,UAAM,WAAW,MAAM,KAAK,eAAe,mBAAmB,aAAa;AAC3E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,YAAY,mBAAoC,eAAqG;AACvJ,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAChG,cAAU,QAAQ,QAAQ,IAAI,cAAc,KAAK,mBAAmB,OAAO,kBAAkB,cAAc,CAAC,CAAC,CAAC;AAE9G,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,kBAAkB,SAAS,CAAC;AAAA,EAC5F;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,SAAS,mBAAoC,eAAgF;AAC/H,UAAM,WAAW,MAAM,KAAK,YAAY,mBAAmB,aAAa;AACxE,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,iBAAiB,mBAAyC,eAAyH;AACrL,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,gBAAgB,KAAK,MAAM;AAC7C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,QAAI,kBAAkB,gBAAgB,KAAK,MAAM;AAC7C,sBAAgB,gBAAgB,IAAI,kBAAkB,gBAAgB;AAAA,IAC1E;AAEA,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAEhG,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAsB,UAAU,WAAW,iBAAiB,CAAC;AAAA,EAC/G;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,cAAc,mBAAyC,eAAoG;AAC7J,UAAM,WAAW,MAAM,KAAK,iBAAiB,mBAAmB,aAAa;AAC7E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,YAAY,mBAAoC,eAAiG;AACnJ,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAChG,cAAU,QAAQ,QAAQ,IAAI,cAAc,KAAK,mBAAmB,OAAO,kBAAkB,cAAc,CAAC,CAAC,CAAC;AAE9G,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,cAAc,SAAS,CAAC;AAAA,EACxF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,SAAS,mBAAoC,eAA4E;AAC3H,UAAM,WAAW,MAAM,KAAK,YAAY,mBAAmB,aAAa;AACxE,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,mBAAmB,mBAA2C,eAA8G;AAC9K,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,KAAK,KAAK,MAAM;AAClC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAChG,cAAU,QAAQ,QAAQ,IAAI,cAAc,KAAK,mBAAmB,OAAO,kBAAkB,cAAc,CAAC,CAAC,CAAC;AAC9G,cAAU,QAAQ,QAAQ,IAAI,KAAK,KAAK,mBAAmB,OAAO,kBAAkB,KAAK,CAAC,CAAC,CAAC;AAE5F,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,UAAU,IAAI,mBAAmB,CAAC;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,gBAAgB,mBAA2C,eAAyF;AACtJ,UAAM,WAAW,MAAM,KAAK,mBAAmB,mBAAmB,aAAa;AAC/E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,aAAa,mBAAqC,eAAwG;AAC5J,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,gBAAgB,KAAK,MAAM;AAC7C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,QAAI,kBAAkB,gBAAgB,KAAK,MAAM;AAC7C,sBAAgB,gBAAgB,IAAI,kBAAkB,gBAAgB;AAAA,IAC1E;AAEA,QAAI,kBAAkB,QAAQ,KAAK,MAAM;AACrC,sBAAgB,QAAQ,IAAI,kBAAkB,QAAQ;AAAA,IAC1D;AAEA,QAAI,kBAAkB,eAAe,KAAK,MAAM;AAC5C,sBAAgB,eAAe,IAAI,kBAAkB,eAAe;AAAA,IACxE;AAEA,QAAI,kBAAkB,UAAU,KAAK,MAAM;AACvC,sBAAgB,UAAU,IAAI,kBAAkB,UAAU;AAAA,IAC9D;AAEA,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAEhG,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,UAAU,IAAI,aAAa,CAAC;AAAA,EAC5F;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,UAAU,mBAAqC,eAAmF;AACpI,UAAM,WAAW,MAAM,KAAK,aAAa,mBAAmB,aAAa;AACzE,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,iBAAiB,mBAAyC,eAA2G;AACvK,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAChG,cAAU,QAAQ,QAAQ,IAAI,cAAc,KAAK,mBAAmB,OAAO,kBAAkB,cAAc,CAAC,CAAC,CAAC;AAE9G,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,wBAAwB,SAAS,CAAC;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,cAAc,mBAAyC,eAAsF;AAC/I,UAAM,WAAW,MAAM,KAAK,iBAAiB,mBAAmB,aAAa;AAC7E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,aAAa,mBAAqC,eAAyG;AAC7J,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,QAAI,kBAAkB,QAAQ,KAAK,MAAM;AACrC,sBAAgB,QAAQ,IAAI,kBAAkB,QAAQ;AAAA,IAC1D;AAEA,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,sBAAgB,OAAO,IAAI,kBAAkB,OAAO;AAAA,IACxD;AAEA,QAAI,kBAAkB,WAAW,KAAK,MAAM;AACxC,sBAAgB,WAAW,IAAI,kBAAkB,WAAW;AAAA,IAChE;AAEA,QAAI,kBAAkB,MAAM,KAAK,MAAM;AACnC,sBAAgB,MAAM,IAAI,kBAAkB,MAAM;AAAA,IACtD;AAEA,QAAI,kBAAkB,QAAQ,KAAK,MAAM;AACrC,sBAAgB,QAAQ,IAAI,kBAAkB,QAAQ;AAAA,IAC1D;AAEA,QAAI,kBAAkB,mBAAmB,KAAK,MAAM;AAChD,sBAAgB,uBAAuB,IAAI,kBAAkB,mBAAmB;AAAA,IACpF;AAEA,QAAI,kBAAkB,mBAAmB,KAAK,MAAM;AAChD,sBAAgB,uBAAuB,IAAI,kBAAkB,mBAAmB;AAAA,IACpF;AAEA,QAAI,kBAAkB,wBAAwB,KAAK,MAAM;AACrD,sBAAgB,4BAA4B,IAAI,kBAAkB,wBAAwB;AAAA,IAC9F;AAEA,QAAI,kBAAkB,wBAAwB,KAAK,MAAM;AACrD,sBAAgB,4BAA4B,IAAI,kBAAkB,wBAAwB;AAAA,IAC9F;AAEA,QAAI,kBAAkB,YAAY,KAAK,MAAM;AACzC,sBAAgB,cAAc,IAAI,kBAAkB,YAAY;AAAA,IACpE;AAEA,QAAI,kBAAkB,YAAY,KAAK,MAAM;AACzC,sBAAgB,cAAc,IAAI,kBAAkB,YAAY;AAAA,IACpE;AAEA,QAAI,kBAAkB,aAAa,KAAK,MAAM;AAC1C,sBAAgB,eAAe,IAAI,kBAAkB,aAAa;AAAA,IACtE;AAEA,QAAI,kBAAkB,aAAa,KAAK,MAAM;AAC1C,sBAAgB,eAAe,IAAI,kBAAkB,aAAa;AAAA,IACtE;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,sBAAgB,gBAAgB,IAAI,kBAAkB,cAAc;AAAA,IACxE;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,sBAAgB,gBAAgB,IAAI,kBAAkB,cAAc;AAAA,IACxE;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,sBAAgB,gBAAgB,IAAI,kBAAkB,cAAc;AAAA,IACxE;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,sBAAgB,gBAAgB,IAAI,kBAAkB,cAAc;AAAA,IACxE;AAEA,QAAI,kBAAkB,eAAe,KAAK,MAAM;AAC5C,sBAAgB,iBAAiB,IAAI,kBAAkB,eAAe;AAAA,IAC1E;AAEA,QAAI,kBAAkB,eAAe,KAAK,MAAM;AAC5C,sBAAgB,iBAAiB,IAAI,kBAAkB,eAAe;AAAA,IAC1E;AAEA,QAAI,kBAAkB,sBAAsB,KAAK,MAAM;AACnD,sBAAgB,2BAA2B,IAAI,kBAAkB,sBAAsB;AAAA,IAC3F;AAEA,QAAI,kBAAkB,sBAAsB,KAAK,MAAM;AACnD,sBAAgB,2BAA2B,IAAI,kBAAkB,sBAAsB;AAAA,IAC3F;AAEA,QAAI,kBAAkB,uBAAuB,KAAK,MAAM;AACpD,sBAAgB,4BAA4B,IAAI,kBAAkB,uBAAuB;AAAA,IAC7F;AAEA,QAAI,kBAAkB,uBAAuB,KAAK,MAAM;AACpD,sBAAgB,4BAA4B,IAAI,kBAAkB,uBAAuB;AAAA,IAC7F;AAEA,QAAI,kBAAkB,kBAAkB,KAAK,MAAM;AAC/C,sBAAgB,sBAAsB,IAAI,kBAAkB,kBAAkB;AAAA,IAClF;AAEA,QAAI,kBAAkB,kBAAkB,KAAK,MAAM;AAC/C,sBAAgB,sBAAsB,IAAI,kBAAkB,kBAAkB;AAAA,IAClF;AAEA,QAAI,kBAAkB,uBAAuB,KAAK,MAAM;AACpD,sBAAgB,2BAA2B,IAAI,kBAAkB,uBAAuB;AAAA,IAC5F;AAEA,QAAI,kBAAkB,uBAAuB,KAAK,MAAM;AACpD,sBAAgB,2BAA2B,IAAI,kBAAkB,uBAAuB;AAAA,IAC5F;AAEA,QAAI,kBAAkB,WAAW,KAAK,MAAM;AACxC,sBAAgB,aAAa,IAAI,kBAAkB,WAAW;AAAA,IAClE;AAEA,QAAI,kBAAkB,WAAW,KAAK,MAAM;AACxC,sBAAgB,aAAa,IAAI,kBAAkB,WAAW;AAAA,IAClE;AAEA,QAAI,kBAAkB,YAAY,KAAK,MAAM;AACzC,sBAAgB,cAAc,IAAI,kBAAkB,YAAY;AAAA,IACpE;AAEA,QAAI,kBAAkB,YAAY,KAAK,MAAM;AACzC,sBAAgB,cAAc,IAAI,kBAAkB,YAAY;AAAA,IACpE;AAEA,QAAI,kBAAkB,aAAa,KAAK,MAAM;AAC1C,sBAAgB,eAAe,IAAI,kBAAkB,aAAa;AAAA,IACtE;AAEA,QAAI,kBAAkB,aAAa,KAAK,MAAM;AAC1C,sBAAgB,eAAe,IAAI,kBAAkB,aAAa;AAAA,IACtE;AAEA,QAAI,kBAAkB,aAAa,KAAK,MAAM;AAC1C,sBAAgB,eAAe,IAAI,kBAAkB,aAAa;AAAA,IACtE;AAEA,QAAI,kBAAkB,aAAa,KAAK,MAAM;AAC1C,sBAAgB,eAAe,IAAI,kBAAkB,aAAa;AAAA,IACtE;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,sBAAgB,gBAAgB,IAAI,kBAAkB,cAAc;AAAA,IACxE;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,sBAAgB,gBAAgB,IAAI,kBAAkB,cAAc;AAAA,IACxE;AAEA,QAAI,kBAAkB,qBAAqB,KAAK,MAAM;AAClD,sBAAgB,0BAA0B,IAAI,kBAAkB,qBAAqB;AAAA,IACzF;AAEA,QAAI,kBAAkB,qBAAqB,KAAK,MAAM;AAClD,sBAAgB,0BAA0B,IAAI,kBAAkB,qBAAqB;AAAA,IACzF;AAEA,QAAI,kBAAkB,sBAAsB,KAAK,MAAM;AACnD,sBAAgB,2BAA2B,IAAI,kBAAkB,sBAAsB;AAAA,IAC3F;AAEA,QAAI,kBAAkB,sBAAsB,KAAK,MAAM;AACnD,sBAAgB,2BAA2B,IAAI,kBAAkB,sBAAsB;AAAA,IAC3F;AAEA,QAAI,kBAAkB,kBAAkB,KAAK,MAAM;AAC/C,sBAAgB,sBAAsB,IAAI,kBAAkB,kBAAkB;AAAA,IAClF;AAEA,QAAI,kBAAkB,kBAAkB,KAAK,MAAM;AAC/C,sBAAgB,sBAAsB,IAAI,kBAAkB,kBAAkB;AAAA,IAClF;AAEA,QAAI,kBAAkB,uBAAuB,KAAK,MAAM;AACpD,sBAAgB,2BAA2B,IAAI,kBAAkB,uBAAuB;AAAA,IAC5F;AAEA,QAAI,kBAAkB,uBAAuB,KAAK,MAAM;AACpD,sBAAgB,2BAA2B,IAAI,kBAAkB,uBAAuB;AAAA,IAC5F;AAEA,QAAI,kBAAkB,WAAW,KAAK,MAAM;AACxC,sBAAgB,aAAa,IAAI,kBAAkB,WAAW;AAAA,IAClE;AAEA,QAAI,kBAAkB,WAAW,KAAK,MAAM;AACxC,sBAAgB,aAAa,IAAI,kBAAkB,WAAW;AAAA,IAClE;AAEA,QAAI,kBAAkB,YAAY,KAAK,MAAM;AACzC,sBAAgB,cAAc,IAAI,kBAAkB,YAAY;AAAA,IACpE;AAEA,QAAI,kBAAkB,YAAY,KAAK,MAAM;AACzC,sBAAgB,cAAc,IAAI,kBAAkB,YAAY;AAAA,IACpE;AAEA,QAAI,kBAAkB,aAAa,KAAK,MAAM;AAC1C,sBAAgB,eAAe,IAAI,kBAAkB,aAAa;AAAA,IACtE;AAEA,QAAI,kBAAkB,aAAa,KAAK,MAAM;AAC1C,sBAAgB,eAAe,IAAI,kBAAkB,aAAa;AAAA,IACtE;AAEA,QAAI,kBAAkB,aAAa,KAAK,MAAM;AAC1C,sBAAgB,eAAe,IAAI,kBAAkB,aAAa;AAAA,IACtE;AAEA,QAAI,kBAAkB,aAAa,KAAK,MAAM;AAC1C,sBAAgB,eAAe,IAAI,kBAAkB,aAAa;AAAA,IACtE;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,sBAAgB,gBAAgB,IAAI,kBAAkB,cAAc;AAAA,IACxE;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,sBAAgB,gBAAgB,IAAI,kBAAkB,cAAc;AAAA,IACxE;AAEA,QAAI,kBAAkB,qBAAqB,KAAK,MAAM;AAClD,sBAAgB,0BAA0B,IAAI,kBAAkB,qBAAqB;AAAA,IACzF;AAEA,QAAI,kBAAkB,qBAAqB,KAAK,MAAM;AAClD,sBAAgB,0BAA0B,IAAI,kBAAkB,qBAAqB;AAAA,IACzF;AAEA,QAAI,kBAAkB,sBAAsB,KAAK,MAAM;AACnD,sBAAgB,2BAA2B,IAAI,kBAAkB,sBAAsB;AAAA,IAC3F;AAEA,QAAI,kBAAkB,sBAAsB,KAAK,MAAM;AACnD,sBAAgB,2BAA2B,IAAI,kBAAkB,sBAAsB;AAAA,IAC3F;AAEA,QAAI,kBAAkB,mBAAmB,KAAK,MAAM;AAChD,sBAAgB,uBAAuB,IAAI,kBAAkB,mBAAmB;AAAA,IACpF;AAEA,QAAI,kBAAkB,mBAAmB,KAAK,MAAM;AAChD,sBAAgB,uBAAuB,IAAI,kBAAkB,mBAAmB;AAAA,IACpF;AAEA,QAAI,kBAAkB,wBAAwB,KAAK,MAAM;AACrD,sBAAgB,4BAA4B,IAAI,kBAAkB,wBAAwB;AAAA,IAC9F;AAEA,QAAI,kBAAkB,wBAAwB,KAAK,MAAM;AACrD,sBAAgB,4BAA4B,IAAI,kBAAkB,wBAAwB;AAAA,IAC9F;AAEA,QAAI,kBAAkB,YAAY,KAAK,MAAM;AACzC,sBAAgB,cAAc,IAAI,kBAAkB,YAAY;AAAA,IACpE;AAEA,QAAI,kBAAkB,YAAY,KAAK,MAAM;AACzC,sBAAgB,cAAc,IAAI,kBAAkB,YAAY;AAAA,IACpE;AAEA,QAAI,kBAAkB,aAAa,KAAK,MAAM;AAC1C,sBAAgB,eAAe,IAAI,kBAAkB,aAAa;AAAA,IACtE;AAEA,QAAI,kBAAkB,aAAa,KAAK,MAAM;AAC1C,sBAAgB,eAAe,IAAI,kBAAkB,aAAa;AAAA,IACtE;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,sBAAgB,gBAAgB,IAAI,kBAAkB,cAAc;AAAA,IACxE;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,sBAAgB,gBAAgB,IAAI,kBAAkB,cAAc;AAAA,IACxE;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,sBAAgB,gBAAgB,IAAI,kBAAkB,cAAc;AAAA,IACxE;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,sBAAgB,gBAAgB,IAAI,kBAAkB,cAAc;AAAA,IACxE;AAEA,QAAI,kBAAkB,eAAe,KAAK,MAAM;AAC5C,sBAAgB,iBAAiB,IAAI,kBAAkB,eAAe;AAAA,IAC1E;AAEA,QAAI,kBAAkB,eAAe,KAAK,MAAM;AAC5C,sBAAgB,iBAAiB,IAAI,kBAAkB,eAAe;AAAA,IAC1E;AAEA,QAAI,kBAAkB,sBAAsB,KAAK,MAAM;AACnD,sBAAgB,2BAA2B,IAAI,kBAAkB,sBAAsB;AAAA,IAC3F;AAEA,QAAI,kBAAkB,sBAAsB,KAAK,MAAM;AACnD,sBAAgB,2BAA2B,IAAI,kBAAkB,sBAAsB;AAAA,IAC3F;AAEA,QAAI,kBAAkB,uBAAuB,KAAK,MAAM;AACpD,sBAAgB,4BAA4B,IAAI,kBAAkB,uBAAuB;AAAA,IAC7F;AAEA,QAAI,kBAAkB,uBAAuB,KAAK,MAAM;AACpD,sBAAgB,4BAA4B,IAAI,kBAAkB,uBAAuB;AAAA,IAC7F;AAEA,QAAI,kBAAkB,mBAAmB,KAAK,MAAM;AAChD,sBAAgB,uBAAuB,IAAI,kBAAkB,mBAAmB;AAAA,IACpF;AAEA,QAAI,kBAAkB,mBAAmB,KAAK,MAAM;AAChD,sBAAgB,uBAAuB,IAAI,kBAAkB,mBAAmB;AAAA,IACpF;AAEA,QAAI,kBAAkB,wBAAwB,KAAK,MAAM;AACrD,sBAAgB,4BAA4B,IAAI,kBAAkB,wBAAwB;AAAA,IAC9F;AAEA,QAAI,kBAAkB,wBAAwB,KAAK,MAAM;AACrD,sBAAgB,4BAA4B,IAAI,kBAAkB,wBAAwB;AAAA,IAC9F;AAEA,QAAI,kBAAkB,YAAY,KAAK,MAAM;AACzC,sBAAgB,cAAc,IAAI,kBAAkB,YAAY;AAAA,IACpE;AAEA,QAAI,kBAAkB,YAAY,KAAK,MAAM;AACzC,sBAAgB,cAAc,IAAI,kBAAkB,YAAY;AAAA,IACpE;AAEA,QAAI,kBAAkB,aAAa,KAAK,MAAM;AAC1C,sBAAgB,eAAe,IAAI,kBAAkB,aAAa;AAAA,IACtE;AAEA,QAAI,kBAAkB,aAAa,KAAK,MAAM;AAC1C,sBAAgB,eAAe,IAAI,kBAAkB,aAAa;AAAA,IACtE;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,sBAAgB,gBAAgB,IAAI,kBAAkB,cAAc;AAAA,IACxE;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,sBAAgB,gBAAgB,IAAI,kBAAkB,cAAc;AAAA,IACxE;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,sBAAgB,gBAAgB,IAAI,kBAAkB,cAAc;AAAA,IACxE;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,sBAAgB,gBAAgB,IAAI,kBAAkB,cAAc;AAAA,IACxE;AAEA,QAAI,kBAAkB,eAAe,KAAK,MAAM;AAC5C,sBAAgB,iBAAiB,IAAI,kBAAkB,eAAe;AAAA,IAC1E;AAEA,QAAI,kBAAkB,eAAe,KAAK,MAAM;AAC5C,sBAAgB,iBAAiB,IAAI,kBAAkB,eAAe;AAAA,IAC1E;AAEA,QAAI,kBAAkB,sBAAsB,KAAK,MAAM;AACnD,sBAAgB,2BAA2B,IAAI,kBAAkB,sBAAsB;AAAA,IAC3F;AAEA,QAAI,kBAAkB,sBAAsB,KAAK,MAAM;AACnD,sBAAgB,2BAA2B,IAAI,kBAAkB,sBAAsB;AAAA,IAC3F;AAEA,QAAI,kBAAkB,uBAAuB,KAAK,MAAM;AACpD,sBAAgB,4BAA4B,IAAI,kBAAkB,uBAAuB;AAAA,IAC7F;AAEA,QAAI,kBAAkB,uBAAuB,KAAK,MAAM;AACpD,sBAAgB,4BAA4B,IAAI,kBAAkB,uBAAuB;AAAA,IAC7F;AAEA,QAAI,kBAAkB,kBAAkB,KAAK,MAAM;AAC/C,sBAAgB,sBAAsB,IAAI,kBAAkB,kBAAkB;AAAA,IAClF;AAEA,QAAI,kBAAkB,kBAAkB,KAAK,MAAM;AAC/C,sBAAgB,sBAAsB,IAAI,kBAAkB,kBAAkB;AAAA,IAClF;AAEA,QAAI,kBAAkB,uBAAuB,KAAK,MAAM;AACpD,sBAAgB,2BAA2B,IAAI,kBAAkB,uBAAuB;AAAA,IAC5F;AAEA,QAAI,kBAAkB,uBAAuB,KAAK,MAAM;AACpD,sBAAgB,2BAA2B,IAAI,kBAAkB,uBAAuB;AAAA,IAC5F;AAEA,QAAI,kBAAkB,WAAW,KAAK,MAAM;AACxC,sBAAgB,aAAa,IAAI,kBAAkB,WAAW;AAAA,IAClE;AAEA,QAAI,kBAAkB,WAAW,KAAK,MAAM;AACxC,sBAAgB,aAAa,IAAI,kBAAkB,WAAW;AAAA,IAClE;AAEA,QAAI,kBAAkB,YAAY,KAAK,MAAM;AACzC,sBAAgB,cAAc,IAAI,kBAAkB,YAAY;AAAA,IACpE;AAEA,QAAI,kBAAkB,YAAY,KAAK,MAAM;AACzC,sBAAgB,cAAc,IAAI,kBAAkB,YAAY;AAAA,IACpE;AAEA,QAAI,kBAAkB,aAAa,KAAK,MAAM;AAC1C,sBAAgB,eAAe,IAAI,kBAAkB,aAAa;AAAA,IACtE;AAEA,QAAI,kBAAkB,aAAa,KAAK,MAAM;AAC1C,sBAAgB,eAAe,IAAI,kBAAkB,aAAa;AAAA,IACtE;AAEA,QAAI,kBAAkB,aAAa,KAAK,MAAM;AAC1C,sBAAgB,eAAe,IAAI,kBAAkB,aAAa;AAAA,IACtE;AAEA,QAAI,kBAAkB,aAAa,KAAK,MAAM;AAC1C,sBAAgB,eAAe,IAAI,kBAAkB,aAAa;AAAA,IACtE;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,sBAAgB,gBAAgB,IAAI,kBAAkB,cAAc;AAAA,IACxE;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,sBAAgB,gBAAgB,IAAI,kBAAkB,cAAc;AAAA,IACxE;AAEA,QAAI,kBAAkB,qBAAqB,KAAK,MAAM;AAClD,sBAAgB,0BAA0B,IAAI,kBAAkB,qBAAqB;AAAA,IACzF;AAEA,QAAI,kBAAkB,qBAAqB,KAAK,MAAM;AAClD,sBAAgB,0BAA0B,IAAI,kBAAkB,qBAAqB;AAAA,IACzF;AAEA,QAAI,kBAAkB,sBAAsB,KAAK,MAAM;AACnD,sBAAgB,2BAA2B,IAAI,kBAAkB,sBAAsB;AAAA,IAC3F;AAEA,QAAI,kBAAkB,sBAAsB,KAAK,MAAM;AACnD,sBAAgB,2BAA2B,IAAI,kBAAkB,sBAAsB;AAAA,IAC3F;AAEA,QAAI,kBAAkB,kBAAkB,KAAK,MAAM;AAC/C,sBAAgB,sBAAsB,IAAI,kBAAkB,kBAAkB;AAAA,IAClF;AAEA,QAAI,kBAAkB,kBAAkB,KAAK,MAAM;AAC/C,sBAAgB,sBAAsB,IAAI,kBAAkB,kBAAkB;AAAA,IAClF;AAEA,QAAI,kBAAkB,uBAAuB,KAAK,MAAM;AACpD,sBAAgB,2BAA2B,IAAI,kBAAkB,uBAAuB;AAAA,IAC5F;AAEA,QAAI,kBAAkB,uBAAuB,KAAK,MAAM;AACpD,sBAAgB,2BAA2B,IAAI,kBAAkB,uBAAuB;AAAA,IAC5F;AAEA,QAAI,kBAAkB,WAAW,KAAK,MAAM;AACxC,sBAAgB,aAAa,IAAI,kBAAkB,WAAW;AAAA,IAClE;AAEA,QAAI,kBAAkB,WAAW,KAAK,MAAM;AACxC,sBAAgB,aAAa,IAAI,kBAAkB,WAAW;AAAA,IAClE;AAEA,QAAI,kBAAkB,YAAY,KAAK,MAAM;AACzC,sBAAgB,cAAc,IAAI,kBAAkB,YAAY;AAAA,IACpE;AAEA,QAAI,kBAAkB,YAAY,KAAK,MAAM;AACzC,sBAAgB,cAAc,IAAI,kBAAkB,YAAY;AAAA,IACpE;AAEA,QAAI,kBAAkB,aAAa,KAAK,MAAM;AAC1C,sBAAgB,eAAe,IAAI,kBAAkB,aAAa;AAAA,IACtE;AAEA,QAAI,kBAAkB,aAAa,KAAK,MAAM;AAC1C,sBAAgB,eAAe,IAAI,kBAAkB,aAAa;AAAA,IACtE;AAEA,QAAI,kBAAkB,aAAa,KAAK,MAAM;AAC1C,sBAAgB,eAAe,IAAI,kBAAkB,aAAa;AAAA,IACtE;AAEA,QAAI,kBAAkB,aAAa,KAAK,MAAM;AAC1C,sBAAgB,eAAe,IAAI,kBAAkB,aAAa;AAAA,IACtE;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,sBAAgB,gBAAgB,IAAI,kBAAkB,cAAc;AAAA,IACxE;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,sBAAgB,gBAAgB,IAAI,kBAAkB,cAAc;AAAA,IACxE;AAEA,QAAI,kBAAkB,qBAAqB,KAAK,MAAM;AAClD,sBAAgB,0BAA0B,IAAI,kBAAkB,qBAAqB;AAAA,IACzF;AAEA,QAAI,kBAAkB,qBAAqB,KAAK,MAAM;AAClD,sBAAgB,0BAA0B,IAAI,kBAAkB,qBAAqB;AAAA,IACzF;AAEA,QAAI,kBAAkB,sBAAsB,KAAK,MAAM;AACnD,sBAAgB,2BAA2B,IAAI,kBAAkB,sBAAsB;AAAA,IAC3F;AAEA,QAAI,kBAAkB,sBAAsB,KAAK,MAAM;AACnD,sBAAgB,2BAA2B,IAAI,kBAAkB,sBAAsB;AAAA,IAC3F;AAEA,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAEhG,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,sBAAsB,SAAS,CAAC;AAAA,EAChG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,UAAU,mBAAqC,eAAoF;AACrI,UAAM,WAAW,MAAM,KAAK,aAAa,mBAAmB,aAAa;AACzE,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,UAAU,mBAAkC,eAAqG;AACnJ,UAAM,kBAAuB,CAAC;AAE9B,QAAI,kBAAkB,QAAQ,KAAK,MAAM;AACrC,sBAAgB,QAAQ,IAAI,kBAAkB,QAAQ;AAAA,IAC1D;AAEA,QAAI,kBAAkB,GAAG,KAAK,MAAM;AAChC,sBAAgB,GAAG,IAAI,kBAAkB,GAAG;AAAA,IAChD;AAEA,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,sBAAgB,OAAO,IAAI,kBAAkB,OAAO;AAAA,IACxD;AAEA,QAAI,kBAAkB,MAAM,KAAK,MAAM;AACnC,sBAAgB,MAAM,IAAI,kBAAkB,MAAM;AAAA,IACtD;AAEA,QAAI,kBAAkB,WAAW,KAAK,MAAM;AACxC,sBAAgB,WAAW,IAAI,kBAAkB,WAAW;AAAA,IAChE;AAEA,QAAI,kBAAkB,QAAQ,KAAK,MAAM;AACrC,sBAAgB,QAAQ,IAAI,kBAAkB,QAAQ;AAAA,IAC1D;AAEA,QAAI,kBAAkB,QAAQ,KAAK,MAAM;AACrC,sBAAgB,QAAQ,IAAI,kBAAkB,QAAQ;AAAA,IAC1D;AAEA,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AAEd,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,kBAAkB,SAAS,CAAC;AAAA,EAC5F;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,OAAO,oBAAmC,CAAC,GAAG,eAAgF;AAChI,UAAM,WAAW,MAAM,KAAK,UAAU,mBAAmB,aAAa;AACtE,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAEJ;;;AC9nEO,IAAM,WAAN,cAA+B,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,EAM1C,MAAM,iBAAiB,mBAAyC,eAAqG;AACjK,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,QAAI,kBAAkB,QAAQ,KAAK,MAAM;AACrC,sBAAgB,QAAQ,IAAI,kBAAkB,QAAQ;AAAA,IAC1D;AAEA,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,sBAAgB,OAAO,IAAI,kBAAkB,OAAO;AAAA,IACxD;AAEA,QAAI,kBAAkB,WAAW,KAAK,MAAM;AACxC,sBAAgB,WAAW,IAAI,kBAAkB,WAAW;AAAA,IAChE;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,sBAAgB,cAAc,IAAI,kBAAkB,cAAc;AAAA,IACtE;AAEA,QAAI,kBAAkB,eAAe,KAAK,MAAM;AAC5C,sBAAgB,eAAe,IAAI,kBAAkB,eAAe;AAAA,IACxE;AAEA,QAAI,kBAAkB,aAAa,KAAK,MAAM;AAC1C,sBAAgB,aAAa,IAAI,kBAAkB,aAAa;AAAA,IACpE;AAEA,QAAI,kBAAkB,iBAAiB,KAAK,MAAM;AAC9C,sBAAgB,iBAAiB,IAAI,kBAAkB,iBAAiB;AAAA,IAC5E;AAEA,QAAI,kBAAkB,gBAAgB,KAAK,MAAM;AAC7C,sBAAgB,gBAAgB,IAAI,kBAAkB,gBAAgB;AAAA,IAC1E;AAEA,QAAI,kBAAkB,mBAAmB,KAAK,MAAM;AAChD,sBAAgB,mBAAmB,IAAI,kBAAkB,mBAAmB;AAAA,IAChF;AAEA,QAAI,kBAAkB,kBAAkB,KAAK,MAAM;AAC/C,sBAAgB,kBAAkB,IAAI,kBAAkB,kBAAkB;AAAA,IAC9E;AAEA,QAAI,kBAAkB,uBAAuB,KAAK,MAAM;AACpD,sBAAgB,uBAAuB,IAAI,kBAAkB,uBAAuB;AAAA,IACxF;AAEA,QAAI,kBAAkB,MAAM,KAAK,MAAM;AACnC,sBAAgB,MAAM,IAAI,kBAAkB,MAAM;AAAA,IACtD;AAEA,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAEhG,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,kBAAkB,SAAS,CAAC;AAAA,EAC5F;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,cAAc,mBAAyC,eAAgF;AACzI,UAAM,WAAW,MAAM,KAAK,iBAAiB,mBAAmB,aAAa;AAC7E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,aAAa,mBAAqC,eAAqG;AACzJ,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,QAAI,kBAAkB,QAAQ,KAAK,MAAM;AACrC,sBAAgB,QAAQ,IAAI,kBAAkB,QAAQ;AAAA,IAC1D;AAEA,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,sBAAgB,OAAO,IAAI,kBAAkB,OAAO;AAAA,IACxD;AAEA,QAAI,kBAAkB,WAAW,KAAK,MAAM;AACxC,sBAAgB,WAAW,IAAI,kBAAkB,WAAW;AAAA,IAChE;AAEA,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,sBAAgB,cAAc,IAAI,kBAAkB,cAAc;AAAA,IACtE;AAEA,QAAI,kBAAkB,eAAe,KAAK,MAAM;AAC5C,sBAAgB,eAAe,IAAI,kBAAkB,eAAe;AAAA,IACxE;AAEA,QAAI,kBAAkB,aAAa,KAAK,MAAM;AAC1C,sBAAgB,aAAa,IAAI,kBAAkB,aAAa;AAAA,IACpE;AAEA,QAAI,kBAAkB,iBAAiB,KAAK,MAAM;AAC9C,sBAAgB,iBAAiB,IAAI,kBAAkB,iBAAiB;AAAA,IAC5E;AAEA,QAAI,kBAAkB,gBAAgB,KAAK,MAAM;AAC7C,sBAAgB,gBAAgB,IAAI,kBAAkB,gBAAgB;AAAA,IAC1E;AAEA,QAAI,kBAAkB,mBAAmB,KAAK,MAAM;AAChD,sBAAgB,mBAAmB,IAAI,kBAAkB,mBAAmB;AAAA,IAChF;AAEA,QAAI,kBAAkB,kBAAkB,KAAK,MAAM;AAC/C,sBAAgB,kBAAkB,IAAI,kBAAkB,kBAAkB;AAAA,IAC9E;AAEA,QAAI,kBAAkB,uBAAuB,KAAK,MAAM;AACpD,sBAAgB,uBAAuB,IAAI,kBAAkB,uBAAuB;AAAA,IACxF;AAEA,QAAI,kBAAkB,MAAM,KAAK,MAAM;AACnC,sBAAgB,MAAM,IAAI,kBAAkB,MAAM;AAAA,IACtD;AAEA,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAEhG,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,kBAAkB,SAAS,CAAC;AAAA,EAC5F;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,UAAU,mBAAqC,eAAgF;AACjI,UAAM,WAAW,MAAM,KAAK,aAAa,mBAAmB,aAAa;AACzE,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAEJ;;;ACzMO,IAAM,iBAAN,cAAqC,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMhD,MAAM,oBAAoB,mBAA4C,eAAoH;AACtL,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,uBAAuB,KAAK,MAAM;AACpD,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,qBAAiB,cAAc,IAAI;AAEnC,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAEhG,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM,4BAA4B,kBAAkB,uBAAuB,CAAC;AAAA,IAChF,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,iCAAiC,SAAS,CAAC;AAAA,EAC3G;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,iBAAiB,mBAA4C,eAA+F;AAC9J,UAAM,WAAW,MAAM,KAAK,oBAAoB,mBAAmB,aAAa;AAChF,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,eAAe,mBAAuC,eAA4G;AACpK,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAEhG,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,yBAAyB,SAAS,CAAC;AAAA,EACnG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,YAAY,mBAAuC,eAAuF;AAC5I,UAAM,WAAW,MAAM,KAAK,eAAe,mBAAmB,aAAa;AAC3E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,QAAQ,mBAAgC,eAA0G;AACpJ,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,aAAa,KAAK,MAAM;AAC1C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,qBAAiB,cAAc,IAAI;AAEnC,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAEhG,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM,kBAAkB,kBAAkB,aAAa,CAAC;AAAA,IAC5D,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,uBAAuB,SAAS,CAAC;AAAA,EACjG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,KAAK,mBAAgC,eAAqF;AAC5H,UAAM,WAAW,MAAM,KAAK,QAAQ,mBAAmB,aAAa;AACpE,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAEJ;;;AC1JO,IAAM,YAAN,cAAgC,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,EAM3C,MAAM,gBAAgB,mBAAwC,eAA4G;AACtK,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,eAAe,KAAK,MAAM;AAC5C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,mBAAmB,KAAK,MAAM;AAChD,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,qBAAiB,cAAc,IAAI;AAEnC,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAChG,cAAU,QAAQ,QAAQ,IAAI,eAAe,KAAK,mBAAmB,OAAO,kBAAkB,eAAe,CAAC,CAAC,CAAC;AAEhH,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM,wBAAwB,kBAAkB,mBAAmB,CAAC;AAAA,IACxE,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,yBAAyB,SAAS,CAAC;AAAA,EACnG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,aAAa,mBAAwC,eAAuF;AAC9I,UAAM,WAAW,MAAM,KAAK,gBAAgB,mBAAmB,aAAa;AAC5E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,cAAc,mBAAsC,eAA6G;AACnK,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,eAAe,KAAK,MAAM;AAC5C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,sBAAgB,cAAc,IAAI,kBAAkB,cAAc;AAAA,IACtE;AAEA,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAChG,cAAU,QAAQ,QAAQ,IAAI,eAAe,KAAK,mBAAmB,OAAO,kBAAkB,eAAe,CAAC,CAAC,CAAC;AAEhH,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,0BAA0B,SAAS,CAAC;AAAA,EACpG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,WAAW,mBAAsC,eAAwF;AAC3I,UAAM,WAAW,MAAM,KAAK,cAAc,mBAAmB,aAAa;AAC1E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,UAAU,mBAAkC,eAA+G;AAC7J,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,eAAe,KAAK,MAAM;AAC5C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,QAAI,kBAAkB,cAAc,KAAK,MAAM;AAC3C,sBAAgB,cAAc,IAAI,kBAAkB,cAAc;AAAA,IACtE;AAEA,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAChG,cAAU,QAAQ,QAAQ,IAAI,eAAe,KAAK,mBAAmB,OAAO,kBAAkB,eAAe,CAAC,CAAC,CAAC;AAEhH,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,UAAU,IAAI,oBAAoB,CAAC;AAAA,EACnG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,OAAO,mBAAkC,eAA0F;AACrI,UAAM,WAAW,MAAM,KAAK,UAAU,mBAAmB,aAAa;AACtE,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,eAAe,mBAAuC,eAA+G;AACvK,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,eAAe,KAAK,MAAM;AAC5C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAChG,cAAU,QAAQ,QAAQ,IAAI,eAAe,KAAK,mBAAmB,OAAO,kBAAkB,eAAe,CAAC,CAAC,CAAC;AAEhH,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,UAAU,IAAI,oBAAoB,CAAC;AAAA,EACnG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,YAAY,mBAAuC,eAA0F;AAC/I,UAAM,WAAW,MAAM,KAAK,eAAe,mBAAmB,aAAa;AAC3E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAEJ;;;AC3QO,IAAM,eAAN,cAAmC,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,EAM9C,MAAM,gBAAgB,mBAAwC,eAA4G;AACtK,QAAI,kBAAkB,OAAO,KAAK,MAAM;AACpC,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB,eAAe,KAAK,MAAM;AAC5C,YAAM,IAAY;AAAA,QACd;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,kBAAuB,CAAC;AAE9B,UAAM,mBAAwC,CAAC;AAE/C,QAAI,KAAK,iBAAiB,KAAK,cAAc,aAAa;AACtD,YAAM,QAAQ,KAAK,cAAc;AACjC,YAAM,cAAc,MAAM,MAAM,UAAU,CAAC,CAAC;AAE5C,UAAI,aAAa;AACb,yBAAiB,eAAe,IAAI,UAAU,WAAW;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAI,UAAU;AACd,cAAU,QAAQ,QAAQ,IAAI,OAAO,KAAK,mBAAmB,OAAO,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAChG,cAAU,QAAQ,QAAQ,IAAI,eAAe,KAAK,mBAAmB,OAAO,kBAAkB,eAAe,CAAC,CAAC,CAAC;AAEhH,UAAM,WAAW,MAAM,KAAK,QAAQ;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACX,GAAG,aAAa;AAEhB,WAAO,IAAY,gBAAgB,UAAU,CAAC,cAAc,yBAAyB,SAAS,CAAC;AAAA,EACnG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,aAAa,mBAAwC,eAAuF;AAC9I,UAAM,WAAW,MAAM,KAAK,gBAAgB,mBAAmB,aAAa;AAC5E,WAAO,MAAM,SAAS,MAAM;AAAA,EAChC;AAEJ;;;ACrEA,SAAS,2BAA2B;AA0B7B,IAAM,cAAc;AAE3B,IAAM,sBAAN,MAAgD;AAAA,EAC9C,MAAa,IAAI,SAAwC;AACvD,QAAI,CAAC,QAAQ,KAAK,SAAS;AACzB,cAAQ,KAAK,UAAU,CAAC;AAAA,IAC1B;AAEA,QAAI,QAAQ,KAAK,mBAAmB,SAAS;AAC3C,cAAQ,KAAK,QAAQ,IAAI,cAAc,OAAO,WAAW,aAAa;AAAA,IACxE,OAAO;AACL,MAAC,QAAQ,KAAK,QACZ,YACF,IAAI,OAAO,WAAW;AAAA,IACxB;AAAA,EACF;AAAA,EAEA,MAAa,KAAK,SAAyC;AAAA,EAAC;AAC9D;AAEO,IAAM,YAAN,MAAgB;AAAA,EAoBd,YACL,aACA,UAAgC,CAAC,GACjC;AAtBF,wBAAgB;AAChB,wBAAgB;AAChB,wBAAgB;AAChB,wBAAgB;AAChB,wBAAgB;AAChB,wBAAgB;AAChB,wBAAgB;AAChB,wBAAgB;AAChB,wBAAgB;AAChB,wBAAgB;AAChB,wBAAgB;AAChB,wBAAgB;AAChB,wBAAgB;AAChB,wBAAgB;AAChB,wBAAgB;AAChB,wBAAgB;AAChB,wBAAgB;AAChB,wBAAgB;AAChB,wBAAgB;AAKd,UAAM,UACJ,QAAQ,aAAa;AACvB,UAAM,YACJ,QAAQ,aACR;AAEF,SAAK,aAAa,EAAE,SAAS,WAAW,YAAY;AAEpD,UAAM,SAAS,IAAI,cAAc;AAAA,MAC/B,UAAU;AAAA,MACV,YAAY,CAAC,IAAI,oBAAoB,CAAC;AAAA,MACtC,aAAa,YAAY;AACvB,eAAO,OAAO,gBAAgB,WAC1B,cACA,MAAM,YAAY,SAAS;AAAA,MACjC;AAAA,MACA,SAAS;AAAA,QACP,cAAc,OAAO,WAAW;AAAA,MAClC;AAAA,IACF,CAAC;AAED,SAAK,iBAAiB;AACtB,SAAK,MAAM,IAAI,OAAO,MAAM;AAC5B,SAAK,UAAU,IAAI,WAAW,MAAM;AACpC,SAAK,QAAQ,IAAI,SAAS,MAAM;AAChC,SAAK,QAAQ,IAAI,SAAS,MAAM;AAChC,SAAK,UAAU,IAAI,WAAW,MAAM;AACpC,SAAK,cAAc,IAAI,eAAe,MAAM;AAC5C,SAAK,WAAW,IAAI,sBAAsB,MAAM;AAChD,SAAK,UAAU,IAAI,qBAAqB,MAAM;AAC9C,SAAK,SAAS,IAAI,UAAU,KAAK,UAAU;AAC3C,SAAK,SAAS,IAAI,UAAU,MAAM;AAClC,SAAK,YAAY,IAAI,aAAa,MAAM;AACxC,SAAK,OAAO,IAAI,QAAQ,MAAM;AAC9B,SAAK,aAAa,IAAI,cAAc,MAAM;AAC1C,SAAK,YAAY,IAAI,aAAa,MAAM;AACxC,SAAK,OAAO,IAAI,QAAQ,MAAM;AAC9B,SAAK,MAAM,IAAI,OAAO,MAAM;AAC5B,SAAK,WAAW,IAAI,YAAY,MAAM;AAGtC,QAAI,QAAQ,yBAAyB,MAAM;AACzC,WAAK,OAAO,QAAQ;AAAA,IACtB;AAAA,EACF;AAAA,EAEA,MAAM,WAAc,OAAe,UAAU,KAAmB;AAC9D,UAAM,cACJ,OAAO,KAAK,WAAW,gBAAgB,WACnC,KAAK,WAAW,cAChB,MAAM,KAAK,WAAW,YAAY,SAAS;AAEjD,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,YAAM,MAAM,IAAI;AAAA,QACd,GAAG,KAAK,WAAW,OAAO,SAAS,KAAK;AAAA,QACxC;AAAA,UACE,SAAS;AAAA,YACP,eAAe,UAAU,WAAW;AAAA,UACtC;AAAA,QACF;AAAA,MACF;AAEA,YAAM,YAAY,WAAW,MAAM;AACjC,YAAI,MAAM;AACV,eAAO,IAAI,MAAM,OAAO,KAAK,oBAAoB,OAAO,IAAI,CAAC;AAAA,MAC/D,GAAG,OAAO;AAEV,UAAI,YAAY,CAAC,UAAe;AAC9B,YAAI;AACF,kBAAQ,IAAI,gBAAgB,MAAM,IAAI;AACtC,gBAAM,OAAO,KAAK,MAAM,MAAM,IAAI;AAElC,cAAI,KAAK,WAAW,SAAS;AAC3B,gBAAI,MAAM;AACV,mBAAO,IAAI,MAAM,UAAU,KAAK,OAAO,EAAE,CAAC;AAAA,UAC5C,WAAW,KAAK,WAAW,aAAa;AACtC,yBAAa,SAAS;AACtB,gBAAI,MAAM;AACV,oBAAQ,IAAS;AAAA,UACnB;AAAA,QACF,SAAS,GAAG;AACV,uBAAa,SAAS;AACtB,cAAI,MAAM;AACV,iBAAO,IAAI,MAAM,0BAA0B,CAAC;AAAA,QAC9C;AAAA,MACF;AAEA,UAAI,SAAS,MAAM;AACjB,gBAAQ,IAAI,uBAAuB;AAAA,MACrC;AAEA,UAAI,UAAU,CAAC,UAAe;AAC5B,YAAI,MAAM,SAAS,SAAS,oBAAoB,GAAG;AACjD,kBAAQ,IAAI,uCAAuC;AACnD;AAAA,QACF;AAEA,qBAAa,SAAS;AAEtB,YAAI,MAAM;AACV,eAAO,IAAI,MAAM,4BAA4B,KAAK,EAAE,CAAC;AAAA,MACvD;AAAA,IACF,CAAC;AAAA,EACH;AACF;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/chainstream.ts","../src/openapi-client/chainstreamApiClient.ts","../src/stream/stream.ts","../src/stream/stream.fields.ts","../src/stream/stream.model.ts","../src/openapi-client/generated/blockchain/blockchain.ts","../src/openapi-client/generated/defi-sol-moonshot/defi-sol-moonshot.ts","../src/openapi-client/generated/defi-sol-pumpfun/defi-sol-pumpfun.ts","../src/openapi-client/generated/dex-pool/dex-pool.ts","../src/openapi-client/generated/dex/dex.ts","../src/openapi-client/generated/endpoint/endpoint.ts","../src/openapi-client/generated/ipfs/ipfs.ts","../src/openapi-client/generated/jobs/jobs.ts","../src/openapi-client/generated/kyt/kyt.ts","../src/openapi-client/generated/ranking/ranking.ts","../src/openapi-client/generated/red-packet/red-packet.ts","../src/openapi-client/generated/token/token.ts","../src/openapi-client/generated/trade/trade.ts","../src/openapi-client/generated/transaction/transaction.ts","../src/openapi-client/generated/wallet/wallet.ts","../src/openapi-client/generated/watchlist/watchlist.ts","../src/openapi-client/generated/dexAggregatorAPI.schemas.ts"],"sourcesContent":["import { EventSourcePolyfill } from \"event-source-polyfill\";\nimport { configure } from \"./openapi-client/chainstreamApiClient.js\";\nimport { StreamApi } from \"./stream/index.js\";\n\n// Import all API modules\nimport * as blockchainApi from \"./openapi-client/generated/blockchain/blockchain.js\";\nimport * as moonshotApi from \"./openapi-client/generated/defi-sol-moonshot/defi-sol-moonshot.js\";\nimport * as pumpfunApi from \"./openapi-client/generated/defi-sol-pumpfun/defi-sol-pumpfun.js\";\nimport * as dexPoolApi from \"./openapi-client/generated/dex-pool/dex-pool.js\";\nimport * as dexApi from \"./openapi-client/generated/dex/dex.js\";\nimport * as endpointApi from \"./openapi-client/generated/endpoint/endpoint.js\";\nimport * as ipfsApi from \"./openapi-client/generated/ipfs/ipfs.js\";\nimport * as jobsApi from \"./openapi-client/generated/jobs/jobs.js\";\nimport * as kytApi from \"./openapi-client/generated/kyt/kyt.js\";\nimport * as rankingApi from \"./openapi-client/generated/ranking/ranking.js\";\nimport * as redPacketApi from \"./openapi-client/generated/red-packet/red-packet.js\";\nimport * as tokenApi from \"./openapi-client/generated/token/token.js\";\nimport * as tradeApi from \"./openapi-client/generated/trade/trade.js\";\nimport * as transactionApi from \"./openapi-client/generated/transaction/transaction.js\";\nimport * as walletApi from \"./openapi-client/generated/wallet/wallet.js\";\nimport * as watchlistApi from \"./openapi-client/generated/watchlist/watchlist.js\";\n\nexport interface TokenProvider {\n getToken(): Promise<string> | string;\n}\n\nexport interface ChainStreamRequestContext {\n baseUrl: string;\n streamUrl: string;\n accessToken: string | TokenProvider;\n}\n\nexport interface ChainStreamClientOptions {\n debug?: boolean;\n serverUrl?: string;\n streamUrl?: string;\n /**\n * Whether to automatically connect to WebSocket on initialization.\n * Default: false\n *\n * If set to true, WebSocket will connect automatically.\n * If false or not set, you need to manually call `client.stream.connect()` when needed.\n */\n autoConnectWebSocket?: boolean;\n}\n\nexport class ChainStreamClient {\n public readonly requestCtx: ChainStreamRequestContext;\n\n // WebSocket streaming client\n public readonly stream: StreamApi;\n\n // REST API modules\n public readonly token: typeof tokenApi;\n public readonly dex: typeof dexApi;\n public readonly dexpool: typeof dexPoolApi;\n public readonly trade: typeof tradeApi;\n public readonly ranking: typeof rankingApi;\n public readonly transaction: typeof transactionApi;\n public readonly moonshot: typeof moonshotApi;\n public readonly pumpfun: typeof pumpfunApi;\n public readonly wallet: typeof walletApi;\n public readonly redPacket: typeof redPacketApi;\n public readonly ipfs: typeof ipfsApi;\n public readonly blockchain: typeof blockchainApi;\n public readonly watchlist: typeof watchlistApi;\n public readonly jobs: typeof jobsApi;\n public readonly kyt: typeof kytApi;\n public readonly endpoint: typeof endpointApi;\n\n public constructor(accessToken: string | TokenProvider, options: ChainStreamClientOptions = {}) {\n const baseUrl: string = options.serverUrl ?? \"https://api-dex.chainstream.io\";\n const streamUrl: string =\n options.streamUrl ?? \"wss://realtime-dex.chainstream.io/connection/websocket\";\n\n this.requestCtx = { baseUrl, streamUrl, accessToken };\n\n // Configure the API client with authentication\n configure({\n accessToken,\n basePath: baseUrl,\n debugging: options.debug,\n });\n\n // Assign API modules\n this.token = tokenApi;\n this.dex = dexApi;\n this.dexpool = dexPoolApi;\n this.trade = tradeApi;\n this.ranking = rankingApi;\n this.transaction = transactionApi;\n this.moonshot = moonshotApi;\n this.pumpfun = pumpfunApi;\n this.wallet = walletApi;\n this.redPacket = redPacketApi;\n this.ipfs = ipfsApi;\n this.blockchain = blockchainApi;\n this.watchlist = watchlistApi;\n this.jobs = jobsApi;\n this.kyt = kytApi;\n this.endpoint = endpointApi;\n\n // Initialize WebSocket streaming client\n this.stream = new StreamApi(this.requestCtx);\n\n // Only auto-connect WebSocket if explicitly enabled\n if (options.autoConnectWebSocket === true) {\n this.stream.connect();\n }\n }\n\n /**\n * Wait for a job to complete using Server-Sent Events (SSE)\n * @param jobId - The job ID to wait for\n * @param timeout - Timeout in milliseconds (default: 60000)\n * @returns Promise that resolves with the job result\n */\n async waitForJob<T>(jobId: string, timeout = 60000): Promise<T> {\n const accessToken =\n typeof this.requestCtx.accessToken === \"string\"\n ? this.requestCtx.accessToken\n : await this.requestCtx.accessToken.getToken();\n\n return new Promise((resolve, reject) => {\n const sse = new EventSourcePolyfill(`${this.requestCtx.baseUrl}/jobs/${jobId}/streaming`, {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n });\n\n const timeoutId = setTimeout(() => {\n sse.close();\n reject(new Error(`Job ${jobId} timed out after ${timeout}ms`));\n }, timeout);\n\n sse.onmessage = event => {\n try {\n console.log(\"event.data: \", event.data);\n const data = JSON.parse(event.data as string);\n\n if (data.status === \"error\") {\n sse.close();\n reject(new Error(`Error: ${data.message}`));\n } else if (data.status === \"completed\") {\n clearTimeout(timeoutId);\n sse.close();\n resolve(data as T);\n }\n } catch {\n clearTimeout(timeoutId);\n sse.close();\n reject(new Error(\"Error parsing event data\"));\n }\n };\n\n sse.onopen = () => {\n console.log(\"SSE connection opened\");\n };\n\n sse.onerror = error => {\n const errorEvent = error as Event & { message?: string };\n if (errorEvent.message?.includes(\"No activity within\")) {\n console.log(\"SSE reconnecting due to inactivity...\");\n return;\n }\n\n clearTimeout(timeoutId);\n sse.close();\n reject(new Error(`Error in SSE connection: ${error}`));\n };\n });\n }\n}\n\nexport interface PostOptions {\n idempotencyKey?: string;\n}\n","import Axios, { AxiosInstance, AxiosRequestConfig } from \"axios\";\nimport axiosRetry, { exponentialDelay } from \"axios-retry\";\n\nimport type { TokenProvider } from \"../chainstream.js\";\n\n/**\n * The options for the ChainStream API client.\n */\nexport type ChainStreamApiOptions = {\n /**\n * The access token for authentication.\n * Can be a string or a TokenProvider that dynamically provides tokens.\n */\n accessToken: string | TokenProvider;\n\n /** The base path for the API. Defaults to https://api-dex.chainstream.io */\n basePath?: string;\n\n /** If true, logs API requests and responses to the console. */\n debugging?: boolean;\n\n /** The source for the API request, used for analytics. */\n source?: string;\n\n /** The version of the source for the API request, used for analytics. */\n sourceVersion?: string;\n};\n\nlet axiosInstance: AxiosInstance;\nlet currentOptions: ChainStreamApiOptions | undefined = undefined;\n\n/**\n * Configures the ChainStream API client with the given options.\n *\n * @param {ChainStreamApiOptions} options - The ChainStream API options.\n */\nexport const configure = (options: ChainStreamApiOptions) => {\n const baseURL = options.basePath || \"https://api-dex.chainstream.io\";\n\n currentOptions = {\n ...options,\n basePath: baseURL,\n };\n\n axiosInstance = Axios.create({\n baseURL,\n });\n\n axiosRetry(axiosInstance, {\n retryDelay: exponentialDelay,\n });\n\n // Add request interceptor for authentication\n axiosInstance.interceptors.request.use(async config => {\n const token =\n typeof options.accessToken === \"string\"\n ? options.accessToken\n : await options.accessToken.getToken();\n\n config.headers.Authorization = `Bearer ${token}`;\n config.headers[\"Content-Type\"] = \"application/json\";\n\n if (options.source) {\n config.headers[\"X-Source\"] = options.source;\n }\n if (options.sourceVersion) {\n config.headers[\"X-Source-Version\"] = options.sourceVersion;\n }\n\n if (options.debugging) {\n console.log(`[ChainStream API] ${config.method?.toUpperCase()} ${config.url}`);\n }\n\n return config;\n });\n\n // Add response interceptor for debugging\n if (options.debugging) {\n axiosInstance.interceptors.response.use(\n response => {\n console.log(`[ChainStream API] Response:`, response.status, response.data);\n return response;\n },\n error => {\n console.error(`[ChainStream API] Error:`, error.response?.status, error.response?.data);\n return Promise.reject(error);\n },\n );\n }\n};\n\n/**\n * Adds an idempotency key to request config if provided\n *\n * @param config - The Axios request configuration.\n * @param idempotencyKey - The idempotency key.\n * @returns The Axios request configuration with the idempotency key.\n */\nconst addIdempotencyKey = (\n config: AxiosRequestConfig,\n idempotencyKey?: string,\n): AxiosRequestConfig => {\n if (!idempotencyKey) {\n return config;\n }\n\n return {\n ...config,\n headers: {\n ...(config.headers || {}),\n \"X-Idempotency-Key\": idempotencyKey,\n },\n };\n};\n\n/**\n * The ChainStream API client function that handles authentication and error handling.\n *\n * @param {AxiosRequestConfig} config - The Axios request configuration.\n * @param idempotencyKey - Optional idempotency key.\n * @returns {Promise<T>} A promise that resolves to the response data.\n * @throws {Error} If the request fails.\n */\nexport const chainstreamApiClient = async <T>(\n config: AxiosRequestConfig,\n idempotencyKey?: string,\n): Promise<T> => {\n if (!axiosInstance) {\n throw new Error(\"ChainStream API client not configured. Call configure() first.\");\n }\n\n if (!config.url || config.url === \"\") {\n throw new Error(\"AxiosRequestConfig URL is empty.\");\n }\n\n if (!config.method || config.method === \"\") {\n throw new Error(\"AxiosRequestConfig method is empty.\");\n }\n\n // Add idempotency key to the request headers if provided\n const configWithIdempotencyKey = addIdempotencyKey(config, idempotencyKey);\n\n try {\n const response = await axiosInstance(configWithIdempotencyKey);\n return response.data as T;\n } catch (error) {\n // eslint-disable-next-line import/no-named-as-default-member\n if (Axios.isAxiosError(error) && error.response) {\n const statusCode = error.response.status;\n const responseData = error.response.data;\n\n throw new Error(\n `ChainStream API error (${statusCode}): ${\n typeof responseData === \"string\" ? responseData : JSON.stringify(responseData)\n }`,\n );\n }\n\n throw error;\n }\n};\n\n/**\n * Get the current configuration\n */\nexport const getConfig = () => currentOptions;\n","import { Centrifuge, ConnectionTokenContext } from \"@chainstream-io/centrifuge\";\nimport { ChainStreamRequestContext } from \"../chainstream.js\";\nimport { Resolution } from \"../openapi-client/index.js\";\nimport {\n WsDexPoolBalance,\n WsNewToken,\n WsTokenMetadata,\n WsTokenHolder,\n WsTokenStat,\n WsTokenLiquidity,\n WsTokenMaxLiquidity,\n WsTokenTotalLiquidity,\n WsWalletBalance,\n WsTokenSupply,\n WsWalletPnl,\n WsChannelType,\n WsTokenCandle,\n WsTradeActivity,\n WsWalletTokenPnl,\n WsRankingType,\n WsDex,\n WsRankingTokenList,\n WsTokenBondingCurve,\n} from \"./stream.model.js\";\nimport { replaceFilterFields } from \"./stream.fields.js\";\n\nexport interface Unsubscribable {\n unsubscribe(): void;\n}\n\nexport class StreamApi {\n private realtimeClient!: Centrifuge;\n private listenersMap: Map<string, Set<(data: unknown) => void>>;\n private context: ChainStreamRequestContext;\n private initPromise: Promise<void> | null = null;\n\n constructor(context: ChainStreamRequestContext) {\n this.context = context;\n this.listenersMap = new Map();\n }\n\n /**\n * Initialize Centrifuge client with current token\n * This is called lazily when connect() is called\n */\n private async initClient(): Promise<void> {\n if (this.realtimeClient) {\n return;\n }\n\n // Get initial token for URL\n const token = await this.getTokenValue();\n const realtimeEndpoint = this.buildWsUrl(this.context.streamUrl, token);\n\n this.realtimeClient = new Centrifuge(realtimeEndpoint, {\n getToken: async (_ctx: ConnectionTokenContext) => {\n return this.getTokenValue();\n },\n });\n\n this.realtimeClient\n .on(\"connected\", () => {\n console.log(\"[streaming] connected\");\n })\n .on(\"disconnected\", ctx => {\n console.warn(\"[streaming] disconnected\", ctx);\n })\n .on(\"error\", err => {\n console.error(\"[streaming] error: \", err);\n });\n }\n\n /**\n * Wait for initialization to complete\n * If not initialized, auto-connect first\n */\n private async ensureInitialized(): Promise<void> {\n if (!this.initPromise) {\n // Auto-connect if not initialized\n this.connect();\n }\n await this.initPromise;\n }\n\n /**\n * Get token value from string or TokenProvider\n */\n private async getTokenValue(): Promise<string> {\n return typeof this.context.accessToken === \"string\"\n ? this.context.accessToken\n : await this.context.accessToken.getToken();\n }\n\n /**\n * Build WebSocket URL with token as query parameter\n */\n private buildWsUrl(endpoint: string, token: string): string {\n const url = new URL(endpoint);\n url.searchParams.set(\"token\", token);\n return url.toString();\n }\n\n /**\n * Connect to the WebSocket server.\n * This is automatically called when you use subscribe methods if not already connected.\n * You can also call this method manually for explicit control.\n */\n connect(): void {\n // Start initialization and store the promise\n this.initPromise = this.initClient().then(() => {\n this.realtimeClient.connect();\n });\n }\n\n /**\n * Disconnect from the WebSocket server.\n * All subscriptions will be automatically removed.\n */\n disconnect(): void {\n if (this.realtimeClient) {\n this.realtimeClient.disconnect();\n }\n }\n\n /**\n * Check if the WebSocket is currently connected.\n */\n isConnected(): boolean {\n return this.realtimeClient?.state === \"connected\";\n }\n\n /**\n * Start batching commands for efficient bulk operations\n * All subscription commands after this call will be batched until stopBatching is called\n */\n startBatching(): void {\n if (this.realtimeClient) {\n this.realtimeClient.startBatching();\n }\n }\n\n /**\n * Stop batching and flush all collected commands to the server\n * This will send all batched subscription commands in a single network request\n */\n stopBatching(): void {\n if (this.realtimeClient) {\n this.realtimeClient.stopBatching();\n }\n }\n\n /**\n * Batch subscribe method that accepts a function containing subscription calls\n * All subscription methods called within the function will be batched\n * @param batchFunction Function containing subscription method calls\n * @returns Array of unsubscribe functions\n */\n batchSubscribe(batchFunction: () => Unsubscribable[]): Unsubscribable[] {\n // Start batching commands\n this.startBatching();\n\n // Execute the batch function (all subscription calls will be batched)\n const unsubscribables = batchFunction();\n\n // Stop batching and flush all commands\n this.stopBatching();\n\n return unsubscribables;\n }\n\n /**\n * Batch unsubscribe method that accepts an array of unsubscribe functions\n * All unsubscribe calls will be executed at once\n * @param unsubscribables Array of unsubscribe functions to execute\n */\n batchUnsubscribe(unsubscribables: Unsubscribable[]): void {\n if (!unsubscribables || unsubscribables.length === 0) {\n return;\n }\n\n // Execute all unsubscribe calls\n unsubscribables.forEach(unsub => {\n if (unsub && typeof unsub.unsubscribe === \"function\") {\n unsub.unsubscribe();\n }\n });\n }\n\n subscribe<T = unknown>(\n channel: string,\n fn: (data: T) => void,\n filter?: string,\n methodName?: string,\n ): Unsubscribable {\n // Add listener immediately\n let listeners = this.listenersMap.get(channel);\n if (!listeners) {\n listeners = new Set();\n this.listenersMap.set(channel, listeners);\n }\n listeners.add(fn as (data: unknown) => void);\n\n // Perform subscription after initialization is complete\n this.ensureInitialized().then(() => {\n let sub = this.realtimeClient.getSubscription(channel);\n\n if (!sub) {\n console.log(\"[xrealtime] create new sub: \", channel);\n\n // Process filter expression with method-specific field mappings\n const processedFilter =\n filter && methodName ? replaceFilterFields(filter, methodName) : filter;\n\n sub = this.realtimeClient.newSubscription(channel, {\n delta: \"fossil\",\n ...(processedFilter && { filter: processedFilter }),\n });\n\n sub\n .on(\"subscribed\", () => {\n console.log(\"[xrealtime] subscribed\", channel);\n })\n .on(\"unsubscribed\", () => {\n console.log(\"[xrealtime] unsubscribed\", channel);\n })\n .on(\"publication\", ctx => {\n const currentListeners = this.listenersMap.get(channel);\n currentListeners?.forEach(it => it(ctx.data));\n })\n .subscribe();\n }\n });\n\n return new StreamUnsubscribable<T>(this, channel, fn);\n }\n\n unsubscribe<T = unknown>(channel: string, fn: (data: T) => void): void {\n const listeners = this.listenersMap.get(channel);\n if (!listeners) {\n return;\n }\n\n listeners.delete(fn as (data: unknown) => void);\n console.log(\"unsubscribe, remain listeners: \", listeners.size);\n\n if (listeners.size === 0) {\n console.log(\"unsubscribe channel: \", channel);\n this.listenersMap.delete(channel);\n\n // Remove subscription after initialization is complete\n this.ensureInitialized().then(() => {\n const sub = this.realtimeClient.getSubscription(channel);\n if (sub) {\n sub.unsubscribe();\n this.realtimeClient.removeSubscription(sub);\n }\n });\n }\n }\n\n private formatScientificNotation(value: unknown): string {\n if (value === null || value === undefined) {\n return \"0\";\n }\n\n const strValue = value.toString();\n if (strValue.includes(\"e-\") || strValue.includes(\"E-\")) {\n return Number(value)\n .toFixed(20)\n .replace(/\\.?0+$/, \"\");\n }\n\n return strValue;\n }\n\n subscribeTokenCandles({\n chain,\n tokenAddress,\n resolution,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n resolution: Resolution;\n callback: (data: WsTokenCandle) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-candle:${chain}_${tokenAddress}_${resolution}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) => {\n callback({\n open: data.o as string,\n close: data.c as string,\n high: data.h as string,\n low: data.l as string,\n volume: data.v as string,\n resolution: data.r as Resolution,\n time: data.t as number,\n number: data.n as number,\n });\n },\n filter,\n \"subscribeTokenCandles\",\n );\n }\n\n subscribeTokenStats({\n chain,\n tokenAddress,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n callback: (data: WsTokenStat) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-token-stats:${chain}_${tokenAddress}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) =>\n callback({\n address: data.a as string,\n timestamp: data.t as number,\n buys1m: data.b1m as number,\n sells1m: data.s1m as number,\n buyers1m: data.be1m as number,\n sellers1m: data.se1m as number,\n buyVolumeInUsd1m: this.formatScientificNotation(data.bviu1m),\n sellVolumeInUsd1m: this.formatScientificNotation(data.sviu1m),\n price1m: this.formatScientificNotation(data.p1m),\n openInUsd1m: this.formatScientificNotation(data.oiu1m),\n closeInUsd1m: this.formatScientificNotation(data.ciu1m),\n\n buys5m: data.b5m as number,\n sells5m: data.s5m as number,\n buyers5m: data.be5m as number,\n sellers5m: data.se5m as number,\n buyVolumeInUsd5m: this.formatScientificNotation(data.bviu5m),\n sellVolumeInUsd5m: this.formatScientificNotation(data.sviu5m),\n price5m: this.formatScientificNotation(data.p5m),\n openInUsd5m: this.formatScientificNotation(data.oiu5m),\n closeInUsd5m: this.formatScientificNotation(data.ciu5m),\n\n buys15m: data.b15m as number,\n sells15m: data.s15m as number,\n buyers15m: data.be15m as number,\n sellers15m: data.se15m as number,\n buyVolumeInUsd15m: this.formatScientificNotation(data.bviu15m),\n sellVolumeInUsd15m: this.formatScientificNotation(data.sviu15m),\n price15m: this.formatScientificNotation(data.p15m),\n openInUsd15m: this.formatScientificNotation(data.oiu15m),\n closeInUsd15m: this.formatScientificNotation(data.ciu15m),\n\n buys30m: data.b30m as number,\n sells30m: data.s30m as number,\n buyers30m: data.be30m as number,\n sellers30m: data.se30m as number,\n buyVolumeInUsd30m: this.formatScientificNotation(data.bviu30m),\n sellVolumeInUsd30m: this.formatScientificNotation(data.sviu30m),\n price30m: this.formatScientificNotation(data.p30m),\n openInUsd30m: this.formatScientificNotation(data.oiu30m),\n closeInUsd30m: this.formatScientificNotation(data.ciu30m),\n\n buys1h: data.b1h as number,\n sells1h: data.s1h as number,\n buyers1h: data.be1h as number,\n sellers1h: data.se1h as number,\n buyVolumeInUsd1h: this.formatScientificNotation(data.bviu1h),\n sellVolumeInUsd1h: this.formatScientificNotation(data.sviu1h),\n price1h: this.formatScientificNotation(data.p1h),\n openInUsd1h: this.formatScientificNotation(data.oiu1h),\n closeInUsd1h: this.formatScientificNotation(data.ciu1h),\n\n buys4h: data.b4h as number,\n sells4h: data.s4h as number,\n buyers4h: data.be4h as number,\n sellers4h: data.se4h as number,\n buyVolumeInUsd4h: this.formatScientificNotation(data.bviu4h),\n sellVolumeInUsd4h: this.formatScientificNotation(data.sviu4h),\n price4h: this.formatScientificNotation(data.p4h),\n openInUsd4h: this.formatScientificNotation(data.oiu4h),\n closeInUsd4h: this.formatScientificNotation(data.ciu4h),\n\n buys24h: data.b24h as number,\n sells24h: data.s24h as number,\n buyers24h: data.be24h as number,\n sellers24h: data.se24h as number,\n buyVolumeInUsd24h: this.formatScientificNotation(data.bviu24h),\n sellVolumeInUsd24h: this.formatScientificNotation(data.sviu24h),\n price24h: this.formatScientificNotation(data.p24h),\n openInUsd24h: this.formatScientificNotation(data.oiu24h),\n closeInUsd24h: this.formatScientificNotation(data.ciu24h),\n\n price: this.formatScientificNotation(data.p),\n }),\n filter,\n \"subscribeTokenStats\",\n );\n }\n\n subscribeTokenHolders({\n chain,\n tokenAddress,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n callback: (data: WsTokenHolder) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-token-holding:${chain}_${tokenAddress}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) =>\n callback({\n tokenAddress: data.a as string,\n holders: data.h as number,\n top100HoldersAmount: this.formatScientificNotation(data.t100a),\n top50HoldersAmount: this.formatScientificNotation(data.t50a),\n top10HoldersAmount: this.formatScientificNotation(data.t10a),\n top100Holders: data.t100h as number,\n top50Holders: data.t50h as number,\n top10Holders: data.t10h as number,\n top100HoldersRatio: this.formatScientificNotation(data.t100r),\n top50HoldersRatio: this.formatScientificNotation(data.t50r),\n top10HoldersRatio: this.formatScientificNotation(data.t10r),\n creatorsHolders: data.ch as number,\n creatorsAmount: this.formatScientificNotation(data.ca),\n creatorsRatio: this.formatScientificNotation(data.cr),\n balanceTagFreshHolders: data.btfh as number,\n balanceTagFreshAmount: this.formatScientificNotation(data.btfa),\n balanceTagFreshRatio: this.formatScientificNotation(data.btfr),\n balanceTagSandwichHolders: data.btsh as number,\n balanceTagSandwichAmount: this.formatScientificNotation(data.btsa),\n balanceTagSandwichRatio: this.formatScientificNotation(data.btsr),\n balanceTagBundleHolders: data.btbh as number,\n balanceTagBundleAmount: this.formatScientificNotation(data.btba),\n balanceTagBundleRatio: this.formatScientificNotation(data.btbr),\n balanceTagSniperHolders: data.btsnh as number,\n balanceTagSniperAmount: this.formatScientificNotation(data.btsna),\n balanceTagSniperRatio: this.formatScientificNotation(data.btsnr),\n balanceTagDevHolders: data.btdh as number,\n balanceTagDevAmount: this.formatScientificNotation(data.btda),\n balanceTagDevRatio: this.formatScientificNotation(data.btdr),\n balanceTagProHolders: data.btph as number,\n balanceTagProAmount: this.formatScientificNotation(data.btpa),\n balanceTagProRatio: this.formatScientificNotation(data.btpr),\n balanceTagInsiderHolders: data.btih as number,\n balanceTagInsiderAmount: this.formatScientificNotation(data.btia),\n balanceTagInsiderRatio: this.formatScientificNotation(data.btir),\n balanceTagSmartHolders: data.btsmh as number,\n balanceTagSmartAmount: this.formatScientificNotation(data.btsma),\n balanceTagSmartRatio: this.formatScientificNotation(data.btsmr),\n balanceTagKolHolders: data.btkh as number,\n balanceTagKolAmount: this.formatScientificNotation(data.btka),\n balanceTagKolRatio: this.formatScientificNotation(data.btkr),\n balanceTagPhishingHolders: data.btphh as number,\n balanceTagPhishingAmount: this.formatScientificNotation(data.btpha),\n balanceTagPhishingRatio: this.formatScientificNotation(data.btphr),\n balanceTagBluechipHolders: data.btblh as number,\n balanceTagBluechipAmount: this.formatScientificNotation(data.btbla),\n balanceTagBluechipRatio: this.formatScientificNotation(data.btblr),\n balanceTagRatHolders: data.btrh as number,\n balanceTagRatAmount: this.formatScientificNotation(data.btra),\n balanceTagRatRatio: this.formatScientificNotation(data.btrr),\n timestamp: data.ts as number,\n }),\n filter,\n \"subscribeTokenHolders\",\n );\n }\n\n subscribeNewToken({\n chain,\n callback,\n filter,\n }: {\n chain: string;\n callback: (data: WsNewToken) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-new-token:${chain}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) => {\n const result: WsNewToken = {\n tokenAddress: data.a as string,\n name: data.n as string,\n symbol: data.s as string,\n createdAtMs: data.cts as number,\n };\n\n if (data.dec) {\n result.decimals = data.dec as number;\n }\n\n if (data.lf) {\n const lf = data.lf as Record<string, unknown>;\n result.launchFrom = {};\n if (lf.pa) {\n result.launchFrom.programAddress = lf.pa as string;\n }\n if (lf.pf) {\n result.launchFrom.protocolFamily = lf.pf as string;\n }\n if (lf.pn) {\n result.launchFrom.protocolName = lf.pn as string;\n }\n }\n\n callback(result);\n },\n filter,\n \"subscribeNewToken\",\n );\n }\n\n subscribeNewTokensMetadata({\n chain,\n callback,\n }: {\n chain: string;\n callback: (data: WsTokenMetadata[]) => void;\n }): Unsubscribable {\n const channel = `dex-new-tokens-metadata:${chain}`;\n return this.subscribe(channel, (data: Record<string, unknown>[]) =>\n callback(\n data.map(it => ({\n tokenAddress: it.a as string,\n name: it.n as string,\n symbol: it.s as string,\n imageUrl: it.iu as string,\n description: it.de as string,\n socialMedia: (() => {\n const sm = it.sm as Record<string, unknown> | undefined;\n if (!sm) return undefined;\n return {\n twitter: sm.tw as string | undefined,\n telegram: sm.tg as string | undefined,\n website: sm.w as string | undefined,\n tiktok: sm.tt as string | undefined,\n discord: sm.dc as string | undefined,\n facebook: sm.fb as string | undefined,\n github: sm.gh as string | undefined,\n instagram: sm.ig as string | undefined,\n linkedin: sm.li as string | undefined,\n medium: sm.md as string | undefined,\n reddit: sm.rd as string | undefined,\n youtube: sm.yt as string | undefined,\n bitbucket: sm.bb as string | undefined,\n };\n })(),\n createdAtMs: it.cts as number,\n })),\n ),\n );\n }\n\n subscribeTokenSupply({\n chain,\n tokenAddress,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n callback: (data: WsTokenSupply) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-token-supply:${chain}_${tokenAddress}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) =>\n callback({\n tokenAddress: data.a as string,\n supply: data.s as string,\n marketCapInUsd: data.mc as string,\n timestamp: data.ts as number,\n }),\n filter,\n \"subscribeTokenSupply\",\n );\n }\n\n subscribeTokenLiquidity({\n chain,\n tokenAddress,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n callback: (data: WsTokenLiquidity) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-token-general-stat-num:${chain}_${tokenAddress}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) =>\n callback({\n tokenAddress: data.a as string,\n metricType: data.t as WsTokenLiquidity[\"metricType\"],\n value: data.v as string,\n timestamp: data.ts as number,\n }),\n filter,\n \"subscribeTokenLiquidity\",\n );\n }\n\n /**\n * Subscribe to token max liquidity updates\n * Pushes the max liquidity info of a token in a single pool\n * Channel: dex-token-liquidity:{chain}_{token_address}\n */\n subscribeTokenMaxLiquidity({\n chain,\n tokenAddress,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n callback: (data: WsTokenMaxLiquidity) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-token-liquidity:${chain}_${tokenAddress}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) =>\n callback({\n tokenAddress: data.a as string,\n poolAddress: data.p as string,\n liquidityInUsd: data.liu as string,\n liquidityInNative: data.lin as string,\n timestamp: data.ts as number,\n }),\n filter,\n \"subscribeTokenMaxLiquidity\",\n );\n }\n\n /**\n * Subscribe to token total liquidity updates\n * Pushes the total liquidity info of a token across all pools\n * Channel: dex-token-total-liquidity:{chain}_{token_address}\n */\n subscribeTokenTotalLiquidity({\n chain,\n tokenAddress,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n callback: (data: WsTokenTotalLiquidity) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-token-total-liquidity:${chain}_${tokenAddress}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) =>\n callback({\n tokenAddress: data.a as string,\n liquidityInUsd: data.liu as string,\n liquidityInNative: data.lin as string,\n poolCount: data.pc as number,\n timestamp: data.ts as number,\n }),\n filter,\n \"subscribeTokenTotalLiquidity\",\n );\n }\n\n subscribeRankingTokensLiquidity({\n chain,\n channelType,\n callback,\n }: {\n chain: string;\n channelType: WsChannelType;\n callback: (data: WsTokenLiquidity[]) => void;\n }): Unsubscribable {\n const channel = `dex-ranking-token-general_stat_num-list:${chain}_${channelType}`;\n return this.subscribe(channel, (data: Record<string, unknown>[]) =>\n callback(\n data?.map(it => ({\n tokenAddress: it.a as string,\n metricType: it.t as WsTokenLiquidity[\"metricType\"],\n value: it.v as string,\n timestamp: it.ts as number,\n })),\n ),\n );\n }\n\n subscribeRankingTokensList({\n chain,\n ranking_type,\n dex,\n callback,\n }: {\n chain: string;\n ranking_type: WsRankingType;\n dex?: WsDex;\n callback: (data: WsRankingTokenList[]) => void;\n }): Unsubscribable {\n const channel = dex\n ? `dex-ranking-list:${chain}_${ranking_type}_${dex}`\n : `dex-ranking-list:${chain}_${ranking_type}`;\n return this.subscribe(channel, (data: Record<string, unknown>[]) =>\n callback(\n data?.map(item => {\n const result: WsRankingTokenList = {};\n const t = item.t as Record<string, unknown> | undefined;\n const bc = item.bc as Record<string, unknown> | undefined;\n const h = item.h as Record<string, unknown> | undefined;\n const s = item.s as Record<string, unknown> | undefined;\n const ts = item.ts as Record<string, unknown> | undefined;\n\n // TokenMetadata (t)\n if (t) {\n result.metadata = {\n tokenAddress: t.a as string,\n };\n if (t.n) {\n result.metadata.name = t.n as string;\n }\n if (t.s) {\n result.metadata.symbol = t.s as string;\n }\n if (t.iu) {\n result.metadata.imageUrl = t.iu as string;\n }\n if (t.de) {\n result.metadata.description = t.de as string;\n }\n if (t.dec) {\n result.metadata.decimals = t.dec as number;\n }\n if (t.cts) {\n result.metadata.createdAtMs = t.cts as number;\n }\n if (t.lf) {\n const lf = t.lf as Record<string, unknown>;\n result.metadata.launchFrom = {};\n if (lf.pa) {\n result.metadata.launchFrom.programAddress = lf.pa as string;\n }\n if (lf.pf) {\n result.metadata.launchFrom.protocolFamily = lf.pf as string;\n }\n if (lf.pn) {\n result.metadata.launchFrom.protocolName = lf.pn as string;\n }\n }\n if (t.mt) {\n const mt = t.mt as Record<string, unknown>;\n result.metadata.migratedTo = {};\n if (mt.pa) {\n result.metadata.migratedTo.programAddress = mt.pa as string;\n }\n if (mt.pf) {\n result.metadata.migratedTo.protocolFamily = mt.pf as string;\n }\n if (mt.pn) {\n result.metadata.migratedTo.protocolName = mt.pn as string;\n }\n }\n if (t.sm) {\n const sm = t.sm as Record<string, unknown>;\n result.metadata.socialMedia = {};\n if (sm.tw) {\n result.metadata.socialMedia.twitter = sm.tw as string;\n }\n if (sm.tg) {\n result.metadata.socialMedia.telegram = sm.tg as string;\n }\n if (sm.w) {\n result.metadata.socialMedia.website = sm.w as string;\n }\n if (sm.tt) {\n result.metadata.socialMedia.tiktok = sm.tt as string;\n }\n if (sm.dc) {\n result.metadata.socialMedia.discord = sm.dc as string;\n }\n if (sm.fb) {\n result.metadata.socialMedia.facebook = sm.fb as string;\n }\n if (sm.gh) {\n result.metadata.socialMedia.github = sm.gh as string;\n }\n if (sm.ig) {\n result.metadata.socialMedia.instagram = sm.ig as string;\n }\n if (sm.li) {\n result.metadata.socialMedia.linkedin = sm.li as string;\n }\n if (sm.md) {\n result.metadata.socialMedia.medium = sm.md as string;\n }\n if (sm.rd) {\n result.metadata.socialMedia.reddit = sm.rd as string;\n }\n if (sm.yt) {\n result.metadata.socialMedia.youtube = sm.yt as string;\n }\n if (sm.bb) {\n result.metadata.socialMedia.bitbucket = sm.bb as string;\n }\n }\n }\n\n // WsTokenBondingCurve (bc)\n if (bc) {\n result.bondingCurve = {};\n if (bc.pr) {\n result.bondingCurve.progressRatio = this.formatScientificNotation(bc.pr);\n }\n }\n\n // TokenHolder (h)\n if (h) {\n result.holder = {\n tokenAddress: h.a as string,\n timestamp: (h.ts as number) || 0,\n };\n if (h.h) {\n result.holder.holders = h.h as number;\n }\n if (h.t100a) {\n result.holder.top100HoldersAmount = this.formatScientificNotation(h.t100a);\n }\n if (h.t50a) {\n result.holder.top50HoldersAmount = this.formatScientificNotation(h.t50a);\n }\n if (h.t10a) {\n result.holder.top10HoldersAmount = this.formatScientificNotation(h.t10a);\n }\n if (h.t100h) {\n result.holder.top100Holders = h.t100h as number;\n }\n if (h.t50h) {\n result.holder.top50Holders = h.t50h as number;\n }\n if (h.t10h) {\n result.holder.top10Holders = h.t10h as number;\n }\n if (h.t100r) {\n result.holder.top100HoldersRatio = this.formatScientificNotation(h.t100r);\n }\n if (h.t50r) {\n result.holder.top50HoldersRatio = this.formatScientificNotation(h.t50r);\n }\n if (h.t10r) {\n result.holder.top10HoldersRatio = this.formatScientificNotation(h.t10r);\n }\n }\n\n // WsTokenSupply (s)\n if (s) {\n result.supply = {\n tokenAddress: s.a as string,\n timestamp: (s.ts as number) || 0,\n };\n if (s.s) {\n result.supply.supply = s.s as string;\n }\n if (s.mc) {\n result.supply.marketCapInUsd = s.mc as string;\n }\n }\n\n // TokenStat (ts)\n if (ts) {\n result.stat = {\n address: ts.a as string,\n timestamp: (ts.t as number) || 0,\n };\n\n // 1m data\n if (ts.b1m) {\n result.stat.buys1m = ts.b1m as number;\n }\n if (ts.s1m) {\n result.stat.sells1m = ts.s1m as number;\n }\n if (ts.be1m) {\n result.stat.buyers1m = ts.be1m as number;\n }\n if (ts.se1m) {\n result.stat.sellers1m = ts.se1m as number;\n }\n if (ts.bviu1m) {\n result.stat.buyVolumeInUsd1m = this.formatScientificNotation(ts.bviu1m);\n }\n if (ts.sviu1m) {\n result.stat.sellVolumeInUsd1m = this.formatScientificNotation(ts.sviu1m);\n }\n if (ts.p1m) {\n result.stat.price1m = this.formatScientificNotation(ts.p1m);\n }\n\n // Current price\n if (ts.p) {\n result.stat.price = this.formatScientificNotation(ts.p);\n }\n }\n\n return result;\n }),\n ),\n );\n }\n\n subscribeRankingTokensStats({\n chain,\n channelType,\n callback,\n }: {\n chain: string;\n channelType: WsChannelType;\n callback: (data: WsTokenStat[]) => void;\n }): Unsubscribable {\n const channel = `dex-ranking-token-stats-list:${chain}_${channelType}`;\n return this.subscribe(channel, (data: Record<string, unknown>[]) =>\n callback(\n data?.map(\n it =>\n ({\n address: it.a,\n timestamp: it.t,\n buys1m: it.b1m,\n sells1m: it.s1m,\n buyers1m: it.be1m,\n sellers1m: it.se1m,\n buyVolumeInUsd1m: this.formatScientificNotation(it.bviu1m),\n sellVolumeInUsd1m: this.formatScientificNotation(it.sviu1m),\n price1m: this.formatScientificNotation(it.p1m),\n openInUsd1m: this.formatScientificNotation(it.oiu1m),\n closeInUsd1m: this.formatScientificNotation(it.ciu1m),\n buys5m: it.b5m,\n sells5m: it.s5m,\n buyers5m: it.be5m,\n sellers5m: it.se5m,\n buyVolumeInUsd5m: this.formatScientificNotation(it.bviu5m),\n sellVolumeInUsd5m: this.formatScientificNotation(it.sviu5m),\n price5m: this.formatScientificNotation(it.p5m),\n openInUsd5m: this.formatScientificNotation(it.oiu5m),\n closeInUsd5m: this.formatScientificNotation(it.ciu5m),\n price: this.formatScientificNotation(it.p),\n }) as WsTokenStat,\n ),\n ),\n );\n }\n\n subscribeRankingTokensHolders({\n chain,\n channelType,\n callback,\n }: {\n chain: string;\n channelType: WsChannelType;\n callback: (data: WsTokenHolder[]) => void;\n }): Unsubscribable {\n const channel = `dex-ranking-token-holding-list:${chain}_${channelType}`;\n return this.subscribe(channel, (data: Record<string, unknown>[]) =>\n callback(\n data?.map(\n it =>\n ({\n tokenAddress: it.a,\n holders: it.h,\n top100HoldersAmount: this.formatScientificNotation(it.t100a),\n top50HoldersAmount: this.formatScientificNotation(it.t50a),\n top10HoldersAmount: this.formatScientificNotation(it.t10a),\n top100Holders: it.t100h,\n top50Holders: it.t50h,\n top10Holders: it.t10h,\n top100HoldersRatio: this.formatScientificNotation(it.t100r),\n top50HoldersRatio: this.formatScientificNotation(it.t50r),\n top10HoldersRatio: this.formatScientificNotation(it.t10r),\n timestamp: it.ts,\n }) as WsTokenHolder,\n ),\n ),\n );\n }\n\n subscribeRankingTokensSupply({\n chain,\n channelType,\n callback,\n }: {\n chain: string;\n channelType: WsChannelType;\n callback: (data: WsTokenSupply[]) => void;\n }): Unsubscribable {\n const channel = `dex-ranking-token-supply-list:${chain}_${channelType}`;\n return this.subscribe(channel, (data: Record<string, unknown>[]) =>\n callback(\n data?.map(it => ({\n tokenAddress: it.a as string,\n supply: it.s as string,\n marketCapInUsd: it.mc as string,\n timestamp: it.ts as number,\n })),\n ),\n );\n }\n\n subscribeRankingTokensBondingCurve({\n chain,\n callback,\n }: {\n chain: string;\n callback: (data: WsTokenBondingCurve[]) => void;\n }): Unsubscribable {\n const channel = `dex-ranking-token-bounding-curve-list:${chain}_new`;\n return this.subscribe(channel, (data: Record<string, unknown>[]) =>\n callback(\n data?.map(it => ({\n tokenAddress: it.a as string,\n progressRatio: it.pr as string,\n })),\n ),\n );\n }\n\n subscribeWalletBalance({\n chain,\n walletAddress,\n callback,\n filter,\n }: {\n chain: string;\n walletAddress: string;\n callback: (data: WsWalletBalance[]) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-wallet-balance:${chain}_${walletAddress}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) =>\n callback([\n {\n walletAddress: data.a as string,\n tokenAddress: data.ta as string,\n tokenPriceInUsd: data.tpiu as string,\n balance: data.b as string,\n timestamp: data.t as number,\n },\n ]),\n filter,\n \"subscribeWalletBalance\",\n );\n }\n\n subscribeWalletPnl({\n chain,\n walletAddress,\n callback,\n filter,\n }: {\n chain: string;\n walletAddress: string;\n callback: (data: WsWalletTokenPnl) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-wallet-token-pnl:${chain}_${walletAddress}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) =>\n callback({\n walletAddress: data.a as string,\n tokenAddress: data.ta as string,\n tokenPriceInUsd: data.tpiu as string,\n timestamp: data.t as number,\n opentime: data.ot as number,\n lasttime: data.lt as number,\n closetime: data.ct as number,\n buyAmount: data.ba as string,\n buyAmountInUsd: data.baiu as string,\n buyCount: data.bs as number,\n buyCount30d: data.bs30d as number,\n buyCount7d: data.bs7d as number,\n sellAmount: data.sa as string,\n sellAmountInUsd: data.saiu as string,\n sellCount: data.ss as number,\n sellCount30d: data.ss30d as number,\n sellCount7d: data.ss7d as number,\n heldDurationTimestamp: data.hdts as number,\n averageBuyPriceInUsd: data.abpiu as string,\n averageSellPriceInUsd: data.aspiu as string,\n unrealizedProfitInUsd: data.upiu as string,\n unrealizedProfitRatio: data.upr as string,\n realizedProfitInUsd: data.rpiu as string,\n realizedProfitRatio: data.rpr as string,\n totalRealizedProfitInUsd: data.trpiu as string,\n totalRealizedProfitRatio: data.trr as string,\n }),\n filter,\n \"subscribeWalletPnl\",\n );\n }\n\n subscribeWalletPnlList({\n chain,\n walletAddress,\n callback,\n }: {\n chain: string;\n walletAddress: string;\n callback: (data: WsWalletPnl[]) => void;\n }): Unsubscribable {\n const channel = `dex-wallet-pnl-list:${chain}_${walletAddress}`;\n return this.subscribe(channel, (data: Record<string, unknown>[]) =>\n callback(\n data?.map(\n it =>\n ({\n walletAddress: it.a,\n buys: it.bs,\n buyAmount: it.ba,\n buyAmountInUsd: it.baiu,\n averageBuyPriceInUsd: it.abpiu,\n sellAmount: it.sa,\n sellAmountInUsd: it.saiu,\n sells: it.ss,\n wins: it.ws,\n winRatio: it.wr,\n pnlInUsd: it.piu,\n averagePnlInUsd: it.apiu,\n pnlRatio: it.pr,\n profitableDays: it.pd,\n losingDays: it.ld,\n tokens: it.ts,\n resolution: it.r,\n }) as WsWalletPnl,\n ),\n ),\n );\n }\n\n subscribeTokenTrade({\n chain,\n tokenAddress,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n callback: (data: WsTradeActivity) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-trade:${chain}_${tokenAddress}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) =>\n callback({\n tokenAddress: data.a as string,\n timestamp: data.t as number,\n kind: data.k as string,\n buyAmount: data.ba as string,\n buyAmountInUsd: data.baiu as string,\n buyTokenAddress: data.btma as string,\n buyTokenName: data.btn as string,\n buyTokenSymbol: data.bts as string,\n buyWalletAddress: data.bwa as string,\n sellAmount: data.sa as string,\n sellAmountInUsd: data.saiu as string,\n sellTokenAddress: data.stma as string,\n sellTokenName: data.stn as string,\n sellTokenSymbol: data.sts as string,\n sellWalletAddress: data.swa as string,\n txHash: data.h as string,\n }),\n filter,\n \"subscribeTokenTrades\",\n );\n }\n\n subscribeWalletTrade({\n chain,\n walletAddress,\n callback,\n filter,\n }: {\n chain: string;\n walletAddress: string;\n callback: (data: WsTradeActivity) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-wallet-trade:${chain}_${walletAddress}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) =>\n callback({\n tokenAddress: data.a as string,\n timestamp: data.t as number,\n kind: data.k as string,\n buyAmount: data.ba as string,\n buyAmountInUsd: data.baiu as string,\n buyTokenAddress: data.btma as string,\n buyTokenName: data.btn as string,\n buyTokenSymbol: data.bts as string,\n buyWalletAddress: data.bwa as string,\n sellAmount: data.sa as string,\n sellAmountInUsd: data.saiu as string,\n sellTokenAddress: data.stma as string,\n sellTokenName: data.stn as string,\n sellTokenSymbol: data.sts as string,\n sellWalletAddress: data.swa as string,\n txHash: data.h as string,\n }),\n filter,\n \"subscribeTokenTrades\",\n );\n }\n\n subscribeDexPoolBalance({\n chain,\n poolAddress,\n callback,\n }: {\n chain: string;\n poolAddress: string;\n callback: (data: WsDexPoolBalance) => void;\n }): Unsubscribable {\n const channel = `dex-pool-balance:${chain}_${poolAddress}`;\n return this.subscribe(channel, (data: Record<string, unknown>) =>\n callback({\n poolAddress: data.a as string,\n tokenAAddress: data.taa as string,\n tokenALiquidityInUsd: data.taliu as string,\n tokenBAddress: data.tba as string,\n tokenBLiquidityInUsd: data.tbliu as string,\n }),\n );\n }\n}\n\nclass StreamUnsubscribable<T> {\n constructor(\n private readonly streamApi: StreamApi,\n private readonly channel: string,\n private readonly fn: (data: T) => void,\n ) {}\n\n unsubscribe(): void {\n this.streamApi.unsubscribe(this.channel, this.fn);\n }\n}\n","/**\n * Field mappings for CEL filter expressions\n * Maps human-readable field names to short field names used in the API\n * Organized by subscription method to handle field name conflicts\n */\n\nexport interface FieldMapping {\n readonly [key: string]: string;\n}\n\nexport interface MethodFieldMappings {\n readonly [methodName: string]: FieldMapping;\n}\n\n/**\n * Field mappings organized by subscription method\n * Each method can have its own field mappings to handle conflicts\n */\nexport const CEL_FIELD_MAPPINGS: MethodFieldMappings = {\n // Wallet balance subscription fields\n subscribeWalletBalance: {\n walletAddress: \"a\",\n tokenAddress: \"ta\",\n tokenPriceInUsd: \"tpiu\",\n balance: \"b\",\n timestamp: \"t\",\n },\n\n // Token candles subscription fields\n subscribeTokenCandles: {\n open: \"o\",\n close: \"c\",\n high: \"h\",\n low: \"l\",\n volume: \"v\",\n resolution: \"r\",\n time: \"t\",\n number: \"n\",\n },\n\n // Token stats subscription fields\n subscribeTokenStats: {\n address: \"a\",\n timestamp: \"t\",\n buys1m: \"b1m\",\n sells1m: \"s1m\",\n buyers1m: \"be1m\",\n sellers1m: \"se1m\",\n buyVolumeInUsd1m: \"bviu1m\",\n sellVolumeInUsd1m: \"sviu1m\",\n price1m: \"p1m\",\n openInUsd1m: \"oiu1m\",\n closeInUsd1m: \"ciu1m\",\n buys5m: \"b5m\",\n sells5m: \"s5m\",\n buyers5m: \"be5m\",\n sellers5m: \"se5m\",\n buyVolumeInUsd5m: \"bviu5m\",\n sellVolumeInUsd5m: \"sviu5m\",\n price5m: \"p5m\",\n openInUsd5m: \"oiu5m\",\n closeInUsd5m: \"ciu5m\",\n buys15m: \"b15m\",\n sells15m: \"s15m\",\n buyers15m: \"be15m\",\n sellers15m: \"se15m\",\n buyVolumeInUsd15m: \"bviu15m\",\n sellVolumeInUsd15m: \"sviu15m\",\n price15m: \"p15m\",\n openInUsd15m: \"oiu15m\",\n closeInUsd15m: \"ciu15m\",\n buys30m: \"b30m\",\n sells30m: \"s30m\",\n buyers30m: \"be30m\",\n sellers30m: \"se30m\",\n buyVolumeInUsd30m: \"bviu30m\",\n sellVolumeInUsd30m: \"sviu30m\",\n price30m: \"p30m\",\n openInUsd30m: \"oiu30m\",\n closeInUsd30m: \"ciu30m\",\n buys1h: \"b1h\",\n sells1h: \"s1h\",\n buyers1h: \"be1h\",\n sellers1h: \"se1h\",\n buyVolumeInUsd1h: \"bviu1h\",\n sellVolumeInUsd1h: \"sviu1h\",\n price1h: \"p1h\",\n openInUsd1h: \"oiu1h\",\n closeInUsd1h: \"ciu1h\",\n buys4h: \"b4h\",\n sells4h: \"s4h\",\n buyers4h: \"be4h\",\n sellers4h: \"se4h\",\n buyVolumeInUsd4h: \"bviu4h\",\n sellVolumeInUsd4h: \"sviu4h\",\n price4h: \"p4h\",\n openInUsd4h: \"oiu4h\",\n closeInUsd4h: \"ciu4h\",\n buys24h: \"b24h\",\n sells24h: \"s24h\",\n buyers24h: \"be24h\",\n sellers24h: \"se24h\",\n buyVolumeInUsd24h: \"bviu24h\",\n sellVolumeInUsd24h: \"sviu24h\",\n price24h: \"p24h\",\n price: \"p\",\n openInUsd24h: \"oiu24h\",\n closeInUsd24h: \"ciu24h\",\n },\n\n // Token holder subscription fields\n subscribeTokenHolders: {\n tokenAddress: \"a\",\n holders: \"h\",\n top100HoldersAmount: \"t100a\",\n top50HoldersAmount: \"t50a\",\n top10HoldersAmount: \"t10a\",\n top100Holders: \"t100h\",\n top50Holders: \"t50h\",\n top10Holders: \"t10h\",\n top100HoldersRatio: \"t100r\",\n top50HoldersRatio: \"t50r\",\n top10HoldersRatio: \"t10r\",\n creatorsHolders: \"ch\",\n creatorsAmount: \"ca\",\n creatorsRatio: \"cr\",\n balanceTagFreshHolders: \"btfh\",\n balanceTagFreshAmount: \"btfa\",\n balanceTagFreshRatio: \"btfr\",\n balanceTagSandwichHolders: \"btsh\",\n balanceTagSandwichAmount: \"btsa\",\n balanceTagSandwichRatio: \"btsr\",\n balanceTagBundleHolders: \"btbh\",\n balanceTagBundleAmount: \"btba\",\n balanceTagBundleRatio: \"btbr\",\n balanceTagSniperHolders: \"btsnh\",\n balanceTagSniperAmount: \"btsna\",\n balanceTagSniperRatio: \"btsnr\",\n balanceTagDevHolders: \"btdh\",\n balanceTagDevAmount: \"btda\",\n balanceTagDevRatio: \"btdr\",\n balanceTagProHolders: \"btph\",\n balanceTagProAmount: \"btpa\",\n balanceTagProRatio: \"btpr\",\n balanceTagInsiderHolders: \"btih\",\n balanceTagInsiderAmount: \"btia\",\n balanceTagInsiderRatio: \"btir\",\n balanceTagSmartHolders: \"btsmh\",\n balanceTagSmartAmount: \"btsma\",\n balanceTagSmartRatio: \"btsmr\",\n balanceTagKolHolders: \"btkh\",\n balanceTagKolAmount: \"btka\",\n balanceTagKolRatio: \"btkr\",\n balanceTagPhishingHolders: \"btphh\",\n balanceTagPhishingAmount: \"btpha\",\n balanceTagPhishingRatio: \"btphr\",\n balanceTagBluechipHolders: \"btblh\",\n balanceTagBluechipAmount: \"btbla\",\n balanceTagBluechipRatio: \"btblr\",\n balanceTagRatHolders: \"btrh\",\n balanceTagRatAmount: \"btra\",\n balanceTagRatRatio: \"btrr\",\n timestamp: \"ts\",\n },\n\n // New token subscription fields\n subscribeNewToken: {\n tokenAddress: \"a\",\n name: \"n\",\n symbol: \"s\",\n createdAtMs: \"cts\",\n },\n\n // Token supply subscription fields\n subscribeTokenSupply: {\n tokenAddress: \"a\",\n supply: \"s\",\n timestamp: \"ts\",\n },\n\n // Dex pool balance subscription fields\n subscribeDexPoolBalance: {\n poolAddress: \"a\",\n tokenAAddress: \"taa\",\n tokenALiquidityInUsd: \"taliu\",\n tokenBAddress: \"tba\",\n tokenBLiquidityInUsd: \"tbliu\",\n },\n\n // Token liquidity subscription fields\n subscribeTokenLiquidity: {\n tokenAddress: \"a\",\n metricType: \"t\",\n value: \"v\",\n timestamp: \"ts\",\n },\n\n // New token metadata subscription fields\n subscribeNewTokensMetadata: {\n tokenAddress: \"a\",\n name: \"n\",\n symbol: \"s\",\n imageUrl: \"iu\",\n description: \"de\",\n socialMedia: \"sm\",\n createdAtMs: \"cts\",\n },\n\n // Token trades subscription fields\n subscribeTokenTrades: {\n tokenAddress: \"a\",\n timestamp: \"t\",\n kind: \"k\",\n buyAmount: \"ba\",\n buyAmountInUsd: \"baiu\",\n buyTokenAddress: \"btma\",\n buyTokenName: \"btn\",\n buyTokenSymbol: \"bts\",\n buyWalletAddress: \"bwa\",\n sellAmount: \"sa\",\n sellAmountInUsd: \"saiu\",\n sellTokenAddress: \"stma\",\n sellTokenName: \"stn\",\n sellTokenSymbol: \"sts\",\n sellWalletAddress: \"swa\",\n txHash: \"h\",\n },\n\n // Wallet token PnL subscription fields\n subscribeWalletPnl: {\n walletAddress: \"a\",\n tokenAddress: \"ta\",\n tokenPriceInUsd: \"tpiu\",\n timestamp: \"t\",\n opentime: \"ot\",\n lasttime: \"lt\",\n closetime: \"ct\",\n buyAmount: \"ba\",\n buyAmountInUsd: \"baiu\",\n buyCount: \"bs\",\n buyCount30d: \"bs30d\",\n buyCount7d: \"bs7d\",\n sellAmount: \"sa\",\n sellAmountInUsd: \"saiu\",\n sellCount: \"ss\",\n sellCount30d: \"ss30d\",\n sellCount7d: \"ss7d\",\n heldDurationTimestamp: \"hdts\",\n averageBuyPriceInUsd: \"abpiu\",\n averageSellPriceInUsd: \"aspiu\",\n unrealizedProfitInUsd: \"upiu\",\n unrealizedProfitRatio: \"upr\",\n realizedProfitInUsd: \"rpiu\",\n realizedProfitRatio: \"rpr\",\n totalRealizedProfitInUsd: \"trpiu\",\n totalRealizedProfitRatio: \"trr\",\n },\n\n // Token max liquidity subscription fields\n subscribeTokenMaxLiquidity: {\n tokenAddress: \"a\",\n poolAddress: \"p\",\n liquidityInUsd: \"liu\",\n liquidityInNative: \"lin\",\n timestamp: \"ts\",\n },\n\n // Token total liquidity subscription fields\n subscribeTokenTotalLiquidity: {\n tokenAddress: \"a\",\n liquidityInUsd: \"liu\",\n liquidityInNative: \"lin\",\n poolCount: \"pc\",\n timestamp: \"ts\",\n },\n} as const;\n\n/**\n * Get field mappings for a specific subscription method\n * @param methodName - The name of the subscription method\n * @returns Field mapping object for the method, or empty object if not found\n */\nexport function getFieldMappings(methodName: string): FieldMapping {\n return CEL_FIELD_MAPPINGS[methodName] || {};\n}\n\n/**\n * Replace long field names with short field names in a filter expression\n * Automatically adds meta. prefix if not present\n * @param filter - Original filter expression\n * @param methodName - The name of the subscription method\n * @returns Filter expression with short field names and meta. prefix\n */\nexport function replaceFilterFields(filter: string, methodName: string): string {\n if (!filter) {\n return filter;\n }\n\n const fieldMappings = getFieldMappings(methodName);\n let result = filter;\n\n // Replace all long field names with short field names\n for (const [longField, shortField] of Object.entries(fieldMappings)) {\n // Handle both cases: with and without meta. prefix\n const patterns = [\n // Pattern 1: fieldName (without meta. prefix)\n new RegExp(`\\\\b${longField}\\\\b`, \"g\"),\n // Pattern 2: meta.fieldName (with meta. prefix)\n new RegExp(`\\\\bmeta\\\\.${longField}\\\\b`, \"g\"),\n ];\n\n patterns.forEach(pattern => {\n result = result.replace(pattern, `meta.${shortField}`);\n });\n }\n\n return result;\n}\n\n/**\n * Type-safe field mapping for specific subscription methods\n */\nexport type SubscriptionMethod = keyof typeof CEL_FIELD_MAPPINGS;\n\n/**\n * Get available field names for a specific subscription method\n * @param methodName - The name of the subscription method\n * @returns Array of available field names\n */\nexport function getAvailableFields(methodName: string): string[] {\n const mappings = getFieldMappings(methodName);\n return Object.keys(mappings);\n}\n","import { Resolution } from \"../openapi-client/index.js\";\n\nexport enum WsTokenActivityType {\n Sell = \"sell\",\n Buy = \"buy\",\n AddLiquidity = \"add_liquidity\",\n RemoveLiquidity = \"remove_liquidity\",\n}\n\nexport enum WsChannelType {\n New = \"new\",\n HOT = \"trending\",\n US_STOCKS = \"us_stocks\",\n COMPLETED = \"completed\",\n GRADUATED = \"graduated\",\n}\n\nexport enum WsMetricType {\n LIQUIDITY_IN_USD = \"liquidity_in_usd\",\n MIGRATED_RATIO = \"migrated_ratio\",\n}\n\nexport interface WsTokenActivity {\n address: string;\n priceUsd: string;\n amount: string;\n type: WsTokenActivityType;\n txHash: string;\n timestamp: number;\n}\n\nexport interface WsTokenStat {\n address: string;\n timestamp: number;\n buys1m?: number;\n sells1m?: number;\n buyers1m?: number;\n sellers1m?: number;\n buyVolumeInUsd1m?: string;\n sellVolumeInUsd1m?: string;\n price1m?: string;\n openInUsd1m?: string;\n closeInUsd1m?: string;\n\n buys5m?: number;\n sells5m?: number;\n buyers5m?: number;\n sellers5m?: number;\n buyVolumeInUsd5m?: string;\n sellVolumeInUsd5m?: string;\n price5m?: string;\n openInUsd5m?: string;\n closeInUsd5m?: string;\n\n buys15m?: number;\n sells15m?: number;\n buyers15m?: number;\n sellers15m?: number;\n buyVolumeInUsd15m?: string;\n sellVolumeInUsd15m?: string;\n price15m?: string;\n openInUsd15m?: string;\n closeInUsd15m?: string;\n\n buys30m?: number;\n sells30m?: number;\n buyers30m?: number;\n sellers30m?: number;\n buyVolumeInUsd30m?: string;\n sellVolumeInUsd30m?: string;\n price30m?: string;\n openInUsd30m?: string;\n closeInUsd30m?: string;\n\n buys1h?: number;\n sells1h?: number;\n buyers1h?: number;\n sellers1h?: number;\n buyVolumeInUsd1h?: string;\n sellVolumeInUsd1h?: string;\n price1h?: string;\n openInUsd1h?: string;\n closeInUsd1h?: string;\n\n buys4h?: number;\n sells4h?: number;\n buyers4h?: number;\n sellers4h?: number;\n buyVolumeInUsd4h?: string;\n sellVolumeInUsd4h?: string;\n price4h?: string;\n openInUsd4h?: string;\n closeInUsd4h?: string;\n\n buys24h?: number;\n sells24h?: number;\n buyers24h?: number;\n sellers24h?: number;\n buyVolumeInUsd24h?: string;\n sellVolumeInUsd24h?: string;\n price24h?: string;\n openInUsd24h?: string;\n closeInUsd24h?: string;\n\n price?: string;\n}\n\nexport interface WsTokenHolder {\n tokenAddress: string;\n holders?: number;\n top100HoldersAmount?: string;\n top50HoldersAmount?: string;\n top10HoldersAmount?: string;\n top100Holders?: number;\n top50Holders?: number;\n top10Holders?: number;\n top100HoldersRatio?: string;\n top50HoldersRatio?: string;\n top10HoldersRatio?: string;\n creatorsHolders?: number;\n creatorsAmount?: string;\n creatorsRatio?: string;\n balanceTagFreshHolders?: number;\n balanceTagFreshAmount?: string;\n balanceTagFreshRatio?: string;\n balanceTagSandwichHolders?: number;\n balanceTagSandwichAmount?: string;\n balanceTagSandwichRatio?: string;\n balanceTagBundleHolders?: number;\n balanceTagBundleAmount?: string;\n balanceTagBundleRatio?: string;\n balanceTagSniperHolders?: number;\n balanceTagSniperAmount?: string;\n balanceTagSniperRatio?: string;\n balanceTagDevHolders?: number;\n balanceTagDevAmount?: string;\n balanceTagDevRatio?: string;\n balanceTagProHolders?: number;\n balanceTagProAmount?: string;\n balanceTagProRatio?: string;\n balanceTagInsiderHolders?: number;\n balanceTagInsiderAmount?: string;\n balanceTagInsiderRatio?: string;\n balanceTagSmartHolders?: number;\n balanceTagSmartAmount?: string;\n balanceTagSmartRatio?: string;\n balanceTagKolHolders?: number;\n balanceTagKolAmount?: string;\n balanceTagKolRatio?: string;\n balanceTagPhishingHolders?: number;\n balanceTagPhishingAmount?: string;\n balanceTagPhishingRatio?: string;\n balanceTagBluechipHolders?: number;\n balanceTagBluechipAmount?: string;\n balanceTagBluechipRatio?: string;\n balanceTagRatHolders?: number;\n balanceTagRatAmount?: string;\n balanceTagRatRatio?: string;\n timestamp: number;\n}\n\nexport interface WsWalletBalance {\n walletAddress: string;\n tokenAddress: string;\n tokenPriceInUsd: string;\n balance: string;\n timestamp: number;\n}\n\nexport interface WsWalletPnl {\n walletAddress: string;\n buys: number;\n buyAmount: string;\n buyAmountInUsd: string;\n averageBuyPriceInUsd: string;\n sellAmount: string;\n sellAmountInUsd: string;\n sells: number;\n wins: number;\n winRatio: string;\n pnlInUsd: string;\n averagePnlInUsd: string;\n pnlRatio: string;\n profitableDays: number;\n losingDays: number;\n tokens: number;\n resolution: string;\n}\n\nexport interface WsNewToken {\n tokenAddress: string;\n name: string;\n symbol: string;\n decimals?: number;\n launchFrom?: WsDexProtocol;\n createdAtMs: number;\n}\n\nexport interface WsTokenSupply {\n tokenAddress: string;\n supply?: string;\n marketCapInUsd?: string;\n timestamp: number;\n}\n\nexport interface WsDexPoolBalance {\n poolAddress: string;\n tokenAAddress: string;\n tokenALiquidityInUsd: string;\n tokenBAddress: string;\n tokenBLiquidityInUsd: string;\n}\n\nexport interface WsTokenLiquidity {\n tokenAddress: string;\n metricType: WsMetricType;\n value: string;\n timestamp: number;\n}\n\nexport interface WsTokenMaxLiquidity {\n tokenAddress: string;\n poolAddress: string;\n liquidityInUsd: string;\n liquidityInNative: string;\n timestamp: number;\n}\n\nexport interface WsTokenTotalLiquidity {\n tokenAddress: string;\n liquidityInUsd: string;\n liquidityInNative: string;\n poolCount: number;\n timestamp: number;\n}\n\nexport interface WsDexProtocol {\n programAddress?: string;\n protocolFamily?: string;\n protocolName?: string;\n}\n\nexport interface WsTokenBondingCurve {\n tokenAddress?: string;\n progressRatio?: string;\n}\n\nexport interface WsTokenMetadata {\n tokenAddress: string;\n name?: string;\n decimals?: number;\n symbol?: string;\n imageUrl?: string;\n description?: string;\n socialMedia?: WsSocialMedia;\n createdAtMs?: number;\n launchFrom?: WsDexProtocol;\n migratedTo?: WsDexProtocol;\n}\n\nexport interface WsSocialMedia {\n twitter?: string;\n telegram?: string;\n website?: string;\n tiktok?: string;\n discord?: string;\n facebook?: string;\n github?: string;\n instagram?: string;\n linkedin?: string;\n medium?: string;\n reddit?: string;\n youtube?: string;\n bitbucket?: string;\n}\n\nexport interface WsTokenCandle {\n open: string;\n close: string;\n high: string;\n low: string;\n volume: string;\n resolution: Resolution;\n time: number;\n number: number;\n}\n\nexport interface WsTradeActivity {\n tokenAddress: string;\n timestamp: number;\n kind: string;\n buyAmount: string;\n buyAmountInUsd: string;\n buyTokenAddress: string;\n buyTokenName: string;\n buyTokenSymbol: string;\n buyWalletAddress: string;\n sellAmount: string;\n sellAmountInUsd: string;\n sellTokenAddress: string;\n sellTokenName: string;\n sellTokenSymbol: string;\n sellWalletAddress: string;\n txHash: string;\n}\n\nexport interface WsWalletTokenPnl {\n walletAddress: string;\n tokenAddress: string;\n tokenPriceInUsd: string;\n timestamp: number;\n opentime: number;\n lasttime: number;\n closetime: number;\n buyAmount: string;\n buyAmountInUsd: string;\n buyCount: number;\n buyCount30d: number;\n buyCount7d: number;\n sellAmount: string;\n sellAmountInUsd: string;\n sellCount: number;\n sellCount30d: number;\n sellCount7d: number;\n heldDurationTimestamp: number;\n averageBuyPriceInUsd: string;\n averageSellPriceInUsd: string;\n unrealizedProfitInUsd: string;\n unrealizedProfitRatio: string;\n realizedProfitInUsd: string;\n realizedProfitRatio: string;\n totalRealizedProfitInUsd: string;\n totalRealizedProfitRatio: string;\n}\n\nexport enum WsRankingType {\n NEW = \"new\",\n HOT = \"trending\",\n STOCKS = \"stocks\",\n FINALSTRETCH = \"completed\",\n MIGRATED = \"graduated\",\n}\n\nexport enum WsDex {\n PUMP_FUN = \"pump_fun\",\n RAYDIUM_LAUNCHPAD = \"raydium_launchpad\",\n METEOR_DYNAMIC_BOUNDING_CURVE = \"meteora_dynamic_bounding_curve\",\n BONK_FUN = \"bonk_fun\",\n BOOP_FUN = \"boop_fun\",\n MOONIT_FUN = \"moonit_fun\",\n}\n\nexport interface WsRankingTokenList {\n metadata?: WsTokenMetadata;\n holder?: WsTokenHolder;\n supply?: WsTokenSupply;\n stat?: WsTokenStat;\n bondingCurve?: WsTokenBondingCurve;\n}\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n BlockchainDTO,\n BlockchainLatestBlockDTO,\n ChainSymbol,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.GET_SUPPORTED_BLOCKCHAINS.DESCRIPTION\n * @summary CONTROLLER.GET_SUPPORTED_BLOCKCHAINS.SUMMARY\n */\nexport const getSupportedBlockchains = (options?: SecondParameter<typeof chainstreamApiClient>) => {\n return chainstreamApiClient<BlockchainDTO[]>({ url: `/v1/blockchain`, method: \"GET\" }, options);\n};\n/**\n * CONTROLLER.GET_LATEST_BLOCK.DESCRIPTION\n * @summary CONTROLLER.GET_LATEST_BLOCK.SUMMARY\n */\nexport const getLatestBlock = (\n chain: ChainSymbol,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<BlockchainLatestBlockDTO>(\n { url: `/v1/blockchain/${chain}/latest_block`, method: \"GET\" },\n options,\n );\n};\nexport type GetSupportedBlockchainsResult = NonNullable<\n Awaited<ReturnType<typeof getSupportedBlockchains>>\n>;\nexport type GetLatestBlockResult = NonNullable<Awaited<ReturnType<typeof getLatestBlock>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n MoonshotCreateTokenInput,\n MoonshotCreateTokenReply,\n MoonshotSubmitCreateToken200,\n MoonshotSubmitCreateTokenInput,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.MOONSHOT.CREATE_TOKEN.DESCRIPTION\n * @summary CONTROLLER.MOONSHOT.CREATE_TOKEN.SUMMARY\n */\nexport const moonshotCreateToken = (\n moonshotCreateTokenInput: MoonshotCreateTokenInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<MoonshotCreateTokenReply>(\n {\n url: `/v1/sol/moonshot/create`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: moonshotCreateTokenInput,\n },\n options,\n );\n};\n/**\n * CONTROLLER.MOONSHOT.SUBMIT_CREATE_TOKEN.DESCRIPTION\n * @summary CONTROLLER.MOONSHOT.SUBMIT_CREATE_TOKEN.SUMMARY\n */\nexport const moonshotSubmitCreateToken = (\n moonshotSubmitCreateTokenInput: MoonshotSubmitCreateTokenInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<MoonshotSubmitCreateToken200>(\n {\n url: `/v1/sol/moonshot/submitCreateToken`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: moonshotSubmitCreateTokenInput,\n },\n options,\n );\n};\nexport type MoonshotCreateTokenResult = NonNullable<\n Awaited<ReturnType<typeof moonshotCreateToken>>\n>;\nexport type MoonshotSubmitCreateTokenResult = NonNullable<\n Awaited<ReturnType<typeof moonshotSubmitCreateToken>>\n>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type { PumpCreateTokenInput, PumpCreateTokenReply } from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.PUMPFUN.CREATE_TOKEN.DESCRIPTION\n * @summary CONTROLLER.PUMPFUN.CREATE_TOKEN.SUMMARY\n */\nexport const pumpfunCreateToken = (\n pumpCreateTokenInput: PumpCreateTokenInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<PumpCreateTokenReply>(\n {\n url: `/v1/sol/pumpfun/create`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: pumpCreateTokenInput,\n },\n options,\n );\n};\nexport type PumpfunCreateTokenResult = NonNullable<Awaited<ReturnType<typeof pumpfunCreateToken>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n ChainSymbol,\n DexPoolDTO,\n DexPoolSnapshotPage,\n GetDexpoolSnapshotsParams,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.DEXPOOL.GET.DESCRIPTION\n * @summary CONTROLLER.DEXPOOL.GET.SUMMARY\n */\nexport const getDexpool = (\n chain: ChainSymbol,\n poolAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<DexPoolDTO>(\n { url: `/v1/dexpools/${chain}/${poolAddress}`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.DEXPOOL.SNAPSHOTS.DESCRIPTION\n * @summary CONTROLLER.DEXPOOL.SNAPSHOTS.SUMMARY\n */\nexport const getDexpoolSnapshots = (\n chain: ChainSymbol,\n poolAddress: string,\n params?: GetDexpoolSnapshotsParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<DexPoolSnapshotPage>(\n { url: `/v1/dexpools/${chain}/${poolAddress}/snapshots`, method: \"GET\", params },\n options,\n );\n};\nexport type GetDexpoolResult = NonNullable<Awaited<ReturnType<typeof getDexpool>>>;\nexport type GetDexpoolSnapshotsResult = NonNullable<\n Awaited<ReturnType<typeof getDexpoolSnapshots>>\n>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n ChainSymbol,\n CreateTokenInput,\n CreateTokenReply,\n DexPage,\n DexQuoteResponse,\n ListDexParams,\n QuoteParams,\n SwapInput,\n SwapReply,\n SwapRouteInput,\n SwapRouteResponse,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.DEX.SWAP.DESCRIPTION\n * @summary CONTROLLER.DEX.SWAP.SUMMARY\n */\nexport const swap = (\n chain: ChainSymbol,\n swapInput: SwapInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<SwapReply>(\n {\n url: `/v1/dex/${chain}/swap`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: swapInput,\n },\n options,\n );\n};\n/**\n * CONTROLLER.DEX.ROUTE.DESCRIPTION\n * @summary CONTROLLER.DEX.ROUTE.SUMMARY\n */\nexport const route = (\n chain: ChainSymbol,\n swapRouteInput: SwapRouteInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<SwapRouteResponse>(\n {\n url: `/v1/dex/${chain}/route`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: swapRouteInput,\n },\n options,\n );\n};\n/**\n * CONTROLLER.DEX.QUOTE.DESCRIPTION\n * @summary CONTROLLER.DEX.QUOTE.SUMMARY\n */\nexport const quote = (\n chain: ChainSymbol,\n params: QuoteParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<DexQuoteResponse>(\n { url: `/v1/dex/${chain}/quote`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.DEX.CREATE.DESCRIPTION\n * @summary CONTROLLER.DEX.CREATE.SUMMARY\n */\nexport const createToken = (\n chain: ChainSymbol,\n createTokenInput: CreateTokenInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<CreateTokenReply>(\n {\n url: `/v1/dex/${chain}/create`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: createTokenInput,\n },\n options,\n );\n};\n/**\n * CONTROLLER.DEX.LIST.DESCRIPTION\n * @summary CONTROLLER.DEX.LIST.SUMMARY\n */\nexport const listDex = (\n params?: ListDexParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<DexPage>({ url: `/v1/dex`, method: \"GET\", params }, options);\n};\nexport type SwapResult = NonNullable<Awaited<ReturnType<typeof swap>>>;\nexport type RouteResult = NonNullable<Awaited<ReturnType<typeof route>>>;\nexport type QuoteResult = NonNullable<Awaited<ReturnType<typeof quote>>>;\nexport type CreateTokenResult = NonNullable<Awaited<ReturnType<typeof createToken>>>;\nexport type ListDexResult = NonNullable<Awaited<ReturnType<typeof listDex>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n CreateEndpointInput,\n EndpointListResponse,\n EndpointOperationResponse,\n EndpointResponse,\n EndpointSecretResponse,\n ListEndpointsParams,\n UpdateEndpointInput,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.ENDPOINT.LIST.DESCRIPTION\n * @summary CONTROLLER.ENDPOINT.LIST.SUMMARY\n */\nexport const listEndpoints = (\n params?: ListEndpointsParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<EndpointListResponse>(\n { url: `/v1/webhook/endpoint`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.ENDPOINT.CREATE.DESCRIPTION\n * @summary CONTROLLER.ENDPOINT.CREATE.SUMMARY\n */\nexport const createEndpoint = (\n createEndpointInput: CreateEndpointInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<EndpointResponse>(\n {\n url: `/v1/webhook/endpoint`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: createEndpointInput,\n },\n options,\n );\n};\n/**\n * CONTROLLER.ENDPOINT.UPDATE.DESCRIPTION\n * @summary CONTROLLER.ENDPOINT.UPDATE.SUMMARY\n */\nexport const updateEndpoint = (\n updateEndpointInput: UpdateEndpointInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<EndpointResponse>(\n {\n url: `/v1/webhook/endpoint`,\n method: \"PATCH\",\n headers: { \"Content-Type\": \"application/json\" },\n data: updateEndpointInput,\n },\n options,\n );\n};\n/**\n * CONTROLLER.ENDPOINT.GET.DESCRIPTION\n * @summary CONTROLLER.ENDPOINT.GET.SUMMARY\n */\nexport const getEndpoint = (id: string, options?: SecondParameter<typeof chainstreamApiClient>) => {\n return chainstreamApiClient<EndpointResponse>(\n { url: `/v1/webhook/endpoint/${id}`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.ENDPOINT.DELETE.DESCRIPTION\n * @summary CONTROLLER.ENDPOINT.DELETE.SUMMARY\n */\nexport const deleteEndpoint = (\n id: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<EndpointOperationResponse>(\n { url: `/v1/webhook/endpoint/${id}`, method: \"DELETE\" },\n options,\n );\n};\n/**\n * CONTROLLER.ENDPOINT.GET.SECRET.DESCRIPTION\n * @summary CONTROLLER.ENDPOINT.GET.SECRET.SUMMARY\n */\nexport const getEndpointSecret = (\n id: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<EndpointSecretResponse>(\n { url: `/v1/webhook/endpoint/${id}/secret`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.ENDPOINT.ROTATE.DESCRIPTION\n * @summary CONTROLLER.ENDPOINT.ROTATE.SUMMARY\n */\nexport const rotateEndpointSecret = (\n id: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<EndpointOperationResponse>(\n { url: `/v1/webhook/endpoint/${id}/secret/rotate`, method: \"POST\" },\n options,\n );\n};\nexport type ListEndpointsResult = NonNullable<Awaited<ReturnType<typeof listEndpoints>>>;\nexport type CreateEndpointResult = NonNullable<Awaited<ReturnType<typeof createEndpoint>>>;\nexport type UpdateEndpointResult = NonNullable<Awaited<ReturnType<typeof updateEndpoint>>>;\nexport type GetEndpointResult = NonNullable<Awaited<ReturnType<typeof getEndpoint>>>;\nexport type DeleteEndpointResult = NonNullable<Awaited<ReturnType<typeof deleteEndpoint>>>;\nexport type GetEndpointSecretResult = NonNullable<Awaited<ReturnType<typeof getEndpointSecret>>>;\nexport type RotateEndpointSecretResult = NonNullable<\n Awaited<ReturnType<typeof rotateEndpointSecret>>\n>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.IPFS.PRESIGN.DESCRIPTION\n * @summary CONTROLLER.IPFS.PRESIGN.SUMMARY\n */\nexport const presign = (options?: SecondParameter<typeof chainstreamApiClient>) => {\n return chainstreamApiClient<string>({ url: `/v1/ipfs/presign`, method: \"POST\" }, options);\n};\nexport type PresignResult = NonNullable<Awaited<ReturnType<typeof presign>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type { JobDTO, JobStreamingDTO } from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.JOB.GET.DESCRIPTION\n * @summary CONTROLLER.JOB.GET.SUMMARY\n */\nexport const get = (id: string, options?: SecondParameter<typeof chainstreamApiClient>) => {\n return chainstreamApiClient<JobDTO>({ url: `/jobs/${id}`, method: \"GET\" }, options);\n};\n/**\n * CONTROLLER.JOB.STREAMING.DESCRIPTION\n * @summary CONTROLLER.JOB.STREAMING.SUMMARY\n */\nexport const streaming = (id: string, options?: SecondParameter<typeof chainstreamApiClient>) => {\n return chainstreamApiClient<JobStreamingDTO>(\n { url: `/jobs/${id}/streaming`, method: \"GET\" },\n options,\n );\n};\nexport type GetResult = NonNullable<Awaited<ReturnType<typeof get>>>;\nexport type StreamingResult = NonNullable<Awaited<ReturnType<typeof streaming>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n AddressRiskResponseDTO,\n KYTRegisterTransferRequest,\n KYTRegisterWithdrawalRequest,\n RegisterAddressRequest,\n RegisterAddressResponseDTO,\n TransferAlertsResponseDTO,\n TransferBaseResponseDTO,\n TransferDirectExposureResponseDTO,\n TransferNetworkIdentificationsResponseDTO,\n WithdrawalAddressIdentificationsResponseDTO,\n WithdrawalBaseResponseDTO,\n WithdrawalFraudAssessmentResponseDTO,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.KYT.REGISTER_TRANSFER.DESCRIPTION\n * @summary CONTROLLER.KYT.REGISTER_TRANSFER.SUMMARY\n */\nexport const registerTransfer = (\n kYTRegisterTransferRequest: KYTRegisterTransferRequest,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TransferBaseResponseDTO>(\n {\n url: `/v1/kyt/transfer`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: kYTRegisterTransferRequest,\n },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_TRANSFER_SUMMARY.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_TRANSFER_SUMMARY.SUMMARY\n */\nexport const getTransferSummary = (\n transferId: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TransferBaseResponseDTO>(\n { url: `/v1/kyt/transfers/${transferId}/summary`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_TRANSFER_DIRECT_EXPOSURE.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_TRANSFER_DIRECT_EXPOSURE.SUMMARY\n */\nexport const getTransferDirectExposure = (\n transferId: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TransferDirectExposureResponseDTO>(\n { url: `/v1/kyt/transfers/${transferId}/exposures/direct`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_TRANSFER_ALERTS.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_TRANSFER_ALERTS.SUMMARY\n */\nexport const getTransferAlerts = (\n transferId: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TransferAlertsResponseDTO>(\n { url: `/v1/kyt/transfers/${transferId}/alerts`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_TRANSFER_NETWORK_IDENTIFICATIONS.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_TRANSFER_NETWORK_IDENTIFICATIONS.SUMMARY\n */\nexport const getTransferNetworkIdentifications = (\n transferId: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TransferNetworkIdentificationsResponseDTO>(\n { url: `/v1/kyt/transfers/${transferId}/network-identifications`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.REGISTER_WITHDRAWAL.DESCRIPTION\n * @summary CONTROLLER.KYT.REGISTER_WITHDRAWAL.SUMMARY\n */\nexport const registerWithdrawal = (\n kYTRegisterWithdrawalRequest: KYTRegisterWithdrawalRequest,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<WithdrawalBaseResponseDTO>(\n {\n url: `/v1/kyt/withdrawal`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: kYTRegisterWithdrawalRequest,\n },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_WITHDRAWAL_SUMMARY.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_WITHDRAWAL_SUMMARY.SUMMARY\n */\nexport const getWithdrawalSummary = (\n withdrawalId: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<WithdrawalBaseResponseDTO>(\n { url: `/v1/kyt/withdrawal/${withdrawalId}/summary`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_WITHDRAWAL_DIRECT_EXPOSURE.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_WITHDRAWAL_DIRECT_EXPOSURE.SUMMARY\n */\nexport const getWithdrawalDirectExposure = (\n withdrawalId: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TransferDirectExposureResponseDTO>(\n { url: `/v1/kyt/withdrawal/${withdrawalId}/exposures/direct`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_WITHDRAWAL_ALERTS.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_WITHDRAWAL_ALERTS.SUMMARY\n */\nexport const getWithdrawalAlerts = (\n withdrawalId: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TransferAlertsResponseDTO>(\n { url: `/v1/kyt/withdrawal/${withdrawalId}/alerts`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_WITHDRAWAL_ADDRESS_IDENTIFICATIONS.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_WITHDRAWAL_ADDRESS_IDENTIFICATIONS.SUMMARY\n */\nexport const getWithdrawalAddressIdentifications = (\n withdrawalId: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<WithdrawalAddressIdentificationsResponseDTO>(\n { url: `/v1/kyt/withdrawal/${withdrawalId}/address-identifications`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_WITHDRAWAL_NETWORK_IDENTIFICATIONS.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_WITHDRAWAL_NETWORK_IDENTIFICATIONS.SUMMARY\n */\nexport const getWithdrawalNetworkIdentifications = (\n withdrawalId: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TransferNetworkIdentificationsResponseDTO>(\n { url: `/v1/kyt/withdrawal/${withdrawalId}/network-identifications`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_WITHDRAWAL_FRAUD_ASSESSMENT.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_WITHDRAWAL_FRAUD_ASSESSMENT.SUMMARY\n */\nexport const getWithdrawalFraudAssessment = (\n withdrawalId: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<WithdrawalFraudAssessmentResponseDTO>(\n { url: `/v1/kyt/withdrawal/${withdrawalId}/fraud-assessment`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.REGISTER_ADDRESS.DESCRIPTION\n * @summary CONTROLLER.KYT.REGISTER_ADDRESS.SUMMARY\n */\nexport const registerAddress = (\n registerAddressRequest: RegisterAddressRequest,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<RegisterAddressResponseDTO>(\n {\n url: `/v1/kyt/address`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: registerAddressRequest,\n },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_ADDRESS_RISK.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_ADDRESS_RISK.SUMMARY\n */\nexport const getAddressRisk = (\n address: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<AddressRiskResponseDTO>(\n { url: `/v1/kyt/addresses/${address}/risk`, method: \"GET\" },\n options,\n );\n};\nexport type RegisterTransferResult = NonNullable<Awaited<ReturnType<typeof registerTransfer>>>;\nexport type GetTransferSummaryResult = NonNullable<Awaited<ReturnType<typeof getTransferSummary>>>;\nexport type GetTransferDirectExposureResult = NonNullable<\n Awaited<ReturnType<typeof getTransferDirectExposure>>\n>;\nexport type GetTransferAlertsResult = NonNullable<Awaited<ReturnType<typeof getTransferAlerts>>>;\nexport type GetTransferNetworkIdentificationsResult = NonNullable<\n Awaited<ReturnType<typeof getTransferNetworkIdentifications>>\n>;\nexport type RegisterWithdrawalResult = NonNullable<Awaited<ReturnType<typeof registerWithdrawal>>>;\nexport type GetWithdrawalSummaryResult = NonNullable<\n Awaited<ReturnType<typeof getWithdrawalSummary>>\n>;\nexport type GetWithdrawalDirectExposureResult = NonNullable<\n Awaited<ReturnType<typeof getWithdrawalDirectExposure>>\n>;\nexport type GetWithdrawalAlertsResult = NonNullable<\n Awaited<ReturnType<typeof getWithdrawalAlerts>>\n>;\nexport type GetWithdrawalAddressIdentificationsResult = NonNullable<\n Awaited<ReturnType<typeof getWithdrawalAddressIdentifications>>\n>;\nexport type GetWithdrawalNetworkIdentificationsResult = NonNullable<\n Awaited<ReturnType<typeof getWithdrawalNetworkIdentifications>>\n>;\nexport type GetWithdrawalFraudAssessmentResult = NonNullable<\n Awaited<ReturnType<typeof getWithdrawalFraudAssessment>>\n>;\nexport type RegisterAddressResult = NonNullable<Awaited<ReturnType<typeof registerAddress>>>;\nexport type GetAddressRiskResult = NonNullable<Awaited<ReturnType<typeof getAddressRisk>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n ChainSymbol,\n GetFinalStretchTokensParams,\n GetHotTokensParams,\n GetMigratedTokensParams,\n GetNewTokensParams,\n GetStocksTokensParams,\n Token,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.RANKING.HOT_TOKENS.DESCRIPTION\n * @summary CONTROLLER.RANKING.HOT_TOKENS.SUMMARY\n */\nexport const getHotTokens = (\n chain: ChainSymbol,\n duration: \"1m\" | \"5m\" | \"1h\" | \"4h\" | \"24h\",\n params?: GetHotTokensParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<Token[]>(\n { url: `/v1/ranking/${chain}/hotTokens/${duration}`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.RANKING.NEW_TOKENS.DESCRIPTION\n * @summary CONTROLLER.RANKING.NEW_TOKENS.SUMMARY\n */\nexport const getNewTokens = (\n chain: ChainSymbol,\n params?: GetNewTokensParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<Token[]>(\n { url: `/v1/ranking/${chain}/newTokens`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.RANKING.STOCKS_TOKENS.DESCRIPTION\n * @summary CONTROLLER.RANKING.STOCKS_TOKENS.SUMMARY\n */\nexport const getStocksTokens = (\n chain: ChainSymbol,\n params?: GetStocksTokensParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<Token[]>(\n { url: `/v1/ranking/${chain}/stocks`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.RANKING.FINAL_STRETCH_TOKENS.DESCRIPTION\n * @summary CONTROLLER.RANKING.FINAL_STRETCH_TOKENS.SUMMARY\n */\nexport const getFinalStretchTokens = (\n chain: ChainSymbol,\n params?: GetFinalStretchTokensParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<Token[]>(\n { url: `/v1/ranking/${chain}/finalStretch`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.RANKING.MIGRATED_TOKENS.DESCRIPTION\n * @summary CONTROLLER.RANKING.MIGRATED_TOKENS.SUMMARY\n */\nexport const getMigratedTokens = (\n chain: ChainSymbol,\n params?: GetMigratedTokensParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<Token[]>(\n { url: `/v1/ranking/${chain}/migrated`, method: \"GET\", params },\n options,\n );\n};\nexport type GetHotTokensResult = NonNullable<Awaited<ReturnType<typeof getHotTokens>>>;\nexport type GetNewTokensResult = NonNullable<Awaited<ReturnType<typeof getNewTokens>>>;\nexport type GetStocksTokensResult = NonNullable<Awaited<ReturnType<typeof getStocksTokens>>>;\nexport type GetFinalStretchTokensResult = NonNullable<\n Awaited<ReturnType<typeof getFinalStretchTokens>>\n>;\nexport type GetMigratedTokensResult = NonNullable<Awaited<ReturnType<typeof getMigratedTokens>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n ChainSymbol,\n ClaimRedPacketInput,\n CreateRedPacketInput,\n CreateRedPacketReply,\n GetClaimsByAddressParams,\n GetClaimsParams,\n GetRedpacketsByAddressParams,\n GetRedpacketsParams,\n RedPacketClaimsPage,\n RedPacketDTO,\n RedPacketReply,\n RedPacketSendTxInput,\n RedPacketSendTxResponse,\n RedPacketsPage,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.RED_PACKET.CREATE.DESCRIPTION\n * @summary CONTROLLER.RED_PACKET.CREATE.SUMMARY\n */\nexport const createRedpacket = (\n chain: ChainSymbol,\n createRedPacketInput: CreateRedPacketInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<CreateRedPacketReply>(\n {\n url: `/v1/redpacket/${chain}/create`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: createRedPacketInput,\n },\n options,\n );\n};\n/**\n * CONTROLLER.RED_PACKET.CLAIM.DESCRIPTION\n * @summary CONTROLLER.RED_PACKET.CLAIM.SUMMARY\n */\nexport const claimRedpacket = (\n chain: ChainSymbol,\n claimRedPacketInput: ClaimRedPacketInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<RedPacketReply>(\n {\n url: `/v1/redpacket/${chain}/claim`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: claimRedPacketInput,\n },\n options,\n );\n};\n/**\n * CONTROLLER.RED_PACKET.GET.DESCRIPTION\n * @summary CONTROLLER.RED_PACKET.GET.SUMMARY\n */\nexport const getRedpacket = (\n id: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<RedPacketDTO>({ url: `/v1/redpacket/${id}`, method: \"GET\" }, options);\n};\n/**\n * CONTROLLER.RED_PACKET.GET_CLAIMS.DESCRIPTION\n * @summary CONTROLLER.RED_PACKET.GET_CLAIMS.SUMMARY\n */\nexport const getClaims = (\n id: string,\n params?: GetClaimsParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<RedPacketClaimsPage>(\n { url: `/v1/redpacket/${id}/claims`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.RED_PACKET.GET_REDPACKETS.DESCRIPTION\n * @summary CONTROLLER.RED_PACKET.GET_REDPACKETS.SUMMARY\n */\nexport const getRedpackets = (\n params?: GetRedpacketsParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<RedPacketsPage>(\n { url: `/v1/redpacket`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.RED_PACKET.GET_CLAIMS_BY_ADDRESS.DESCRIPTION\n * @summary CONTROLLER.RED_PACKET.GET_CLAIMS_BY_ADDRESS.SUMMARY\n */\nexport const getClaimsByAddress = (\n address: string,\n params?: GetClaimsByAddressParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<RedPacketClaimsPage>(\n { url: `/v1/redpacket/wallet/${address}/claims`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.RED_PACKET.GET_REDPACKETS_BY_ADDRESS.DESCRIPTION\n * @summary CONTROLLER.RED_PACKET.GET_REDPACKETS_BY_ADDRESS.SUMMARY\n */\nexport const getRedpacketsByAddress = (\n address: string,\n params?: GetRedpacketsByAddressParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<RedPacketsPage>(\n { url: `/v1/redpacket/wallet/${address}/redpackets`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.RED_PACKET.SEND.DESCRIPTION\n * @summary CONTROLLER.RED_PACKET.SEND.SUMMARY\n */\nexport const redpacketSend = (\n chain: ChainSymbol,\n redPacketSendTxInput: RedPacketSendTxInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<RedPacketSendTxResponse>(\n {\n url: `/v1/redpacket/${chain}/send`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: redPacketSendTxInput,\n },\n options,\n );\n};\nexport type CreateRedpacketResult = NonNullable<Awaited<ReturnType<typeof createRedpacket>>>;\nexport type ClaimRedpacketResult = NonNullable<Awaited<ReturnType<typeof claimRedpacket>>>;\nexport type GetRedpacketResult = NonNullable<Awaited<ReturnType<typeof getRedpacket>>>;\nexport type GetClaimsResult = NonNullable<Awaited<ReturnType<typeof getClaims>>>;\nexport type GetRedpacketsResult = NonNullable<Awaited<ReturnType<typeof getRedpackets>>>;\nexport type GetClaimsByAddressResult = NonNullable<Awaited<ReturnType<typeof getClaimsByAddress>>>;\nexport type GetRedpacketsByAddressResult = NonNullable<\n Awaited<ReturnType<typeof getRedpacketsByAddress>>\n>;\nexport type RedpacketSendResult = NonNullable<Awaited<ReturnType<typeof redpacketSend>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n Candle,\n ChainSymbol,\n DevTokenDTO,\n DexPoolDTO,\n GetCandlesParams,\n GetHoldersMultiParams,\n GetHoldersParams,\n GetMarketDataMulti200,\n GetMarketDataMultiParams,\n GetMetadataMulti200,\n GetMetadataMultiParams,\n GetMintAndBurnParams,\n GetPoolsParams,\n GetPriceByTimeParams,\n GetPricesParams,\n GetSecurity200,\n GetStatsMulti200,\n GetStatsMultiParams,\n GetTokenLiquiditySnapshotsParams,\n GetTokensParams,\n ListTokenParams,\n SearchParams,\n Token,\n TokenCreationDTO,\n TokenCreationPage,\n TokenHolder,\n TokenHolderPage,\n TokenLiquiditySnapshotPage,\n TokenListPage,\n TokenMarketData,\n TokenMetadata,\n TokenPage,\n TokenPriceDTO,\n TokenPricePage,\n TokenStat,\n TokenTrader,\n TokenTraderTag,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.TOKEN.SEARCH.DESCRIPTION\n * @summary CONTROLLER.TOKEN.SEARCH.SUMMARY\n */\nexport const search = (\n params?: SearchParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenPage>(\n { url: `/v1/token/search`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_TOKENS.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_TOKENS.SUMMARY\n */\nexport const getTokens = (\n chain: ChainSymbol,\n params: GetTokensParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<Token[]>(\n { url: `/v1/token/${chain}/multi`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET.SUMMARY\n */\nexport const getToken = (\n chain: ChainSymbol,\n tokenAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<Token>(\n { url: `/v1/token/${chain}/${tokenAddress}`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_METADATA.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_METADATA.SUMMARY\n */\nexport const getMetadata = (\n chain: ChainSymbol,\n tokenAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenMetadata>(\n { url: `/v1/token/${chain}/${tokenAddress}/metadata`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_METADATA_MULTI.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_METADATA_MULTI.SUMMARY\n */\nexport const getMetadataMulti = (\n chain: ChainSymbol,\n params: GetMetadataMultiParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<GetMetadataMulti200>(\n { url: `/v1/token/${chain}/metadata/multi`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_POOLS.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_POOLS.SUMMARY\n */\nexport const getPools = (\n chain: ChainSymbol,\n tokenAddress: string,\n params?: GetPoolsParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<DexPoolDTO[]>(\n { url: `/v1/token/${chain}/${tokenAddress}/pools`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_STATS.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_STATS.SUMMARY\n */\nexport const getStats = (\n chain: ChainSymbol,\n tokenAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenStat>(\n { url: `/v1/token/${chain}/${tokenAddress}/stats`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_STATS_MULTI.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_STATS_MULTI.SUMMARY\n */\nexport const getStatsMulti = (\n chain: ChainSymbol,\n params: GetStatsMultiParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<GetStatsMulti200>(\n { url: `/v1/token/${chain}/stats/multi`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_HOLDERS.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_HOLDERS.SUMMARY\n */\nexport const getHolders = (\n chain: ChainSymbol,\n tokenAddress: string,\n params?: GetHoldersParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenHolderPage>(\n { url: `/v1/token/${chain}/${tokenAddress}/holders`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_HOLDERS_MULTI.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_HOLDERS_MULTI.SUMMARY\n */\nexport const getHoldersMulti = (\n chain: ChainSymbol,\n tokenAddress: string,\n params: GetHoldersMultiParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenHolder[]>(\n { url: `/v1/token/${chain}/${tokenAddress}/holders/multi`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_CANDLES.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_CANDLES.SUMMARY\n */\nexport const getCandles = (\n chain: ChainSymbol,\n tokenAddress: string,\n params: GetCandlesParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<Candle[]>(\n { url: `/v1/token/${chain}/${tokenAddress}/candles`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_TOP_HOLDERS.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_TOP_HOLDERS.SUMMARY\n */\nexport const getTopHolders = (\n chain: ChainSymbol,\n tokenAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenHolderPage>(\n { url: `/v1/token/${chain}/${tokenAddress}/topHolders`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_MARKET_CAP.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_MARKET_CAP.SUMMARY\n */\nexport const getMarketData = (\n chain: ChainSymbol,\n tokenAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenMarketData>(\n { url: `/v1/token/${chain}/${tokenAddress}/marketData`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_MARKET_DATA_MULTI.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_MARKET_DATA_MULTI.SUMMARY\n */\nexport const getMarketDataMulti = (\n chain: ChainSymbol,\n params: GetMarketDataMultiParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<GetMarketDataMulti200>(\n { url: `/v1/token/${chain}/marketData/multi`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_PRICES.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_PRICES.SUMMARY\n */\nexport const getPrices = (\n chain: ChainSymbol,\n tokenAddress: string,\n params?: GetPricesParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenPricePage>(\n { url: `/v1/token/${chain}/${tokenAddress}/prices`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_PRICE_BY_TIME.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_PRICE_BY_TIME.SUMMARY\n */\nexport const getPriceByTime = (\n chain: ChainSymbol,\n tokenAddress: string,\n params: GetPriceByTimeParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenPriceDTO>(\n { url: `/v1/token/${chain}/${tokenAddress}/price`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_CREATION.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_CREATION.SUMMARY\n */\nexport const getCreation = (\n chain: ChainSymbol,\n tokenAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenCreationDTO>(\n { url: `/v1/token/${chain}/${tokenAddress}/creation`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_MINT_AND_BURN.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_MINT_AND_BURN.SUMMARY\n */\nexport const getMintAndBurn = (\n chain: ChainSymbol,\n tokenAddress: string,\n params?: GetMintAndBurnParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenCreationPage>(\n { url: `/v1/token/${chain}/${tokenAddress}/mintAndBurn`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_TOKEN_LIST.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_TOKEN_LIST.SUMMARY\n */\nexport const listToken = (\n chain: ChainSymbol,\n params?: ListTokenParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenListPage>(\n { url: `/v1/token/${chain}/list`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_SECURITY.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_SECURITY.SUMMARY\n */\nexport const getSecurity = (\n chain: ChainSymbol,\n tokenAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<GetSecurity200>(\n { url: `/v1/token/${chain}/${tokenAddress}/security`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_DEV_TOKENS.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_DEV_TOKENS.SUMMARY\n */\nexport const getDevTokens = (\n chain: ChainSymbol,\n devAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<DevTokenDTO[]>(\n { url: `/v1/token/${chain}/dev/${devAddress}/tokens`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_TOKEN_TRADERS.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_TOKEN_TRADERS.SUMMARY\n */\nexport const getTokenTraders = (\n chain: ChainSymbol,\n tokenAddress: string,\n tag: TokenTraderTag,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenTrader[]>(\n { url: `/v1/token/${chain}/${tokenAddress}/traders/${tag}`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_LIQUIDITY_SNAPSHOTS.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_LIQUIDITY_SNAPSHOTS.SUMMARY\n */\nexport const getTokenLiquiditySnapshots = (\n chain: ChainSymbol,\n tokenAddress: string,\n params?: GetTokenLiquiditySnapshotsParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenLiquiditySnapshotPage>(\n { url: `/v1/token/${chain}/${tokenAddress}/liquiditySnapshots`, method: \"GET\", params },\n options,\n );\n};\nexport type SearchResult = NonNullable<Awaited<ReturnType<typeof search>>>;\nexport type GetTokensResult = NonNullable<Awaited<ReturnType<typeof getTokens>>>;\nexport type GetTokenResult = NonNullable<Awaited<ReturnType<typeof getToken>>>;\nexport type GetMetadataResult = NonNullable<Awaited<ReturnType<typeof getMetadata>>>;\nexport type GetMetadataMultiResult = NonNullable<Awaited<ReturnType<typeof getMetadataMulti>>>;\nexport type GetPoolsResult = NonNullable<Awaited<ReturnType<typeof getPools>>>;\nexport type GetStatsResult = NonNullable<Awaited<ReturnType<typeof getStats>>>;\nexport type GetStatsMultiResult = NonNullable<Awaited<ReturnType<typeof getStatsMulti>>>;\nexport type GetHoldersResult = NonNullable<Awaited<ReturnType<typeof getHolders>>>;\nexport type GetHoldersMultiResult = NonNullable<Awaited<ReturnType<typeof getHoldersMulti>>>;\nexport type GetCandlesResult = NonNullable<Awaited<ReturnType<typeof getCandles>>>;\nexport type GetTopHoldersResult = NonNullable<Awaited<ReturnType<typeof getTopHolders>>>;\nexport type GetMarketDataResult = NonNullable<Awaited<ReturnType<typeof getMarketData>>>;\nexport type GetMarketDataMultiResult = NonNullable<Awaited<ReturnType<typeof getMarketDataMulti>>>;\nexport type GetPricesResult = NonNullable<Awaited<ReturnType<typeof getPrices>>>;\nexport type GetPriceByTimeResult = NonNullable<Awaited<ReturnType<typeof getPriceByTime>>>;\nexport type GetCreationResult = NonNullable<Awaited<ReturnType<typeof getCreation>>>;\nexport type GetMintAndBurnResult = NonNullable<Awaited<ReturnType<typeof getMintAndBurn>>>;\nexport type ListTokenResult = NonNullable<Awaited<ReturnType<typeof listToken>>>;\nexport type GetSecurityResult = NonNullable<Awaited<ReturnType<typeof getSecurity>>>;\nexport type GetDevTokensResult = NonNullable<Awaited<ReturnType<typeof getDevTokens>>>;\nexport type GetTokenTradersResult = NonNullable<Awaited<ReturnType<typeof getTokenTraders>>>;\nexport type GetTokenLiquiditySnapshotsResult = NonNullable<\n Awaited<ReturnType<typeof getTokenLiquiditySnapshots>>\n>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n ChainSymbol,\n GetActivitiesParams,\n GetTopTradersParams,\n GetTradesParams,\n TopTradersPage,\n TradePage,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.TRADE.GET.TOKEN.DESCRIPTION\n * @summary CONTROLLER.TRADE.GET.TOKEN.SUMMARY\n */\nexport const getTrades = (\n chain: ChainSymbol,\n params?: GetTradesParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TradePage>(\n { url: `/v1/trade/${chain}`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TRADE.GET.TOKEN_ACTIVITIES.DESCRIPTION\n * @summary CONTROLLER.TRADE.GET.TOKEN_ACTIVITIES.SUMMARY\n */\nexport const getActivities = (\n chain: ChainSymbol,\n params?: GetActivitiesParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TradePage>(\n { url: `/v1/trade/${chain}/activities`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TRADE.GET.TOP_TRADERS.DESCRIPTION\n * @summary CONTROLLER.TRADE.GET.TOP_TRADERS.SUMMARY\n */\nexport const getTopTraders = (\n chain: ChainSymbol,\n params: GetTopTradersParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TopTradersPage>(\n { url: `/v1/trade/${chain}/top-traders`, method: \"GET\", params },\n options,\n );\n};\nexport type GetTradesResult = NonNullable<Awaited<ReturnType<typeof getTrades>>>;\nexport type GetActivitiesResult = NonNullable<Awaited<ReturnType<typeof getActivities>>>;\nexport type GetTopTradersResult = NonNullable<Awaited<ReturnType<typeof getTopTraders>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n EstimateGasLimitInput,\n EstimateGasLimitResponse,\n GasPriceResponse,\n SendTxInput,\n SendTxResponse,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.TRANSACTION.SEND.DESCRIPTION\n * @summary CONTROLLER.TRANSACTION.SEND.SUMMARY\n */\nexport const send = (\n chain: string,\n sendTxInput: SendTxInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<SendTxResponse>(\n {\n url: `/v1/transaction/${chain}/send`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: sendTxInput,\n },\n options,\n );\n};\n/**\n * CONTROLLER.TRANSACTION.GET_GAS_PRICE.DESCRIPTION\n * @summary CONTROLLER.TRANSACTION.GET_GAS_PRICE.SUMMARY\n */\nexport const getGasPrice = (\n chain: \"bsc\" | \"eth\",\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<GasPriceResponse>(\n { url: `/v1/transaction/${chain}/gas-price`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.TRANSACTION.ESTIMATE_GAS_LIMIT.DESCRIPTION\n * @summary CONTROLLER.TRANSACTION.ESTIMATE_GAS_LIMIT.SUMMARY\n */\nexport const getGasLimit = (\n chain: \"bsc\" | \"eth\",\n estimateGasLimitInput: EstimateGasLimitInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<EstimateGasLimitResponse>(\n {\n url: `/v1/transaction/${chain}/estimate-gas-limit`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: estimateGasLimitInput,\n },\n options,\n );\n};\nexport type SendResult = NonNullable<Awaited<ReturnType<typeof send>>>;\nexport type GetGasPriceResult = NonNullable<Awaited<ReturnType<typeof getGasPrice>>>;\nexport type GetGasLimitResult = NonNullable<Awaited<ReturnType<typeof getGasLimit>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n BalanceUpdatePage,\n BooleanResultDTO,\n CalculatePnlInput,\n ChainSymbol,\n GetBalanceParams,\n GetBalanceUpdatesParams,\n GetPnlParams,\n WalletBalancesDTO,\n WalletPnlDTO,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.WALLET.GET_PNL.DESCRIPTION\n * @summary CONTROLLER.WALLET.GET_PNL.SUMMARY\n */\nexport const getPnl = (\n chain: ChainSymbol,\n walletAddress: string,\n params?: GetPnlParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<WalletPnlDTO[]>(\n { url: `/v1/wallet/${chain}/${walletAddress}`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.WALLET.GET_PNL_STATS.DESCRIPTION\n * @summary CONTROLLER.WALLET.GET_PNL_STATS.SUMMARY\n */\nexport const getPnlStats = (\n chain: ChainSymbol,\n walletAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<WalletPnlDTO[]>(\n { url: `/v1/wallet/${chain}/${walletAddress}/stats`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.WALLET.GET_BALANCES.DESCRIPTION\n * @summary CONTROLLER.WALLET.GET_BALANCES.SUMMARY\n */\nexport const getBalance = (\n chain: ChainSymbol,\n walletAddress: string,\n params?: GetBalanceParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<WalletBalancesDTO>(\n { url: `/v1/wallet/${chain}/${walletAddress}/balance`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.WALLET.CALCULATE_PNL.DESCRIPTION\n * @summary CONTROLLER.WALLET.CALCULATE_PNL.SUMMARY\n */\nexport const calculatePnl = (\n chain: ChainSymbol,\n walletAddress: string,\n calculatePnlInput: CalculatePnlInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<BooleanResultDTO>(\n {\n url: `/v1/wallet/${chain}/${walletAddress}/calculate-pnl`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: calculatePnlInput,\n },\n options,\n );\n};\n/**\n * CONTROLLER.WALLET.GET_BALANCE_UPDATES.DESCRIPTION\n * @summary CONTROLLER.WALLET.GET_BALANCE_UPDATES.SUMMARY\n */\nexport const getBalanceUpdates = (\n chain: ChainSymbol,\n walletAddress: string,\n params?: GetBalanceUpdatesParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<BalanceUpdatePage>(\n { url: `/v1/wallet/${chain}/${walletAddress}/balance-updates`, method: \"GET\", params },\n options,\n );\n};\nexport type GetPnlResult = NonNullable<Awaited<ReturnType<typeof getPnl>>>;\nexport type GetPnlStatsResult = NonNullable<Awaited<ReturnType<typeof getPnlStats>>>;\nexport type GetBalanceResult = NonNullable<Awaited<ReturnType<typeof getBalance>>>;\nexport type CalculatePnlResult = NonNullable<Awaited<ReturnType<typeof calculatePnl>>>;\nexport type GetBalanceUpdatesResult = NonNullable<Awaited<ReturnType<typeof getBalanceUpdates>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type { BooleanResultDTO, ChainSymbol } from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.WATCHLIST.ADD.DESCRIPTION\n * @summary CONTROLLER.WATCHLIST.ADD.SUMMARY\n */\nexport const watchlistAdd = (\n chain: ChainSymbol,\n walletAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<BooleanResultDTO>(\n { url: `/v1/watchlist/${chain}/${walletAddress}`, method: \"POST\" },\n options,\n );\n};\nexport type WatchlistAddResult = NonNullable<Awaited<ReturnType<typeof watchlistAdd>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\n/**\n * DTO.JOB.RESULT\n */\nexport type JobDTOResult = { [key: string]: unknown };\n\nexport interface JobDTO {\n /** DTO.JOB.STATE */\n state: string;\n /** DTO.JOB.RESULT */\n result: JobDTOResult;\n}\n\n/**\n * DTO.JOB.STREAMING.DATA\n */\nexport type JobStreamingDTOData = { [key: string]: unknown };\n\nexport interface JobStreamingDTO {\n /** DTO.JOB.STREAMING.ID */\n id: number;\n /** DTO.JOB.STREAMING.DATA */\n data: JobStreamingDTOData;\n}\n\nexport interface BlockchainDTO {\n /** DTO.BLOCKCHAIN.SYMBOL */\n symbol: string;\n /** DTO.BLOCKCHAIN.NAME */\n name: string;\n /** DTO.BLOCKCHAIN.EXPLORER_URL */\n explorerUrl: string;\n /** DTO.BLOCKCHAIN.CHAIN_ID */\n chainId: number;\n}\n\nexport type ChainSymbol = (typeof ChainSymbol)[keyof typeof ChainSymbol];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ChainSymbol = {\n sol: \"sol\",\n bsc: \"bsc\",\n eth: \"eth\",\n} as const;\n\nexport interface BlockchainLatestBlockDTO {\n /** DTO.BLOCKCHAIN.LATEST_BLOCK.BLOCKHASH */\n blockhash: string;\n /** DTO.BLOCKCHAIN.LATEST_BLOCK.LAST_VALID_BLOCK_HEIGHT */\n lastValidBlockHeight: number;\n}\n\n/**\n * DTO.TRANSACTION.SEND.SUBMIT_TYPE\n */\nexport type SendTxInputSubmitType =\n (typeof SendTxInputSubmitType)[keyof typeof SendTxInputSubmitType];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SendTxInputSubmitType = {\n default: \"default\",\n priority: \"priority\",\n} as const;\n\n/**\n * DTO.TRANSACTION.SEND.OPTIONS\n */\nexport type SendTxInputOptions = { [key: string]: unknown };\n\nexport interface SendTxInput {\n /** DTO.TRANSACTION.SEND.SIGNED_TX */\n signedTx: string;\n /** DTO.TRANSACTION.SEND.SUBMIT_TYPE */\n submitType?: SendTxInputSubmitType;\n /** DTO.TRANSACTION.SEND.OPTIONS */\n options?: SendTxInputOptions;\n}\n\nexport interface SendTxResponse {\n /** DTO.TRANSACTION.SEND.SIGNATURE */\n signature: string;\n /** DTO.TRANSACTION.SEND.ELAPSED_TIME */\n elapsedTime: number;\n /** DTO.TRANSACTION.SEND.JOB_ID */\n jobId: string;\n}\n\nexport interface GasPriceResponse {\n /** Current gas price in wei (hex string) */\n gasPrice: string;\n /** Chain symbol */\n chain: string;\n}\n\nexport interface EstimateGasLimitInput {\n /** From address */\n from: string;\n /** To address */\n to: string;\n /** Transaction data (hex) */\n data: string;\n /** Value to send (in wei, hex string) */\n value?: string;\n}\n\nexport interface EstimateGasLimitResponse {\n /** Estimated gas limit (hex string) */\n gasLimit: string;\n /** Chain symbol */\n chain: string;\n}\n\n/**\n * DTO.DEX.IDENTIFIER\n */\nexport type SwapInputDex = (typeof SwapInputDex)[keyof typeof SwapInputDex];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SwapInputDex = {\n raydium: \"raydium\",\n pumpfun: \"pumpfun\",\n moonshot: \"moonshot\",\n candy: \"candy\",\n launchpad: \"launchpad\",\n} as const;\n\n/**\n * DTO.DEX.SWAP.MODE\n */\nexport type SwapInputSwapMode = (typeof SwapInputSwapMode)[keyof typeof SwapInputSwapMode];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SwapInputSwapMode = {\n ExactIn: \"ExactIn\",\n ExactOut: \"ExactOut\",\n} as const;\n\nexport interface SwapInput {\n /** DTO.DEX.IDENTIFIER */\n dex: SwapInputDex;\n /**\n * DTO.DEX.WALLET\n * @minLength 8\n * @maxLength 64\n */\n userAddress: string;\n /** DTO.DEX.BASE.PRIORITY_FEE */\n priorityFee?: string;\n /** DTO.DEX.SWAP.POOL_ADDRESS */\n poolAddress?: string;\n /** DTO.DEX.SWAP.AMOUNT */\n amount: string;\n /** DTO.DEX.SWAP.MODE */\n swapMode: SwapInputSwapMode;\n /**\n * DTO.DEX.SWAP.SLIPPAGE\n * @minimum 0\n * @maximum 100\n */\n slippage: number;\n /** DTO.DEX.SWAP.INPUT_MINT */\n inputMint?: string;\n /** DTO.DEX.SWAP.OUTPUT_MINT */\n outputMint?: string;\n}\n\nexport interface SwapReply {\n /** DTO.DEX.SWAP.SERIALIZED_TX */\n serializedTx: string;\n /** DTO.DEX.SWAP.ELAPSED_TIME */\n elapsedTime: number;\n}\n\n/**\n * DTO.DEX.IDENTIFIER\n */\nexport type SwapRouteInputDex = (typeof SwapRouteInputDex)[keyof typeof SwapRouteInputDex];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SwapRouteInputDex = {\n jupiter: \"jupiter\",\n kyberswap: \"kyberswap\",\n} as const;\n\n/**\n * DTO.DEX.SWAP.MODE\n */\nexport type SwapRouteInputSwapMode =\n (typeof SwapRouteInputSwapMode)[keyof typeof SwapRouteInputSwapMode];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SwapRouteInputSwapMode = {\n ExactIn: \"ExactIn\",\n ExactOut: \"ExactOut\",\n} as const;\n\nexport interface SwapRouteInput {\n /** DTO.DEX.IDENTIFIER */\n dex: SwapRouteInputDex;\n /**\n * DTO.DEX.WALLET\n * @minLength 8\n * @maxLength 64\n */\n userAddress: string;\n /** DTO.DEX.BASE.PRIORITY_FEE */\n priorityFee?: string;\n /** DTO.DEX.SWAP.AMOUNT */\n amount: string;\n /** DTO.DEX.SWAP.MODE */\n swapMode: SwapRouteInputSwapMode;\n /**\n * DTO.DEX.SWAP.SLIPPAGE\n * @minimum 0\n * @maximum 100\n */\n slippage: number;\n /** DTO.DEX.SWAP.INPUT_MINT */\n inputMint?: string;\n /** DTO.DEX.SWAP.OUTPUT_MINT */\n outputMint?: string;\n /** DTO.DEX.SWAP.RECIPIENT_ADDRESS */\n recipientAddress?: string;\n /** DTO.DEX.SWAP.PERMIT */\n permit?: string;\n /** DTO.DEX.SWAP.DEADLINE */\n deadline?: number;\n /** DTO.DEX.BASE.TIP_FEE */\n tipFee?: string;\n /** DTO.DEX.BASE.IS_ANTI_MEV */\n isAntiMev?: boolean;\n}\n\n/**\n * DTO.DEX.SWAP.ROUTE_INFO\n */\nexport type SwapRouteResponseRouteInfo = { [key: string]: unknown };\n\nexport interface SwapRouteResponse {\n /** DTO.DEX.SWAP.ARGS */\n args: SwapRouteInput;\n /** DTO.DEX.SWAP.SERIALIZED_TX */\n serializedTx: string;\n /** DTO.DEX.SWAP.ROUTE_INFO */\n routeInfo: SwapRouteResponseRouteInfo;\n /** DTO.DEX.SWAP.ELAPSED_TIME */\n elapsedTime: number;\n}\n\nexport interface DexQuoteResponse {\n /** DTO.DEX.QUOTE.AMOUNT_OUT */\n amountOut?: string;\n /** DTO.DEX.QUOTE.MIN_AMOUNT_OUT */\n minAmountOut?: string;\n /** DTO.DEX.QUOTE.CURRENT_PRICE */\n currentPrice?: string;\n /** DTO.DEX.QUOTE.EXECUTION_PRICE */\n executionPrice?: string;\n /** DTO.DEX.QUOTE.PRICE_IMPACT */\n priceImpact?: string;\n /** DTO.DEX.QUOTE.FEE */\n fee?: string;\n}\n\n/**\n * DTO.DEX.IDENTIFIER\n */\nexport type CreateTokenInputDex = (typeof CreateTokenInputDex)[keyof typeof CreateTokenInputDex];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const CreateTokenInputDex = {\n raydium: \"raydium\",\n pumpfun: \"pumpfun\",\n moonshot: \"moonshot\",\n candy: \"candy\",\n launchpad: \"launchpad\",\n} as const;\n\n/**\n * DTO.DEX.MINT.EXTRA\n */\nexport type CreateTokenInputExtra = { [key: string]: unknown };\n\nexport interface CreateTokenInput {\n /** DTO.DEX.IDENTIFIER */\n dex: CreateTokenInputDex;\n /**\n * DTO.DEX.WALLET\n * @minLength 8\n * @maxLength 64\n */\n userAddress: string;\n /** DTO.DEX.BASE.PRIORITY_FEE */\n priorityFee?: string;\n /**\n * DTO.DEX.MINT.NAME\n * @minLength 1\n * @maxLength 32\n */\n name: string;\n /**\n * DTO.DEX.MINT.SYMBOL\n * @minLength 1\n * @maxLength 10\n */\n symbol: string;\n /** DTO.DEX.MINT.URI */\n uri?: string;\n /** DTO.DEX.MINT.IMAGE */\n image?: string;\n /** DTO.DEX.MINT.EXTRA */\n extra?: CreateTokenInputExtra;\n}\n\nexport interface CreateTokenReply {\n /** DTO.DEX.CREATE_TOKEN.SERIALIZED_TX */\n serializedTx: string;\n /** DTO.DEX.CREATE_TOKEN.MINT_ADDRESS */\n mintAddress: string;\n}\n\nexport interface DexDTO {\n /** DTO.DEX.PROGRAM_ADDRESS */\n programAddress?: string;\n /** DTO.DEX.PROTOCOL_FAMILY */\n protocolFamily?: string;\n /** DTO.DEX.IMAGE */\n image?: string;\n /** DTO.DEX.CHAIN */\n chain: string;\n}\n\nexport interface DexPage {\n /** DTO.PAGE.HAS_NEXT */\n hasNext?: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev?: boolean;\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.TOTAL */\n total?: number;\n /** DTO.DEX.PAGE.DATA */\n data: DexDTO[];\n}\n\n/**\n * DTO.DEX.MOONSHOT.LINK.LABEL\n */\nexport type LinkLabel = (typeof LinkLabel)[keyof typeof LinkLabel];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const LinkLabel = {\n website: \"website\",\n twitter: \"twitter\",\n telegram: \"telegram\",\n discord: \"discord\",\n} as const;\n\nexport interface Link {\n /** DTO.DEX.MOONSHOT.LINK.URL */\n url: string;\n /** DTO.DEX.MOONSHOT.LINK.LABEL */\n label: LinkLabel;\n}\n\n/**\n * DTO.DEX.IDENTIFIER\n */\nexport type MoonshotCreateTokenInputDex =\n (typeof MoonshotCreateTokenInputDex)[keyof typeof MoonshotCreateTokenInputDex];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const MoonshotCreateTokenInputDex = {\n moonshot: \"moonshot\",\n} as const;\n\n/**\n * DTO.DEX.MOONSHOT.MINT.MIGRATION_DEX\n */\nexport type MoonshotCreateTokenInputMigrationDex =\n (typeof MoonshotCreateTokenInputMigrationDex)[keyof typeof MoonshotCreateTokenInputMigrationDex];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const MoonshotCreateTokenInputMigrationDex = {\n RAYDIUM: \"RAYDIUM\",\n METEORA: \"METEORA\",\n UNISWAP: \"UNISWAP\",\n} as const;\n\nexport interface MoonshotCreateTokenInput {\n /** DTO.DEX.IDENTIFIER */\n dex: MoonshotCreateTokenInputDex;\n /**\n * DTO.DEX.WALLET\n * @minLength 8\n * @maxLength 64\n */\n userAddress: string;\n /** DTO.DEX.BASE.PRIORITY_FEE */\n priorityFee?: string;\n /**\n * DTO.DEX.MOONSHOT.MINT.NAME\n * @minLength 1\n * @maxLength 32\n */\n name: string;\n /**\n * DTO.DEX.MOONSHOT.MINT.SYMBOL\n * @minLength 1\n * @maxLength 10\n */\n symbol: string;\n /** DTO.DEX.MOONSHOT.MINT.MIGRATION_DEX */\n migrationDex: MoonshotCreateTokenInputMigrationDex;\n /**\n * DTO.DEX.MOONSHOT.MINT.ICON\n * @pattern ^(https?://|data:image/)\n */\n icon: string;\n /**\n * DTO.DEX.MOONSHOT.MINT.DESCRIPTION\n * @maxLength 1000\n */\n description: string;\n /** DTO.DEX.MOONSHOT.MINT.LINKS */\n links: Link[];\n /** DTO.DEX.MOONSHOT.MINT.BANNER */\n banner?: string;\n /**\n * DTO.DEX.MOONSHOT.MINT.TOKEN_AMOUNT\n * @pattern ^[0-9]+$\n */\n tokenAmount: string;\n}\n\n/**\n * DTO.DEX.MOONSHOT.CREATE_TOKEN.EXTRA\n */\nexport type MoonshotCreateTokenReplyExtra = { [key: string]: unknown };\n\nexport interface MoonshotCreateTokenReply {\n /** DTO.DEX.MOONSHOT.CREATE_TOKEN.SERIALIZED_TX */\n serializedTx: string;\n /** DTO.DEX.MOONSHOT.CREATE_TOKEN.EXTRA */\n extra: MoonshotCreateTokenReplyExtra;\n}\n\n/**\n * DTO.DEX.MOONSHOT.SUBMIT.CREATE_TOKEN.EXTRA\n */\nexport type MoonshotSubmitCreateTokenInputExtra = { [key: string]: unknown };\n\nexport interface MoonshotSubmitCreateTokenInput {\n /** DTO.DEX.MOONSHOT.SUBMIT.CREATE_TOKEN.SIGNED_TX */\n signedTx: string;\n /** DTO.DEX.MOONSHOT.SUBMIT.CREATE_TOKEN.EXTRA */\n extra?: MoonshotSubmitCreateTokenInputExtra;\n}\n\n/**\n * DTO.DEX.IDENTIFIER\n */\nexport type PumpCreateTokenInputDex =\n (typeof PumpCreateTokenInputDex)[keyof typeof PumpCreateTokenInputDex];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PumpCreateTokenInputDex = {\n pumpfun: \"pumpfun\",\n} as const;\n\n/**\n * DTO.DEX.PUMPFUN.MINT.MIGRATION_DEX\n */\nexport type PumpCreateTokenInputMigrationDex =\n (typeof PumpCreateTokenInputMigrationDex)[keyof typeof PumpCreateTokenInputMigrationDex];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PumpCreateTokenInputMigrationDex = {\n RAYDIUM: \"RAYDIUM\",\n METEORA: \"METEORA\",\n} as const;\n\nexport interface PumpCreateTokenInput {\n /** DTO.DEX.IDENTIFIER */\n dex: PumpCreateTokenInputDex;\n /**\n * DTO.DEX.WALLET\n * @minLength 8\n * @maxLength 64\n */\n userAddress: string;\n /** DTO.DEX.BASE.PRIORITY_FEE */\n priorityFee?: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.TWITTER\n * @pattern ^(@[a-zA-Z0-9_]{1,15}|https://twitter.com/[a-zA-Z0-9_]{1,15})$\n */\n twitter?: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.TELEGRAM\n * @pattern ^https://t.me/\n */\n telegram?: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.WEBSITE\n * @pattern ^https?://\n */\n website?: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.NAME\n * @minLength 1\n * @maxLength 32\n */\n name: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.SYMBOL\n * @minLength 1\n * @maxLength 10\n */\n symbol: string;\n /** DTO.DEX.PUMPFUN.MINT.MIGRATION_DEX */\n migrationDex: PumpCreateTokenInputMigrationDex;\n /** DTO.DEX.PUMPFUN.MINT.IMAGE */\n image: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.MINT_ADDRESS\n * @minLength 32\n * @maxLength 44\n */\n mintAddress: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.DESCRIPTION\n * @maxLength 1000\n */\n description: string;\n}\n\n/**\n * DTO.DEX.PUMPFUN.MINT.EXTRA\n */\nexport type PumpCreateTokenReplyExtra = { [key: string]: unknown };\n\nexport interface PumpCreateTokenReply {\n /** DTO.DEX.PUMPFUN.MINT.SERIALIZED_TX */\n serializedTx: string;\n /** DTO.DEX.PUMPFUN.MINT.EXTRA */\n extra?: PumpCreateTokenReplyExtra;\n}\n\nexport interface TradeDetailDTO {\n /** DTO.TRADE.DETAIL.CHAIN */\n chain: string;\n /** DTO.TRADE.DETAIL.BLOCK_HEIGHT */\n blockHeight: number;\n /** DTO.TRADE.DETAIL.BLOCK_TIMESTAMP */\n blockTimestamp: number;\n /** DTO.TRADE.DETAIL.ACCOUNT_OWNER_ADDRESS */\n accountOwnerAddress: string;\n /** DTO.TRADE.DETAIL.TRANSACTION_SIGNATURE */\n transactionSignature: string;\n /** DTO.TRADE.DETAIL.TOKEN_NAME */\n tokenName: string;\n /** DTO.TRADE.DETAIL.TOKEN_SYMBOL */\n tokenSymbol: string;\n /** DTO.TRADE.DETAIL.TOKEN_IMAGE_URL */\n tokenImageUrl: string;\n /** DTO.TRADE.DETAIL.TOKEN_ADDRESS */\n tokenAddress: string;\n /** DTO.TRADE.DETAIL.POOL_ADDRESS */\n poolAddress: string;\n /** DTO.TRADE.DETAIL.DEX_PROGRAM_ADDRESS */\n dexProgramAddress: string;\n /** DTO.TRADE.DETAIL.DEX_PROTOCOL_FAMILY */\n dexProtocolFamily: string;\n /** DTO.TRADE.DETAIL.DEX_IMAGE */\n dexImage: string;\n /** DTO.TRADE.DETAIL.TOKEN_AMOUNT */\n tokenAmount: string;\n /** DTO.TRADE.DETAIL.TOKEN_PRICE_IN_USD */\n tokenPriceInUsd: string;\n /** DTO.TRADE.DETAIL.TOKEN_AMOUNT_IN_USD */\n tokenAmountInUsd: string;\n /** DTO.TRADE.DETAIL.TYPE */\n type: string;\n /** DTO.TRADE.DETAIL.SIDE_TOKEN_NAME */\n sideTokenName: string;\n /** DTO.TRADE.DETAIL.SIDE_TOKEN_SYMBOL */\n sideTokenSymbol: string;\n /** DTO.TRADE.DETAIL.SIDE_TOKEN_IMAGE_URL */\n sideTokenImageUrl: string;\n /** DTO.TRADE.DETAIL.SIDE_TOKEN_ADDRESS */\n sideTokenAddress: string;\n /** DTO.TRADE.DETAIL.SIDE_TOKEN_PRICE_IN_USD */\n sideTokenPriceInUsd: string;\n /** DTO.TRADE.DETAIL.SIDE_TOKEN_AMOUNT */\n sideTokenAmount: string;\n /** DTO.TRADE.DETAIL.SIDE_TOKEN_AMOUNT_IN_USD */\n sideTokenAmountInUsd: string;\n /** DTO.TRADE.DETAIL.STATUS */\n status: string;\n}\n\nexport interface TradePage {\n /** DTO.PAGE.HAS_NEXT */\n hasNext?: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev?: boolean;\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.TOTAL */\n total?: number;\n /** DTO.TRADE.PAGE.DATA */\n data: TradeDetailDTO[];\n}\n\nexport interface TopTradersDTO {\n /** DTO.TRADE.TOP_TRADERS.TOKEN_ADDRESS */\n tokenAddress: string;\n /** DTO.TRADE.TOP_TRADERS.WALLET_ADDRESS */\n walletAddress: string;\n /** DTO.TRADE.TOP_TRADERS.TRADE_COUNT */\n tradeCount: number;\n /** DTO.TRADE.TOP_TRADERS.TRADE_AMOUNT */\n tradeAmount: string;\n /** DTO.TRADE.TOP_TRADERS.BUY_COUNT */\n buyCount: number;\n /** DTO.TRADE.TOP_TRADERS.BUY_AMOUNT */\n buyAmount: string;\n /** DTO.TRADE.TOP_TRADERS.BUY_AMOUNT_IN_USD */\n buyAmountInUsd: string;\n /** DTO.TRADE.TOP_TRADERS.BUY_AMOUNT_IN_NATIVE */\n buyAmountInNative: string;\n /** DTO.TRADE.TOP_TRADERS.SELL_COUNT */\n sellCount: number;\n /** DTO.TRADE.TOP_TRADERS.SELL_AMOUNT */\n sellAmount: string;\n /** DTO.TRADE.TOP_TRADERS.SELL_AMOUNT_IN_USD */\n sellAmountInUsd: string;\n /** DTO.TRADE.TOP_TRADERS.SELL_AMOUNT_IN_NATIVE */\n sellAmountInNative: string;\n}\n\nexport interface TopTradersPage {\n /** DTO.PAGE.HAS_NEXT */\n hasNext?: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev?: boolean;\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.TOTAL */\n total?: number;\n /** DTO.TRADE.TOP_TRADERS.PAGE.DATA */\n data: TopTradersDTO[];\n}\n\nexport interface TokenCreatorsDTO {\n /** DTO.TOKEN.CREATORS.ADDRESS */\n address?: string;\n /** DTO.TOKEN.CREATORS.SHARE */\n share?: number;\n /** DTO.TOKEN.CREATORS.IS_VERIFIED */\n isVerified?: boolean;\n}\n\nexport interface TokenExtraDTO {\n /** DTO.TOKEN.EXTRA.COLLECTION_ADDRESS */\n collectionAddress?: string;\n /** DTO.TOKEN.EXTRA.EDITION_NONCE */\n editionNonce?: number;\n /** DTO.TOKEN.EXTRA.FUNGIBLE */\n fungible?: boolean;\n /** DTO.TOKEN.EXTRA.IS_MUTABLE */\n isMutable?: boolean;\n /** DTO.TOKEN.EXTRA.KEY */\n key?: string;\n /** DTO.TOKEN.EXTRA.IS_NATIVE */\n isNative?: boolean;\n /** DTO.TOKEN.EXTRA.PRIMARY_SALE_HAPPENED */\n primarySaleHappened?: boolean;\n /** DTO.TOKEN.EXTRA.LAUNCH_FROM_PROGRAM_ADDRESS */\n launchFromProgramAddress?: string;\n /** DTO.TOKEN.EXTRA.LAUNCH_FROM_PROTOCOL_FAMILY */\n launchFromProtocolFamily?: string;\n /** DTO.TOKEN.EXTRA.PROGRAM_ADDRESS */\n programAddress?: string;\n /** DTO.TOKEN.EXTRA.MIGRATED_TO_PROGRAM_ADDRESS */\n migratedToProgramAddress?: string;\n /** DTO.TOKEN.EXTRA.MIGRATED_TO_PROTOCOL_FAMILY */\n migratedToProtocolFamily?: string;\n /** DTO.TOKEN.EXTRA.MIGRATED_TO_POOL_ADDRESS */\n migratedToPoolAddress?: string;\n /** DTO.TOKEN.EXTRA.MIGRATED_AT */\n migratedAt?: number;\n /** DTO.TOKEN.EXTRA.SELLER_FEE_BASIS_POINTS */\n sellerFeeBasisPoints?: number;\n /** DTO.TOKEN.EXTRA.TOKEN_STANDARD */\n tokenStandard?: string;\n /** DTO.TOKEN.EXTRA.MINT_AUTHORITY */\n mintAuthority?: string;\n /** DTO.TOKEN.EXTRA.FREEZE_AUTHORITY */\n freezeAuthority?: string;\n /** DTO.TOKEN.EXTRA.UPDATE_AUTHORITY */\n updateAuthority?: string;\n /** DTO.TOKEN.EXTRA.IS_VERIFIED_COLLECTION */\n isVerifiedCollection?: boolean;\n /** DTO.TOKEN.EXTRA.IS_WRAPPED */\n isWrapped?: boolean;\n}\n\nexport interface TokenSocialMediasDTO {\n /** DTO.TOKEN.SOCIAL_MEDIAS.TWITTER */\n twitter?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.TELEGRAM */\n telegram?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.WEBSITE */\n website?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.TIKTOK */\n tiktok?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.DISCORD */\n discord?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.FACEBOOK */\n facebook?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.GITHUB */\n github?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.INSTAGRAM */\n instagram?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.LINKEDIN */\n linkedin?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.MEDIUM */\n medium?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.REDDIT */\n reddit?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.YOUTUBE */\n youtube?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.BITBUCKET */\n bitbucket?: string;\n}\n\nexport interface TokenStat {\n /** DTO.TOKEN.STAT.ADDRESS */\n address: string;\n /** DTO.TOKEN.STAT.PRICE_1M */\n price1m: string;\n /** DTO.TOKEN.STAT.BUYS_1M */\n buys1m: string;\n /** DTO.TOKEN.STAT.SELLS_1M */\n sells1m: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_1M */\n buyVolumes1m: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_1M */\n sellsVolumes1m: string;\n /** DTO.TOKEN.STAT.VOLUMES_1M */\n volumes1m: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_1M */\n buyVolumesInUsd1m: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_1M */\n sellVolumesInUsd1m: string;\n /** DTO.TOKEN.STAT.VOLUMES_IN_USD_1M */\n volumesInUsd1m: string;\n /** DTO.TOKEN.STAT.BUYERS_1M */\n buyers1m?: string;\n /** DTO.TOKEN.STAT.SELLERS_1M */\n sellers1m?: string;\n /** DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_1M */\n openPriceInUsd1m: string;\n /** DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_1M */\n closePriceInUsd1m: string;\n /** DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_1M */\n priceChangeRatioInUsd1m: string;\n /** DTO.TOKEN.STAT.TRADES_1M */\n trades1m: string;\n /** DTO.TOKEN.STAT.TRADERS_1M */\n traders1m?: string;\n /** DTO.TOKEN.STAT.HIGH_IN_USD_1M */\n highInUsd1m?: string;\n /** DTO.TOKEN.STAT.LOW_IN_USD_1M */\n lowInUsd1m?: string;\n /** DTO.TOKEN.STAT.PRICE_5M */\n price5m: string;\n /** DTO.TOKEN.STAT.BUYS_5M */\n buys5m: string;\n /** DTO.TOKEN.STAT.SELLS_5M */\n sells5m: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_5M */\n buyVolumes5m: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_5M */\n sellsVolumes5m: string;\n /** DTO.TOKEN.STAT.VOLUMES_5M */\n volumes5m: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_5M */\n buyVolumesInUsd5m: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_5M */\n sellVolumesInUsd5m: string;\n /** DTO.TOKEN.STAT.VOLUMES_IN_USD_5M */\n volumesInUsd5m: string;\n /** DTO.TOKEN.STAT.BUYERS_5M */\n buyers5m?: string;\n /** DTO.TOKEN.STAT.SELLERS_5M */\n sellers5m?: string;\n /** DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_5M */\n openPriceInUsd5m: string;\n /** DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_5M */\n closePriceInUsd5m: string;\n /** DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_5M */\n priceChangeRatioInUsd5m: string;\n /** DTO.TOKEN.STAT.TRADES_5M */\n trades5m: string;\n /** DTO.TOKEN.STAT.TRADERS_5M */\n traders5m?: string;\n /** DTO.TOKEN.STAT.HIGH_IN_USD_5M */\n highInUsd5m?: string;\n /** DTO.TOKEN.STAT.LOW_IN_USD_5M */\n lowInUsd5m?: string;\n /** DTO.TOKEN.STAT.PRICE_15M */\n price15m?: string;\n /** DTO.TOKEN.STAT.BUYS_15M */\n buys15m?: string;\n /** DTO.TOKEN.STAT.SELLS_15M */\n sells15m?: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_15M */\n buyVolumes15m?: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_15M */\n sellsVolumes15m?: string;\n /** DTO.TOKEN.STAT.VOLUMES_15M */\n volumes15m?: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_15M */\n buyVolumesInUsd15m?: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_15M */\n sellVolumesInUsd15m?: string;\n /** DTO.TOKEN.STAT.VOLUMES_IN_USD_15M */\n volumesInUsd15m?: string;\n /** DTO.TOKEN.STAT.BUYERS_15M */\n buyers15m?: string;\n /** DTO.TOKEN.STAT.SELLERS_15M */\n sellers15m?: string;\n /** DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_15M */\n openPriceInUsd15m?: string;\n /** DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_15M */\n closePriceInUsd15m?: string;\n /** DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_15M */\n priceChangeRatioInUsd15m?: string;\n /** DTO.TOKEN.STAT.TRADES_15M */\n trades15m?: string;\n /** DTO.TOKEN.STAT.TRADERS_15M */\n traders15m?: string;\n /** DTO.TOKEN.STAT.HIGH_IN_USD_15M */\n highInUsd15m?: string;\n /** DTO.TOKEN.STAT.LOW_IN_USD_15M */\n lowInUsd15m?: string;\n /** DTO.TOKEN.STAT.PRICE_30M */\n price30m: string;\n /** DTO.TOKEN.STAT.BUYS_30M */\n buys30m: string;\n /** DTO.TOKEN.STAT.SELLS_30M */\n sells30m: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_30M */\n buyVolumes30m: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_30M */\n sellsVolumes30m: string;\n /** DTO.TOKEN.STAT.VOLUMES_30M */\n volumes30m: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_30M */\n buyVolumesInUsd30m: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_30M */\n sellVolumesInUsd30m: string;\n /** DTO.TOKEN.STAT.VOLUMES_IN_USD_30M */\n volumesInUsd30m: string;\n /** DTO.TOKEN.STAT.BUYERS_30M */\n buyers30m?: string;\n /** DTO.TOKEN.STAT.SELLERS_30M */\n sellers30m?: string;\n /** DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_30M */\n openPriceInUsd30m: string;\n /** DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_30M */\n closePriceInUsd30m: string;\n /** DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_30M */\n priceChangeRatioInUsd30m: string;\n /** DTO.TOKEN.STAT.TRADES_30M */\n trades30m: string;\n /** DTO.TOKEN.STAT.TRADERS_30M */\n traders30m?: string;\n /** DTO.TOKEN.STAT.HIGH_IN_USD_30M */\n highInUsd30m?: string;\n /** DTO.TOKEN.STAT.LOW_IN_USD_30M */\n lowInUsd30m?: string;\n /** DTO.TOKEN.STAT.PRICE_1H */\n price1h: string;\n /** DTO.TOKEN.STAT.BUYS_1H */\n buys1h: string;\n /** DTO.TOKEN.STAT.SELLS_1H */\n sells1h: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_1H */\n buyVolumes1h: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_1H */\n sellsVolumes1h: string;\n /** DTO.TOKEN.STAT.VOLUMES_1H */\n volumes1h: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_1H */\n buyVolumesInUsd1h: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_1H */\n sellVolumesInUsd1h: string;\n /** DTO.TOKEN.STAT.VOLUMES_IN_USD_1H */\n volumesInUsd1h: string;\n /** DTO.TOKEN.STAT.BUYERS_1H */\n buyers1h?: string;\n /** DTO.TOKEN.STAT.SELLERS_1H */\n sellers1h?: string;\n /** DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_1H */\n openPriceInUsd1h: string;\n /** DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_1H */\n closePriceInUsd1h: string;\n /** DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_1H */\n priceChangeRatioInUsd1h: string;\n /** DTO.TOKEN.STAT.TRADES_1H */\n trades1h: string;\n /** DTO.TOKEN.STAT.TRADERS_1H */\n traders1h?: string;\n /** DTO.TOKEN.STAT.HIGH_IN_USD_1H */\n highInUsd1h?: string;\n /** DTO.TOKEN.STAT.LOW_IN_USD_1H */\n lowInUsd1h?: string;\n /** DTO.TOKEN.STAT.PRICE_4H */\n price4h: string;\n /** DTO.TOKEN.STAT.BUYS_4H */\n buys4h: string;\n /** DTO.TOKEN.STAT.SELLS_4H */\n sells4h: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_4H */\n buyVolumes4h: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_4H */\n sellsVolumes4h: string;\n /** DTO.TOKEN.STAT.VOLUMES_4H */\n volumes4h: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_4H */\n buyVolumesInUsd4h: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_4H */\n sellVolumesInUsd4h: string;\n /** DTO.TOKEN.STAT.VOLUMES_IN_USD_4H */\n volumesInUsd4h: string;\n /** DTO.TOKEN.STAT.BUYERS_4H */\n buyers4h?: string;\n /** DTO.TOKEN.STAT.SELLERS_4H */\n sellers4h?: string;\n /** DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_4H */\n openPriceInUsd4h: string;\n /** DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_4H */\n closePriceInUsd4h: string;\n /** DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_4H */\n priceChangeRatioInUsd4h: string;\n /** DTO.TOKEN.STAT.TRADES_4H */\n trades4h: string;\n /** DTO.TOKEN.STAT.TRADERS_4H */\n traders4h?: string;\n /** DTO.TOKEN.STAT.HIGH_IN_USD_4H */\n highInUsd4h?: string;\n /** DTO.TOKEN.STAT.LOW_IN_USD_4H */\n lowInUsd4h?: string;\n /** DTO.TOKEN.STAT.PRICE_24H */\n price24h: string;\n /** DTO.TOKEN.STAT.BUYS_24H */\n buys24h: string;\n /** DTO.TOKEN.STAT.SELLS_24H */\n sells24h: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_24H */\n buyVolumes24h: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_24H */\n sellsVolumes24h: string;\n /** DTO.TOKEN.STAT.VOLUMES_24H */\n volumes24h: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_24H */\n buyVolumesInUsd24h: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_24H */\n sellVolumesInUsd24h: string;\n /** DTO.TOKEN.STAT.VOLUMES_IN_USD_24H */\n volumesInUsd24h: string;\n /** DTO.TOKEN.STAT.BUYERS_24H */\n buyers24h?: string;\n /** DTO.TOKEN.STAT.SELLERS_24H */\n sellers24h?: string;\n /** DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_24H */\n openPriceInUsd24h: string;\n /** DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_24H */\n closePriceInUsd24h: string;\n /** DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_24H */\n priceChangeRatioInUsd24h: string;\n /** DTO.TOKEN.STAT.TRADES_24H */\n trades24h: string;\n /** DTO.TOKEN.STAT.TRADERS_24H */\n traders24h?: string;\n /** DTO.TOKEN.STAT.HIGH_IN_USD_24H */\n highInUsd24h?: string;\n /** DTO.TOKEN.STAT.LOW_IN_USD_24H */\n lowInUsd24h?: string;\n}\n\nexport interface DexPoolTokenLiquidity {\n /** DTO.DEXPOOL.TOKEN_ADDRESS */\n tokenAddress: string;\n /** DTO.DEXPOOL.TOKEN_DECIMALS */\n tokenDecimals: number;\n /** DTO.DEXPOOL.VAULT_AMOUNT */\n vaultAmount: string;\n /** DTO.DEXPOOL.AMOUNT_IN_USD */\n amountInUsd: string;\n /** DTO.DEXPOOL.AMOUNT_IN_NATIVE */\n amountInNative: string;\n /** DTO.DEXPOOL.PRICE_USD */\n priceUsd: string;\n /** DTO.DEXPOOL.PRICE_NATIVE */\n priceNative: string;\n}\n\n/**\n * DTO.DEXPOOL.TYPE\n */\nexport type DexPoolDTOType = (typeof DexPoolDTOType)[keyof typeof DexPoolDTOType];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const DexPoolDTOType = {\n NUMBER_0: 0,\n NUMBER_1: 1,\n NUMBER_2: 2,\n NUMBER_3: 3,\n NUMBER_4: 4,\n} as const;\n\n/**\n * DTO.DEXPOOL.VERSION\n */\nexport type DexPoolDTOVersion = (typeof DexPoolDTOVersion)[keyof typeof DexPoolDTOVersion];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const DexPoolDTOVersion = {\n NUMBER_0: 0,\n NUMBER_1: 1,\n NUMBER_2: 2,\n NUMBER_3: 3,\n} as const;\n\n/**\n * DTO.DEXPOOL.LIQUIDITY_MODEL\n */\nexport type DexPoolDTOLiquidityModel =\n (typeof DexPoolDTOLiquidityModel)[keyof typeof DexPoolDTOLiquidityModel];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const DexPoolDTOLiquidityModel = {\n NUMBER_0: 0,\n NUMBER_1: 1,\n NUMBER_2: 2,\n NUMBER_3: 3,\n NUMBER_4: 4,\n} as const;\n\nexport interface DexPoolDTO {\n /** DTO.DEX.PROGRAM_ADDRESS */\n programAddress?: string;\n /** DTO.DEX.PROTOCOL_FAMILY */\n protocolFamily?: string;\n /** DTO.DEX.IMAGE */\n image?: string;\n /** DTO.DEX.CHAIN */\n chain: string;\n /** DTO.DEXPOOL.POOL_ADDRESS */\n poolAddress: string;\n /** DTO.DEXPOOL.PROTOCOL_NAME */\n protocolName?: string;\n /** DTO.DEXPOOL.TOKEN_A */\n tokenAAddress: string;\n /** DTO.DEXPOOL.TOKEN_B */\n tokenBAddress: string;\n /** DTO.DEXPOOL.TVL_USD */\n tvlInUsd?: string;\n /** DTO.DEXPOOL.TVL_SOL */\n tvlInSol?: string;\n /** DTO.DEXPOOL.TYPE */\n type?: DexPoolDTOType;\n /** DTO.DEXPOOL.VERSION */\n version?: DexPoolDTOVersion;\n /** DTO.DEXPOOL.LIQUIDITY_MODEL */\n liquidityModel?: DexPoolDTOLiquidityModel;\n /** DTO.DEXPOOL.FEE_RATE */\n feeRate?: string;\n /** DTO.DEXPOOL.TICK_SPACING */\n tickSpacing?: number;\n /** DTO.DEXPOOL.TOKEN_COUNT */\n tokenCount?: number;\n /** DTO.DEXPOOL.CREATED_BLOCK_TIMESTAMP */\n createdBlockTimestamp?: string;\n /** DTO.DEXPOOL.TOKEN_A_LIQUIDITY */\n tokenALiquidity?: DexPoolTokenLiquidity;\n /** DTO.DEXPOOL.TOKEN_B_LIQUIDITY */\n tokenBLiquidity?: DexPoolTokenLiquidity;\n}\n\nexport interface TokenMarketData {\n /** DTO.TOKEN.MARKET_CAP.TOTAL_SUPPLY */\n totalSupply: string;\n /** DTO.TOKEN.MARKET_CAP.MARKET_CAP_IN_SOL */\n marketCapInSol?: string;\n /** DTO.TOKEN.MARKET_CAP.MARKET_CAP_IN_USD */\n marketCapInUsd: string;\n /** DTO.TOKEN.MARKET_CAP.TOP10_TOTAL_HOLDINGS */\n top10TotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.TOP10_HOLDINGS_RATIO */\n top10HoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.TOP100_TOTAL_HOLDINGS */\n top100TotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.TOP100_HOLDINGS_RATIO */\n top100HoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.HOLDERS */\n holders: string;\n /** DTO.TOKEN.MARKET_CAP.PRICE_IN_SOL */\n priceInSol?: string;\n /** DTO.TOKEN.MARKET_CAP.PRICE_IN_USD */\n priceInUsd: string;\n /** DTO.TOKEN.MARKET_CAP.MAX_POOL_TVL_IN_SOL */\n maxPoolTvlInSol?: string;\n /** DTO.TOKEN.MARKET_CAP.MAX_POOL_TVL_IN_USD */\n maxPoolTvlInUsd?: string;\n /** DTO.TOKEN.MARKET_CAP.TOTAL_TVL_IN_SOL */\n totalTvlInSol: string;\n /** DTO.TOKEN.MARKET_CAP.TOTAL_TVL_IN_USD */\n totalTvlInUsd: string;\n /** DTO.TOKEN.MARKET_CAP.COMPLETION_RATIO */\n completionRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.TOP50_TOTAL_HOLDINGS */\n top50TotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.TOP50_HOLDINGS_RATIO */\n top50HoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.BLUECHIP_TOTAL_HOLDERS */\n bluechipTotalHolders?: string;\n /** DTO.TOKEN.MARKET_CAP.BLUECHIP_TOTAL_HOLDINGS */\n bluechipTotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.BLUECHIP_HOLDINGS_RATIO */\n bluechipHoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.KOL_TOTAL_HOLDERS */\n kolTotalHolders?: string;\n /** DTO.TOKEN.MARKET_CAP.KOL_TOTAL_HOLDINGS */\n kolTotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.KOL_HOLDINGS_RATIO */\n kolHoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.SNIPER_TOTAL_HOLDERS */\n sniperTotalHolders?: string;\n /** DTO.TOKEN.MARKET_CAP.SNIPER_TOTAL_HOLDINGS */\n sniperTotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.SNIPER_HOLDINGS_RATIO */\n sniperHoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.PRO_TOTAL_HOLDERS */\n proTotalHolders?: string;\n /** DTO.TOKEN.MARKET_CAP.PRO_TOTAL_HOLDINGS */\n proTotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.PRO_HOLDINGS_RATIO */\n proHoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.INSIDER_TOTAL_HOLDERS */\n insiderTotalHolders?: string;\n /** DTO.TOKEN.MARKET_CAP.INSIDER_TOTAL_HOLDINGS */\n insiderTotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.INSIDER_HOLDINGS_RATIO */\n insiderHoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.SANDWISH_TOTAL_HOLDERS */\n sandwishTotalHolders?: string;\n /** DTO.TOKEN.MARKET_CAP.SANDWISH_TOTAL_HOLDINGS */\n sandwishTotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.SANDWISH_HOLDINGS_RATIO */\n sandwishHoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.FRESH_TOTAL_HOLDERS */\n freshTotalHolders?: string;\n /** DTO.TOKEN.MARKET_CAP.FRESH_TOTAL_HOLDINGS */\n freshTotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.FRESH_HOLDINGS_RATIO */\n freshHoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.BUNDLE_TOTAL_HOLDERS */\n bundleTotalHolders?: string;\n /** DTO.TOKEN.MARKET_CAP.BUNDLE_TOTAL_HOLDINGS */\n bundleTotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.BUNDLE_HOLDINGS_RATIO */\n bundleHoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.DEV_TOTAL_HOLDERS */\n devTotalHolders?: string;\n /** DTO.TOKEN.MARKET_CAP.DEV_TOTAL_HOLDINGS */\n devTotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.DEV_HOLDINGS_RATIO */\n devHoldingsRatio?: string;\n}\n\n/**\n * DTO.TOKEN.EXTENSION\n */\nexport type TokenExtension = { [key: string]: unknown };\n\nexport interface Token {\n /** DTO.TOKEN.METADATA.CHAIN */\n chain: string;\n /** DTO.TOKEN.METADATA.DECIMALS */\n decimals: number;\n /** DTO.TOKEN.METADATA.NAME */\n name: string;\n /** DTO.TOKEN.METADATA.SYMBOL */\n symbol: string;\n /** DTO.TOKEN.METADATA.METADATA_ADDRESS */\n metadataAddress?: string;\n /** DTO.TOKEN.METADATA.ADDRESS */\n address: string;\n /** DTO.TOKEN.METADATA.TOKEN_CREATORS */\n tokenCreators?: TokenCreatorsDTO[];\n /** DTO.TOKEN.METADATA.IMAGE_URL */\n imageUrl?: string;\n /** DTO.TOKEN.METADATA.URI */\n uri?: string;\n /** DTO.TOKEN.METADATA.EXTRA */\n extra?: TokenExtraDTO;\n /** DTO.TOKEN.METADATA.SOCIAL_MEDIAS */\n socialMedias?: TokenSocialMediasDTO;\n /** DTO.TOKEN.METADATA.TOKEN_CREATED_AT */\n tokenCreatedAt?: number;\n /** DTO.TOKEN.METADATA.DESCRIPTION */\n description?: string;\n /** DTO.TOKEN.METADATA.DEV_TOTAL_TOKENS */\n devTotalTokens?: string;\n /** DTO.TOKEN.METADATA.DEV_LAST_TOKEN_CREATED_AT */\n devLastTokenCreatedAt?: string;\n /** DTO.TOKEN.MARKET_ID */\n market?: string;\n /** DTO.TOKEN.EXTENSION */\n extension?: TokenExtension;\n /** DTO.TOKEN.STATS */\n stats?: TokenStat;\n /** DTO.TOKEN.LIQUIDITY */\n liquidity?: DexPoolDTO[];\n /** DTO.TOKEN.MARKET_CAP_INFO */\n marketData: TokenMarketData;\n}\n\n/**\n * DTO.TOKEN.PAGE.COUNTS_BY_PROTOCOLS\n */\nexport type TokenPageCountsByProtocols = { [key: string]: unknown };\n\nexport interface TokenPage {\n /** DTO.PAGE.HAS_NEXT */\n hasNext?: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev?: boolean;\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.TOTAL */\n total?: number;\n /** DTO.TOKEN.PAGE.COUNTS_BY_PROTOCOLS */\n countsByProtocols?: TokenPageCountsByProtocols;\n /** DTO.TOKEN.PAGE.DATA */\n data: Token[];\n}\n\n/**\n * DTO.TOKEN.FILTER.FIELD\n */\nexport type FilterConditionField = (typeof FilterConditionField)[keyof typeof FilterConditionField];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const FilterConditionField = {\n marketDatapriceInUsd: \"marketData.priceInUsd\",\n statspriceChangeRatioInUsd1m: \"stats.priceChangeRatioInUsd1m\",\n statspriceChangeRatioInUsd5m: \"stats.priceChangeRatioInUsd5m\",\n statspriceChangeRatioInUsd1h: \"stats.priceChangeRatioInUsd1h\",\n statspriceChangeRatioInUsd4h: \"stats.priceChangeRatioInUsd4h\",\n statspriceChangeRatioInUsd24h: \"stats.priceChangeRatioInUsd24h\",\n marketDatamarketCapInUsd: \"marketData.marketCapInUsd\",\n marketDatamaxPoolTvlInUsd: \"marketData.maxPoolTvlInUsd\",\n marketDatatotalTvlInUsd: \"marketData.totalTvlInUsd\",\n marketDatatop10TotalHoldings: \"marketData.top10TotalHoldings\",\n marketDatatop10HoldingsRatio: \"marketData.top10HoldingsRatio\",\n marketDatatop100TotalHoldings: \"marketData.top100TotalHoldings\",\n marketDatatop100HoldingsRatio: \"marketData.top100HoldingsRatio\",\n marketDataholders: \"marketData.holders\",\n marketDatacreatorHoldings: \"marketData.creatorHoldings\",\n marketDatacreatorHoldingsRatio: \"marketData.creatorHoldingsRatio\",\n statsbuys1m: \"stats.buys1m\",\n statsbuys5m: \"stats.buys5m\",\n statsbuys15m: \"stats.buys15m\",\n statsbuys30m: \"stats.buys30m\",\n statsbuys1h: \"stats.buys1h\",\n statsbuys4h: \"stats.buys4h\",\n statsbuys24h: \"stats.buys24h\",\n statssells1m: \"stats.sells1m\",\n statssells5m: \"stats.sells5m\",\n statssells15m: \"stats.sells15m\",\n statssells30m: \"stats.sells30m\",\n statssells1h: \"stats.sells1h\",\n statssells4h: \"stats.sells4h\",\n statssells24h: \"stats.sells24h\",\n statstrades1m: \"stats.trades1m\",\n statstrades5m: \"stats.trades5m\",\n statstrades1h: \"stats.trades1h\",\n statstrades4h: \"stats.trades4h\",\n statstrades24h: \"stats.trades24h\",\n statstraders1m: \"stats.traders1m\",\n statstraders5m: \"stats.traders5m\",\n statstraders1h: \"stats.traders1h\",\n statstraders4h: \"stats.traders4h\",\n statstraders24h: \"stats.traders24h\",\n statsvolumesInUsd1m: \"stats.volumesInUsd1m\",\n statsvolumesInUsd5m: \"stats.volumesInUsd5m\",\n statsvolumesInUsd1h: \"stats.volumesInUsd1h\",\n statsvolumesInUsd4h: \"stats.volumesInUsd4h\",\n statsvolumesInUsd24h: \"stats.volumesInUsd24h\",\n tokenCreatedAt: \"tokenCreatedAt\",\n} as const;\n\nexport interface FilterCondition {\n /** DTO.TOKEN.FILTER.FIELD */\n field?: FilterConditionField;\n /** DTO.TOKEN.FILTER.MIN */\n min?: string;\n /** DTO.TOKEN.FILTER.MAX */\n max?: string;\n}\n\nexport interface TokenMetadata {\n /** DTO.TOKEN.METADATA.CHAIN */\n chain: string;\n /** DTO.TOKEN.METADATA.DECIMALS */\n decimals: number;\n /** DTO.TOKEN.METADATA.NAME */\n name: string;\n /** DTO.TOKEN.METADATA.SYMBOL */\n symbol: string;\n /** DTO.TOKEN.METADATA.METADATA_ADDRESS */\n metadataAddress?: string;\n /** DTO.TOKEN.METADATA.ADDRESS */\n address: string;\n /** DTO.TOKEN.METADATA.TOKEN_CREATORS */\n tokenCreators?: TokenCreatorsDTO[];\n /** DTO.TOKEN.METADATA.IMAGE_URL */\n imageUrl?: string;\n /** DTO.TOKEN.METADATA.URI */\n uri?: string;\n /** DTO.TOKEN.METADATA.EXTRA */\n extra?: TokenExtraDTO;\n /** DTO.TOKEN.METADATA.SOCIAL_MEDIAS */\n socialMedias?: TokenSocialMediasDTO;\n /** DTO.TOKEN.METADATA.TOKEN_CREATED_AT */\n tokenCreatedAt?: number;\n /** DTO.TOKEN.METADATA.DESCRIPTION */\n description?: string;\n /** DTO.TOKEN.METADATA.DEV_TOTAL_TOKENS */\n devTotalTokens?: string;\n /** DTO.TOKEN.METADATA.DEV_LAST_TOKEN_CREATED_AT */\n devLastTokenCreatedAt?: string;\n}\n\nexport interface TokenHolder {\n /** DTO.TOKEN_HOLDER.WALLET_ADDRESS */\n walletAddress: string;\n /** DTO.TOKEN_HOLDER.AMOUNT */\n amount: string;\n /** DTO.TOKEN_HOLDER.AMOUNT_USD */\n amountInUsd: string;\n /** DTO.TOKEN_HOLDER.PERCENTAGE */\n percentage: string;\n}\n\nexport interface TokenHolderPage {\n /** DTO.PAGE.HAS_NEXT */\n hasNext?: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev?: boolean;\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.TOTAL */\n total?: number;\n /** DTO.TOKEN_HOLDER.PAGE.DATA */\n data: TokenHolder[];\n}\n\nexport type Resolution = (typeof Resolution)[keyof typeof Resolution];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const Resolution = {\n \"1s\": \"1s\",\n \"15s\": \"15s\",\n \"30s\": \"30s\",\n \"1m\": \"1m\",\n \"5m\": \"5m\",\n \"15m\": \"15m\",\n \"1h\": \"1h\",\n \"4h\": \"4h\",\n \"12h\": \"12h\",\n \"1d\": \"1d\",\n} as const;\n\nexport interface Candle {\n /** DTO.CANDLE.OPEN */\n open: string;\n /** DTO.CANDLE.CLOSE */\n close: string;\n /** DTO.CANDLE.HIGH */\n high: string;\n /** DTO.CANDLE.LOW */\n low: string;\n /** DTO.CANDLE.VOLUME */\n volume: string;\n /** DTO.CANDLE.RESOLUTION */\n resolution: Resolution;\n /** DTO.CANDLE.TIME */\n time: number;\n}\n\nexport interface TokenPriceDTO {\n /** DTO.TOKEN.PRICE.TOKEN_ADDRESS */\n tokenAddress: string;\n /** DTO.TOKEN.PRICE.PRICE_IN_USD */\n priceInUsd: string;\n /** DTO.TOKEN.PRICE.PRICE_IN_NATIVE */\n priceInNative: string;\n /** DTO.TOKEN.PRICE.TIMESTAMP */\n timestamp: number;\n}\n\nexport interface TokenPricePage {\n /** DTO.PAGE.HAS_NEXT */\n hasNext?: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev?: boolean;\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.TOTAL */\n total?: number;\n /** DTO.TOKEN.PRICE.PAGE.DATA */\n data: TokenPriceDTO[];\n}\n\n/**\n * DTO.TOKEN.CREATION.TYPE\n */\nexport type TokenCreationDTOType = (typeof TokenCreationDTOType)[keyof typeof TokenCreationDTOType];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const TokenCreationDTOType = {\n create: \"create\",\n mint: \"mint\",\n burn: \"burn\",\n} as const;\n\nexport interface TokenCreationDTO {\n /** DTO.TOKEN.CREATION.TOKEN_ADDRESS */\n tokenAddress: string;\n /** DTO.TOKEN.CREATION.BLOCK_HEIGHT */\n blockHeight: number;\n /** DTO.TOKEN.CREATION.BLOCK_SLOT */\n blockSlot: number;\n /** DTO.TOKEN.CREATION.BLOCK_HASH */\n blockHash: string;\n /** DTO.TOKEN.CREATION.BLOCK_TIMESTAMP */\n blockTimestamp?: number;\n /** DTO.TOKEN.CREATION.TRANSACTION_SIGNATURE */\n transactionSignature: string;\n /** DTO.TOKEN.CREATION.TYPE */\n type: TokenCreationDTOType;\n}\n\nexport interface TokenCreationPage {\n /** DTO.PAGE.HAS_NEXT */\n hasNext?: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev?: boolean;\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.TOTAL */\n total?: number;\n /** DTO.TOKEN.CREATION.PAGE.DATA */\n data: TokenCreationDTO[];\n}\n\nexport interface TokenListPage {\n /** DTO.PAGE.HAS_NEXT */\n hasNext?: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev?: boolean;\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.TOTAL */\n total?: number;\n /** DTO.TOKEN.PAGE.DATA */\n data: Token[];\n}\n\nexport interface DevTokenDTO {\n /** DTO.DEV_TOKEN.ADDRESS */\n address: string;\n /** DTO.DEV_TOKEN.METADATA */\n metadata: TokenMetadata;\n /** DTO.DEV_TOKEN.MARKET_DATA */\n marketData: TokenMarketData;\n /** DTO.DEV_TOKEN.STATS */\n stats: TokenStat;\n}\n\nexport type TokenTraderTag = (typeof TokenTraderTag)[keyof typeof TokenTraderTag];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const TokenTraderTag = {\n fresh: \"fresh\",\n sandwish: \"sandwish\",\n bundle: \"bundle\",\n sniper: \"sniper\",\n dev: \"dev\",\n pro: \"pro\",\n insider: \"insider\",\n kol: \"kol\",\n bluechip: \"bluechip\",\n} as const;\n\n/**\n * DTO.TOKEN_TRADER.ONCHAIN_CREATED_AT\n */\nexport type TokenTraderOnchainCreatedAt = { [key: string]: unknown };\n\nexport interface TokenTrader {\n /** DTO.TOKEN_TRADER.ADDRESS */\n address: string;\n /** DTO.TOKEN_TRADER.TRANSACTION_SIGNATURE */\n transactionSignature?: string;\n /** DTO.TOKEN_TRADER.BLOCK_HASH */\n blockHash?: string;\n /** DTO.TOKEN_TRADER.BLOCK_HEIGHT */\n blockHeight?: number;\n /** DTO.TOKEN_TRADER.BLOCK_SLOT */\n blockSlot?: number;\n /** DTO.TOKEN_TRADER.BLOCK_TIMESTAMP */\n blockTimestamp?: string;\n /** DTO.TOKEN_TRADER.ONCHAIN_CREATED_AT */\n onchainCreatedAt?: TokenTraderOnchainCreatedAt;\n /** DTO.TOKEN_TRADER.TRADE_COUNT */\n tradeCount?: number;\n /** DTO.TOKEN_TRADER.TRADE_AMOUNT_IN_NATIVE */\n tradeAmountInNative?: string;\n /** DTO.TOKEN_TRADER.TRADE_AMOUNT_IN_USD */\n tradeAmountInUsd?: string;\n /** DTO.TOKEN_TRADER.PERCENTILE_RANK_TRADE_COUNT */\n percentileRankTradeCount?: number;\n /** DTO.TOKEN_TRADER.PERCENTILE_RANK_TRADE_AMOUNT_IN_USD */\n percentileRankTradeAmountInUsd?: string;\n /** DTO.TOKEN_TRADER.RANK_TRADE_AMOUNT_IN_USD */\n rankTradeAmountInUsd?: string;\n}\n\nexport interface TokenLiquiditySnapshotDTO {\n /** DTO.TOKEN.LIQUIDITY_SNAPSHOT.SNAPSHOT_TIME */\n snapshotTime: number;\n /** DTO.TOKEN.LIQUIDITY_SNAPSHOT.MAX_LIQUIDITY_POOL_ADDRESS */\n maxLiquidityPoolAddress: string;\n /** DTO.TOKEN.LIQUIDITY_SNAPSHOT.MAX_LIQUIDITY_IN_USD */\n maxLiquidityInUsd: string;\n /** DTO.TOKEN.LIQUIDITY_SNAPSHOT.MAX_LIQUIDITY_IN_NATIVE */\n maxLiquidityInNative: string;\n /** DTO.TOKEN.LIQUIDITY_SNAPSHOT.TOTAL_LIQUIDITY_IN_USD */\n totalLiquidityInUsd: string;\n /** DTO.TOKEN.LIQUIDITY_SNAPSHOT.TOTAL_LIQUIDITY_IN_NATIVE */\n totalLiquidityInNative: string;\n /** DTO.TOKEN.LIQUIDITY_SNAPSHOT.POOL_COUNT */\n poolCount: number;\n /** DTO.TOKEN.LIQUIDITY_SNAPSHOT.PRICE_USD */\n priceUsd: string;\n /** DTO.TOKEN.LIQUIDITY_SNAPSHOT.PRICE_NATIVE */\n priceNative: string;\n /** DTO.TOKEN.LIQUIDITY_SNAPSHOT.CALCULATED_AT */\n calculatedAt: number;\n}\n\nexport interface TokenLiquiditySnapshotPage {\n /** DTO.PAGE.DATA */\n data: TokenLiquiditySnapshotDTO[];\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.HAS_NEXT */\n hasNext: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev: boolean;\n}\n\nexport interface DexPoolTokenSnapshotDTO {\n /** DTO.DEXPOOL.TOKEN_ADDRESS */\n tokenAddress: string;\n /** DTO.DEXPOOL.TOKEN_DECIMALS */\n tokenDecimals: number;\n /** DTO.DEXPOOL.VAULT_AMOUNT */\n vaultAmount: string;\n /** DTO.DEXPOOL.AMOUNT_IN_USD */\n amountInUsd: string;\n /** DTO.DEXPOOL.AMOUNT_IN_NATIVE */\n amountInNative: string;\n /** DTO.DEXPOOL.PRICE_USD */\n priceUsd: string;\n /** DTO.DEXPOOL.PRICE_NATIVE */\n priceNative: string;\n}\n\nexport interface DexPoolSnapshotDTO {\n /** DTO.DEXPOOL.POOL_ADDRESS */\n poolAddress: string;\n /** DTO.DEXPOOL.SNAPSHOT.SNAPSHOT_TIME */\n snapshotTime: number;\n /** DTO.DEXPOOL.TVL_USD */\n tvlInUsd: string;\n /** DTO.DEXPOOL.TVL_SOL */\n tvlInNative: string;\n /** DTO.DEXPOOL.SNAPSHOT.TOKEN_A */\n tokenA: DexPoolTokenSnapshotDTO;\n /** DTO.DEXPOOL.SNAPSHOT.TOKEN_B */\n tokenB: DexPoolTokenSnapshotDTO;\n /** DTO.DEXPOOL.SNAPSHOT.BLOCK_HEIGHT */\n blockHeight: number;\n /** DTO.DEXPOOL.SNAPSHOT.BLOCK_SLOT */\n blockSlot?: number;\n /** DTO.DEXPOOL.SNAPSHOT.BLOCK_TIMESTAMP */\n blockTimestamp: number;\n}\n\nexport interface DexPoolSnapshotPage {\n /** DTO.PAGE.DATA */\n data: DexPoolSnapshotDTO[];\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.HAS_NEXT */\n hasNext: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev: boolean;\n}\n\nexport interface WalletPnlDTO {\n /** DTO.WALLET.PNL.ID */\n id: number;\n /** DTO.WALLET.PNL.CHAIN */\n chain: string;\n /** DTO.WALLET.PNL.WALLET_ADDRESS */\n walletAddress: string;\n /** DTO.WALLET.PNL.TOKEN_ADDRESS */\n tokenAddress: string;\n /** DTO.WALLET.PNL.TOKEN_PRICE */\n tokenPriceInUsd: string;\n /** DTO.WALLET.PNL.OPEN_TIME */\n openTime: number;\n /** DTO.WALLET.PNL.CLOSE_TIME */\n closeTime: number;\n /** DTO.WALLET.PNL.LAST_TIME */\n lastTime: number;\n /** DTO.WALLET.PNL.BALANCE */\n balance: string;\n /** DTO.WALLET.PNL.BUY_AMOUNT */\n buyAmount: string;\n /** DTO.WALLET.PNL.BUY_AMOUNT_USD */\n buyAmountInUsd: string;\n /** DTO.WALLET.PNL.BUYS */\n buys: string;\n /** DTO.WALLET.PNL.SELL_AMOUNT */\n sellAmount: string;\n /** DTO.WALLET.PNL.SELL_AMOUNT_USD */\n sellAmountInUsd: string;\n /** DTO.WALLET.PNL.SELLS */\n sells: string;\n /** DTO.WALLET.PNL.AVERAGE_BUY_PRICE */\n averageBuyPriceInUsd: string;\n /** DTO.WALLET.PNL.AVERAGE_SELL_PRICE */\n averageSellPriceInUsd: string;\n /** DTO.WALLET.PNL.UNREALIZED_PROFIT */\n unrealizedProfitInUsd: string;\n /** DTO.WALLET.PNL.UNREALIZED_PROFIT_RATIO */\n unrealizedProfitRatio: string;\n /** DTO.WALLET.PNL.REALIZED_PROFIT */\n realizedProfitInUsd: string;\n /** DTO.WALLET.PNL.REALIZED_PROFIT_RATIO */\n realizedProfitRatio: string;\n /** DTO.WALLET.PNL.TOTAL_REALIZED_PROFIT */\n totalRealizedProfitInUsd: string;\n /** DTO.WALLET.PNL.TOTAL_REALIZED_PROFIT_RATIO */\n totalRealizedProfitRatio: string;\n}\n\nexport interface WalletBalanceDetailDTO {\n /** DTO.WALLET.BALANCE.TOKEN_ADDRESS */\n tokenAddress: string;\n /** DTO.WALLET.BALANCE.AMOUNT */\n amount: string;\n /** DTO.WALLET.BALANCE.AMOUNT_IN_USD */\n valueInUsd: string;\n /** DTO.WALLET.BALANCE.TOKEN_NAME */\n name: string;\n /** DTO.WALLET.BALANCE.TOKEN_SYMBOL */\n symbol: string;\n /** DTO.WALLET.BALANCE.TOKEN_IMAGE_URL */\n imageUrl: string;\n /** DTO.WALLET.BALANCE.TOKEN_PRICE_IN_SOL */\n priceInSol: string;\n /** DTO.WALLET.BALANCE.TOKEN_PRICE_IN_USD */\n priceInUsd: string;\n /** DTO.WALLET.BALANCE.PRICE_CHANGE_24H */\n priceChangeRatioInUsd24h: string;\n /** DTO.WALLET.BALANCE.UNREALIZED_PROFIT */\n unrealizedProfitInUsd: string;\n /** DTO.WALLET.BALANCE.UNREALIZED_PROFIT_RATIO */\n unrealizedProfitRatio: string;\n /** DTO.WALLET.BALANCE.OPEN_TIME */\n openTime: number;\n /** DTO.WALLET.BALANCE.CLOSE_TIME */\n closeTime: number;\n /** DTO.WALLET.BALANCE.BUYS */\n buys: string;\n /** DTO.WALLET.BALANCE.BUY_AMOUNT */\n buyAmount: string;\n /** DTO.WALLET.BALANCE.BUY_AMOUNT_USD */\n buyAmountInUsd: string;\n /** DTO.WALLET.BALANCE.SELLS */\n sells: string;\n /** DTO.WALLET.BALANCE.SELL_AMOUNT */\n sellAmount: string;\n /** DTO.WALLET.BALANCE.SELL_AMOUNT_USD */\n sellAmountInUsd: string;\n /** DTO.WALLET.BALANCE.AVERAGE_BUY_PRICE */\n averageBuyPriceInUsd: string;\n /** DTO.WALLET.BALANCE.AVERAGE_SELL_PRICE */\n averageSellPriceInUsd: string;\n /** DTO.WALLET.BALANCE.REALIZED_PROFIT_IN_USD */\n realizedProfitInUsd: string;\n /** DTO.WALLET.BALANCE.REALIZED_PROFIT_RATIO */\n realizedProfitRatio: string;\n /** DTO.WALLET.BALANCE.TOTAL_REALIZED_PROFIT */\n totalRealizedProfitInUsd: string;\n /** DTO.WALLET.BALANCE.TOTAL_REALIZED_PROFIT_RATIO */\n totalRealizedProfitRatio: string;\n}\n\nexport interface WalletBalancesDTO {\n /** DTO.WALLET.BALANCES.TOTAL_BALANCES_IN_USD */\n totalBalancesInUsd: string;\n /** DTO.WALLET.BALANCES.TOTAL_PROFIT_IN_USD */\n totalProfitInUsd: string;\n /** DTO.WALLET.BALANCES.BALANCES.DETAIL */\n balances: WalletBalanceDetailDTO[];\n}\n\nexport interface CalculatePnlInput {\n /** DTO.WALLET.CALCULATE_PNL.INPUT.TOKEN_ADDRESSES */\n tokenAddresses?: string[];\n}\n\nexport interface BooleanResultDTO {\n /** DTO.BOOLEAN_RESULT.SUCCESS */\n success: boolean;\n}\n\nexport type BalanceTokenType = (typeof BalanceTokenType)[keyof typeof BalanceTokenType];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const BalanceTokenType = {\n SOL: \"SOL\",\n SPL: \"SPL\",\n} as const;\n\nexport type BalanceChangeType = (typeof BalanceChangeType)[keyof typeof BalanceChangeType];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const BalanceChangeType = {\n INCREASE: \"INCREASE\",\n DECREASE: \"DECREASE\",\n} as const;\n\nexport interface BalanceUpdateDTO {\n /** DTO.WALLET.BALANCE_UPDATE.ID */\n id: number;\n /** DTO.WALLET.BALANCE_UPDATE.BLOCK_HASH */\n blockHash: string;\n /** DTO.WALLET.BALANCE_UPDATE.BLOCK_HEIGHT */\n blockHeight: number;\n /** DTO.WALLET.BALANCE_UPDATE.BLOCK_SLOT */\n blockSlot: number;\n /** DTO.WALLET.BALANCE_UPDATE.BLOCK_TIMESTAMP */\n blockTimestamp: number;\n /** DTO.WALLET.BALANCE_UPDATE.TRANSACTION_SIGNATURE */\n transactionSignature: string;\n /** DTO.WALLET.BALANCE_UPDATE.INDEX */\n index: number;\n /** DTO.WALLET.BALANCE_UPDATE.TOKEN_ADDRESS */\n tokenAddress: string;\n /** DTO.WALLET.BALANCE_UPDATE.TOKEN_ACCOUNT_ADDRESS */\n tokenAccountAddress: string;\n /** DTO.WALLET.BALANCE_UPDATE.ACCOUNT_OWNER_ADDRESS */\n accountOwnerAddress: string;\n /** DTO.WALLET.BALANCE_UPDATE.PRE_BALANCE */\n preBalance: string;\n /** DTO.WALLET.BALANCE_UPDATE.PRE_BALANCE_IN_NATIVE */\n preBalanceInNative: string;\n /** DTO.WALLET.BALANCE_UPDATE.PRE_BALANCE_IN_USD */\n preBalanceInUsd: string;\n /** DTO.WALLET.BALANCE_UPDATE.POST_BALANCE */\n postBalance: string;\n /** DTO.WALLET.BALANCE_UPDATE.POST_BALANCE_IN_NATIVE */\n postBalanceInNative: string;\n /** DTO.WALLET.BALANCE_UPDATE.POST_BALANCE_IN_USD */\n postBalanceInUsd: string;\n /** DTO.WALLET.BALANCE_UPDATE.BALANCE_CHANGE */\n balanceChange: string;\n /** DTO.WALLET.BALANCE_UPDATE.BALANCE_CHANGE_IN_NATIVE */\n balanceChangeInNative: string;\n /** DTO.WALLET.BALANCE_UPDATE.BALANCE_CHANGE_IN_USD */\n balanceChangeInUsd: string;\n /** DTO.WALLET.BALANCE_UPDATE.TYPE */\n type: BalanceTokenType;\n /** DTO.WALLET.BALANCE_UPDATE.CHANGE_TYPE */\n changeType: BalanceChangeType;\n}\n\nexport interface BalanceUpdatePage {\n /** DTO.PAGE.DATA */\n data: BalanceUpdateDTO[];\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.HAS_NEXT */\n hasNext: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev: boolean;\n}\n\n/**\n * DTO.RED_PACKET.CHAIN\n */\nexport type CreateRedPacketInputChain =\n (typeof CreateRedPacketInputChain)[keyof typeof CreateRedPacketInputChain];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const CreateRedPacketInputChain = {\n sol: \"sol\",\n bsc: \"bsc\",\n eth: \"eth\",\n} as const;\n\nexport interface CreateRedPacketInput {\n /** DTO.RED_PACKET.CHAIN */\n chain: CreateRedPacketInputChain;\n /**\n * DTO.RED_PACKET.CREATOR\n * @minLength 8\n * @maxLength 64\n */\n creator: string;\n /** DTO.RED_PACKET.MINT */\n mint: string;\n /**\n * DTO.RED_PACKET.MAX_CLAIMS\n * @minimum 1\n * @maximum 100\n */\n maxClaims: number;\n /** DTO.RED_PACKET.TOTAL_AMOUNT */\n totalAmount?: string;\n /** DTO.RED_PACKET.FIXED_AMOUNT */\n fixedAmount?: string;\n /** DTO.RED_PACKET.MEMO */\n memo?: string;\n /** DTO.RED_PACKET.PASSWORD */\n password?: string;\n /** DTO.RED_PACKET.CLAIM_AUTHORITY */\n claimAuthority?: string;\n}\n\nexport interface CreateRedPacketReply {\n /** DTO.RED_PACKET.SERIALIZED_TX */\n txSerialize: string;\n /** DTO.RED_PACKET.SHARE_ID */\n shareId: string;\n}\n\n/**\n * DTO.RED_PACKET.CHAIN\n */\nexport type ClaimRedPacketInputChain =\n (typeof ClaimRedPacketInputChain)[keyof typeof ClaimRedPacketInputChain];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ClaimRedPacketInputChain = {\n sol: \"sol\",\n bsc: \"bsc\",\n eth: \"eth\",\n} as const;\n\nexport interface ClaimRedPacketInput {\n /** DTO.RED_PACKET.CHAIN */\n chain: ClaimRedPacketInputChain;\n /** DTO.RED_PACKET.PACKET_ID */\n packetId?: string;\n /** DTO.RED_PACKET.SHARE_ID */\n shareId?: string;\n /** DTO.RED_PACKET.PASSWORD */\n password?: string;\n /** DTO.RED_PACKET.CLAIMER */\n claimer: string;\n}\n\nexport interface RedPacketReply {\n /** DTO.RED_PACKET.SERIALIZED_TX */\n txSerialize: string;\n}\n\nexport type Chain = (typeof Chain)[keyof typeof Chain];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const Chain = {\n sol: \"sol\",\n bsc: \"bsc\",\n eth: \"eth\",\n} as const;\n\nexport interface RedPacketDTO {\n /** GLOBAL.CHAIN.DESCRIPTION */\n chain: Chain;\n /** DTO.RED_PACKET.ID */\n id: string;\n /** DTO.RED_PACKET.SHARE_ID */\n shareId: string;\n /** DTO.RED_PACKET.TX_HASH */\n txHash: string;\n /** DTO.RED_PACKET.CREATOR */\n creator: string;\n /** DTO.RED_PACKET.MINT */\n mint: string;\n /** DTO.RED_PACKET.TOTAL_AMOUNT */\n totalAmount: string;\n /** DTO.RED_PACKET.MEMO */\n memo: string;\n /** DTO.RED_PACKET.MAX_CLAIMS */\n maxClaims: number;\n /** DTO.RED_PACKET.CLAIM_AUTHORITY */\n claimAuthority: string;\n /** DTO.RED_PACKET.WITHDRAWED */\n expired: boolean;\n /** DTO.RED_PACKET.EXPIRATION */\n expiration: number;\n /** DTO.RED_PACKET.CREATED_AT */\n createdAt: number;\n /** DTO.RED_PACKET.EXPIRES_AT */\n expiredAt: number;\n /** DTO.RED_PACKET.CLAIMED_COUNT */\n claimedCount: number;\n /** DTO.RED_PACKET.CLAIMED_AMOUNT */\n claimedAmount: string;\n /** DTO.RED_PACKET.REFUND_AMOUNT */\n refundedAmount: string;\n}\n\nexport interface RedPacketClaimDTO {\n /** DTO.RED_PACKET.PACKET_ID */\n packetId: string;\n /** DTO.RED_PACKET.CHAIN */\n chain: Chain;\n /** DTO.RED_PACKET.CLAIMER */\n claimer: string;\n /** DTO.RED_PACKET.MINT */\n mint: string;\n /** DTO.RED_PACKET.AMOUNT */\n amount: string;\n /** DTO.RED_PACKET.CLAIMED_AT */\n claimedAt: number;\n /** DTO.RED_PACKET.CREATOR */\n creator: string;\n /** DTO.RED_PACKET.TX_HASH */\n txHash: string;\n}\n\nexport interface RedPacketClaimsPage {\n /** DTO.PAGE.TOTAL */\n total: number;\n /** DTO.PAGE.HAS_NEXT */\n hasNextPage: boolean;\n /** DTO.PAGE.START_CURSOR */\n startCursor: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor: string;\n /** Array of claim records */\n records: RedPacketClaimDTO[];\n}\n\nexport interface RedPacketsPage {\n /** DTO.PAGE.TOTAL */\n total: number;\n /** DTO.PAGE.HAS_NEXT */\n hasNextPage: boolean;\n /** DTO.PAGE.START_CURSOR */\n startCursor: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor: string;\n /** Array of red packets */\n records: RedPacketDTO[];\n}\n\nexport interface RedPacketSendTxInput {\n /** DTO.RED_PACKET.SIGNED_TX */\n signedTx: string;\n}\n\nexport interface RedPacketSendTxResponse {\n /** DTO.RED_PACKET.SIGNATURE */\n signature: string;\n}\n\n/**\n * DTO.KYT.KYT_REGISTER_TRANSFER_REQUEST.NETWORK\n */\nexport type KYTRegisterTransferRequestNetwork =\n (typeof KYTRegisterTransferRequestNetwork)[keyof typeof KYTRegisterTransferRequestNetwork];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const KYTRegisterTransferRequestNetwork = {\n bitcoin: \"bitcoin\",\n ethereum: \"ethereum\",\n Solana: \"Solana\",\n} as const;\n\n/**\n * DTO.KYT.KYT_REGISTER_TRANSFER_REQUEST.DIRECTION\n */\nexport type KYTRegisterTransferRequestDirection =\n (typeof KYTRegisterTransferRequestDirection)[keyof typeof KYTRegisterTransferRequestDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const KYTRegisterTransferRequestDirection = {\n sent: \"sent\",\n received: \"received\",\n} as const;\n\nexport interface KYTRegisterTransferRequest {\n /** DTO.KYT.KYT_REGISTER_TRANSFER_REQUEST.NETWORK */\n network: KYTRegisterTransferRequestNetwork;\n /** DTO.KYT.KYT_REGISTER_TRANSFER_REQUEST.ASSET */\n asset: string;\n /** DTO.KYT.KYT_REGISTER_TRANSFER_REQUEST.TRANSFER_REFERENCE */\n transferReference: string;\n /** DTO.KYT.KYT_REGISTER_TRANSFER_REQUEST.DIRECTION */\n direction: KYTRegisterTransferRequestDirection;\n}\n\nexport interface TransferBaseResponseDTO {\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.UPDATED_AT\n * @nullable\n */\n updatedAt: string | null;\n /** DTO.KYT.TRANSFER_BASE_RESPONSE.ASSET */\n asset: string;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.ASSET_ID\n * @nullable\n */\n assetId: string | null;\n /** DTO.KYT.TRANSFER_BASE_RESPONSE.NETWORK */\n network: string;\n /** DTO.KYT.TRANSFER_BASE_RESPONSE.TRANSFER_REFERENCE */\n transferReference: string;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.MEMO\n * @nullable\n */\n memo: string | null;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.TX\n * @nullable\n */\n tx: string | null;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.IDX\n * @nullable\n */\n idx: number | null;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.USD_AMOUNT\n * @nullable\n */\n usdAmount: string | null;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.ASSET_AMOUNT\n * @nullable\n */\n assetAmount: string | null;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.TIMESTAMP\n * @nullable\n */\n timestamp: string | null;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.OUTPUT_ADDRESS\n * @nullable\n */\n outputAddress: string | null;\n /** DTO.KYT.TRANSFER_BASE_RESPONSE.EXTERNAL_ID */\n externalId: string;\n}\n\nexport interface DirectExposureDetail {\n /** DTO.KYT.DIRECT_EXPOSURE_DETAIL.NAME */\n name: string;\n /** DTO.KYT.DIRECT_EXPOSURE_DETAIL.CATEGORY_ID */\n categoryId: number;\n}\n\nexport interface TransferDirectExposureResponseDTO {\n /** DTO.KYT.TRANSFER_DIRECT_EXPOSURE_RESPONSE.DIRECT */\n direct: DirectExposureDetail;\n}\n\nexport interface AlertDetail {\n /** DTO.KYT.ALERT_DETAIL.ALERT_LEVEL */\n alertLevel: string;\n /** DTO.KYT.ALERT_DETAIL.SERVICE */\n service: string;\n /** DTO.KYT.ALERT_DETAIL.EXTERNAL_ID */\n externalId: string;\n /** DTO.KYT.ALERT_DETAIL.ALERT_AMOUNT */\n alertAmount: string;\n /** DTO.KYT.ALERT_DETAIL.EXPOSURE_TYPE */\n exposureType: string;\n /** DTO.KYT.ALERT_DETAIL.CATEGORY_ID */\n categoryId: number;\n /**\n * DTO.KYT.ALERT_DETAIL.MEMO\n * @nullable\n */\n memo: string | null;\n}\n\nexport interface TransferAlertsResponseDTO {\n /** DTO.KYT.TRANSFER_ALERTS_RESPONSE.ALERTS */\n alerts: AlertDetail[];\n}\n\nexport interface NetworkIdentificationOrg {\n /** DTO.KYT.NETWORK_IDENTIFICATION_ORG.NAME */\n name: string;\n}\n\nexport interface TransferNetworkIdentificationsResponseDTO {\n /** DTO.KYT.TRANSFER_NETWORK_IDENTIFICATIONS_RESPONSE.COUNT */\n count: number;\n /** DTO.KYT.TRANSFER_NETWORK_IDENTIFICATIONS_RESPONSE.NETWORK_IDENTIFICATION_ORGS */\n networkIdentificationOrgs: NetworkIdentificationOrg[];\n}\n\n/**\n * DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.NETWORK\n */\nexport type KYTRegisterWithdrawalRequestNetwork =\n (typeof KYTRegisterWithdrawalRequestNetwork)[keyof typeof KYTRegisterWithdrawalRequestNetwork];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const KYTRegisterWithdrawalRequestNetwork = {\n bitcoin: \"bitcoin\",\n ethereum: \"ethereum\",\n Solana: \"Solana\",\n} as const;\n\nexport interface KYTRegisterWithdrawalRequest {\n /** DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.NETWORK */\n network: KYTRegisterWithdrawalRequestNetwork;\n /** DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.ASSET */\n asset: string;\n /** DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.ADDRESS */\n address: string;\n /** DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.ASSET_AMOUNT */\n assetAmount: string;\n /** DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.ATTEMPT_TIMESTAMP */\n attemptTimestamp: string;\n /**\n * DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.ASSET_PRICE\n * @nullable\n */\n assetPrice?: string | null;\n /**\n * DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.ASSET_DENOMINATION\n * @nullable\n */\n assetDenomination?: string | null;\n /**\n * DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.ASSET_ID\n * @nullable\n */\n assetId?: string | null;\n /**\n * DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.MEMO\n * @nullable\n */\n memo?: string | null;\n}\n\nexport interface WithdrawalBaseResponseDTO {\n /** DTO.KYT.WITHDRAWAL_BASE_RESPONSE.ASSET */\n asset: string;\n /**\n * DTO.KYT.WITHDRAWAL_BASE_RESPONSE.ASSET_ID\n * @nullable\n */\n assetId: string | null;\n /** DTO.KYT.WITHDRAWAL_BASE_RESPONSE.NETWORK */\n network: string;\n /** DTO.KYT.WITHDRAWAL_BASE_RESPONSE.ADDRESS */\n address: string;\n /**\n * DTO.KYT.WITHDRAWAL_BASE_RESPONSE.MEMO\n * @nullable\n */\n memo: string | null;\n /** DTO.KYT.WITHDRAWAL_BASE_RESPONSE.ATTEMPT_IDENTIFIER */\n attemptIdentifier: string;\n /** DTO.KYT.WITHDRAWAL_BASE_RESPONSE.ASSET_AMOUNT */\n assetAmount: string;\n /** DTO.KYT.WITHDRAWAL_BASE_RESPONSE.EXTERNAL_ID */\n externalId: string;\n /** DTO.KYT.WITHDRAWAL_BASE_RESPONSE.USD_AMOUNT */\n usdAmount: string;\n /** DTO.KYT.WITHDRAWAL_BASE_RESPONSE.UPDATED_AT */\n updatedAt: string;\n}\n\nexport interface ChainalysisAddressIdentification {\n /** DTO.KYT.CHAINALYSIS_ADDRESS_IDENTIFICATION.ADDRESS_NAME */\n addressName: string;\n /** DTO.KYT.CHAINALYSIS_ADDRESS_IDENTIFICATION.DESCRIPTION */\n description: string;\n /** DTO.KYT.CHAINALYSIS_ADDRESS_IDENTIFICATION.CATEGORY_ID */\n categoryId: number;\n}\n\nexport interface WithdrawalAddressIdentificationsResponseDTO {\n /** DTO.KYT.WITHDRAWAL_ADDRESS_IDENTIFICATIONS_RESPONSE.CHAINALYSIS_IDENTIFICATIONS */\n chainalysisIdentifications: ChainalysisAddressIdentification[];\n /** DTO.KYT.WITHDRAWAL_ADDRESS_IDENTIFICATIONS_RESPONSE.CUSTOM_ADDRESSES */\n customAddresses: string[];\n}\n\nexport interface OnChainActivity {\n /** DTO.KYT.ON_CHAIN_ACTIVITY.FIRST_TRANSACTION_AT */\n first_transaction_at: number;\n}\n\nexport interface AlteryaIdentification {\n /** DTO.KYT.ALTERYA_IDENTIFICATION.OBJECT */\n object: string;\n /** DTO.KYT.ALTERYA_IDENTIFICATION.ADDRESS */\n address: string;\n /** DTO.KYT.ALTERYA_IDENTIFICATION.CHAIN */\n chain: string;\n /** DTO.KYT.ALTERYA_IDENTIFICATION.RISK_LEVEL */\n risk_level: string;\n /** DTO.KYT.ALTERYA_IDENTIFICATION.REASON */\n reason: string;\n /** DTO.KYT.ALTERYA_IDENTIFICATION.LABELS */\n labels: string[];\n /** DTO.KYT.ALTERYA_IDENTIFICATION.ON_CHAIN_ACTIVITY */\n on_chain_activity: OnChainActivity;\n /** DTO.KYT.ALTERYA_IDENTIFICATION.RISK_SCORE */\n risk_score: string;\n}\n\nexport interface WithdrawalFraudAssessmentResponseDTO {\n /** DTO.KYT.WITHDRAWAL_FRAUD_ASSESSMENT_RESPONSE.ALTERYA_IDENTIFICATIONS */\n alteryaIdentifications: AlteryaIdentification[];\n}\n\nexport interface RegisterAddressRequest {\n /** DTO.KYT.REGISTER_ADDRESS_REQUEST.ADDRESS */\n address: string;\n}\n\nexport interface RegisterAddressResponseDTO {\n /** DTO.KYT.REGISTER_ADDRESS_RESPONSE.ADDRESS */\n address: string;\n}\n\nexport interface AddressExposure {\n /** DTO.KYT.ADDRESS_EXPOSURE.CATEGORY */\n category: string;\n /** DTO.KYT.ADDRESS_EXPOSURE.VALUE */\n value: string;\n /** DTO.KYT.ADDRESS_EXPOSURE.EXPOSURE_TYPE */\n exposureType: string;\n /** DTO.KYT.ADDRESS_EXPOSURE.DIRECTION */\n direction: string;\n}\n\nexport interface AddressRiskResponseDTO {\n /** DTO.KYT.ADDRESS_RISK_RESPONSE.ADDRESS */\n address: string;\n /** DTO.KYT.ADDRESS_RISK_RESPONSE.RISK */\n risk: string;\n /**\n * DTO.KYT.ADDRESS_RISK_RESPONSE.RISK_REASON\n * @nullable\n */\n riskReason: string | null;\n /** DTO.KYT.ADDRESS_RISK_RESPONSE.ADDRESS_TYPE */\n addressType: string;\n /**\n * DTO.KYT.ADDRESS_RISK_RESPONSE.CLUSTER\n * @nullable\n */\n cluster: string | null;\n /** DTO.KYT.ADDRESS_RISK_RESPONSE.ADDRESS_IDENTIFICATIONS */\n addressIdentifications: string[];\n /** DTO.KYT.ADDRESS_RISK_RESPONSE.EXPOSURES */\n exposures: AddressExposure[];\n /** DTO.KYT.ADDRESS_RISK_RESPONSE.TRIGGERS */\n triggers: string[];\n /** DTO.KYT.ADDRESS_RISK_RESPONSE.STATUS */\n status: string;\n}\n\n/**\n * DTO.ENDPOINT.METADATA\n */\nexport type EndpointResponseMetadata = { [key: string]: unknown };\n\nexport interface EndpointResponse {\n /** DTO.ENDPOINT.ID */\n id?: string;\n /** DTO.ENDPOINT.URL */\n url?: string;\n /** DTO.ENDPOINT.DESCRIPTION */\n description?: string;\n /** DTO.ENDPOINT.FILTER_TYPES */\n filterTypes?: string[];\n /** DTO.ENDPOINT.CHANNELS */\n channels?: string[];\n /** DTO.ENDPOINT.DISABLED */\n disabled?: boolean;\n /** DTO.ENDPOINT.METADATA */\n metadata?: EndpointResponseMetadata;\n /** DTO.ENDPOINT.RATE_LIMIT */\n rateLimit?: number;\n /** DTO.ENDPOINT.FILTER */\n filter?: string;\n /** DTO.ENDPOINT.CREATED_AT */\n createdAt?: string;\n /** DTO.ENDPOINT.UPDATED_AT */\n updatedAt?: string;\n}\n\nexport interface EndpointListResponse {\n /** DTO.ENDPOINT.PAGE.DATA */\n data?: EndpointResponse[];\n /** DTO.ENDPOINT.PAGE.DONE */\n done?: boolean;\n /** DTO.ENDPOINT.PAGE.ITERATOR */\n iterator?: string;\n /** DTO.ENDPOINT.PAGE.PREV_ITERATOR */\n prevIterator?: string;\n}\n\nexport interface EndpointSecretResponse {\n /** DTO.ENDPOINT.SECRET */\n secret?: string;\n}\n\nexport interface EndpointOperationResponse {\n /** DTO.ENDPOINT.SUCCESS */\n success?: boolean;\n}\n\n/**\n * DTO.ENDPOINT.METADATA\n */\nexport type CreateEndpointInputMetadata = { [key: string]: unknown };\n\nexport interface CreateEndpointInput {\n /** DTO.ENDPOINT.CHANNELS */\n channels?: string[];\n /** DTO.ENDPOINT.DESCRIPTION */\n description?: string;\n /** DTO.ENDPOINT.DISABLED */\n disabled?: boolean;\n /** DTO.ENDPOINT.FILTER_TYPES */\n filterTypes?: string[];\n /** DTO.ENDPOINT.METADATA */\n metadata?: CreateEndpointInputMetadata;\n /** DTO.ENDPOINT.RATE_LIMIT */\n rateLimit?: number;\n /** DTO.ENDPOINT.URL */\n url?: string;\n /** DTO.ENDPOINT.FILTER */\n filter?: string;\n}\n\n/**\n * DTO.ENDPOINT.METADATA\n */\nexport type UpdateEndpointInputMetadata = { [key: string]: unknown };\n\nexport interface UpdateEndpointInput {\n /** DTO.ENDPOINT.ENDPOINT_ID */\n endpointId?: string;\n /** DTO.ENDPOINT.CHANNELS */\n channels?: string[];\n /** DTO.ENDPOINT.DESCRIPTION */\n description?: string;\n /** DTO.ENDPOINT.DISABLED */\n disabled?: boolean;\n /** DTO.ENDPOINT.FILTER_TYPES */\n filterTypes?: string[];\n /** DTO.ENDPOINT.METADATA */\n metadata?: UpdateEndpointInputMetadata;\n /** DTO.ENDPOINT.RATE_LIMIT */\n rateLimit?: number;\n /** DTO.ENDPOINT.URL */\n url?: string;\n /** DTO.ENDPOINT.FILTER */\n filter?: string;\n}\n\nexport type TradeType = (typeof TradeType)[keyof typeof TradeType];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const TradeType = {\n buy: \"buy\",\n sell: \"sell\",\n} as const;\n\nexport interface TradeEvent {\n /** DTO.TRADE.MAKER */\n maker: string;\n /** DTO.TRADE.BASE_AMOUNT */\n baseAmount: string;\n /** DTO.TRADE.QUOTE_AMOUNT */\n quoteAmount: string;\n /** DTO.TRADE.QUOTE_SYMBOL */\n quoteSymbol: string;\n /** DTO.TRADE.QUOTE_ADDRESS */\n quoteAddress: string;\n /** DTO.TRADE.AMOUNT_IN_USD */\n amountInUsd: string;\n /** DTO.TRADE.TIMESTAMP */\n timestamp: number;\n /** DTO.TRADE.EVENT */\n event: TradeType;\n /** DTO.TRADE.TX_HASH */\n txHash: string;\n /** DTO.TRADE.PRICE_IN_USD */\n priceInUsd: string;\n /** DTO.TRADE.ID */\n id: string;\n /** DTO.TRADE.BUY_COST_USD */\n buyCostUsd: string;\n /** DTO.TRADE.TOKEN_ADDRESS */\n tokenAddress: string;\n}\n\nexport type QuoteParams = {\n /**\n * DTO.DEX.QUOTE.DEX\n */\n dex: QuoteDex;\n /**\n * DTO.DEX.QUOTE.AMOUNT\n */\n amount: string;\n /**\n * DTO.DEX.QUOTE.INPUT_MINT\n */\n inputMint: string;\n /**\n * DTO.DEX.QUOTE.OUTPUT_MINT\n */\n outputMint: string;\n /**\n * DTO.DEX.QUOTE.EXACT_IN\n */\n exactIn?: boolean;\n /**\n * DTO.DEX.QUOTE.SLIPPAGE\n */\n slippage: number;\n};\n\nexport type QuoteDex = (typeof QuoteDex)[keyof typeof QuoteDex];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const QuoteDex = {\n raydium: \"raydium\",\n pumpfun: \"pumpfun\",\n} as const;\n\nexport type ListDexParams = {\n chains?: string[];\n /**\n * DTO.DEX.QUERY.LIMIT\n */\n limit?: number;\n /**\n * DTO.DEX.QUERY.DEX_PROGRAM\n */\n dexProgram?: string;\n};\n\nexport type MoonshotSubmitCreateToken200 = {\n /** Transaction signature */\n signature?: string;\n /** Block slot number */\n slot?: number;\n};\n\nexport type GetTradesParams = {\n /**\n * DTO.PAGE.CURSOR.DESCRIPTION\n */\n cursor?: string;\n /**\n * DTO.PAGE.LIMIT\n */\n limit?: number;\n /**\n * DTO.PAGE.DIRECTION\n */\n direction?: GetTradesDirection;\n /**\n * DTO.TRADE.QUERY.TOKEN_ADDRESS\n */\n tokenAddress?: string;\n /**\n * DTO.TRADE.QUERY.WALLET_ADDRESS\n */\n walletAddress?: string;\n /**\n * DTO.TRADE.QUERY.POOL_ADDRESS\n */\n poolAddress?: string;\n /**\n * DTO.TRADE.QUERY.BEFORE_TIMESTAMP\n */\n beforeTimestamp?: number;\n /**\n * DTO.TRADE.QUERY.AFTER_TIMESTAMP\n */\n afterTimestamp?: number;\n /**\n * DTO.TRADE.QUERY.BEFORE_BLOCK_HEIGHT\n */\n beforeBlockHeight?: number;\n /**\n * DTO.TRADE.QUERY.AFTER_BLOCK_HEIGHT\n */\n afterBlockHeight?: number;\n /**\n * DTO.TRADE.QUERY.TRANSACTIONS_SIGNATURE\n */\n transactionsSignature?: string;\n /**\n * DTO.TRADE.QUERY.TRADES_TYPE\n */\n type?: GetTradesType;\n};\n\nexport type GetTradesDirection = (typeof GetTradesDirection)[keyof typeof GetTradesDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetTradesDirection = {\n next: \"next\",\n prev: \"prev\",\n} as const;\n\nexport type GetTradesType = (typeof GetTradesType)[keyof typeof GetTradesType];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetTradesType = {\n BUY: \"BUY\",\n SELL: \"SELL\",\n} as const;\n\nexport type GetActivitiesParams = {\n /**\n * DTO.PAGE.CURSOR.DESCRIPTION\n */\n cursor?: string;\n /**\n * DTO.PAGE.LIMIT\n */\n limit?: number;\n /**\n * DTO.PAGE.DIRECTION\n */\n direction?: GetActivitiesDirection;\n /**\n * DTO.TRADE.QUERY.TOKEN_ADDRESS\n */\n tokenAddress?: string;\n /**\n * DTO.TRADE.QUERY.WALLET_ADDRESS\n */\n walletAddress?: string;\n /**\n * DTO.TRADE.QUERY.POOL_ADDRESS\n */\n poolAddress?: string;\n /**\n * DTO.TRADE.QUERY.BEFORE_TIMESTAMP\n */\n beforeTimestamp?: number;\n /**\n * DTO.TRADE.QUERY.AFTER_TIMESTAMP\n */\n afterTimestamp?: number;\n /**\n * DTO.TRADE.QUERY.BEFORE_BLOCK_HEIGHT\n */\n beforeBlockHeight?: number;\n /**\n * DTO.TRADE.QUERY.AFTER_BLOCK_HEIGHT\n */\n afterBlockHeight?: number;\n /**\n * DTO.TRADE.QUERY.TRANSACTIONS_SIGNATURE\n */\n transactionsSignature?: string;\n /**\n * DTO.TRADE.QUERY.ACTIVITIES_TYPE\n */\n type?: GetActivitiesType;\n};\n\nexport type GetActivitiesDirection =\n (typeof GetActivitiesDirection)[keyof typeof GetActivitiesDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetActivitiesDirection = {\n next: \"next\",\n prev: \"prev\",\n} as const;\n\nexport type GetActivitiesType = (typeof GetActivitiesType)[keyof typeof GetActivitiesType];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetActivitiesType = {\n BUY: \"BUY\",\n SELL: \"SELL\",\n LIQUIDITY_INITIALIZE: \"LIQUIDITY_INITIALIZE\",\n LIQUIDITY_ADD: \"LIQUIDITY_ADD\",\n LIQUIDITY_REMOVE: \"LIQUIDITY_REMOVE\",\n RED_PACKET_CREATE: \"RED_PACKET_CREATE\",\n RED_PACKET_CLAIM: \"RED_PACKET_CLAIM\",\n RED_PACKET_COMPLETE: \"RED_PACKET_COMPLETE\",\n RED_PACKET_REFUND: \"RED_PACKET_REFUND\",\n} as const;\n\nexport type GetTopTradersParams = {\n /**\n * DTO.PAGE.CURSOR.DESCRIPTION\n */\n cursor?: string;\n /**\n * DTO.TRADE.QUERY.LIMIT\n */\n limit?: number;\n /**\n * DTO.PAGE.DIRECTION\n */\n direction?: GetTopTradersDirection;\n /**\n * DTO.TRADE.QUERY.TOKEN_ADDRESS\n */\n tokenAddress: string;\n /**\n * DTO.TRADE.QUERY.TIME_FRAME\n */\n timeFrame?: GetTopTradersTimeFrame;\n /**\n * DTO.TRADE.QUERY.SORT_TYPE\n */\n sortType?: GetTopTradersSortType;\n /**\n * DTO.TRADE.QUERY.SORT_BY\n */\n sortBy?: GetTopTradersSortBy;\n};\n\nexport type GetTopTradersDirection =\n (typeof GetTopTradersDirection)[keyof typeof GetTopTradersDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetTopTradersDirection = {\n next: \"next\",\n prev: \"prev\",\n} as const;\n\nexport type GetTopTradersTimeFrame =\n (typeof GetTopTradersTimeFrame)[keyof typeof GetTopTradersTimeFrame];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetTopTradersTimeFrame = {\n \"30m\": \"30m\",\n \"1h\": \"1h\",\n \"2h\": \"2h\",\n \"4h\": \"4h\",\n \"6h\": \"6h\",\n \"8h\": \"8h\",\n \"12h\": \"12h\",\n \"24h\": \"24h\",\n} as const;\n\nexport type GetTopTradersSortType =\n (typeof GetTopTradersSortType)[keyof typeof GetTopTradersSortType];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetTopTradersSortType = {\n desc: \"desc\",\n asc: \"asc\",\n} as const;\n\nexport type GetTopTradersSortBy = (typeof GetTopTradersSortBy)[keyof typeof GetTopTradersSortBy];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetTopTradersSortBy = {\n tradeAmount: \"tradeAmount\",\n tradeCount: \"tradeCount\",\n} as const;\n\nexport type SearchParams = {\n /**\n * DTO.TOKEN.SEARCH.CHAINS\n */\n chains?: string[];\n /**\n * DTO.TOKEN.SEARCH.QUERY\n */\n q?: string;\n /**\n * DTO.TOKEN.SEARCH.LIMIT\n */\n limit?: number;\n /**\n * DTO.TOKEN.SEARCH.SORT_DIRECTION\n */\n sort?: SearchSort;\n /**\n * DTO.TOKEN.SEARCH.PROTOCOLS\n */\n protocols?: string[];\n /**\n * DTO.PAGE.CURSOR\n */\n cursor?: string;\n /**\n * DTO.TOKEN.SEARCH.SORT_BY\n */\n sortBy?: SearchSortBy;\n};\n\nexport type SearchSort = (typeof SearchSort)[keyof typeof SearchSort];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SearchSort = {\n asc: \"asc\",\n desc: \"desc\",\n} as const;\n\nexport type SearchSortBy = (typeof SearchSortBy)[keyof typeof SearchSortBy];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SearchSortBy = {\n marketCapInUsd: \"marketCapInUsd\",\n liquidityInUsd: \"liquidityInUsd\",\n priceInUsd: \"priceInUsd\",\n holderCount: \"holderCount\",\n h24VolumeInUsd: \"h24VolumeInUsd\",\n h24Transactions: \"h24Transactions\",\n tokenCreatedAt: \"tokenCreatedAt\",\n} as const;\n\nexport type GetTokensParams = {\n /**\n * GLOBAL.TOKENADDRESSES.DESCRIPTION\n */\n tokenAddresses: string;\n /**\n * DTO.TOKEN.REQUEST.SORT_BY\n */\n sortBy?: GetTokensSortBy;\n /**\n * DTO.TOKEN.REQUEST.SORT_DIRECTION\n */\n sortDirection?: GetTokensSortDirection;\n /**\n * DTO.TOKEN.REQUEST.FILTER_BY\n */\n filterBy?: FilterCondition[];\n};\n\nexport type GetTokensSortBy = (typeof GetTokensSortBy)[keyof typeof GetTokensSortBy];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetTokensSortBy = {\n marketDatapriceInUsd: \"marketData.priceInUsd\",\n statspriceChangeRatioInUsd1m: \"stats.priceChangeRatioInUsd1m\",\n statspriceChangeRatioInUsd5m: \"stats.priceChangeRatioInUsd5m\",\n statspriceChangeRatioInUsd1h: \"stats.priceChangeRatioInUsd1h\",\n statspriceChangeRatioInUsd4h: \"stats.priceChangeRatioInUsd4h\",\n statspriceChangeRatioInUsd24h: \"stats.priceChangeRatioInUsd24h\",\n marketDatamarketCapInUsd: \"marketData.marketCapInUsd\",\n marketDatamaxPoolTvlInUsd: \"marketData.maxPoolTvlInUsd\",\n marketDatatotalTvlInUsd: \"marketData.totalTvlInUsd\",\n marketDatatop10TotalHoldings: \"marketData.top10TotalHoldings\",\n marketDatatop10HoldingsRatio: \"marketData.top10HoldingsRatio\",\n marketDatatop100TotalHoldings: \"marketData.top100TotalHoldings\",\n marketDatatop100HoldingsRatio: \"marketData.top100HoldingsRatio\",\n marketDataholders: \"marketData.holders\",\n marketDatacreatorHoldings: \"marketData.creatorHoldings\",\n marketDatacreatorHoldingsRatio: \"marketData.creatorHoldingsRatio\",\n statsbuys1m: \"stats.buys1m\",\n statsbuys5m: \"stats.buys5m\",\n statsbuys15m: \"stats.buys15m\",\n statsbuys30m: \"stats.buys30m\",\n statsbuys1h: \"stats.buys1h\",\n statsbuys4h: \"stats.buys4h\",\n statsbuys24h: \"stats.buys24h\",\n statssells1m: \"stats.sells1m\",\n statssells5m: \"stats.sells5m\",\n statssells15m: \"stats.sells15m\",\n statssells30m: \"stats.sells30m\",\n statssells1h: \"stats.sells1h\",\n statssells4h: \"stats.sells4h\",\n statssells24h: \"stats.sells24h\",\n statstrades1m: \"stats.trades1m\",\n statstrades5m: \"stats.trades5m\",\n statstrades1h: \"stats.trades1h\",\n statstrades4h: \"stats.trades4h\",\n statstrades24h: \"stats.trades24h\",\n statstraders1m: \"stats.traders1m\",\n statstraders5m: \"stats.traders5m\",\n statstraders1h: \"stats.traders1h\",\n statstraders4h: \"stats.traders4h\",\n statstraders24h: \"stats.traders24h\",\n statsvolumesInUsd1m: \"stats.volumesInUsd1m\",\n statsvolumesInUsd5m: \"stats.volumesInUsd5m\",\n statsvolumesInUsd1h: \"stats.volumesInUsd1h\",\n statsvolumesInUsd4h: \"stats.volumesInUsd4h\",\n statsvolumesInUsd24h: \"stats.volumesInUsd24h\",\n tokenCreatedAt: \"tokenCreatedAt\",\n} as const;\n\nexport type GetTokensSortDirection =\n (typeof GetTokensSortDirection)[keyof typeof GetTokensSortDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetTokensSortDirection = {\n ASC: \"ASC\",\n DESC: \"DESC\",\n} as const;\n\nexport type GetMetadataMultiParams = {\n /**\n * GLOBAL.TOKENADDRESSES.DESCRIPTION\n */\n tokenAddresses: string;\n};\n\nexport type GetMetadataMulti200 = { [key: string]: TokenMetadata };\n\nexport type GetPoolsParams = {\n /**\n * DTO.POOL.SORT_BY\n */\n sortBy?: GetPoolsSortBy;\n /**\n * DTO.POOL.SORT_DIRECTION\n */\n sortDirection?: GetPoolsSortDirection;\n /**\n * DTO.POOL.MIN_TVL_IN_SOL\n */\n minTvlInSol?: string;\n /**\n * DTO.POOL.MAX_TVL_IN_SOL\n */\n maxTvlInSol?: string;\n /**\n * DTO.POOL.MIN_TVL_IN_USD\n */\n minTvlInUsd?: string;\n /**\n * DTO.POOL.MAX_TVL_IN_USD\n */\n maxTvlInUsd?: string;\n};\n\nexport type GetPoolsSortBy = (typeof GetPoolsSortBy)[keyof typeof GetPoolsSortBy];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetPoolsSortBy = {\n tvlInSol: \"tvlInSol\",\n tvlInUsd: \"tvlInUsd\",\n} as const;\n\nexport type GetPoolsSortDirection =\n (typeof GetPoolsSortDirection)[keyof typeof GetPoolsSortDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetPoolsSortDirection = {\n asc: \"asc\",\n desc: \"desc\",\n} as const;\n\nexport type GetStatsMultiParams = {\n /**\n * GLOBAL.TOKENADDRESSES.DESCRIPTION\n */\n tokenAddresses: string;\n};\n\nexport type GetStatsMulti200 = { [key: string]: TokenStat };\n\nexport type GetHoldersParams = {\n /**\n * DTO.PAGE.CURSOR.DESCRIPTION\n */\n cursor?: string;\n /**\n * DTO.PAGE.LIMIT\n */\n limit?: number;\n /**\n * DTO.PAGE.DIRECTION\n */\n direction?: GetHoldersDirection;\n};\n\nexport type GetHoldersDirection = (typeof GetHoldersDirection)[keyof typeof GetHoldersDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetHoldersDirection = {\n next: \"next\",\n prev: \"prev\",\n} as const;\n\nexport type GetHoldersMultiParams = {\n /**\n * GLOBAL.WALLETADDRESSES.DESCRIPTION\n */\n walletAddresses: string;\n};\n\nexport type GetCandlesParams = {\n /**\n * DTO.CANDLE.RESOLUTION\n */\n resolution: Resolution;\n /**\n * DTO.CANDLE.FROM\n */\n from?: number;\n /**\n * DTO.CANDLE.TO\n */\n to?: number;\n /**\n * DTO.CANDLE.LIMIT\n */\n limit?: number;\n};\n\nexport type GetMarketDataMultiParams = {\n /**\n * GLOBAL.TOKENADDRESSES.DESCRIPTION\n */\n tokenAddresses: string;\n};\n\nexport type GetMarketDataMulti200 = { [key: string]: TokenMarketData };\n\nexport type GetPricesParams = {\n /**\n * DTO.PAGE.CURSOR.DESCRIPTION\n */\n cursor?: string;\n /**\n * DTO.PAGE.LIMIT\n */\n limit?: number;\n /**\n * DTO.PAGE.DIRECTION\n */\n direction?: GetPricesDirection;\n};\n\nexport type GetPricesDirection = (typeof GetPricesDirection)[keyof typeof GetPricesDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetPricesDirection = {\n next: \"next\",\n prev: \"prev\",\n} as const;\n\nexport type GetPriceByTimeParams = {\n /**\n * DTO.TOKEN.PRICE.QUERY.TIMESTAMP\n */\n timestamp: number;\n};\n\nexport type GetMintAndBurnParams = {\n /**\n * DTO.PAGE.CURSOR.DESCRIPTION\n */\n cursor?: string;\n /**\n * DTO.PAGE.LIMIT\n */\n limit?: number;\n /**\n * DTO.PAGE.DIRECTION\n */\n direction?: GetMintAndBurnDirection;\n /**\n * DTO.TOKEN.MINT_AND_BURN.TYPE\n */\n type?: GetMintAndBurnType;\n};\n\nexport type GetMintAndBurnDirection =\n (typeof GetMintAndBurnDirection)[keyof typeof GetMintAndBurnDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetMintAndBurnDirection = {\n next: \"next\",\n prev: \"prev\",\n} as const;\n\nexport type GetMintAndBurnType = (typeof GetMintAndBurnType)[keyof typeof GetMintAndBurnType];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetMintAndBurnType = {\n all: \"all\",\n mint: \"mint\",\n burn: \"burn\",\n} as const;\n\nexport type ListTokenParams = {\n /**\n * DTO.PAGE.CURSOR.DESCRIPTION\n */\n cursor?: string;\n /**\n * DTO.PAGE.LIMIT\n */\n limit?: number;\n /**\n * DTO.PAGE.DIRECTION\n */\n direction?: ListTokenDirection;\n /**\n * DTO.TOKEN.SEARCH.SORT_DIRECTION\n */\n sort?: ListTokenSort;\n /**\n * DTO.TOKEN.LIST.QUERY.SORT_BY\n */\n sortBy?: ListTokenSortBy;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H24_VOLUME_IN_USD\n */\n min_h24_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H24_VOLUME_IN_USD\n */\n max_h24_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H24_PRICE_CHANGE_RATIO\n */\n min_h24_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H24_PRICE_CHANGE_RATIO\n */\n max_h24_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H24_BUYS\n */\n min_h24_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H24_BUYS\n */\n max_h24_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H24_SELLS\n */\n min_h24_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H24_SELLS\n */\n max_h24_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H24_TRADES\n */\n min_h24_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H24_TRADES\n */\n max_h24_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H24_BUYERS\n */\n min_h24_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H24_BUYERS\n */\n max_h24_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H24_SELLERS\n */\n min_h24_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H24_SELLERS\n */\n max_h24_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H24_BUY_VOLUME_IN_USD\n */\n min_h24_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H24_BUY_VOLUME_IN_USD\n */\n max_h24_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H24_SELL_VOLUME_IN_USD\n */\n min_h24_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H24_SELL_VOLUME_IN_USD\n */\n max_h24_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H4_VOLUME_IN_USD\n */\n min_h4_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H4_VOLUME_IN_USD\n */\n max_h4_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H4_PRICE_CHANGE_RATIO\n */\n min_h4_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H4_PRICE_CHANGE_RATIO\n */\n max_h4_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H4_BUYS\n */\n min_h4_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H4_BUYS\n */\n max_h4_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H4_SELLS\n */\n min_h4_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H4_SELLS\n */\n max_h4_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H4_TRADES\n */\n min_h4_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H4_TRADES\n */\n max_h4_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H4_BUYERS\n */\n min_h4_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H4_BUYERS\n */\n max_h4_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H4_SELLERS\n */\n min_h4_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H4_SELLERS\n */\n max_h4_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H4_BUY_VOLUME_IN_USD\n */\n min_h4_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H4_BUY_VOLUME_IN_USD\n */\n max_h4_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H4_SELL_VOLUME_IN_USD\n */\n min_h4_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H4_SELL_VOLUME_IN_USD\n */\n max_h4_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H1_VOLUME_IN_USD\n */\n min_h1_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H1_VOLUME_IN_USD\n */\n max_h1_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H1_PRICE_CHANGE_RATIO\n */\n min_h1_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H1_PRICE_CHANGE_RATIO\n */\n max_h1_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H1_BUYS\n */\n min_h1_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H1_BUYS\n */\n max_h1_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H1_SELLS\n */\n min_h1_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H1_SELLS\n */\n max_h1_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H1_TRADES\n */\n min_h1_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H1_TRADES\n */\n max_h1_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H1_BUYERS\n */\n min_h1_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H1_BUYERS\n */\n max_h1_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H1_SELLERS\n */\n min_h1_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H1_SELLERS\n */\n max_h1_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H1_BUY_VOLUME_IN_USD\n */\n min_h1_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H1_BUY_VOLUME_IN_USD\n */\n max_h1_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H1_SELL_VOLUME_IN_USD\n */\n min_h1_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H1_SELL_VOLUME_IN_USD\n */\n max_h1_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M30_VOLUME_IN_USD\n */\n min_m30_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M30_VOLUME_IN_USD\n */\n max_m30_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M30_PRICE_CHANGE_RATIO\n */\n min_m30_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M30_PRICE_CHANGE_RATIO\n */\n max_m30_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M30_BUYS\n */\n min_m30_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M30_BUYS\n */\n max_m30_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M30_SELLS\n */\n min_m30_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M30_SELLS\n */\n max_m30_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M30_TRADES\n */\n min_m30_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M30_TRADES\n */\n max_m30_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M30_BUYERS\n */\n min_m30_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M30_BUYERS\n */\n max_m30_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M30_SELLERS\n */\n min_m30_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M30_SELLERS\n */\n max_m30_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M30_BUY_VOLUME_IN_USD\n */\n min_m30_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M30_BUY_VOLUME_IN_USD\n */\n max_m30_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M30_SELL_VOLUME_IN_USD\n */\n min_m30_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M30_SELL_VOLUME_IN_USD\n */\n max_m30_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M15_VOLUME_IN_USD\n */\n min_m15_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M15_VOLUME_IN_USD\n */\n max_m15_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M15_PRICE_CHANGE_RATIO\n */\n min_m15_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M15_PRICE_CHANGE_RATIO\n */\n max_m15_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M15_BUYS\n */\n min_m15_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M15_BUYS\n */\n max_m15_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M15_SELLS\n */\n min_m15_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M15_SELLS\n */\n max_m15_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M15_TRADES\n */\n min_m15_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M15_TRADES\n */\n max_m15_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M15_BUYERS\n */\n min_m15_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M15_BUYERS\n */\n max_m15_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M15_SELLERS\n */\n min_m15_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M15_SELLERS\n */\n max_m15_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M15_BUY_VOLUME_IN_USD\n */\n min_m15_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M15_BUY_VOLUME_IN_USD\n */\n max_m15_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M15_SELL_VOLUME_IN_USD\n */\n min_m15_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M15_SELL_VOLUME_IN_USD\n */\n max_m15_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M5_VOLUME_IN_USD\n */\n min_m5_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M5_VOLUME_IN_USD\n */\n max_m5_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M5_PRICE_CHANGE_RATIO\n */\n min_m5_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M5_PRICE_CHANGE_RATIO\n */\n max_m5_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M5_BUYS\n */\n min_m5_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M5_BUYS\n */\n max_m5_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M5_SELLS\n */\n min_m5_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M5_SELLS\n */\n max_m5_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M5_TRADES\n */\n min_m5_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M5_TRADES\n */\n max_m5_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M5_BUYERS\n */\n min_m5_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M5_BUYERS\n */\n max_m5_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M5_SELLERS\n */\n min_m5_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M5_SELLERS\n */\n max_m5_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M5_BUY_VOLUME_IN_USD\n */\n min_m5_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M5_BUY_VOLUME_IN_USD\n */\n max_m5_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M5_SELL_VOLUME_IN_USD\n */\n min_m5_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M5_SELL_VOLUME_IN_USD\n */\n max_m5_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M1_VOLUME_IN_USD\n */\n min_m1_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M1_VOLUME_IN_USD\n */\n max_m1_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M1_PRICE_CHANGE_RATIO\n */\n min_m1_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M1_PRICE_CHANGE_RATIO\n */\n max_m1_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M1_BUYS\n */\n min_m1_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M1_BUYS\n */\n max_m1_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M1_SELLS\n */\n min_m1_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M1_SELLS\n */\n max_m1_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M1_TRADES\n */\n min_m1_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M1_TRADES\n */\n max_m1_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M1_BUYERS\n */\n min_m1_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M1_BUYERS\n */\n max_m1_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M1_SELLERS\n */\n min_m1_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M1_SELLERS\n */\n max_m1_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M1_BUY_VOLUME_IN_USD\n */\n min_m1_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M1_BUY_VOLUME_IN_USD\n */\n max_m1_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M1_SELL_VOLUME_IN_USD\n */\n min_m1_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M1_SELL_VOLUME_IN_USD\n */\n max_m1_sell_volume_in_usd?: string;\n};\n\nexport type ListTokenDirection = (typeof ListTokenDirection)[keyof typeof ListTokenDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ListTokenDirection = {\n next: \"next\",\n prev: \"prev\",\n} as const;\n\nexport type ListTokenSort = (typeof ListTokenSort)[keyof typeof ListTokenSort];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ListTokenSort = {\n asc: \"asc\",\n desc: \"desc\",\n} as const;\n\nexport type ListTokenSortBy = (typeof ListTokenSortBy)[keyof typeof ListTokenSortBy];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ListTokenSortBy = {\n h24VolumeInUsd: \"h24VolumeInUsd\",\n h24PriceChangeRatio: \"h24PriceChangeRatio\",\n h24Buys: \"h24Buys\",\n h24Sells: \"h24Sells\",\n h24Trades: \"h24Trades\",\n h24Buyers: \"h24Buyers\",\n h24Sellers: \"h24Sellers\",\n h24BuyVolumeInUsd: \"h24BuyVolumeInUsd\",\n h24SellVolumeInUsd: \"h24SellVolumeInUsd\",\n h4VolumeInUsd: \"h4VolumeInUsd\",\n h4PriceChangeRatio: \"h4PriceChangeRatio\",\n h4Buys: \"h4Buys\",\n h4Sells: \"h4Sells\",\n h4Trades: \"h4Trades\",\n h4Buyers: \"h4Buyers\",\n h4Sellers: \"h4Sellers\",\n h4BuyVolumeInUsd: \"h4BuyVolumeInUsd\",\n h4SellVolumeInUsd: \"h4SellVolumeInUsd\",\n h1VolumeInUsd: \"h1VolumeInUsd\",\n h1PriceChangeRatio: \"h1PriceChangeRatio\",\n h1Buys: \"h1Buys\",\n h1Sells: \"h1Sells\",\n h1Trades: \"h1Trades\",\n h1Buyers: \"h1Buyers\",\n h1Sellers: \"h1Sellers\",\n h1BuyVolumeInUsd: \"h1BuyVolumeInUsd\",\n h1SellVolumeInUsd: \"h1SellVolumeInUsd\",\n m30VolumeInUsd: \"m30VolumeInUsd\",\n m30PriceChangeRatio: \"m30PriceChangeRatio\",\n m30Buys: \"m30Buys\",\n m30Sells: \"m30Sells\",\n m30Trades: \"m30Trades\",\n m30Buyers: \"m30Buyers\",\n m30Sellers: \"m30Sellers\",\n m30BuyVolumeInUsd: \"m30BuyVolumeInUsd\",\n m30SellVolumeInUsd: \"m30SellVolumeInUsd\",\n m15VolumeInUsd: \"m15VolumeInUsd\",\n m15PriceChangeRatio: \"m15PriceChangeRatio\",\n m15Buys: \"m15Buys\",\n m15Sells: \"m15Sells\",\n m15Trades: \"m15Trades\",\n m15Buyers: \"m15Buyers\",\n m15Sellers: \"m15Sellers\",\n m15BuyVolumeInUsd: \"m15BuyVolumeInUsd\",\n m15SellVolumeInUsd: \"m15SellVolumeInUsd\",\n m5VolumeInUsd: \"m5VolumeInUsd\",\n m5PriceChangeRatio: \"m5PriceChangeRatio\",\n m5Buys: \"m5Buys\",\n m5Sells: \"m5Sells\",\n m5Trades: \"m5Trades\",\n m5Buyers: \"m5Buyers\",\n m5Sellers: \"m5Sellers\",\n m5BuyVolumeInUsd: \"m5BuyVolumeInUsd\",\n m5SellVolumeInUsd: \"m5SellVolumeInUsd\",\n m1VolumeInUsd: \"m1VolumeInUsd\",\n m1PriceChangeRatio: \"m1PriceChangeRatio\",\n m1Buys: \"m1Buys\",\n m1Sells: \"m1Sells\",\n m1Trades: \"m1Trades\",\n m1Buyers: \"m1Buyers\",\n m1Sellers: \"m1Sellers\",\n m1BuyVolumeInUsd: \"m1BuyVolumeInUsd\",\n m1SellVolumeInUsd: \"m1SellVolumeInUsd\",\n} as const;\n\nexport type GetSecurity200 = { [key: string]: unknown };\n\nexport type GetTokenLiquiditySnapshotsParams = {\n /**\n * DTO.TOKEN.LIQUIDITY_SNAPSHOT.TIME\n */\n time?: number;\n /**\n * DTO.PAGE.CURSOR\n */\n cursor?: string;\n /**\n * DTO.PAGE.LIMIT\n */\n limit?: number;\n};\n\nexport type GetDexpoolSnapshotsParams = {\n /**\n * DTO.DEXPOOL.SNAPSHOT.TIME\n */\n time?: number;\n /**\n * DTO.PAGE.CURSOR\n */\n cursor?: string;\n /**\n * DTO.PAGE.LIMIT\n */\n limit?: number;\n};\n\nexport type GetHotTokensParams = {\n /**\n * DTO.TOKEN.REQUEST.SORT_BY\n */\n sortBy?: GetHotTokensSortBy;\n /**\n * DTO.TOKEN.REQUEST.SORT_DIRECTION\n */\n sortDirection?: GetHotTokensSortDirection;\n /**\n * DTO.TOKEN.REQUEST.FILTER_BY\n */\n rangeFilters?: FilterCondition[];\n /**\n * DTO.TOKEN.REQUEST.TAG\n */\n tag?: GetHotTokensTag;\n /**\n * DTO.TOKEN.FILTER.FILTERS\n */\n filters?: string[];\n /**\n * DTO.TOKEN.FILTER.LAUNCHPAD_PLATFORM\n */\n launchpadPlatform?: string[];\n /**\n * DTO.TOKEN.FILTER.SEARCH_KEYWORDS\n */\n searchKeywords?: string[];\n /**\n * DTO.TOKEN.FILTER.EXCLUDE_KEYWORDS\n */\n excludeKeywords?: string[];\n};\n\nexport type GetHotTokensSortBy = (typeof GetHotTokensSortBy)[keyof typeof GetHotTokensSortBy];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetHotTokensSortBy = {\n marketDatapriceInUsd: \"marketData.priceInUsd\",\n statspriceChangeRatioInUsd1m: \"stats.priceChangeRatioInUsd1m\",\n statspriceChangeRatioInUsd5m: \"stats.priceChangeRatioInUsd5m\",\n statspriceChangeRatioInUsd1h: \"stats.priceChangeRatioInUsd1h\",\n statspriceChangeRatioInUsd4h: \"stats.priceChangeRatioInUsd4h\",\n statspriceChangeRatioInUsd24h: \"stats.priceChangeRatioInUsd24h\",\n marketDatamarketCapInUsd: \"marketData.marketCapInUsd\",\n marketDatamaxPoolTvlInUsd: \"marketData.maxPoolTvlInUsd\",\n marketDatatotalTvlInUsd: \"marketData.totalTvlInUsd\",\n marketDatatop10TotalHoldings: \"marketData.top10TotalHoldings\",\n marketDatatop10HoldingsRatio: \"marketData.top10HoldingsRatio\",\n marketDatatop100TotalHoldings: \"marketData.top100TotalHoldings\",\n marketDatatop100HoldingsRatio: \"marketData.top100HoldingsRatio\",\n marketDataholders: \"marketData.holders\",\n marketDatacreatorHoldings: \"marketData.creatorHoldings\",\n marketDatacreatorHoldingsRatio: \"marketData.creatorHoldingsRatio\",\n statsbuys1m: \"stats.buys1m\",\n statsbuys5m: \"stats.buys5m\",\n statsbuys15m: \"stats.buys15m\",\n statsbuys30m: \"stats.buys30m\",\n statsbuys1h: \"stats.buys1h\",\n statsbuys4h: \"stats.buys4h\",\n statsbuys24h: \"stats.buys24h\",\n statssells1m: \"stats.sells1m\",\n statssells5m: \"stats.sells5m\",\n statssells15m: \"stats.sells15m\",\n statssells30m: \"stats.sells30m\",\n statssells1h: \"stats.sells1h\",\n statssells4h: \"stats.sells4h\",\n statssells24h: \"stats.sells24h\",\n statstrades1m: \"stats.trades1m\",\n statstrades5m: \"stats.trades5m\",\n statstrades1h: \"stats.trades1h\",\n statstrades4h: \"stats.trades4h\",\n statstrades24h: \"stats.trades24h\",\n statstraders1m: \"stats.traders1m\",\n statstraders5m: \"stats.traders5m\",\n statstraders1h: \"stats.traders1h\",\n statstraders4h: \"stats.traders4h\",\n statstraders24h: \"stats.traders24h\",\n statsvolumesInUsd1m: \"stats.volumesInUsd1m\",\n statsvolumesInUsd5m: \"stats.volumesInUsd5m\",\n statsvolumesInUsd1h: \"stats.volumesInUsd1h\",\n statsvolumesInUsd4h: \"stats.volumesInUsd4h\",\n statsvolumesInUsd24h: \"stats.volumesInUsd24h\",\n tokenCreatedAt: \"tokenCreatedAt\",\n} as const;\n\nexport type GetHotTokensSortDirection =\n (typeof GetHotTokensSortDirection)[keyof typeof GetHotTokensSortDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetHotTokensSortDirection = {\n ASC: \"ASC\",\n DESC: \"DESC\",\n} as const;\n\nexport type GetHotTokensTag = (typeof GetHotTokensTag)[keyof typeof GetHotTokensTag];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetHotTokensTag = {\n pump_fun: \"pump_fun\",\n raydium_launchpad: \"raydium_launchpad\",\n meteora_dynamic_bounding_curve: \"meteora_dynamic_bounding_curve\",\n bonk_fun: \"bonk_fun\",\n moonit_fun: \"moonit_fun\",\n} as const;\n\nexport type GetNewTokensParams = {\n /**\n * DTO.TOKEN.REQUEST.SORT_BY\n */\n sortBy?: GetNewTokensSortBy;\n /**\n * DTO.TOKEN.REQUEST.SORT_DIRECTION\n */\n sortDirection?: GetNewTokensSortDirection;\n /**\n * DTO.TOKEN.REQUEST.FILTER_BY\n */\n rangeFilters?: FilterCondition[];\n /**\n * DTO.TOKEN.REQUEST.TAG\n */\n tag?: GetNewTokensTag;\n /**\n * DTO.TOKEN.FILTER.FILTERS\n */\n filters?: string[];\n /**\n * DTO.TOKEN.FILTER.LAUNCHPAD_PLATFORM\n */\n launchpadPlatform?: string[];\n /**\n * DTO.TOKEN.FILTER.SEARCH_KEYWORDS\n */\n searchKeywords?: string[];\n /**\n * DTO.TOKEN.FILTER.EXCLUDE_KEYWORDS\n */\n excludeKeywords?: string[];\n};\n\nexport type GetNewTokensSortBy = (typeof GetNewTokensSortBy)[keyof typeof GetNewTokensSortBy];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetNewTokensSortBy = {\n marketDatapriceInUsd: \"marketData.priceInUsd\",\n statspriceChangeRatioInUsd1m: \"stats.priceChangeRatioInUsd1m\",\n statspriceChangeRatioInUsd5m: \"stats.priceChangeRatioInUsd5m\",\n statspriceChangeRatioInUsd1h: \"stats.priceChangeRatioInUsd1h\",\n statspriceChangeRatioInUsd4h: \"stats.priceChangeRatioInUsd4h\",\n statspriceChangeRatioInUsd24h: \"stats.priceChangeRatioInUsd24h\",\n marketDatamarketCapInUsd: \"marketData.marketCapInUsd\",\n marketDatamaxPoolTvlInUsd: \"marketData.maxPoolTvlInUsd\",\n marketDatatotalTvlInUsd: \"marketData.totalTvlInUsd\",\n marketDatatop10TotalHoldings: \"marketData.top10TotalHoldings\",\n marketDatatop10HoldingsRatio: \"marketData.top10HoldingsRatio\",\n marketDatatop100TotalHoldings: \"marketData.top100TotalHoldings\",\n marketDatatop100HoldingsRatio: \"marketData.top100HoldingsRatio\",\n marketDataholders: \"marketData.holders\",\n marketDatacreatorHoldings: \"marketData.creatorHoldings\",\n marketDatacreatorHoldingsRatio: \"marketData.creatorHoldingsRatio\",\n statsbuys1m: \"stats.buys1m\",\n statsbuys5m: \"stats.buys5m\",\n statsbuys15m: \"stats.buys15m\",\n statsbuys30m: \"stats.buys30m\",\n statsbuys1h: \"stats.buys1h\",\n statsbuys4h: \"stats.buys4h\",\n statsbuys24h: \"stats.buys24h\",\n statssells1m: \"stats.sells1m\",\n statssells5m: \"stats.sells5m\",\n statssells15m: \"stats.sells15m\",\n statssells30m: \"stats.sells30m\",\n statssells1h: \"stats.sells1h\",\n statssells4h: \"stats.sells4h\",\n statssells24h: \"stats.sells24h\",\n statstrades1m: \"stats.trades1m\",\n statstrades5m: \"stats.trades5m\",\n statstrades1h: \"stats.trades1h\",\n statstrades4h: \"stats.trades4h\",\n statstrades24h: \"stats.trades24h\",\n statstraders1m: \"stats.traders1m\",\n statstraders5m: \"stats.traders5m\",\n statstraders1h: \"stats.traders1h\",\n statstraders4h: \"stats.traders4h\",\n statstraders24h: \"stats.traders24h\",\n statsvolumesInUsd1m: \"stats.volumesInUsd1m\",\n statsvolumesInUsd5m: \"stats.volumesInUsd5m\",\n statsvolumesInUsd1h: \"stats.volumesInUsd1h\",\n statsvolumesInUsd4h: \"stats.volumesInUsd4h\",\n statsvolumesInUsd24h: \"stats.volumesInUsd24h\",\n tokenCreatedAt: \"tokenCreatedAt\",\n} as const;\n\nexport type GetNewTokensSortDirection =\n (typeof GetNewTokensSortDirection)[keyof typeof GetNewTokensSortDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetNewTokensSortDirection = {\n ASC: \"ASC\",\n DESC: \"DESC\",\n} as const;\n\nexport type GetNewTokensTag = (typeof GetNewTokensTag)[keyof typeof GetNewTokensTag];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetNewTokensTag = {\n pump_fun: \"pump_fun\",\n raydium_launchpad: \"raydium_launchpad\",\n meteora_dynamic_bounding_curve: \"meteora_dynamic_bounding_curve\",\n bonk_fun: \"bonk_fun\",\n moonit_fun: \"moonit_fun\",\n} as const;\n\nexport type GetStocksTokensParams = {\n /**\n * DTO.TOKEN.REQUEST.SORT_BY\n */\n sortBy?: GetStocksTokensSortBy;\n /**\n * DTO.TOKEN.REQUEST.SORT_DIRECTION\n */\n sortDirection?: GetStocksTokensSortDirection;\n /**\n * DTO.TOKEN.REQUEST.FILTER_BY\n */\n rangeFilters?: FilterCondition[];\n /**\n * DTO.TOKEN.REQUEST.TAG\n */\n tag?: GetStocksTokensTag;\n /**\n * DTO.TOKEN.FILTER.FILTERS\n */\n filters?: string[];\n /**\n * DTO.TOKEN.FILTER.LAUNCHPAD_PLATFORM\n */\n launchpadPlatform?: string[];\n /**\n * DTO.TOKEN.FILTER.SEARCH_KEYWORDS\n */\n searchKeywords?: string[];\n /**\n * DTO.TOKEN.FILTER.EXCLUDE_KEYWORDS\n */\n excludeKeywords?: string[];\n};\n\nexport type GetStocksTokensSortBy =\n (typeof GetStocksTokensSortBy)[keyof typeof GetStocksTokensSortBy];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetStocksTokensSortBy = {\n marketDatapriceInUsd: \"marketData.priceInUsd\",\n statspriceChangeRatioInUsd1m: \"stats.priceChangeRatioInUsd1m\",\n statspriceChangeRatioInUsd5m: \"stats.priceChangeRatioInUsd5m\",\n statspriceChangeRatioInUsd1h: \"stats.priceChangeRatioInUsd1h\",\n statspriceChangeRatioInUsd4h: \"stats.priceChangeRatioInUsd4h\",\n statspriceChangeRatioInUsd24h: \"stats.priceChangeRatioInUsd24h\",\n marketDatamarketCapInUsd: \"marketData.marketCapInUsd\",\n marketDatamaxPoolTvlInUsd: \"marketData.maxPoolTvlInUsd\",\n marketDatatotalTvlInUsd: \"marketData.totalTvlInUsd\",\n marketDatatop10TotalHoldings: \"marketData.top10TotalHoldings\",\n marketDatatop10HoldingsRatio: \"marketData.top10HoldingsRatio\",\n marketDatatop100TotalHoldings: \"marketData.top100TotalHoldings\",\n marketDatatop100HoldingsRatio: \"marketData.top100HoldingsRatio\",\n marketDataholders: \"marketData.holders\",\n marketDatacreatorHoldings: \"marketData.creatorHoldings\",\n marketDatacreatorHoldingsRatio: \"marketData.creatorHoldingsRatio\",\n statsbuys1m: \"stats.buys1m\",\n statsbuys5m: \"stats.buys5m\",\n statsbuys15m: \"stats.buys15m\",\n statsbuys30m: \"stats.buys30m\",\n statsbuys1h: \"stats.buys1h\",\n statsbuys4h: \"stats.buys4h\",\n statsbuys24h: \"stats.buys24h\",\n statssells1m: \"stats.sells1m\",\n statssells5m: \"stats.sells5m\",\n statssells15m: \"stats.sells15m\",\n statssells30m: \"stats.sells30m\",\n statssells1h: \"stats.sells1h\",\n statssells4h: \"stats.sells4h\",\n statssells24h: \"stats.sells24h\",\n statstrades1m: \"stats.trades1m\",\n statstrades5m: \"stats.trades5m\",\n statstrades1h: \"stats.trades1h\",\n statstrades4h: \"stats.trades4h\",\n statstrades24h: \"stats.trades24h\",\n statstraders1m: \"stats.traders1m\",\n statstraders5m: \"stats.traders5m\",\n statstraders1h: \"stats.traders1h\",\n statstraders4h: \"stats.traders4h\",\n statstraders24h: \"stats.traders24h\",\n statsvolumesInUsd1m: \"stats.volumesInUsd1m\",\n statsvolumesInUsd5m: \"stats.volumesInUsd5m\",\n statsvolumesInUsd1h: \"stats.volumesInUsd1h\",\n statsvolumesInUsd4h: \"stats.volumesInUsd4h\",\n statsvolumesInUsd24h: \"stats.volumesInUsd24h\",\n tokenCreatedAt: \"tokenCreatedAt\",\n} as const;\n\nexport type GetStocksTokensSortDirection =\n (typeof GetStocksTokensSortDirection)[keyof typeof GetStocksTokensSortDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetStocksTokensSortDirection = {\n ASC: \"ASC\",\n DESC: \"DESC\",\n} as const;\n\nexport type GetStocksTokensTag = (typeof GetStocksTokensTag)[keyof typeof GetStocksTokensTag];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetStocksTokensTag = {\n pump_fun: \"pump_fun\",\n raydium_launchpad: \"raydium_launchpad\",\n meteora_dynamic_bounding_curve: \"meteora_dynamic_bounding_curve\",\n bonk_fun: \"bonk_fun\",\n moonit_fun: \"moonit_fun\",\n} as const;\n\nexport type GetFinalStretchTokensParams = {\n /**\n * DTO.TOKEN.REQUEST.SORT_BY\n */\n sortBy?: GetFinalStretchTokensSortBy;\n /**\n * DTO.TOKEN.REQUEST.SORT_DIRECTION\n */\n sortDirection?: GetFinalStretchTokensSortDirection;\n /**\n * DTO.TOKEN.REQUEST.FILTER_BY\n */\n rangeFilters?: FilterCondition[];\n /**\n * DTO.TOKEN.REQUEST.TAG\n */\n tag?: GetFinalStretchTokensTag;\n /**\n * DTO.TOKEN.FILTER.FILTERS\n */\n filters?: string[];\n /**\n * DTO.TOKEN.FILTER.LAUNCHPAD_PLATFORM\n */\n launchpadPlatform?: string[];\n /**\n * DTO.TOKEN.FILTER.SEARCH_KEYWORDS\n */\n searchKeywords?: string[];\n /**\n * DTO.TOKEN.FILTER.EXCLUDE_KEYWORDS\n */\n excludeKeywords?: string[];\n};\n\nexport type GetFinalStretchTokensSortBy =\n (typeof GetFinalStretchTokensSortBy)[keyof typeof GetFinalStretchTokensSortBy];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetFinalStretchTokensSortBy = {\n marketDatapriceInUsd: \"marketData.priceInUsd\",\n statspriceChangeRatioInUsd1m: \"stats.priceChangeRatioInUsd1m\",\n statspriceChangeRatioInUsd5m: \"stats.priceChangeRatioInUsd5m\",\n statspriceChangeRatioInUsd1h: \"stats.priceChangeRatioInUsd1h\",\n statspriceChangeRatioInUsd4h: \"stats.priceChangeRatioInUsd4h\",\n statspriceChangeRatioInUsd24h: \"stats.priceChangeRatioInUsd24h\",\n marketDatamarketCapInUsd: \"marketData.marketCapInUsd\",\n marketDatamaxPoolTvlInUsd: \"marketData.maxPoolTvlInUsd\",\n marketDatatotalTvlInUsd: \"marketData.totalTvlInUsd\",\n marketDatatop10TotalHoldings: \"marketData.top10TotalHoldings\",\n marketDatatop10HoldingsRatio: \"marketData.top10HoldingsRatio\",\n marketDatatop100TotalHoldings: \"marketData.top100TotalHoldings\",\n marketDatatop100HoldingsRatio: \"marketData.top100HoldingsRatio\",\n marketDataholders: \"marketData.holders\",\n marketDatacreatorHoldings: \"marketData.creatorHoldings\",\n marketDatacreatorHoldingsRatio: \"marketData.creatorHoldingsRatio\",\n statsbuys1m: \"stats.buys1m\",\n statsbuys5m: \"stats.buys5m\",\n statsbuys15m: \"stats.buys15m\",\n statsbuys30m: \"stats.buys30m\",\n statsbuys1h: \"stats.buys1h\",\n statsbuys4h: \"stats.buys4h\",\n statsbuys24h: \"stats.buys24h\",\n statssells1m: \"stats.sells1m\",\n statssells5m: \"stats.sells5m\",\n statssells15m: \"stats.sells15m\",\n statssells30m: \"stats.sells30m\",\n statssells1h: \"stats.sells1h\",\n statssells4h: \"stats.sells4h\",\n statssells24h: \"stats.sells24h\",\n statstrades1m: \"stats.trades1m\",\n statstrades5m: \"stats.trades5m\",\n statstrades1h: \"stats.trades1h\",\n statstrades4h: \"stats.trades4h\",\n statstrades24h: \"stats.trades24h\",\n statstraders1m: \"stats.traders1m\",\n statstraders5m: \"stats.traders5m\",\n statstraders1h: \"stats.traders1h\",\n statstraders4h: \"stats.traders4h\",\n statstraders24h: \"stats.traders24h\",\n statsvolumesInUsd1m: \"stats.volumesInUsd1m\",\n statsvolumesInUsd5m: \"stats.volumesInUsd5m\",\n statsvolumesInUsd1h: \"stats.volumesInUsd1h\",\n statsvolumesInUsd4h: \"stats.volumesInUsd4h\",\n statsvolumesInUsd24h: \"stats.volumesInUsd24h\",\n tokenCreatedAt: \"tokenCreatedAt\",\n} as const;\n\nexport type GetFinalStretchTokensSortDirection =\n (typeof GetFinalStretchTokensSortDirection)[keyof typeof GetFinalStretchTokensSortDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetFinalStretchTokensSortDirection = {\n ASC: \"ASC\",\n DESC: \"DESC\",\n} as const;\n\nexport type GetFinalStretchTokensTag =\n (typeof GetFinalStretchTokensTag)[keyof typeof GetFinalStretchTokensTag];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetFinalStretchTokensTag = {\n pump_fun: \"pump_fun\",\n raydium_launchpad: \"raydium_launchpad\",\n meteora_dynamic_bounding_curve: \"meteora_dynamic_bounding_curve\",\n bonk_fun: \"bonk_fun\",\n moonit_fun: \"moonit_fun\",\n} as const;\n\nexport type GetMigratedTokensParams = {\n /**\n * DTO.TOKEN.REQUEST.SORT_BY\n */\n sortBy?: GetMigratedTokensSortBy;\n /**\n * DTO.TOKEN.REQUEST.SORT_DIRECTION\n */\n sortDirection?: GetMigratedTokensSortDirection;\n /**\n * DTO.TOKEN.REQUEST.FILTER_BY\n */\n rangeFilters?: FilterCondition[];\n /**\n * DTO.TOKEN.REQUEST.TAG\n */\n tag?: GetMigratedTokensTag;\n /**\n * DTO.TOKEN.FILTER.FILTERS\n */\n filters?: string[];\n /**\n * DTO.TOKEN.FILTER.LAUNCHPAD_PLATFORM\n */\n launchpadPlatform?: string[];\n /**\n * DTO.TOKEN.FILTER.SEARCH_KEYWORDS\n */\n searchKeywords?: string[];\n /**\n * DTO.TOKEN.FILTER.EXCLUDE_KEYWORDS\n */\n excludeKeywords?: string[];\n};\n\nexport type GetMigratedTokensSortBy =\n (typeof GetMigratedTokensSortBy)[keyof typeof GetMigratedTokensSortBy];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetMigratedTokensSortBy = {\n marketDatapriceInUsd: \"marketData.priceInUsd\",\n statspriceChangeRatioInUsd1m: \"stats.priceChangeRatioInUsd1m\",\n statspriceChangeRatioInUsd5m: \"stats.priceChangeRatioInUsd5m\",\n statspriceChangeRatioInUsd1h: \"stats.priceChangeRatioInUsd1h\",\n statspriceChangeRatioInUsd4h: \"stats.priceChangeRatioInUsd4h\",\n statspriceChangeRatioInUsd24h: \"stats.priceChangeRatioInUsd24h\",\n marketDatamarketCapInUsd: \"marketData.marketCapInUsd\",\n marketDatamaxPoolTvlInUsd: \"marketData.maxPoolTvlInUsd\",\n marketDatatotalTvlInUsd: \"marketData.totalTvlInUsd\",\n marketDatatop10TotalHoldings: \"marketData.top10TotalHoldings\",\n marketDatatop10HoldingsRatio: \"marketData.top10HoldingsRatio\",\n marketDatatop100TotalHoldings: \"marketData.top100TotalHoldings\",\n marketDatatop100HoldingsRatio: \"marketData.top100HoldingsRatio\",\n marketDataholders: \"marketData.holders\",\n marketDatacreatorHoldings: \"marketData.creatorHoldings\",\n marketDatacreatorHoldingsRatio: \"marketData.creatorHoldingsRatio\",\n statsbuys1m: \"stats.buys1m\",\n statsbuys5m: \"stats.buys5m\",\n statsbuys15m: \"stats.buys15m\",\n statsbuys30m: \"stats.buys30m\",\n statsbuys1h: \"stats.buys1h\",\n statsbuys4h: \"stats.buys4h\",\n statsbuys24h: \"stats.buys24h\",\n statssells1m: \"stats.sells1m\",\n statssells5m: \"stats.sells5m\",\n statssells15m: \"stats.sells15m\",\n statssells30m: \"stats.sells30m\",\n statssells1h: \"stats.sells1h\",\n statssells4h: \"stats.sells4h\",\n statssells24h: \"stats.sells24h\",\n statstrades1m: \"stats.trades1m\",\n statstrades5m: \"stats.trades5m\",\n statstrades1h: \"stats.trades1h\",\n statstrades4h: \"stats.trades4h\",\n statstrades24h: \"stats.trades24h\",\n statstraders1m: \"stats.traders1m\",\n statstraders5m: \"stats.traders5m\",\n statstraders1h: \"stats.traders1h\",\n statstraders4h: \"stats.traders4h\",\n statstraders24h: \"stats.traders24h\",\n statsvolumesInUsd1m: \"stats.volumesInUsd1m\",\n statsvolumesInUsd5m: \"stats.volumesInUsd5m\",\n statsvolumesInUsd1h: \"stats.volumesInUsd1h\",\n statsvolumesInUsd4h: \"stats.volumesInUsd4h\",\n statsvolumesInUsd24h: \"stats.volumesInUsd24h\",\n tokenCreatedAt: \"tokenCreatedAt\",\n} as const;\n\nexport type GetMigratedTokensSortDirection =\n (typeof GetMigratedTokensSortDirection)[keyof typeof GetMigratedTokensSortDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetMigratedTokensSortDirection = {\n ASC: \"ASC\",\n DESC: \"DESC\",\n} as const;\n\nexport type GetMigratedTokensTag = (typeof GetMigratedTokensTag)[keyof typeof GetMigratedTokensTag];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetMigratedTokensTag = {\n pump_fun: \"pump_fun\",\n raydium_launchpad: \"raydium_launchpad\",\n meteora_dynamic_bounding_curve: \"meteora_dynamic_bounding_curve\",\n bonk_fun: \"bonk_fun\",\n moonit_fun: \"moonit_fun\",\n} as const;\n\nexport type GetPnlParams = {\n /**\n * GLOBAL.TOKENADDRESS.DESCRIPTION\n */\n tokenAddress?: string;\n};\n\nexport type GetBalanceParams = {\n /**\n * DTO.WALLET.BALANCE.QUERY.TOKEN_ADDRESS\n */\n tokenAddress?: string;\n};\n\nexport type GetBalanceUpdatesParams = {\n /**\n * DTO.WALLET.BALANCE_UPDATE.QUERY.TOKEN_ADDRESS\n */\n tokenAddress?: string;\n /**\n * DTO.WALLET.BALANCE_UPDATE.QUERY.TIME_FROM\n */\n timeFrom?: number;\n /**\n * DTO.WALLET.BALANCE_UPDATE.QUERY.TIME_TO\n */\n timeTo?: number;\n /**\n * DTO.WALLET.BALANCE_UPDATE.QUERY.TYPE\n */\n type?: BalanceTokenType;\n /**\n * DTO.WALLET.BALANCE_UPDATE.QUERY.CHANGE_TYPE\n */\n changeType?: BalanceChangeType;\n /**\n * DTO.PAGE.CURSOR\n */\n cursor?: string;\n /**\n * DTO.PAGE.LIMIT\n */\n limit?: number;\n};\n\nexport type GetClaimsParams = {\n /**\n * DTO.RED_PACKET.CURSOR\n */\n cursor?: string;\n /**\n * DTO.RED_PACKET.LIMIT\n */\n limit?: number;\n /**\n * DTO.RED_PACKET.DIRECTION\n */\n direction?: string;\n};\n\nexport type GetRedpacketsParams = {\n /**\n * DTO.RED_PACKET.CURSOR\n */\n cursor?: string;\n /**\n * DTO.RED_PACKET.LIMIT\n */\n limit?: number;\n /**\n * DTO.RED_PACKET.DIRECTION\n */\n direction?: string;\n /**\n * DTO.RED_PACKET.CREATOR\n */\n creator?: string;\n /**\n * DTO.RED_PACKET.CHAIN\n */\n chain?: GetRedpacketsChain;\n};\n\nexport type GetRedpacketsChain = (typeof GetRedpacketsChain)[keyof typeof GetRedpacketsChain];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetRedpacketsChain = {\n sol: \"sol\",\n bsc: \"bsc\",\n eth: \"eth\",\n} as const;\n\nexport type GetClaimsByAddressParams = {\n /**\n * DTO.RED_PACKET.CURSOR\n */\n cursor?: string;\n /**\n * DTO.RED_PACKET.LIMIT\n */\n limit?: number;\n /**\n * DTO.RED_PACKET.DIRECTION\n */\n direction?: string;\n};\n\nexport type GetRedpacketsByAddressParams = {\n /**\n * DTO.RED_PACKET.CURSOR\n */\n cursor?: string;\n /**\n * DTO.RED_PACKET.LIMIT\n */\n limit?: number;\n /**\n * DTO.RED_PACKET.DIRECTION\n */\n direction?: string;\n};\n\nexport type ListEndpointsParams = {\n /**\n * DTO.ENDPOINT.LIMIT\n */\n limit?: number;\n /**\n * DTO.ENDPOINT.ITERATOR\n */\n iterator?: string;\n /**\n * DTO.ENDPOINT.ORDER\n */\n order?: ListEndpointsOrder;\n};\n\nexport type ListEndpointsOrder = (typeof ListEndpointsOrder)[keyof typeof ListEndpointsOrder];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ListEndpointsOrder = {\n ascending: \"ascending\",\n descending: \"descending\",\n} as const;\n"],"mappings":"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","names":["WsTokenActivityType","WsChannelType","WsMetricType","WsRankingType","WsDex"]}
|