@chainstream-io/sdk 0.1.26 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/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 +2626 -7633
- 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 +2462 -7635
- package/dist/index.mjs.map +1 -1
- package/dist/stream/index.cjs +751 -1126
- 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 +746 -1121
- package/dist/stream/index.mjs.map +1 -1
- package/package.json +64 -9
- package/README.md +0 -46
- package/dist/WatchlistApi-XN9Rn27y.d.cts +0 -10111
- package/dist/WatchlistApi-XN9Rn27y.d.ts +0 -10111
- package/dist/index-Bp5yAdv7.d.ts +0 -576
- package/dist/index-CA0E_3Hp.d.cts +0 -576
- package/dist/openapi/index.cjs +0 -11164
- 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 -10535
- package/dist/openapi/index.mjs.map +0 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../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/DexPoolTokenLiquidity.ts","../src/openapi/models/DexPoolDTO.ts","../src/openapi/models/DexPoolTokenSnapshotDTO.ts","../src/openapi/models/DexPoolSnapshotDTO.ts","../src/openapi/models/DexPoolSnapshotPage.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/TokenLiquiditySnapshotDTO.ts","../src/openapi/models/TokenLiquiditySnapshotPage.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/TopTradersDTO.ts","../src/openapi/models/TopTradersPage.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"],"sourcesContent":["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.26\";\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 ChainStreamClient {\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","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 TokenMaxLiquidity,\n TokenTotalLiquidity,\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 /**\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: TokenMaxLiquidity) => void;\n filter?: string;\n }): Unsubscrible {\n const channel = `dex-token-liquidity:${chain}_${tokenAddress}`;\n return this.subscribe(channel, (data: any) =>\n callback({\n tokenAddress: data.a,\n poolAddress: data.p,\n liquidityInUsd: data.liu,\n liquidityInNative: data.lin,\n timestamp: data.ts,\n }), filter, \"subscribeTokenMaxLiquidity\");\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: TokenTotalLiquidity) => void;\n filter?: string;\n }): Unsubscrible {\n const channel = `dex-token-total-liquidity:${chain}_${tokenAddress}`;\n return this.subscribe(channel, (data: any) =>\n callback({\n tokenAddress: data.a,\n liquidityInUsd: data.liu,\n liquidityInNative: data.lin,\n poolCount: data.pc,\n timestamp: data.ts,\n }), filter, \"subscribeTokenTotalLiquidity\");\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 = \"https://api-dex.chainstream.io\".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 * Category\n * @type {string}\n * @memberof AddressExposure\n */\n category: string;\n /**\n * Value\n * @type {string}\n * @memberof AddressExposure\n */\n value: string;\n /**\n * Exposure type\n * @type {string}\n * @memberof AddressExposure\n */\n exposureType: string;\n /**\n * 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 * Address\n * @type {string}\n * @memberof AddressRiskResponseDTO\n */\n address: string;\n /**\n * Risk level\n * @type {string}\n * @memberof AddressRiskResponseDTO\n */\n risk: string;\n /**\n * Risk reason\n * @type {string}\n * @memberof AddressRiskResponseDTO\n */\n riskReason: string;\n /**\n * Address type\n * @type {string}\n * @memberof AddressRiskResponseDTO\n */\n addressType: string;\n /**\n * Cluster\n * @type {string}\n * @memberof AddressRiskResponseDTO\n */\n cluster: string;\n /**\n * Address identification list\n * @type {Array<string>}\n * @memberof AddressRiskResponseDTO\n */\n addressIdentifications: Array<string>;\n /**\n * Exposure list\n * @type {Array<AddressExposure>}\n * @memberof AddressRiskResponseDTO\n */\n exposures: Array<AddressExposure>;\n /**\n * Trigger list\n * @type {Array<string>}\n * @memberof AddressRiskResponseDTO\n */\n triggers: Array<string>;\n /**\n * 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 * Alert level\n * @type {string}\n * @memberof AlertDetail\n */\n alertLevel: string;\n /**\n * Service name\n * @type {string}\n * @memberof AlertDetail\n */\n service: string;\n /**\n * External ID\n * @type {string}\n * @memberof AlertDetail\n */\n externalId: string;\n /**\n * Alert amount\n * @type {string}\n * @memberof AlertDetail\n */\n alertAmount: string;\n /**\n * Exposure type\n * @type {string}\n * @memberof AlertDetail\n */\n exposureType: string;\n /**\n * Category ID\n * @type {number}\n * @memberof AlertDetail\n */\n categoryId: number;\n /**\n * 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 * First transaction timestamp\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 * Object type\n * @type {string}\n * @memberof AlteryaIdentification\n */\n object: string;\n /**\n * Address\n * @type {string}\n * @memberof AlteryaIdentification\n */\n address: string;\n /**\n * Blockchain network\n * @type {string}\n * @memberof AlteryaIdentification\n */\n chain: string;\n /**\n * Risk level\n * @type {string}\n * @memberof AlteryaIdentification\n */\n riskLevel: string;\n /**\n * Risk reason\n * @type {string}\n * @memberof AlteryaIdentification\n */\n reason: string;\n /**\n * Label list\n * @type {Array<string>}\n * @memberof AlteryaIdentification\n */\n labels: Array<string>;\n /**\n * On-chain activity information\n * @type {OnChainActivity}\n * @memberof AlteryaIdentification\n */\n onChainActivity: OnChainActivity;\n /**\n * 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 * Blockchain symbol\n * @type {string}\n * @memberof BlockchainDTO\n */\n symbol: string;\n /**\n * Blockchain name\n * @type {string}\n * @memberof BlockchainDTO\n */\n name: string;\n /**\n * Blockchain explorer URL\n * @type {string}\n * @memberof BlockchainDTO\n */\n explorerUrl: string;\n /**\n * 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 * Latest block hash\n * @type {string}\n * @memberof BlockchainLatestBlockDTO\n */\n blockhash: string;\n /**\n * 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 * Success status\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 * List of token addresses to calculate PNL for\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 * Opening price\n * @type {string}\n * @memberof Candle\n */\n open: string;\n /**\n * Closing price\n * @type {string}\n * @memberof Candle\n */\n close: string;\n /**\n * Highest price\n * @type {string}\n * @memberof Candle\n */\n high: string;\n /**\n * Lowest price\n * @type {string}\n * @memberof Candle\n */\n low: string;\n /**\n * Trading volume\n * @type {string}\n * @memberof Candle\n */\n volume: string;\n /**\n * Time resolution for candle data. Note: 1s resolution data is only kept for the last 1 hour; 15s and 30s resolution data is kept for the last 6 hours; 1m resolution data is kept for the last 12 hours; data for other resolutions is stored permanently\n * @type {Resolution}\n * @memberof Candle\n */\n resolution: Resolution;\n /**\n * Candle timestamp (Unix epoch in milliseconds)\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 * Address name\n * @type {string}\n * @memberof ChainalysisAddressIdentification\n */\n addressName: string;\n /**\n * Description information\n * @type {string}\n * @memberof ChainalysisAddressIdentification\n */\n description: string;\n /**\n * 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 * Blockchain network\n * @type {string}\n * @memberof ClaimRedPacketInput\n */\n chain: ClaimRedPacketInputChainEnum;\n /**\n * Unique identifier of the red packet\n * @type {string}\n * @memberof ClaimRedPacketInput\n */\n packetId?: string;\n /**\n * redpacket share id\n * @type {string}\n * @memberof ClaimRedPacketInput\n */\n shareId?: string;\n /**\n * Optional password to claim the red packet\n * @type {string}\n * @memberof ClaimRedPacketInput\n */\n password?: string;\n /**\n * Wallet address of the 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 * Endpoint channels\n * @type {Array<string>}\n * @memberof CreateEndpointInput\n */\n channels?: Array<string>;\n /**\n * Endpoint description\n * @type {string}\n * @memberof CreateEndpointInput\n */\n description?: string;\n /**\n * Endpoint disabled status\n * @type {boolean}\n * @memberof CreateEndpointInput\n */\n disabled?: boolean;\n /**\n * Filter types\n * @type {Array<string>}\n * @memberof CreateEndpointInput\n */\n filterTypes?: Array<string>;\n /**\n * Endpoint metadata\n * @type {object}\n * @memberof CreateEndpointInput\n */\n metadata?: object;\n /**\n * Rate limit\n * @type {number}\n * @memberof CreateEndpointInput\n */\n rateLimit?: number;\n /**\n * Endpoint URL\n * @type {string}\n * @memberof CreateEndpointInput\n */\n url?: string;\n /**\n * 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 * Blockchain network\n * @type {string}\n * @memberof CreateRedPacketInput\n */\n chain: CreateRedPacketInputChainEnum;\n /**\n * Creator wallet address of the red packet\n * @type {string}\n * @memberof CreateRedPacketInput\n */\n creator: string;\n /**\n * Token mint address for the red packet\n * @type {string}\n * @memberof CreateRedPacketInput\n */\n mint: string;\n /**\n * Maximum number of recipients\n * @type {number}\n * @memberof CreateRedPacketInput\n */\n maxClaims: number;\n /**\n * Total amount of tokens to be distributed\n * @type {string}\n * @memberof CreateRedPacketInput\n */\n totalAmount?: string;\n /**\n * Fixed amount per claim (for equal distribution)\n * @type {string}\n * @memberof CreateRedPacketInput\n */\n fixedAmount?: string;\n /**\n * Optional memo message for the red packet\n * @type {string}\n * @memberof CreateRedPacketInput\n */\n memo?: string;\n /**\n * Optional password to claim the red packet\n * @type {string}\n * @memberof CreateRedPacketInput\n */\n password?: string;\n /**\n * Optional authority address that can claim the red packet\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 * Base64 encoded transaction\n * @type {string}\n * @memberof CreateRedPacketReply\n */\n txSerialize: string;\n /**\n * redpacket 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 * DEX identifier for the trade\n * @type {string}\n * @memberof CreateTokenInput\n */\n dex: CreateTokenInputDexEnum;\n /**\n * Public key of the wallet initiating the transaction\n * @type {string}\n * @memberof CreateTokenInput\n */\n userAddress: string;\n /**\n * Priority fee in SOL to increase transaction processing speed\n * @type {string}\n * @memberof CreateTokenInput\n */\n priorityFee?: string;\n /**\n * Name of the token to be created\n * @type {string}\n * @memberof CreateTokenInput\n */\n name: string;\n /**\n * Token symbol/ticker\n * @type {string}\n * @memberof CreateTokenInput\n */\n symbol: string;\n /**\n * URI for token metadata (usually points to image or JSON)\n * @type {string}\n * @memberof CreateTokenInput\n */\n uri?: string;\n /**\n * Token image URL (Base64 or HTTPS)\n * @type {string}\n * @memberof CreateTokenInput\n */\n image?: string;\n /**\n * Additional metadata about the created token\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 * Base64 encoded transaction for token creation\n * @type {string}\n * @memberof CreateTokenReply\n */\n serializedTx: string;\n /**\n * Token mint address that requires signature for the transaction\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 * Total supply\n * @type {string}\n * @memberof TokenMarketData\n */\n totalSupply: string;\n /**\n * MarketCap in SOL\n * @type {string}\n * @memberof TokenMarketData\n */\n marketCapInSol?: string;\n /**\n * MarketCap in USD\n * @type {string}\n * @memberof TokenMarketData\n */\n marketCapInUsd: string;\n /**\n * Total holdings of top 10 holders\n * @type {string}\n * @memberof TokenMarketData\n */\n top10TotalHoldings?: string;\n /**\n * Ratio of holdings by top 10 holders\n * @type {string}\n * @memberof TokenMarketData\n */\n top10HoldingsRatio?: string;\n /**\n * Total holdings of top 100 holders\n * @type {string}\n * @memberof TokenMarketData\n */\n top100TotalHoldings?: string;\n /**\n * Ratio of holdings by top 100 holders\n * @type {string}\n * @memberof TokenMarketData\n */\n top100HoldingsRatio?: string;\n /**\n * Total number of token holders\n * @type {string}\n * @memberof TokenMarketData\n */\n holders: string;\n /**\n * Price in SOL\n * @type {string}\n * @memberof TokenMarketData\n */\n priceInSol?: string;\n /**\n * Price in USD\n * @type {string}\n * @memberof TokenMarketData\n */\n priceInUsd: string;\n /**\n * TVL of the largest pool in SOL\n * @type {string}\n * @memberof TokenMarketData\n */\n maxPoolTvlInSol?: string;\n /**\n * TVL of the largest pool in USD\n * @type {string}\n * @memberof TokenMarketData\n */\n maxPoolTvlInUsd?: string;\n /**\n * Total TVL across all pools in SOL\n * @type {string}\n * @memberof TokenMarketData\n */\n totalTvlInSol: string;\n /**\n * Total TVL across all pools in USD\n * @type {string}\n * @memberof TokenMarketData\n */\n totalTvlInUsd: string;\n /**\n * Graduation completion progress\n * @type {string}\n * @memberof TokenMarketData\n */\n completionRatio?: string;\n /**\n * Total holdings of top 50 holders\n * @type {string}\n * @memberof TokenMarketData\n */\n top50TotalHoldings?: string;\n /**\n * Ratio of holdings by top 50 holders\n * @type {string}\n * @memberof TokenMarketData\n */\n top50HoldingsRatio?: string;\n /**\n * Total number of bluechip holders\n * @type {string}\n * @memberof TokenMarketData\n */\n bluechipTotalHolders?: string;\n /**\n * Total holdings of bluechip holders\n * @type {string}\n * @memberof TokenMarketData\n */\n bluechipTotalHoldings?: string;\n /**\n * Ratio of holdings by bluechip holders\n * @type {string}\n * @memberof TokenMarketData\n */\n bluechipHoldingsRatio?: string;\n /**\n * Total number of KOL holders\n * @type {string}\n * @memberof TokenMarketData\n */\n kolTotalHolders?: string;\n /**\n * Total holdings of KOL holders\n * @type {string}\n * @memberof TokenMarketData\n */\n kolTotalHoldings?: string;\n /**\n * Ratio of holdings by KOL holders\n * @type {string}\n * @memberof TokenMarketData\n */\n kolHoldingsRatio?: string;\n /**\n * Total number of sniper holders\n * @type {string}\n * @memberof TokenMarketData\n */\n sniperTotalHolders?: string;\n /**\n * Total holdings of sniper holders\n * @type {string}\n * @memberof TokenMarketData\n */\n sniperTotalHoldings?: string;\n /**\n * Ratio of holdings by sniper holders\n * @type {string}\n * @memberof TokenMarketData\n */\n sniperHoldingsRatio?: string;\n /**\n * Total number of pro holders\n * @type {string}\n * @memberof TokenMarketData\n */\n proTotalHolders?: string;\n /**\n * Total holdings of pro holders\n * @type {string}\n * @memberof TokenMarketData\n */\n proTotalHoldings?: string;\n /**\n * Ratio of holdings by pro holders\n * @type {string}\n * @memberof TokenMarketData\n */\n proHoldingsRatio?: string;\n /**\n * Total number of insider holders\n * @type {string}\n * @memberof TokenMarketData\n */\n insiderTotalHolders?: string;\n /**\n * Total holdings of insider holders\n * @type {string}\n * @memberof TokenMarketData\n */\n insiderTotalHoldings?: string;\n /**\n * Ratio of holdings by insider holders\n * @type {string}\n * @memberof TokenMarketData\n */\n insiderHoldingsRatio?: string;\n /**\n * Total number of sandwish holders\n * @type {string}\n * @memberof TokenMarketData\n */\n sandwishTotalHolders?: string;\n /**\n * Total holdings of sandwish holders\n * @type {string}\n * @memberof TokenMarketData\n */\n sandwishTotalHoldings?: string;\n /**\n * Ratio of holdings by sandwish holders\n * @type {string}\n * @memberof TokenMarketData\n */\n sandwishHoldingsRatio?: string;\n /**\n * Total number of fresh holders\n * @type {string}\n * @memberof TokenMarketData\n */\n freshTotalHolders?: string;\n /**\n * Total holdings of fresh holders\n * @type {string}\n * @memberof TokenMarketData\n */\n freshTotalHoldings?: string;\n /**\n * Ratio of holdings by fresh holders\n * @type {string}\n * @memberof TokenMarketData\n */\n freshHoldingsRatio?: string;\n /**\n * Total number of bundle holders\n * @type {string}\n * @memberof TokenMarketData\n */\n bundleTotalHolders?: string;\n /**\n * Total holdings of bundle holders\n * @type {string}\n * @memberof TokenMarketData\n */\n bundleTotalHoldings?: string;\n /**\n * Ratio of holdings by bundle holders\n * @type {string}\n * @memberof TokenMarketData\n */\n bundleHoldingsRatio?: string;\n /**\n * Total number of dev holders\n * @type {string}\n * @memberof TokenMarketData\n */\n devTotalHolders?: string;\n /**\n * Total holdings of dev holders\n * @type {string}\n * @memberof TokenMarketData\n */\n devTotalHoldings?: string;\n /**\n * Ratio of holdings by dev holders\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 (!('totalTvlInSol' in value) || value['totalTvlInSol'] === undefined) return false;\n if (!('totalTvlInUsd' in value) || value['totalTvlInUsd'] === 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 'maxPoolTvlInSol': json['maxPoolTvlInSol'] == null ? undefined : json['maxPoolTvlInSol'],\n 'maxPoolTvlInUsd': json['maxPoolTvlInUsd'] == null ? undefined : json['maxPoolTvlInUsd'],\n 'totalTvlInSol': json['totalTvlInSol'],\n 'totalTvlInUsd': json['totalTvlInUsd'],\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 'maxPoolTvlInSol': value['maxPoolTvlInSol'],\n 'maxPoolTvlInUsd': value['maxPoolTvlInUsd'],\n 'totalTvlInSol': value['totalTvlInSol'],\n 'totalTvlInUsd': value['totalTvlInUsd'],\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 * The unique identification address of an NFT Collection\n * @type {string}\n * @memberof TokenExtraDTO\n */\n collectionAddress?: string;\n /**\n * Version number, used to identify the version or serial number of an NFT\n * @type {number}\n * @memberof TokenExtraDTO\n */\n editionNonce?: number;\n /**\n * Whether it is a convertible token: If true, it indicates that the token is convertible (such as SPL tokens, like USDC or SOL).If false, it indicates that the token is non-interchangeable (such as NFTS, each token has unique metadata)\n * @type {boolean}\n * @memberof TokenExtraDTO\n */\n fungible?: boolean;\n /**\n * Indicates whether the metadata of the token can be changed\n * @type {boolean}\n * @memberof TokenExtraDTO\n */\n isMutable?: boolean;\n /**\n * The key type of a token indicates the type or role of the token.Common values include:Mint: Indicates the minting account of the token;Metadata: Represents a Metaplex metadata account;MasterEdition: Indicates the main version of the NFT;Edition: Indicates a limited edition copy.\n * @type {string}\n * @memberof TokenExtraDTO\n */\n key?: string;\n /**\n * Indicates whether the token is native token\n * @type {boolean}\n * @memberof TokenExtraDTO\n */\n isNative?: boolean;\n /**\n * Indicates whether the NFT has completed its first sale\n * @type {boolean}\n * @memberof TokenExtraDTO\n */\n primarySaleHappened?: boolean;\n /**\n * External program address (the address that drives program_address)\n * @type {string}\n * @memberof TokenExtraDTO\n */\n launchFromProgramAddress?: string;\n /**\n * Initialized Protocol family\n * @type {string}\n * @memberof TokenExtraDTO\n */\n launchFromProtocolFamily?: string;\n /**\n * Program address\n * @type {string}\n * @memberof TokenExtraDTO\n */\n programAddress?: string;\n /**\n * Address of the migrated program after token migration\n * @type {string}\n * @memberof TokenExtraDTO\n */\n migratedToProgramAddress?: string;\n /**\n * The Protocol family migrated\n * @type {string}\n * @memberof TokenExtraDTO\n */\n migratedToProtocolFamily?: string;\n /**\n * Address of the migrated liquidity pool after token migration\n * @type {string}\n * @memberof TokenExtraDTO\n */\n migratedToPoolAddress?: string;\n /**\n * Timestamp when the token migration occurred (in milliseconds)\n * @type {number}\n * @memberof TokenExtraDTO\n */\n migratedAt?: number;\n /**\n * The seller's fee basis point indicates the royalty ratio of the creator at the time of secondary sales (in basis points, 1% = 100 basis points)\n * @type {number}\n * @memberof TokenExtraDTO\n */\n sellerFeeBasisPoints?: number;\n /**\n * The standard type of token describes the protocol or specification that the token follows\n * @type {string}\n * @memberof TokenExtraDTO\n */\n tokenStandard?: string;\n /**\n * Mint authority address\n * @type {string}\n * @memberof TokenExtraDTO\n */\n mintAuthority?: string;\n /**\n * Freeze authority address\n * @type {string}\n * @memberof TokenExtraDTO\n */\n freezeAuthority?: string;\n /**\n * Update authority address\n * @type {string}\n * @memberof TokenExtraDTO\n */\n updateAuthority?: string;\n /**\n * Indicates whether the NFT belongs to a verified collection\n * @type {boolean}\n * @memberof TokenExtraDTO\n */\n isVerifiedCollection?: boolean;\n /**\n * Indicates whether the Token is a Wrapped token (Wrapped Token)\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 * Creator wallet address\n * @type {string}\n * @memberof TokenCreatorsDTO\n */\n address?: string;\n /**\n * Creator share percentage (0-100)\n * @type {number}\n * @memberof TokenCreatorsDTO\n */\n share?: number;\n /**\n * Whether the creator 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 * Twitter account or profile link\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n twitter?: string;\n /**\n * Telegram group or channel link\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n telegram?: string;\n /**\n * Official website URL\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n website?: string;\n /**\n * TikTok account or profile link\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n tiktok?: string;\n /**\n * Discord server invite link\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n discord?: string;\n /**\n * Facebook page or profile link\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n facebook?: string;\n /**\n * GitHub repository or profile link\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n github?: string;\n /**\n * Instagram account or profile link\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n instagram?: string;\n /**\n * LinkedIn company or profile link\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n linkedin?: string;\n /**\n * Medium blog or publication link\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n medium?: string;\n /**\n * Reddit community or profile link\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n reddit?: string;\n /**\n * YouTube channel or video link\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n youtube?: string;\n /**\n * Bitbucket repository or profile link\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 * Blockchain network identifier\n * @type {string}\n * @memberof TokenMetadata\n */\n chain: string;\n /**\n * Token decimals\n * @type {number}\n * @memberof TokenMetadata\n */\n decimals: number;\n /**\n * Token name\n * @type {string}\n * @memberof TokenMetadata\n */\n name: string;\n /**\n * Token symbol\n * @type {string}\n * @memberof TokenMetadata\n */\n symbol: string;\n /**\n * Metadata program address\n * @type {string}\n * @memberof TokenMetadata\n */\n metadataAddress?: string;\n /**\n * Token mint address\n * @type {string}\n * @memberof TokenMetadata\n */\n address: string;\n /**\n * Token creator addresses\n * @type {Array<TokenCreatorsDTO>}\n * @memberof TokenMetadata\n */\n tokenCreators?: Array<TokenCreatorsDTO>;\n /**\n * Token image URL\n * @type {string}\n * @memberof TokenMetadata\n */\n imageUrl?: string;\n /**\n * Metadata URI\n * @type {string}\n * @memberof TokenMetadata\n */\n uri?: string;\n /**\n * Additional metadata\n * @type {TokenExtraDTO}\n * @memberof TokenMetadata\n */\n extra?: TokenExtraDTO;\n /**\n * Social media links\n * @type {TokenSocialMediasDTO}\n * @memberof TokenMetadata\n */\n socialMedias?: TokenSocialMediasDTO;\n /**\n * Token creation timestamp\n * @type {number}\n * @memberof TokenMetadata\n */\n tokenCreatedAt?: number;\n /**\n * Token description\n * @type {string}\n * @memberof TokenMetadata\n */\n description?: string;\n /**\n * Total number of tokens created by dev\n * @type {string}\n * @memberof TokenMetadata\n */\n devTotalTokens?: string;\n /**\n * Timestamp of the last token created by dev\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 * Token contract address\n * @type {string}\n * @memberof TokenStat\n */\n address: string;\n /**\n * Token price in the last 1 minute\n * @type {string}\n * @memberof TokenStat\n */\n price1m: string;\n /**\n * Number of buy orders in the last 1 minute\n * @type {string}\n * @memberof TokenStat\n */\n buys1m: string;\n /**\n * Number of sell orders in the last 1 minute\n * @type {string}\n * @memberof TokenStat\n */\n sells1m: string;\n /**\n * Total buy volume in the last 1 minute\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumes1m: string;\n /**\n * Total sell volume in the last 1 minute\n * @type {string}\n * @memberof TokenStat\n */\n sellsVolumes1m: string;\n /**\n * Total trading volume in the last 1 minutes\n * @type {string}\n * @memberof TokenStat\n */\n volumes1m: string;\n /**\n * 1m buy volume in USD\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumesInUsd1m: string;\n /**\n * 1m sell volume in USD\n * @type {string}\n * @memberof TokenStat\n */\n sellVolumesInUsd1m: string;\n /**\n * 1m volume in USD\n * @type {string}\n * @memberof TokenStat\n */\n volumesInUsd1m: string;\n /**\n * Number of unique buyers in the last 1 minute\n * @type {string}\n * @memberof TokenStat\n */\n buyers1m?: string;\n /**\n * Number of unique sellers in the last 1 minute\n * @type {string}\n * @memberof TokenStat\n */\n sellers1m?: string;\n /**\n * Opening price in USD for the last 1 minute\n * @type {string}\n * @memberof TokenStat\n */\n openPriceInUsd1m: string;\n /**\n * Closing price in USD for the last 1 minute\n * @type {string}\n * @memberof TokenStat\n */\n closePriceInUsd1m: string;\n /**\n * Price change ratio in USD for the last 1 minute\n * @type {string}\n * @memberof TokenStat\n */\n priceChangeRatioInUsd1m: string;\n /**\n * Number of trades in the last 1 minute\n * @type {string}\n * @memberof TokenStat\n */\n trades1m: string;\n /**\n * Number of unique traders in the last 1 minute\n * @type {string}\n * @memberof TokenStat\n */\n traders1m?: string;\n /**\n * Highest price in USD for the last 1 minute\n * @type {string}\n * @memberof TokenStat\n */\n highInUsd1m?: string;\n /**\n * Lowest price in USD for the last 1 minute\n * @type {string}\n * @memberof TokenStat\n */\n lowInUsd1m?: string;\n /**\n * Token price in the last 5 minutes\n * @type {string}\n * @memberof TokenStat\n */\n price5m: string;\n /**\n * Number of buy orders in the last 5 minutes\n * @type {string}\n * @memberof TokenStat\n */\n buys5m: string;\n /**\n * Number of sell orders in the last 5 minutes\n * @type {string}\n * @memberof TokenStat\n */\n sells5m: string;\n /**\n * Total buy volume in the last 5 minutes\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumes5m: string;\n /**\n * Total sell volume in the last 5 minutes\n * @type {string}\n * @memberof TokenStat\n */\n sellsVolumes5m: string;\n /**\n * Total trading volume in the last 5 minutes\n * @type {string}\n * @memberof TokenStat\n */\n volumes5m: string;\n /**\n * 5m buy volume in USD\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumesInUsd5m: string;\n /**\n * 5m sell volume in USD\n * @type {string}\n * @memberof TokenStat\n */\n sellVolumesInUsd5m: string;\n /**\n * 5m volume in USD\n * @type {string}\n * @memberof TokenStat\n */\n volumesInUsd5m: string;\n /**\n * Number of unique buyers in the last 5 minutes\n * @type {string}\n * @memberof TokenStat\n */\n buyers5m?: string;\n /**\n * Number of unique sellers in the last 5 minutes\n * @type {string}\n * @memberof TokenStat\n */\n sellers5m?: string;\n /**\n * Opening price in USD for the last 5 minutes\n * @type {string}\n * @memberof TokenStat\n */\n openPriceInUsd5m: string;\n /**\n * Closing price in USD for the last 5 minutes\n * @type {string}\n * @memberof TokenStat\n */\n closePriceInUsd5m: string;\n /**\n * Price change ratio in USD for the last 5 minutes\n * @type {string}\n * @memberof TokenStat\n */\n priceChangeRatioInUsd5m: string;\n /**\n * Number of trades in the last 5 minutes\n * @type {string}\n * @memberof TokenStat\n */\n trades5m: string;\n /**\n * Number of unique traders in the last 5 minutes\n * @type {string}\n * @memberof TokenStat\n */\n traders5m?: string;\n /**\n * Highest price in USD for the last 5 minutes\n * @type {string}\n * @memberof TokenStat\n */\n highInUsd5m?: string;\n /**\n * Lowest price in USD for the last 5 minutes\n * @type {string}\n * @memberof TokenStat\n */\n lowInUsd5m?: string;\n /**\n * Token price in the last 15 minutes\n * @type {string}\n * @memberof TokenStat\n */\n price15m?: string;\n /**\n * Number of buy orders in the last 15 minutes\n * @type {string}\n * @memberof TokenStat\n */\n buys15m?: string;\n /**\n * Number of sell orders in the last 15 minutes\n * @type {string}\n * @memberof TokenStat\n */\n sells15m?: string;\n /**\n * Total buy volume in the last 15 minutes\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumes15m?: string;\n /**\n * Total sell volume in the last 15 minutes\n * @type {string}\n * @memberof TokenStat\n */\n sellsVolumes15m?: string;\n /**\n * Total trading volume in the last 15 minutes\n * @type {string}\n * @memberof TokenStat\n */\n volumes15m?: string;\n /**\n * 15m buy volume in USD\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumesInUsd15m?: string;\n /**\n * 15m sell volume in USD\n * @type {string}\n * @memberof TokenStat\n */\n sellVolumesInUsd15m?: string;\n /**\n * 15m volume in USD\n * @type {string}\n * @memberof TokenStat\n */\n volumesInUsd15m?: string;\n /**\n * Number of unique buyers in the last 15 minutes\n * @type {string}\n * @memberof TokenStat\n */\n buyers15m?: string;\n /**\n * Number of unique sellers in the last 15 minutes\n * @type {string}\n * @memberof TokenStat\n */\n sellers15m?: string;\n /**\n * Opening price in USD for the last 15 minutes\n * @type {string}\n * @memberof TokenStat\n */\n openPriceInUsd15m?: string;\n /**\n * Closing price in USD for the last 15 minutes\n * @type {string}\n * @memberof TokenStat\n */\n closePriceInUsd15m?: string;\n /**\n * Price change ratio in USD for the last 15 minutes\n * @type {string}\n * @memberof TokenStat\n */\n priceChangeRatioInUsd15m?: string;\n /**\n * Number of trades in the last 15 minutes\n * @type {string}\n * @memberof TokenStat\n */\n trades15m?: string;\n /**\n * Number of unique traders in the last 15 minutes\n * @type {string}\n * @memberof TokenStat\n */\n traders15m?: string;\n /**\n * Highest price in USD for the last 15 minutes\n * @type {string}\n * @memberof TokenStat\n */\n highInUsd15m?: string;\n /**\n * Lowest price in USD for the last 15 minutes\n * @type {string}\n * @memberof TokenStat\n */\n lowInUsd15m?: string;\n /**\n * Token price in the last 30 minutes\n * @type {string}\n * @memberof TokenStat\n */\n price30m: string;\n /**\n * Number of buy orders in the last 30 minutes\n * @type {string}\n * @memberof TokenStat\n */\n buys30m: string;\n /**\n * Number of sell orders in the last 30 minutes\n * @type {string}\n * @memberof TokenStat\n */\n sells30m: string;\n /**\n * Total buy volume in the last 30 minutes\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumes30m: string;\n /**\n * Total sell volume in the last 30 minutes\n * @type {string}\n * @memberof TokenStat\n */\n sellsVolumes30m: string;\n /**\n * Total trading volume in the last 30 minutes\n * @type {string}\n * @memberof TokenStat\n */\n volumes30m: string;\n /**\n * 30m buy volume in USD\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumesInUsd30m: string;\n /**\n * 30m sell volume in USD\n * @type {string}\n * @memberof TokenStat\n */\n sellVolumesInUsd30m: string;\n /**\n * 30m volume in USD\n * @type {string}\n * @memberof TokenStat\n */\n volumesInUsd30m: string;\n /**\n * Number of unique buyers in the last 30 minutes\n * @type {string}\n * @memberof TokenStat\n */\n buyers30m?: string;\n /**\n * Number of unique sellers in the last 30 minutes\n * @type {string}\n * @memberof TokenStat\n */\n sellers30m?: string;\n /**\n * Opening price in USD for the last 30 minutes\n * @type {string}\n * @memberof TokenStat\n */\n openPriceInUsd30m: string;\n /**\n * Closing price in USD for the last 30 minutes\n * @type {string}\n * @memberof TokenStat\n */\n closePriceInUsd30m: string;\n /**\n * Price change ratio in USD for the last 30 minutes\n * @type {string}\n * @memberof TokenStat\n */\n priceChangeRatioInUsd30m: string;\n /**\n * Number of trades in the last 30 minutes\n * @type {string}\n * @memberof TokenStat\n */\n trades30m: string;\n /**\n * Number of unique traders in the last 30 minutes\n * @type {string}\n * @memberof TokenStat\n */\n traders30m?: string;\n /**\n * Highest price in USD for the last 30 minutes\n * @type {string}\n * @memberof TokenStat\n */\n highInUsd30m?: string;\n /**\n * Lowest price in USD for the last 30 minutes\n * @type {string}\n * @memberof TokenStat\n */\n lowInUsd30m?: string;\n /**\n * Token price in the last 1 hour\n * @type {string}\n * @memberof TokenStat\n */\n price1h: string;\n /**\n * Number of buy orders in the last 1 hour\n * @type {string}\n * @memberof TokenStat\n */\n buys1h: string;\n /**\n * Number of sell orders in the last 1 hour\n * @type {string}\n * @memberof TokenStat\n */\n sells1h: string;\n /**\n * Total buy volume in the last 1 hour\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumes1h: string;\n /**\n * Total sell volume in the last 1 hour\n * @type {string}\n * @memberof TokenStat\n */\n sellsVolumes1h: string;\n /**\n * Total trading volume in the last 1 hour\n * @type {string}\n * @memberof TokenStat\n */\n volumes1h: string;\n /**\n * 1h buy volume in USD\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumesInUsd1h: string;\n /**\n * 1h sell volume in USD\n * @type {string}\n * @memberof TokenStat\n */\n sellVolumesInUsd1h: string;\n /**\n * 1h volume in USD\n * @type {string}\n * @memberof TokenStat\n */\n volumesInUsd1h: string;\n /**\n * Number of unique buyers in the last 1 hour\n * @type {string}\n * @memberof TokenStat\n */\n buyers1h?: string;\n /**\n * Number of unique sellers in the last 1 hour\n * @type {string}\n * @memberof TokenStat\n */\n sellers1h?: string;\n /**\n * Opening price in USD for the last 1 hour\n * @type {string}\n * @memberof TokenStat\n */\n openPriceInUsd1h: string;\n /**\n * Closing price in USD for the last 1 hour\n * @type {string}\n * @memberof TokenStat\n */\n closePriceInUsd1h: string;\n /**\n * Price change ratio in USD for the last 1 hour\n * @type {string}\n * @memberof TokenStat\n */\n priceChangeRatioInUsd1h: string;\n /**\n * Number of trades in the last 1 hour\n * @type {string}\n * @memberof TokenStat\n */\n trades1h: string;\n /**\n * Number of unique traders in the last 1 hour\n * @type {string}\n * @memberof TokenStat\n */\n traders1h?: string;\n /**\n * Highest price in USD for the last 1 hour\n * @type {string}\n * @memberof TokenStat\n */\n highInUsd1h?: string;\n /**\n * Lowest price in USD for the last 1 hour\n * @type {string}\n * @memberof TokenStat\n */\n lowInUsd1h?: string;\n /**\n * Token price in the last 4 hours\n * @type {string}\n * @memberof TokenStat\n */\n price4h: string;\n /**\n * Number of buy orders in the last 4 hours\n * @type {string}\n * @memberof TokenStat\n */\n buys4h: string;\n /**\n * Number of sell orders in the last 4 hours\n * @type {string}\n * @memberof TokenStat\n */\n sells4h: string;\n /**\n * Total buy volume in the last 4 hours\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumes4h: string;\n /**\n * Total sell volume in the last 4 hours\n * @type {string}\n * @memberof TokenStat\n */\n sellsVolumes4h: string;\n /**\n * Total trading volume in the last 4 hour\n * @type {string}\n * @memberof TokenStat\n */\n volumes4h: string;\n /**\n * 4h buy volume in USD\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumesInUsd4h: string;\n /**\n * 4h sell volume in USD\n * @type {string}\n * @memberof TokenStat\n */\n sellVolumesInUsd4h: string;\n /**\n * 4h volume in USD\n * @type {string}\n * @memberof TokenStat\n */\n volumesInUsd4h: string;\n /**\n * Number of unique buyers in the last 4 hours\n * @type {string}\n * @memberof TokenStat\n */\n buyers4h?: string;\n /**\n * Number of unique sellers in the last 4 hours\n * @type {string}\n * @memberof TokenStat\n */\n sellers4h?: string;\n /**\n * Opening price in USD for the last 4 hours\n * @type {string}\n * @memberof TokenStat\n */\n openPriceInUsd4h: string;\n /**\n * Closing price in USD for the last 4 hours\n * @type {string}\n * @memberof TokenStat\n */\n closePriceInUsd4h: string;\n /**\n * Price change ratio in USD for the last 4 hours\n * @type {string}\n * @memberof TokenStat\n */\n priceChangeRatioInUsd4h: string;\n /**\n * Number of trades in the last 4 hours\n * @type {string}\n * @memberof TokenStat\n */\n trades4h: string;\n /**\n * Number of unique traders in the last 4 hours\n * @type {string}\n * @memberof TokenStat\n */\n traders4h?: string;\n /**\n * Highest price in USD for the last 4 hours\n * @type {string}\n * @memberof TokenStat\n */\n highInUsd4h?: string;\n /**\n * Lowest price in USD for the last 4 hours\n * @type {string}\n * @memberof TokenStat\n */\n lowInUsd4h?: string;\n /**\n * Token price in the last 24 hours\n * @type {string}\n * @memberof TokenStat\n */\n price24h: string;\n /**\n * Number of buy orders in the last 24 hours\n * @type {string}\n * @memberof TokenStat\n */\n buys24h: string;\n /**\n * Number of sell orders in the last 24 hours\n * @type {string}\n * @memberof TokenStat\n */\n sells24h: string;\n /**\n * Total buy volume in the last 24 hours\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumes24h: string;\n /**\n * Total sell volume in the last 24 hours\n * @type {string}\n * @memberof TokenStat\n */\n sellsVolumes24h: string;\n /**\n * Total trading volume in the last 24 hour\n * @type {string}\n * @memberof TokenStat\n */\n volumes24h: string;\n /**\n * 24h buy volume in USD\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumesInUsd24h: string;\n /**\n * 24h sell volume in USD\n * @type {string}\n * @memberof TokenStat\n */\n sellVolumesInUsd24h: string;\n /**\n * 24h volume in USD\n * @type {string}\n * @memberof TokenStat\n */\n volumesInUsd24h: string;\n /**\n * Number of unique buyers in the last 24 hours\n * @type {string}\n * @memberof TokenStat\n */\n buyers24h?: string;\n /**\n * Number of unique sellers in the last 24 hours\n * @type {string}\n * @memberof TokenStat\n */\n sellers24h?: string;\n /**\n * Opening price in USD for the last 24 hours\n * @type {string}\n * @memberof TokenStat\n */\n openPriceInUsd24h: string;\n /**\n * Closing price in USD for the last 24 hours\n * @type {string}\n * @memberof TokenStat\n */\n closePriceInUsd24h: string;\n /**\n * Price change ratio in USD for the last 24 hours\n * @type {string}\n * @memberof TokenStat\n */\n priceChangeRatioInUsd24h: string;\n /**\n * Number of trades in the last 24 hours\n * @type {string}\n * @memberof TokenStat\n */\n trades24h: string;\n /**\n * Number of unique traders in the last 24 hours\n * @type {string}\n * @memberof TokenStat\n */\n traders24h?: string;\n /**\n * Highest price in USD for the last 24 hours\n * @type {string}\n * @memberof TokenStat\n */\n highInUsd24h?: string;\n /**\n * Lowest price in USD for the last 24 hours\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 * Token address\n * @type {string}\n * @memberof DevTokenDTO\n */\n address: string;\n /**\n * Token metadata\n * @type {TokenMetadata}\n * @memberof DevTokenDTO\n */\n metadata: TokenMetadata;\n /**\n * Token market data\n * @type {TokenMarketData}\n * @memberof DevTokenDTO\n */\n marketData: TokenMarketData;\n /**\n * 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 * DEX program address\n * @type {string}\n * @memberof DexDTO\n */\n programAddress?: string;\n /**\n * DEX protocol family\n * @type {string}\n * @memberof DexDTO\n */\n protocolFamily?: string;\n /**\n * DEX logo image URL\n * @type {string}\n * @memberof DexDTO\n */\n image?: string;\n /**\n * Blockchain\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 * Indicates if there are more results\n * @type {boolean}\n * @memberof DexPage\n */\n hasNext?: boolean;\n /**\n * Indicates if there are previous results\n * @type {boolean}\n * @memberof DexPage\n */\n hasPrev?: boolean;\n /**\n * Cursor for first item in current page\n * @type {string}\n * @memberof DexPage\n */\n startCursor?: string;\n /**\n * Cursor for last item in current page\n * @type {string}\n * @memberof DexPage\n */\n endCursor?: string;\n /**\n * Total number of items\n * @type {number}\n * @memberof DexPage\n */\n total?: number;\n /**\n * Array of DEX information\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 DexPoolTokenLiquidity\n */\nexport interface DexPoolTokenLiquidity {\n /**\n * Token contract address\n * @type {string}\n * @memberof DexPoolTokenLiquidity\n */\n tokenAddress: string;\n /**\n * Token decimals\n * @type {number}\n * @memberof DexPoolTokenLiquidity\n */\n tokenDecimals: number;\n /**\n * Raw vault amount (without decimals)\n * @type {string}\n * @memberof DexPoolTokenLiquidity\n */\n vaultAmount: string;\n /**\n * Liquidity value in USD\n * @type {string}\n * @memberof DexPoolTokenLiquidity\n */\n amountInUsd: string;\n /**\n * Liquidity value in native token (e.g., SOL)\n * @type {string}\n * @memberof DexPoolTokenLiquidity\n */\n amountInNative: string;\n /**\n * Token price in USD\n * @type {string}\n * @memberof DexPoolTokenLiquidity\n */\n priceUsd: string;\n /**\n * Token price in native token\n * @type {string}\n * @memberof DexPoolTokenLiquidity\n */\n priceNative: string;\n}\n\n/**\n * Check if a given object implements the DexPoolTokenLiquidity interface.\n */\nexport function instanceOfDexPoolTokenLiquidity(value: object): value is DexPoolTokenLiquidity {\n if (!('tokenAddress' in value) || value['tokenAddress'] === undefined) return false;\n if (!('tokenDecimals' in value) || value['tokenDecimals'] === undefined) return false;\n if (!('vaultAmount' in value) || value['vaultAmount'] === undefined) return false;\n if (!('amountInUsd' in value) || value['amountInUsd'] === undefined) return false;\n if (!('amountInNative' in value) || value['amountInNative'] === undefined) return false;\n if (!('priceUsd' in value) || value['priceUsd'] === undefined) return false;\n if (!('priceNative' in value) || value['priceNative'] === undefined) return false;\n return true;\n}\n\nexport function DexPoolTokenLiquidityFromJSON(json: any): DexPoolTokenLiquidity {\n return DexPoolTokenLiquidityFromJSONTyped(json, false);\n}\n\nexport function DexPoolTokenLiquidityFromJSONTyped(json: any, ignoreDiscriminator: boolean): DexPoolTokenLiquidity {\n if (json == null) {\n return json;\n }\n return {\n \n 'tokenAddress': json['tokenAddress'],\n 'tokenDecimals': json['tokenDecimals'],\n 'vaultAmount': json['vaultAmount'],\n 'amountInUsd': json['amountInUsd'],\n 'amountInNative': json['amountInNative'],\n 'priceUsd': json['priceUsd'],\n 'priceNative': json['priceNative'],\n };\n}\n\nexport function DexPoolTokenLiquidityToJSON(json: any): DexPoolTokenLiquidity {\n return DexPoolTokenLiquidityToJSONTyped(json, false);\n}\n\nexport function DexPoolTokenLiquidityToJSONTyped(value?: DexPoolTokenLiquidity | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'tokenAddress': value['tokenAddress'],\n 'tokenDecimals': value['tokenDecimals'],\n 'vaultAmount': value['vaultAmount'],\n 'amountInUsd': value['amountInUsd'],\n 'amountInNative': value['amountInNative'],\n 'priceUsd': value['priceUsd'],\n 'priceNative': value['priceNative'],\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 { DexPoolTokenLiquidity } from './DexPoolTokenLiquidity';\nimport {\n DexPoolTokenLiquidityFromJSON,\n DexPoolTokenLiquidityFromJSONTyped,\n DexPoolTokenLiquidityToJSON,\n DexPoolTokenLiquidityToJSONTyped,\n} from './DexPoolTokenLiquidity';\n\n/**\n * \n * @export\n * @interface DexPoolDTO\n */\nexport interface DexPoolDTO {\n /**\n * DEX program address\n * @type {string}\n * @memberof DexPoolDTO\n */\n programAddress?: string;\n /**\n * DEX protocol family\n * @type {string}\n * @memberof DexPoolDTO\n */\n protocolFamily?: string;\n /**\n * DEX logo image URL\n * @type {string}\n * @memberof DexPoolDTO\n */\n image?: string;\n /**\n * Blockchain\n * @type {string}\n * @memberof DexPoolDTO\n */\n chain: string;\n /**\n * Pool address\n * @type {string}\n * @memberof DexPoolDTO\n */\n poolAddress: string;\n /**\n * DEX protocol name\n * @type {string}\n * @memberof DexPoolDTO\n */\n protocolName?: string;\n /**\n * First token in the pool\n * @type {string}\n * @memberof DexPoolDTO\n */\n tokenAAddress: string;\n /**\n * Second token in the pool\n * @type {string}\n * @memberof DexPoolDTO\n */\n tokenBAddress: string;\n /**\n * Total value locked in USD\n * @type {string}\n * @memberof DexPoolDTO\n */\n tvlInUsd?: string;\n /**\n * TVL in SOL\n * @type {string}\n * @memberof DexPoolDTO\n */\n tvlInSol?: string;\n /**\n * Pool type (0=unknown, 1=standard, 2=concentrated, 3=weighted, 4=stable)\n * @type {number}\n * @memberof DexPoolDTO\n */\n type?: DexPoolDTOTypeEnum;\n /**\n * Pool version (0=unknown, 1=V1, 2=V2, 3=V3/CLMM)\n * @type {number}\n * @memberof DexPoolDTO\n */\n version?: DexPoolDTOVersionEnum;\n /**\n * Liquidity model (0=unknown, 1=reserve_based, 2=position_based, 3=virtual, 4=shared)\n * @type {number}\n * @memberof DexPoolDTO\n */\n liquidityModel?: DexPoolDTOLiquidityModelEnum;\n /**\n * Pool fee rate (e.g., 0.003 for 0.3%)\n * @type {string}\n * @memberof DexPoolDTO\n */\n feeRate?: string;\n /**\n * Tick spacing for concentrated liquidity pools\n * @type {number}\n * @memberof DexPoolDTO\n */\n tickSpacing?: number;\n /**\n * Number of tokens in pool\n * @type {number}\n * @memberof DexPoolDTO\n */\n tokenCount?: number;\n /**\n * Block timestamp when pool was created\n * @type {string}\n * @memberof DexPoolDTO\n */\n createdBlockTimestamp?: string;\n /**\n * First token liquidity details\n * @type {DexPoolTokenLiquidity}\n * @memberof DexPoolDTO\n */\n tokenALiquidity?: DexPoolTokenLiquidity;\n /**\n * Second token liquidity details\n * @type {DexPoolTokenLiquidity}\n * @memberof DexPoolDTO\n */\n tokenBLiquidity?: DexPoolTokenLiquidity;\n}\n\n\n/**\n * @export\n */\nexport const DexPoolDTOTypeEnum = {\n NUMBER_0: 0,\n NUMBER_1: 1,\n NUMBER_2: 2,\n NUMBER_3: 3,\n NUMBER_4: 4\n} as const;\nexport type DexPoolDTOTypeEnum = typeof DexPoolDTOTypeEnum[keyof typeof DexPoolDTOTypeEnum];\n\n/**\n * @export\n */\nexport const DexPoolDTOVersionEnum = {\n NUMBER_0: 0,\n NUMBER_1: 1,\n NUMBER_2: 2,\n NUMBER_3: 3\n} as const;\nexport type DexPoolDTOVersionEnum = typeof DexPoolDTOVersionEnum[keyof typeof DexPoolDTOVersionEnum];\n\n/**\n * @export\n */\nexport const DexPoolDTOLiquidityModelEnum = {\n NUMBER_0: 0,\n NUMBER_1: 1,\n NUMBER_2: 2,\n NUMBER_3: 3,\n NUMBER_4: 4\n} as const;\nexport type DexPoolDTOLiquidityModelEnum = typeof DexPoolDTOLiquidityModelEnum[keyof typeof DexPoolDTOLiquidityModelEnum];\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 'type': json['type'] == null ? undefined : json['type'],\n 'version': json['version'] == null ? undefined : json['version'],\n 'liquidityModel': json['liquidityModel'] == null ? undefined : json['liquidityModel'],\n 'feeRate': json['feeRate'] == null ? undefined : json['feeRate'],\n 'tickSpacing': json['tickSpacing'] == null ? undefined : json['tickSpacing'],\n 'tokenCount': json['tokenCount'] == null ? undefined : json['tokenCount'],\n 'createdBlockTimestamp': json['createdBlockTimestamp'] == null ? undefined : json['createdBlockTimestamp'],\n 'tokenALiquidity': json['tokenALiquidity'] == null ? undefined : DexPoolTokenLiquidityFromJSON(json['tokenALiquidity']),\n 'tokenBLiquidity': json['tokenBLiquidity'] == null ? undefined : DexPoolTokenLiquidityFromJSON(json['tokenBLiquidity']),\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 'type': value['type'],\n 'version': value['version'],\n 'liquidityModel': value['liquidityModel'],\n 'feeRate': value['feeRate'],\n 'tickSpacing': value['tickSpacing'],\n 'tokenCount': value['tokenCount'],\n 'createdBlockTimestamp': value['createdBlockTimestamp'],\n 'tokenALiquidity': DexPoolTokenLiquidityToJSON(value['tokenALiquidity']),\n 'tokenBLiquidity': DexPoolTokenLiquidityToJSON(value['tokenBLiquidity']),\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 DexPoolTokenSnapshotDTO\n */\nexport interface DexPoolTokenSnapshotDTO {\n /**\n * Token contract address\n * @type {string}\n * @memberof DexPoolTokenSnapshotDTO\n */\n tokenAddress: string;\n /**\n * Token decimals\n * @type {number}\n * @memberof DexPoolTokenSnapshotDTO\n */\n tokenDecimals: number;\n /**\n * Raw vault amount (without decimals)\n * @type {string}\n * @memberof DexPoolTokenSnapshotDTO\n */\n vaultAmount: string;\n /**\n * Liquidity value in USD\n * @type {string}\n * @memberof DexPoolTokenSnapshotDTO\n */\n amountInUsd: string;\n /**\n * Liquidity value in native token (e.g., SOL)\n * @type {string}\n * @memberof DexPoolTokenSnapshotDTO\n */\n amountInNative: string;\n /**\n * Token price in USD\n * @type {string}\n * @memberof DexPoolTokenSnapshotDTO\n */\n priceUsd: string;\n /**\n * Token price in native token\n * @type {string}\n * @memberof DexPoolTokenSnapshotDTO\n */\n priceNative: string;\n}\n\n/**\n * Check if a given object implements the DexPoolTokenSnapshotDTO interface.\n */\nexport function instanceOfDexPoolTokenSnapshotDTO(value: object): value is DexPoolTokenSnapshotDTO {\n if (!('tokenAddress' in value) || value['tokenAddress'] === undefined) return false;\n if (!('tokenDecimals' in value) || value['tokenDecimals'] === undefined) return false;\n if (!('vaultAmount' in value) || value['vaultAmount'] === undefined) return false;\n if (!('amountInUsd' in value) || value['amountInUsd'] === undefined) return false;\n if (!('amountInNative' in value) || value['amountInNative'] === undefined) return false;\n if (!('priceUsd' in value) || value['priceUsd'] === undefined) return false;\n if (!('priceNative' in value) || value['priceNative'] === undefined) return false;\n return true;\n}\n\nexport function DexPoolTokenSnapshotDTOFromJSON(json: any): DexPoolTokenSnapshotDTO {\n return DexPoolTokenSnapshotDTOFromJSONTyped(json, false);\n}\n\nexport function DexPoolTokenSnapshotDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): DexPoolTokenSnapshotDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'tokenAddress': json['tokenAddress'],\n 'tokenDecimals': json['tokenDecimals'],\n 'vaultAmount': json['vaultAmount'],\n 'amountInUsd': json['amountInUsd'],\n 'amountInNative': json['amountInNative'],\n 'priceUsd': json['priceUsd'],\n 'priceNative': json['priceNative'],\n };\n}\n\nexport function DexPoolTokenSnapshotDTOToJSON(json: any): DexPoolTokenSnapshotDTO {\n return DexPoolTokenSnapshotDTOToJSONTyped(json, false);\n}\n\nexport function DexPoolTokenSnapshotDTOToJSONTyped(value?: DexPoolTokenSnapshotDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'tokenAddress': value['tokenAddress'],\n 'tokenDecimals': value['tokenDecimals'],\n 'vaultAmount': value['vaultAmount'],\n 'amountInUsd': value['amountInUsd'],\n 'amountInNative': value['amountInNative'],\n 'priceUsd': value['priceUsd'],\n 'priceNative': value['priceNative'],\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 { DexPoolTokenSnapshotDTO } from './DexPoolTokenSnapshotDTO';\nimport {\n DexPoolTokenSnapshotDTOFromJSON,\n DexPoolTokenSnapshotDTOFromJSONTyped,\n DexPoolTokenSnapshotDTOToJSON,\n DexPoolTokenSnapshotDTOToJSONTyped,\n} from './DexPoolTokenSnapshotDTO';\n\n/**\n * \n * @export\n * @interface DexPoolSnapshotDTO\n */\nexport interface DexPoolSnapshotDTO {\n /**\n * Pool address\n * @type {string}\n * @memberof DexPoolSnapshotDTO\n */\n poolAddress: string;\n /**\n * Actual snapshot Unix timestamp (seconds)\n * @type {number}\n * @memberof DexPoolSnapshotDTO\n */\n snapshotTime: number;\n /**\n * Total value locked in USD\n * @type {string}\n * @memberof DexPoolSnapshotDTO\n */\n tvlInUsd: string;\n /**\n * TVL in SOL\n * @type {string}\n * @memberof DexPoolSnapshotDTO\n */\n tvlInNative: string;\n /**\n * First token snapshot data\n * @type {DexPoolTokenSnapshotDTO}\n * @memberof DexPoolSnapshotDTO\n */\n tokenA: DexPoolTokenSnapshotDTO;\n /**\n * Second token snapshot data\n * @type {DexPoolTokenSnapshotDTO}\n * @memberof DexPoolSnapshotDTO\n */\n tokenB: DexPoolTokenSnapshotDTO;\n /**\n * Block height at snapshot time\n * @type {number}\n * @memberof DexPoolSnapshotDTO\n */\n blockHeight: number;\n /**\n * Block slot at snapshot time (Solana only)\n * @type {number}\n * @memberof DexPoolSnapshotDTO\n */\n blockSlot?: number;\n /**\n * Block Unix timestamp at snapshot time (seconds)\n * @type {number}\n * @memberof DexPoolSnapshotDTO\n */\n blockTimestamp: number;\n}\n\n/**\n * Check if a given object implements the DexPoolSnapshotDTO interface.\n */\nexport function instanceOfDexPoolSnapshotDTO(value: object): value is DexPoolSnapshotDTO {\n if (!('poolAddress' in value) || value['poolAddress'] === undefined) return false;\n if (!('snapshotTime' in value) || value['snapshotTime'] === undefined) return false;\n if (!('tvlInUsd' in value) || value['tvlInUsd'] === undefined) return false;\n if (!('tvlInNative' in value) || value['tvlInNative'] === undefined) return false;\n if (!('tokenA' in value) || value['tokenA'] === undefined) return false;\n if (!('tokenB' in value) || value['tokenB'] === undefined) return false;\n if (!('blockHeight' in value) || value['blockHeight'] === undefined) return false;\n if (!('blockTimestamp' in value) || value['blockTimestamp'] === undefined) return false;\n return true;\n}\n\nexport function DexPoolSnapshotDTOFromJSON(json: any): DexPoolSnapshotDTO {\n return DexPoolSnapshotDTOFromJSONTyped(json, false);\n}\n\nexport function DexPoolSnapshotDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): DexPoolSnapshotDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'poolAddress': json['poolAddress'],\n 'snapshotTime': json['snapshotTime'],\n 'tvlInUsd': json['tvlInUsd'],\n 'tvlInNative': json['tvlInNative'],\n 'tokenA': DexPoolTokenSnapshotDTOFromJSON(json['tokenA']),\n 'tokenB': DexPoolTokenSnapshotDTOFromJSON(json['tokenB']),\n 'blockHeight': json['blockHeight'],\n 'blockSlot': json['blockSlot'] == null ? undefined : json['blockSlot'],\n 'blockTimestamp': json['blockTimestamp'],\n };\n}\n\nexport function DexPoolSnapshotDTOToJSON(json: any): DexPoolSnapshotDTO {\n return DexPoolSnapshotDTOToJSONTyped(json, false);\n}\n\nexport function DexPoolSnapshotDTOToJSONTyped(value?: DexPoolSnapshotDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'poolAddress': value['poolAddress'],\n 'snapshotTime': value['snapshotTime'],\n 'tvlInUsd': value['tvlInUsd'],\n 'tvlInNative': value['tvlInNative'],\n 'tokenA': DexPoolTokenSnapshotDTOToJSON(value['tokenA']),\n 'tokenB': DexPoolTokenSnapshotDTOToJSON(value['tokenB']),\n 'blockHeight': value['blockHeight'],\n 'blockSlot': value['blockSlot'],\n 'blockTimestamp': value['blockTimestamp'],\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 { DexPoolSnapshotDTO } from './DexPoolSnapshotDTO';\nimport {\n DexPoolSnapshotDTOFromJSON,\n DexPoolSnapshotDTOFromJSONTyped,\n DexPoolSnapshotDTOToJSON,\n DexPoolSnapshotDTOToJSONTyped,\n} from './DexPoolSnapshotDTO';\n\n/**\n * \n * @export\n * @interface DexPoolSnapshotPage\n */\nexport interface DexPoolSnapshotPage {\n /**\n * Array of data items\n * @type {Array<DexPoolSnapshotDTO>}\n * @memberof DexPoolSnapshotPage\n */\n data: Array<DexPoolSnapshotDTO>;\n /**\n * Cursor for first item in current page\n * @type {string}\n * @memberof DexPoolSnapshotPage\n */\n startCursor?: string;\n /**\n * Cursor for last item in current page\n * @type {string}\n * @memberof DexPoolSnapshotPage\n */\n endCursor?: string;\n /**\n * Indicates if there are more results\n * @type {boolean}\n * @memberof DexPoolSnapshotPage\n */\n hasNext: boolean;\n /**\n * Indicates if there are previous results\n * @type {boolean}\n * @memberof DexPoolSnapshotPage\n */\n hasPrev: boolean;\n}\n\n/**\n * Check if a given object implements the DexPoolSnapshotPage interface.\n */\nexport function instanceOfDexPoolSnapshotPage(value: object): value is DexPoolSnapshotPage {\n if (!('data' in value) || value['data'] === undefined) return false;\n if (!('hasNext' in value) || value['hasNext'] === undefined) return false;\n if (!('hasPrev' in value) || value['hasPrev'] === undefined) return false;\n return true;\n}\n\nexport function DexPoolSnapshotPageFromJSON(json: any): DexPoolSnapshotPage {\n return DexPoolSnapshotPageFromJSONTyped(json, false);\n}\n\nexport function DexPoolSnapshotPageFromJSONTyped(json: any, ignoreDiscriminator: boolean): DexPoolSnapshotPage {\n if (json == null) {\n return json;\n }\n return {\n \n 'data': ((json['data'] as Array<any>).map(DexPoolSnapshotDTOFromJSON)),\n 'startCursor': json['startCursor'] == null ? undefined : json['startCursor'],\n 'endCursor': json['endCursor'] == null ? undefined : json['endCursor'],\n 'hasNext': json['hasNext'],\n 'hasPrev': json['hasPrev'],\n };\n}\n\nexport function DexPoolSnapshotPageToJSON(json: any): DexPoolSnapshotPage {\n return DexPoolSnapshotPageToJSONTyped(json, false);\n}\n\nexport function DexPoolSnapshotPageToJSONTyped(value?: DexPoolSnapshotPage | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'data': ((value['data'] as Array<any>).map(DexPoolSnapshotDTOToJSON)),\n 'startCursor': value['startCursor'],\n 'endCursor': value['endCursor'],\n 'hasNext': value['hasNext'],\n 'hasPrev': value['hasPrev'],\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 * Name\n * @type {string}\n * @memberof DirectExposureDetail\n */\n name: string;\n /**\n * 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 * Endpoint ID\n * @type {string}\n * @memberof EndpointResponse\n */\n id?: string;\n /**\n * Endpoint URL\n * @type {string}\n * @memberof EndpointResponse\n */\n url?: string;\n /**\n * Endpoint description\n * @type {string}\n * @memberof EndpointResponse\n */\n description?: string;\n /**\n * Filter types\n * @type {Array<string>}\n * @memberof EndpointResponse\n */\n filterTypes?: Array<string>;\n /**\n * Endpoint channels\n * @type {Array<string>}\n * @memberof EndpointResponse\n */\n channels?: Array<string>;\n /**\n * Endpoint disabled status\n * @type {boolean}\n * @memberof EndpointResponse\n */\n disabled?: boolean;\n /**\n * Endpoint metadata\n * @type {object}\n * @memberof EndpointResponse\n */\n metadata?: object;\n /**\n * Rate limit\n * @type {number}\n * @memberof EndpointResponse\n */\n rateLimit?: number;\n /**\n * Endpoint filter\n * @type {string}\n * @memberof EndpointResponse\n */\n filter?: string;\n /**\n * Created at\n * @type {string}\n * @memberof EndpointResponse\n */\n createdAt?: string;\n /**\n * 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 * Page data\n * @type {Array<EndpointResponse>}\n * @memberof EndpointListResponse\n */\n data?: Array<EndpointResponse>;\n /**\n * Page done\n * @type {boolean}\n * @memberof EndpointListResponse\n */\n done?: boolean;\n /**\n * Page iterator\n * @type {string}\n * @memberof EndpointListResponse\n */\n iterator?: string;\n /**\n * Previous page 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 * Success status\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 * 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 * Job state\n * @type {string}\n * @memberof JobDTO\n */\n state: string;\n /**\n * 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 * Streaming job ID\n * @type {number}\n * @memberof JobStreamingDTO\n */\n id: number;\n /**\n * 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 * Transfer network\n * @type {string}\n * @memberof KYTRegisterTransferRequest\n */\n network: KYTRegisterTransferRequestNetworkEnum;\n /**\n * Asset type\n * @type {string}\n * @memberof KYTRegisterTransferRequest\n */\n asset: string;\n /**\n * Transfer hash/transaction ID\n * @type {string}\n * @memberof KYTRegisterTransferRequest\n */\n transferReference: string;\n /**\n * Transfer 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 * Blockchain network\n * @type {string}\n * @memberof KYTRegisterWithdrawalRequest\n */\n network: KYTRegisterWithdrawalRequestNetworkEnum;\n /**\n * Asset type\n * @type {string}\n * @memberof KYTRegisterWithdrawalRequest\n */\n asset: string;\n /**\n * Withdrawal address\n * @type {string}\n * @memberof KYTRegisterWithdrawalRequest\n */\n address: string;\n /**\n * Asset amount\n * @type {string}\n * @memberof KYTRegisterWithdrawalRequest\n */\n assetAmount: string;\n /**\n * Attempt timestamp\n * @type {string}\n * @memberof KYTRegisterWithdrawalRequest\n */\n attemptTimestamp: string;\n /**\n * Asset price\n * @type {string}\n * @memberof KYTRegisterWithdrawalRequest\n */\n assetPrice?: string;\n /**\n * Asset denomination (e.g., USD)\n * @type {string}\n * @memberof KYTRegisterWithdrawalRequest\n */\n assetDenomination?: string;\n /**\n * Asset ID (optional)\n * @type {string}\n * @memberof KYTRegisterWithdrawalRequest\n */\n assetId?: string;\n /**\n * Memo information (optional)\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 * URL of the resource\n * @type {string}\n * @memberof Link\n */\n url: string;\n /**\n * Label for the link\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 * DEX identifier for the trade\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n dex: MoonshotCreateTokenInputDexEnum;\n /**\n * Public key of the wallet initiating the transaction\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n userAddress: string;\n /**\n * Priority fee in SOL to increase transaction processing speed\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n priorityFee?: string;\n /**\n * Name of the token\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n name: string;\n /**\n * Token symbol/ticker\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n symbol: string;\n /**\n * Target DEX for token migration\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n migrationDex: MoonshotCreateTokenInputMigrationDexEnum;\n /**\n * Token icon URL (Base64 or HTTPS)\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n icon: string;\n /**\n * Token description\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n description: string;\n /**\n * Social and website links\n * @type {Array<Link>}\n * @memberof MoonshotCreateTokenInput\n */\n links: Array<Link>;\n /**\n * Banner image URL (defaults to icon if not provided)\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n banner?: string;\n /**\n * Total token supply amount (in base units)\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 * Base64 encoded transaction for Moonshot token creation\n * @type {string}\n * @memberof MoonshotCreateTokenReply\n */\n serializedTx: string;\n /**\n * Additional metadata about the created Moonshot token\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 * Signed transaction in Base64 format for Moonshot token creation\n * @type {string}\n * @memberof MoonshotSubmitCreateTokenInput\n */\n signedTx: string;\n /**\n * Additional data required for Moonshot token creation transaction submission\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 * Organization 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 * DEX identifier for the trade\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n dex: PumpCreateTokenInputDexEnum;\n /**\n * Public key of the wallet initiating the transaction\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n userAddress: string;\n /**\n * Priority fee in SOL to increase transaction processing speed\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n priorityFee?: string;\n /**\n * Twitter profile URL or handle\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n twitter?: string;\n /**\n * Telegram group or channel link\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n telegram?: string;\n /**\n * Project website URL\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n website?: string;\n /**\n * Name of the token\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n name: string;\n /**\n * Token symbol/ticker\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n symbol: string;\n /**\n * Target DEX for token migration\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n migrationDex: PumpCreateTokenInputMigrationDexEnum;\n /**\n * Base64 encoded token image or image url\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n image: string;\n /**\n * Token mint address requiring signature\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n mintAddress: string;\n /**\n * Token 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 * Base64 encoded transaction\n * @type {string}\n * @memberof PumpCreateTokenReply\n */\n serializedTx: string;\n /**\n * Additional metadata about the created token\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 * Output amount\n * @type {string}\n * @memberof QuoteResponse\n */\n amountOut?: string;\n /**\n * Minimum output amount\n * @type {string}\n * @memberof QuoteResponse\n */\n minAmountOut?: string;\n /**\n * Current price\n * @type {string}\n * @memberof QuoteResponse\n */\n currentPrice?: string;\n /**\n * Execution price\n * @type {string}\n * @memberof QuoteResponse\n */\n executionPrice?: string;\n /**\n * Price impact\n * @type {string}\n * @memberof QuoteResponse\n */\n priceImpact?: string;\n /**\n * Trading 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 * Unique identifier of the red packet\n * @type {string}\n * @memberof RedPacketClaimDTO\n */\n packetId: string;\n /**\n * Blockchain network\n * @type {Chain}\n * @memberof RedPacketClaimDTO\n */\n chain: Chain;\n /**\n * Wallet address of the claimer\n * @type {string}\n * @memberof RedPacketClaimDTO\n */\n claimer: string;\n /**\n * Token mint address for the red packet\n * @type {string}\n * @memberof RedPacketClaimDTO\n */\n mint: string;\n /**\n * Claimed amount\n * @type {string}\n * @memberof RedPacketClaimDTO\n */\n amount: string;\n /**\n * Claimed time\n * @type {number}\n * @memberof RedPacketClaimDTO\n */\n claimedAt: number;\n /**\n * Creator wallet address of the red packet\n * @type {string}\n * @memberof RedPacketClaimDTO\n */\n creator: string;\n /**\n * Transaction 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 * Total number of items\n * @type {number}\n * @memberof RedPacketClaimsPage\n */\n total: number;\n /**\n * Indicates if there are more results\n * @type {boolean}\n * @memberof RedPacketClaimsPage\n */\n hasNextPage: boolean;\n /**\n * Cursor for first item in current page\n * @type {string}\n * @memberof RedPacketClaimsPage\n */\n startCursor: string;\n /**\n * Cursor for last item in current page\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 * A chain name listed in supported networks\n * @type {Chain}\n * @memberof RedPacketDTO\n */\n chain: Chain;\n /**\n * Redpacket id\n * @type {string}\n * @memberof RedPacketDTO\n */\n id: string;\n /**\n * redpacket share id\n * @type {string}\n * @memberof RedPacketDTO\n */\n shareId: string;\n /**\n * Transaction hash\n * @type {string}\n * @memberof RedPacketDTO\n */\n txHash: string;\n /**\n * Creator wallet address of the red packet\n * @type {string}\n * @memberof RedPacketDTO\n */\n creator: string;\n /**\n * Token mint address for the red packet\n * @type {string}\n * @memberof RedPacketDTO\n */\n mint: string;\n /**\n * Total amount of tokens to be distributed\n * @type {string}\n * @memberof RedPacketDTO\n */\n totalAmount: string;\n /**\n * Optional memo message for the red packet\n * @type {string}\n * @memberof RedPacketDTO\n */\n memo: string;\n /**\n * Maximum number of recipients\n * @type {number}\n * @memberof RedPacketDTO\n */\n maxClaims: number;\n /**\n * Optional authority address that can claim the red packet\n * @type {string}\n * @memberof RedPacketDTO\n */\n claimAuthority: string;\n /**\n * Whether it is completed or not\n * @type {boolean}\n * @memberof RedPacketDTO\n */\n expired: boolean;\n /**\n * redpacket expiration\n * @type {number}\n * @memberof RedPacketDTO\n */\n expiration: number;\n /**\n * Creation time\n * @type {number}\n * @memberof RedPacketDTO\n */\n createdAt: number;\n /**\n * Expiry date\n * @type {number}\n * @memberof RedPacketDTO\n */\n expiredAt: number;\n /**\n * claimed count\n * @type {number}\n * @memberof RedPacketDTO\n */\n claimedCount: number;\n /**\n * claimed amount\n * @type {string}\n * @memberof RedPacketDTO\n */\n claimedAmount: string;\n /**\n * refunded 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 * Base64 encoded transaction\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 * signed txhash\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 * 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 * Total number of items\n * @type {number}\n * @memberof RedPacketsPage\n */\n total: number;\n /**\n * Indicates if there are more results\n * @type {boolean}\n * @memberof RedPacketsPage\n */\n hasNextPage: boolean;\n /**\n * Cursor for first item in current page\n * @type {string}\n * @memberof RedPacketsPage\n */\n startCursor: string;\n /**\n * Cursor for last item in current page\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 * 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 * 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 * Base64 encoded signed transaction\n * @type {string}\n * @memberof SendTxInput\n */\n signedTx: string;\n /**\n * Transaction submission method\n * @type {string}\n * @memberof SendTxInput\n */\n submitType?: SendTxInputSubmitTypeEnum;\n /**\n * jito | direct\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 * Transaction signature/hash\n * @type {string}\n * @memberof SendTxResponse\n */\n signature: string;\n /**\n * Transaction processing time in milliseconds\n * @type {number}\n * @memberof SendTxResponse\n */\n elapsedTime: number;\n /**\n * 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 * DEX identifier for the trade\n * @type {string}\n * @memberof SwapInput\n */\n dex: SwapInputDexEnum;\n /**\n * Public key of the wallet initiating the transaction\n * @type {string}\n * @memberof SwapInput\n */\n userAddress: string;\n /**\n * Priority fee in SOL to increase transaction processing speed\n * @type {string}\n * @memberof SwapInput\n */\n priorityFee?: string;\n /**\n * DEX pool address\n * @type {string}\n * @memberof SwapInput\n */\n poolAddress?: string;\n /**\n * Amount to swap. Use \"auto\" for full balance or percentage like \"50%\"\n * @type {string}\n * @memberof SwapInput\n */\n amount: string;\n /**\n * Swap direction mode\n * @type {string}\n * @memberof SwapInput\n */\n swapMode: SwapInputSwapModeEnum;\n /**\n * Slippage tolerance percentage\n * @type {number}\n * @memberof SwapInput\n */\n slippage: number;\n /**\n * Input Mint, the base token address\n * @type {string}\n * @memberof SwapInput\n */\n inputMint?: string;\n /**\n * Ouput Mint, the quote token address\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 * Base64 encoded transaction\n * @type {string}\n * @memberof SwapReply\n */\n serializedTx: string;\n /**\n * Time taken to process the request in milliseconds\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 * DEX identifier for the trade\n * @type {string}\n * @memberof SwapRouteInput\n */\n dex: SwapRouteInputDexEnum;\n /**\n * Public key of the wallet initiating the transaction\n * @type {string}\n * @memberof SwapRouteInput\n */\n userAddress: string;\n /**\n * Priority fee in SOL to increase transaction processing speed\n * @type {string}\n * @memberof SwapRouteInput\n */\n priorityFee?: string;\n /**\n * Amount to swap. Use \"auto\" for full balance or percentage like \"50%\"\n * @type {string}\n * @memberof SwapRouteInput\n */\n amount: string;\n /**\n * Swap direction mode\n * @type {string}\n * @memberof SwapRouteInput\n */\n swapMode: SwapRouteInputSwapModeEnum;\n /**\n * Slippage tolerance percentage\n * @type {number}\n * @memberof SwapRouteInput\n */\n slippage: number;\n /**\n * Input Mint, the base token address\n * @type {string}\n * @memberof SwapRouteInput\n */\n inputMint?: string;\n /**\n * Ouput Mint, the quote token address\n * @type {string}\n * @memberof SwapRouteInput\n */\n outputMint?: string;\n /**\n * Recipient wallet address for the swap\n * @type {string}\n * @memberof SwapRouteInput\n */\n recipientAddress?: string;\n /**\n * Permit data for the swap\n * @type {string}\n * @memberof SwapRouteInput\n */\n permit?: string;\n /**\n * Swap deadline timestamp\n * @type {number}\n * @memberof SwapRouteInput\n */\n deadline?: number;\n /**\n * Tip fee in SOL to increase transaction processing speed\n * @type {string}\n * @memberof SwapRouteInput\n */\n tipFee?: string;\n /**\n * Whether to enable anti-MEV protection\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 * Original swap request parameters\n * @type {SwapRouteInput}\n * @memberof SwapRouteResponse\n */\n args: SwapRouteInput;\n /**\n * Base64 encoded transaction\n * @type {string}\n * @memberof SwapRouteResponse\n */\n serializedTx: string;\n /**\n * Detailed routing information\n * @type {object}\n * @memberof SwapRouteResponse\n */\n routeInfo: object;\n /**\n * Time taken to process the request in milliseconds\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 * Blockchain network identifier\n * @type {string}\n * @memberof Token\n */\n chain: string;\n /**\n * Token decimals\n * @type {number}\n * @memberof Token\n */\n decimals: number;\n /**\n * Token name\n * @type {string}\n * @memberof Token\n */\n name: string;\n /**\n * Token symbol\n * @type {string}\n * @memberof Token\n */\n symbol: string;\n /**\n * Metadata program address\n * @type {string}\n * @memberof Token\n */\n metadataAddress?: string;\n /**\n * Token mint address\n * @type {string}\n * @memberof Token\n */\n address: string;\n /**\n * Token creator addresses\n * @type {Array<TokenCreatorsDTO>}\n * @memberof Token\n */\n tokenCreators?: Array<TokenCreatorsDTO>;\n /**\n * Token image URL\n * @type {string}\n * @memberof Token\n */\n imageUrl?: string;\n /**\n * Metadata URI\n * @type {string}\n * @memberof Token\n */\n uri?: string;\n /**\n * Additional metadata\n * @type {TokenExtraDTO}\n * @memberof Token\n */\n extra?: TokenExtraDTO;\n /**\n * Social media links\n * @type {TokenSocialMediasDTO}\n * @memberof Token\n */\n socialMedias?: TokenSocialMediasDTO;\n /**\n * Token creation timestamp\n * @type {number}\n * @memberof Token\n */\n tokenCreatedAt?: number;\n /**\n * Token description\n * @type {string}\n * @memberof Token\n */\n description?: string;\n /**\n * Total number of tokens created by dev\n * @type {string}\n * @memberof Token\n */\n devTotalTokens?: string;\n /**\n * Timestamp of the last token created by dev\n * @type {string}\n * @memberof Token\n */\n devLastTokenCreatedAt?: string;\n /**\n * Market identifier\n * @type {string}\n * @memberof Token\n */\n market?: string;\n /**\n * Additional token metadata\n * @type {object}\n * @memberof Token\n */\n extension?: object;\n /**\n * Token stats\n * @type {TokenStat}\n * @memberof Token\n */\n stats?: TokenStat;\n /**\n * Liquidity\n * @type {Array<DexPoolDTO>}\n * @memberof Token\n */\n liquidity?: Array<DexPoolDTO>;\n /**\n * Market cap\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 * Token contract address\n * @type {string}\n * @memberof TokenCreationDTO\n */\n tokenAddress: string;\n /**\n * Block height when token was created\n * @type {number}\n * @memberof TokenCreationDTO\n */\n blockHeight: number;\n /**\n * Block slot when token was created\n * @type {number}\n * @memberof TokenCreationDTO\n */\n blockSlot: number;\n /**\n * Block hash when token was created\n * @type {string}\n * @memberof TokenCreationDTO\n */\n blockHash: string;\n /**\n * Block timestamp when token was created\n * @type {number}\n * @memberof TokenCreationDTO\n */\n blockTimestamp?: number;\n /**\n * Transaction signature for token creation\n * @type {string}\n * @memberof TokenCreationDTO\n */\n transactionSignature: string;\n /**\n * Type of token operation (create, mint, or burn)\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 * Indicates if there are more results\n * @type {boolean}\n * @memberof TokenCreationPage\n */\n hasNext?: boolean;\n /**\n * Indicates if there are previous results\n * @type {boolean}\n * @memberof TokenCreationPage\n */\n hasPrev?: boolean;\n /**\n * Cursor for first item in current page\n * @type {string}\n * @memberof TokenCreationPage\n */\n startCursor?: string;\n /**\n * Cursor for last item in current page\n * @type {string}\n * @memberof TokenCreationPage\n */\n endCursor?: string;\n /**\n * Total number of items\n * @type {number}\n * @memberof TokenCreationPage\n */\n total?: number;\n /**\n * Array of token creation 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 * Wallet address\n * @type {string}\n * @memberof TokenHolder\n */\n walletAddress: string;\n /**\n * Amount\n * @type {string}\n * @memberof TokenHolder\n */\n amount: string;\n /**\n * Amount in USD\n * @type {string}\n * @memberof TokenHolder\n */\n amountInUsd: string;\n /**\n * 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 * Indicates if there are more results\n * @type {boolean}\n * @memberof TokenHolderPage\n */\n hasNext?: boolean;\n /**\n * Indicates if there are previous results\n * @type {boolean}\n * @memberof TokenHolderPage\n */\n hasPrev?: boolean;\n /**\n * Cursor for first item in current page\n * @type {string}\n * @memberof TokenHolderPage\n */\n startCursor?: string;\n /**\n * Cursor for last item in current page\n * @type {string}\n * @memberof TokenHolderPage\n */\n endCursor?: string;\n /**\n * Total number of items\n * @type {number}\n * @memberof TokenHolderPage\n */\n total?: number;\n /**\n * Array of token holder 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';\n/**\n * \n * @export\n * @interface TokenLiquiditySnapshotDTO\n */\nexport interface TokenLiquiditySnapshotDTO {\n /**\n * Actual snapshot Unix timestamp (seconds)\n * @type {number}\n * @memberof TokenLiquiditySnapshotDTO\n */\n snapshotTime: number;\n /**\n * Pool address with maximum liquidity\n * @type {string}\n * @memberof TokenLiquiditySnapshotDTO\n */\n maxLiquidityPoolAddress: string;\n /**\n * Maximum single pool liquidity in USD\n * @type {string}\n * @memberof TokenLiquiditySnapshotDTO\n */\n maxLiquidityInUsd: string;\n /**\n * Maximum single pool liquidity in native token\n * @type {string}\n * @memberof TokenLiquiditySnapshotDTO\n */\n maxLiquidityInNative: string;\n /**\n * Total liquidity across all pools in USD\n * @type {string}\n * @memberof TokenLiquiditySnapshotDTO\n */\n totalLiquidityInUsd: string;\n /**\n * Total liquidity across all pools in native token\n * @type {string}\n * @memberof TokenLiquiditySnapshotDTO\n */\n totalLiquidityInNative: string;\n /**\n * Number of pools for this token\n * @type {number}\n * @memberof TokenLiquiditySnapshotDTO\n */\n poolCount: number;\n /**\n * Token price in USD at snapshot time\n * @type {string}\n * @memberof TokenLiquiditySnapshotDTO\n */\n priceUsd: string;\n /**\n * Token price in native token at snapshot time\n * @type {string}\n * @memberof TokenLiquiditySnapshotDTO\n */\n priceNative: string;\n /**\n * Unix timestamp when liquidity was calculated (seconds)\n * @type {number}\n * @memberof TokenLiquiditySnapshotDTO\n */\n calculatedAt: number;\n}\n\n/**\n * Check if a given object implements the TokenLiquiditySnapshotDTO interface.\n */\nexport function instanceOfTokenLiquiditySnapshotDTO(value: object): value is TokenLiquiditySnapshotDTO {\n if (!('snapshotTime' in value) || value['snapshotTime'] === undefined) return false;\n if (!('maxLiquidityPoolAddress' in value) || value['maxLiquidityPoolAddress'] === undefined) return false;\n if (!('maxLiquidityInUsd' in value) || value['maxLiquidityInUsd'] === undefined) return false;\n if (!('maxLiquidityInNative' in value) || value['maxLiquidityInNative'] === undefined) return false;\n if (!('totalLiquidityInUsd' in value) || value['totalLiquidityInUsd'] === undefined) return false;\n if (!('totalLiquidityInNative' in value) || value['totalLiquidityInNative'] === undefined) return false;\n if (!('poolCount' in value) || value['poolCount'] === undefined) return false;\n if (!('priceUsd' in value) || value['priceUsd'] === undefined) return false;\n if (!('priceNative' in value) || value['priceNative'] === undefined) return false;\n if (!('calculatedAt' in value) || value['calculatedAt'] === undefined) return false;\n return true;\n}\n\nexport function TokenLiquiditySnapshotDTOFromJSON(json: any): TokenLiquiditySnapshotDTO {\n return TokenLiquiditySnapshotDTOFromJSONTyped(json, false);\n}\n\nexport function TokenLiquiditySnapshotDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenLiquiditySnapshotDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'snapshotTime': json['snapshotTime'],\n 'maxLiquidityPoolAddress': json['maxLiquidityPoolAddress'],\n 'maxLiquidityInUsd': json['maxLiquidityInUsd'],\n 'maxLiquidityInNative': json['maxLiquidityInNative'],\n 'totalLiquidityInUsd': json['totalLiquidityInUsd'],\n 'totalLiquidityInNative': json['totalLiquidityInNative'],\n 'poolCount': json['poolCount'],\n 'priceUsd': json['priceUsd'],\n 'priceNative': json['priceNative'],\n 'calculatedAt': json['calculatedAt'],\n };\n}\n\nexport function TokenLiquiditySnapshotDTOToJSON(json: any): TokenLiquiditySnapshotDTO {\n return TokenLiquiditySnapshotDTOToJSONTyped(json, false);\n}\n\nexport function TokenLiquiditySnapshotDTOToJSONTyped(value?: TokenLiquiditySnapshotDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'snapshotTime': value['snapshotTime'],\n 'maxLiquidityPoolAddress': value['maxLiquidityPoolAddress'],\n 'maxLiquidityInUsd': value['maxLiquidityInUsd'],\n 'maxLiquidityInNative': value['maxLiquidityInNative'],\n 'totalLiquidityInUsd': value['totalLiquidityInUsd'],\n 'totalLiquidityInNative': value['totalLiquidityInNative'],\n 'poolCount': value['poolCount'],\n 'priceUsd': value['priceUsd'],\n 'priceNative': value['priceNative'],\n 'calculatedAt': value['calculatedAt'],\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 { TokenLiquiditySnapshotDTO } from './TokenLiquiditySnapshotDTO';\nimport {\n TokenLiquiditySnapshotDTOFromJSON,\n TokenLiquiditySnapshotDTOFromJSONTyped,\n TokenLiquiditySnapshotDTOToJSON,\n TokenLiquiditySnapshotDTOToJSONTyped,\n} from './TokenLiquiditySnapshotDTO';\n\n/**\n * \n * @export\n * @interface TokenLiquiditySnapshotPage\n */\nexport interface TokenLiquiditySnapshotPage {\n /**\n * Array of data items\n * @type {Array<TokenLiquiditySnapshotDTO>}\n * @memberof TokenLiquiditySnapshotPage\n */\n data: Array<TokenLiquiditySnapshotDTO>;\n /**\n * Cursor for first item in current page\n * @type {string}\n * @memberof TokenLiquiditySnapshotPage\n */\n startCursor?: string;\n /**\n * Cursor for last item in current page\n * @type {string}\n * @memberof TokenLiquiditySnapshotPage\n */\n endCursor?: string;\n /**\n * Indicates if there are more results\n * @type {boolean}\n * @memberof TokenLiquiditySnapshotPage\n */\n hasNext: boolean;\n /**\n * Indicates if there are previous results\n * @type {boolean}\n * @memberof TokenLiquiditySnapshotPage\n */\n hasPrev: boolean;\n}\n\n/**\n * Check if a given object implements the TokenLiquiditySnapshotPage interface.\n */\nexport function instanceOfTokenLiquiditySnapshotPage(value: object): value is TokenLiquiditySnapshotPage {\n if (!('data' in value) || value['data'] === undefined) return false;\n if (!('hasNext' in value) || value['hasNext'] === undefined) return false;\n if (!('hasPrev' in value) || value['hasPrev'] === undefined) return false;\n return true;\n}\n\nexport function TokenLiquiditySnapshotPageFromJSON(json: any): TokenLiquiditySnapshotPage {\n return TokenLiquiditySnapshotPageFromJSONTyped(json, false);\n}\n\nexport function TokenLiquiditySnapshotPageFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenLiquiditySnapshotPage {\n if (json == null) {\n return json;\n }\n return {\n \n 'data': ((json['data'] as Array<any>).map(TokenLiquiditySnapshotDTOFromJSON)),\n 'startCursor': json['startCursor'] == null ? undefined : json['startCursor'],\n 'endCursor': json['endCursor'] == null ? undefined : json['endCursor'],\n 'hasNext': json['hasNext'],\n 'hasPrev': json['hasPrev'],\n };\n}\n\nexport function TokenLiquiditySnapshotPageToJSON(json: any): TokenLiquiditySnapshotPage {\n return TokenLiquiditySnapshotPageToJSONTyped(json, false);\n}\n\nexport function TokenLiquiditySnapshotPageToJSONTyped(value?: TokenLiquiditySnapshotPage | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'data': ((value['data'] as Array<any>).map(TokenLiquiditySnapshotDTOToJSON)),\n 'startCursor': value['startCursor'],\n 'endCursor': value['endCursor'],\n 'hasNext': value['hasNext'],\n 'hasPrev': value['hasPrev'],\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 * Indicates if there are more results\n * @type {boolean}\n * @memberof TokenListPage\n */\n hasNext?: boolean;\n /**\n * Indicates if there are previous results\n * @type {boolean}\n * @memberof TokenListPage\n */\n hasPrev?: boolean;\n /**\n * Cursor for first item in current page\n * @type {string}\n * @memberof TokenListPage\n */\n startCursor?: string;\n /**\n * Cursor for last item in current page\n * @type {string}\n * @memberof TokenListPage\n */\n endCursor?: string;\n /**\n * Total number of items\n * @type {number}\n * @memberof TokenListPage\n */\n total?: number;\n /**\n * Array of token 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 * Indicates if there are more results\n * @type {boolean}\n * @memberof TokenPage\n */\n hasNext?: boolean;\n /**\n * Indicates if there are previous results\n * @type {boolean}\n * @memberof TokenPage\n */\n hasPrev?: boolean;\n /**\n * Cursor for first item in current page\n * @type {string}\n * @memberof TokenPage\n */\n startCursor?: string;\n /**\n * Cursor for last item in current page\n * @type {string}\n * @memberof TokenPage\n */\n endCursor?: string;\n /**\n * Total number of items\n * @type {number}\n * @memberof TokenPage\n */\n total?: number;\n /**\n * Token count by protocol\n * @type {object}\n * @memberof TokenPage\n */\n countsByProtocols?: object;\n /**\n * Array of token 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 * Token contract address\n * @type {string}\n * @memberof TokenPriceDTO\n */\n tokenAddress: string;\n /**\n * Token price in USD\n * @type {string}\n * @memberof TokenPriceDTO\n */\n priceInUsd: string;\n /**\n * Token price in native currency (e.g., SOL)\n * @type {string}\n * @memberof TokenPriceDTO\n */\n priceInNative: string;\n /**\n * Price timestamp (Unix epoch in seconds)\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 * Indicates if there are more results\n * @type {boolean}\n * @memberof TokenPricePage\n */\n hasNext?: boolean;\n /**\n * Indicates if there are previous results\n * @type {boolean}\n * @memberof TokenPricePage\n */\n hasPrev?: boolean;\n /**\n * Cursor for first item in current page\n * @type {string}\n * @memberof TokenPricePage\n */\n startCursor?: string;\n /**\n * Cursor for last item in current page\n * @type {string}\n * @memberof TokenPricePage\n */\n endCursor?: string;\n /**\n * Total number of items\n * @type {number}\n * @memberof TokenPricePage\n */\n total?: number;\n /**\n * Array of token price 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 * Account address\n * @type {string}\n * @memberof TokenTrader\n */\n address: string;\n /**\n * Transaction signature (for trade tags)\n * @type {string}\n * @memberof TokenTrader\n */\n transactionSignature?: string;\n /**\n * Block hash\n * @type {string}\n * @memberof TokenTrader\n */\n blockHash?: string;\n /**\n * Block height\n * @type {number}\n * @memberof TokenTrader\n */\n blockHeight?: number;\n /**\n * Block slot\n * @type {number}\n * @memberof TokenTrader\n */\n blockSlot?: number;\n /**\n * Block timestamp\n * @type {Date}\n * @memberof TokenTrader\n */\n blockTimestamp?: Date;\n /**\n * Onchain created at timestamp\n * @type {object}\n * @memberof TokenTrader\n */\n onchainCreatedAt?: object;\n /**\n * Trade count\n * @type {number}\n * @memberof TokenTrader\n */\n tradeCount?: number;\n /**\n * Trade amount in native currency\n * @type {string}\n * @memberof TokenTrader\n */\n tradeAmountInNative?: string;\n /**\n * Trade amount in USD\n * @type {string}\n * @memberof TokenTrader\n */\n tradeAmountInUsd?: string;\n /**\n * Percentile rank trade count\n * @type {number}\n * @memberof TokenTrader\n */\n percentileRankTradeCount?: number;\n /**\n * Percentile rank trade amount in USD\n * @type {string}\n * @memberof TokenTrader\n */\n percentileRankTradeAmountInUsd?: string;\n /**\n * 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 TopTradersDTO\n */\nexport interface TopTradersDTO {\n /**\n * Token address for top traders query\n * @type {string}\n * @memberof TopTradersDTO\n */\n tokenAddress: string;\n /**\n * Wallet address of the trader\n * @type {string}\n * @memberof TopTradersDTO\n */\n walletAddress: string;\n /**\n * Total number of trades\n * @type {number}\n * @memberof TopTradersDTO\n */\n tradeCount: number;\n /**\n * Total trade amount\n * @type {string}\n * @memberof TopTradersDTO\n */\n tradeAmount: string;\n /**\n * Number of buy trades\n * @type {number}\n * @memberof TopTradersDTO\n */\n buyCount: number;\n /**\n * Total buy amount\n * @type {string}\n * @memberof TopTradersDTO\n */\n buyAmount: string;\n /**\n * Total buy amount in USD\n * @type {string}\n * @memberof TopTradersDTO\n */\n buyAmountInUsd: string;\n /**\n * Total buy amount in native token\n * @type {string}\n * @memberof TopTradersDTO\n */\n buyAmountInNative: string;\n /**\n * Number of sell trades\n * @type {number}\n * @memberof TopTradersDTO\n */\n sellCount: number;\n /**\n * Total sell amount\n * @type {string}\n * @memberof TopTradersDTO\n */\n sellAmount: string;\n /**\n * Total sell amount in USD\n * @type {string}\n * @memberof TopTradersDTO\n */\n sellAmountInUsd: string;\n /**\n * Total sell amount in native token\n * @type {string}\n * @memberof TopTradersDTO\n */\n sellAmountInNative: string;\n}\n\n/**\n * Check if a given object implements the TopTradersDTO interface.\n */\nexport function instanceOfTopTradersDTO(value: object): value is TopTradersDTO {\n if (!('tokenAddress' in value) || value['tokenAddress'] === undefined) return false;\n if (!('walletAddress' in value) || value['walletAddress'] === undefined) return false;\n if (!('tradeCount' in value) || value['tradeCount'] === undefined) return false;\n if (!('tradeAmount' in value) || value['tradeAmount'] === undefined) return false;\n if (!('buyCount' in value) || value['buyCount'] === 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 (!('buyAmountInNative' in value) || value['buyAmountInNative'] === undefined) return false;\n if (!('sellCount' in value) || value['sellCount'] === 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 (!('sellAmountInNative' in value) || value['sellAmountInNative'] === undefined) return false;\n return true;\n}\n\nexport function TopTradersDTOFromJSON(json: any): TopTradersDTO {\n return TopTradersDTOFromJSONTyped(json, false);\n}\n\nexport function TopTradersDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): TopTradersDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'tokenAddress': json['tokenAddress'],\n 'walletAddress': json['walletAddress'],\n 'tradeCount': json['tradeCount'],\n 'tradeAmount': json['tradeAmount'],\n 'buyCount': json['buyCount'],\n 'buyAmount': json['buyAmount'],\n 'buyAmountInUsd': json['buyAmountInUsd'],\n 'buyAmountInNative': json['buyAmountInNative'],\n 'sellCount': json['sellCount'],\n 'sellAmount': json['sellAmount'],\n 'sellAmountInUsd': json['sellAmountInUsd'],\n 'sellAmountInNative': json['sellAmountInNative'],\n };\n}\n\nexport function TopTradersDTOToJSON(json: any): TopTradersDTO {\n return TopTradersDTOToJSONTyped(json, false);\n}\n\nexport function TopTradersDTOToJSONTyped(value?: TopTradersDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'tokenAddress': value['tokenAddress'],\n 'walletAddress': value['walletAddress'],\n 'tradeCount': value['tradeCount'],\n 'tradeAmount': value['tradeAmount'],\n 'buyCount': value['buyCount'],\n 'buyAmount': value['buyAmount'],\n 'buyAmountInUsd': value['buyAmountInUsd'],\n 'buyAmountInNative': value['buyAmountInNative'],\n 'sellCount': value['sellCount'],\n 'sellAmount': value['sellAmount'],\n 'sellAmountInUsd': value['sellAmountInUsd'],\n 'sellAmountInNative': value['sellAmountInNative'],\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 { TopTradersDTO } from './TopTradersDTO';\nimport {\n TopTradersDTOFromJSON,\n TopTradersDTOFromJSONTyped,\n TopTradersDTOToJSON,\n TopTradersDTOToJSONTyped,\n} from './TopTradersDTO';\n\n/**\n * \n * @export\n * @interface TopTradersPage\n */\nexport interface TopTradersPage {\n /**\n * Indicates if there are more results\n * @type {boolean}\n * @memberof TopTradersPage\n */\n hasNext?: boolean;\n /**\n * Indicates if there are previous results\n * @type {boolean}\n * @memberof TopTradersPage\n */\n hasPrev?: boolean;\n /**\n * Cursor for first item in current page\n * @type {string}\n * @memberof TopTradersPage\n */\n startCursor?: string;\n /**\n * Cursor for last item in current page\n * @type {string}\n * @memberof TopTradersPage\n */\n endCursor?: string;\n /**\n * Total number of items\n * @type {number}\n * @memberof TopTradersPage\n */\n total?: number;\n /**\n * Array of top traders data\n * @type {Array<TopTradersDTO>}\n * @memberof TopTradersPage\n */\n data: Array<TopTradersDTO>;\n}\n\n/**\n * Check if a given object implements the TopTradersPage interface.\n */\nexport function instanceOfTopTradersPage(value: object): value is TopTradersPage {\n if (!('data' in value) || value['data'] === undefined) return false;\n return true;\n}\n\nexport function TopTradersPageFromJSON(json: any): TopTradersPage {\n return TopTradersPageFromJSONTyped(json, false);\n}\n\nexport function TopTradersPageFromJSONTyped(json: any, ignoreDiscriminator: boolean): TopTradersPage {\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(TopTradersDTOFromJSON)),\n };\n}\n\nexport function TopTradersPageToJSON(json: any): TopTradersPage {\n return TopTradersPageToJSONTyped(json, false);\n}\n\nexport function TopTradersPageToJSONTyped(value?: TopTradersPage | 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(TopTradersDTOToJSON)),\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 * Blockchain network\n * @type {string}\n * @memberof TradeDetailDTO\n */\n chain: string;\n /**\n * Block height of the trade\n * @type {number}\n * @memberof TradeDetailDTO\n */\n blockHeight: number;\n /**\n * Block timestamp\n * @type {number}\n * @memberof TradeDetailDTO\n */\n blockTimestamp: number;\n /**\n * wallet address\n * @type {string}\n * @memberof TradeDetailDTO\n */\n accountOwnerAddress: string;\n /**\n * Transaction signature\n * @type {string}\n * @memberof TradeDetailDTO\n */\n transactionSignature: string;\n /**\n * name\n * @type {string}\n * @memberof TradeDetailDTO\n */\n tokenName: string;\n /**\n * symbol\n * @type {string}\n * @memberof TradeDetailDTO\n */\n tokenSymbol: string;\n /**\n * token imageUrl\n * @type {string}\n * @memberof TradeDetailDTO\n */\n tokenImageUrl: string;\n /**\n * Token address\n * @type {string}\n * @memberof TradeDetailDTO\n */\n tokenAddress: string;\n /**\n * Pool address where the trade occurred\n * @type {string}\n * @memberof TradeDetailDTO\n */\n poolAddress: string;\n /**\n * DEX program address\n * @type {string}\n * @memberof TradeDetailDTO\n */\n dexProgramAddress: string;\n /**\n * DEX protocol family\n * @type {string}\n * @memberof TradeDetailDTO\n */\n dexProtocolFamily: string;\n /**\n * DEX logo image URL\n * @type {string}\n * @memberof TradeDetailDTO\n */\n dexImage: string;\n /**\n * Token amount\n * @type {string}\n * @memberof TradeDetailDTO\n */\n tokenAmount: string;\n /**\n * price in USD\n * @type {string}\n * @memberof TradeDetailDTO\n */\n tokenPriceInUsd: string;\n /**\n * Token amount in USD\n * @type {string}\n * @memberof TradeDetailDTO\n */\n tokenAmountInUsd: string;\n /**\n * Trade type\n * @type {string}\n * @memberof TradeDetailDTO\n */\n type: string;\n /**\n * name\n * @type {string}\n * @memberof TradeDetailDTO\n */\n sideTokenName: string;\n /**\n * symbol\n * @type {string}\n * @memberof TradeDetailDTO\n */\n sideTokenSymbol: string;\n /**\n * token imageUrl\n * @type {string}\n * @memberof TradeDetailDTO\n */\n sideTokenImageUrl: string;\n /**\n * Side token address\n * @type {string}\n * @memberof TradeDetailDTO\n */\n sideTokenAddress: string;\n /**\n * price in USD\n * @type {string}\n * @memberof TradeDetailDTO\n */\n sideTokenPriceInUsd: string;\n /**\n * Side token amount\n * @type {string}\n * @memberof TradeDetailDTO\n */\n sideTokenAmount: string;\n /**\n * Side token amount in USD\n * @type {string}\n * @memberof TradeDetailDTO\n */\n sideTokenAmountInUsd: string;\n /**\n * Trade 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 * Indicates if there are more results\n * @type {boolean}\n * @memberof TradePage\n */\n hasNext?: boolean;\n /**\n * Indicates if there are previous results\n * @type {boolean}\n * @memberof TradePage\n */\n hasPrev?: boolean;\n /**\n * Cursor for first item in current page\n * @type {string}\n * @memberof TradePage\n */\n startCursor?: string;\n /**\n * Cursor for last item in current page\n * @type {string}\n * @memberof TradePage\n */\n endCursor?: string;\n /**\n * Total number of items\n * @type {number}\n * @memberof TradePage\n */\n total?: number;\n /**\n * Array of trade 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 * Alert list\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 * Updated timestamp\n * @type {string}\n * @memberof TransferBaseResponseDTO\n */\n updatedAt: string;\n /**\n * Asset type\n * @type {string}\n * @memberof TransferBaseResponseDTO\n */\n asset: string;\n /**\n * Asset ID\n * @type {string}\n * @memberof TransferBaseResponseDTO\n */\n assetId: string;\n /**\n * Blockchain network\n * @type {string}\n * @memberof TransferBaseResponseDTO\n */\n network: string;\n /**\n * Transfer reference (transaction hash and address)\n * @type {string}\n * @memberof TransferBaseResponseDTO\n */\n transferReference: string;\n /**\n * Memo information\n * @type {string}\n * @memberof TransferBaseResponseDTO\n */\n memo: string;\n /**\n * Transaction hash\n * @type {string}\n * @memberof TransferBaseResponseDTO\n */\n tx: string;\n /**\n * Index\n * @type {number}\n * @memberof TransferBaseResponseDTO\n */\n idx: number;\n /**\n * USD amount\n * @type {string}\n * @memberof TransferBaseResponseDTO\n */\n usdAmount: string;\n /**\n * Asset amount\n * @type {string}\n * @memberof TransferBaseResponseDTO\n */\n assetAmount: string;\n /**\n * Timestamp\n * @type {string}\n * @memberof TransferBaseResponseDTO\n */\n timestamp: string;\n /**\n * Output address\n * @type {string}\n * @memberof TransferBaseResponseDTO\n */\n outputAddress: string;\n /**\n * External ID (UUID)\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 * Direct exposure information\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 * Identification count\n * @type {number}\n * @memberof TransferNetworkIdentificationsResponseDTO\n */\n count: number;\n /**\n * Network identification organization list\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 * Endpoint ID\n * @type {string}\n * @memberof UpdateEndpointInput\n */\n endpointId?: string;\n /**\n * Endpoint channels\n * @type {Array<string>}\n * @memberof UpdateEndpointInput\n */\n channels?: Array<string>;\n /**\n * Endpoint description\n * @type {string}\n * @memberof UpdateEndpointInput\n */\n description?: string;\n /**\n * Endpoint disabled status\n * @type {boolean}\n * @memberof UpdateEndpointInput\n */\n disabled?: boolean;\n /**\n * Filter types\n * @type {Array<string>}\n * @memberof UpdateEndpointInput\n */\n filterTypes?: Array<string>;\n /**\n * Endpoint metadata\n * @type {object}\n * @memberof UpdateEndpointInput\n */\n metadata?: object;\n /**\n * Rate limit\n * @type {number}\n * @memberof UpdateEndpointInput\n */\n rateLimit?: number;\n /**\n * Endpoint URL\n * @type {string}\n * @memberof UpdateEndpointInput\n */\n url?: string;\n /**\n * 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 * Token contract address\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n tokenAddress: string;\n /**\n * Token amount\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n amount: string;\n /**\n * Token amount in USD\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n valueInUsd: string;\n /**\n * Token name\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n name: string;\n /**\n * Token symbol\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n symbol: string;\n /**\n * Token logo iamgeUrl\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n imageUrl: string;\n /**\n * Price in SOL\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n priceInSol: string;\n /**\n * Price in USD\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n priceInUsd: string;\n /**\n * 24h price change ratio\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n priceChangeRatioInUsd24h: string;\n /**\n * Unrealized profit in USD\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n unrealizedProfitInUsd: string;\n /**\n * Unrealized profit ratio\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n unrealizedProfitRatio: string;\n /**\n * Position opening time\n * @type {number}\n * @memberof WalletBalanceDetailDTO\n */\n openTime: number;\n /**\n * Position closing time\n * @type {number}\n * @memberof WalletBalanceDetailDTO\n */\n closeTime: number;\n /**\n * Number of buy transactions\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n buys: string;\n /**\n * Total amount of tokens bought\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n buyAmount: string;\n /**\n * Total value of tokens bought in USD\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n buyAmountInUsd: string;\n /**\n * Number of sell transactions\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n sells: string;\n /**\n * Total amount of tokens sold\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n sellAmount: string;\n /**\n * Total value of tokens sold in USD\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n sellAmountInUsd: string;\n /**\n * Average buying price\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n averageBuyPriceInUsd: string;\n /**\n * Average selling price\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n averageSellPriceInUsd: string;\n /**\n * Realized profit in USD\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n realizedProfitInUsd: string;\n /**\n * Realized profit ratio\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n realizedProfitRatio: string;\n /**\n * Total realized profit in USD\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n totalRealizedProfitInUsd: string;\n /**\n * 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 * Total wallet value\n * @type {string}\n * @memberof WalletBalancesDTO\n */\n totalBalancesInUsd: string;\n /**\n * Total profit in USD\n * @type {string}\n * @memberof WalletBalancesDTO\n */\n totalProfitInUsd: string;\n /**\n * Wallet balance details\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 * Record identifier\n * @type {number}\n * @memberof WalletPnlDTO\n */\n id: number;\n /**\n * Blockchain network\n * @type {string}\n * @memberof WalletPnlDTO\n */\n chain: string;\n /**\n * Wallet address\n * @type {string}\n * @memberof WalletPnlDTO\n */\n walletAddress: string;\n /**\n * Token contract address\n * @type {string}\n * @memberof WalletPnlDTO\n */\n tokenAddress: string;\n /**\n * Current token price in USD\n * @type {string}\n * @memberof WalletPnlDTO\n */\n tokenPriceInUsd: string;\n /**\n * Position opening time\n * @type {number}\n * @memberof WalletPnlDTO\n */\n openTime: number;\n /**\n * Position closing time\n * @type {number}\n * @memberof WalletPnlDTO\n */\n closeTime: number;\n /**\n * Last update time\n * @type {number}\n * @memberof WalletPnlDTO\n */\n lastTime: number;\n /**\n * Current token balance\n * @type {string}\n * @memberof WalletPnlDTO\n */\n balance: string;\n /**\n * Total amount of tokens bought\n * @type {string}\n * @memberof WalletPnlDTO\n */\n buyAmount: string;\n /**\n * Total value of tokens bought in USD\n * @type {string}\n * @memberof WalletPnlDTO\n */\n buyAmountInUsd: string;\n /**\n * Number of buy transactions\n * @type {string}\n * @memberof WalletPnlDTO\n */\n buys: string;\n /**\n * Total amount of tokens sold\n * @type {string}\n * @memberof WalletPnlDTO\n */\n sellAmount: string;\n /**\n * Total value of tokens sold in USD\n * @type {string}\n * @memberof WalletPnlDTO\n */\n sellAmountInUsd: string;\n /**\n * Number of sell transactions\n * @type {string}\n * @memberof WalletPnlDTO\n */\n sells: string;\n /**\n * Average buying price\n * @type {string}\n * @memberof WalletPnlDTO\n */\n averageBuyPriceInUsd: string;\n /**\n * Average selling price\n * @type {string}\n * @memberof WalletPnlDTO\n */\n averageSellPriceInUsd: string;\n /**\n * Unrealized profit in USD\n * @type {string}\n * @memberof WalletPnlDTO\n */\n unrealizedProfitInUsd: string;\n /**\n * Unrealized profit ratio\n * @type {string}\n * @memberof WalletPnlDTO\n */\n unrealizedProfitRatio: string;\n /**\n * Realized profit in USD\n * @type {string}\n * @memberof WalletPnlDTO\n */\n realizedProfitInUsd: string;\n /**\n * Realized profit ratio\n * @type {string}\n * @memberof WalletPnlDTO\n */\n realizedProfitRatio: string;\n /**\n * Total realized profit in USD\n * @type {string}\n * @memberof WalletPnlDTO\n */\n totalRealizedProfitInUsd: string;\n /**\n * 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 * Chainalysis address identification list\n * @type {Array<ChainalysisAddressIdentification>}\n * @memberof WithdrawalAddressIdentificationsResponseDTO\n */\n chainalysisIdentifications: Array<ChainalysisAddressIdentification>;\n /**\n * Custom address list\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 * Asset type\n * @type {string}\n * @memberof WithdrawalBaseResponseDTO\n */\n asset: string;\n /**\n * Asset ID\n * @type {string}\n * @memberof WithdrawalBaseResponseDTO\n */\n assetId: string;\n /**\n * Blockchain network\n * @type {string}\n * @memberof WithdrawalBaseResponseDTO\n */\n network: string;\n /**\n * Address\n * @type {string}\n * @memberof WithdrawalBaseResponseDTO\n */\n address: string;\n /**\n * Memo information\n * @type {string}\n * @memberof WithdrawalBaseResponseDTO\n */\n memo: string;\n /**\n * Attempt identifier\n * @type {string}\n * @memberof WithdrawalBaseResponseDTO\n */\n attemptIdentifier: string;\n /**\n * Asset amount\n * @type {string}\n * @memberof WithdrawalBaseResponseDTO\n */\n assetAmount: string;\n /**\n * External ID (UUID)\n * @type {string}\n * @memberof WithdrawalBaseResponseDTO\n */\n externalId: string;\n /**\n * USD amount\n * @type {string}\n * @memberof WithdrawalBaseResponseDTO\n */\n usdAmount: string;\n /**\n * Updated timestamp\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 * Alterya identification list\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 * Get the latest block information for a specific blockchain\n * Blockchain - Latest Block\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 * Get the latest block information for a specific blockchain\n * Blockchain - Latest Block\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 * Get list of supported blockchains\n * Blockchain - List\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 * Get list of supported blockchains\n * Blockchain - List\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 * Create a new token with Moonshot protocol on Solana\n * Moonshot - Create Token\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 * Create a new token with Moonshot protocol on Solana\n * Moonshot - Create Token\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 * Submit a signed token creation transaction to finalize token creation with Moonshot\n * Moonshot - Submit Create Token\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 * Submit a signed token creation transaction to finalize token creation with Moonshot\n * Moonshot - Submit Create Token\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 * Create a new token with PumpFun protocol\n * PumpFun - Create Token\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 * Create a new token with PumpFun protocol\n * PumpFun - Create Token\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 * Create a new token on the specified DEX\n * Dex - Create Token\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 * Create a new token on the specified DEX\n * Dex - Create Token\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 * Obtain information about all DEXs on a specified blockchain.\n * Dex - List\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 * Obtain information about all DEXs on a specified blockchain.\n * Dex - List\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 * Get DEX trading quote information\n * Dex - Get Quote\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 * Get DEX trading quote information\n * Dex - Get Quote\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 * Calculate the best route for token swap considering price impact and fees. Returns the optimal path and a prepared transaction.\n * Dex - Route\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 * Calculate the best route for token swap considering price impact and fees. Returns the optimal path and a prepared transaction.\n * Dex - Route\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 * Swap parameters including input token, output token, amount and slippage\n * Dex - Swap\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 * Swap parameters including input token, output token, amount and slippage\n * Dex - Swap\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 DexPoolSnapshotPage,\n} from '../models/index';\nimport {\n ChainSymbolFromJSON,\n ChainSymbolToJSON,\n DexPoolDTOFromJSON,\n DexPoolDTOToJSON,\n DexPoolSnapshotPageFromJSON,\n DexPoolSnapshotPageToJSON,\n} from '../models/index';\n\nexport interface GetDexpoolRequest {\n chain: ChainSymbol;\n poolAddress: string;\n}\n\nexport interface GetDexpoolSnapshotsRequest {\n chain: ChainSymbol;\n poolAddress: string;\n time?: number;\n cursor?: string;\n limit?: number;\n}\n\n/**\n * \n */\nexport class DexPoolApi extends runtime.BaseAPI {\n\n /**\n * Retrieve detailed information about a specific DEX pool\n * DexPool - Detail\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 * Retrieve detailed information about a specific DEX pool\n * DexPool - Detail\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 * Retrieve historical liquidity snapshots for a specific pool. If a time parameter is provided, returns the nearest snapshot before or at that time.\n * DexPool - Liquidity Snapshots\n */\n async getDexpoolSnapshotsRaw(requestParameters: GetDexpoolSnapshotsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<DexPoolSnapshotPage>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getDexpoolSnapshots().'\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 getDexpoolSnapshots().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['time'] != null) {\n queryParameters['time'] = requestParameters['time'];\n }\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 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}/snapshots`;\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) => DexPoolSnapshotPageFromJSON(jsonValue));\n }\n\n /**\n * Retrieve historical liquidity snapshots for a specific pool. If a time parameter is provided, returns the nearest snapshot before or at that time.\n * DexPool - Liquidity Snapshots\n */\n async getDexpoolSnapshots(requestParameters: GetDexpoolSnapshotsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<DexPoolSnapshotPage> {\n const response = await this.getDexpoolSnapshotsRaw(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 * Create a new webhook endpoint\n * Endpoint - Create\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 * Create a new webhook endpoint\n * Endpoint - Create\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 * Delete a webhook endpoint\n * Endpoint - Delete\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 * Delete a webhook endpoint\n * Endpoint - Delete\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 * Get webhook endpoint details\n * Endpoint - Get\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 * Get webhook endpoint details\n * Endpoint - Get\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 * Get webhook endpoint secret\n * Endpoint - Get Secret\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 * Get webhook endpoint secret\n * Endpoint - Get Secret\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 * Get list of webhook endpoints\n * Endpoint - List\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 * Get list of webhook endpoints\n * Endpoint - List\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 * Rotate the secret key for a webhook endpoint\n * Endpoint - Rotate Secret\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 * Rotate the secret key for a webhook endpoint\n * Endpoint - Rotate Secret\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 * Update webhook endpoint configuration\n * Endpoint - Update\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 * Update webhook endpoint configuration\n * Endpoint - Update\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 * Create a Presign URL for IPFS content\n * IPFS - Presign\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 * Create a Presign URL for IPFS content\n * IPFS - Presign\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 * Retrieve the current status and result of a job by its ID\n * Job - Get\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 * Retrieve the current status and result of a job by its ID\n * Job - Get\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 * Subscribe to real-time job status updates via Server-Sent Events (SSE). The connection will remain open until the job completes or an error occurs\n * Job - Streaming\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 * Subscribe to real-time job status updates via Server-Sent Events (SSE). The connection will remain open until the job completes or an error occurs\n * Job - Streaming\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 * Retrieve risk assessment for a registered address\n * KYT - Get Address Risk\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 * Retrieve risk assessment for a registered address\n * KYT - Get Address Risk\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 * Retrieve alerts associated with a transfer\n * KYT - Get Transfer Alerts\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 * Retrieve alerts associated with a transfer\n * KYT - Get Transfer Alerts\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 * Get direct exposure information for a transfer\n * KYT - Get Transfer Direct Exposure\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 * Get direct exposure information for a transfer\n * KYT - Get Transfer Direct Exposure\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 * Get network identifications for a transfer\n * KYT - Get Transfer Network Identifications\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 * Get network identifications for a transfer\n * KYT - Get Transfer Network Identifications\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 * Retrieve summary information for a registered transfer\n * KYT - Get Transfer 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 * Retrieve summary information for a registered transfer\n * KYT - Get Transfer 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 * Get address identifications for a withdrawal\n * KYT - Get Withdrawal Address Identifications\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 * Get address identifications for a withdrawal\n * KYT - Get Withdrawal Address Identifications\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 * Retrieve alerts associated with a withdrawal\n * KYT - Get Withdrawal Alerts\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 * Retrieve alerts associated with a withdrawal\n * KYT - Get Withdrawal Alerts\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 * Get direct exposure information for a withdrawal\n * KYT - Get Withdrawal Direct Exposure\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 * Get direct exposure information for a withdrawal\n * KYT - Get Withdrawal Direct Exposure\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 * Get fraud assessment results for a withdrawal\n * KYT - Get Withdrawal Fraud Assessment\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 * Get fraud assessment results for a withdrawal\n * KYT - Get Withdrawal Fraud Assessment\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 * Get network identifications for a withdrawal\n * KYT - Get Withdrawal Network Identifications\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 * Get network identifications for a withdrawal\n * KYT - Get Withdrawal Network Identifications\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 * Retrieve summary information for a registered withdrawal\n * KYT - Get Withdrawal 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 * Retrieve summary information for a registered withdrawal\n * KYT - Get Withdrawal 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 * Register an address for KYT monitoring\n * KYT - Register Address\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 * Register an address for KYT monitoring\n * KYT - Register Address\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 * Register a transfer for KYT (Know Your Transaction) analysis\n * KYT - Register Transfer\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 * Register a transfer for KYT (Know Your Transaction) analysis\n * KYT - Register Transfer\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 * Register a withdrawal for KYT (Know Your Transaction) analysis\n * KYT - Register Withdrawal\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 * Register a withdrawal for KYT (Know Your Transaction) analysis\n * KYT - Register Withdrawal\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 * Return the finalStretch tokens\n * Ranking - FinalStretch Tokens\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 * Return the finalStretch tokens\n * Ranking - FinalStretch Tokens\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 * Retrieve a list of trending tokens\n * Ranking - Hot Tokens\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 * Retrieve a list of trending tokens\n * Ranking - Hot Tokens\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 * Return the migrated tokens\n * Ranking - Migrated Tokens\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 * Return the migrated tokens\n * Ranking - Migrated Tokens\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 * Return the latest 100 tokens\n * Ranking - New Tokens\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 * Return the latest 100 tokens\n * Ranking - New Tokens\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 * Return the stocks tokens\n * Ranking - Stocks Tokens\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 * Return the stocks tokens\n * Ranking - Stocks Tokens\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 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;\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 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;\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 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;\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 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;\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 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;\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 * Claim tokens from an existing red packet\n * RedPacket - Claim\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 * Claim tokens from an existing red packet\n * RedPacket - Claim\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 * Create a new red packet with specified amount and quantity\n * RedPacket - Create\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 * Create a new red packet with specified amount and quantity\n * RedPacket - Create\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 * Check the record of redpacket collection\n * RedPacket - GetClaims\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 * Check the record of redpacket collection\n * RedPacket - GetClaims\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 * Check the record of redpacket collection by the claimer address\n * RedPacket - GetClaimsByAddress\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 * Check the record of redpacket collection by the claimer address\n * RedPacket - GetClaimsByAddress\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 * Query redpacket information\n * RedPacket - Get\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 * Query redpacket information\n * RedPacket - Get\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 * Get the redpackets list\n * RedPacket - GetRedpackets\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 * Get the redpackets list\n * RedPacket - GetRedpackets\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 * Get the redpackets list by the creator address\n * RedPacket - GetRedpacketsByAddress\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 * Get the redpackets list by the creator address\n * RedPacket - GetRedpacketsByAddress\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 * Transactions related to redpacket\n * RedPacket - Send\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 * Transactions related to redpacket\n * RedPacket - Send\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 TokenLiquiditySnapshotPage,\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 TokenLiquiditySnapshotPageFromJSON,\n TokenLiquiditySnapshotPageToJSON,\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 GetTokenLiquiditySnapshotsRequest {\n chain: ChainSymbol;\n tokenAddress: string;\n time?: number;\n cursor?: string;\n limit?: number;\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 * Get token price candles\n * Token - Candles\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 * Get token price candles\n * Token - Candles\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 * Get token creation information\n * Token - Creation\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 * Get token creation information\n * Token - Creation\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 * Retrieve all tokens created by a specific developer address\n * Token - Get Dev Tokens\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 * Retrieve all tokens created by a specific developer address\n * Token - Get Dev Tokens\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 * Get holders of a token\n * Token - Holders\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 * Get holders of a token\n * Token - Holders\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 * Get holders information for multiple wallet addresses\n * Token - Holders (Multi)\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 * Get holders information for multiple wallet addresses\n * Token - Holders (Multi)\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 * Get the market data of a token\n * Token - Market Data\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 * Get the market data of a token\n * Token - Market Data\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 * Get market data for multiple tokens\n * Token - Market Data (Multi)\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 * Get market data for multiple tokens\n * Token - Market Data (Multi)\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 * Get metadata of token\n * Token - Metadata\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 * Get metadata of token\n * Token - Metadata\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 * Get metadata for multiple tokens\n * Token - Metadata (Multi)\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 * Get metadata for multiple tokens\n * Token - Metadata (Multi)\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 * Get mint and burn information for a token\n * Token - Mint and Burn\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 * Get mint and burn information for a token\n * Token - Mint and Burn\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 * Get all pools containing this token\n * Token - Liquidity\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 * Get all pools containing this token\n * Token - Liquidity\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 * Get token price at a specific timestamp\n * Token - Price by Time\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 * Get token price at a specific timestamp\n * Token - Price by Time\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 * Get historical price data for a token\n * Token - Prices\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 * Get historical price data for a token\n * Token - Prices\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 * Get token security information\n * Token - Security\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 * Get token security information\n * Token - Security\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 * Get token statistics\n * Token - Stats\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 * Get token statistics\n * Token - Stats\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 * Get statistics for multiple tokens\n * Token - Stats (Multi)\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 * Get statistics for multiple tokens\n * Token - Stats (Multi)\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 * Get detail of token\n * Token - Detail\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 * Get detail of token\n * Token - Detail\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 * Retrieve historical liquidity snapshots for a token. If a time parameter is provided, returns the nearest snapshot before or at that time.\n * Token - Liquidity Snapshots\n */\n async getTokenLiquiditySnapshotsRaw(requestParameters: GetTokenLiquiditySnapshotsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenLiquiditySnapshotPage>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getTokenLiquiditySnapshots().'\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 getTokenLiquiditySnapshots().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['time'] != null) {\n queryParameters['time'] = requestParameters['time'];\n }\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 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}/liquiditySnapshots`;\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) => TokenLiquiditySnapshotPageFromJSON(jsonValue));\n }\n\n /**\n * Retrieve historical liquidity snapshots for a token. If a time parameter is provided, returns the nearest snapshot before or at that time.\n * Token - Liquidity Snapshots\n */\n async getTokenLiquiditySnapshots(requestParameters: GetTokenLiquiditySnapshotsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenLiquiditySnapshotPage> {\n const response = await this.getTokenLiquiditySnapshotsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Retrieve traders for a token by tag (fresh, sandwish, bundle, sniper, dev, pro, insider)\n * Token - Get Token Traders\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 * Retrieve traders for a token by tag (fresh, sandwish, bundle, sniper, dev, pro, insider)\n * Token - Get Token Traders\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 * Get detail of tokens\n * Token - Detail (Multi)\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 * Get detail of tokens\n * Token - Detail (Multi)\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 * Get the top 20 holders for a token\n * Token - Top Holders\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 * Get the top 20 holders for a token\n * Token - Top Holders\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 * Get filtered token list with range conditions\n * Token - List (Filtered)\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 * Get filtered token list with range conditions\n * Token - List (Filtered)\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 * Search token information by criteria\n * Token - Search\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 * Search token information by criteria\n * Token - Search\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 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;\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 TopTradersPage,\n TradePage,\n} from '../models/index';\nimport {\n ChainSymbolFromJSON,\n ChainSymbolToJSON,\n TopTradersPageFromJSON,\n TopTradersPageToJSON,\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 GetTopTradersRequest {\n chain: ChainSymbol;\n tokenAddress: string;\n cursor?: string;\n limit?: number;\n direction?: GetTopTradersDirectionEnum;\n timeFrame?: GetTopTradersTimeFrameEnum;\n sortType?: GetTopTradersSortTypeEnum;\n sortBy?: GetTopTradersSortByEnum;\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 * Get token activities including trades, liquidity operations, and other token-related activities\n * Activity - List\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 * Get token activities including trades, liquidity operations, and other token-related activities\n * Activity - List\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 * Get top traders for a specific token\n * Trade - Top Traders\n */\n async getTopTradersRaw(requestParameters: GetTopTradersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TopTradersPage>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getTopTraders().'\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 getTopTraders().'\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['timeFrame'] != null) {\n queryParameters['timeFrame'] = requestParameters['timeFrame'];\n }\n\n if (requestParameters['sortType'] != null) {\n queryParameters['sortType'] = requestParameters['sortType'];\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/trade/{chain}/top-traders`;\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) => TopTradersPageFromJSON(jsonValue));\n }\n\n /**\n * Get top traders for a specific token\n * Trade - Top Traders\n */\n async getTopTraders(requestParameters: GetTopTradersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TopTradersPage> {\n const response = await this.getTopTradersRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Retrieve a list of transactions\n * Trade - List\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 * Retrieve a list of transactions\n * Trade - List\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 GetTopTradersDirectionEnum = {\n Next: 'next',\n Prev: 'prev'\n} as const;\nexport type GetTopTradersDirectionEnum = typeof GetTopTradersDirectionEnum[keyof typeof GetTopTradersDirectionEnum];\n/**\n * @export\n */\nexport const GetTopTradersTimeFrameEnum = {\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;\nexport type GetTopTradersTimeFrameEnum = typeof GetTopTradersTimeFrameEnum[keyof typeof GetTopTradersTimeFrameEnum];\n/**\n * @export\n */\nexport const GetTopTradersSortTypeEnum = {\n Desc: 'desc',\n Asc: 'asc'\n} as const;\nexport type GetTopTradersSortTypeEnum = typeof GetTopTradersSortTypeEnum[keyof typeof GetTopTradersSortTypeEnum];\n/**\n * @export\n */\nexport const GetTopTradersSortByEnum = {\n TradeAmount: 'tradeAmount',\n TradeCount: 'tradeCount'\n} as const;\nexport type GetTopTradersSortByEnum = typeof GetTopTradersSortByEnum[keyof typeof GetTopTradersSortByEnum];\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 * Estimate the gas limit required for a transaction\n * Transaction - Estimate Gas Limit\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 * Estimate the gas limit required for a transaction\n * Transaction - Estimate Gas Limit\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 * Get the current gas price for the specified chain\n * Transaction - Get Gas Price\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 * Get the current gas price for the specified chain\n * Transaction - Get Gas Price\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 * Submit a signed transaction to the blockchain\n * Transaction - Send\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 * Submit a signed transaction to the blockchain\n * Transaction - Send\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 * Calculate profit and loss for wallet tokens\n * Wallet - Calculate PNL\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 * Calculate profit and loss for wallet tokens\n * Wallet - Calculate PNL\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 * Get wallet balance information\n * Wallet - Balances\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 * Get wallet balance information\n * Wallet - Balances\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 * Get profit and loss information for wallet tokens\n * Wallet - PNL\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 * Get profit and loss information for wallet tokens\n * Wallet - PNL\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 * Get profit and loss stats for wallet\n * Wallet - PNL Stats\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 * Get profit and loss stats for wallet\n * Wallet - PNL Stats\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 * Add the wallet address to the watchlist. Only the addresses in the watchlist have PNL data\n * Watchlist - Add\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 * Add the wallet address to the watchlist. Only the addresses in the watchlist have PNL data\n * Watchlist - Add\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"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../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":["// ChainStream SDK main exports\nexport {\n ChainStreamClient,\n type ChainStreamClientOptions,\n type ChainStreamRequestContext,\n type TokenProvider,\n} from \"./chainstream.js\";\n\n// Stream API exports (WebSocket streaming)\nexport * from \"./stream/index.js\";\n\n// OpenAPI generated client exports (REST API)\nexport * from \"./openapi-client/index.js\";\n","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":["Axios","axiosRetry","WsTokenActivityType","WsChannelType","WsMetricType","WsRankingType","WsDex"]}
|