@chainstream-io/sdk 0.1.12 → 0.1.13

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/stream/stream.ts","../src/stream/stream.fields.ts","../src/openapi/runtime.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/ClaimRedPacketInput.ts","../src/openapi/models/CreateRedPacketInput.ts","../src/openapi/models/CreateRedPacketReply.ts","../src/openapi/models/CreateTokenInput.ts","../src/openapi/models/CreateTokenReply.ts","../src/openapi/models/DexDTO.ts","../src/openapi/models/DexPage.ts","../src/openapi/models/DexPoolDTO.ts","../src/openapi/models/EstimateGasLimitInput.ts","../src/openapi/models/EstimateGasLimitResponse.ts","../src/openapi/models/GainersAndLosersDTO.ts","../src/openapi/models/GainersAndLosersPage.ts","../src/openapi/models/GasPriceResponse.ts","../src/openapi/models/JobDTO.ts","../src/openapi/models/JobStreamingDTO.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/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/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/TokenMarketData.ts","../src/openapi/models/TokenExtraDTO.ts","../src/openapi/models/TokenCreatorsDTO.ts","../src/openapi/models/TokenStat.ts","../src/openapi/models/TokenSocialMediasDTO.ts","../src/openapi/models/Token.ts","../src/openapi/models/TokenCreationDTO.ts","../src/openapi/models/TokenCreationPage.ts","../src/openapi/models/TokenHolder.ts","../src/openapi/models/TokenHolderPage.ts","../src/openapi/models/TokenListPage.ts","../src/openapi/models/TokenMetadata.ts","../src/openapi/models/TokenPage.ts","../src/openapi/models/TokenPriceDTO.ts","../src/openapi/models/TokenPricePage.ts","../src/openapi/models/TopTradersDTO.ts","../src/openapi/models/TopTradersPage.ts","../src/openapi/models/TradeDetailDTO.ts","../src/openapi/models/TradePage.ts","../src/openapi/models/WalletBalanceDetailDTO.ts","../src/openapi/models/WalletBalancesDTO.ts","../src/openapi/models/WalletPnlDTO.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/IpfsApi.ts","../src/openapi/apis/JobsApi.ts","../src/openapi/apis/RankingApi.ts","../src/openapi/apis/RedPacketApi.ts","../src/openapi/apis/TokenApi.ts","../src/openapi/apis/TradeApi.ts","../src/openapi/apis/TransactionApi.ts","../src/openapi/apis/WalletApi.ts","../src/openapi/apis/WatchlistApi.ts","../src/index.ts"],"sourcesContent":["import { Centrifuge, ConnectionTokenContext } from \"@chainstream-io/centrifuge\";\nimport { DexRequestContext } from \"..\";\nimport { Resolution } from \"../openapi\";\nimport {\n DexPoolBalance,\n NewToken,\n TokenMetadata,\n TokenHolder,\n TokenStat,\n TokenLiquidity,\n WalletBalance,\n TokenSupply,\n WalletPnl,\n ChannelType,\n TokenCandle,\n TradeActivity,\n WalletTokenPnl,\n RankingType,\n Dex,\n RankingTokenList,\n TokenBondingCurve,\n} from \"./stream.model\";\nimport { replaceFilterFields } from \"./stream.fields\";\n\nexport interface Unsubscrible {\n unsubscribe(): void;\n}\n\nexport class StreamApi {\n private realtimeClient: Centrifuge;\n private listenersMap: Map<string, Set<(data: any) => void>>;\n\n constructor(context: DexRequestContext) {\n const realtimeEndpoint = context.streamUrl;\n this.realtimeClient = new Centrifuge(realtimeEndpoint, {\n getToken: async (_ctx: ConnectionTokenContext) => {\n return typeof context.accessToken === \"string\"\n ? context.accessToken\n : await context.accessToken.getToken();\n },\n });\n\n this.realtimeClient\n .on(\"connected\", () => {\n console.log(\"[streaming] connected\");\n })\n .on(\"disconnected\", (err) => {\n console.warn(\"[streaming] disconnected\", err);\n })\n .on(\"error\", (err) => {\n console.error(\"[streaming] error: \", err);\n });\n\n this.listenersMap = new Map();\n }\n\n connect() {\n this.realtimeClient.connect();\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 this.realtimeClient.startBatching();\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 this.realtimeClient.stopBatching();\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 let sub = this.realtimeClient.getSubscription(channel);\n let listeners = this.listenersMap.get(channel);\n\n if (!sub) {\n listeners = new Set();\n this.listenersMap.set(channel, listeners);\n\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 // console.log('[xrealtime] publication, ctx.data: ', ctx.data);\n listeners?.forEach((it) => it(ctx.data));\n })\n .subscribe();\n }\n\n listeners?.add(fn);\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\n const sub = this.realtimeClient.getSubscription(channel);\n if (sub) {\n sub.unsubscribe();\n this.realtimeClient.removeSubscription(sub);\n }\n\n this.listenersMap.delete(channel);\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 top100Amount: this.formatScientificNotation(data.t100a),\n top10Amount: this.formatScientificNotation(data.t10a),\n top100Holders: data.t100h,\n top10Holders: data.t10h,\n top100Ratio: this.formatScientificNotation(data.t100r),\n top10Ratio: this.formatScientificNotation(data.t10r),\n creatorsHolders: data.ch,\n creatorsAmount: this.formatScientificNotation(data.ca),\n creatorsRatio: this.formatScientificNotation(data.cr),\n timestamp: data.ts,\n }), filter, \"subscribeTokenHolders\");\n }\n\n subscribeNewToken({\n chain,\n callback,\n filter,\n }: {\n chain: string;\n callback: (data: NewToken) => void;\n filter?: string;\n }): Unsubscrible {\n const channel = `dex-new-token:${chain}`;\n return this.subscribe(channel, (data: any) => {\n const result: any = {\n tokenAddress: data.a,\n name: data.n,\n symbol: data.s,\n createdAtMs: data.cts,\n };\n \n if (data.dec) {\n result.decimals = data.dec;\n }\n \n if (data.lf) {\n result.launchFrom = {};\n if (data.lf.pa) { result.launchFrom.programAddress = data.lf.pa }\n if (data.lf.pf) { result.launchFrom.protocolFamily = data.lf.pf }\n if (data.lf.pn) { result.launchFrom.protocolName = data.lf.pn }\n }\n \n callback(result);\n }, filter, \"subscribeNewToken\");\n }\n\n subscribeNewTokensMetadata({\n chain,\n callback,\n }: {\n chain: string;\n callback: (data: TokenMetadata[]) => void;\n }): Unsubscrible {\n const channel = `dex-new-tokens-metadata:${chain}`;\n return this.subscribe(channel, (data: any[]) =>\n callback(\n data.map(\n (it: any) =>\n ({\n tokenAddress: it.a,\n name: it.n,\n symbol: it.s,\n imageUrl: it.iu,\n description: it.de,\n socialMedia: (() => {\n const socialMedia: any = {};\n if (it.sm?.tw) { socialMedia.twitter = it.sm.tw }\n if (it.sm?.tg) { socialMedia.telegram = it.sm.tg }\n if (it.sm?.w) { socialMedia.website = it.sm.w }\n if (it.sm?.tt) { socialMedia.tiktok = it.sm.tt }\n if (it.sm?.dc) { socialMedia.discord = it.sm.dc }\n if (it.sm?.fb) { socialMedia.facebook = it.sm.fb }\n if (it.sm?.gh) { socialMedia.github = it.sm.gh }\n if (it.sm?.ig) { socialMedia.instagram = it.sm.ig }\n if (it.sm?.li) { socialMedia.linkedin = it.sm.li }\n if (it.sm?.md) { socialMedia.medium = it.sm.md }\n if (it.sm?.rd) { socialMedia.reddit = it.sm.rd }\n if (it.sm?.yt) { socialMedia.youtube = it.sm.yt }\n if (it.sm?.bb) { socialMedia.bitbucket = it.sm.bb }\n return socialMedia;\n })(),\n createdAtMs: it.cts,\n })\n )\n )\n );\n }\n\n // subscribeNewTokens({\n // chain,\n // callback,\n // }: {\n // chain: string;\n // callback: (data: NewToken[]) => void;\n // }): Unsubscrible {\n // const channel = `dex-new-tokens:${chain}`;\n // return this.subscribe(channel, (data: any[]) =>\n // callback(\n // data.map(\n // (it: any) =>\n // ({\n // tokenAddress: it.a,\n // name: it.n,\n // symbol: it.s,\n // description: it.de,\n // createdAtMs: it.cts,\n // }) as NewToken\n // )\n // )\n // );\n // }\n\n subscribeTokenSupply({\n chain,\n tokenAddress,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n callback: (data: TokenSupply) => void;\n filter?: string;\n }): Unsubscrible {\n const channel = `dex-token-supply:${chain}_${tokenAddress}`;\n return this.subscribe(channel, (data: any) =>\n callback({\n tokenAddress: data.a,\n supply: data.s,\n marketCapInUsd: data.mc,\n timestamp: data.ts,\n }), filter, \"subscribeTokenSupply\");\n }\n\n subscribeTokenLiquidity({\n chain,\n tokenAddress,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n callback: (data: TokenLiquidity) => void;\n filter?: string;\n }): Unsubscrible {\n const channel = `dex-token-general-stat-num:${chain}_${tokenAddress}`;\n return this.subscribe(channel, (data: any) =>\n callback({\n tokenAddress: data.a,\n metricType: data.t,\n value: data.v,\n timestamp: data.ts,\n }), filter, \"subscribeTokenLiquidity\");\n }\n\n subscribeRankingTokensLiquidity({\n chain,\n channelType,\n callback,\n }: {\n chain: string;\n channelType: ChannelType;\n callback: (data: TokenLiquidity[]) => void;\n }): Unsubscrible {\n const channel = `dex-ranking-token-general_stat_num-list:${chain}_${channelType}`;\n return this.subscribe(channel, (data: any[]) =>\n callback(\n data?.map(\n (it: any) =>\n ({\n tokenAddress: it.a,\n metricType: it.t,\n value: it.v,\n timestamp: it.ts,\n }) as TokenLiquidity\n )\n )\n );\n }\n\n subscribeRankingTokensList({\n chain,\n ranking_type,\n dex,\n callback,\n }: {\n chain: string;\n ranking_type: RankingType;\n dex?: Dex;\n callback: (data: RankingTokenList[]) => void;\n }): Unsubscrible {\n const channel = dex\n ? `dex-ranking-list:${chain}_${ranking_type}_${dex}`\n : `dex-ranking-list:${chain}_${ranking_type}`;\n return this.subscribe(channel, (data: any[]) =>\n callback(\n data?.map((item: any) => {\n const result: RankingTokenList = {} as RankingTokenList;\n\n // TokenMetadata (t)\n if (item.t) {\n result.metadata = {\n tokenAddress: item.t.a,\n };\n if (item.t.n) { result.metadata.name = item.t.n }\n if (item.t.s) { result.metadata.symbol = item.t.s }\n if (item.t.iu) { result.metadata.imageUrl = item.t.iu }\n if (item.t.de) { result.metadata.description = item.t.de }\n if (item.t.d) { result.metadata.decimals = item.t.dec }\n if (item.t.cts) { result.metadata.createdAtMs = item.t.cts }\n if (item.t.lf) {\n result.metadata.launchFrom = {};\n if (item.t.lf.pa) { result.metadata.launchFrom.programAddress = item.t.lf.pa }\n if (item.t.lf.pf) { result.metadata.launchFrom.protocolFamily = item.t.lf.pf }\n if (item.t.lf.pn) { result.metadata.launchFrom.protocolName = item.t.lf.pn }\n }\n if (item.t.mt) {\n result.metadata.migratedTo = {};\n if (item.t.mt.pa) { result.metadata.migratedTo.programAddress = item.t.mt.pa }\n if (item.t.mt.pf) { result.metadata.migratedTo.protocolFamily = item.t.mt.pf }\n if (item.t.mt.pn) { result.metadata.migratedTo.protocolName = item.t.mt.pn }\n }\n if (item.t.sm) {\n result.metadata.socialMedia = {};\n if (item.t.sm.tw) { result.metadata.socialMedia.twitter = item.t.sm.tw }\n if (item.t.sm.tg) { result.metadata.socialMedia.telegram = item.t.sm.tg }\n if (item.t.sm.w) { result.metadata.socialMedia.website = item.t.sm.w }\n if (item.t.sm.tt) { result.metadata.socialMedia.tiktok = item.t.sm.tt }\n if (item.t.sm.dc) { result.metadata.socialMedia.discord = item.t.sm.dc }\n if (item.t.sm.fb) { result.metadata.socialMedia.facebook = item.t.sm.fb }\n if (item.t.sm.gh) { result.metadata.socialMedia.github = item.t.sm.gh }\n if (item.t.sm.ig) { result.metadata.socialMedia.instagram = item.t.sm.ig }\n if (item.t.sm.li) { result.metadata.socialMedia.linkedin = item.t.sm.li }\n if (item.t.sm.md) { result.metadata.socialMedia.medium = item.t.sm.md }\n if (item.t.sm.rd) { result.metadata.socialMedia.reddit = item.t.sm.rd }\n if (item.t.sm.yt) { result.metadata.socialMedia.youtube = item.t.sm.yt }\n if (item.t.sm.bb) { result.metadata.socialMedia.bitbucket = item.t.sm.bb }\n }\n if (item.t.cts) { result.metadata.createdAtMs = item.t.cts }\n }\n\n // TokenBondingCurve (bc)\n if (item.bc) {\n result.bondingCurve = {};\n if (item.bc.pr) { result.bondingCurve.progressRatio = this.formatScientificNotation(item.bc.pr) }\n }\n\n // TokenHolder (h)\n if (item.h) {\n result.holder = {\n tokenAddress: item.h.a,\n timestamp: item.h.ts || 0,\n };\n if (item.h.h) { result.holder.holders = item.h.h }\n if (item.h.t100a) { result.holder.top100Amount = this.formatScientificNotation(item.h.t100a) }\n if (item.h.t10a) { result.holder.top10Amount = this.formatScientificNotation(item.h.t10a) }\n if (item.h.t100h) { result.holder.top100Holders = item.h.t100h }\n if (item.h.t10h) { result.holder.top10Holders = item.h.t10h }\n if (item.h.t100r) { result.holder.top100Ratio = this.formatScientificNotation(item.h.t100r) }\n if (item.h.t10r) { result.holder.top10Ratio = this.formatScientificNotation(item.h.t10r) }\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 top100Amount: this.formatScientificNotation(it.t100a),\n top10Amount: this.formatScientificNotation(it.t10a),\n top100Holders: it.t100h,\n top10Holders: it.t10h,\n top100Ratio: this.formatScientificNotation(it.t100r),\n top10Ratio: this.formatScientificNotation(it.t10r),\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 \"top100Amount\": \"t100a\",\n \"top10Amount\": \"t10a\",\n \"top100Holders\": \"t100h\",\n \"top10Holders\": \"t10h\",\n \"top100Ratio\": \"t100r\",\n \"top10Ratio\": \"t10r\",\n \"timestamp\": \"ts\",\n },\n\n // New token subscription fields\n \"subscribeNewToken\": {\n \"tokenAddress\": \"a\",\n \"name\": \"n\",\n \"symbol\": \"s\",\n \"createdAtMs\": \"cts\",\n },\n\n // Token supply subscription fields\n \"subscribeTokenSupply\": {\n \"tokenAddress\": \"a\",\n \"supply\": \"s\",\n \"timestamp\": \"ts\",\n },\n\n // Dex pool balance subscription fields\n \"subscribeDexPoolBalance\": {\n \"poolAddress\": \"a\",\n \"tokenAAddress\": \"taa\",\n \"tokenALiquidityInUsd\": \"taliu\",\n \"tokenBAddress\": \"tba\",\n \"tokenBLiquidityInUsd\": \"tbliu\",\n },\n\n // Token liquidity subscription fields\n \"subscribeTokenLiquidity\": {\n \"tokenAddress\": \"a\",\n \"metricType\": \"t\",\n \"value\": \"v\",\n \"timestamp\": \"ts\",\n },\n\n // New token metadata subscription fields\n \"subscribeNewTokensMetadata\": {\n \"tokenAddress\": \"a\",\n \"name\": \"n\",\n \"symbol\": \"s\",\n \"imageUrl\": \"iu\",\n \"description\": \"de\",\n \"socialMedia\": \"sm\",\n \"createdAtMs\": \"cts\",\n },\n\n // Token trades subscription fields\n \"subscribeTokenTrades\": {\n \"tokenAddress\": \"a\",\n \"timestamp\": \"t\",\n \"kind\": \"k\",\n \"buyAmount\": \"ba\",\n \"buyAmountInUsd\": \"baiu\",\n \"buyTokenAddress\": \"btma\",\n \"buyTokenName\": \"btn\",\n \"buyTokenSymbol\": \"bts\",\n \"buyWalletAddress\": \"bwa\",\n \"sellAmount\": \"sa\",\n \"sellAmountInUsd\": \"saiu\",\n \"sellTokenAddress\": \"stma\",\n \"sellTokenName\": \"stn\",\n \"sellTokenSymbol\": \"sts\",\n \"sellWalletAddress\": \"swa\",\n \"txHash\": \"h\",\n },\n\n // Wallet token PnL subscription fields\n \"subscribeWalletPnl\": {\n \"walletAddress\": \"a\",\n \"tokenAddress\": \"ta\",\n \"tokenPriceInUsd\": \"tpiu\",\n \"timestamp\": \"t\",\n \"opentime\": \"ot\",\n \"lasttime\": \"lt\",\n \"closetime\": \"ct\",\n \"buyAmount\": \"ba\",\n \"buyAmountInUsd\": \"baiu\",\n \"buyCount\": \"bs\",\n \"buyCount30d\": \"bs30d\",\n \"buyCount7d\": \"bs7d\",\n \"sellAmount\": \"sa\",\n \"sellAmountInUsd\": \"saiu\",\n \"sellCount\": \"ss\",\n \"sellCount30d\": \"ss30d\",\n \"sellCount7d\": \"ss7d\",\n \"heldDurationTimestamp\": \"hdts\",\n \"averageBuyPriceInUsd\": \"abpiu\",\n \"averageSellPriceInUsd\": \"aspiu\",\n \"unrealizedProfitInUsd\": \"upiu\",\n \"unrealizedProfitRatio\": \"upr\",\n \"realizedProfitInUsd\": \"rpiu\",\n \"realizedProfitRatio\": \"rpr\",\n \"totalRealizedProfitInUsd\": \"trpiu\",\n \"totalRealizedProfitRatio\": \"trr\",\n },\n} as const;\n\n/**\n * Get field mappings for a specific subscription method\n * @param methodName - The name of the subscription method\n * @returns Field mapping object for the method, or empty object if not found\n */\nexport function getFieldMappings(methodName: string): FieldMapping {\n return CEL_FIELD_MAPPINGS[methodName] || {};\n}\n\n/**\n * Replace long field names with short field names in a filter expression\n * Automatically adds meta. prefix if not present\n * @param filter - Original filter expression\n * @param methodName - The name of the subscription method\n * @returns Filter expression with short field names and meta. prefix\n */\nexport function replaceFilterFields(filter: string, methodName: string): string {\n if (!filter) {return filter}\n \n const fieldMappings = getFieldMappings(methodName);\n let result = filter;\n \n // Replace all long field names with short field names\n for (const [longField, shortField] of Object.entries(fieldMappings)) {\n // Handle both cases: with and without meta. prefix\n const patterns = [\n // Pattern 1: fieldName (without meta. prefix)\n new RegExp(`\\\\b${longField}\\\\b`, \"g\"),\n // Pattern 2: meta.fieldName (with meta. prefix)\n new RegExp(`\\\\bmeta\\\\.${longField}\\\\b`, \"g\"),\n ];\n \n patterns.forEach((pattern) => {\n result = result.replace(pattern, `meta.${shortField}`);\n });\n }\n \n return result;\n}\n\n/**\n * Type-safe field mapping for specific subscription methods\n */\nexport type SubscriptionMethod = keyof typeof CEL_FIELD_MAPPINGS;\n\n/**\n * Get available field names for a specific subscription method\n * @param methodName - The name of the subscription method\n * @returns Array of available field names\n */\nexport function getAvailableFields(methodName: string): string[] {\n const mappings = getFieldMappings(methodName);\n return Object.keys(mappings);\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nexport const BASE_PATH = \"http://localhost\".replace(/\\/+$/, \"\");\n\nexport interface ConfigurationParameters {\n basePath?: string; // override base path\n fetchApi?: FetchAPI; // override for fetch implementation\n middleware?: Middleware[]; // middleware to apply before/after fetch requests\n queryParamsStringify?: (params: HTTPQuery) => string; // stringify function for query strings\n username?: string; // parameter for basic security\n password?: string; // parameter for basic security\n apiKey?: string | Promise<string> | ((name: string) => string | Promise<string>); // parameter for apiKey security\n accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string | Promise<string>); // parameter for oauth2 security\n headers?: HTTPHeaders; //header params we want to use on every request\n credentials?: RequestCredentials; //value for the credentials param we want to use on each request\n}\n\nexport class Configuration {\n constructor(private configuration: ConfigurationParameters = {}) {}\n\n set config(configuration: Configuration) {\n this.configuration = configuration;\n }\n\n get basePath(): string {\n return this.configuration.basePath != null ? this.configuration.basePath : BASE_PATH;\n }\n\n get fetchApi(): FetchAPI | undefined {\n return this.configuration.fetchApi;\n }\n\n get middleware(): Middleware[] {\n return this.configuration.middleware || [];\n }\n\n get queryParamsStringify(): (params: HTTPQuery) => string {\n return this.configuration.queryParamsStringify || querystring;\n }\n\n get username(): string | undefined {\n return this.configuration.username;\n }\n\n get password(): string | undefined {\n return this.configuration.password;\n }\n\n get apiKey(): ((name: string) => string | Promise<string>) | undefined {\n const apiKey = this.configuration.apiKey;\n if (apiKey) {\n return typeof apiKey === 'function' ? apiKey : () => apiKey;\n }\n return undefined;\n }\n\n get accessToken(): ((name?: string, scopes?: string[]) => string | Promise<string>) | undefined {\n const accessToken = this.configuration.accessToken;\n if (accessToken) {\n return typeof accessToken === 'function' ? accessToken : async () => accessToken;\n }\n return undefined;\n }\n\n get headers(): HTTPHeaders | undefined {\n return this.configuration.headers;\n }\n\n get credentials(): RequestCredentials | undefined {\n return this.configuration.credentials;\n }\n}\n\nexport const DefaultConfig = new Configuration();\n\n/**\n * This is the base class for all generated API classes.\n */\nexport class BaseAPI {\n\n private static readonly jsonRegex = new RegExp('^(:?application\\/json|[^;/ \\t]+\\/[^;/ \\t]+[+]json)[ \\t]*(:?;.*)?$', 'i');\n private middleware: Middleware[];\n\n constructor(protected configuration = DefaultConfig) {\n this.middleware = configuration.middleware;\n }\n\n withMiddleware<T extends BaseAPI>(this: T, ...middlewares: Middleware[]) {\n const next = this.clone<T>();\n next.middleware = next.middleware.concat(...middlewares);\n return next;\n }\n\n withPreMiddleware<T extends BaseAPI>(this: T, ...preMiddlewares: Array<Middleware['pre']>) {\n const middlewares = preMiddlewares.map((pre) => ({ pre }));\n return this.withMiddleware<T>(...middlewares);\n }\n\n withPostMiddleware<T extends BaseAPI>(this: T, ...postMiddlewares: Array<Middleware['post']>) {\n const middlewares = postMiddlewares.map((post) => ({ post }));\n return this.withMiddleware<T>(...middlewares);\n }\n\n /**\n * Check if the given MIME is a JSON MIME.\n * JSON MIME examples:\n * application/json\n * application/json; charset=UTF8\n * APPLICATION/JSON\n * application/vnd.company+json\n * @param mime - MIME (Multipurpose Internet Mail Extensions)\n * @return True if the given MIME is JSON, false otherwise.\n */\n protected isJsonMime(mime: string | null | undefined): boolean {\n if (!mime) {\n return false;\n }\n return BaseAPI.jsonRegex.test(mime);\n }\n\n protected async request(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction): Promise<Response> {\n const { url, init } = await this.createFetchParams(context, initOverrides);\n const response = await this.fetchApi(url, init);\n if (response && (response.status >= 200 && response.status < 300)) {\n return response;\n }\n throw new ResponseError(response, 'Response returned an error code');\n }\n\n private async createFetchParams(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction) {\n let url = this.configuration.basePath + context.path;\n if (context.query !== undefined && Object.keys(context.query).length !== 0) {\n // only add the querystring to the URL if there are query parameters.\n // this is done to avoid urls ending with a \"?\" character which buggy webservers\n // do not handle correctly sometimes.\n url += '?' + this.configuration.queryParamsStringify(context.query);\n }\n\n const headers = Object.assign({}, this.configuration.headers, context.headers);\n Object.keys(headers).forEach(key => headers[key] === undefined ? delete headers[key] : {});\n\n const initOverrideFn =\n typeof initOverrides === \"function\"\n ? initOverrides\n : async () => initOverrides;\n\n const initParams = {\n method: context.method,\n headers,\n body: context.body,\n credentials: this.configuration.credentials,\n };\n\n const overriddenInit: RequestInit = {\n ...initParams,\n ...(await initOverrideFn({\n init: initParams,\n context,\n }))\n };\n\n let body: any;\n if (isFormData(overriddenInit.body)\n || (overriddenInit.body instanceof URLSearchParams)\n || isBlob(overriddenInit.body)) {\n body = overriddenInit.body;\n } else if (this.isJsonMime(headers['Content-Type'])) {\n body = JSON.stringify(overriddenInit.body);\n } else {\n body = overriddenInit.body;\n }\n\n const init: RequestInit = {\n ...overriddenInit,\n body\n };\n\n return { url, init };\n }\n\n private fetchApi = async (url: string, init: RequestInit) => {\n let fetchParams = { url, init };\n for (const middleware of this.middleware) {\n if (middleware.pre) {\n fetchParams = await middleware.pre({\n fetch: this.fetchApi,\n ...fetchParams,\n }) || fetchParams;\n }\n }\n let response: Response | undefined = undefined;\n try {\n response = await (this.configuration.fetchApi || fetch)(fetchParams.url, fetchParams.init);\n } catch (e) {\n for (const middleware of this.middleware) {\n if (middleware.onError) {\n response = await middleware.onError({\n fetch: this.fetchApi,\n url: fetchParams.url,\n init: fetchParams.init,\n error: e,\n response: response ? response.clone() : undefined,\n }) || response;\n }\n }\n if (response === undefined) {\n if (e instanceof Error) {\n throw new FetchError(e, 'The request failed and the interceptors did not return an alternative response');\n } else {\n throw e;\n }\n }\n }\n for (const middleware of this.middleware) {\n if (middleware.post) {\n response = await middleware.post({\n fetch: this.fetchApi,\n url: fetchParams.url,\n init: fetchParams.init,\n response: response.clone(),\n }) || response;\n }\n }\n return response;\n }\n\n /**\n * Create a shallow clone of `this` by constructing a new instance\n * and then shallow cloning data members.\n */\n private clone<T extends BaseAPI>(this: T): T {\n const constructor = this.constructor as any;\n const next = new constructor(this.configuration);\n next.middleware = this.middleware.slice();\n return next;\n }\n};\n\nfunction isBlob(value: any): value is Blob {\n return typeof Blob !== 'undefined' && value instanceof Blob;\n}\n\nfunction isFormData(value: any): value is FormData {\n return typeof FormData !== \"undefined\" && value instanceof FormData;\n}\n\nexport class ResponseError extends Error {\n override name: \"ResponseError\" = \"ResponseError\";\n constructor(public response: Response, msg?: string) {\n super(msg);\n }\n}\n\nexport class FetchError extends Error {\n override name: \"FetchError\" = \"FetchError\";\n constructor(public cause: Error, msg?: string) {\n super(msg);\n }\n}\n\nexport class RequiredError extends Error {\n override name: \"RequiredError\" = \"RequiredError\";\n constructor(public field: string, msg?: string) {\n super(msg);\n }\n}\n\nexport const COLLECTION_FORMATS = {\n csv: \",\",\n ssv: \" \",\n tsv: \"\\t\",\n pipes: \"|\",\n};\n\nexport type FetchAPI = WindowOrWorkerGlobalScope['fetch'];\n\nexport type Json = any;\nexport type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD';\nexport type HTTPHeaders = { [key: string]: string };\nexport type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery };\nexport type HTTPBody = Json | FormData | URLSearchParams;\nexport type HTTPRequestInit = { headers?: HTTPHeaders; method: HTTPMethod; credentials?: RequestCredentials; body?: HTTPBody };\nexport type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';\n\nexport type InitOverrideFunction = (requestContext: { init: HTTPRequestInit, context: RequestOpts }) => Promise<RequestInit>\n\nexport interface FetchParams {\n url: string;\n init: RequestInit;\n}\n\nexport interface RequestOpts {\n path: string;\n method: HTTPMethod;\n headers: HTTPHeaders;\n query?: HTTPQuery;\n body?: HTTPBody;\n}\n\nexport function querystring(params: HTTPQuery, prefix: string = ''): string {\n return Object.keys(params)\n .map(key => querystringSingleKey(key, params[key], prefix))\n .filter(part => part.length > 0)\n .join('&');\n}\n\nfunction querystringSingleKey(key: string, value: string | number | null | undefined | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery, keyPrefix: string = ''): string {\n const fullKey = keyPrefix + (keyPrefix.length ? `[${key}]` : key);\n if (value instanceof Array) {\n const multiValue = value.map(singleValue => encodeURIComponent(String(singleValue)))\n .join(`&${encodeURIComponent(fullKey)}=`);\n return `${encodeURIComponent(fullKey)}=${multiValue}`;\n }\n if (value instanceof Set) {\n const valueAsArray = Array.from(value);\n return querystringSingleKey(key, valueAsArray, keyPrefix);\n }\n if (value instanceof Date) {\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`;\n }\n if (value instanceof Object) {\n return querystring(value as HTTPQuery, fullKey);\n }\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`;\n}\n\nexport function exists(json: any, key: string) {\n const value = json[key];\n return value !== null && value !== undefined;\n}\n\nexport function mapValues(data: any, fn: (item: any) => any) {\n const result: { [key: string]: any } = {};\n for (const key of Object.keys(data)) {\n result[key] = fn(data[key]);\n }\n return result;\n}\n\nexport function canConsumeForm(consumes: Consume[]): boolean {\n for (const consume of consumes) {\n if ('multipart/form-data' === consume.contentType) {\n return true;\n }\n }\n return false;\n}\n\nexport interface Consume {\n contentType: string;\n}\n\nexport interface RequestContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n}\n\nexport interface ResponseContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n response: Response;\n}\n\nexport interface ErrorContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n error: unknown;\n response?: Response;\n}\n\nexport interface Middleware {\n pre?(context: RequestContext): Promise<FetchParams | void>;\n post?(context: ResponseContext): Promise<Response | void>;\n onError?(context: ErrorContext): Promise<Response | void>;\n}\n\nexport interface ApiResponse<T> {\n raw: Response;\n value(): Promise<T>;\n}\n\nexport interface ResponseTransformer<T> {\n (json: any): T;\n}\n\nexport class JSONApiResponse<T> {\n constructor(public raw: Response, private transformer: ResponseTransformer<T> = (jsonValue: any) => jsonValue) {}\n\n async value(): Promise<T> {\n return this.transformer(await this.raw.json());\n }\n}\n\nexport class VoidApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<void> {\n return undefined;\n }\n}\n\nexport class BlobApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<Blob> {\n return await this.raw.blob();\n };\n}\n\nexport class TextApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<string> {\n return await this.raw.text();\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface BlockchainDTO\n */\nexport interface BlockchainDTO {\n /**\n * DTO.BLOCKCHAIN.SYMBOL\n * @type {string}\n * @memberof BlockchainDTO\n */\n symbol: string;\n /**\n * DTO.BLOCKCHAIN.NAME\n * @type {string}\n * @memberof BlockchainDTO\n */\n name: string;\n /**\n * DTO.BLOCKCHAIN.EXPLORER_URL\n * @type {string}\n * @memberof BlockchainDTO\n */\n explorerUrl: string;\n /**\n * DTO.BLOCKCHAIN.CHAIN_ID\n * @type {number}\n * @memberof BlockchainDTO\n */\n chainId: number;\n}\n\n/**\n * Check if a given object implements the BlockchainDTO interface.\n */\nexport function instanceOfBlockchainDTO(value: object): value is BlockchainDTO {\n if (!('symbol' in value) || value['symbol'] === undefined) return false;\n if (!('name' in value) || value['name'] === undefined) return false;\n if (!('explorerUrl' in value) || value['explorerUrl'] === undefined) return false;\n if (!('chainId' in value) || value['chainId'] === undefined) return false;\n return true;\n}\n\nexport function BlockchainDTOFromJSON(json: any): BlockchainDTO {\n return BlockchainDTOFromJSONTyped(json, false);\n}\n\nexport function BlockchainDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): BlockchainDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'symbol': json['symbol'],\n 'name': json['name'],\n 'explorerUrl': json['explorerUrl'],\n 'chainId': json['chainId'],\n };\n}\n\nexport function BlockchainDTOToJSON(json: any): BlockchainDTO {\n return BlockchainDTOToJSONTyped(json, false);\n}\n\nexport function BlockchainDTOToJSONTyped(value?: BlockchainDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'symbol': value['symbol'],\n 'name': value['name'],\n 'explorerUrl': value['explorerUrl'],\n 'chainId': value['chainId'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface BlockchainLatestBlockDTO\n */\nexport interface BlockchainLatestBlockDTO {\n /**\n * DTO.BLOCKCHAIN.LATEST_BLOCK.BLOCKHASH\n * @type {string}\n * @memberof BlockchainLatestBlockDTO\n */\n blockhash: string;\n /**\n * DTO.BLOCKCHAIN.LATEST_BLOCK.LAST_VALID_BLOCK_HEIGHT\n * @type {number}\n * @memberof BlockchainLatestBlockDTO\n */\n lastValidBlockHeight: number;\n}\n\n/**\n * Check if a given object implements the BlockchainLatestBlockDTO interface.\n */\nexport function instanceOfBlockchainLatestBlockDTO(value: object): value is BlockchainLatestBlockDTO {\n if (!('blockhash' in value) || value['blockhash'] === undefined) return false;\n if (!('lastValidBlockHeight' in value) || value['lastValidBlockHeight'] === undefined) return false;\n return true;\n}\n\nexport function BlockchainLatestBlockDTOFromJSON(json: any): BlockchainLatestBlockDTO {\n return BlockchainLatestBlockDTOFromJSONTyped(json, false);\n}\n\nexport function BlockchainLatestBlockDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): BlockchainLatestBlockDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'blockhash': json['blockhash'],\n 'lastValidBlockHeight': json['lastValidBlockHeight'],\n };\n}\n\nexport function BlockchainLatestBlockDTOToJSON(json: any): BlockchainLatestBlockDTO {\n return BlockchainLatestBlockDTOToJSONTyped(json, false);\n}\n\nexport function BlockchainLatestBlockDTOToJSONTyped(value?: BlockchainLatestBlockDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'blockhash': value['blockhash'],\n 'lastValidBlockHeight': value['lastValidBlockHeight'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface BooleanResultDTO\n */\nexport interface BooleanResultDTO {\n /**\n * DTO.BOOLEAN_RESULT.SUCCESS\n * @type {boolean}\n * @memberof BooleanResultDTO\n */\n success: boolean;\n}\n\n/**\n * Check if a given object implements the BooleanResultDTO interface.\n */\nexport function instanceOfBooleanResultDTO(value: object): value is BooleanResultDTO {\n if (!('success' in value) || value['success'] === undefined) return false;\n return true;\n}\n\nexport function BooleanResultDTOFromJSON(json: any): BooleanResultDTO {\n return BooleanResultDTOFromJSONTyped(json, false);\n}\n\nexport function BooleanResultDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): BooleanResultDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'success': json['success'],\n };\n}\n\nexport function BooleanResultDTOToJSON(json: any): BooleanResultDTO {\n return BooleanResultDTOToJSONTyped(json, false);\n}\n\nexport function BooleanResultDTOToJSONTyped(value?: BooleanResultDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'success': value['success'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface CalculatePnlInput\n */\nexport interface CalculatePnlInput {\n /**\n * DTO.WALLET.CALCULATE_PNL.INPUT.TOKEN_ADDRESSES\n * @type {Array<string>}\n * @memberof CalculatePnlInput\n */\n tokenAddresses?: Array<string>;\n}\n\n/**\n * Check if a given object implements the CalculatePnlInput interface.\n */\nexport function instanceOfCalculatePnlInput(value: object): value is CalculatePnlInput {\n return true;\n}\n\nexport function CalculatePnlInputFromJSON(json: any): CalculatePnlInput {\n return CalculatePnlInputFromJSONTyped(json, false);\n}\n\nexport function CalculatePnlInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): CalculatePnlInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'tokenAddresses': json['tokenAddresses'] == null ? undefined : json['tokenAddresses'],\n };\n}\n\nexport function CalculatePnlInputToJSON(json: any): CalculatePnlInput {\n return CalculatePnlInputToJSONTyped(json, false);\n}\n\nexport function CalculatePnlInputToJSONTyped(value?: CalculatePnlInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'tokenAddresses': value['tokenAddresses'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const Resolution = {\n _1s: '1s',\n _15s: '15s',\n _30s: '30s',\n _1m: '1m',\n _5m: '5m',\n _15m: '15m',\n _1h: '1h',\n _4h: '4h',\n _12h: '12h',\n _1d: '1d'\n} as const;\nexport type Resolution = typeof Resolution[keyof typeof Resolution];\n\n\nexport function instanceOfResolution(value: any): boolean {\n for (const key in Resolution) {\n if (Object.prototype.hasOwnProperty.call(Resolution, key)) {\n if (Resolution[key as keyof typeof Resolution] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function ResolutionFromJSON(json: any): Resolution {\n return ResolutionFromJSONTyped(json, false);\n}\n\nexport function ResolutionFromJSONTyped(json: any, ignoreDiscriminator: boolean): Resolution {\n return json as Resolution;\n}\n\nexport function ResolutionToJSON(value?: Resolution | null): any {\n return value as any;\n}\n\nexport function ResolutionToJSONTyped(value: any, ignoreDiscriminator: boolean): Resolution {\n return value as Resolution;\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { Resolution } from './Resolution';\nimport {\n ResolutionFromJSON,\n ResolutionFromJSONTyped,\n ResolutionToJSON,\n ResolutionToJSONTyped,\n} from './Resolution';\n\n/**\n * \n * @export\n * @interface Candle\n */\nexport interface Candle {\n /**\n * DTO.CANDLE.OPEN\n * @type {string}\n * @memberof Candle\n */\n open: string;\n /**\n * DTO.CANDLE.CLOSE\n * @type {string}\n * @memberof Candle\n */\n close: string;\n /**\n * DTO.CANDLE.HIGH\n * @type {string}\n * @memberof Candle\n */\n high: string;\n /**\n * DTO.CANDLE.LOW\n * @type {string}\n * @memberof Candle\n */\n low: string;\n /**\n * DTO.CANDLE.VOLUME\n * @type {string}\n * @memberof Candle\n */\n volume: string;\n /**\n * DTO.CANDLE.RESOLUTION\n * @type {Resolution}\n * @memberof Candle\n */\n resolution: Resolution;\n /**\n * DTO.CANDLE.TIME\n * @type {number}\n * @memberof Candle\n */\n time: number;\n}\n\n\n\n/**\n * Check if a given object implements the Candle interface.\n */\nexport function instanceOfCandle(value: object): value is Candle {\n if (!('open' in value) || value['open'] === undefined) return false;\n if (!('close' in value) || value['close'] === undefined) return false;\n if (!('high' in value) || value['high'] === undefined) return false;\n if (!('low' in value) || value['low'] === undefined) return false;\n if (!('volume' in value) || value['volume'] === undefined) return false;\n if (!('resolution' in value) || value['resolution'] === undefined) return false;\n if (!('time' in value) || value['time'] === undefined) return false;\n return true;\n}\n\nexport function CandleFromJSON(json: any): Candle {\n return CandleFromJSONTyped(json, false);\n}\n\nexport function CandleFromJSONTyped(json: any, ignoreDiscriminator: boolean): Candle {\n if (json == null) {\n return json;\n }\n return {\n \n 'open': json['open'],\n 'close': json['close'],\n 'high': json['high'],\n 'low': json['low'],\n 'volume': json['volume'],\n 'resolution': ResolutionFromJSON(json['resolution']),\n 'time': json['time'],\n };\n}\n\nexport function CandleToJSON(json: any): Candle {\n return CandleToJSONTyped(json, false);\n}\n\nexport function CandleToJSONTyped(value?: Candle | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'open': value['open'],\n 'close': value['close'],\n 'high': value['high'],\n 'low': value['low'],\n 'volume': value['volume'],\n 'resolution': ResolutionToJSON(value['resolution']),\n 'time': value['time'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const Chain = {\n Sol: 'sol',\n Base: 'base',\n Bsc: 'bsc',\n Polygon: 'polygon',\n Arbitrum: 'arbitrum',\n Optimism: 'optimism',\n Avalanche: 'avalanche',\n Ethereum: 'ethereum',\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 ClaimRedPacketInput\n */\nexport interface ClaimRedPacketInput {\n /**\n * DTO.RED_PACKET.CHAIN\n * @type {string}\n * @memberof ClaimRedPacketInput\n */\n chain: ClaimRedPacketInputChainEnum;\n /**\n * DTO.RED_PACKET.PACKET_ID\n * @type {string}\n * @memberof ClaimRedPacketInput\n */\n packetId?: string;\n /**\n * DTO.RED_PACKET.SHARE_ID\n * @type {string}\n * @memberof ClaimRedPacketInput\n */\n shareId?: string;\n /**\n * DTO.RED_PACKET.PASSWORD\n * @type {string}\n * @memberof ClaimRedPacketInput\n */\n password?: string;\n /**\n * DTO.RED_PACKET.CLAIMER\n * @type {string}\n * @memberof ClaimRedPacketInput\n */\n claimer: string;\n}\n\n\n/**\n * @export\n */\nexport const ClaimRedPacketInputChainEnum = {\n Sol: 'sol',\n Base: 'base',\n Bsc: 'bsc',\n Polygon: 'polygon',\n Arbitrum: 'arbitrum',\n Optimism: 'optimism',\n Avalanche: 'avalanche',\n Ethereum: 'ethereum',\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 CreateRedPacketInput\n */\nexport interface CreateRedPacketInput {\n /**\n * DTO.RED_PACKET.CHAIN\n * @type {string}\n * @memberof CreateRedPacketInput\n */\n chain: CreateRedPacketInputChainEnum;\n /**\n * DTO.RED_PACKET.CREATOR\n * @type {string}\n * @memberof CreateRedPacketInput\n */\n creator: string;\n /**\n * DTO.RED_PACKET.MINT\n * @type {string}\n * @memberof CreateRedPacketInput\n */\n mint: string;\n /**\n * DTO.RED_PACKET.MAX_CLAIMS\n * @type {number}\n * @memberof CreateRedPacketInput\n */\n maxClaims: number;\n /**\n * DTO.RED_PACKET.TOTAL_AMOUNT\n * @type {string}\n * @memberof CreateRedPacketInput\n */\n totalAmount?: string;\n /**\n * DTO.RED_PACKET.FIXED_AMOUNT\n * @type {string}\n * @memberof CreateRedPacketInput\n */\n fixedAmount?: string;\n /**\n * DTO.RED_PACKET.MEMO\n * @type {string}\n * @memberof CreateRedPacketInput\n */\n memo?: string;\n /**\n * DTO.RED_PACKET.PASSWORD\n * @type {string}\n * @memberof CreateRedPacketInput\n */\n password?: string;\n /**\n * DTO.RED_PACKET.CLAIM_AUTHORITY\n * @type {string}\n * @memberof CreateRedPacketInput\n */\n claimAuthority?: string;\n}\n\n\n/**\n * @export\n */\nexport const CreateRedPacketInputChainEnum = {\n Sol: 'sol',\n Base: 'base',\n Bsc: 'bsc',\n Polygon: 'polygon',\n Arbitrum: 'arbitrum',\n Optimism: 'optimism',\n Avalanche: 'avalanche',\n Ethereum: 'ethereum',\n Zksync: 'zksync',\n Sui: 'sui'\n} as const;\nexport type CreateRedPacketInputChainEnum = typeof CreateRedPacketInputChainEnum[keyof typeof CreateRedPacketInputChainEnum];\n\n\n/**\n * Check if a given object implements the CreateRedPacketInput interface.\n */\nexport function instanceOfCreateRedPacketInput(value: object): value is CreateRedPacketInput {\n if (!('chain' in value) || value['chain'] === undefined) return false;\n if (!('creator' in value) || value['creator'] === undefined) return false;\n if (!('mint' in value) || value['mint'] === undefined) return false;\n if (!('maxClaims' in value) || value['maxClaims'] === undefined) return false;\n return true;\n}\n\nexport function CreateRedPacketInputFromJSON(json: any): CreateRedPacketInput {\n return CreateRedPacketInputFromJSONTyped(json, false);\n}\n\nexport function CreateRedPacketInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): CreateRedPacketInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'chain': json['chain'],\n 'creator': json['creator'],\n 'mint': json['mint'],\n 'maxClaims': json['maxClaims'],\n 'totalAmount': json['totalAmount'] == null ? undefined : json['totalAmount'],\n 'fixedAmount': json['fixedAmount'] == null ? undefined : json['fixedAmount'],\n 'memo': json['memo'] == null ? undefined : json['memo'],\n 'password': json['password'] == null ? undefined : json['password'],\n 'claimAuthority': json['claimAuthority'] == null ? undefined : json['claimAuthority'],\n };\n}\n\nexport function CreateRedPacketInputToJSON(json: any): CreateRedPacketInput {\n return CreateRedPacketInputToJSONTyped(json, false);\n}\n\nexport function CreateRedPacketInputToJSONTyped(value?: CreateRedPacketInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'chain': value['chain'],\n 'creator': value['creator'],\n 'mint': value['mint'],\n 'maxClaims': value['maxClaims'],\n 'totalAmount': value['totalAmount'],\n 'fixedAmount': value['fixedAmount'],\n 'memo': value['memo'],\n 'password': value['password'],\n 'claimAuthority': value['claimAuthority'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface CreateRedPacketReply\n */\nexport interface CreateRedPacketReply {\n /**\n * DTO.RED_PACKET.SERIALIZED_TX\n * @type {string}\n * @memberof CreateRedPacketReply\n */\n txSerialize: string;\n /**\n * DTO.RED_PACKET.SHARE_ID\n * @type {string}\n * @memberof CreateRedPacketReply\n */\n shareId: string;\n}\n\n/**\n * Check if a given object implements the CreateRedPacketReply interface.\n */\nexport function instanceOfCreateRedPacketReply(value: object): value is CreateRedPacketReply {\n if (!('txSerialize' in value) || value['txSerialize'] === undefined) return false;\n if (!('shareId' in value) || value['shareId'] === undefined) return false;\n return true;\n}\n\nexport function CreateRedPacketReplyFromJSON(json: any): CreateRedPacketReply {\n return CreateRedPacketReplyFromJSONTyped(json, false);\n}\n\nexport function CreateRedPacketReplyFromJSONTyped(json: any, ignoreDiscriminator: boolean): CreateRedPacketReply {\n if (json == null) {\n return json;\n }\n return {\n \n 'txSerialize': json['txSerialize'],\n 'shareId': json['shareId'],\n };\n}\n\nexport function CreateRedPacketReplyToJSON(json: any): CreateRedPacketReply {\n return CreateRedPacketReplyToJSONTyped(json, false);\n}\n\nexport function CreateRedPacketReplyToJSONTyped(value?: CreateRedPacketReply | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'txSerialize': value['txSerialize'],\n 'shareId': value['shareId'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface CreateTokenInput\n */\nexport interface CreateTokenInput {\n /**\n * DTO.DEX.IDENTIFIER\n * @type {string}\n * @memberof CreateTokenInput\n */\n dex: CreateTokenInputDexEnum;\n /**\n * DTO.DEX.WALLET\n * @type {string}\n * @memberof CreateTokenInput\n */\n userAddress: string;\n /**\n * DTO.DEX.BASE.PRIORITY_FEE\n * @type {string}\n * @memberof CreateTokenInput\n */\n priorityFee?: string;\n /**\n * DTO.DEX.MINT.NAME\n * @type {string}\n * @memberof CreateTokenInput\n */\n name: string;\n /**\n * DTO.DEX.MINT.SYMBOL\n * @type {string}\n * @memberof CreateTokenInput\n */\n symbol: string;\n /**\n * DTO.DEX.MINT.URI\n * @type {string}\n * @memberof CreateTokenInput\n */\n uri?: string;\n /**\n * DTO.DEX.MINT.IMAGE\n * @type {string}\n * @memberof CreateTokenInput\n */\n image?: string;\n /**\n * DTO.DEX.MINT.EXTRA\n * @type {object}\n * @memberof CreateTokenInput\n */\n extra?: object;\n}\n\n\n/**\n * @export\n */\nexport const CreateTokenInputDexEnum = {\n Raydium: 'raydium',\n Pumpfun: 'pumpfun',\n Moonshot: 'moonshot',\n Candy: 'candy',\n Launchpad: 'launchpad'\n} as const;\nexport type CreateTokenInputDexEnum = typeof CreateTokenInputDexEnum[keyof typeof CreateTokenInputDexEnum];\n\n\n/**\n * Check if a given object implements the CreateTokenInput interface.\n */\nexport function instanceOfCreateTokenInput(value: object): value is CreateTokenInput {\n if (!('dex' in value) || value['dex'] === undefined) return false;\n if (!('userAddress' in value) || value['userAddress'] === undefined) return false;\n if (!('name' in value) || value['name'] === undefined) return false;\n if (!('symbol' in value) || value['symbol'] === undefined) return false;\n return true;\n}\n\nexport function CreateTokenInputFromJSON(json: any): CreateTokenInput {\n return CreateTokenInputFromJSONTyped(json, false);\n}\n\nexport function CreateTokenInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): CreateTokenInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'dex': json['dex'],\n 'userAddress': json['userAddress'],\n 'priorityFee': json['priorityFee'] == null ? undefined : json['priorityFee'],\n 'name': json['name'],\n 'symbol': json['symbol'],\n 'uri': json['uri'] == null ? undefined : json['uri'],\n 'image': json['image'] == null ? undefined : json['image'],\n 'extra': json['extra'] == null ? undefined : json['extra'],\n };\n}\n\nexport function CreateTokenInputToJSON(json: any): CreateTokenInput {\n return CreateTokenInputToJSONTyped(json, false);\n}\n\nexport function CreateTokenInputToJSONTyped(value?: CreateTokenInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'dex': value['dex'],\n 'userAddress': value['userAddress'],\n 'priorityFee': value['priorityFee'],\n 'name': value['name'],\n 'symbol': value['symbol'],\n 'uri': value['uri'],\n 'image': value['image'],\n 'extra': value['extra'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface CreateTokenReply\n */\nexport interface CreateTokenReply {\n /**\n * DTO.DEX.CREATE_TOKEN.SERIALIZED_TX\n * @type {string}\n * @memberof CreateTokenReply\n */\n serializedTx: string;\n /**\n * DTO.DEX.CREATE_TOKEN.MINT_ADDRESS\n * @type {string}\n * @memberof CreateTokenReply\n */\n mintAddress: string;\n}\n\n/**\n * Check if a given object implements the CreateTokenReply interface.\n */\nexport function instanceOfCreateTokenReply(value: object): value is CreateTokenReply {\n if (!('serializedTx' in value) || value['serializedTx'] === undefined) return false;\n if (!('mintAddress' in value) || value['mintAddress'] === undefined) return false;\n return true;\n}\n\nexport function CreateTokenReplyFromJSON(json: any): CreateTokenReply {\n return CreateTokenReplyFromJSONTyped(json, false);\n}\n\nexport function CreateTokenReplyFromJSONTyped(json: any, ignoreDiscriminator: boolean): CreateTokenReply {\n if (json == null) {\n return json;\n }\n return {\n \n 'serializedTx': json['serializedTx'],\n 'mintAddress': json['mintAddress'],\n };\n}\n\nexport function CreateTokenReplyToJSON(json: any): CreateTokenReply {\n return CreateTokenReplyToJSONTyped(json, false);\n}\n\nexport function CreateTokenReplyToJSONTyped(value?: CreateTokenReply | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'serializedTx': value['serializedTx'],\n 'mintAddress': value['mintAddress'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface DexDTO\n */\nexport interface DexDTO {\n /**\n * DTO.DEX.PROGRAM_ADDRESS\n * @type {string}\n * @memberof DexDTO\n */\n programAddress?: string;\n /**\n * DTO.DEX.PROTOCOL_FAMILY\n * @type {string}\n * @memberof DexDTO\n */\n protocolFamily?: string;\n /**\n * DTO.DEX.IMAGE\n * @type {string}\n * @memberof DexDTO\n */\n image?: string;\n /**\n * DTO.DEX.CHAIN\n * @type {string}\n * @memberof DexDTO\n */\n chain: string;\n}\n\n/**\n * Check if a given object implements the DexDTO interface.\n */\nexport function instanceOfDexDTO(value: object): value is DexDTO {\n if (!('chain' in value) || value['chain'] === undefined) return false;\n return true;\n}\n\nexport function DexDTOFromJSON(json: any): DexDTO {\n return DexDTOFromJSONTyped(json, false);\n}\n\nexport function DexDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): DexDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'programAddress': json['programAddress'] == null ? undefined : json['programAddress'],\n 'protocolFamily': json['protocolFamily'] == null ? undefined : json['protocolFamily'],\n 'image': json['image'] == null ? undefined : json['image'],\n 'chain': json['chain'],\n };\n}\n\nexport function DexDTOToJSON(json: any): DexDTO {\n return DexDTOToJSONTyped(json, false);\n}\n\nexport function DexDTOToJSONTyped(value?: DexDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'programAddress': value['programAddress'],\n 'protocolFamily': value['protocolFamily'],\n 'image': value['image'],\n 'chain': value['chain'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { DexDTO } from './DexDTO';\nimport {\n DexDTOFromJSON,\n DexDTOFromJSONTyped,\n DexDTOToJSON,\n DexDTOToJSONTyped,\n} from './DexDTO';\n\n/**\n * \n * @export\n * @interface DexPage\n */\nexport interface DexPage {\n /**\n * DTO.PAGE.HAS_NEXT\n * @type {boolean}\n * @memberof DexPage\n */\n hasNext?: boolean;\n /**\n * DTO.PAGE.HAS_PREV\n * @type {boolean}\n * @memberof DexPage\n */\n hasPrev?: boolean;\n /**\n * DTO.PAGE.START_CURSOR\n * @type {string}\n * @memberof DexPage\n */\n startCursor?: string;\n /**\n * DTO.PAGE.END_CURSOR\n * @type {string}\n * @memberof DexPage\n */\n endCursor?: string;\n /**\n * DTO.PAGE.TOTAL\n * @type {number}\n * @memberof DexPage\n */\n total?: number;\n /**\n * DTO.DEX.PAGE.DATA\n * @type {Array<DexDTO>}\n * @memberof DexPage\n */\n data: Array<DexDTO>;\n}\n\n/**\n * Check if a given object implements the DexPage interface.\n */\nexport function instanceOfDexPage(value: object): value is DexPage {\n if (!('data' in value) || value['data'] === undefined) return false;\n return true;\n}\n\nexport function DexPageFromJSON(json: any): DexPage {\n return DexPageFromJSONTyped(json, false);\n}\n\nexport function DexPageFromJSONTyped(json: any, ignoreDiscriminator: boolean): DexPage {\n if (json == null) {\n return json;\n }\n return {\n \n 'hasNext': json['hasNext'] == null ? undefined : json['hasNext'],\n 'hasPrev': json['hasPrev'] == null ? undefined : json['hasPrev'],\n 'startCursor': json['startCursor'] == null ? undefined : json['startCursor'],\n 'endCursor': json['endCursor'] == null ? undefined : json['endCursor'],\n 'total': json['total'] == null ? undefined : json['total'],\n 'data': ((json['data'] as Array<any>).map(DexDTOFromJSON)),\n };\n}\n\nexport function DexPageToJSON(json: any): DexPage {\n return DexPageToJSONTyped(json, false);\n}\n\nexport function DexPageToJSONTyped(value?: DexPage | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'hasNext': value['hasNext'],\n 'hasPrev': value['hasPrev'],\n 'startCursor': value['startCursor'],\n 'endCursor': value['endCursor'],\n 'total': value['total'],\n 'data': ((value['data'] as Array<any>).map(DexDTOToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface DexPoolDTO\n */\nexport interface DexPoolDTO {\n /**\n * DTO.DEX.PROGRAM_ADDRESS\n * @type {string}\n * @memberof DexPoolDTO\n */\n programAddress?: string;\n /**\n * DTO.DEX.PROTOCOL_FAMILY\n * @type {string}\n * @memberof DexPoolDTO\n */\n protocolFamily?: string;\n /**\n * DTO.DEX.IMAGE\n * @type {string}\n * @memberof DexPoolDTO\n */\n image?: string;\n /**\n * DTO.DEX.CHAIN\n * @type {string}\n * @memberof DexPoolDTO\n */\n chain: string;\n /**\n * DTO.DEXPOOL.POOL_ADDRESS\n * @type {string}\n * @memberof DexPoolDTO\n */\n poolAddress: string;\n /**\n * DTO.DEXPOOL.PROTOCOL_NAME\n * @type {string}\n * @memberof DexPoolDTO\n */\n protocolName?: string;\n /**\n * DTO.DEXPOOL.TOKEN_A\n * @type {string}\n * @memberof DexPoolDTO\n */\n tokenAAddress: string;\n /**\n * DTO.DEXPOOL.TOKEN_B\n * @type {string}\n * @memberof DexPoolDTO\n */\n tokenBAddress: string;\n /**\n * DTO.DEXPOOL.TVL_USD\n * @type {string}\n * @memberof DexPoolDTO\n */\n tvlInUsd?: string;\n /**\n * DTO.DEXPOOL.TVL_SOL\n * @type {string}\n * @memberof DexPoolDTO\n */\n tvlInSol?: string;\n}\n\n/**\n * Check if a given object implements the DexPoolDTO interface.\n */\nexport function instanceOfDexPoolDTO(value: object): value is DexPoolDTO {\n if (!('chain' in value) || value['chain'] === undefined) return false;\n if (!('poolAddress' in value) || value['poolAddress'] === undefined) return false;\n if (!('tokenAAddress' in value) || value['tokenAAddress'] === undefined) return false;\n if (!('tokenBAddress' in value) || value['tokenBAddress'] === undefined) return false;\n return true;\n}\n\nexport function DexPoolDTOFromJSON(json: any): DexPoolDTO {\n return DexPoolDTOFromJSONTyped(json, false);\n}\n\nexport function DexPoolDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): DexPoolDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'programAddress': json['programAddress'] == null ? undefined : json['programAddress'],\n 'protocolFamily': json['protocolFamily'] == null ? undefined : json['protocolFamily'],\n 'image': json['image'] == null ? undefined : json['image'],\n 'chain': json['chain'],\n 'poolAddress': json['poolAddress'],\n 'protocolName': json['protocolName'] == null ? undefined : json['protocolName'],\n 'tokenAAddress': json['tokenAAddress'],\n 'tokenBAddress': json['tokenBAddress'],\n 'tvlInUsd': json['tvlInUsd'] == null ? undefined : json['tvlInUsd'],\n 'tvlInSol': json['tvlInSol'] == null ? undefined : json['tvlInSol'],\n };\n}\n\nexport function DexPoolDTOToJSON(json: any): DexPoolDTO {\n return DexPoolDTOToJSONTyped(json, false);\n}\n\nexport function DexPoolDTOToJSONTyped(value?: DexPoolDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'programAddress': value['programAddress'],\n 'protocolFamily': value['protocolFamily'],\n 'image': value['image'],\n 'chain': value['chain'],\n 'poolAddress': value['poolAddress'],\n 'protocolName': value['protocolName'],\n 'tokenAAddress': value['tokenAAddress'],\n 'tokenBAddress': value['tokenBAddress'],\n 'tvlInUsd': value['tvlInUsd'],\n 'tvlInSol': value['tvlInSol'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface 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 GainersAndLosersDTO\n */\nexport interface GainersAndLosersDTO {\n /**\n * GLOBAL.WALLETADDRESS.DESCRIPTION\n * @type {string}\n * @memberof GainersAndLosersDTO\n */\n address: string;\n /**\n * DTO.TRADE.GAINERS_LOSERS.PNL\n * @type {number}\n * @memberof GainersAndLosersDTO\n */\n pnl: number;\n /**\n * DTO.TRADE.GAINERS_LOSERS.TRADE_COUNT\n * @type {number}\n * @memberof GainersAndLosersDTO\n */\n tradeCount: number;\n /**\n * DTO.TRADE.GAINERS_LOSERS.VOLUME\n * @type {number}\n * @memberof GainersAndLosersDTO\n */\n volume: number;\n}\n\n/**\n * Check if a given object implements the GainersAndLosersDTO interface.\n */\nexport function instanceOfGainersAndLosersDTO(value: object): value is GainersAndLosersDTO {\n if (!('address' in value) || value['address'] === undefined) return false;\n if (!('pnl' in value) || value['pnl'] === undefined) return false;\n if (!('tradeCount' in value) || value['tradeCount'] === undefined) return false;\n if (!('volume' in value) || value['volume'] === undefined) return false;\n return true;\n}\n\nexport function GainersAndLosersDTOFromJSON(json: any): GainersAndLosersDTO {\n return GainersAndLosersDTOFromJSONTyped(json, false);\n}\n\nexport function GainersAndLosersDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): GainersAndLosersDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'address': json['address'],\n 'pnl': json['pnl'],\n 'tradeCount': json['tradeCount'],\n 'volume': json['volume'],\n };\n}\n\nexport function GainersAndLosersDTOToJSON(json: any): GainersAndLosersDTO {\n return GainersAndLosersDTOToJSONTyped(json, false);\n}\n\nexport function GainersAndLosersDTOToJSONTyped(value?: GainersAndLosersDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'address': value['address'],\n 'pnl': value['pnl'],\n 'tradeCount': value['tradeCount'],\n 'volume': value['volume'],\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 { GainersAndLosersDTO } from './GainersAndLosersDTO';\nimport {\n GainersAndLosersDTOFromJSON,\n GainersAndLosersDTOFromJSONTyped,\n GainersAndLosersDTOToJSON,\n GainersAndLosersDTOToJSONTyped,\n} from './GainersAndLosersDTO';\n\n/**\n * \n * @export\n * @interface GainersAndLosersPage\n */\nexport interface GainersAndLosersPage {\n /**\n * DTO.PAGE.HAS_NEXT\n * @type {boolean}\n * @memberof GainersAndLosersPage\n */\n hasNext?: boolean;\n /**\n * DTO.PAGE.HAS_PREV\n * @type {boolean}\n * @memberof GainersAndLosersPage\n */\n hasPrev?: boolean;\n /**\n * DTO.PAGE.START_CURSOR\n * @type {string}\n * @memberof GainersAndLosersPage\n */\n startCursor?: string;\n /**\n * DTO.PAGE.END_CURSOR\n * @type {string}\n * @memberof GainersAndLosersPage\n */\n endCursor?: string;\n /**\n * DTO.PAGE.TOTAL\n * @type {number}\n * @memberof GainersAndLosersPage\n */\n total?: number;\n /**\n * DTO.TRADE.GAINERS_LOSERS.PAGE.DATA\n * @type {Array<GainersAndLosersDTO>}\n * @memberof GainersAndLosersPage\n */\n data: Array<GainersAndLosersDTO>;\n}\n\n/**\n * Check if a given object implements the GainersAndLosersPage interface.\n */\nexport function instanceOfGainersAndLosersPage(value: object): value is GainersAndLosersPage {\n if (!('data' in value) || value['data'] === undefined) return false;\n return true;\n}\n\nexport function GainersAndLosersPageFromJSON(json: any): GainersAndLosersPage {\n return GainersAndLosersPageFromJSONTyped(json, false);\n}\n\nexport function GainersAndLosersPageFromJSONTyped(json: any, ignoreDiscriminator: boolean): GainersAndLosersPage {\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(GainersAndLosersDTOFromJSON)),\n };\n}\n\nexport function GainersAndLosersPageToJSON(json: any): GainersAndLosersPage {\n return GainersAndLosersPageToJSONTyped(json, false);\n}\n\nexport function GainersAndLosersPageToJSONTyped(value?: GainersAndLosersPage | 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(GainersAndLosersDTOToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface GasPriceResponse\n */\nexport interface GasPriceResponse {\n /**\n * Current gas price in wei (hex string)\n * @type {string}\n * @memberof GasPriceResponse\n */\n gasPrice: string;\n /**\n * Chain symbol\n * @type {string}\n * @memberof GasPriceResponse\n */\n chain: string;\n}\n\n/**\n * Check if a given object implements the GasPriceResponse interface.\n */\nexport function instanceOfGasPriceResponse(value: object): value is GasPriceResponse {\n if (!('gasPrice' in value) || value['gasPrice'] === undefined) return false;\n if (!('chain' in value) || value['chain'] === undefined) return false;\n return true;\n}\n\nexport function GasPriceResponseFromJSON(json: any): GasPriceResponse {\n return GasPriceResponseFromJSONTyped(json, false);\n}\n\nexport function GasPriceResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): GasPriceResponse {\n if (json == null) {\n return json;\n }\n return {\n \n 'gasPrice': json['gasPrice'],\n 'chain': json['chain'],\n };\n}\n\nexport function GasPriceResponseToJSON(json: any): GasPriceResponse {\n return GasPriceResponseToJSONTyped(json, false);\n}\n\nexport function GasPriceResponseToJSONTyped(value?: GasPriceResponse | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'gasPrice': value['gasPrice'],\n 'chain': value['chain'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface JobDTO\n */\nexport interface JobDTO {\n /**\n * DTO.JOB.STATE\n * @type {string}\n * @memberof JobDTO\n */\n state: string;\n /**\n * DTO.JOB.RESULT\n * @type {object}\n * @memberof JobDTO\n */\n result: object;\n}\n\n/**\n * Check if a given object implements the JobDTO interface.\n */\nexport function instanceOfJobDTO(value: object): value is JobDTO {\n if (!('state' in value) || value['state'] === undefined) return false;\n if (!('result' in value) || value['result'] === undefined) return false;\n return true;\n}\n\nexport function JobDTOFromJSON(json: any): JobDTO {\n return JobDTOFromJSONTyped(json, false);\n}\n\nexport function JobDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): JobDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'state': json['state'],\n 'result': json['result'],\n };\n}\n\nexport function JobDTOToJSON(json: any): JobDTO {\n return JobDTOToJSONTyped(json, false);\n}\n\nexport function JobDTOToJSONTyped(value?: JobDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'state': value['state'],\n 'result': value['result'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface JobStreamingDTO\n */\nexport interface JobStreamingDTO {\n /**\n * DTO.JOB.STREAMING.ID\n * @type {number}\n * @memberof JobStreamingDTO\n */\n id: number;\n /**\n * DTO.JOB.STREAMING.DATA\n * @type {object}\n * @memberof JobStreamingDTO\n */\n data: object;\n}\n\n/**\n * Check if a given object implements the JobStreamingDTO interface.\n */\nexport function instanceOfJobStreamingDTO(value: object): value is JobStreamingDTO {\n if (!('id' in value) || value['id'] === undefined) return false;\n if (!('data' in value) || value['data'] === undefined) return false;\n return true;\n}\n\nexport function JobStreamingDTOFromJSON(json: any): JobStreamingDTO {\n return JobStreamingDTOFromJSONTyped(json, false);\n}\n\nexport function JobStreamingDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): JobStreamingDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'id': json['id'],\n 'data': json['data'],\n };\n}\n\nexport function JobStreamingDTOToJSON(json: any): JobStreamingDTO {\n return JobStreamingDTOToJSONTyped(json, false);\n}\n\nexport function JobStreamingDTOToJSONTyped(value?: JobStreamingDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'id': value['id'],\n 'data': value['data'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface Link\n */\nexport interface Link {\n /**\n * DTO.DEX.MOONSHOT.LINK.URL\n * @type {string}\n * @memberof Link\n */\n url: string;\n /**\n * DTO.DEX.MOONSHOT.LINK.LABEL\n * @type {string}\n * @memberof Link\n */\n label: LinkLabelEnum;\n}\n\n\n/**\n * @export\n */\nexport const LinkLabelEnum = {\n Website: 'website',\n Twitter: 'twitter',\n Telegram: 'telegram',\n Discord: 'discord'\n} as const;\nexport type LinkLabelEnum = typeof LinkLabelEnum[keyof typeof LinkLabelEnum];\n\n\n/**\n * Check if a given object implements the Link interface.\n */\nexport function instanceOfLink(value: object): value is Link {\n if (!('url' in value) || value['url'] === undefined) return false;\n if (!('label' in value) || value['label'] === undefined) return false;\n return true;\n}\n\nexport function LinkFromJSON(json: any): Link {\n return LinkFromJSONTyped(json, false);\n}\n\nexport function LinkFromJSONTyped(json: any, ignoreDiscriminator: boolean): Link {\n if (json == null) {\n return json;\n }\n return {\n \n 'url': json['url'],\n 'label': json['label'],\n };\n}\n\nexport function LinkToJSON(json: any): Link {\n return LinkToJSONTyped(json, false);\n}\n\nexport function LinkToJSONTyped(value?: Link | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'url': value['url'],\n 'label': value['label'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { Link } from './Link';\nimport {\n LinkFromJSON,\n LinkFromJSONTyped,\n LinkToJSON,\n LinkToJSONTyped,\n} from './Link';\n\n/**\n * \n * @export\n * @interface MoonshotCreateTokenInput\n */\nexport interface MoonshotCreateTokenInput {\n /**\n * DTO.DEX.IDENTIFIER\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n dex: MoonshotCreateTokenInputDexEnum;\n /**\n * DTO.DEX.WALLET\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n userAddress: string;\n /**\n * DTO.DEX.BASE.PRIORITY_FEE\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n priorityFee?: string;\n /**\n * DTO.DEX.MOONSHOT.MINT.NAME\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n name: string;\n /**\n * DTO.DEX.MOONSHOT.MINT.SYMBOL\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n symbol: string;\n /**\n * DTO.DEX.MOONSHOT.MINT.MIGRATION_DEX\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n migrationDex: MoonshotCreateTokenInputMigrationDexEnum;\n /**\n * DTO.DEX.MOONSHOT.MINT.ICON\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n icon: string;\n /**\n * DTO.DEX.MOONSHOT.MINT.DESCRIPTION\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n description: string;\n /**\n * DTO.DEX.MOONSHOT.MINT.LINKS\n * @type {Array<Link>}\n * @memberof MoonshotCreateTokenInput\n */\n links: Array<Link>;\n /**\n * DTO.DEX.MOONSHOT.MINT.BANNER\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n banner?: string;\n /**\n * DTO.DEX.MOONSHOT.MINT.TOKEN_AMOUNT\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n tokenAmount: string;\n}\n\n\n/**\n * @export\n */\nexport const MoonshotCreateTokenInputDexEnum = {\n Moonshot: 'moonshot'\n} as const;\nexport type MoonshotCreateTokenInputDexEnum = typeof MoonshotCreateTokenInputDexEnum[keyof typeof MoonshotCreateTokenInputDexEnum];\n\n/**\n * @export\n */\nexport const MoonshotCreateTokenInputMigrationDexEnum = {\n Raydium: 'RAYDIUM',\n Meteora: 'METEORA',\n Uniswap: 'UNISWAP'\n} as const;\nexport type MoonshotCreateTokenInputMigrationDexEnum = typeof MoonshotCreateTokenInputMigrationDexEnum[keyof typeof MoonshotCreateTokenInputMigrationDexEnum];\n\n\n/**\n * Check if a given object implements the MoonshotCreateTokenInput interface.\n */\nexport function instanceOfMoonshotCreateTokenInput(value: object): value is MoonshotCreateTokenInput {\n if (!('dex' in value) || value['dex'] === undefined) return false;\n if (!('userAddress' in value) || value['userAddress'] === undefined) return false;\n if (!('name' in value) || value['name'] === undefined) return false;\n if (!('symbol' in value) || value['symbol'] === undefined) return false;\n if (!('migrationDex' in value) || value['migrationDex'] === undefined) return false;\n if (!('icon' in value) || value['icon'] === undefined) return false;\n if (!('description' in value) || value['description'] === undefined) return false;\n if (!('links' in value) || value['links'] === undefined) return false;\n if (!('tokenAmount' in value) || value['tokenAmount'] === undefined) return false;\n return true;\n}\n\nexport function MoonshotCreateTokenInputFromJSON(json: any): MoonshotCreateTokenInput {\n return MoonshotCreateTokenInputFromJSONTyped(json, false);\n}\n\nexport function MoonshotCreateTokenInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): MoonshotCreateTokenInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'dex': json['dex'],\n 'userAddress': json['userAddress'],\n 'priorityFee': json['priorityFee'] == null ? undefined : json['priorityFee'],\n 'name': json['name'],\n 'symbol': json['symbol'],\n 'migrationDex': json['migrationDex'],\n 'icon': json['icon'],\n 'description': json['description'],\n 'links': ((json['links'] as Array<any>).map(LinkFromJSON)),\n 'banner': json['banner'] == null ? undefined : json['banner'],\n 'tokenAmount': json['tokenAmount'],\n };\n}\n\nexport function MoonshotCreateTokenInputToJSON(json: any): MoonshotCreateTokenInput {\n return MoonshotCreateTokenInputToJSONTyped(json, false);\n}\n\nexport function MoonshotCreateTokenInputToJSONTyped(value?: MoonshotCreateTokenInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'dex': value['dex'],\n 'userAddress': value['userAddress'],\n 'priorityFee': value['priorityFee'],\n 'name': value['name'],\n 'symbol': value['symbol'],\n 'migrationDex': value['migrationDex'],\n 'icon': value['icon'],\n 'description': value['description'],\n 'links': ((value['links'] as Array<any>).map(LinkToJSON)),\n 'banner': value['banner'],\n 'tokenAmount': value['tokenAmount'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface MoonshotCreateTokenReply\n */\nexport interface MoonshotCreateTokenReply {\n /**\n * DTO.DEX.MOONSHOT.CREATE_TOKEN.SERIALIZED_TX\n * @type {string}\n * @memberof MoonshotCreateTokenReply\n */\n serializedTx: string;\n /**\n * DTO.DEX.MOONSHOT.CREATE_TOKEN.EXTRA\n * @type {object}\n * @memberof MoonshotCreateTokenReply\n */\n extra: object;\n}\n\n/**\n * Check if a given object implements the MoonshotCreateTokenReply interface.\n */\nexport function instanceOfMoonshotCreateTokenReply(value: object): value is MoonshotCreateTokenReply {\n if (!('serializedTx' in value) || value['serializedTx'] === undefined) return false;\n if (!('extra' in value) || value['extra'] === undefined) return false;\n return true;\n}\n\nexport function MoonshotCreateTokenReplyFromJSON(json: any): MoonshotCreateTokenReply {\n return MoonshotCreateTokenReplyFromJSONTyped(json, false);\n}\n\nexport function MoonshotCreateTokenReplyFromJSONTyped(json: any, ignoreDiscriminator: boolean): MoonshotCreateTokenReply {\n if (json == null) {\n return json;\n }\n return {\n \n 'serializedTx': json['serializedTx'],\n 'extra': json['extra'],\n };\n}\n\nexport function MoonshotCreateTokenReplyToJSON(json: any): MoonshotCreateTokenReply {\n return MoonshotCreateTokenReplyToJSONTyped(json, false);\n}\n\nexport function MoonshotCreateTokenReplyToJSONTyped(value?: MoonshotCreateTokenReply | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'serializedTx': value['serializedTx'],\n 'extra': value['extra'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface MoonshotSubmitCreateToken200Response\n */\nexport interface MoonshotSubmitCreateToken200Response {\n /**\n * Transaction signature\n * @type {string}\n * @memberof MoonshotSubmitCreateToken200Response\n */\n signature?: string;\n /**\n * Block slot number\n * @type {number}\n * @memberof MoonshotSubmitCreateToken200Response\n */\n slot?: number;\n}\n\n/**\n * Check if a given object implements the MoonshotSubmitCreateToken200Response interface.\n */\nexport function instanceOfMoonshotSubmitCreateToken200Response(value: object): value is MoonshotSubmitCreateToken200Response {\n return true;\n}\n\nexport function MoonshotSubmitCreateToken200ResponseFromJSON(json: any): MoonshotSubmitCreateToken200Response {\n return MoonshotSubmitCreateToken200ResponseFromJSONTyped(json, false);\n}\n\nexport function MoonshotSubmitCreateToken200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): MoonshotSubmitCreateToken200Response {\n if (json == null) {\n return json;\n }\n return {\n \n 'signature': json['signature'] == null ? undefined : json['signature'],\n 'slot': json['slot'] == null ? undefined : json['slot'],\n };\n}\n\nexport function MoonshotSubmitCreateToken200ResponseToJSON(json: any): MoonshotSubmitCreateToken200Response {\n return MoonshotSubmitCreateToken200ResponseToJSONTyped(json, false);\n}\n\nexport function MoonshotSubmitCreateToken200ResponseToJSONTyped(value?: MoonshotSubmitCreateToken200Response | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'signature': value['signature'],\n 'slot': value['slot'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface MoonshotSubmitCreateTokenInput\n */\nexport interface MoonshotSubmitCreateTokenInput {\n /**\n * DTO.DEX.MOONSHOT.SUBMIT.CREATE_TOKEN.SIGNED_TX\n * @type {string}\n * @memberof MoonshotSubmitCreateTokenInput\n */\n signedTx: string;\n /**\n * DTO.DEX.MOONSHOT.SUBMIT.CREATE_TOKEN.EXTRA\n * @type {object}\n * @memberof MoonshotSubmitCreateTokenInput\n */\n extra?: object;\n}\n\n/**\n * Check if a given object implements the MoonshotSubmitCreateTokenInput interface.\n */\nexport function instanceOfMoonshotSubmitCreateTokenInput(value: object): value is MoonshotSubmitCreateTokenInput {\n if (!('signedTx' in value) || value['signedTx'] === undefined) return false;\n return true;\n}\n\nexport function MoonshotSubmitCreateTokenInputFromJSON(json: any): MoonshotSubmitCreateTokenInput {\n return MoonshotSubmitCreateTokenInputFromJSONTyped(json, false);\n}\n\nexport function MoonshotSubmitCreateTokenInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): MoonshotSubmitCreateTokenInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'signedTx': json['signedTx'],\n 'extra': json['extra'] == null ? undefined : json['extra'],\n };\n}\n\nexport function MoonshotSubmitCreateTokenInputToJSON(json: any): MoonshotSubmitCreateTokenInput {\n return MoonshotSubmitCreateTokenInputToJSONTyped(json, false);\n}\n\nexport function MoonshotSubmitCreateTokenInputToJSONTyped(value?: MoonshotSubmitCreateTokenInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'signedTx': value['signedTx'],\n 'extra': value['extra'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface PumpCreateTokenInput\n */\nexport interface PumpCreateTokenInput {\n /**\n * DTO.DEX.IDENTIFIER\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n dex: PumpCreateTokenInputDexEnum;\n /**\n * DTO.DEX.WALLET\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n userAddress: string;\n /**\n * DTO.DEX.BASE.PRIORITY_FEE\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n priorityFee?: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.TWITTER\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n twitter?: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.TELEGRAM\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n telegram?: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.WEBSITE\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n website?: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.NAME\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n name: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.SYMBOL\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n symbol: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.MIGRATION_DEX\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n migrationDex: PumpCreateTokenInputMigrationDexEnum;\n /**\n * DTO.DEX.PUMPFUN.MINT.IMAGE\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n image: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.MINT_ADDRESS\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n mintAddress: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.DESCRIPTION\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n description: string;\n}\n\n\n/**\n * @export\n */\nexport const PumpCreateTokenInputDexEnum = {\n Pumpfun: 'pumpfun'\n} as const;\nexport type PumpCreateTokenInputDexEnum = typeof PumpCreateTokenInputDexEnum[keyof typeof PumpCreateTokenInputDexEnum];\n\n/**\n * @export\n */\nexport const PumpCreateTokenInputMigrationDexEnum = {\n Raydium: 'RAYDIUM',\n Meteora: 'METEORA'\n} as const;\nexport type PumpCreateTokenInputMigrationDexEnum = typeof PumpCreateTokenInputMigrationDexEnum[keyof typeof PumpCreateTokenInputMigrationDexEnum];\n\n\n/**\n * Check if a given object implements the PumpCreateTokenInput interface.\n */\nexport function instanceOfPumpCreateTokenInput(value: object): value is PumpCreateTokenInput {\n if (!('dex' in value) || value['dex'] === undefined) return false;\n if (!('userAddress' in value) || value['userAddress'] === undefined) return false;\n if (!('name' in value) || value['name'] === undefined) return false;\n if (!('symbol' in value) || value['symbol'] === undefined) return false;\n if (!('migrationDex' in value) || value['migrationDex'] === undefined) return false;\n if (!('image' in value) || value['image'] === undefined) return false;\n if (!('mintAddress' in value) || value['mintAddress'] === undefined) return false;\n if (!('description' in value) || value['description'] === undefined) return false;\n return true;\n}\n\nexport function PumpCreateTokenInputFromJSON(json: any): PumpCreateTokenInput {\n return PumpCreateTokenInputFromJSONTyped(json, false);\n}\n\nexport function PumpCreateTokenInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): PumpCreateTokenInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'dex': json['dex'],\n 'userAddress': json['userAddress'],\n 'priorityFee': json['priorityFee'] == null ? undefined : json['priorityFee'],\n 'twitter': json['twitter'] == null ? undefined : json['twitter'],\n 'telegram': json['telegram'] == null ? undefined : json['telegram'],\n 'website': json['website'] == null ? undefined : json['website'],\n 'name': json['name'],\n 'symbol': json['symbol'],\n 'migrationDex': json['migrationDex'],\n 'image': json['image'],\n 'mintAddress': json['mintAddress'],\n 'description': json['description'],\n };\n}\n\nexport function PumpCreateTokenInputToJSON(json: any): PumpCreateTokenInput {\n return PumpCreateTokenInputToJSONTyped(json, false);\n}\n\nexport function PumpCreateTokenInputToJSONTyped(value?: PumpCreateTokenInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'dex': value['dex'],\n 'userAddress': value['userAddress'],\n 'priorityFee': value['priorityFee'],\n 'twitter': value['twitter'],\n 'telegram': value['telegram'],\n 'website': value['website'],\n 'name': value['name'],\n 'symbol': value['symbol'],\n 'migrationDex': value['migrationDex'],\n 'image': value['image'],\n 'mintAddress': value['mintAddress'],\n 'description': value['description'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface PumpCreateTokenReply\n */\nexport interface PumpCreateTokenReply {\n /**\n * DTO.DEX.PUMPFUN.MINT.SERIALIZED_TX\n * @type {string}\n * @memberof PumpCreateTokenReply\n */\n serializedTx: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.EXTRA\n * @type {object}\n * @memberof PumpCreateTokenReply\n */\n extra?: object;\n}\n\n/**\n * Check if a given object implements the PumpCreateTokenReply interface.\n */\nexport function instanceOfPumpCreateTokenReply(value: object): value is PumpCreateTokenReply {\n if (!('serializedTx' in value) || value['serializedTx'] === undefined) return false;\n return true;\n}\n\nexport function PumpCreateTokenReplyFromJSON(json: any): PumpCreateTokenReply {\n return PumpCreateTokenReplyFromJSONTyped(json, false);\n}\n\nexport function PumpCreateTokenReplyFromJSONTyped(json: any, ignoreDiscriminator: boolean): PumpCreateTokenReply {\n if (json == null) {\n return json;\n }\n return {\n \n 'serializedTx': json['serializedTx'],\n 'extra': json['extra'] == null ? undefined : json['extra'],\n };\n}\n\nexport function PumpCreateTokenReplyToJSON(json: any): PumpCreateTokenReply {\n return PumpCreateTokenReplyToJSONTyped(json, false);\n}\n\nexport function PumpCreateTokenReplyToJSONTyped(value?: PumpCreateTokenReply | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'serializedTx': value['serializedTx'],\n 'extra': value['extra'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface QuoteResponse\n */\nexport interface QuoteResponse {\n /**\n * DTO.DEX.QUOTE.AMOUNT_OUT\n * @type {string}\n * @memberof QuoteResponse\n */\n amountOut?: string;\n /**\n * DTO.DEX.QUOTE.MIN_AMOUNT_OUT\n * @type {string}\n * @memberof QuoteResponse\n */\n minAmountOut?: string;\n /**\n * DTO.DEX.QUOTE.CURRENT_PRICE\n * @type {string}\n * @memberof QuoteResponse\n */\n currentPrice?: string;\n /**\n * DTO.DEX.QUOTE.EXECUTION_PRICE\n * @type {string}\n * @memberof QuoteResponse\n */\n executionPrice?: string;\n /**\n * DTO.DEX.QUOTE.PRICE_IMPACT\n * @type {string}\n * @memberof QuoteResponse\n */\n priceImpact?: string;\n /**\n * DTO.DEX.QUOTE.FEE\n * @type {string}\n * @memberof QuoteResponse\n */\n fee?: string;\n}\n\n/**\n * Check if a given object implements the QuoteResponse interface.\n */\nexport function instanceOfQuoteResponse(value: object): value is QuoteResponse {\n return true;\n}\n\nexport function QuoteResponseFromJSON(json: any): QuoteResponse {\n return QuoteResponseFromJSONTyped(json, false);\n}\n\nexport function QuoteResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): QuoteResponse {\n if (json == null) {\n return json;\n }\n return {\n \n 'amountOut': json['amountOut'] == null ? undefined : json['amountOut'],\n 'minAmountOut': json['minAmountOut'] == null ? undefined : json['minAmountOut'],\n 'currentPrice': json['currentPrice'] == null ? undefined : json['currentPrice'],\n 'executionPrice': json['executionPrice'] == null ? undefined : json['executionPrice'],\n 'priceImpact': json['priceImpact'] == null ? undefined : json['priceImpact'],\n 'fee': json['fee'] == null ? undefined : json['fee'],\n };\n}\n\nexport function QuoteResponseToJSON(json: any): QuoteResponse {\n return QuoteResponseToJSONTyped(json, false);\n}\n\nexport function QuoteResponseToJSONTyped(value?: QuoteResponse | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'amountOut': value['amountOut'],\n 'minAmountOut': value['minAmountOut'],\n 'currentPrice': value['currentPrice'],\n 'executionPrice': value['executionPrice'],\n 'priceImpact': value['priceImpact'],\n 'fee': value['fee'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { Chain } from './Chain';\nimport {\n ChainFromJSON,\n ChainFromJSONTyped,\n ChainToJSON,\n ChainToJSONTyped,\n} from './Chain';\n\n/**\n * \n * @export\n * @interface RedPacketClaimDTO\n */\nexport interface RedPacketClaimDTO {\n /**\n * DTO.RED_PACKET.PACKET_ID\n * @type {string}\n * @memberof RedPacketClaimDTO\n */\n packetId: string;\n /**\n * DTO.RED_PACKET.CHAIN\n * @type {Chain}\n * @memberof RedPacketClaimDTO\n */\n chain: Chain;\n /**\n * DTO.RED_PACKET.CLAIMER\n * @type {string}\n * @memberof RedPacketClaimDTO\n */\n claimer: string;\n /**\n * DTO.RED_PACKET.MINT\n * @type {string}\n * @memberof RedPacketClaimDTO\n */\n mint: string;\n /**\n * DTO.RED_PACKET.AMOUNT\n * @type {string}\n * @memberof RedPacketClaimDTO\n */\n amount: string;\n /**\n * DTO.RED_PACKET.CLAIMED_AT\n * @type {number}\n * @memberof RedPacketClaimDTO\n */\n claimedAt: number;\n /**\n * DTO.RED_PACKET.CREATOR\n * @type {string}\n * @memberof RedPacketClaimDTO\n */\n creator: string;\n /**\n * DTO.RED_PACKET.TX_HASH\n * @type {string}\n * @memberof RedPacketClaimDTO\n */\n txHash: string;\n}\n\n\n\n/**\n * Check if a given object implements the RedPacketClaimDTO interface.\n */\nexport function instanceOfRedPacketClaimDTO(value: object): value is RedPacketClaimDTO {\n if (!('packetId' in value) || value['packetId'] === undefined) return false;\n if (!('chain' in value) || value['chain'] === undefined) return false;\n if (!('claimer' in value) || value['claimer'] === undefined) return false;\n if (!('mint' in value) || value['mint'] === undefined) return false;\n if (!('amount' in value) || value['amount'] === undefined) return false;\n if (!('claimedAt' in value) || value['claimedAt'] === undefined) return false;\n if (!('creator' in value) || value['creator'] === undefined) return false;\n if (!('txHash' in value) || value['txHash'] === undefined) return false;\n return true;\n}\n\nexport function RedPacketClaimDTOFromJSON(json: any): RedPacketClaimDTO {\n return RedPacketClaimDTOFromJSONTyped(json, false);\n}\n\nexport function RedPacketClaimDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): RedPacketClaimDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'packetId': json['packetId'],\n 'chain': ChainFromJSON(json['chain']),\n 'claimer': json['claimer'],\n 'mint': json['mint'],\n 'amount': json['amount'],\n 'claimedAt': json['claimedAt'],\n 'creator': json['creator'],\n 'txHash': json['txHash'],\n };\n}\n\nexport function RedPacketClaimDTOToJSON(json: any): RedPacketClaimDTO {\n return RedPacketClaimDTOToJSONTyped(json, false);\n}\n\nexport function RedPacketClaimDTOToJSONTyped(value?: RedPacketClaimDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'packetId': value['packetId'],\n 'chain': ChainToJSON(value['chain']),\n 'claimer': value['claimer'],\n 'mint': value['mint'],\n 'amount': value['amount'],\n 'claimedAt': value['claimedAt'],\n 'creator': value['creator'],\n 'txHash': value['txHash'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { RedPacketClaimDTO } from './RedPacketClaimDTO';\nimport {\n RedPacketClaimDTOFromJSON,\n RedPacketClaimDTOFromJSONTyped,\n RedPacketClaimDTOToJSON,\n RedPacketClaimDTOToJSONTyped,\n} from './RedPacketClaimDTO';\n\n/**\n * \n * @export\n * @interface RedPacketClaimsPage\n */\nexport interface RedPacketClaimsPage {\n /**\n * DTO.PAGE.TOTAL\n * @type {number}\n * @memberof RedPacketClaimsPage\n */\n total: number;\n /**\n * DTO.PAGE.HAS_NEXT\n * @type {boolean}\n * @memberof RedPacketClaimsPage\n */\n hasNextPage: boolean;\n /**\n * DTO.PAGE.START_CURSOR\n * @type {string}\n * @memberof RedPacketClaimsPage\n */\n startCursor: string;\n /**\n * DTO.PAGE.END_CURSOR\n * @type {string}\n * @memberof RedPacketClaimsPage\n */\n endCursor: string;\n /**\n * Array of claim records\n * @type {Array<RedPacketClaimDTO>}\n * @memberof RedPacketClaimsPage\n */\n records: Array<RedPacketClaimDTO>;\n}\n\n/**\n * Check if a given object implements the RedPacketClaimsPage interface.\n */\nexport function instanceOfRedPacketClaimsPage(value: object): value is RedPacketClaimsPage {\n if (!('total' in value) || value['total'] === undefined) return false;\n if (!('hasNextPage' in value) || value['hasNextPage'] === undefined) return false;\n if (!('startCursor' in value) || value['startCursor'] === undefined) return false;\n if (!('endCursor' in value) || value['endCursor'] === undefined) return false;\n if (!('records' in value) || value['records'] === undefined) return false;\n return true;\n}\n\nexport function RedPacketClaimsPageFromJSON(json: any): RedPacketClaimsPage {\n return RedPacketClaimsPageFromJSONTyped(json, false);\n}\n\nexport function RedPacketClaimsPageFromJSONTyped(json: any, ignoreDiscriminator: boolean): RedPacketClaimsPage {\n if (json == null) {\n return json;\n }\n return {\n \n 'total': json['total'],\n 'hasNextPage': json['hasNextPage'],\n 'startCursor': json['startCursor'],\n 'endCursor': json['endCursor'],\n 'records': ((json['records'] as Array<any>).map(RedPacketClaimDTOFromJSON)),\n };\n}\n\nexport function RedPacketClaimsPageToJSON(json: any): RedPacketClaimsPage {\n return RedPacketClaimsPageToJSONTyped(json, false);\n}\n\nexport function RedPacketClaimsPageToJSONTyped(value?: RedPacketClaimsPage | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'total': value['total'],\n 'hasNextPage': value['hasNextPage'],\n 'startCursor': value['startCursor'],\n 'endCursor': value['endCursor'],\n 'records': ((value['records'] as Array<any>).map(RedPacketClaimDTOToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { Chain } from './Chain';\nimport {\n ChainFromJSON,\n ChainFromJSONTyped,\n ChainToJSON,\n ChainToJSONTyped,\n} from './Chain';\n\n/**\n * \n * @export\n * @interface RedPacketDTO\n */\nexport interface RedPacketDTO {\n /**\n * GLOBAL.CHAIN.DESCRIPTION\n * @type {Chain}\n * @memberof RedPacketDTO\n */\n chain: Chain;\n /**\n * DTO.RED_PACKET.ID\n * @type {string}\n * @memberof RedPacketDTO\n */\n id: string;\n /**\n * DTO.RED_PACKET.SHARE_ID\n * @type {string}\n * @memberof RedPacketDTO\n */\n shareId: string;\n /**\n * DTO.RED_PACKET.TX_HASH\n * @type {string}\n * @memberof RedPacketDTO\n */\n txHash: string;\n /**\n * DTO.RED_PACKET.CREATOR\n * @type {string}\n * @memberof RedPacketDTO\n */\n creator: string;\n /**\n * DTO.RED_PACKET.MINT\n * @type {string}\n * @memberof RedPacketDTO\n */\n mint: string;\n /**\n * DTO.RED_PACKET.TOTAL_AMOUNT\n * @type {string}\n * @memberof RedPacketDTO\n */\n totalAmount: string;\n /**\n * DTO.RED_PACKET.MEMO\n * @type {string}\n * @memberof RedPacketDTO\n */\n memo: string;\n /**\n * DTO.RED_PACKET.MAX_CLAIMS\n * @type {number}\n * @memberof RedPacketDTO\n */\n maxClaims: number;\n /**\n * DTO.RED_PACKET.CLAIM_AUTHORITY\n * @type {string}\n * @memberof RedPacketDTO\n */\n claimAuthority: string;\n /**\n * DTO.RED_PACKET.WITHDRAWED\n * @type {boolean}\n * @memberof RedPacketDTO\n */\n expired: boolean;\n /**\n * DTO.RED_PACKET.EXPIRATION\n * @type {number}\n * @memberof RedPacketDTO\n */\n expiration: number;\n /**\n * DTO.RED_PACKET.CREATED_AT\n * @type {number}\n * @memberof RedPacketDTO\n */\n createdAt: number;\n /**\n * DTO.RED_PACKET.EXPIRES_AT\n * @type {number}\n * @memberof RedPacketDTO\n */\n expiredAt: number;\n /**\n * DTO.RED_PACKET.CLAIMED_COUNT\n * @type {number}\n * @memberof RedPacketDTO\n */\n claimedCount: number;\n /**\n * DTO.RED_PACKET.CLAIMED_AMOUNT\n * @type {string}\n * @memberof RedPacketDTO\n */\n claimedAmount: string;\n /**\n * DTO.RED_PACKET.REFUND_AMOUNT\n * @type {string}\n * @memberof RedPacketDTO\n */\n refundedAmount: string;\n}\n\n\n\n/**\n * Check if a given object implements the RedPacketDTO interface.\n */\nexport function instanceOfRedPacketDTO(value: object): value is RedPacketDTO {\n if (!('chain' in value) || value['chain'] === undefined) return false;\n if (!('id' in value) || value['id'] === undefined) return false;\n if (!('shareId' in value) || value['shareId'] === undefined) return false;\n if (!('txHash' in value) || value['txHash'] === undefined) return false;\n if (!('creator' in value) || value['creator'] === undefined) return false;\n if (!('mint' in value) || value['mint'] === undefined) return false;\n if (!('totalAmount' in value) || value['totalAmount'] === undefined) return false;\n if (!('memo' in value) || value['memo'] === undefined) return false;\n if (!('maxClaims' in value) || value['maxClaims'] === undefined) return false;\n if (!('claimAuthority' in value) || value['claimAuthority'] === undefined) return false;\n if (!('expired' in value) || value['expired'] === undefined) return false;\n if (!('expiration' in value) || value['expiration'] === undefined) return false;\n if (!('createdAt' in value) || value['createdAt'] === undefined) return false;\n if (!('expiredAt' in value) || value['expiredAt'] === undefined) return false;\n if (!('claimedCount' in value) || value['claimedCount'] === undefined) return false;\n if (!('claimedAmount' in value) || value['claimedAmount'] === undefined) return false;\n if (!('refundedAmount' in value) || value['refundedAmount'] === undefined) return false;\n return true;\n}\n\nexport function RedPacketDTOFromJSON(json: any): RedPacketDTO {\n return RedPacketDTOFromJSONTyped(json, false);\n}\n\nexport function RedPacketDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): RedPacketDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'chain': ChainFromJSON(json['chain']),\n 'id': json['id'],\n 'shareId': json['shareId'],\n 'txHash': json['txHash'],\n 'creator': json['creator'],\n 'mint': json['mint'],\n 'totalAmount': json['totalAmount'],\n 'memo': json['memo'],\n 'maxClaims': json['maxClaims'],\n 'claimAuthority': json['claimAuthority'],\n 'expired': json['expired'],\n 'expiration': json['expiration'],\n 'createdAt': json['createdAt'],\n 'expiredAt': json['expiredAt'],\n 'claimedCount': json['claimedCount'],\n 'claimedAmount': json['claimedAmount'],\n 'refundedAmount': json['refundedAmount'],\n };\n}\n\nexport function RedPacketDTOToJSON(json: any): RedPacketDTO {\n return RedPacketDTOToJSONTyped(json, false);\n}\n\nexport function RedPacketDTOToJSONTyped(value?: RedPacketDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'chain': ChainToJSON(value['chain']),\n 'id': value['id'],\n 'shareId': value['shareId'],\n 'txHash': value['txHash'],\n 'creator': value['creator'],\n 'mint': value['mint'],\n 'totalAmount': value['totalAmount'],\n 'memo': value['memo'],\n 'maxClaims': value['maxClaims'],\n 'claimAuthority': value['claimAuthority'],\n 'expired': value['expired'],\n 'expiration': value['expiration'],\n 'createdAt': value['createdAt'],\n 'expiredAt': value['expiredAt'],\n 'claimedCount': value['claimedCount'],\n 'claimedAmount': value['claimedAmount'],\n 'refundedAmount': value['refundedAmount'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface RedPacketReply\n */\nexport interface RedPacketReply {\n /**\n * DTO.RED_PACKET.SERIALIZED_TX\n * @type {string}\n * @memberof RedPacketReply\n */\n txSerialize: string;\n}\n\n/**\n * Check if a given object implements the RedPacketReply interface.\n */\nexport function instanceOfRedPacketReply(value: object): value is RedPacketReply {\n if (!('txSerialize' in value) || value['txSerialize'] === undefined) return false;\n return true;\n}\n\nexport function RedPacketReplyFromJSON(json: any): RedPacketReply {\n return RedPacketReplyFromJSONTyped(json, false);\n}\n\nexport function RedPacketReplyFromJSONTyped(json: any, ignoreDiscriminator: boolean): RedPacketReply {\n if (json == null) {\n return json;\n }\n return {\n \n 'txSerialize': json['txSerialize'],\n };\n}\n\nexport function RedPacketReplyToJSON(json: any): RedPacketReply {\n return RedPacketReplyToJSONTyped(json, false);\n}\n\nexport function RedPacketReplyToJSONTyped(value?: RedPacketReply | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'txSerialize': value['txSerialize'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface RedPacketSendTxInput\n */\nexport interface RedPacketSendTxInput {\n /**\n * DTO.RED_PACKET.SIGNED_TX\n * @type {string}\n * @memberof RedPacketSendTxInput\n */\n signedTx: string;\n}\n\n/**\n * Check if a given object implements the RedPacketSendTxInput interface.\n */\nexport function instanceOfRedPacketSendTxInput(value: object): value is RedPacketSendTxInput {\n if (!('signedTx' in value) || value['signedTx'] === undefined) return false;\n return true;\n}\n\nexport function RedPacketSendTxInputFromJSON(json: any): RedPacketSendTxInput {\n return RedPacketSendTxInputFromJSONTyped(json, false);\n}\n\nexport function RedPacketSendTxInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): RedPacketSendTxInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'signedTx': json['signedTx'],\n };\n}\n\nexport function RedPacketSendTxInputToJSON(json: any): RedPacketSendTxInput {\n return RedPacketSendTxInputToJSONTyped(json, false);\n}\n\nexport function RedPacketSendTxInputToJSONTyped(value?: RedPacketSendTxInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'signedTx': value['signedTx'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface RedPacketSendTxResponse\n */\nexport interface RedPacketSendTxResponse {\n /**\n * DTO.RED_PACKET.SIGNATURE\n * @type {string}\n * @memberof RedPacketSendTxResponse\n */\n signature: string;\n}\n\n/**\n * Check if a given object implements the RedPacketSendTxResponse interface.\n */\nexport function instanceOfRedPacketSendTxResponse(value: object): value is RedPacketSendTxResponse {\n if (!('signature' in value) || value['signature'] === undefined) return false;\n return true;\n}\n\nexport function RedPacketSendTxResponseFromJSON(json: any): RedPacketSendTxResponse {\n return RedPacketSendTxResponseFromJSONTyped(json, false);\n}\n\nexport function RedPacketSendTxResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): RedPacketSendTxResponse {\n if (json == null) {\n return json;\n }\n return {\n \n 'signature': json['signature'],\n };\n}\n\nexport function RedPacketSendTxResponseToJSON(json: any): RedPacketSendTxResponse {\n return RedPacketSendTxResponseToJSONTyped(json, false);\n}\n\nexport function RedPacketSendTxResponseToJSONTyped(value?: RedPacketSendTxResponse | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'signature': value['signature'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { RedPacketDTO } from './RedPacketDTO';\nimport {\n RedPacketDTOFromJSON,\n RedPacketDTOFromJSONTyped,\n RedPacketDTOToJSON,\n RedPacketDTOToJSONTyped,\n} from './RedPacketDTO';\n\n/**\n * \n * @export\n * @interface RedPacketsPage\n */\nexport interface RedPacketsPage {\n /**\n * DTO.PAGE.TOTAL\n * @type {number}\n * @memberof RedPacketsPage\n */\n total: number;\n /**\n * DTO.PAGE.HAS_NEXT\n * @type {boolean}\n * @memberof RedPacketsPage\n */\n hasNextPage: boolean;\n /**\n * DTO.PAGE.START_CURSOR\n * @type {string}\n * @memberof RedPacketsPage\n */\n startCursor: string;\n /**\n * DTO.PAGE.END_CURSOR\n * @type {string}\n * @memberof RedPacketsPage\n */\n endCursor: string;\n /**\n * Array of red packets\n * @type {Array<RedPacketDTO>}\n * @memberof RedPacketsPage\n */\n records: Array<RedPacketDTO>;\n}\n\n/**\n * Check if a given object implements the RedPacketsPage interface.\n */\nexport function instanceOfRedPacketsPage(value: object): value is RedPacketsPage {\n if (!('total' in value) || value['total'] === undefined) return false;\n if (!('hasNextPage' in value) || value['hasNextPage'] === undefined) return false;\n if (!('startCursor' in value) || value['startCursor'] === undefined) return false;\n if (!('endCursor' in value) || value['endCursor'] === undefined) return false;\n if (!('records' in value) || value['records'] === undefined) return false;\n return true;\n}\n\nexport function RedPacketsPageFromJSON(json: any): RedPacketsPage {\n return RedPacketsPageFromJSONTyped(json, false);\n}\n\nexport function RedPacketsPageFromJSONTyped(json: any, ignoreDiscriminator: boolean): RedPacketsPage {\n if (json == null) {\n return json;\n }\n return {\n \n 'total': json['total'],\n 'hasNextPage': json['hasNextPage'],\n 'startCursor': json['startCursor'],\n 'endCursor': json['endCursor'],\n 'records': ((json['records'] as Array<any>).map(RedPacketDTOFromJSON)),\n };\n}\n\nexport function RedPacketsPageToJSON(json: any): RedPacketsPage {\n return RedPacketsPageToJSONTyped(json, false);\n}\n\nexport function RedPacketsPageToJSONTyped(value?: RedPacketsPage | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'total': value['total'],\n 'hasNextPage': value['hasNextPage'],\n 'startCursor': value['startCursor'],\n 'endCursor': value['endCursor'],\n 'records': ((value['records'] as Array<any>).map(RedPacketDTOToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface SendTxInput\n */\nexport interface SendTxInput {\n /**\n * DTO.TRANSACTION.SEND.SIGNED_TX\n * @type {string}\n * @memberof SendTxInput\n */\n signedTx: string;\n /**\n * DTO.TRANSACTION.SEND.SUBMIT_TYPE\n * @type {string}\n * @memberof SendTxInput\n */\n submitType?: SendTxInputSubmitTypeEnum;\n /**\n * DTO.TRANSACTION.SEND.OPTIONS\n * @type {object}\n * @memberof SendTxInput\n */\n options?: object;\n}\n\n\n/**\n * @export\n */\nexport const SendTxInputSubmitTypeEnum = {\n Default: 'default',\n Priority: 'priority'\n} as const;\nexport type SendTxInputSubmitTypeEnum = typeof SendTxInputSubmitTypeEnum[keyof typeof SendTxInputSubmitTypeEnum];\n\n\n/**\n * Check if a given object implements the SendTxInput interface.\n */\nexport function instanceOfSendTxInput(value: object): value is SendTxInput {\n if (!('signedTx' in value) || value['signedTx'] === undefined) return false;\n return true;\n}\n\nexport function SendTxInputFromJSON(json: any): SendTxInput {\n return SendTxInputFromJSONTyped(json, false);\n}\n\nexport function SendTxInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): SendTxInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'signedTx': json['signedTx'],\n 'submitType': json['submitType'] == null ? undefined : json['submitType'],\n 'options': json['options'] == null ? undefined : json['options'],\n };\n}\n\nexport function SendTxInputToJSON(json: any): SendTxInput {\n return SendTxInputToJSONTyped(json, false);\n}\n\nexport function SendTxInputToJSONTyped(value?: SendTxInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'signedTx': value['signedTx'],\n 'submitType': value['submitType'],\n 'options': value['options'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface SendTxResponse\n */\nexport interface SendTxResponse {\n /**\n * DTO.TRANSACTION.SEND.SIGNATURE\n * @type {string}\n * @memberof SendTxResponse\n */\n signature: string;\n /**\n * DTO.TRANSACTION.SEND.ELAPSED_TIME\n * @type {number}\n * @memberof SendTxResponse\n */\n elapsedTime: number;\n /**\n * DTO.TRANSACTION.SEND.JOB_ID\n * @type {string}\n * @memberof SendTxResponse\n */\n jobId: string;\n}\n\n/**\n * Check if a given object implements the SendTxResponse interface.\n */\nexport function instanceOfSendTxResponse(value: object): value is SendTxResponse {\n if (!('signature' in value) || value['signature'] === undefined) return false;\n if (!('elapsedTime' in value) || value['elapsedTime'] === undefined) return false;\n if (!('jobId' in value) || value['jobId'] === undefined) return false;\n return true;\n}\n\nexport function SendTxResponseFromJSON(json: any): SendTxResponse {\n return SendTxResponseFromJSONTyped(json, false);\n}\n\nexport function SendTxResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): SendTxResponse {\n if (json == null) {\n return json;\n }\n return {\n \n 'signature': json['signature'],\n 'elapsedTime': json['elapsedTime'],\n 'jobId': json['jobId'],\n };\n}\n\nexport function SendTxResponseToJSON(json: any): SendTxResponse {\n return SendTxResponseToJSONTyped(json, false);\n}\n\nexport function SendTxResponseToJSONTyped(value?: SendTxResponse | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'signature': value['signature'],\n 'elapsedTime': value['elapsedTime'],\n 'jobId': value['jobId'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface SwapInput\n */\nexport interface SwapInput {\n /**\n * DTO.DEX.IDENTIFIER\n * @type {string}\n * @memberof SwapInput\n */\n dex: SwapInputDexEnum;\n /**\n * DTO.DEX.WALLET\n * @type {string}\n * @memberof SwapInput\n */\n userAddress: string;\n /**\n * DTO.DEX.BASE.PRIORITY_FEE\n * @type {string}\n * @memberof SwapInput\n */\n priorityFee?: string;\n /**\n * DTO.DEX.SWAP.POOL_ADDRESS\n * @type {string}\n * @memberof SwapInput\n */\n poolAddress?: string;\n /**\n * DTO.DEX.SWAP.AMOUNT\n * @type {string}\n * @memberof SwapInput\n */\n amount: string;\n /**\n * DTO.DEX.SWAP.MODE\n * @type {string}\n * @memberof SwapInput\n */\n swapMode: SwapInputSwapModeEnum;\n /**\n * DTO.DEX.SWAP.SLIPPAGE\n * @type {number}\n * @memberof SwapInput\n */\n slippage: number;\n /**\n * DTO.DEX.SWAP.INPUT_MINT\n * @type {string}\n * @memberof SwapInput\n */\n inputMint?: string;\n /**\n * DTO.DEX.SWAP.OUTPUT_MINT\n * @type {string}\n * @memberof SwapInput\n */\n outputMint?: string;\n}\n\n\n/**\n * @export\n */\nexport const SwapInputDexEnum = {\n Raydium: 'raydium',\n Pumpfun: 'pumpfun',\n Moonshot: 'moonshot',\n Candy: 'candy',\n Launchpad: 'launchpad'\n} as const;\nexport type SwapInputDexEnum = typeof SwapInputDexEnum[keyof typeof SwapInputDexEnum];\n\n/**\n * @export\n */\nexport const SwapInputSwapModeEnum = {\n ExactIn: 'ExactIn',\n ExactOut: 'ExactOut'\n} as const;\nexport type SwapInputSwapModeEnum = typeof SwapInputSwapModeEnum[keyof typeof SwapInputSwapModeEnum];\n\n\n/**\n * Check if a given object implements the SwapInput interface.\n */\nexport function instanceOfSwapInput(value: object): value is SwapInput {\n if (!('dex' in value) || value['dex'] === undefined) return false;\n if (!('userAddress' in value) || value['userAddress'] === undefined) return false;\n if (!('amount' in value) || value['amount'] === undefined) return false;\n if (!('swapMode' in value) || value['swapMode'] === undefined) return false;\n if (!('slippage' in value) || value['slippage'] === undefined) return false;\n return true;\n}\n\nexport function SwapInputFromJSON(json: any): SwapInput {\n return SwapInputFromJSONTyped(json, false);\n}\n\nexport function SwapInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): SwapInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'dex': json['dex'],\n 'userAddress': json['userAddress'],\n 'priorityFee': json['priorityFee'] == null ? undefined : json['priorityFee'],\n 'poolAddress': json['poolAddress'] == null ? undefined : json['poolAddress'],\n 'amount': json['amount'],\n 'swapMode': json['swapMode'],\n 'slippage': json['slippage'],\n 'inputMint': json['inputMint'] == null ? undefined : json['inputMint'],\n 'outputMint': json['outputMint'] == null ? undefined : json['outputMint'],\n };\n}\n\nexport function SwapInputToJSON(json: any): SwapInput {\n return SwapInputToJSONTyped(json, false);\n}\n\nexport function SwapInputToJSONTyped(value?: SwapInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'dex': value['dex'],\n 'userAddress': value['userAddress'],\n 'priorityFee': value['priorityFee'],\n 'poolAddress': value['poolAddress'],\n 'amount': value['amount'],\n 'swapMode': value['swapMode'],\n 'slippage': value['slippage'],\n 'inputMint': value['inputMint'],\n 'outputMint': value['outputMint'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface SwapReply\n */\nexport interface SwapReply {\n /**\n * DTO.DEX.SWAP.SERIALIZED_TX\n * @type {string}\n * @memberof SwapReply\n */\n serializedTx: string;\n /**\n * DTO.DEX.SWAP.ELAPSED_TIME\n * @type {number}\n * @memberof SwapReply\n */\n elapsedTime: number;\n}\n\n/**\n * Check if a given object implements the SwapReply interface.\n */\nexport function instanceOfSwapReply(value: object): value is SwapReply {\n if (!('serializedTx' in value) || value['serializedTx'] === undefined) return false;\n if (!('elapsedTime' in value) || value['elapsedTime'] === undefined) return false;\n return true;\n}\n\nexport function SwapReplyFromJSON(json: any): SwapReply {\n return SwapReplyFromJSONTyped(json, false);\n}\n\nexport function SwapReplyFromJSONTyped(json: any, ignoreDiscriminator: boolean): SwapReply {\n if (json == null) {\n return json;\n }\n return {\n \n 'serializedTx': json['serializedTx'],\n 'elapsedTime': json['elapsedTime'],\n };\n}\n\nexport function SwapReplyToJSON(json: any): SwapReply {\n return SwapReplyToJSONTyped(json, false);\n}\n\nexport function SwapReplyToJSONTyped(value?: SwapReply | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'serializedTx': value['serializedTx'],\n 'elapsedTime': value['elapsedTime'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface SwapRouteInput\n */\nexport interface SwapRouteInput {\n /**\n * DTO.DEX.IDENTIFIER\n * @type {string}\n * @memberof SwapRouteInput\n */\n dex: SwapRouteInputDexEnum;\n /**\n * DTO.DEX.WALLET\n * @type {string}\n * @memberof SwapRouteInput\n */\n userAddress: string;\n /**\n * DTO.DEX.BASE.PRIORITY_FEE\n * @type {string}\n * @memberof SwapRouteInput\n */\n priorityFee?: string;\n /**\n * DTO.DEX.SWAP.AMOUNT\n * @type {string}\n * @memberof SwapRouteInput\n */\n amount: string;\n /**\n * DTO.DEX.SWAP.MODE\n * @type {string}\n * @memberof SwapRouteInput\n */\n swapMode: SwapRouteInputSwapModeEnum;\n /**\n * DTO.DEX.SWAP.SLIPPAGE\n * @type {number}\n * @memberof SwapRouteInput\n */\n slippage: number;\n /**\n * DTO.DEX.SWAP.INPUT_MINT\n * @type {string}\n * @memberof SwapRouteInput\n */\n inputMint?: string;\n /**\n * DTO.DEX.SWAP.OUTPUT_MINT\n * @type {string}\n * @memberof SwapRouteInput\n */\n outputMint?: string;\n /**\n * DTO.DEX.SWAP.RECIPIENT_ADDRESS\n * @type {string}\n * @memberof SwapRouteInput\n */\n recipientAddress?: string;\n /**\n * DTO.DEX.SWAP.PERMIT\n * @type {string}\n * @memberof SwapRouteInput\n */\n permit?: string;\n /**\n * DTO.DEX.SWAP.DEADLINE\n * @type {number}\n * @memberof SwapRouteInput\n */\n deadline?: number;\n /**\n * DTO.DEX.BASE.TIP_FEE\n * @type {string}\n * @memberof SwapRouteInput\n */\n tipFee?: string;\n /**\n * DTO.DEX.BASE.IS_ANTI_MEV\n * @type {boolean}\n * @memberof SwapRouteInput\n */\n isAntiMev?: boolean;\n}\n\n\n/**\n * @export\n */\nexport const SwapRouteInputDexEnum = {\n Jupiter: 'jupiter',\n Kyberswap: 'kyberswap'\n} as const;\nexport type SwapRouteInputDexEnum = typeof SwapRouteInputDexEnum[keyof typeof SwapRouteInputDexEnum];\n\n/**\n * @export\n */\nexport const SwapRouteInputSwapModeEnum = {\n ExactIn: 'ExactIn',\n ExactOut: 'ExactOut'\n} as const;\nexport type SwapRouteInputSwapModeEnum = typeof SwapRouteInputSwapModeEnum[keyof typeof SwapRouteInputSwapModeEnum];\n\n\n/**\n * Check if a given object implements the SwapRouteInput interface.\n */\nexport function instanceOfSwapRouteInput(value: object): value is SwapRouteInput {\n if (!('dex' in value) || value['dex'] === undefined) return false;\n if (!('userAddress' in value) || value['userAddress'] === undefined) return false;\n if (!('amount' in value) || value['amount'] === undefined) return false;\n if (!('swapMode' in value) || value['swapMode'] === undefined) return false;\n if (!('slippage' in value) || value['slippage'] === undefined) return false;\n return true;\n}\n\nexport function SwapRouteInputFromJSON(json: any): SwapRouteInput {\n return SwapRouteInputFromJSONTyped(json, false);\n}\n\nexport function SwapRouteInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): SwapRouteInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'dex': json['dex'],\n 'userAddress': json['userAddress'],\n 'priorityFee': json['priorityFee'] == null ? undefined : json['priorityFee'],\n 'amount': json['amount'],\n 'swapMode': json['swapMode'],\n 'slippage': json['slippage'],\n 'inputMint': json['inputMint'] == null ? undefined : json['inputMint'],\n 'outputMint': json['outputMint'] == null ? undefined : json['outputMint'],\n 'recipientAddress': json['recipientAddress'] == null ? undefined : json['recipientAddress'],\n 'permit': json['permit'] == null ? undefined : json['permit'],\n 'deadline': json['deadline'] == null ? undefined : json['deadline'],\n 'tipFee': json['tipFee'] == null ? undefined : json['tipFee'],\n 'isAntiMev': json['isAntiMev'] == null ? undefined : json['isAntiMev'],\n };\n}\n\nexport function SwapRouteInputToJSON(json: any): SwapRouteInput {\n return SwapRouteInputToJSONTyped(json, false);\n}\n\nexport function SwapRouteInputToJSONTyped(value?: SwapRouteInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'dex': value['dex'],\n 'userAddress': value['userAddress'],\n 'priorityFee': value['priorityFee'],\n 'amount': value['amount'],\n 'swapMode': value['swapMode'],\n 'slippage': value['slippage'],\n 'inputMint': value['inputMint'],\n 'outputMint': value['outputMint'],\n 'recipientAddress': value['recipientAddress'],\n 'permit': value['permit'],\n 'deadline': value['deadline'],\n 'tipFee': value['tipFee'],\n 'isAntiMev': value['isAntiMev'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { SwapRouteInput } from './SwapRouteInput';\nimport {\n SwapRouteInputFromJSON,\n SwapRouteInputFromJSONTyped,\n SwapRouteInputToJSON,\n SwapRouteInputToJSONTyped,\n} from './SwapRouteInput';\n\n/**\n * \n * @export\n * @interface SwapRouteResponse\n */\nexport interface SwapRouteResponse {\n /**\n * DTO.DEX.SWAP.ARGS\n * @type {SwapRouteInput}\n * @memberof SwapRouteResponse\n */\n args: SwapRouteInput;\n /**\n * DTO.DEX.SWAP.SERIALIZED_TX\n * @type {string}\n * @memberof SwapRouteResponse\n */\n serializedTx: string;\n /**\n * DTO.DEX.SWAP.ROUTE_INFO\n * @type {object}\n * @memberof SwapRouteResponse\n */\n routeInfo: object;\n /**\n * DTO.DEX.SWAP.ELAPSED_TIME\n * @type {number}\n * @memberof SwapRouteResponse\n */\n elapsedTime: number;\n}\n\n/**\n * Check if a given object implements the SwapRouteResponse interface.\n */\nexport function instanceOfSwapRouteResponse(value: object): value is SwapRouteResponse {\n if (!('args' in value) || value['args'] === undefined) return false;\n if (!('serializedTx' in value) || value['serializedTx'] === undefined) return false;\n if (!('routeInfo' in value) || value['routeInfo'] === undefined) return false;\n if (!('elapsedTime' in value) || value['elapsedTime'] === undefined) return false;\n return true;\n}\n\nexport function SwapRouteResponseFromJSON(json: any): SwapRouteResponse {\n return SwapRouteResponseFromJSONTyped(json, false);\n}\n\nexport function SwapRouteResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): SwapRouteResponse {\n if (json == null) {\n return json;\n }\n return {\n \n 'args': SwapRouteInputFromJSON(json['args']),\n 'serializedTx': json['serializedTx'],\n 'routeInfo': json['routeInfo'],\n 'elapsedTime': json['elapsedTime'],\n };\n}\n\nexport function SwapRouteResponseToJSON(json: any): SwapRouteResponse {\n return SwapRouteResponseToJSONTyped(json, false);\n}\n\nexport function SwapRouteResponseToJSONTyped(value?: SwapRouteResponse | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'args': SwapRouteInputToJSON(value['args']),\n 'serializedTx': value['serializedTx'],\n 'routeInfo': value['routeInfo'],\n 'elapsedTime': value['elapsedTime'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TokenMarketData\n */\nexport interface TokenMarketData {\n /**\n * DTO.TOKEN.MARKET_CAP.TOTAL_SUPPLY\n * @type {string}\n * @memberof TokenMarketData\n */\n totalSupply: string;\n /**\n * DTO.TOKEN.MARKET_CAP.MARKET_CAP_IN_SOL\n * @type {string}\n * @memberof TokenMarketData\n */\n marketCapInSol?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.MARKET_CAP_IN_USD\n * @type {string}\n * @memberof TokenMarketData\n */\n marketCapInUsd: string;\n /**\n * DTO.TOKEN.MARKET_CAP.TOP10_TOTAL_HOLDINGS\n * @type {string}\n * @memberof TokenMarketData\n */\n top10TotalHoldings?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.TOP10_HOLDINGS_RATIO\n * @type {string}\n * @memberof TokenMarketData\n */\n top10HoldingsRatio?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.TOP100_TOTAL_HOLDINGS\n * @type {string}\n * @memberof TokenMarketData\n */\n top100TotalHoldings?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.TOP100_HOLDINGS_RATIO\n * @type {string}\n * @memberof TokenMarketData\n */\n top100HoldingsRatio?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.HOLDERS\n * @type {number}\n * @memberof TokenMarketData\n */\n holders: number;\n /**\n * DTO.TOKEN.MARKET_CAP.PRICE_IN_SOL\n * @type {string}\n * @memberof TokenMarketData\n */\n priceInSol?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.PRICE_IN_USD\n * @type {string}\n * @memberof TokenMarketData\n */\n priceInUsd: string;\n /**\n * DTO.TOKEN.MARKET_CAP.LIQUIDITY_IN_SOL\n * @type {string}\n * @memberof TokenMarketData\n */\n tvlInSol?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.LIQUIDITY_IN_USD\n * @type {string}\n * @memberof TokenMarketData\n */\n tvlInUsd: string;\n /**\n * DTO.TOKEN.MARKET_CAP.COMPLETION_RATIO\n * @type {string}\n * @memberof TokenMarketData\n */\n completionRatio?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.DEV_COUNT\n * @type {number}\n * @memberof TokenMarketData\n */\n devTeamCount?: number;\n /**\n * DTO.TOKEN.MARKET_CAP.DEV_AMOUNT\n * @type {string}\n * @memberof TokenMarketData\n */\n devTeamAmount?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.DEV_RATIO\n * @type {string}\n * @memberof TokenMarketData\n */\n devTeamRatio?: string;\n}\n\n/**\n * Check if a given object implements the TokenMarketData interface.\n */\nexport function instanceOfTokenMarketData(value: object): value is TokenMarketData {\n if (!('totalSupply' in value) || value['totalSupply'] === undefined) return false;\n if (!('marketCapInUsd' in value) || value['marketCapInUsd'] === undefined) return false;\n if (!('holders' in value) || value['holders'] === undefined) return false;\n if (!('priceInUsd' in value) || value['priceInUsd'] === undefined) return false;\n if (!('tvlInUsd' in value) || value['tvlInUsd'] === undefined) return false;\n return true;\n}\n\nexport function TokenMarketDataFromJSON(json: any): TokenMarketData {\n return TokenMarketDataFromJSONTyped(json, false);\n}\n\nexport function TokenMarketDataFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenMarketData {\n if (json == null) {\n return json;\n }\n return {\n \n 'totalSupply': json['totalSupply'],\n 'marketCapInSol': json['marketCapInSol'] == null ? undefined : json['marketCapInSol'],\n 'marketCapInUsd': json['marketCapInUsd'],\n 'top10TotalHoldings': json['top10TotalHoldings'] == null ? undefined : json['top10TotalHoldings'],\n 'top10HoldingsRatio': json['top10HoldingsRatio'] == null ? undefined : json['top10HoldingsRatio'],\n 'top100TotalHoldings': json['top100TotalHoldings'] == null ? undefined : json['top100TotalHoldings'],\n 'top100HoldingsRatio': json['top100HoldingsRatio'] == null ? undefined : json['top100HoldingsRatio'],\n 'holders': json['holders'],\n 'priceInSol': json['priceInSol'] == null ? undefined : json['priceInSol'],\n 'priceInUsd': json['priceInUsd'],\n 'tvlInSol': json['tvlInSol'] == null ? undefined : json['tvlInSol'],\n 'tvlInUsd': json['tvlInUsd'],\n 'completionRatio': json['completionRatio'] == null ? undefined : json['completionRatio'],\n 'devTeamCount': json['devTeamCount'] == null ? undefined : json['devTeamCount'],\n 'devTeamAmount': json['devTeamAmount'] == null ? undefined : json['devTeamAmount'],\n 'devTeamRatio': json['devTeamRatio'] == null ? undefined : json['devTeamRatio'],\n };\n}\n\nexport function TokenMarketDataToJSON(json: any): TokenMarketData {\n return TokenMarketDataToJSONTyped(json, false);\n}\n\nexport function TokenMarketDataToJSONTyped(value?: TokenMarketData | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'totalSupply': value['totalSupply'],\n 'marketCapInSol': value['marketCapInSol'],\n 'marketCapInUsd': value['marketCapInUsd'],\n 'top10TotalHoldings': value['top10TotalHoldings'],\n 'top10HoldingsRatio': value['top10HoldingsRatio'],\n 'top100TotalHoldings': value['top100TotalHoldings'],\n 'top100HoldingsRatio': value['top100HoldingsRatio'],\n 'holders': value['holders'],\n 'priceInSol': value['priceInSol'],\n 'priceInUsd': value['priceInUsd'],\n 'tvlInSol': value['tvlInSol'],\n 'tvlInUsd': value['tvlInUsd'],\n 'completionRatio': value['completionRatio'],\n 'devTeamCount': value['devTeamCount'],\n 'devTeamAmount': value['devTeamAmount'],\n 'devTeamRatio': value['devTeamRatio'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TokenExtraDTO\n */\nexport interface TokenExtraDTO {\n /**\n * DTO.TOKEN.EXTRA.COLLECTION_ADDRESS\n * @type {string}\n * @memberof TokenExtraDTO\n */\n collectionAddress?: string;\n /**\n * DTO.TOKEN.EXTRA.EDITION_NONCE\n * @type {number}\n * @memberof TokenExtraDTO\n */\n editionNonce?: number;\n /**\n * DTO.TOKEN.EXTRA.FUNGIBLE\n * @type {boolean}\n * @memberof TokenExtraDTO\n */\n fungible?: boolean;\n /**\n * DTO.TOKEN.EXTRA.IS_MUTABLE\n * @type {boolean}\n * @memberof TokenExtraDTO\n */\n isMutable?: boolean;\n /**\n * DTO.TOKEN.EXTRA.KEY\n * @type {string}\n * @memberof TokenExtraDTO\n */\n key?: string;\n /**\n * DTO.TOKEN.EXTRA.IS_NATIVE\n * @type {boolean}\n * @memberof TokenExtraDTO\n */\n isNative?: boolean;\n /**\n * DTO.TOKEN.EXTRA.PRIMARY_SALE_HAPPENED\n * @type {boolean}\n * @memberof TokenExtraDTO\n */\n primarySaleHappened?: boolean;\n /**\n * DTO.TOKEN.EXTRA.LAUNCH_FROM_PROGRAM_ADDRESS\n * @type {string}\n * @memberof TokenExtraDTO\n */\n launchFromProgramAddress?: string;\n /**\n * DTO.TOKEN.EXTRA.LAUNCH_FROM_PROTOCOL_FAMILY\n * @type {string}\n * @memberof TokenExtraDTO\n */\n launchFromProtocolFamily?: string;\n /**\n * DTO.TOKEN.EXTRA.PROGRAM_ADDRESS\n * @type {string}\n * @memberof TokenExtraDTO\n */\n programAddress?: string;\n /**\n * DTO.TOKEN.EXTRA.MIGRATED_TO_PROGRAM_ADDRESS\n * @type {string}\n * @memberof TokenExtraDTO\n */\n migratedToProgramAddress?: string;\n /**\n * DTO.TOKEN.EXTRA.MIGRATED_TO_PROTOCOL_FAMILY\n * @type {string}\n * @memberof TokenExtraDTO\n */\n migratedToProtocolFamily?: string;\n /**\n * DTO.TOKEN.EXTRA.MIGRATED_TO_POOL_ADDRESS\n * @type {string}\n * @memberof TokenExtraDTO\n */\n migratedToPoolAddress?: string;\n /**\n * DTO.TOKEN.EXTRA.MIGRATED_AT\n * @type {number}\n * @memberof TokenExtraDTO\n */\n migratedAt?: number;\n /**\n * DTO.TOKEN.EXTRA.SELLER_FEE_BASIS_POINTS\n * @type {number}\n * @memberof TokenExtraDTO\n */\n sellerFeeBasisPoints?: number;\n /**\n * DTO.TOKEN.EXTRA.TOKEN_STANDARD\n * @type {string}\n * @memberof TokenExtraDTO\n */\n tokenStandard?: string;\n /**\n * DTO.TOKEN.EXTRA.MINT_AUTHORITY\n * @type {string}\n * @memberof TokenExtraDTO\n */\n mintAuthority?: string;\n /**\n * DTO.TOKEN.EXTRA.FREEZE_AUTHORITY\n * @type {string}\n * @memberof TokenExtraDTO\n */\n freezeAuthority?: string;\n /**\n * DTO.TOKEN.EXTRA.UPDATE_AUTHORITY\n * @type {string}\n * @memberof TokenExtraDTO\n */\n updateAuthority?: string;\n /**\n * DTO.TOKEN.EXTRA.IS_VERIFIED_COLLECTION\n * @type {boolean}\n * @memberof TokenExtraDTO\n */\n isVerifiedCollection?: boolean;\n /**\n * DTO.TOKEN.EXTRA.IS_WRAPPED\n * @type {boolean}\n * @memberof TokenExtraDTO\n */\n isWrapped?: boolean;\n}\n\n/**\n * Check if a given object implements the TokenExtraDTO interface.\n */\nexport function instanceOfTokenExtraDTO(value: object): value is TokenExtraDTO {\n return true;\n}\n\nexport function TokenExtraDTOFromJSON(json: any): TokenExtraDTO {\n return TokenExtraDTOFromJSONTyped(json, false);\n}\n\nexport function TokenExtraDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenExtraDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'collectionAddress': json['collectionAddress'] == null ? undefined : json['collectionAddress'],\n 'editionNonce': json['editionNonce'] == null ? undefined : json['editionNonce'],\n 'fungible': json['fungible'] == null ? undefined : json['fungible'],\n 'isMutable': json['isMutable'] == null ? undefined : json['isMutable'],\n 'key': json['key'] == null ? undefined : json['key'],\n 'isNative': json['isNative'] == null ? undefined : json['isNative'],\n 'primarySaleHappened': json['primarySaleHappened'] == null ? undefined : json['primarySaleHappened'],\n 'launchFromProgramAddress': json['launchFromProgramAddress'] == null ? undefined : json['launchFromProgramAddress'],\n 'launchFromProtocolFamily': json['launchFromProtocolFamily'] == null ? undefined : json['launchFromProtocolFamily'],\n 'programAddress': json['programAddress'] == null ? undefined : json['programAddress'],\n 'migratedToProgramAddress': json['migratedToProgramAddress'] == null ? undefined : json['migratedToProgramAddress'],\n 'migratedToProtocolFamily': json['migratedToProtocolFamily'] == null ? undefined : json['migratedToProtocolFamily'],\n 'migratedToPoolAddress': json['migratedToPoolAddress'] == null ? undefined : json['migratedToPoolAddress'],\n 'migratedAt': json['migratedAt'] == null ? undefined : json['migratedAt'],\n 'sellerFeeBasisPoints': json['sellerFeeBasisPoints'] == null ? undefined : json['sellerFeeBasisPoints'],\n 'tokenStandard': json['tokenStandard'] == null ? undefined : json['tokenStandard'],\n 'mintAuthority': json['mintAuthority'] == null ? undefined : json['mintAuthority'],\n 'freezeAuthority': json['freezeAuthority'] == null ? undefined : json['freezeAuthority'],\n 'updateAuthority': json['updateAuthority'] == null ? undefined : json['updateAuthority'],\n 'isVerifiedCollection': json['isVerifiedCollection'] == null ? undefined : json['isVerifiedCollection'],\n 'isWrapped': json['isWrapped'] == null ? undefined : json['isWrapped'],\n };\n}\n\nexport function TokenExtraDTOToJSON(json: any): TokenExtraDTO {\n return TokenExtraDTOToJSONTyped(json, false);\n}\n\nexport function TokenExtraDTOToJSONTyped(value?: TokenExtraDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'collectionAddress': value['collectionAddress'],\n 'editionNonce': value['editionNonce'],\n 'fungible': value['fungible'],\n 'isMutable': value['isMutable'],\n 'key': value['key'],\n 'isNative': value['isNative'],\n 'primarySaleHappened': value['primarySaleHappened'],\n 'launchFromProgramAddress': value['launchFromProgramAddress'],\n 'launchFromProtocolFamily': value['launchFromProtocolFamily'],\n 'programAddress': value['programAddress'],\n 'migratedToProgramAddress': value['migratedToProgramAddress'],\n 'migratedToProtocolFamily': value['migratedToProtocolFamily'],\n 'migratedToPoolAddress': value['migratedToPoolAddress'],\n 'migratedAt': value['migratedAt'],\n 'sellerFeeBasisPoints': value['sellerFeeBasisPoints'],\n 'tokenStandard': value['tokenStandard'],\n 'mintAuthority': value['mintAuthority'],\n 'freezeAuthority': value['freezeAuthority'],\n 'updateAuthority': value['updateAuthority'],\n 'isVerifiedCollection': value['isVerifiedCollection'],\n 'isWrapped': value['isWrapped'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TokenCreatorsDTO\n */\nexport interface TokenCreatorsDTO {\n /**\n * DTO.TOKEN.CREATORS.ADDRESS\n * @type {string}\n * @memberof TokenCreatorsDTO\n */\n address?: string;\n /**\n * DTO.TOKEN.CREATORS.SHARE\n * @type {number}\n * @memberof TokenCreatorsDTO\n */\n share?: number;\n /**\n * DTO.TOKEN.CREATORS.IS_VERIFIED\n * @type {boolean}\n * @memberof TokenCreatorsDTO\n */\n isVerified?: boolean;\n}\n\n/**\n * Check if a given object implements the TokenCreatorsDTO interface.\n */\nexport function instanceOfTokenCreatorsDTO(value: object): value is TokenCreatorsDTO {\n return true;\n}\n\nexport function TokenCreatorsDTOFromJSON(json: any): TokenCreatorsDTO {\n return TokenCreatorsDTOFromJSONTyped(json, false);\n}\n\nexport function TokenCreatorsDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenCreatorsDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'address': json['address'] == null ? undefined : json['address'],\n 'share': json['share'] == null ? undefined : json['share'],\n 'isVerified': json['isVerified'] == null ? undefined : json['isVerified'],\n };\n}\n\nexport function TokenCreatorsDTOToJSON(json: any): TokenCreatorsDTO {\n return TokenCreatorsDTOToJSONTyped(json, false);\n}\n\nexport function TokenCreatorsDTOToJSONTyped(value?: TokenCreatorsDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'address': value['address'],\n 'share': value['share'],\n 'isVerified': value['isVerified'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TokenStat\n */\nexport interface TokenStat {\n /**\n * DTO.TOKEN.STAT.ADDRESS\n * @type {string}\n * @memberof TokenStat\n */\n address: string;\n /**\n * DTO.TOKEN.STAT.PRICE_1M\n * @type {string}\n * @memberof TokenStat\n */\n price1m: string;\n /**\n * DTO.TOKEN.STAT.BUYS_1M\n * @type {number}\n * @memberof TokenStat\n */\n buys1m: number;\n /**\n * DTO.TOKEN.STAT.SELLS_1M\n * @type {number}\n * @memberof TokenStat\n */\n sells1m: number;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_1M\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumes1m: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_1M\n * @type {string}\n * @memberof TokenStat\n */\n sellsVolumes1m: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_1M\n * @type {string}\n * @memberof TokenStat\n */\n volumes1m: string;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_1M\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumesInUsd1m: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_1M\n * @type {string}\n * @memberof TokenStat\n */\n sellVolumesInUsd1m: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_IN_USD_1M\n * @type {string}\n * @memberof TokenStat\n */\n volumesInUsd1m: string;\n /**\n * DTO.TOKEN.STAT.BUYERS_1M\n * @type {number}\n * @memberof TokenStat\n */\n buyers1m?: number;\n /**\n * DTO.TOKEN.STAT.SELLERS_1M\n * @type {number}\n * @memberof TokenStat\n */\n sellers1m?: number;\n /**\n * DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_1M\n * @type {string}\n * @memberof TokenStat\n */\n openPriceInUsd1m: string;\n /**\n * DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_1M\n * @type {string}\n * @memberof TokenStat\n */\n closePriceInUsd1m: string;\n /**\n * DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_1M\n * @type {string}\n * @memberof TokenStat\n */\n priceChangeRatioInUsd1m: string;\n /**\n * DTO.TOKEN.STAT.TRADES_1M\n * @type {number}\n * @memberof TokenStat\n */\n trades1m: number;\n /**\n * DTO.TOKEN.STAT.TRADERS_1M\n * @type {number}\n * @memberof TokenStat\n */\n traders1m?: number;\n /**\n * DTO.TOKEN.STAT.HIGH_IN_USD_1M\n * @type {string}\n * @memberof TokenStat\n */\n highInUsd1m?: string;\n /**\n * DTO.TOKEN.STAT.LOW_IN_USD_1M\n * @type {string}\n * @memberof TokenStat\n */\n lowInUsd1m?: string;\n /**\n * DTO.TOKEN.STAT.PRICE_5M\n * @type {string}\n * @memberof TokenStat\n */\n price5m: string;\n /**\n * DTO.TOKEN.STAT.BUYS_5M\n * @type {number}\n * @memberof TokenStat\n */\n buys5m: number;\n /**\n * DTO.TOKEN.STAT.SELLS_5M\n * @type {number}\n * @memberof TokenStat\n */\n sells5m: number;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_5M\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumes5m: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_5M\n * @type {string}\n * @memberof TokenStat\n */\n sellsVolumes5m: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_5M\n * @type {string}\n * @memberof TokenStat\n */\n volumes5m: string;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_5M\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumesInUsd5m: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_5M\n * @type {string}\n * @memberof TokenStat\n */\n sellVolumesInUsd5m: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_IN_USD_5M\n * @type {string}\n * @memberof TokenStat\n */\n volumesInUsd5m: string;\n /**\n * DTO.TOKEN.STAT.BUYERS_5M\n * @type {number}\n * @memberof TokenStat\n */\n buyers5m?: number;\n /**\n * DTO.TOKEN.STAT.SELLERS_5M\n * @type {number}\n * @memberof TokenStat\n */\n sellers5m?: number;\n /**\n * DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_5M\n * @type {string}\n * @memberof TokenStat\n */\n openPriceInUsd5m: string;\n /**\n * DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_5M\n * @type {string}\n * @memberof TokenStat\n */\n closePriceInUsd5m: string;\n /**\n * DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_5M\n * @type {string}\n * @memberof TokenStat\n */\n priceChangeRatioInUsd5m: string;\n /**\n * DTO.TOKEN.STAT.TRADES_5M\n * @type {number}\n * @memberof TokenStat\n */\n trades5m: number;\n /**\n * DTO.TOKEN.STAT.TRADERS_5M\n * @type {number}\n * @memberof TokenStat\n */\n traders5m?: number;\n /**\n * DTO.TOKEN.STAT.HIGH_IN_USD_5M\n * @type {string}\n * @memberof TokenStat\n */\n highInUsd5m?: string;\n /**\n * DTO.TOKEN.STAT.LOW_IN_USD_5M\n * @type {string}\n * @memberof TokenStat\n */\n lowInUsd5m?: string;\n /**\n * DTO.TOKEN.STAT.PRICE_15M\n * @type {string}\n * @memberof TokenStat\n */\n price15m?: string;\n /**\n * DTO.TOKEN.STAT.BUYS_15M\n * @type {number}\n * @memberof TokenStat\n */\n buys15m?: number;\n /**\n * DTO.TOKEN.STAT.SELLS_15M\n * @type {number}\n * @memberof TokenStat\n */\n sells15m?: number;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_15M\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumes15m?: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_15M\n * @type {string}\n * @memberof TokenStat\n */\n sellsVolumes15m?: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_15M\n * @type {string}\n * @memberof TokenStat\n */\n volumes15m?: string;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_15M\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumesInUsd15m?: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_15M\n * @type {string}\n * @memberof TokenStat\n */\n sellVolumesInUsd15m?: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_IN_USD_15M\n * @type {string}\n * @memberof TokenStat\n */\n volumesInUsd15m?: string;\n /**\n * DTO.TOKEN.STAT.BUYERS_15M\n * @type {number}\n * @memberof TokenStat\n */\n buyers15m?: number;\n /**\n * DTO.TOKEN.STAT.SELLERS_15M\n * @type {number}\n * @memberof TokenStat\n */\n sellers15m?: number;\n /**\n * DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_15M\n * @type {string}\n * @memberof TokenStat\n */\n openPriceInUsd15m?: string;\n /**\n * DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_15M\n * @type {string}\n * @memberof TokenStat\n */\n closePriceInUsd15m?: string;\n /**\n * DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_15M\n * @type {string}\n * @memberof TokenStat\n */\n priceChangeRatioInUsd15m?: string;\n /**\n * DTO.TOKEN.STAT.TRADES_15M\n * @type {number}\n * @memberof TokenStat\n */\n trades15m?: number;\n /**\n * DTO.TOKEN.STAT.TRADERS_15M\n * @type {number}\n * @memberof TokenStat\n */\n traders15m?: number;\n /**\n * DTO.TOKEN.STAT.HIGH_IN_USD_15M\n * @type {string}\n * @memberof TokenStat\n */\n highInUsd15m?: string;\n /**\n * DTO.TOKEN.STAT.LOW_IN_USD_15M\n * @type {string}\n * @memberof TokenStat\n */\n lowInUsd15m?: string;\n /**\n * DTO.TOKEN.STAT.PRICE_30M\n * @type {string}\n * @memberof TokenStat\n */\n price30m: string;\n /**\n * DTO.TOKEN.STAT.BUYS_30M\n * @type {number}\n * @memberof TokenStat\n */\n buys30m: number;\n /**\n * DTO.TOKEN.STAT.SELLS_30M\n * @type {number}\n * @memberof TokenStat\n */\n sells30m: number;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_30M\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumes30m: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_30M\n * @type {string}\n * @memberof TokenStat\n */\n sellsVolumes30m: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_30M\n * @type {string}\n * @memberof TokenStat\n */\n volumes30m: string;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_30M\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumesInUsd30m: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_30M\n * @type {string}\n * @memberof TokenStat\n */\n sellVolumesInUsd30m: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_IN_USD_30M\n * @type {string}\n * @memberof TokenStat\n */\n volumesInUsd30m: string;\n /**\n * DTO.TOKEN.STAT.BUYERS_30M\n * @type {number}\n * @memberof TokenStat\n */\n buyers30m?: number;\n /**\n * DTO.TOKEN.STAT.SELLERS_30M\n * @type {number}\n * @memberof TokenStat\n */\n sellers30m?: number;\n /**\n * DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_30M\n * @type {string}\n * @memberof TokenStat\n */\n openPriceInUsd30m: string;\n /**\n * DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_30M\n * @type {string}\n * @memberof TokenStat\n */\n closePriceInUsd30m: string;\n /**\n * DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_30M\n * @type {string}\n * @memberof TokenStat\n */\n priceChangeRatioInUsd30m: string;\n /**\n * DTO.TOKEN.STAT.TRADES_30M\n * @type {number}\n * @memberof TokenStat\n */\n trades30m: number;\n /**\n * DTO.TOKEN.STAT.TRADERS_30M\n * @type {number}\n * @memberof TokenStat\n */\n traders30m?: number;\n /**\n * DTO.TOKEN.STAT.HIGH_IN_USD_30M\n * @type {string}\n * @memberof TokenStat\n */\n highInUsd30m?: string;\n /**\n * DTO.TOKEN.STAT.LOW_IN_USD_30M\n * @type {string}\n * @memberof TokenStat\n */\n lowInUsd30m?: string;\n /**\n * DTO.TOKEN.STAT.PRICE_1H\n * @type {string}\n * @memberof TokenStat\n */\n price1h: string;\n /**\n * DTO.TOKEN.STAT.BUYS_1H\n * @type {number}\n * @memberof TokenStat\n */\n buys1h: number;\n /**\n * DTO.TOKEN.STAT.SELLS_1H\n * @type {number}\n * @memberof TokenStat\n */\n sells1h: number;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_1H\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumes1h: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_1H\n * @type {string}\n * @memberof TokenStat\n */\n sellsVolumes1h: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_1H\n * @type {string}\n * @memberof TokenStat\n */\n volumes1h: string;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_1H\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumesInUsd1h: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_1H\n * @type {string}\n * @memberof TokenStat\n */\n sellVolumesInUsd1h: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_IN_USD_1H\n * @type {string}\n * @memberof TokenStat\n */\n volumesInUsd1h: string;\n /**\n * DTO.TOKEN.STAT.BUYERS_1H\n * @type {number}\n * @memberof TokenStat\n */\n buyers1h?: number;\n /**\n * DTO.TOKEN.STAT.SELLERS_1H\n * @type {number}\n * @memberof TokenStat\n */\n sellers1h?: number;\n /**\n * DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_1H\n * @type {string}\n * @memberof TokenStat\n */\n openPriceInUsd1h: string;\n /**\n * DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_1H\n * @type {string}\n * @memberof TokenStat\n */\n closePriceInUsd1h: string;\n /**\n * DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_1H\n * @type {string}\n * @memberof TokenStat\n */\n priceChangeRatioInUsd1h: string;\n /**\n * DTO.TOKEN.STAT.TRADES_1H\n * @type {number}\n * @memberof TokenStat\n */\n trades1h: number;\n /**\n * DTO.TOKEN.STAT.TRADERS_1H\n * @type {number}\n * @memberof TokenStat\n */\n traders1h?: number;\n /**\n * DTO.TOKEN.STAT.HIGH_IN_USD_1H\n * @type {string}\n * @memberof TokenStat\n */\n highInUsd1h?: string;\n /**\n * DTO.TOKEN.STAT.LOW_IN_USD_1H\n * @type {string}\n * @memberof TokenStat\n */\n lowInUsd1h?: string;\n /**\n * DTO.TOKEN.STAT.PRICE_4H\n * @type {string}\n * @memberof TokenStat\n */\n price4h: string;\n /**\n * DTO.TOKEN.STAT.BUYS_4H\n * @type {number}\n * @memberof TokenStat\n */\n buys4h: number;\n /**\n * DTO.TOKEN.STAT.SELLS_4H\n * @type {number}\n * @memberof TokenStat\n */\n sells4h: number;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_4H\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumes4h: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_4H\n * @type {string}\n * @memberof TokenStat\n */\n sellsVolumes4h: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_4H\n * @type {string}\n * @memberof TokenStat\n */\n volumes4h: string;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_4H\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumesInUsd4h: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_4H\n * @type {string}\n * @memberof TokenStat\n */\n sellVolumesInUsd4h: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_IN_USD_4H\n * @type {string}\n * @memberof TokenStat\n */\n volumesInUsd4h: string;\n /**\n * DTO.TOKEN.STAT.BUYERS_4H\n * @type {number}\n * @memberof TokenStat\n */\n buyers4h?: number;\n /**\n * DTO.TOKEN.STAT.SELLERS_4H\n * @type {number}\n * @memberof TokenStat\n */\n sellers4h?: number;\n /**\n * DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_4H\n * @type {string}\n * @memberof TokenStat\n */\n openPriceInUsd4h: string;\n /**\n * DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_4H\n * @type {string}\n * @memberof TokenStat\n */\n closePriceInUsd4h: string;\n /**\n * DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_4H\n * @type {string}\n * @memberof TokenStat\n */\n priceChangeRatioInUsd4h: string;\n /**\n * DTO.TOKEN.STAT.TRADES_4H\n * @type {number}\n * @memberof TokenStat\n */\n trades4h: number;\n /**\n * DTO.TOKEN.STAT.TRADERS_4H\n * @type {number}\n * @memberof TokenStat\n */\n traders4h?: number;\n /**\n * DTO.TOKEN.STAT.HIGH_IN_USD_4H\n * @type {string}\n * @memberof TokenStat\n */\n highInUsd4h?: string;\n /**\n * DTO.TOKEN.STAT.LOW_IN_USD_4H\n * @type {string}\n * @memberof TokenStat\n */\n lowInUsd4h?: string;\n /**\n * DTO.TOKEN.STAT.PRICE_24H\n * @type {string}\n * @memberof TokenStat\n */\n price24h: string;\n /**\n * DTO.TOKEN.STAT.BUYS_24H\n * @type {number}\n * @memberof TokenStat\n */\n buys24h: number;\n /**\n * DTO.TOKEN.STAT.SELLS_24H\n * @type {number}\n * @memberof TokenStat\n */\n sells24h: number;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_24H\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumes24h: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_24H\n * @type {string}\n * @memberof TokenStat\n */\n sellsVolumes24h: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_24H\n * @type {string}\n * @memberof TokenStat\n */\n volumes24h: string;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_24H\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumesInUsd24h: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_24H\n * @type {string}\n * @memberof TokenStat\n */\n sellVolumesInUsd24h: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_IN_USD_24H\n * @type {string}\n * @memberof TokenStat\n */\n volumesInUsd24h: string;\n /**\n * DTO.TOKEN.STAT.BUYERS_24H\n * @type {number}\n * @memberof TokenStat\n */\n buyers24h?: number;\n /**\n * DTO.TOKEN.STAT.SELLERS_24H\n * @type {number}\n * @memberof TokenStat\n */\n sellers24h?: number;\n /**\n * DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_24H\n * @type {string}\n * @memberof TokenStat\n */\n openPriceInUsd24h: string;\n /**\n * DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_24H\n * @type {string}\n * @memberof TokenStat\n */\n closePriceInUsd24h: string;\n /**\n * DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_24H\n * @type {string}\n * @memberof TokenStat\n */\n priceChangeRatioInUsd24h: string;\n /**\n * DTO.TOKEN.STAT.TRADES_24H\n * @type {number}\n * @memberof TokenStat\n */\n trades24h: number;\n /**\n * DTO.TOKEN.STAT.TRADERS_24H\n * @type {number}\n * @memberof TokenStat\n */\n traders24h?: number;\n /**\n * DTO.TOKEN.STAT.HIGH_IN_USD_24H\n * @type {string}\n * @memberof TokenStat\n */\n highInUsd24h?: string;\n /**\n * DTO.TOKEN.STAT.LOW_IN_USD_24H\n * @type {string}\n * @memberof TokenStat\n */\n lowInUsd24h?: string;\n}\n\n/**\n * Check if a given object implements the TokenStat interface.\n */\nexport function instanceOfTokenStat(value: object): value is TokenStat {\n if (!('address' in value) || value['address'] === undefined) return false;\n if (!('price1m' in value) || value['price1m'] === undefined) return false;\n if (!('buys1m' in value) || value['buys1m'] === undefined) return false;\n if (!('sells1m' in value) || value['sells1m'] === undefined) return false;\n if (!('buyVolumes1m' in value) || value['buyVolumes1m'] === undefined) return false;\n if (!('sellsVolumes1m' in value) || value['sellsVolumes1m'] === undefined) return false;\n if (!('volumes1m' in value) || value['volumes1m'] === undefined) return false;\n if (!('buyVolumesInUsd1m' in value) || value['buyVolumesInUsd1m'] === undefined) return false;\n if (!('sellVolumesInUsd1m' in value) || value['sellVolumesInUsd1m'] === undefined) return false;\n if (!('volumesInUsd1m' in value) || value['volumesInUsd1m'] === undefined) return false;\n if (!('openPriceInUsd1m' in value) || value['openPriceInUsd1m'] === undefined) return false;\n if (!('closePriceInUsd1m' in value) || value['closePriceInUsd1m'] === undefined) return false;\n if (!('priceChangeRatioInUsd1m' in value) || value['priceChangeRatioInUsd1m'] === undefined) return false;\n if (!('trades1m' in value) || value['trades1m'] === undefined) return false;\n if (!('price5m' in value) || value['price5m'] === undefined) return false;\n if (!('buys5m' in value) || value['buys5m'] === undefined) return false;\n if (!('sells5m' in value) || value['sells5m'] === undefined) return false;\n if (!('buyVolumes5m' in value) || value['buyVolumes5m'] === undefined) return false;\n if (!('sellsVolumes5m' in value) || value['sellsVolumes5m'] === undefined) return false;\n if (!('volumes5m' in value) || value['volumes5m'] === undefined) return false;\n if (!('buyVolumesInUsd5m' in value) || value['buyVolumesInUsd5m'] === undefined) return false;\n if (!('sellVolumesInUsd5m' in value) || value['sellVolumesInUsd5m'] === undefined) return false;\n if (!('volumesInUsd5m' in value) || value['volumesInUsd5m'] === undefined) return false;\n if (!('openPriceInUsd5m' in value) || value['openPriceInUsd5m'] === undefined) return false;\n if (!('closePriceInUsd5m' in value) || value['closePriceInUsd5m'] === undefined) return false;\n if (!('priceChangeRatioInUsd5m' in value) || value['priceChangeRatioInUsd5m'] === undefined) return false;\n if (!('trades5m' in value) || value['trades5m'] === undefined) return false;\n if (!('price30m' in value) || value['price30m'] === undefined) return false;\n if (!('buys30m' in value) || value['buys30m'] === undefined) return false;\n if (!('sells30m' in value) || value['sells30m'] === undefined) return false;\n if (!('buyVolumes30m' in value) || value['buyVolumes30m'] === undefined) return false;\n if (!('sellsVolumes30m' in value) || value['sellsVolumes30m'] === undefined) return false;\n if (!('volumes30m' in value) || value['volumes30m'] === undefined) return false;\n if (!('buyVolumesInUsd30m' in value) || value['buyVolumesInUsd30m'] === undefined) return false;\n if (!('sellVolumesInUsd30m' in value) || value['sellVolumesInUsd30m'] === undefined) return false;\n if (!('volumesInUsd30m' in value) || value['volumesInUsd30m'] === undefined) return false;\n if (!('openPriceInUsd30m' in value) || value['openPriceInUsd30m'] === undefined) return false;\n if (!('closePriceInUsd30m' in value) || value['closePriceInUsd30m'] === undefined) return false;\n if (!('priceChangeRatioInUsd30m' in value) || value['priceChangeRatioInUsd30m'] === undefined) return false;\n if (!('trades30m' in value) || value['trades30m'] === undefined) return false;\n if (!('price1h' in value) || value['price1h'] === undefined) return false;\n if (!('buys1h' in value) || value['buys1h'] === undefined) return false;\n if (!('sells1h' in value) || value['sells1h'] === undefined) return false;\n if (!('buyVolumes1h' in value) || value['buyVolumes1h'] === undefined) return false;\n if (!('sellsVolumes1h' in value) || value['sellsVolumes1h'] === undefined) return false;\n if (!('volumes1h' in value) || value['volumes1h'] === undefined) return false;\n if (!('buyVolumesInUsd1h' in value) || value['buyVolumesInUsd1h'] === undefined) return false;\n if (!('sellVolumesInUsd1h' in value) || value['sellVolumesInUsd1h'] === undefined) return false;\n if (!('volumesInUsd1h' in value) || value['volumesInUsd1h'] === undefined) return false;\n if (!('openPriceInUsd1h' in value) || value['openPriceInUsd1h'] === undefined) return false;\n if (!('closePriceInUsd1h' in value) || value['closePriceInUsd1h'] === undefined) return false;\n if (!('priceChangeRatioInUsd1h' in value) || value['priceChangeRatioInUsd1h'] === undefined) return false;\n if (!('trades1h' in value) || value['trades1h'] === undefined) return false;\n if (!('price4h' in value) || value['price4h'] === undefined) return false;\n if (!('buys4h' in value) || value['buys4h'] === undefined) return false;\n if (!('sells4h' in value) || value['sells4h'] === undefined) return false;\n if (!('buyVolumes4h' in value) || value['buyVolumes4h'] === undefined) return false;\n if (!('sellsVolumes4h' in value) || value['sellsVolumes4h'] === undefined) return false;\n if (!('volumes4h' in value) || value['volumes4h'] === undefined) return false;\n if (!('buyVolumesInUsd4h' in value) || value['buyVolumesInUsd4h'] === undefined) return false;\n if (!('sellVolumesInUsd4h' in value) || value['sellVolumesInUsd4h'] === undefined) return false;\n if (!('volumesInUsd4h' in value) || value['volumesInUsd4h'] === undefined) return false;\n if (!('openPriceInUsd4h' in value) || value['openPriceInUsd4h'] === undefined) return false;\n if (!('closePriceInUsd4h' in value) || value['closePriceInUsd4h'] === undefined) return false;\n if (!('priceChangeRatioInUsd4h' in value) || value['priceChangeRatioInUsd4h'] === undefined) return false;\n if (!('trades4h' in value) || value['trades4h'] === undefined) return false;\n if (!('price24h' in value) || value['price24h'] === undefined) return false;\n if (!('buys24h' in value) || value['buys24h'] === undefined) return false;\n if (!('sells24h' in value) || value['sells24h'] === undefined) return false;\n if (!('buyVolumes24h' in value) || value['buyVolumes24h'] === undefined) return false;\n if (!('sellsVolumes24h' in value) || value['sellsVolumes24h'] === undefined) return false;\n if (!('volumes24h' in value) || value['volumes24h'] === undefined) return false;\n if (!('buyVolumesInUsd24h' in value) || value['buyVolumesInUsd24h'] === undefined) return false;\n if (!('sellVolumesInUsd24h' in value) || value['sellVolumesInUsd24h'] === undefined) return false;\n if (!('volumesInUsd24h' in value) || value['volumesInUsd24h'] === undefined) return false;\n if (!('openPriceInUsd24h' in value) || value['openPriceInUsd24h'] === undefined) return false;\n if (!('closePriceInUsd24h' in value) || value['closePriceInUsd24h'] === undefined) return false;\n if (!('priceChangeRatioInUsd24h' in value) || value['priceChangeRatioInUsd24h'] === undefined) return false;\n if (!('trades24h' in value) || value['trades24h'] === undefined) return false;\n return true;\n}\n\nexport function TokenStatFromJSON(json: any): TokenStat {\n return TokenStatFromJSONTyped(json, false);\n}\n\nexport function TokenStatFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenStat {\n if (json == null) {\n return json;\n }\n return {\n \n 'address': json['address'],\n 'price1m': json['price1m'],\n 'buys1m': json['buys1m'],\n 'sells1m': json['sells1m'],\n 'buyVolumes1m': json['buyVolumes1m'],\n 'sellsVolumes1m': json['sellsVolumes1m'],\n 'volumes1m': json['volumes1m'],\n 'buyVolumesInUsd1m': json['buyVolumesInUsd1m'],\n 'sellVolumesInUsd1m': json['sellVolumesInUsd1m'],\n 'volumesInUsd1m': json['volumesInUsd1m'],\n 'buyers1m': json['buyers1m'] == null ? undefined : json['buyers1m'],\n 'sellers1m': json['sellers1m'] == null ? undefined : json['sellers1m'],\n 'openPriceInUsd1m': json['openPriceInUsd1m'],\n 'closePriceInUsd1m': json['closePriceInUsd1m'],\n 'priceChangeRatioInUsd1m': json['priceChangeRatioInUsd1m'],\n 'trades1m': json['trades1m'],\n 'traders1m': json['traders1m'] == null ? undefined : json['traders1m'],\n 'highInUsd1m': json['highInUsd1m'] == null ? undefined : json['highInUsd1m'],\n 'lowInUsd1m': json['lowInUsd1m'] == null ? undefined : json['lowInUsd1m'],\n 'price5m': json['price5m'],\n 'buys5m': json['buys5m'],\n 'sells5m': json['sells5m'],\n 'buyVolumes5m': json['buyVolumes5m'],\n 'sellsVolumes5m': json['sellsVolumes5m'],\n 'volumes5m': json['volumes5m'],\n 'buyVolumesInUsd5m': json['buyVolumesInUsd5m'],\n 'sellVolumesInUsd5m': json['sellVolumesInUsd5m'],\n 'volumesInUsd5m': json['volumesInUsd5m'],\n 'buyers5m': json['buyers5m'] == null ? undefined : json['buyers5m'],\n 'sellers5m': json['sellers5m'] == null ? undefined : json['sellers5m'],\n 'openPriceInUsd5m': json['openPriceInUsd5m'],\n 'closePriceInUsd5m': json['closePriceInUsd5m'],\n 'priceChangeRatioInUsd5m': json['priceChangeRatioInUsd5m'],\n 'trades5m': json['trades5m'],\n 'traders5m': json['traders5m'] == null ? undefined : json['traders5m'],\n 'highInUsd5m': json['highInUsd5m'] == null ? undefined : json['highInUsd5m'],\n 'lowInUsd5m': json['lowInUsd5m'] == null ? undefined : json['lowInUsd5m'],\n 'price15m': json['price15m'] == null ? undefined : json['price15m'],\n 'buys15m': json['buys15m'] == null ? undefined : json['buys15m'],\n 'sells15m': json['sells15m'] == null ? undefined : json['sells15m'],\n 'buyVolumes15m': json['buyVolumes15m'] == null ? undefined : json['buyVolumes15m'],\n 'sellsVolumes15m': json['sellsVolumes15m'] == null ? undefined : json['sellsVolumes15m'],\n 'volumes15m': json['volumes15m'] == null ? undefined : json['volumes15m'],\n 'buyVolumesInUsd15m': json['buyVolumesInUsd15m'] == null ? undefined : json['buyVolumesInUsd15m'],\n 'sellVolumesInUsd15m': json['sellVolumesInUsd15m'] == null ? undefined : json['sellVolumesInUsd15m'],\n 'volumesInUsd15m': json['volumesInUsd15m'] == null ? undefined : json['volumesInUsd15m'],\n 'buyers15m': json['buyers15m'] == null ? undefined : json['buyers15m'],\n 'sellers15m': json['sellers15m'] == null ? undefined : json['sellers15m'],\n 'openPriceInUsd15m': json['openPriceInUsd15m'] == null ? undefined : json['openPriceInUsd15m'],\n 'closePriceInUsd15m': json['closePriceInUsd15m'] == null ? undefined : json['closePriceInUsd15m'],\n 'priceChangeRatioInUsd15m': json['priceChangeRatioInUsd15m'] == null ? undefined : json['priceChangeRatioInUsd15m'],\n 'trades15m': json['trades15m'] == null ? undefined : json['trades15m'],\n 'traders15m': json['traders15m'] == null ? undefined : json['traders15m'],\n 'highInUsd15m': json['highInUsd15m'] == null ? undefined : json['highInUsd15m'],\n 'lowInUsd15m': json['lowInUsd15m'] == null ? undefined : json['lowInUsd15m'],\n 'price30m': json['price30m'],\n 'buys30m': json['buys30m'],\n 'sells30m': json['sells30m'],\n 'buyVolumes30m': json['buyVolumes30m'],\n 'sellsVolumes30m': json['sellsVolumes30m'],\n 'volumes30m': json['volumes30m'],\n 'buyVolumesInUsd30m': json['buyVolumesInUsd30m'],\n 'sellVolumesInUsd30m': json['sellVolumesInUsd30m'],\n 'volumesInUsd30m': json['volumesInUsd30m'],\n 'buyers30m': json['buyers30m'] == null ? undefined : json['buyers30m'],\n 'sellers30m': json['sellers30m'] == null ? undefined : json['sellers30m'],\n 'openPriceInUsd30m': json['openPriceInUsd30m'],\n 'closePriceInUsd30m': json['closePriceInUsd30m'],\n 'priceChangeRatioInUsd30m': json['priceChangeRatioInUsd30m'],\n 'trades30m': json['trades30m'],\n 'traders30m': json['traders30m'] == null ? undefined : json['traders30m'],\n 'highInUsd30m': json['highInUsd30m'] == null ? undefined : json['highInUsd30m'],\n 'lowInUsd30m': json['lowInUsd30m'] == null ? undefined : json['lowInUsd30m'],\n 'price1h': json['price1h'],\n 'buys1h': json['buys1h'],\n 'sells1h': json['sells1h'],\n 'buyVolumes1h': json['buyVolumes1h'],\n 'sellsVolumes1h': json['sellsVolumes1h'],\n 'volumes1h': json['volumes1h'],\n 'buyVolumesInUsd1h': json['buyVolumesInUsd1h'],\n 'sellVolumesInUsd1h': json['sellVolumesInUsd1h'],\n 'volumesInUsd1h': json['volumesInUsd1h'],\n 'buyers1h': json['buyers1h'] == null ? undefined : json['buyers1h'],\n 'sellers1h': json['sellers1h'] == null ? undefined : json['sellers1h'],\n 'openPriceInUsd1h': json['openPriceInUsd1h'],\n 'closePriceInUsd1h': json['closePriceInUsd1h'],\n 'priceChangeRatioInUsd1h': json['priceChangeRatioInUsd1h'],\n 'trades1h': json['trades1h'],\n 'traders1h': json['traders1h'] == null ? undefined : json['traders1h'],\n 'highInUsd1h': json['highInUsd1h'] == null ? undefined : json['highInUsd1h'],\n 'lowInUsd1h': json['lowInUsd1h'] == null ? undefined : json['lowInUsd1h'],\n 'price4h': json['price4h'],\n 'buys4h': json['buys4h'],\n 'sells4h': json['sells4h'],\n 'buyVolumes4h': json['buyVolumes4h'],\n 'sellsVolumes4h': json['sellsVolumes4h'],\n 'volumes4h': json['volumes4h'],\n 'buyVolumesInUsd4h': json['buyVolumesInUsd4h'],\n 'sellVolumesInUsd4h': json['sellVolumesInUsd4h'],\n 'volumesInUsd4h': json['volumesInUsd4h'],\n 'buyers4h': json['buyers4h'] == null ? undefined : json['buyers4h'],\n 'sellers4h': json['sellers4h'] == null ? undefined : json['sellers4h'],\n 'openPriceInUsd4h': json['openPriceInUsd4h'],\n 'closePriceInUsd4h': json['closePriceInUsd4h'],\n 'priceChangeRatioInUsd4h': json['priceChangeRatioInUsd4h'],\n 'trades4h': json['trades4h'],\n 'traders4h': json['traders4h'] == null ? undefined : json['traders4h'],\n 'highInUsd4h': json['highInUsd4h'] == null ? undefined : json['highInUsd4h'],\n 'lowInUsd4h': json['lowInUsd4h'] == null ? undefined : json['lowInUsd4h'],\n 'price24h': json['price24h'],\n 'buys24h': json['buys24h'],\n 'sells24h': json['sells24h'],\n 'buyVolumes24h': json['buyVolumes24h'],\n 'sellsVolumes24h': json['sellsVolumes24h'],\n 'volumes24h': json['volumes24h'],\n 'buyVolumesInUsd24h': json['buyVolumesInUsd24h'],\n 'sellVolumesInUsd24h': json['sellVolumesInUsd24h'],\n 'volumesInUsd24h': json['volumesInUsd24h'],\n 'buyers24h': json['buyers24h'] == null ? undefined : json['buyers24h'],\n 'sellers24h': json['sellers24h'] == null ? undefined : json['sellers24h'],\n 'openPriceInUsd24h': json['openPriceInUsd24h'],\n 'closePriceInUsd24h': json['closePriceInUsd24h'],\n 'priceChangeRatioInUsd24h': json['priceChangeRatioInUsd24h'],\n 'trades24h': json['trades24h'],\n 'traders24h': json['traders24h'] == null ? undefined : json['traders24h'],\n 'highInUsd24h': json['highInUsd24h'] == null ? undefined : json['highInUsd24h'],\n 'lowInUsd24h': json['lowInUsd24h'] == null ? undefined : json['lowInUsd24h'],\n };\n}\n\nexport function TokenStatToJSON(json: any): TokenStat {\n return TokenStatToJSONTyped(json, false);\n}\n\nexport function TokenStatToJSONTyped(value?: TokenStat | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'address': value['address'],\n 'price1m': value['price1m'],\n 'buys1m': value['buys1m'],\n 'sells1m': value['sells1m'],\n 'buyVolumes1m': value['buyVolumes1m'],\n 'sellsVolumes1m': value['sellsVolumes1m'],\n 'volumes1m': value['volumes1m'],\n 'buyVolumesInUsd1m': value['buyVolumesInUsd1m'],\n 'sellVolumesInUsd1m': value['sellVolumesInUsd1m'],\n 'volumesInUsd1m': value['volumesInUsd1m'],\n 'buyers1m': value['buyers1m'],\n 'sellers1m': value['sellers1m'],\n 'openPriceInUsd1m': value['openPriceInUsd1m'],\n 'closePriceInUsd1m': value['closePriceInUsd1m'],\n 'priceChangeRatioInUsd1m': value['priceChangeRatioInUsd1m'],\n 'trades1m': value['trades1m'],\n 'traders1m': value['traders1m'],\n 'highInUsd1m': value['highInUsd1m'],\n 'lowInUsd1m': value['lowInUsd1m'],\n 'price5m': value['price5m'],\n 'buys5m': value['buys5m'],\n 'sells5m': value['sells5m'],\n 'buyVolumes5m': value['buyVolumes5m'],\n 'sellsVolumes5m': value['sellsVolumes5m'],\n 'volumes5m': value['volumes5m'],\n 'buyVolumesInUsd5m': value['buyVolumesInUsd5m'],\n 'sellVolumesInUsd5m': value['sellVolumesInUsd5m'],\n 'volumesInUsd5m': value['volumesInUsd5m'],\n 'buyers5m': value['buyers5m'],\n 'sellers5m': value['sellers5m'],\n 'openPriceInUsd5m': value['openPriceInUsd5m'],\n 'closePriceInUsd5m': value['closePriceInUsd5m'],\n 'priceChangeRatioInUsd5m': value['priceChangeRatioInUsd5m'],\n 'trades5m': value['trades5m'],\n 'traders5m': value['traders5m'],\n 'highInUsd5m': value['highInUsd5m'],\n 'lowInUsd5m': value['lowInUsd5m'],\n 'price15m': value['price15m'],\n 'buys15m': value['buys15m'],\n 'sells15m': value['sells15m'],\n 'buyVolumes15m': value['buyVolumes15m'],\n 'sellsVolumes15m': value['sellsVolumes15m'],\n 'volumes15m': value['volumes15m'],\n 'buyVolumesInUsd15m': value['buyVolumesInUsd15m'],\n 'sellVolumesInUsd15m': value['sellVolumesInUsd15m'],\n 'volumesInUsd15m': value['volumesInUsd15m'],\n 'buyers15m': value['buyers15m'],\n 'sellers15m': value['sellers15m'],\n 'openPriceInUsd15m': value['openPriceInUsd15m'],\n 'closePriceInUsd15m': value['closePriceInUsd15m'],\n 'priceChangeRatioInUsd15m': value['priceChangeRatioInUsd15m'],\n 'trades15m': value['trades15m'],\n 'traders15m': value['traders15m'],\n 'highInUsd15m': value['highInUsd15m'],\n 'lowInUsd15m': value['lowInUsd15m'],\n 'price30m': value['price30m'],\n 'buys30m': value['buys30m'],\n 'sells30m': value['sells30m'],\n 'buyVolumes30m': value['buyVolumes30m'],\n 'sellsVolumes30m': value['sellsVolumes30m'],\n 'volumes30m': value['volumes30m'],\n 'buyVolumesInUsd30m': value['buyVolumesInUsd30m'],\n 'sellVolumesInUsd30m': value['sellVolumesInUsd30m'],\n 'volumesInUsd30m': value['volumesInUsd30m'],\n 'buyers30m': value['buyers30m'],\n 'sellers30m': value['sellers30m'],\n 'openPriceInUsd30m': value['openPriceInUsd30m'],\n 'closePriceInUsd30m': value['closePriceInUsd30m'],\n 'priceChangeRatioInUsd30m': value['priceChangeRatioInUsd30m'],\n 'trades30m': value['trades30m'],\n 'traders30m': value['traders30m'],\n 'highInUsd30m': value['highInUsd30m'],\n 'lowInUsd30m': value['lowInUsd30m'],\n 'price1h': value['price1h'],\n 'buys1h': value['buys1h'],\n 'sells1h': value['sells1h'],\n 'buyVolumes1h': value['buyVolumes1h'],\n 'sellsVolumes1h': value['sellsVolumes1h'],\n 'volumes1h': value['volumes1h'],\n 'buyVolumesInUsd1h': value['buyVolumesInUsd1h'],\n 'sellVolumesInUsd1h': value['sellVolumesInUsd1h'],\n 'volumesInUsd1h': value['volumesInUsd1h'],\n 'buyers1h': value['buyers1h'],\n 'sellers1h': value['sellers1h'],\n 'openPriceInUsd1h': value['openPriceInUsd1h'],\n 'closePriceInUsd1h': value['closePriceInUsd1h'],\n 'priceChangeRatioInUsd1h': value['priceChangeRatioInUsd1h'],\n 'trades1h': value['trades1h'],\n 'traders1h': value['traders1h'],\n 'highInUsd1h': value['highInUsd1h'],\n 'lowInUsd1h': value['lowInUsd1h'],\n 'price4h': value['price4h'],\n 'buys4h': value['buys4h'],\n 'sells4h': value['sells4h'],\n 'buyVolumes4h': value['buyVolumes4h'],\n 'sellsVolumes4h': value['sellsVolumes4h'],\n 'volumes4h': value['volumes4h'],\n 'buyVolumesInUsd4h': value['buyVolumesInUsd4h'],\n 'sellVolumesInUsd4h': value['sellVolumesInUsd4h'],\n 'volumesInUsd4h': value['volumesInUsd4h'],\n 'buyers4h': value['buyers4h'],\n 'sellers4h': value['sellers4h'],\n 'openPriceInUsd4h': value['openPriceInUsd4h'],\n 'closePriceInUsd4h': value['closePriceInUsd4h'],\n 'priceChangeRatioInUsd4h': value['priceChangeRatioInUsd4h'],\n 'trades4h': value['trades4h'],\n 'traders4h': value['traders4h'],\n 'highInUsd4h': value['highInUsd4h'],\n 'lowInUsd4h': value['lowInUsd4h'],\n 'price24h': value['price24h'],\n 'buys24h': value['buys24h'],\n 'sells24h': value['sells24h'],\n 'buyVolumes24h': value['buyVolumes24h'],\n 'sellsVolumes24h': value['sellsVolumes24h'],\n 'volumes24h': value['volumes24h'],\n 'buyVolumesInUsd24h': value['buyVolumesInUsd24h'],\n 'sellVolumesInUsd24h': value['sellVolumesInUsd24h'],\n 'volumesInUsd24h': value['volumesInUsd24h'],\n 'buyers24h': value['buyers24h'],\n 'sellers24h': value['sellers24h'],\n 'openPriceInUsd24h': value['openPriceInUsd24h'],\n 'closePriceInUsd24h': value['closePriceInUsd24h'],\n 'priceChangeRatioInUsd24h': value['priceChangeRatioInUsd24h'],\n 'trades24h': value['trades24h'],\n 'traders24h': value['traders24h'],\n 'highInUsd24h': value['highInUsd24h'],\n 'lowInUsd24h': value['lowInUsd24h'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TokenSocialMediasDTO\n */\nexport interface TokenSocialMediasDTO {\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.TWITTER\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n twitter?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.TELEGRAM\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n telegram?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.WEBSITE\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n website?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.TIKTOK\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n tiktok?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.DISCORD\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n discord?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.FACEBOOK\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n facebook?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.GITHUB\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n github?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.INSTAGRAM\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n instagram?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.LINKEDIN\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n linkedin?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.MEDIUM\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n medium?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.REDDIT\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n reddit?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.YOUTUBE\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n youtube?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.BITBUCKET\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n bitbucket?: string;\n}\n\n/**\n * Check if a given object implements the TokenSocialMediasDTO interface.\n */\nexport function instanceOfTokenSocialMediasDTO(value: object): value is TokenSocialMediasDTO {\n return true;\n}\n\nexport function TokenSocialMediasDTOFromJSON(json: any): TokenSocialMediasDTO {\n return TokenSocialMediasDTOFromJSONTyped(json, false);\n}\n\nexport function TokenSocialMediasDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenSocialMediasDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'twitter': json['twitter'] == null ? undefined : json['twitter'],\n 'telegram': json['telegram'] == null ? undefined : json['telegram'],\n 'website': json['website'] == null ? undefined : json['website'],\n 'tiktok': json['tiktok'] == null ? undefined : json['tiktok'],\n 'discord': json['discord'] == null ? undefined : json['discord'],\n 'facebook': json['facebook'] == null ? undefined : json['facebook'],\n 'github': json['github'] == null ? undefined : json['github'],\n 'instagram': json['instagram'] == null ? undefined : json['instagram'],\n 'linkedin': json['linkedin'] == null ? undefined : json['linkedin'],\n 'medium': json['medium'] == null ? undefined : json['medium'],\n 'reddit': json['reddit'] == null ? undefined : json['reddit'],\n 'youtube': json['youtube'] == null ? undefined : json['youtube'],\n 'bitbucket': json['bitbucket'] == null ? undefined : json['bitbucket'],\n };\n}\n\nexport function TokenSocialMediasDTOToJSON(json: any): TokenSocialMediasDTO {\n return TokenSocialMediasDTOToJSONTyped(json, false);\n}\n\nexport function TokenSocialMediasDTOToJSONTyped(value?: TokenSocialMediasDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'twitter': value['twitter'],\n 'telegram': value['telegram'],\n 'website': value['website'],\n 'tiktok': value['tiktok'],\n 'discord': value['discord'],\n 'facebook': value['facebook'],\n 'github': value['github'],\n 'instagram': value['instagram'],\n 'linkedin': value['linkedin'],\n 'medium': value['medium'],\n 'reddit': value['reddit'],\n 'youtube': value['youtube'],\n 'bitbucket': value['bitbucket'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { DexPoolDTO } from './DexPoolDTO';\nimport {\n DexPoolDTOFromJSON,\n DexPoolDTOFromJSONTyped,\n DexPoolDTOToJSON,\n DexPoolDTOToJSONTyped,\n} from './DexPoolDTO';\nimport type { TokenMarketData } from './TokenMarketData';\nimport {\n TokenMarketDataFromJSON,\n TokenMarketDataFromJSONTyped,\n TokenMarketDataToJSON,\n TokenMarketDataToJSONTyped,\n} from './TokenMarketData';\nimport type { TokenExtraDTO } from './TokenExtraDTO';\nimport {\n TokenExtraDTOFromJSON,\n TokenExtraDTOFromJSONTyped,\n TokenExtraDTOToJSON,\n TokenExtraDTOToJSONTyped,\n} from './TokenExtraDTO';\nimport type { TokenCreatorsDTO } from './TokenCreatorsDTO';\nimport {\n TokenCreatorsDTOFromJSON,\n TokenCreatorsDTOFromJSONTyped,\n TokenCreatorsDTOToJSON,\n TokenCreatorsDTOToJSONTyped,\n} from './TokenCreatorsDTO';\nimport type { TokenStat } from './TokenStat';\nimport {\n TokenStatFromJSON,\n TokenStatFromJSONTyped,\n TokenStatToJSON,\n TokenStatToJSONTyped,\n} from './TokenStat';\nimport type { TokenSocialMediasDTO } from './TokenSocialMediasDTO';\nimport {\n TokenSocialMediasDTOFromJSON,\n TokenSocialMediasDTOFromJSONTyped,\n TokenSocialMediasDTOToJSON,\n TokenSocialMediasDTOToJSONTyped,\n} from './TokenSocialMediasDTO';\n\n/**\n * \n * @export\n * @interface Token\n */\nexport interface Token {\n /**\n * DTO.TOKEN.METADATA.CHAIN\n * @type {string}\n * @memberof Token\n */\n chain: string;\n /**\n * DTO.TOKEN.METADATA.DECIMALS\n * @type {number}\n * @memberof Token\n */\n decimals: number;\n /**\n * DTO.TOKEN.METADATA.NAME\n * @type {string}\n * @memberof Token\n */\n name: string;\n /**\n * DTO.TOKEN.METADATA.SYMBOL\n * @type {string}\n * @memberof Token\n */\n symbol: string;\n /**\n * DTO.TOKEN.METADATA.METADATA_ADDRESS\n * @type {string}\n * @memberof Token\n */\n metadataAddress?: string;\n /**\n * DTO.TOKEN.METADATA.ADDRESS\n * @type {string}\n * @memberof Token\n */\n address: string;\n /**\n * DTO.TOKEN.METADATA.TOKEN_CREATORS\n * @type {Array<TokenCreatorsDTO>}\n * @memberof Token\n */\n tokenCreators?: Array<TokenCreatorsDTO>;\n /**\n * DTO.TOKEN.METADATA.IMAGE_URL\n * @type {string}\n * @memberof Token\n */\n imageUrl?: string;\n /**\n * DTO.TOKEN.METADATA.URI\n * @type {string}\n * @memberof Token\n */\n uri?: string;\n /**\n * DTO.TOKEN.METADATA.EXTRA\n * @type {TokenExtraDTO}\n * @memberof Token\n */\n extra?: TokenExtraDTO;\n /**\n * DTO.TOKEN.METADATA.SOCIAL_MEDIAS\n * @type {TokenSocialMediasDTO}\n * @memberof Token\n */\n socialMedias?: TokenSocialMediasDTO;\n /**\n * DTO.TOKEN.METADATA.TOKEN_CREATED_AT\n * @type {number}\n * @memberof Token\n */\n tokenCreatedAt?: number;\n /**\n * DTO.TOKEN.METADATA.DESCRIPTION\n * @type {string}\n * @memberof Token\n */\n description?: string;\n /**\n * DTO.TOKEN.MARKET_ID\n * @type {string}\n * @memberof Token\n */\n market?: string;\n /**\n * DTO.TOKEN.EXTENSION\n * @type {object}\n * @memberof Token\n */\n extension?: object;\n /**\n * DTO.TOKEN.STATS\n * @type {TokenStat}\n * @memberof Token\n */\n stats?: TokenStat;\n /**\n * DTO.TOKEN.LIQUIDITY\n * @type {Array<DexPoolDTO>}\n * @memberof Token\n */\n liquidity?: Array<DexPoolDTO>;\n /**\n * DTO.TOKEN.MARKET_CAP_INFO\n * @type {TokenMarketData}\n * @memberof Token\n */\n marketData: TokenMarketData;\n}\n\n/**\n * Check if a given object implements the Token interface.\n */\nexport function instanceOfToken(value: object): value is Token {\n if (!('chain' in value) || value['chain'] === undefined) return false;\n if (!('decimals' in value) || value['decimals'] === undefined) return false;\n if (!('name' in value) || value['name'] === undefined) return false;\n if (!('symbol' in value) || value['symbol'] === undefined) return false;\n if (!('address' in value) || value['address'] === undefined) return false;\n if (!('marketData' in value) || value['marketData'] === undefined) return false;\n return true;\n}\n\nexport function TokenFromJSON(json: any): Token {\n return TokenFromJSONTyped(json, false);\n}\n\nexport function TokenFromJSONTyped(json: any, ignoreDiscriminator: boolean): Token {\n if (json == null) {\n return json;\n }\n return {\n \n 'chain': json['chain'],\n 'decimals': json['decimals'],\n 'name': json['name'],\n 'symbol': json['symbol'],\n 'metadataAddress': json['metadataAddress'] == null ? undefined : json['metadataAddress'],\n 'address': json['address'],\n 'tokenCreators': json['tokenCreators'] == null ? undefined : ((json['tokenCreators'] as Array<any>).map(TokenCreatorsDTOFromJSON)),\n 'imageUrl': json['imageUrl'] == null ? undefined : json['imageUrl'],\n 'uri': json['uri'] == null ? undefined : json['uri'],\n 'extra': json['extra'] == null ? undefined : TokenExtraDTOFromJSON(json['extra']),\n 'socialMedias': json['socialMedias'] == null ? undefined : TokenSocialMediasDTOFromJSON(json['socialMedias']),\n 'tokenCreatedAt': json['tokenCreatedAt'] == null ? undefined : json['tokenCreatedAt'],\n 'description': json['description'] == null ? undefined : json['description'],\n '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 'market': value['market'],\n 'extension': value['extension'],\n 'stats': TokenStatToJSON(value['stats']),\n 'liquidity': value['liquidity'] == null ? undefined : ((value['liquidity'] as Array<any>).map(DexPoolDTOToJSON)),\n 'marketData': TokenMarketDataToJSON(value['marketData']),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TokenCreationDTO\n */\nexport interface TokenCreationDTO {\n /**\n * DTO.TOKEN.CREATION.TOKEN_ADDRESS\n * @type {string}\n * @memberof TokenCreationDTO\n */\n tokenAddress: string;\n /**\n * DTO.TOKEN.CREATION.BLOCK_HEIGHT\n * @type {number}\n * @memberof TokenCreationDTO\n */\n blockHeight: number;\n /**\n * DTO.TOKEN.CREATION.BLOCK_SLOT\n * @type {number}\n * @memberof TokenCreationDTO\n */\n blockSlot: number;\n /**\n * DTO.TOKEN.CREATION.BLOCK_HASH\n * @type {string}\n * @memberof TokenCreationDTO\n */\n blockHash: string;\n /**\n * DTO.TOKEN.CREATION.BLOCK_TIMESTAMP\n * @type {number}\n * @memberof TokenCreationDTO\n */\n blockTimestamp?: number;\n /**\n * DTO.TOKEN.CREATION.TRANSACTION_SIGNATURE\n * @type {string}\n * @memberof TokenCreationDTO\n */\n transactionSignature: string;\n /**\n * DTO.TOKEN.CREATION.TYPE\n * @type {string}\n * @memberof TokenCreationDTO\n */\n type: TokenCreationDTOTypeEnum;\n}\n\n\n/**\n * @export\n */\nexport const TokenCreationDTOTypeEnum = {\n Create: 'create',\n Mint: 'mint',\n Burn: 'burn'\n} as const;\nexport type TokenCreationDTOTypeEnum = typeof TokenCreationDTOTypeEnum[keyof typeof TokenCreationDTOTypeEnum];\n\n\n/**\n * Check if a given object implements the TokenCreationDTO interface.\n */\nexport function instanceOfTokenCreationDTO(value: object): value is TokenCreationDTO {\n if (!('tokenAddress' in value) || value['tokenAddress'] === undefined) return false;\n if (!('blockHeight' in value) || value['blockHeight'] === undefined) return false;\n if (!('blockSlot' in value) || value['blockSlot'] === undefined) return false;\n if (!('blockHash' in value) || value['blockHash'] === undefined) return false;\n if (!('transactionSignature' in value) || value['transactionSignature'] === undefined) return false;\n if (!('type' in value) || value['type'] === undefined) return false;\n return true;\n}\n\nexport function TokenCreationDTOFromJSON(json: any): TokenCreationDTO {\n return TokenCreationDTOFromJSONTyped(json, false);\n}\n\nexport function TokenCreationDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenCreationDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'tokenAddress': json['tokenAddress'],\n 'blockHeight': json['blockHeight'],\n 'blockSlot': json['blockSlot'],\n 'blockHash': json['blockHash'],\n 'blockTimestamp': json['blockTimestamp'] == null ? undefined : json['blockTimestamp'],\n 'transactionSignature': json['transactionSignature'],\n 'type': json['type'],\n };\n}\n\nexport function TokenCreationDTOToJSON(json: any): TokenCreationDTO {\n return TokenCreationDTOToJSONTyped(json, false);\n}\n\nexport function TokenCreationDTOToJSONTyped(value?: TokenCreationDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'tokenAddress': value['tokenAddress'],\n 'blockHeight': value['blockHeight'],\n 'blockSlot': value['blockSlot'],\n 'blockHash': value['blockHash'],\n 'blockTimestamp': value['blockTimestamp'],\n 'transactionSignature': value['transactionSignature'],\n 'type': value['type'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { TokenCreationDTO } from './TokenCreationDTO';\nimport {\n TokenCreationDTOFromJSON,\n TokenCreationDTOFromJSONTyped,\n TokenCreationDTOToJSON,\n TokenCreationDTOToJSONTyped,\n} from './TokenCreationDTO';\n\n/**\n * \n * @export\n * @interface TokenCreationPage\n */\nexport interface TokenCreationPage {\n /**\n * DTO.PAGE.HAS_NEXT\n * @type {boolean}\n * @memberof TokenCreationPage\n */\n hasNext?: boolean;\n /**\n * DTO.PAGE.HAS_PREV\n * @type {boolean}\n * @memberof TokenCreationPage\n */\n hasPrev?: boolean;\n /**\n * DTO.PAGE.START_CURSOR\n * @type {string}\n * @memberof TokenCreationPage\n */\n startCursor?: string;\n /**\n * DTO.PAGE.END_CURSOR\n * @type {string}\n * @memberof TokenCreationPage\n */\n endCursor?: string;\n /**\n * DTO.PAGE.TOTAL\n * @type {number}\n * @memberof TokenCreationPage\n */\n total?: number;\n /**\n * DTO.TOKEN.CREATION.PAGE.DATA\n * @type {Array<TokenCreationDTO>}\n * @memberof TokenCreationPage\n */\n data: Array<TokenCreationDTO>;\n}\n\n/**\n * Check if a given object implements the TokenCreationPage interface.\n */\nexport function instanceOfTokenCreationPage(value: object): value is TokenCreationPage {\n if (!('data' in value) || value['data'] === undefined) return false;\n return true;\n}\n\nexport function TokenCreationPageFromJSON(json: any): TokenCreationPage {\n return TokenCreationPageFromJSONTyped(json, false);\n}\n\nexport function TokenCreationPageFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenCreationPage {\n if (json == null) {\n return json;\n }\n return {\n \n 'hasNext': json['hasNext'] == null ? undefined : json['hasNext'],\n 'hasPrev': json['hasPrev'] == null ? undefined : json['hasPrev'],\n 'startCursor': json['startCursor'] == null ? undefined : json['startCursor'],\n 'endCursor': json['endCursor'] == null ? undefined : json['endCursor'],\n 'total': json['total'] == null ? undefined : json['total'],\n 'data': ((json['data'] as Array<any>).map(TokenCreationDTOFromJSON)),\n };\n}\n\nexport function TokenCreationPageToJSON(json: any): TokenCreationPage {\n return TokenCreationPageToJSONTyped(json, false);\n}\n\nexport function TokenCreationPageToJSONTyped(value?: TokenCreationPage | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'hasNext': value['hasNext'],\n 'hasPrev': value['hasPrev'],\n 'startCursor': value['startCursor'],\n 'endCursor': value['endCursor'],\n 'total': value['total'],\n 'data': ((value['data'] as Array<any>).map(TokenCreationDTOToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TokenHolder\n */\nexport interface TokenHolder {\n /**\n * DTO.TOKEN_HOLDER.WALLET_ADDRESS\n * @type {string}\n * @memberof TokenHolder\n */\n walletAddress: string;\n /**\n * DTO.TOKEN_HOLDER.AMOUNT\n * @type {number}\n * @memberof TokenHolder\n */\n amount: number;\n /**\n * DTO.TOKEN_HOLDER.AMOUNT_USD\n * @type {number}\n * @memberof TokenHolder\n */\n amountInUsd: number;\n /**\n * DTO.TOKEN_HOLDER.PERCENTAGE\n * @type {string}\n * @memberof TokenHolder\n */\n percentage: string;\n}\n\n/**\n * Check if a given object implements the TokenHolder interface.\n */\nexport function instanceOfTokenHolder(value: object): value is TokenHolder {\n if (!('walletAddress' in value) || value['walletAddress'] === undefined) return false;\n if (!('amount' in value) || value['amount'] === undefined) return false;\n if (!('amountInUsd' in value) || value['amountInUsd'] === undefined) return false;\n if (!('percentage' in value) || value['percentage'] === undefined) return false;\n return true;\n}\n\nexport function TokenHolderFromJSON(json: any): TokenHolder {\n return TokenHolderFromJSONTyped(json, false);\n}\n\nexport function TokenHolderFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenHolder {\n if (json == null) {\n return json;\n }\n return {\n \n 'walletAddress': json['walletAddress'],\n 'amount': json['amount'],\n 'amountInUsd': json['amountInUsd'],\n 'percentage': json['percentage'],\n };\n}\n\nexport function TokenHolderToJSON(json: any): TokenHolder {\n return TokenHolderToJSONTyped(json, false);\n}\n\nexport function TokenHolderToJSONTyped(value?: TokenHolder | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'walletAddress': value['walletAddress'],\n 'amount': value['amount'],\n 'amountInUsd': value['amountInUsd'],\n 'percentage': value['percentage'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { TokenHolder } from './TokenHolder';\nimport {\n TokenHolderFromJSON,\n TokenHolderFromJSONTyped,\n TokenHolderToJSON,\n TokenHolderToJSONTyped,\n} from './TokenHolder';\n\n/**\n * \n * @export\n * @interface TokenHolderPage\n */\nexport interface TokenHolderPage {\n /**\n * DTO.PAGE.HAS_NEXT\n * @type {boolean}\n * @memberof TokenHolderPage\n */\n hasNext?: boolean;\n /**\n * DTO.PAGE.HAS_PREV\n * @type {boolean}\n * @memberof TokenHolderPage\n */\n hasPrev?: boolean;\n /**\n * DTO.PAGE.START_CURSOR\n * @type {string}\n * @memberof TokenHolderPage\n */\n startCursor?: string;\n /**\n * DTO.PAGE.END_CURSOR\n * @type {string}\n * @memberof TokenHolderPage\n */\n endCursor?: string;\n /**\n * DTO.PAGE.TOTAL\n * @type {number}\n * @memberof TokenHolderPage\n */\n total?: number;\n /**\n * DTO.TOKEN_HOLDER.PAGE.DATA\n * @type {Array<TokenHolder>}\n * @memberof TokenHolderPage\n */\n data: Array<TokenHolder>;\n}\n\n/**\n * Check if a given object implements the TokenHolderPage interface.\n */\nexport function instanceOfTokenHolderPage(value: object): value is TokenHolderPage {\n if (!('data' in value) || value['data'] === undefined) return false;\n return true;\n}\n\nexport function TokenHolderPageFromJSON(json: any): TokenHolderPage {\n return TokenHolderPageFromJSONTyped(json, false);\n}\n\nexport function TokenHolderPageFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenHolderPage {\n if (json == null) {\n return json;\n }\n return {\n \n 'hasNext': json['hasNext'] == null ? undefined : json['hasNext'],\n 'hasPrev': json['hasPrev'] == null ? undefined : json['hasPrev'],\n 'startCursor': json['startCursor'] == null ? undefined : json['startCursor'],\n 'endCursor': json['endCursor'] == null ? undefined : json['endCursor'],\n 'total': json['total'] == null ? undefined : json['total'],\n 'data': ((json['data'] as Array<any>).map(TokenHolderFromJSON)),\n };\n}\n\nexport function TokenHolderPageToJSON(json: any): TokenHolderPage {\n return TokenHolderPageToJSONTyped(json, false);\n}\n\nexport function TokenHolderPageToJSONTyped(value?: TokenHolderPage | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'hasNext': value['hasNext'],\n 'hasPrev': value['hasPrev'],\n 'startCursor': value['startCursor'],\n 'endCursor': value['endCursor'],\n 'total': value['total'],\n 'data': ((value['data'] as Array<any>).map(TokenHolderToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { Token } from './Token';\nimport {\n TokenFromJSON,\n TokenFromJSONTyped,\n TokenToJSON,\n TokenToJSONTyped,\n} from './Token';\n\n/**\n * \n * @export\n * @interface TokenListPage\n */\nexport interface TokenListPage {\n /**\n * DTO.PAGE.HAS_NEXT\n * @type {boolean}\n * @memberof TokenListPage\n */\n hasNext?: boolean;\n /**\n * DTO.PAGE.HAS_PREV\n * @type {boolean}\n * @memberof TokenListPage\n */\n hasPrev?: boolean;\n /**\n * DTO.PAGE.START_CURSOR\n * @type {string}\n * @memberof TokenListPage\n */\n startCursor?: string;\n /**\n * DTO.PAGE.END_CURSOR\n * @type {string}\n * @memberof TokenListPage\n */\n endCursor?: string;\n /**\n * DTO.PAGE.TOTAL\n * @type {number}\n * @memberof TokenListPage\n */\n total?: number;\n /**\n * DTO.TOKEN.PAGE.DATA\n * @type {Array<Token>}\n * @memberof TokenListPage\n */\n data: Array<Token>;\n}\n\n/**\n * Check if a given object implements the TokenListPage interface.\n */\nexport function instanceOfTokenListPage(value: object): value is TokenListPage {\n if (!('data' in value) || value['data'] === undefined) return false;\n return true;\n}\n\nexport function TokenListPageFromJSON(json: any): TokenListPage {\n return TokenListPageFromJSONTyped(json, false);\n}\n\nexport function TokenListPageFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenListPage {\n if (json == null) {\n return json;\n }\n return {\n \n 'hasNext': json['hasNext'] == null ? undefined : json['hasNext'],\n 'hasPrev': json['hasPrev'] == null ? undefined : json['hasPrev'],\n 'startCursor': json['startCursor'] == null ? undefined : json['startCursor'],\n 'endCursor': json['endCursor'] == null ? undefined : json['endCursor'],\n 'total': json['total'] == null ? undefined : json['total'],\n 'data': ((json['data'] as Array<any>).map(TokenFromJSON)),\n };\n}\n\nexport function TokenListPageToJSON(json: any): TokenListPage {\n return TokenListPageToJSONTyped(json, false);\n}\n\nexport function TokenListPageToJSONTyped(value?: TokenListPage | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'hasNext': value['hasNext'],\n 'hasPrev': value['hasPrev'],\n 'startCursor': value['startCursor'],\n 'endCursor': value['endCursor'],\n 'total': value['total'],\n 'data': ((value['data'] as Array<any>).map(TokenToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { TokenExtraDTO } from './TokenExtraDTO';\nimport {\n TokenExtraDTOFromJSON,\n TokenExtraDTOFromJSONTyped,\n TokenExtraDTOToJSON,\n TokenExtraDTOToJSONTyped,\n} from './TokenExtraDTO';\nimport type { TokenCreatorsDTO } from './TokenCreatorsDTO';\nimport {\n TokenCreatorsDTOFromJSON,\n TokenCreatorsDTOFromJSONTyped,\n TokenCreatorsDTOToJSON,\n TokenCreatorsDTOToJSONTyped,\n} from './TokenCreatorsDTO';\nimport type { TokenSocialMediasDTO } from './TokenSocialMediasDTO';\nimport {\n TokenSocialMediasDTOFromJSON,\n TokenSocialMediasDTOFromJSONTyped,\n TokenSocialMediasDTOToJSON,\n TokenSocialMediasDTOToJSONTyped,\n} from './TokenSocialMediasDTO';\n\n/**\n * \n * @export\n * @interface TokenMetadata\n */\nexport interface TokenMetadata {\n /**\n * DTO.TOKEN.METADATA.CHAIN\n * @type {string}\n * @memberof TokenMetadata\n */\n chain: string;\n /**\n * DTO.TOKEN.METADATA.DECIMALS\n * @type {number}\n * @memberof TokenMetadata\n */\n decimals: number;\n /**\n * DTO.TOKEN.METADATA.NAME\n * @type {string}\n * @memberof TokenMetadata\n */\n name: string;\n /**\n * DTO.TOKEN.METADATA.SYMBOL\n * @type {string}\n * @memberof TokenMetadata\n */\n symbol: string;\n /**\n * DTO.TOKEN.METADATA.METADATA_ADDRESS\n * @type {string}\n * @memberof TokenMetadata\n */\n metadataAddress?: string;\n /**\n * DTO.TOKEN.METADATA.ADDRESS\n * @type {string}\n * @memberof TokenMetadata\n */\n address: string;\n /**\n * DTO.TOKEN.METADATA.TOKEN_CREATORS\n * @type {Array<TokenCreatorsDTO>}\n * @memberof TokenMetadata\n */\n tokenCreators?: Array<TokenCreatorsDTO>;\n /**\n * DTO.TOKEN.METADATA.IMAGE_URL\n * @type {string}\n * @memberof TokenMetadata\n */\n imageUrl?: string;\n /**\n * DTO.TOKEN.METADATA.URI\n * @type {string}\n * @memberof TokenMetadata\n */\n uri?: string;\n /**\n * DTO.TOKEN.METADATA.EXTRA\n * @type {TokenExtraDTO}\n * @memberof TokenMetadata\n */\n extra?: TokenExtraDTO;\n /**\n * DTO.TOKEN.METADATA.SOCIAL_MEDIAS\n * @type {TokenSocialMediasDTO}\n * @memberof TokenMetadata\n */\n socialMedias?: TokenSocialMediasDTO;\n /**\n * DTO.TOKEN.METADATA.TOKEN_CREATED_AT\n * @type {number}\n * @memberof TokenMetadata\n */\n tokenCreatedAt?: number;\n /**\n * DTO.TOKEN.METADATA.DESCRIPTION\n * @type {string}\n * @memberof TokenMetadata\n */\n description?: string;\n}\n\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 };\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 };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { Token } from './Token';\nimport {\n TokenFromJSON,\n TokenFromJSONTyped,\n TokenToJSON,\n TokenToJSONTyped,\n} from './Token';\n\n/**\n * \n * @export\n * @interface TokenPage\n */\nexport interface TokenPage {\n /**\n * DTO.PAGE.HAS_NEXT\n * @type {boolean}\n * @memberof TokenPage\n */\n hasNext?: boolean;\n /**\n * DTO.PAGE.HAS_PREV\n * @type {boolean}\n * @memberof TokenPage\n */\n hasPrev?: boolean;\n /**\n * DTO.PAGE.START_CURSOR\n * @type {string}\n * @memberof TokenPage\n */\n startCursor?: string;\n /**\n * DTO.PAGE.END_CURSOR\n * @type {string}\n * @memberof TokenPage\n */\n endCursor?: string;\n /**\n * DTO.PAGE.TOTAL\n * @type {number}\n * @memberof TokenPage\n */\n total?: number;\n /**\n * DTO.TOKEN.PAGE.COUNTS_BY_PROTOCOLS\n * @type {object}\n * @memberof TokenPage\n */\n countsByProtocols?: object;\n /**\n * DTO.TOKEN.PAGE.DATA\n * @type {Array<Token>}\n * @memberof TokenPage\n */\n data: Array<Token>;\n}\n\n/**\n * Check if a given object implements the TokenPage interface.\n */\nexport function instanceOfTokenPage(value: object): value is TokenPage {\n if (!('data' in value) || value['data'] === undefined) return false;\n return true;\n}\n\nexport function TokenPageFromJSON(json: any): TokenPage {\n return TokenPageFromJSONTyped(json, false);\n}\n\nexport function TokenPageFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenPage {\n if (json == null) {\n return json;\n }\n return {\n \n 'hasNext': json['hasNext'] == null ? undefined : json['hasNext'],\n 'hasPrev': json['hasPrev'] == null ? undefined : json['hasPrev'],\n 'startCursor': json['startCursor'] == null ? undefined : json['startCursor'],\n 'endCursor': json['endCursor'] == null ? undefined : json['endCursor'],\n 'total': json['total'] == null ? undefined : json['total'],\n 'countsByProtocols': json['countsByProtocols'] == null ? undefined : json['countsByProtocols'],\n 'data': ((json['data'] as Array<any>).map(TokenFromJSON)),\n };\n}\n\nexport function TokenPageToJSON(json: any): TokenPage {\n return TokenPageToJSONTyped(json, false);\n}\n\nexport function TokenPageToJSONTyped(value?: TokenPage | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'hasNext': value['hasNext'],\n 'hasPrev': value['hasPrev'],\n 'startCursor': value['startCursor'],\n 'endCursor': value['endCursor'],\n 'total': value['total'],\n 'countsByProtocols': value['countsByProtocols'],\n 'data': ((value['data'] as Array<any>).map(TokenToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TokenPriceDTO\n */\nexport interface TokenPriceDTO {\n /**\n * DTO.TOKEN.PRICE.TOKEN_ADDRESS\n * @type {string}\n * @memberof TokenPriceDTO\n */\n tokenAddress: string;\n /**\n * DTO.TOKEN.PRICE.PRICE_IN_USD\n * @type {string}\n * @memberof TokenPriceDTO\n */\n priceInUsd: string;\n /**\n * DTO.TOKEN.PRICE.PRICE_IN_NATIVE\n * @type {string}\n * @memberof TokenPriceDTO\n */\n priceInNative: string;\n /**\n * DTO.TOKEN.PRICE.TIMESTAMP\n * @type {number}\n * @memberof TokenPriceDTO\n */\n timestamp: number;\n}\n\n/**\n * Check if a given object implements the TokenPriceDTO interface.\n */\nexport function instanceOfTokenPriceDTO(value: object): value is TokenPriceDTO {\n if (!('tokenAddress' in value) || value['tokenAddress'] === undefined) return false;\n if (!('priceInUsd' in value) || value['priceInUsd'] === undefined) return false;\n if (!('priceInNative' in value) || value['priceInNative'] === undefined) return false;\n if (!('timestamp' in value) || value['timestamp'] === undefined) return false;\n return true;\n}\n\nexport function TokenPriceDTOFromJSON(json: any): TokenPriceDTO {\n return TokenPriceDTOFromJSONTyped(json, false);\n}\n\nexport function TokenPriceDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenPriceDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'tokenAddress': json['tokenAddress'],\n 'priceInUsd': json['priceInUsd'],\n 'priceInNative': json['priceInNative'],\n 'timestamp': json['timestamp'],\n };\n}\n\nexport function TokenPriceDTOToJSON(json: any): TokenPriceDTO {\n return TokenPriceDTOToJSONTyped(json, false);\n}\n\nexport function TokenPriceDTOToJSONTyped(value?: TokenPriceDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'tokenAddress': value['tokenAddress'],\n 'priceInUsd': value['priceInUsd'],\n 'priceInNative': value['priceInNative'],\n 'timestamp': value['timestamp'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { TokenPriceDTO } from './TokenPriceDTO';\nimport {\n TokenPriceDTOFromJSON,\n TokenPriceDTOFromJSONTyped,\n TokenPriceDTOToJSON,\n TokenPriceDTOToJSONTyped,\n} from './TokenPriceDTO';\n\n/**\n * \n * @export\n * @interface TokenPricePage\n */\nexport interface TokenPricePage {\n /**\n * DTO.PAGE.HAS_NEXT\n * @type {boolean}\n * @memberof TokenPricePage\n */\n hasNext?: boolean;\n /**\n * DTO.PAGE.HAS_PREV\n * @type {boolean}\n * @memberof TokenPricePage\n */\n hasPrev?: boolean;\n /**\n * DTO.PAGE.START_CURSOR\n * @type {string}\n * @memberof TokenPricePage\n */\n startCursor?: string;\n /**\n * DTO.PAGE.END_CURSOR\n * @type {string}\n * @memberof TokenPricePage\n */\n endCursor?: string;\n /**\n * DTO.PAGE.TOTAL\n * @type {number}\n * @memberof TokenPricePage\n */\n total?: number;\n /**\n * DTO.TOKEN.PRICE.PAGE.DATA\n * @type {Array<TokenPriceDTO>}\n * @memberof TokenPricePage\n */\n data: Array<TokenPriceDTO>;\n}\n\n/**\n * Check if a given object implements the TokenPricePage interface.\n */\nexport function instanceOfTokenPricePage(value: object): value is TokenPricePage {\n if (!('data' in value) || value['data'] === undefined) return false;\n return true;\n}\n\nexport function TokenPricePageFromJSON(json: any): TokenPricePage {\n return TokenPricePageFromJSONTyped(json, false);\n}\n\nexport function TokenPricePageFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenPricePage {\n if (json == null) {\n return json;\n }\n return {\n \n 'hasNext': json['hasNext'] == null ? undefined : json['hasNext'],\n 'hasPrev': json['hasPrev'] == null ? undefined : json['hasPrev'],\n 'startCursor': json['startCursor'] == null ? undefined : json['startCursor'],\n 'endCursor': json['endCursor'] == null ? undefined : json['endCursor'],\n 'total': json['total'] == null ? undefined : json['total'],\n 'data': ((json['data'] as Array<any>).map(TokenPriceDTOFromJSON)),\n };\n}\n\nexport function TokenPricePageToJSON(json: any): TokenPricePage {\n return TokenPricePageToJSONTyped(json, false);\n}\n\nexport function TokenPricePageToJSONTyped(value?: TokenPricePage | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'hasNext': value['hasNext'],\n 'hasPrev': value['hasPrev'],\n 'startCursor': value['startCursor'],\n 'endCursor': value['endCursor'],\n 'total': value['total'],\n 'data': ((value['data'] as Array<any>).map(TokenPriceDTOToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TopTradersDTO\n */\nexport interface TopTradersDTO {\n /**\n * DTO.TRADE.TOP_TRADERS.TOKEN_ADDRESS\n * @type {string}\n * @memberof TopTradersDTO\n */\n tokenAddress: string;\n /**\n * DTO.TRADE.TOP_TRADERS.OWNER\n * @type {string}\n * @memberof TopTradersDTO\n */\n owner: string;\n /**\n * DTO.TRADE.TOP_TRADERS.TAGS\n * @type {Array<string>}\n * @memberof TopTradersDTO\n */\n tags: Array<string>;\n /**\n * DTO.TRADE.TOP_TRADERS.TYPE\n * @type {string}\n * @memberof TopTradersDTO\n */\n type: string;\n /**\n * DTO.TRADE.TOP_TRADERS.VOLUME\n * @type {number}\n * @memberof TopTradersDTO\n */\n volume: number;\n /**\n * DTO.TRADE.TOP_TRADERS.TRADE\n * @type {number}\n * @memberof TopTradersDTO\n */\n trade: number;\n /**\n * DTO.TRADE.TOP_TRADERS.TRADE_BUY\n * @type {number}\n * @memberof TopTradersDTO\n */\n tradeBuy: number;\n /**\n * DTO.TRADE.TOP_TRADERS.TRADE_SELL\n * @type {number}\n * @memberof TopTradersDTO\n */\n tradeSell: number;\n /**\n * DTO.TRADE.TOP_TRADERS.VOLUME_BUY\n * @type {number}\n * @memberof TopTradersDTO\n */\n volumeBuy: number;\n /**\n * DTO.TRADE.TOP_TRADERS.VOLUME_SELL\n * @type {number}\n * @memberof TopTradersDTO\n */\n volumeSell: number;\n /**\n * DTO.TRADE.TOP_TRADERS.IS_SCALED_UI_TOKEN\n * @type {boolean}\n * @memberof TopTradersDTO\n */\n isScaledUiToken: boolean;\n /**\n * DTO.TRADE.TOP_TRADERS.MULTIPLIER\n * @type {string}\n * @memberof TopTradersDTO\n */\n multiplier?: 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 (!('owner' in value) || value['owner'] === undefined) return false;\n if (!('tags' in value) || value['tags'] === undefined) return false;\n if (!('type' in value) || value['type'] === undefined) return false;\n if (!('volume' in value) || value['volume'] === undefined) return false;\n if (!('trade' in value) || value['trade'] === undefined) return false;\n if (!('tradeBuy' in value) || value['tradeBuy'] === undefined) return false;\n if (!('tradeSell' in value) || value['tradeSell'] === undefined) return false;\n if (!('volumeBuy' in value) || value['volumeBuy'] === undefined) return false;\n if (!('volumeSell' in value) || value['volumeSell'] === undefined) return false;\n if (!('isScaledUiToken' in value) || value['isScaledUiToken'] === 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 'owner': json['owner'],\n 'tags': json['tags'],\n 'type': json['type'],\n 'volume': json['volume'],\n 'trade': json['trade'],\n 'tradeBuy': json['tradeBuy'],\n 'tradeSell': json['tradeSell'],\n 'volumeBuy': json['volumeBuy'],\n 'volumeSell': json['volumeSell'],\n 'isScaledUiToken': json['isScaledUiToken'],\n 'multiplier': json['multiplier'] == null ? undefined : json['multiplier'],\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 'owner': value['owner'],\n 'tags': value['tags'],\n 'type': value['type'],\n 'volume': value['volume'],\n 'trade': value['trade'],\n 'tradeBuy': value['tradeBuy'],\n 'tradeSell': value['tradeSell'],\n 'volumeBuy': value['volumeBuy'],\n 'volumeSell': value['volumeSell'],\n 'isScaledUiToken': value['isScaledUiToken'],\n 'multiplier': value['multiplier'],\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 * DTO.PAGE.HAS_NEXT\n * @type {boolean}\n * @memberof TopTradersPage\n */\n hasNext?: boolean;\n /**\n * DTO.PAGE.HAS_PREV\n * @type {boolean}\n * @memberof TopTradersPage\n */\n hasPrev?: boolean;\n /**\n * DTO.PAGE.START_CURSOR\n * @type {string}\n * @memberof TopTradersPage\n */\n startCursor?: string;\n /**\n * DTO.PAGE.END_CURSOR\n * @type {string}\n * @memberof TopTradersPage\n */\n endCursor?: string;\n /**\n * DTO.PAGE.TOTAL\n * @type {number}\n * @memberof TopTradersPage\n */\n total?: number;\n /**\n * DTO.TRADE.TOP_TRADERS.PAGE.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 * DTO.TRADE.DETAIL.CHAIN\n * @type {string}\n * @memberof TradeDetailDTO\n */\n chain: string;\n /**\n * DTO.TRADE.DETAIL.BLOCK_HEIGHT\n * @type {number}\n * @memberof TradeDetailDTO\n */\n blockHeight: number;\n /**\n * DTO.TRADE.DETAIL.BLOCK_TIMESTAMP\n * @type {number}\n * @memberof TradeDetailDTO\n */\n blockTimestamp: number;\n /**\n * DTO.TRADE.DETAIL.ACCOUNT_OWNER_ADDRESS\n * @type {string}\n * @memberof TradeDetailDTO\n */\n accountOwnerAddress: string;\n /**\n * DTO.TRADE.DETAIL.TRANSACTION_SIGNATURE\n * @type {string}\n * @memberof TradeDetailDTO\n */\n transactionSignature: string;\n /**\n * DTO.TRADE.DETAIL.TOKEN_NAME\n * @type {string}\n * @memberof TradeDetailDTO\n */\n tokenName: string;\n /**\n * DTO.TRADE.DETAIL.TOKEN_SYMBOL\n * @type {string}\n * @memberof TradeDetailDTO\n */\n tokenSymbol: string;\n /**\n * DTO.TRADE.DETAIL.TOKEN_IMAGE_URL\n * @type {string}\n * @memberof TradeDetailDTO\n */\n tokenImageUrl: string;\n /**\n * DTO.TRADE.DETAIL.TOKEN_ADDRESS\n * @type {string}\n * @memberof TradeDetailDTO\n */\n tokenAddress: string;\n /**\n * DTO.TRADE.DETAIL.POOL_ADDRESS\n * @type {string}\n * @memberof TradeDetailDTO\n */\n poolAddress: string;\n /**\n * DTO.TRADE.DETAIL.DEX_PROGRAM_ADDRESS\n * @type {string}\n * @memberof TradeDetailDTO\n */\n dexProgramAddress: string;\n /**\n * DTO.TRADE.DETAIL.DEX_PROTOCOL_FAMILY\n * @type {string}\n * @memberof TradeDetailDTO\n */\n dexProtocolFamily: string;\n /**\n * DTO.TRADE.DETAIL.DEX_IMAGE\n * @type {string}\n * @memberof TradeDetailDTO\n */\n dexImage: string;\n /**\n * DTO.TRADE.DETAIL.TOKEN_AMOUNT\n * @type {string}\n * @memberof TradeDetailDTO\n */\n tokenAmount: string;\n /**\n * DTO.TRADE.DETAIL.TOKEN_PRICE_IN_USD\n * @type {string}\n * @memberof TradeDetailDTO\n */\n tokenPriceInUsd: string;\n /**\n * DTO.TRADE.DETAIL.TOKEN_AMOUNT_IN_USD\n * @type {string}\n * @memberof TradeDetailDTO\n */\n tokenAmountInUsd: string;\n /**\n * DTO.TRADE.DETAIL.TYPE\n * @type {string}\n * @memberof TradeDetailDTO\n */\n type: string;\n /**\n * DTO.TRADE.DETAIL.SIDE_TOKEN_NAME\n * @type {string}\n * @memberof TradeDetailDTO\n */\n sideTokenName: string;\n /**\n * DTO.TRADE.DETAIL.SIDE_TOKEN_SYMBOL\n * @type {string}\n * @memberof TradeDetailDTO\n */\n sideTokenSymbol: string;\n /**\n * DTO.TRADE.DETAIL.SIDE_TOKEN_IMAGE_URL\n * @type {string}\n * @memberof TradeDetailDTO\n */\n sideTokenImageUrl: string;\n /**\n * DTO.TRADE.DETAIL.SIDE_TOKEN_ADDRESS\n * @type {string}\n * @memberof TradeDetailDTO\n */\n sideTokenAddress: string;\n /**\n * DTO.TRADE.DETAIL.SIDE_TOKEN_PRICE_IN_USD\n * @type {string}\n * @memberof TradeDetailDTO\n */\n sideTokenPriceInUsd: string;\n /**\n * DTO.TRADE.DETAIL.SIDE_TOKEN_AMOUNT\n * @type {string}\n * @memberof TradeDetailDTO\n */\n sideTokenAmount: string;\n /**\n * DTO.TRADE.DETAIL.SIDE_TOKEN_AMOUNT_IN_USD\n * @type {string}\n * @memberof TradeDetailDTO\n */\n sideTokenAmountInUsd: string;\n /**\n * DTO.TRADE.DETAIL.STATUS\n * @type {string}\n * @memberof TradeDetailDTO\n */\n status: string;\n}\n\n/**\n * Check if a given object implements the TradeDetailDTO interface.\n */\nexport function instanceOfTradeDetailDTO(value: object): value is TradeDetailDTO {\n if (!('chain' in value) || value['chain'] === undefined) return false;\n if (!('blockHeight' in value) || value['blockHeight'] === undefined) return false;\n if (!('blockTimestamp' in value) || value['blockTimestamp'] === undefined) return false;\n if (!('accountOwnerAddress' in value) || value['accountOwnerAddress'] === undefined) return false;\n if (!('transactionSignature' in value) || value['transactionSignature'] === undefined) return false;\n if (!('tokenName' in value) || value['tokenName'] === undefined) return false;\n if (!('tokenSymbol' in value) || value['tokenSymbol'] === undefined) return false;\n if (!('tokenImageUrl' in value) || value['tokenImageUrl'] === undefined) return false;\n if (!('tokenAddress' in value) || value['tokenAddress'] === undefined) return false;\n if (!('poolAddress' in value) || value['poolAddress'] === undefined) return false;\n if (!('dexProgramAddress' in value) || value['dexProgramAddress'] === undefined) return false;\n if (!('dexProtocolFamily' in value) || value['dexProtocolFamily'] === undefined) return false;\n if (!('dexImage' in value) || value['dexImage'] === undefined) return false;\n if (!('tokenAmount' in value) || value['tokenAmount'] === undefined) return false;\n if (!('tokenPriceInUsd' in value) || value['tokenPriceInUsd'] === undefined) return false;\n if (!('tokenAmountInUsd' in value) || value['tokenAmountInUsd'] === undefined) return false;\n if (!('type' in value) || value['type'] === undefined) return false;\n if (!('sideTokenName' in value) || value['sideTokenName'] === undefined) return false;\n if (!('sideTokenSymbol' in value) || value['sideTokenSymbol'] === undefined) return false;\n if (!('sideTokenImageUrl' in value) || value['sideTokenImageUrl'] === undefined) return false;\n if (!('sideTokenAddress' in value) || value['sideTokenAddress'] === undefined) return false;\n if (!('sideTokenPriceInUsd' in value) || value['sideTokenPriceInUsd'] === undefined) return false;\n if (!('sideTokenAmount' in value) || value['sideTokenAmount'] === undefined) return false;\n if (!('sideTokenAmountInUsd' in value) || value['sideTokenAmountInUsd'] === undefined) return false;\n if (!('status' in value) || value['status'] === undefined) return false;\n return true;\n}\n\nexport function TradeDetailDTOFromJSON(json: any): TradeDetailDTO {\n return TradeDetailDTOFromJSONTyped(json, false);\n}\n\nexport function TradeDetailDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): TradeDetailDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'chain': json['chain'],\n 'blockHeight': json['blockHeight'],\n 'blockTimestamp': json['blockTimestamp'],\n 'accountOwnerAddress': json['accountOwnerAddress'],\n 'transactionSignature': json['transactionSignature'],\n 'tokenName': json['tokenName'],\n 'tokenSymbol': json['tokenSymbol'],\n 'tokenImageUrl': json['tokenImageUrl'],\n 'tokenAddress': json['tokenAddress'],\n 'poolAddress': json['poolAddress'],\n 'dexProgramAddress': json['dexProgramAddress'],\n 'dexProtocolFamily': json['dexProtocolFamily'],\n 'dexImage': json['dexImage'],\n 'tokenAmount': json['tokenAmount'],\n 'tokenPriceInUsd': json['tokenPriceInUsd'],\n 'tokenAmountInUsd': json['tokenAmountInUsd'],\n 'type': json['type'],\n 'sideTokenName': json['sideTokenName'],\n 'sideTokenSymbol': json['sideTokenSymbol'],\n 'sideTokenImageUrl': json['sideTokenImageUrl'],\n 'sideTokenAddress': json['sideTokenAddress'],\n 'sideTokenPriceInUsd': json['sideTokenPriceInUsd'],\n 'sideTokenAmount': json['sideTokenAmount'],\n 'sideTokenAmountInUsd': json['sideTokenAmountInUsd'],\n 'status': json['status'],\n };\n}\n\nexport function TradeDetailDTOToJSON(json: any): TradeDetailDTO {\n return TradeDetailDTOToJSONTyped(json, false);\n}\n\nexport function TradeDetailDTOToJSONTyped(value?: TradeDetailDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'chain': value['chain'],\n 'blockHeight': value['blockHeight'],\n 'blockTimestamp': value['blockTimestamp'],\n 'accountOwnerAddress': value['accountOwnerAddress'],\n 'transactionSignature': value['transactionSignature'],\n 'tokenName': value['tokenName'],\n 'tokenSymbol': value['tokenSymbol'],\n 'tokenImageUrl': value['tokenImageUrl'],\n 'tokenAddress': value['tokenAddress'],\n 'poolAddress': value['poolAddress'],\n 'dexProgramAddress': value['dexProgramAddress'],\n 'dexProtocolFamily': value['dexProtocolFamily'],\n 'dexImage': value['dexImage'],\n 'tokenAmount': value['tokenAmount'],\n 'tokenPriceInUsd': value['tokenPriceInUsd'],\n 'tokenAmountInUsd': value['tokenAmountInUsd'],\n 'type': value['type'],\n 'sideTokenName': value['sideTokenName'],\n 'sideTokenSymbol': value['sideTokenSymbol'],\n 'sideTokenImageUrl': value['sideTokenImageUrl'],\n 'sideTokenAddress': value['sideTokenAddress'],\n 'sideTokenPriceInUsd': value['sideTokenPriceInUsd'],\n 'sideTokenAmount': value['sideTokenAmount'],\n 'sideTokenAmountInUsd': value['sideTokenAmountInUsd'],\n 'status': value['status'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { TradeDetailDTO } from './TradeDetailDTO';\nimport {\n TradeDetailDTOFromJSON,\n TradeDetailDTOFromJSONTyped,\n TradeDetailDTOToJSON,\n TradeDetailDTOToJSONTyped,\n} from './TradeDetailDTO';\n\n/**\n * \n * @export\n * @interface TradePage\n */\nexport interface TradePage {\n /**\n * DTO.PAGE.HAS_NEXT\n * @type {boolean}\n * @memberof TradePage\n */\n hasNext?: boolean;\n /**\n * DTO.PAGE.HAS_PREV\n * @type {boolean}\n * @memberof TradePage\n */\n hasPrev?: boolean;\n /**\n * DTO.PAGE.START_CURSOR\n * @type {string}\n * @memberof TradePage\n */\n startCursor?: string;\n /**\n * DTO.PAGE.END_CURSOR\n * @type {string}\n * @memberof TradePage\n */\n endCursor?: string;\n /**\n * DTO.PAGE.TOTAL\n * @type {number}\n * @memberof TradePage\n */\n total?: number;\n /**\n * DTO.TRADE.PAGE.DATA\n * @type {Array<TradeDetailDTO>}\n * @memberof TradePage\n */\n data: Array<TradeDetailDTO>;\n}\n\n/**\n * Check if a given object implements the TradePage interface.\n */\nexport function instanceOfTradePage(value: object): value is TradePage {\n if (!('data' in value) || value['data'] === undefined) return false;\n return true;\n}\n\nexport function TradePageFromJSON(json: any): TradePage {\n return TradePageFromJSONTyped(json, false);\n}\n\nexport function TradePageFromJSONTyped(json: any, ignoreDiscriminator: boolean): TradePage {\n if (json == null) {\n return json;\n }\n return {\n \n 'hasNext': json['hasNext'] == null ? undefined : json['hasNext'],\n 'hasPrev': json['hasPrev'] == null ? undefined : json['hasPrev'],\n 'startCursor': json['startCursor'] == null ? undefined : json['startCursor'],\n 'endCursor': json['endCursor'] == null ? undefined : json['endCursor'],\n 'total': json['total'] == null ? undefined : json['total'],\n 'data': ((json['data'] as Array<any>).map(TradeDetailDTOFromJSON)),\n };\n}\n\nexport function TradePageToJSON(json: any): TradePage {\n return TradePageToJSONTyped(json, false);\n}\n\nexport function TradePageToJSONTyped(value?: TradePage | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'hasNext': value['hasNext'],\n 'hasPrev': value['hasPrev'],\n 'startCursor': value['startCursor'],\n 'endCursor': value['endCursor'],\n 'total': value['total'],\n 'data': ((value['data'] as Array<any>).map(TradeDetailDTOToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface WalletBalanceDetailDTO\n */\nexport interface WalletBalanceDetailDTO {\n /**\n * DTO.WALLET.BALANCE.TOKEN_ADDRESS\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n tokenAddress: string;\n /**\n * DTO.WALLET.BALANCE.AMOUNT\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n amount: string;\n /**\n * DTO.WALLET.BALANCE.AMOUNT_IN_USD\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n valueInUsd: string;\n /**\n * DTO.WALLET.BALANCE.TOKEN_NAME\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n name: string;\n /**\n * DTO.WALLET.BALANCE.TOKEN_SYMBOL\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n symbol: string;\n /**\n * DTO.WALLET.BALANCE.TOKEN_IMAGE_URL\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n imageUrl: string;\n /**\n * DTO.WALLET.BALANCE.TOKEN_PRICE_IN_SOL\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n priceInSol: string;\n /**\n * DTO.WALLET.BALANCE.TOKEN_PRICE_IN_USD\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n priceInUsd: string;\n /**\n * DTO.WALLET.BALANCE.PRICE_CHANGE_24H\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n priceChangeRatioInUsd24h: string;\n /**\n * DTO.WALLET.BALANCE.UNREALIZED_PROFIT\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n unrealizedProfitInUsd: string;\n /**\n * DTO.WALLET.BALANCE.UNREALIZED_PROFIT_RATIO\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n unrealizedProfitRatio: string;\n /**\n * DTO.WALLET.BALANCE.OPEN_TIME\n * @type {number}\n * @memberof WalletBalanceDetailDTO\n */\n openTime: number;\n /**\n * DTO.WALLET.BALANCE.CLOSE_TIME\n * @type {number}\n * @memberof WalletBalanceDetailDTO\n */\n closeTime: number;\n /**\n * DTO.WALLET.BALANCE.BUYS\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n buys: string;\n /**\n * DTO.WALLET.BALANCE.BUY_AMOUNT\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n buyAmount: string;\n /**\n * DTO.WALLET.BALANCE.BUY_AMOUNT_USD\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n buyAmountInUsd: string;\n /**\n * DTO.WALLET.BALANCE.SELLS\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n sells: string;\n /**\n * DTO.WALLET.BALANCE.SELL_AMOUNT\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n sellAmount: string;\n /**\n * DTO.WALLET.BALANCE.SELL_AMOUNT_USD\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n sellAmountInUsd: string;\n /**\n * DTO.WALLET.BALANCE.AVERAGE_BUY_PRICE\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n averageBuyPriceInUsd: string;\n /**\n * DTO.WALLET.BALANCE.AVERAGE_SELL_PRICE\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n averageSellPriceInUsd: string;\n /**\n * DTO.WALLET.BALANCE.REALIZED_PROFIT_IN_USD\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n realizedProfitInUsd: string;\n /**\n * DTO.WALLET.BALANCE.REALIZED_PROFIT_RATIO\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n realizedProfitRatio: string;\n /**\n * DTO.WALLET.BALANCE.TOTAL_REALIZED_PROFIT\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n totalRealizedProfitInUsd: string;\n /**\n * DTO.WALLET.BALANCE.TOTAL_REALIZED_PROFIT_RATIO\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n totalRealizedProfitRatio: string;\n}\n\n/**\n * Check if a given object implements the WalletBalanceDetailDTO interface.\n */\nexport function instanceOfWalletBalanceDetailDTO(value: object): value is WalletBalanceDetailDTO {\n if (!('tokenAddress' in value) || value['tokenAddress'] === undefined) return false;\n if (!('amount' in value) || value['amount'] === undefined) return false;\n if (!('valueInUsd' in value) || value['valueInUsd'] === undefined) return false;\n if (!('name' in value) || value['name'] === undefined) return false;\n if (!('symbol' in value) || value['symbol'] === undefined) return false;\n if (!('imageUrl' in value) || value['imageUrl'] === undefined) return false;\n if (!('priceInSol' in value) || value['priceInSol'] === undefined) return false;\n if (!('priceInUsd' in value) || value['priceInUsd'] === undefined) return false;\n if (!('priceChangeRatioInUsd24h' in value) || value['priceChangeRatioInUsd24h'] === undefined) return false;\n if (!('unrealizedProfitInUsd' in value) || value['unrealizedProfitInUsd'] === undefined) return false;\n if (!('unrealizedProfitRatio' in value) || value['unrealizedProfitRatio'] === undefined) return false;\n if (!('openTime' in value) || value['openTime'] === undefined) return false;\n if (!('closeTime' in value) || value['closeTime'] === undefined) return false;\n if (!('buys' in value) || value['buys'] === undefined) return false;\n if (!('buyAmount' in value) || value['buyAmount'] === undefined) return false;\n if (!('buyAmountInUsd' in value) || value['buyAmountInUsd'] === undefined) return false;\n if (!('sells' in value) || value['sells'] === undefined) return false;\n if (!('sellAmount' in value) || value['sellAmount'] === undefined) return false;\n if (!('sellAmountInUsd' in value) || value['sellAmountInUsd'] === undefined) return false;\n if (!('averageBuyPriceInUsd' in value) || value['averageBuyPriceInUsd'] === undefined) return false;\n if (!('averageSellPriceInUsd' in value) || value['averageSellPriceInUsd'] === undefined) return false;\n if (!('realizedProfitInUsd' in value) || value['realizedProfitInUsd'] === undefined) return false;\n if (!('realizedProfitRatio' in value) || value['realizedProfitRatio'] === undefined) return false;\n if (!('totalRealizedProfitInUsd' in value) || value['totalRealizedProfitInUsd'] === undefined) return false;\n if (!('totalRealizedProfitRatio' in value) || value['totalRealizedProfitRatio'] === undefined) return false;\n return true;\n}\n\nexport function WalletBalanceDetailDTOFromJSON(json: any): WalletBalanceDetailDTO {\n return WalletBalanceDetailDTOFromJSONTyped(json, false);\n}\n\nexport function WalletBalanceDetailDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): WalletBalanceDetailDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'tokenAddress': json['tokenAddress'],\n 'amount': json['amount'],\n 'valueInUsd': json['valueInUsd'],\n 'name': json['name'],\n 'symbol': json['symbol'],\n 'imageUrl': json['imageUrl'],\n 'priceInSol': json['priceInSol'],\n 'priceInUsd': json['priceInUsd'],\n 'priceChangeRatioInUsd24h': json['priceChangeRatioInUsd24h'],\n 'unrealizedProfitInUsd': json['unrealizedProfitInUsd'],\n 'unrealizedProfitRatio': json['unrealizedProfitRatio'],\n 'openTime': json['openTime'],\n 'closeTime': json['closeTime'],\n 'buys': json['buys'],\n 'buyAmount': json['buyAmount'],\n 'buyAmountInUsd': json['buyAmountInUsd'],\n 'sells': json['sells'],\n 'sellAmount': json['sellAmount'],\n 'sellAmountInUsd': json['sellAmountInUsd'],\n 'averageBuyPriceInUsd': json['averageBuyPriceInUsd'],\n 'averageSellPriceInUsd': json['averageSellPriceInUsd'],\n 'realizedProfitInUsd': json['realizedProfitInUsd'],\n 'realizedProfitRatio': json['realizedProfitRatio'],\n 'totalRealizedProfitInUsd': json['totalRealizedProfitInUsd'],\n 'totalRealizedProfitRatio': json['totalRealizedProfitRatio'],\n };\n}\n\nexport function WalletBalanceDetailDTOToJSON(json: any): WalletBalanceDetailDTO {\n return WalletBalanceDetailDTOToJSONTyped(json, false);\n}\n\nexport function WalletBalanceDetailDTOToJSONTyped(value?: WalletBalanceDetailDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'tokenAddress': value['tokenAddress'],\n 'amount': value['amount'],\n 'valueInUsd': value['valueInUsd'],\n 'name': value['name'],\n 'symbol': value['symbol'],\n 'imageUrl': value['imageUrl'],\n 'priceInSol': value['priceInSol'],\n 'priceInUsd': value['priceInUsd'],\n 'priceChangeRatioInUsd24h': value['priceChangeRatioInUsd24h'],\n 'unrealizedProfitInUsd': value['unrealizedProfitInUsd'],\n 'unrealizedProfitRatio': value['unrealizedProfitRatio'],\n 'openTime': value['openTime'],\n 'closeTime': value['closeTime'],\n 'buys': value['buys'],\n 'buyAmount': value['buyAmount'],\n 'buyAmountInUsd': value['buyAmountInUsd'],\n 'sells': value['sells'],\n 'sellAmount': value['sellAmount'],\n 'sellAmountInUsd': value['sellAmountInUsd'],\n 'averageBuyPriceInUsd': value['averageBuyPriceInUsd'],\n 'averageSellPriceInUsd': value['averageSellPriceInUsd'],\n 'realizedProfitInUsd': value['realizedProfitInUsd'],\n 'realizedProfitRatio': value['realizedProfitRatio'],\n 'totalRealizedProfitInUsd': value['totalRealizedProfitInUsd'],\n 'totalRealizedProfitRatio': value['totalRealizedProfitRatio'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { WalletBalanceDetailDTO } from './WalletBalanceDetailDTO';\nimport {\n WalletBalanceDetailDTOFromJSON,\n WalletBalanceDetailDTOFromJSONTyped,\n WalletBalanceDetailDTOToJSON,\n WalletBalanceDetailDTOToJSONTyped,\n} from './WalletBalanceDetailDTO';\n\n/**\n * \n * @export\n * @interface WalletBalancesDTO\n */\nexport interface WalletBalancesDTO {\n /**\n * DTO.WALLET.BALANCES.TOTAL_BALANCES_IN_USD\n * @type {string}\n * @memberof WalletBalancesDTO\n */\n totalBalancesInUsd: string;\n /**\n * DTO.WALLET.BALANCES.TOTAL_PROFIT_IN_USD\n * @type {string}\n * @memberof WalletBalancesDTO\n */\n totalProfitInUsd: string;\n /**\n * DTO.WALLET.BALANCES.BALANCES.DETAIL\n * @type {Array<WalletBalanceDetailDTO>}\n * @memberof WalletBalancesDTO\n */\n balances: Array<WalletBalanceDetailDTO>;\n}\n\n/**\n * Check if a given object implements the WalletBalancesDTO interface.\n */\nexport function instanceOfWalletBalancesDTO(value: object): value is WalletBalancesDTO {\n if (!('totalBalancesInUsd' in value) || value['totalBalancesInUsd'] === undefined) return false;\n if (!('totalProfitInUsd' in value) || value['totalProfitInUsd'] === undefined) return false;\n if (!('balances' in value) || value['balances'] === undefined) return false;\n return true;\n}\n\nexport function WalletBalancesDTOFromJSON(json: any): WalletBalancesDTO {\n return WalletBalancesDTOFromJSONTyped(json, false);\n}\n\nexport function WalletBalancesDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): WalletBalancesDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'totalBalancesInUsd': json['totalBalancesInUsd'],\n 'totalProfitInUsd': json['totalProfitInUsd'],\n 'balances': ((json['balances'] as Array<any>).map(WalletBalanceDetailDTOFromJSON)),\n };\n}\n\nexport function WalletBalancesDTOToJSON(json: any): WalletBalancesDTO {\n return WalletBalancesDTOToJSONTyped(json, false);\n}\n\nexport function WalletBalancesDTOToJSONTyped(value?: WalletBalancesDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'totalBalancesInUsd': value['totalBalancesInUsd'],\n 'totalProfitInUsd': value['totalProfitInUsd'],\n 'balances': ((value['balances'] as Array<any>).map(WalletBalanceDetailDTOToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface WalletPnlDTO\n */\nexport interface WalletPnlDTO {\n /**\n * DTO.WALLET.PNL.ID\n * @type {number}\n * @memberof WalletPnlDTO\n */\n id: number;\n /**\n * DTO.WALLET.PNL.CHAIN\n * @type {string}\n * @memberof WalletPnlDTO\n */\n chain: string;\n /**\n * DTO.WALLET.PNL.WALLET_ADDRESS\n * @type {string}\n * @memberof WalletPnlDTO\n */\n walletAddress: string;\n /**\n * DTO.WALLET.PNL.TOKEN_ADDRESS\n * @type {string}\n * @memberof WalletPnlDTO\n */\n tokenAddress: string;\n /**\n * DTO.WALLET.PNL.TOKEN_PRICE\n * @type {number}\n * @memberof WalletPnlDTO\n */\n tokenPriceInUsd: number;\n /**\n * DTO.WALLET.PNL.OPEN_TIME\n * @type {number}\n * @memberof WalletPnlDTO\n */\n openTime: number;\n /**\n * DTO.WALLET.PNL.CLOSE_TIME\n * @type {number}\n * @memberof WalletPnlDTO\n */\n closeTime: number;\n /**\n * DTO.WALLET.PNL.LAST_TIME\n * @type {number}\n * @memberof WalletPnlDTO\n */\n lastTime: number;\n /**\n * DTO.WALLET.PNL.BALANCE\n * @type {number}\n * @memberof WalletPnlDTO\n */\n balance: number;\n /**\n * DTO.WALLET.PNL.BUY_AMOUNT\n * @type {number}\n * @memberof WalletPnlDTO\n */\n buyAmount: number;\n /**\n * DTO.WALLET.PNL.BUY_AMOUNT_USD\n * @type {number}\n * @memberof WalletPnlDTO\n */\n buyAmountInUsd: number;\n /**\n * DTO.WALLET.PNL.BUYS\n * @type {number}\n * @memberof WalletPnlDTO\n */\n buys: number;\n /**\n * DTO.WALLET.PNL.SELL_AMOUNT\n * @type {number}\n * @memberof WalletPnlDTO\n */\n sellAmount: number;\n /**\n * DTO.WALLET.PNL.SELL_AMOUNT_USD\n * @type {number}\n * @memberof WalletPnlDTO\n */\n sellAmountInUsd: number;\n /**\n * DTO.WALLET.PNL.SELLS\n * @type {number}\n * @memberof WalletPnlDTO\n */\n sells: number;\n /**\n * DTO.WALLET.PNL.AVERAGE_BUY_PRICE\n * @type {number}\n * @memberof WalletPnlDTO\n */\n averageBuyPriceInUsd: number;\n /**\n * DTO.WALLET.PNL.AVERAGE_SELL_PRICE\n * @type {number}\n * @memberof WalletPnlDTO\n */\n averageSellPriceInUsd: number;\n /**\n * DTO.WALLET.PNL.UNREALIZED_PROFIT\n * @type {number}\n * @memberof WalletPnlDTO\n */\n unrealizedProfitInUsd: number;\n /**\n * DTO.WALLET.PNL.UNREALIZED_PROFIT_RATIO\n * @type {number}\n * @memberof WalletPnlDTO\n */\n unrealizedProfitRatio: number;\n /**\n * DTO.WALLET.PNL.REALIZED_PROFIT\n * @type {number}\n * @memberof WalletPnlDTO\n */\n realizedProfitInUsd: number;\n /**\n * DTO.WALLET.PNL.REALIZED_PROFIT_RATIO\n * @type {number}\n * @memberof WalletPnlDTO\n */\n realizedProfitRatio: number;\n /**\n * DTO.WALLET.PNL.TOTAL_REALIZED_PROFIT\n * @type {number}\n * @memberof WalletPnlDTO\n */\n totalRealizedProfitInUsd: number;\n /**\n * DTO.WALLET.PNL.TOTAL_REALIZED_PROFIT_RATIO\n * @type {number}\n * @memberof WalletPnlDTO\n */\n totalRealizedProfitRatio: number;\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\n\nimport * as runtime from '../runtime';\nimport type {\n BlockchainDTO,\n BlockchainLatestBlockDTO,\n ChainSymbol,\n} from '../models/index';\nimport {\n BlockchainDTOFromJSON,\n BlockchainDTOToJSON,\n BlockchainLatestBlockDTOFromJSON,\n BlockchainLatestBlockDTOToJSON,\n ChainSymbolFromJSON,\n ChainSymbolToJSON,\n} from '../models/index';\n\nexport interface GetLatestBlockRequest {\n chain: ChainSymbol;\n}\n\n/**\n * \n */\nexport class BlockchainApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.GET_LATEST_BLOCK.DESCRIPTION\n * CONTROLLER.GET_LATEST_BLOCK.SUMMARY\n */\n async getLatestBlockRaw(requestParameters: GetLatestBlockRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<BlockchainLatestBlockDTO>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getLatestBlock().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/blockchain/{chain}/latest_block`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => BlockchainLatestBlockDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.GET_LATEST_BLOCK.DESCRIPTION\n * CONTROLLER.GET_LATEST_BLOCK.SUMMARY\n */\n async getLatestBlock(requestParameters: GetLatestBlockRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<BlockchainLatestBlockDTO> {\n const response = await this.getLatestBlockRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.GET_SUPPORTED_BLOCKCHAINS.DESCRIPTION\n * CONTROLLER.GET_SUPPORTED_BLOCKCHAINS.SUMMARY\n */\n async getSupportedBlockchainsRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<BlockchainDTO>>> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/blockchain`;\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(BlockchainDTOFromJSON));\n }\n\n /**\n * CONTROLLER.GET_SUPPORTED_BLOCKCHAINS.DESCRIPTION\n * CONTROLLER.GET_SUPPORTED_BLOCKCHAINS.SUMMARY\n */\n async getSupportedBlockchains(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<BlockchainDTO>> {\n const response = await this.getSupportedBlockchainsRaw(initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n MoonshotCreateTokenInput,\n MoonshotCreateTokenReply,\n MoonshotSubmitCreateToken200Response,\n MoonshotSubmitCreateTokenInput,\n} from '../models/index';\nimport {\n MoonshotCreateTokenInputFromJSON,\n MoonshotCreateTokenInputToJSON,\n MoonshotCreateTokenReplyFromJSON,\n MoonshotCreateTokenReplyToJSON,\n MoonshotSubmitCreateToken200ResponseFromJSON,\n MoonshotSubmitCreateToken200ResponseToJSON,\n MoonshotSubmitCreateTokenInputFromJSON,\n MoonshotSubmitCreateTokenInputToJSON,\n} from '../models/index';\n\nexport interface MoonshotCreateTokenRequest {\n moonshotCreateTokenInput: MoonshotCreateTokenInput;\n}\n\nexport interface MoonshotSubmitCreateTokenRequest {\n moonshotSubmitCreateTokenInput: MoonshotSubmitCreateTokenInput;\n}\n\n/**\n * \n */\nexport class DefiSolanaMoonshotApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.MOONSHOT.CREATE_TOKEN.DESCRIPTION\n * CONTROLLER.MOONSHOT.CREATE_TOKEN.SUMMARY\n */\n async moonshotCreateTokenRaw(requestParameters: MoonshotCreateTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<MoonshotCreateTokenReply>> {\n if (requestParameters['moonshotCreateTokenInput'] == null) {\n throw new runtime.RequiredError(\n 'moonshotCreateTokenInput',\n 'Required parameter \"moonshotCreateTokenInput\" was null or undefined when calling moonshotCreateToken().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/solana/moonshot/create`;\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: MoonshotCreateTokenInputToJSON(requestParameters['moonshotCreateTokenInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => MoonshotCreateTokenReplyFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.MOONSHOT.CREATE_TOKEN.DESCRIPTION\n * CONTROLLER.MOONSHOT.CREATE_TOKEN.SUMMARY\n */\n async moonshotCreateToken(requestParameters: MoonshotCreateTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<MoonshotCreateTokenReply> {\n const response = await this.moonshotCreateTokenRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.MOONSHOT.SUBMIT_CREATE_TOKEN.DESCRIPTION\n * CONTROLLER.MOONSHOT.SUBMIT_CREATE_TOKEN.SUMMARY\n */\n async moonshotSubmitCreateTokenRaw(requestParameters: MoonshotSubmitCreateTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<MoonshotSubmitCreateToken200Response>> {\n if (requestParameters['moonshotSubmitCreateTokenInput'] == null) {\n throw new runtime.RequiredError(\n 'moonshotSubmitCreateTokenInput',\n 'Required parameter \"moonshotSubmitCreateTokenInput\" was null or undefined when calling moonshotSubmitCreateToken().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/solana/moonshot/submitCreateToken`;\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: MoonshotSubmitCreateTokenInputToJSON(requestParameters['moonshotSubmitCreateTokenInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => MoonshotSubmitCreateToken200ResponseFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.MOONSHOT.SUBMIT_CREATE_TOKEN.DESCRIPTION\n * CONTROLLER.MOONSHOT.SUBMIT_CREATE_TOKEN.SUMMARY\n */\n async moonshotSubmitCreateToken(requestParameters: MoonshotSubmitCreateTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<MoonshotSubmitCreateToken200Response> {\n const response = await this.moonshotSubmitCreateTokenRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n PumpCreateTokenInput,\n PumpCreateTokenReply,\n} from '../models/index';\nimport {\n PumpCreateTokenInputFromJSON,\n PumpCreateTokenInputToJSON,\n PumpCreateTokenReplyFromJSON,\n PumpCreateTokenReplyToJSON,\n} from '../models/index';\n\nexport interface PumpfunCreateTokenRequest {\n pumpCreateTokenInput: PumpCreateTokenInput;\n}\n\n/**\n * \n */\nexport class DefiSolanaPumpfunApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.PUMPFUN.CREATE_TOKEN.DESCRIPTION\n * CONTROLLER.PUMPFUN.CREATE_TOKEN.SUMMARY\n */\n async pumpfunCreateTokenRaw(requestParameters: PumpfunCreateTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PumpCreateTokenReply>> {\n if (requestParameters['pumpCreateTokenInput'] == null) {\n throw new runtime.RequiredError(\n 'pumpCreateTokenInput',\n 'Required parameter \"pumpCreateTokenInput\" was null or undefined when calling pumpfunCreateToken().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/solana/pumpfun/create`;\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: PumpCreateTokenInputToJSON(requestParameters['pumpCreateTokenInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => PumpCreateTokenReplyFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.PUMPFUN.CREATE_TOKEN.DESCRIPTION\n * CONTROLLER.PUMPFUN.CREATE_TOKEN.SUMMARY\n */\n async pumpfunCreateToken(requestParameters: PumpfunCreateTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PumpCreateTokenReply> {\n const response = await this.pumpfunCreateTokenRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ChainSymbol,\n CreateTokenInput,\n CreateTokenReply,\n DexPage,\n QuoteResponse,\n SwapInput,\n SwapReply,\n SwapRouteInput,\n SwapRouteResponse,\n} from '../models/index';\nimport {\n ChainSymbolFromJSON,\n ChainSymbolToJSON,\n CreateTokenInputFromJSON,\n CreateTokenInputToJSON,\n CreateTokenReplyFromJSON,\n CreateTokenReplyToJSON,\n DexPageFromJSON,\n DexPageToJSON,\n QuoteResponseFromJSON,\n QuoteResponseToJSON,\n SwapInputFromJSON,\n SwapInputToJSON,\n SwapReplyFromJSON,\n SwapReplyToJSON,\n SwapRouteInputFromJSON,\n SwapRouteInputToJSON,\n SwapRouteResponseFromJSON,\n SwapRouteResponseToJSON,\n} from '../models/index';\n\nexport interface CreateTokenRequest {\n chain: ChainSymbol;\n createTokenInput: CreateTokenInput;\n}\n\nexport interface ListDexRequest {\n chains?: Array<string>;\n limit?: number;\n dexProgram?: string;\n}\n\nexport interface QuoteRequest {\n chain: ChainSymbol;\n dex: QuoteDexEnum;\n amount: string;\n inputMint: string;\n outputMint: string;\n exactIn: boolean;\n slippage: number;\n}\n\nexport interface RouteRequest {\n chain: ChainSymbol;\n swapRouteInput: SwapRouteInput;\n}\n\nexport interface SwapRequest {\n chain: ChainSymbol;\n swapInput: SwapInput;\n}\n\n/**\n * \n */\nexport class DexApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.DEX.CREATE.DESCRIPTION\n * CONTROLLER.DEX.CREATE.SUMMARY\n */\n async createTokenRaw(requestParameters: CreateTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CreateTokenReply>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling createToken().'\n );\n }\n\n if (requestParameters['createTokenInput'] == null) {\n throw new runtime.RequiredError(\n 'createTokenInput',\n 'Required parameter \"createTokenInput\" was null or undefined when calling createToken().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/dex/{chain}/create`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: CreateTokenInputToJSON(requestParameters['createTokenInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => CreateTokenReplyFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.DEX.CREATE.DESCRIPTION\n * CONTROLLER.DEX.CREATE.SUMMARY\n */\n async createToken(requestParameters: CreateTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CreateTokenReply> {\n const response = await this.createTokenRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.DEX.LIST.DESCRIPTION\n * CONTROLLER.DEX.LIST.SUMMARY\n */\n async listDexRaw(requestParameters: ListDexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<DexPage>> {\n const queryParameters: any = {};\n\n if (requestParameters['chains'] != null) {\n queryParameters['chains'] = requestParameters['chains'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['dexProgram'] != null) {\n queryParameters['dexProgram'] = requestParameters['dexProgram'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/dex`;\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => DexPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.DEX.LIST.DESCRIPTION\n * CONTROLLER.DEX.LIST.SUMMARY\n */\n async listDex(requestParameters: ListDexRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<DexPage> {\n const response = await this.listDexRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.DEX.QUOTE.DESCRIPTION\n * CONTROLLER.DEX.QUOTE.SUMMARY\n */\n async quoteRaw(requestParameters: QuoteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<QuoteResponse>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling quote().'\n );\n }\n\n if (requestParameters['dex'] == null) {\n throw new runtime.RequiredError(\n 'dex',\n 'Required parameter \"dex\" was null or undefined when calling quote().'\n );\n }\n\n if (requestParameters['amount'] == null) {\n throw new runtime.RequiredError(\n 'amount',\n 'Required parameter \"amount\" was null or undefined when calling quote().'\n );\n }\n\n if (requestParameters['inputMint'] == null) {\n throw new runtime.RequiredError(\n 'inputMint',\n 'Required parameter \"inputMint\" was null or undefined when calling quote().'\n );\n }\n\n if (requestParameters['outputMint'] == null) {\n throw new runtime.RequiredError(\n 'outputMint',\n 'Required parameter \"outputMint\" was null or undefined when calling quote().'\n );\n }\n\n if (requestParameters['exactIn'] == null) {\n throw new runtime.RequiredError(\n 'exactIn',\n 'Required parameter \"exactIn\" was null or undefined when calling quote().'\n );\n }\n\n if (requestParameters['slippage'] == null) {\n throw new runtime.RequiredError(\n 'slippage',\n 'Required parameter \"slippage\" was null or undefined when calling quote().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['dex'] != null) {\n queryParameters['dex'] = requestParameters['dex'];\n }\n\n if (requestParameters['amount'] != null) {\n queryParameters['amount'] = requestParameters['amount'];\n }\n\n if (requestParameters['inputMint'] != null) {\n queryParameters['inputMint'] = requestParameters['inputMint'];\n }\n\n if (requestParameters['outputMint'] != null) {\n queryParameters['outputMint'] = requestParameters['outputMint'];\n }\n\n if (requestParameters['exactIn'] != null) {\n queryParameters['exactIn'] = requestParameters['exactIn'];\n }\n\n if (requestParameters['slippage'] != null) {\n queryParameters['slippage'] = requestParameters['slippage'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/dex/{chain}/quote`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => QuoteResponseFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.DEX.QUOTE.DESCRIPTION\n * CONTROLLER.DEX.QUOTE.SUMMARY\n */\n async quote(requestParameters: QuoteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<QuoteResponse> {\n const response = await this.quoteRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.DEX.ROUTE.DESCRIPTION\n * CONTROLLER.DEX.ROUTE.SUMMARY\n */\n async routeRaw(requestParameters: RouteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SwapRouteResponse>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling route().'\n );\n }\n\n if (requestParameters['swapRouteInput'] == null) {\n throw new runtime.RequiredError(\n 'swapRouteInput',\n 'Required parameter \"swapRouteInput\" was null or undefined when calling route().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/dex/{chain}/route`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: SwapRouteInputToJSON(requestParameters['swapRouteInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SwapRouteResponseFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.DEX.ROUTE.DESCRIPTION\n * CONTROLLER.DEX.ROUTE.SUMMARY\n */\n async route(requestParameters: RouteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SwapRouteResponse> {\n const response = await this.routeRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.DEX.SWAP.DESCRIPTION\n * CONTROLLER.DEX.SWAP.SUMMARY\n */\n async swapRaw(requestParameters: SwapRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SwapReply>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling swap().'\n );\n }\n\n if (requestParameters['swapInput'] == null) {\n throw new runtime.RequiredError(\n 'swapInput',\n 'Required parameter \"swapInput\" was null or undefined when calling swap().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/dex/{chain}/swap`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: SwapInputToJSON(requestParameters['swapInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SwapReplyFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.DEX.SWAP.DESCRIPTION\n * CONTROLLER.DEX.SWAP.SUMMARY\n */\n async swap(requestParameters: SwapRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SwapReply> {\n const response = await this.swapRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n\n/**\n * @export\n */\nexport const QuoteDexEnum = {\n Raydium: 'raydium',\n Pumpfun: 'pumpfun'\n} as const;\nexport type QuoteDexEnum = typeof QuoteDexEnum[keyof typeof QuoteDexEnum];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ChainSymbol,\n DexPoolDTO,\n} from '../models/index';\nimport {\n ChainSymbolFromJSON,\n ChainSymbolToJSON,\n DexPoolDTOFromJSON,\n DexPoolDTOToJSON,\n} from '../models/index';\n\nexport interface GetDexpoolRequest {\n chain: ChainSymbol;\n poolAddress: string;\n}\n\n/**\n * \n */\nexport class DexPoolApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.DEXPOOL.GET.DESCRIPTION\n * CONTROLLER.DEXPOOL.GET.SUMMARY\n */\n async getDexpoolRaw(requestParameters: GetDexpoolRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<DexPoolDTO>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getDexpool().'\n );\n }\n\n if (requestParameters['poolAddress'] == null) {\n throw new runtime.RequiredError(\n 'poolAddress',\n 'Required parameter \"poolAddress\" was null or undefined when calling getDexpool().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/dexpools/{chain}/{poolAddress}`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"poolAddress\"}}`, encodeURIComponent(String(requestParameters['poolAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => DexPoolDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.DEXPOOL.GET.DESCRIPTION\n * CONTROLLER.DEXPOOL.GET.SUMMARY\n */\n async getDexpool(requestParameters: GetDexpoolRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<DexPoolDTO> {\n const response = await this.getDexpoolRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\n\n/**\n * \n */\nexport class IpfsApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.IPFS.PRESIGN.DESCRIPTION\n * CONTROLLER.IPFS.PRESIGN.SUMMARY\n */\n async presignRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<string>> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/ipfs/presign`;\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n if (this.isJsonMime(response.headers.get('content-type'))) {\n return new runtime.JSONApiResponse<string>(response);\n } else {\n return new runtime.TextApiResponse(response) as any;\n }\n }\n\n /**\n * CONTROLLER.IPFS.PRESIGN.DESCRIPTION\n * CONTROLLER.IPFS.PRESIGN.SUMMARY\n */\n async presign(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<string> {\n const response = await this.presignRaw(initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n JobDTO,\n JobStreamingDTO,\n} from '../models/index';\nimport {\n JobDTOFromJSON,\n JobDTOToJSON,\n JobStreamingDTOFromJSON,\n JobStreamingDTOToJSON,\n} from '../models/index';\n\nexport interface GetRequest {\n id: string;\n}\n\nexport interface StreamingRequest {\n id: string;\n}\n\n/**\n * \n */\nexport class JobsApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.JOB.GET.DESCRIPTION\n * CONTROLLER.JOB.GET.SUMMARY\n */\n async getRaw(requestParameters: GetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<JobDTO>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling get().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/jobs/{id}`;\n urlPath = urlPath.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => JobDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.JOB.GET.DESCRIPTION\n * CONTROLLER.JOB.GET.SUMMARY\n */\n async get(requestParameters: GetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<JobDTO> {\n const response = await this.getRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.JOB.STREAMING.DESCRIPTION\n * CONTROLLER.JOB.STREAMING.SUMMARY\n */\n async streamingRaw(requestParameters: StreamingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<JobStreamingDTO>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling streaming().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/jobs/{id}/streaming`;\n urlPath = urlPath.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => JobStreamingDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.JOB.STREAMING.DESCRIPTION\n * CONTROLLER.JOB.STREAMING.SUMMARY\n */\n async streaming(requestParameters: StreamingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<JobStreamingDTO> {\n const response = await this.streamingRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ChainSymbol,\n FilterCondition,\n Token,\n} from '../models/index';\nimport {\n ChainSymbolFromJSON,\n ChainSymbolToJSON,\n FilterConditionFromJSON,\n FilterConditionToJSON,\n TokenFromJSON,\n TokenToJSON,\n} from '../models/index';\n\nexport interface GetFinalStretchTokensRequest {\n chain: ChainSymbol;\n sortBy?: GetFinalStretchTokensSortByEnum;\n sortDirection?: GetFinalStretchTokensSortDirectionEnum;\n rangeFilters?: Array<FilterCondition>;\n tag?: GetFinalStretchTokensTagEnum;\n filters?: Array<string>;\n launchpadPlatform?: Array<string>;\n searchKeywords?: Array<string>;\n excludeKeywords?: Array<string>;\n}\n\nexport interface GetHotTokensRequest {\n chain: ChainSymbol;\n duration: GetHotTokensDurationEnum;\n sortBy?: GetHotTokensSortByEnum;\n sortDirection?: GetHotTokensSortDirectionEnum;\n rangeFilters?: Array<FilterCondition>;\n tag?: GetHotTokensTagEnum;\n filters?: Array<string>;\n launchpadPlatform?: Array<string>;\n searchKeywords?: Array<string>;\n excludeKeywords?: Array<string>;\n}\n\nexport interface GetMigratedTokensRequest {\n chain: ChainSymbol;\n sortBy?: GetMigratedTokensSortByEnum;\n sortDirection?: GetMigratedTokensSortDirectionEnum;\n rangeFilters?: Array<FilterCondition>;\n tag?: GetMigratedTokensTagEnum;\n filters?: Array<string>;\n launchpadPlatform?: Array<string>;\n searchKeywords?: Array<string>;\n excludeKeywords?: Array<string>;\n}\n\nexport interface GetNewTokensRequest {\n chain: ChainSymbol;\n sortBy?: GetNewTokensSortByEnum;\n sortDirection?: GetNewTokensSortDirectionEnum;\n rangeFilters?: Array<FilterCondition>;\n tag?: GetNewTokensTagEnum;\n filters?: Array<string>;\n launchpadPlatform?: Array<string>;\n searchKeywords?: Array<string>;\n excludeKeywords?: Array<string>;\n}\n\nexport interface GetStocksTokensRequest {\n chain: ChainSymbol;\n sortBy?: GetStocksTokensSortByEnum;\n sortDirection?: GetStocksTokensSortDirectionEnum;\n rangeFilters?: Array<FilterCondition>;\n tag?: GetStocksTokensTagEnum;\n filters?: Array<string>;\n launchpadPlatform?: Array<string>;\n searchKeywords?: Array<string>;\n excludeKeywords?: Array<string>;\n}\n\n/**\n * \n */\nexport class RankingApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.RANKING.FINAL_STRETCH_TOKENS.DESCRIPTION\n * CONTROLLER.RANKING.FINAL_STRETCH_TOKENS.SUMMARY\n */\n async getFinalStretchTokensRaw(requestParameters: GetFinalStretchTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Token>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getFinalStretchTokens().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['sortBy'] != null) {\n queryParameters['sortBy'] = requestParameters['sortBy'];\n }\n\n if (requestParameters['sortDirection'] != null) {\n queryParameters['sortDirection'] = requestParameters['sortDirection'];\n }\n\n if (requestParameters['rangeFilters'] != null) {\n queryParameters['rangeFilters'] = requestParameters['rangeFilters'];\n }\n\n if (requestParameters['tag'] != null) {\n queryParameters['tag'] = requestParameters['tag'];\n }\n\n if (requestParameters['filters'] != null) {\n queryParameters['filters'] = requestParameters['filters'];\n }\n\n if (requestParameters['launchpadPlatform'] != null) {\n queryParameters['launchpadPlatform'] = requestParameters['launchpadPlatform'];\n }\n\n if (requestParameters['searchKeywords'] != null) {\n queryParameters['searchKeywords'] = requestParameters['searchKeywords'];\n }\n\n if (requestParameters['excludeKeywords'] != null) {\n queryParameters['excludeKeywords'] = requestParameters['excludeKeywords'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/ranking/{chain}/finalStretch`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(TokenFromJSON));\n }\n\n /**\n * CONTROLLER.RANKING.FINAL_STRETCH_TOKENS.DESCRIPTION\n * CONTROLLER.RANKING.FINAL_STRETCH_TOKENS.SUMMARY\n */\n async getFinalStretchTokens(requestParameters: GetFinalStretchTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Token>> {\n const response = await this.getFinalStretchTokensRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RANKING.HOT_TOKENS.DESCRIPTION\n * CONTROLLER.RANKING.HOT_TOKENS.SUMMARY\n */\n async getHotTokensRaw(requestParameters: GetHotTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Token>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getHotTokens().'\n );\n }\n\n if (requestParameters['duration'] == null) {\n throw new runtime.RequiredError(\n 'duration',\n 'Required parameter \"duration\" was null or undefined when calling getHotTokens().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['sortBy'] != null) {\n queryParameters['sortBy'] = requestParameters['sortBy'];\n }\n\n if (requestParameters['sortDirection'] != null) {\n queryParameters['sortDirection'] = requestParameters['sortDirection'];\n }\n\n if (requestParameters['rangeFilters'] != null) {\n queryParameters['rangeFilters'] = requestParameters['rangeFilters'];\n }\n\n if (requestParameters['tag'] != null) {\n queryParameters['tag'] = requestParameters['tag'];\n }\n\n if (requestParameters['filters'] != null) {\n queryParameters['filters'] = requestParameters['filters'];\n }\n\n if (requestParameters['launchpadPlatform'] != null) {\n queryParameters['launchpadPlatform'] = requestParameters['launchpadPlatform'];\n }\n\n if (requestParameters['searchKeywords'] != null) {\n queryParameters['searchKeywords'] = requestParameters['searchKeywords'];\n }\n\n if (requestParameters['excludeKeywords'] != null) {\n queryParameters['excludeKeywords'] = requestParameters['excludeKeywords'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/ranking/{chain}/hotTokens/{duration}`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"duration\"}}`, encodeURIComponent(String(requestParameters['duration'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(TokenFromJSON));\n }\n\n /**\n * CONTROLLER.RANKING.HOT_TOKENS.DESCRIPTION\n * CONTROLLER.RANKING.HOT_TOKENS.SUMMARY\n */\n async getHotTokens(requestParameters: GetHotTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Token>> {\n const response = await this.getHotTokensRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RANKING.MIGRATED_TOKENS.DESCRIPTION\n * CONTROLLER.RANKING.MIGRATED_TOKENS.SUMMARY\n */\n async getMigratedTokensRaw(requestParameters: GetMigratedTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Token>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getMigratedTokens().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['sortBy'] != null) {\n queryParameters['sortBy'] = requestParameters['sortBy'];\n }\n\n if (requestParameters['sortDirection'] != null) {\n queryParameters['sortDirection'] = requestParameters['sortDirection'];\n }\n\n if (requestParameters['rangeFilters'] != null) {\n queryParameters['rangeFilters'] = requestParameters['rangeFilters'];\n }\n\n if (requestParameters['tag'] != null) {\n queryParameters['tag'] = requestParameters['tag'];\n }\n\n if (requestParameters['filters'] != null) {\n queryParameters['filters'] = requestParameters['filters'];\n }\n\n if (requestParameters['launchpadPlatform'] != null) {\n queryParameters['launchpadPlatform'] = requestParameters['launchpadPlatform'];\n }\n\n if (requestParameters['searchKeywords'] != null) {\n queryParameters['searchKeywords'] = requestParameters['searchKeywords'];\n }\n\n if (requestParameters['excludeKeywords'] != null) {\n queryParameters['excludeKeywords'] = requestParameters['excludeKeywords'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/ranking/{chain}/migrated`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(TokenFromJSON));\n }\n\n /**\n * CONTROLLER.RANKING.MIGRATED_TOKENS.DESCRIPTION\n * CONTROLLER.RANKING.MIGRATED_TOKENS.SUMMARY\n */\n async getMigratedTokens(requestParameters: GetMigratedTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Token>> {\n const response = await this.getMigratedTokensRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RANKING.NEW_TOKENS.DESCRIPTION\n * CONTROLLER.RANKING.NEW_TOKENS.SUMMARY\n */\n async getNewTokensRaw(requestParameters: GetNewTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Token>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getNewTokens().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['sortBy'] != null) {\n queryParameters['sortBy'] = requestParameters['sortBy'];\n }\n\n if (requestParameters['sortDirection'] != null) {\n queryParameters['sortDirection'] = requestParameters['sortDirection'];\n }\n\n if (requestParameters['rangeFilters'] != null) {\n queryParameters['rangeFilters'] = requestParameters['rangeFilters'];\n }\n\n if (requestParameters['tag'] != null) {\n queryParameters['tag'] = requestParameters['tag'];\n }\n\n if (requestParameters['filters'] != null) {\n queryParameters['filters'] = requestParameters['filters'];\n }\n\n if (requestParameters['launchpadPlatform'] != null) {\n queryParameters['launchpadPlatform'] = requestParameters['launchpadPlatform'];\n }\n\n if (requestParameters['searchKeywords'] != null) {\n queryParameters['searchKeywords'] = requestParameters['searchKeywords'];\n }\n\n if (requestParameters['excludeKeywords'] != null) {\n queryParameters['excludeKeywords'] = requestParameters['excludeKeywords'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/ranking/{chain}/newTokens`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(TokenFromJSON));\n }\n\n /**\n * CONTROLLER.RANKING.NEW_TOKENS.DESCRIPTION\n * CONTROLLER.RANKING.NEW_TOKENS.SUMMARY\n */\n async getNewTokens(requestParameters: GetNewTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Token>> {\n const response = await this.getNewTokensRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RANKING.STOCKS_TOKENS.DESCRIPTION\n * CONTROLLER.RANKING.STOCKS_TOKENS.SUMMARY\n */\n async getStocksTokensRaw(requestParameters: GetStocksTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Token>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getStocksTokens().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['sortBy'] != null) {\n queryParameters['sortBy'] = requestParameters['sortBy'];\n }\n\n if (requestParameters['sortDirection'] != null) {\n queryParameters['sortDirection'] = requestParameters['sortDirection'];\n }\n\n if (requestParameters['rangeFilters'] != null) {\n queryParameters['rangeFilters'] = requestParameters['rangeFilters'];\n }\n\n if (requestParameters['tag'] != null) {\n queryParameters['tag'] = requestParameters['tag'];\n }\n\n if (requestParameters['filters'] != null) {\n queryParameters['filters'] = requestParameters['filters'];\n }\n\n if (requestParameters['launchpadPlatform'] != null) {\n queryParameters['launchpadPlatform'] = requestParameters['launchpadPlatform'];\n }\n\n if (requestParameters['searchKeywords'] != null) {\n queryParameters['searchKeywords'] = requestParameters['searchKeywords'];\n }\n\n if (requestParameters['excludeKeywords'] != null) {\n queryParameters['excludeKeywords'] = requestParameters['excludeKeywords'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/ranking/{chain}/stocks`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(TokenFromJSON));\n }\n\n /**\n * CONTROLLER.RANKING.STOCKS_TOKENS.DESCRIPTION\n * CONTROLLER.RANKING.STOCKS_TOKENS.SUMMARY\n */\n async getStocksTokens(requestParameters: GetStocksTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Token>> {\n const response = await this.getStocksTokensRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n\n/**\n * @export\n */\nexport const GetFinalStretchTokensSortByEnum = {\n MarketDataPriceInUsd: 'marketData.priceInUsd',\n StatsPriceChangeRatioInUsd1m: 'stats.priceChangeRatioInUsd1m',\n StatsPriceChangeRatioInUsd5m: 'stats.priceChangeRatioInUsd5m',\n StatsPriceChangeRatioInUsd1h: 'stats.priceChangeRatioInUsd1h',\n StatsPriceChangeRatioInUsd4h: 'stats.priceChangeRatioInUsd4h',\n StatsPriceChangeRatioInUsd24h: 'stats.priceChangeRatioInUsd24h',\n MarketDataMarketCapInUsd: 'marketData.marketCapInUsd',\n MarketDataTvlInUsd: 'marketData.tvlInUsd',\n MarketDataTop10TotalHoldings: 'marketData.top10TotalHoldings',\n MarketDataTop10HoldingsRatio: 'marketData.top10HoldingsRatio',\n MarketDataTop100TotalHoldings: 'marketData.top100TotalHoldings',\n MarketDataTop100HoldingsRatio: 'marketData.top100HoldingsRatio',\n MarketDataHolders: 'marketData.holders',\n MarketDataCreatorHoldings: 'marketData.creatorHoldings',\n MarketDataCreatorHoldingsRatio: 'marketData.creatorHoldingsRatio',\n StatsBuys1m: 'stats.buys1m',\n StatsBuys5m: 'stats.buys5m',\n StatsBuys15m: 'stats.buys15m',\n StatsBuys30m: 'stats.buys30m',\n StatsBuys1h: 'stats.buys1h',\n StatsBuys4h: 'stats.buys4h',\n StatsBuys24h: 'stats.buys24h',\n StatsSells1m: 'stats.sells1m',\n StatsSells5m: 'stats.sells5m',\n StatsSells15m: 'stats.sells15m',\n StatsSells30m: 'stats.sells30m',\n StatsSells1h: 'stats.sells1h',\n StatsSells4h: 'stats.sells4h',\n StatsSells24h: 'stats.sells24h',\n StatsTrades1m: 'stats.trades1m',\n StatsTrades5m: 'stats.trades5m',\n StatsTrades1h: 'stats.trades1h',\n StatsTrades4h: 'stats.trades4h',\n StatsTrades24h: 'stats.trades24h',\n StatsTraders1m: 'stats.traders1m',\n StatsTraders5m: 'stats.traders5m',\n StatsTraders1h: 'stats.traders1h',\n StatsTraders4h: 'stats.traders4h',\n StatsTraders24h: 'stats.traders24h',\n StatsVolumesInUsd1m: 'stats.volumesInUsd1m',\n StatsVolumesInUsd5m: 'stats.volumesInUsd5m',\n StatsVolumesInUsd1h: 'stats.volumesInUsd1h',\n StatsVolumesInUsd4h: 'stats.volumesInUsd4h',\n StatsVolumesInUsd24h: 'stats.volumesInUsd24h',\n TokenCreatedAt: 'tokenCreatedAt'\n} as const;\nexport type GetFinalStretchTokensSortByEnum = typeof GetFinalStretchTokensSortByEnum[keyof typeof GetFinalStretchTokensSortByEnum];\n/**\n * @export\n */\nexport const GetFinalStretchTokensSortDirectionEnum = {\n Asc: 'ASC',\n Desc: 'DESC'\n} as const;\nexport type GetFinalStretchTokensSortDirectionEnum = typeof GetFinalStretchTokensSortDirectionEnum[keyof typeof GetFinalStretchTokensSortDirectionEnum];\n/**\n * @export\n */\nexport const GetFinalStretchTokensTagEnum = {\n PumpFun: 'pump_fun',\n RaydiumLaunchpad: 'raydium_launchpad',\n MeteoraDynamicBoundingCurve: 'meteora_dynamic_bounding_curve',\n BonkFun: 'bonk_fun',\n MoonitFun: 'moonit_fun'\n} as const;\nexport type GetFinalStretchTokensTagEnum = typeof GetFinalStretchTokensTagEnum[keyof typeof GetFinalStretchTokensTagEnum];\n/**\n * @export\n */\nexport const GetHotTokensDurationEnum = {\n _1m: '1m',\n _5m: '5m',\n _1h: '1h',\n _4h: '4h',\n _24h: '24h'\n} as const;\nexport type GetHotTokensDurationEnum = typeof GetHotTokensDurationEnum[keyof typeof GetHotTokensDurationEnum];\n/**\n * @export\n */\nexport const GetHotTokensSortByEnum = {\n MarketDataPriceInUsd: 'marketData.priceInUsd',\n StatsPriceChangeRatioInUsd1m: 'stats.priceChangeRatioInUsd1m',\n StatsPriceChangeRatioInUsd5m: 'stats.priceChangeRatioInUsd5m',\n StatsPriceChangeRatioInUsd1h: 'stats.priceChangeRatioInUsd1h',\n StatsPriceChangeRatioInUsd4h: 'stats.priceChangeRatioInUsd4h',\n StatsPriceChangeRatioInUsd24h: 'stats.priceChangeRatioInUsd24h',\n MarketDataMarketCapInUsd: 'marketData.marketCapInUsd',\n MarketDataTvlInUsd: 'marketData.tvlInUsd',\n MarketDataTop10TotalHoldings: 'marketData.top10TotalHoldings',\n MarketDataTop10HoldingsRatio: 'marketData.top10HoldingsRatio',\n MarketDataTop100TotalHoldings: 'marketData.top100TotalHoldings',\n MarketDataTop100HoldingsRatio: 'marketData.top100HoldingsRatio',\n MarketDataHolders: 'marketData.holders',\n MarketDataCreatorHoldings: 'marketData.creatorHoldings',\n MarketDataCreatorHoldingsRatio: 'marketData.creatorHoldingsRatio',\n StatsBuys1m: 'stats.buys1m',\n StatsBuys5m: 'stats.buys5m',\n StatsBuys15m: 'stats.buys15m',\n StatsBuys30m: 'stats.buys30m',\n StatsBuys1h: 'stats.buys1h',\n StatsBuys4h: 'stats.buys4h',\n StatsBuys24h: 'stats.buys24h',\n StatsSells1m: 'stats.sells1m',\n StatsSells5m: 'stats.sells5m',\n StatsSells15m: 'stats.sells15m',\n StatsSells30m: 'stats.sells30m',\n StatsSells1h: 'stats.sells1h',\n StatsSells4h: 'stats.sells4h',\n StatsSells24h: 'stats.sells24h',\n StatsTrades1m: 'stats.trades1m',\n StatsTrades5m: 'stats.trades5m',\n StatsTrades1h: 'stats.trades1h',\n StatsTrades4h: 'stats.trades4h',\n StatsTrades24h: 'stats.trades24h',\n StatsTraders1m: 'stats.traders1m',\n StatsTraders5m: 'stats.traders5m',\n StatsTraders1h: 'stats.traders1h',\n StatsTraders4h: 'stats.traders4h',\n StatsTraders24h: 'stats.traders24h',\n StatsVolumesInUsd1m: 'stats.volumesInUsd1m',\n StatsVolumesInUsd5m: 'stats.volumesInUsd5m',\n StatsVolumesInUsd1h: 'stats.volumesInUsd1h',\n StatsVolumesInUsd4h: 'stats.volumesInUsd4h',\n StatsVolumesInUsd24h: 'stats.volumesInUsd24h',\n TokenCreatedAt: 'tokenCreatedAt'\n} as const;\nexport type GetHotTokensSortByEnum = typeof GetHotTokensSortByEnum[keyof typeof GetHotTokensSortByEnum];\n/**\n * @export\n */\nexport const GetHotTokensSortDirectionEnum = {\n Asc: 'ASC',\n Desc: 'DESC'\n} as const;\nexport type GetHotTokensSortDirectionEnum = typeof GetHotTokensSortDirectionEnum[keyof typeof GetHotTokensSortDirectionEnum];\n/**\n * @export\n */\nexport const GetHotTokensTagEnum = {\n PumpFun: 'pump_fun',\n RaydiumLaunchpad: 'raydium_launchpad',\n MeteoraDynamicBoundingCurve: 'meteora_dynamic_bounding_curve',\n BonkFun: 'bonk_fun',\n MoonitFun: 'moonit_fun'\n} as const;\nexport type GetHotTokensTagEnum = typeof GetHotTokensTagEnum[keyof typeof GetHotTokensTagEnum];\n/**\n * @export\n */\nexport const GetMigratedTokensSortByEnum = {\n MarketDataPriceInUsd: 'marketData.priceInUsd',\n StatsPriceChangeRatioInUsd1m: 'stats.priceChangeRatioInUsd1m',\n StatsPriceChangeRatioInUsd5m: 'stats.priceChangeRatioInUsd5m',\n StatsPriceChangeRatioInUsd1h: 'stats.priceChangeRatioInUsd1h',\n StatsPriceChangeRatioInUsd4h: 'stats.priceChangeRatioInUsd4h',\n StatsPriceChangeRatioInUsd24h: 'stats.priceChangeRatioInUsd24h',\n MarketDataMarketCapInUsd: 'marketData.marketCapInUsd',\n MarketDataTvlInUsd: 'marketData.tvlInUsd',\n MarketDataTop10TotalHoldings: 'marketData.top10TotalHoldings',\n MarketDataTop10HoldingsRatio: 'marketData.top10HoldingsRatio',\n MarketDataTop100TotalHoldings: 'marketData.top100TotalHoldings',\n MarketDataTop100HoldingsRatio: 'marketData.top100HoldingsRatio',\n MarketDataHolders: 'marketData.holders',\n MarketDataCreatorHoldings: 'marketData.creatorHoldings',\n MarketDataCreatorHoldingsRatio: 'marketData.creatorHoldingsRatio',\n StatsBuys1m: 'stats.buys1m',\n StatsBuys5m: 'stats.buys5m',\n StatsBuys15m: 'stats.buys15m',\n StatsBuys30m: 'stats.buys30m',\n StatsBuys1h: 'stats.buys1h',\n StatsBuys4h: 'stats.buys4h',\n StatsBuys24h: 'stats.buys24h',\n StatsSells1m: 'stats.sells1m',\n StatsSells5m: 'stats.sells5m',\n StatsSells15m: 'stats.sells15m',\n StatsSells30m: 'stats.sells30m',\n StatsSells1h: 'stats.sells1h',\n StatsSells4h: 'stats.sells4h',\n StatsSells24h: 'stats.sells24h',\n StatsTrades1m: 'stats.trades1m',\n StatsTrades5m: 'stats.trades5m',\n StatsTrades1h: 'stats.trades1h',\n StatsTrades4h: 'stats.trades4h',\n StatsTrades24h: 'stats.trades24h',\n StatsTraders1m: 'stats.traders1m',\n StatsTraders5m: 'stats.traders5m',\n StatsTraders1h: 'stats.traders1h',\n StatsTraders4h: 'stats.traders4h',\n StatsTraders24h: 'stats.traders24h',\n StatsVolumesInUsd1m: 'stats.volumesInUsd1m',\n StatsVolumesInUsd5m: 'stats.volumesInUsd5m',\n StatsVolumesInUsd1h: 'stats.volumesInUsd1h',\n StatsVolumesInUsd4h: 'stats.volumesInUsd4h',\n StatsVolumesInUsd24h: 'stats.volumesInUsd24h',\n TokenCreatedAt: 'tokenCreatedAt'\n} as const;\nexport type GetMigratedTokensSortByEnum = typeof GetMigratedTokensSortByEnum[keyof typeof GetMigratedTokensSortByEnum];\n/**\n * @export\n */\nexport const GetMigratedTokensSortDirectionEnum = {\n Asc: 'ASC',\n Desc: 'DESC'\n} as const;\nexport type GetMigratedTokensSortDirectionEnum = typeof GetMigratedTokensSortDirectionEnum[keyof typeof GetMigratedTokensSortDirectionEnum];\n/**\n * @export\n */\nexport const GetMigratedTokensTagEnum = {\n PumpFun: 'pump_fun',\n RaydiumLaunchpad: 'raydium_launchpad',\n MeteoraDynamicBoundingCurve: 'meteora_dynamic_bounding_curve',\n BonkFun: 'bonk_fun',\n MoonitFun: 'moonit_fun'\n} as const;\nexport type GetMigratedTokensTagEnum = typeof GetMigratedTokensTagEnum[keyof typeof GetMigratedTokensTagEnum];\n/**\n * @export\n */\nexport const GetNewTokensSortByEnum = {\n MarketDataPriceInUsd: 'marketData.priceInUsd',\n StatsPriceChangeRatioInUsd1m: 'stats.priceChangeRatioInUsd1m',\n StatsPriceChangeRatioInUsd5m: 'stats.priceChangeRatioInUsd5m',\n StatsPriceChangeRatioInUsd1h: 'stats.priceChangeRatioInUsd1h',\n StatsPriceChangeRatioInUsd4h: 'stats.priceChangeRatioInUsd4h',\n StatsPriceChangeRatioInUsd24h: 'stats.priceChangeRatioInUsd24h',\n MarketDataMarketCapInUsd: 'marketData.marketCapInUsd',\n MarketDataTvlInUsd: 'marketData.tvlInUsd',\n MarketDataTop10TotalHoldings: 'marketData.top10TotalHoldings',\n MarketDataTop10HoldingsRatio: 'marketData.top10HoldingsRatio',\n MarketDataTop100TotalHoldings: 'marketData.top100TotalHoldings',\n MarketDataTop100HoldingsRatio: 'marketData.top100HoldingsRatio',\n MarketDataHolders: 'marketData.holders',\n MarketDataCreatorHoldings: 'marketData.creatorHoldings',\n MarketDataCreatorHoldingsRatio: 'marketData.creatorHoldingsRatio',\n StatsBuys1m: 'stats.buys1m',\n StatsBuys5m: 'stats.buys5m',\n StatsBuys15m: 'stats.buys15m',\n StatsBuys30m: 'stats.buys30m',\n StatsBuys1h: 'stats.buys1h',\n StatsBuys4h: 'stats.buys4h',\n StatsBuys24h: 'stats.buys24h',\n StatsSells1m: 'stats.sells1m',\n StatsSells5m: 'stats.sells5m',\n StatsSells15m: 'stats.sells15m',\n StatsSells30m: 'stats.sells30m',\n StatsSells1h: 'stats.sells1h',\n StatsSells4h: 'stats.sells4h',\n StatsSells24h: 'stats.sells24h',\n StatsTrades1m: 'stats.trades1m',\n StatsTrades5m: 'stats.trades5m',\n StatsTrades1h: 'stats.trades1h',\n StatsTrades4h: 'stats.trades4h',\n StatsTrades24h: 'stats.trades24h',\n StatsTraders1m: 'stats.traders1m',\n StatsTraders5m: 'stats.traders5m',\n StatsTraders1h: 'stats.traders1h',\n StatsTraders4h: 'stats.traders4h',\n StatsTraders24h: 'stats.traders24h',\n StatsVolumesInUsd1m: 'stats.volumesInUsd1m',\n StatsVolumesInUsd5m: 'stats.volumesInUsd5m',\n StatsVolumesInUsd1h: 'stats.volumesInUsd1h',\n StatsVolumesInUsd4h: 'stats.volumesInUsd4h',\n StatsVolumesInUsd24h: 'stats.volumesInUsd24h',\n TokenCreatedAt: 'tokenCreatedAt'\n} as const;\nexport type GetNewTokensSortByEnum = typeof GetNewTokensSortByEnum[keyof typeof GetNewTokensSortByEnum];\n/**\n * @export\n */\nexport const GetNewTokensSortDirectionEnum = {\n Asc: 'ASC',\n Desc: 'DESC'\n} as const;\nexport type GetNewTokensSortDirectionEnum = typeof GetNewTokensSortDirectionEnum[keyof typeof GetNewTokensSortDirectionEnum];\n/**\n * @export\n */\nexport const GetNewTokensTagEnum = {\n PumpFun: 'pump_fun',\n RaydiumLaunchpad: 'raydium_launchpad',\n MeteoraDynamicBoundingCurve: 'meteora_dynamic_bounding_curve',\n BonkFun: 'bonk_fun',\n MoonitFun: 'moonit_fun'\n} as const;\nexport type GetNewTokensTagEnum = typeof GetNewTokensTagEnum[keyof typeof GetNewTokensTagEnum];\n/**\n * @export\n */\nexport const GetStocksTokensSortByEnum = {\n MarketDataPriceInUsd: 'marketData.priceInUsd',\n StatsPriceChangeRatioInUsd1m: 'stats.priceChangeRatioInUsd1m',\n StatsPriceChangeRatioInUsd5m: 'stats.priceChangeRatioInUsd5m',\n StatsPriceChangeRatioInUsd1h: 'stats.priceChangeRatioInUsd1h',\n StatsPriceChangeRatioInUsd4h: 'stats.priceChangeRatioInUsd4h',\n StatsPriceChangeRatioInUsd24h: 'stats.priceChangeRatioInUsd24h',\n MarketDataMarketCapInUsd: 'marketData.marketCapInUsd',\n MarketDataTvlInUsd: 'marketData.tvlInUsd',\n MarketDataTop10TotalHoldings: 'marketData.top10TotalHoldings',\n MarketDataTop10HoldingsRatio: 'marketData.top10HoldingsRatio',\n MarketDataTop100TotalHoldings: 'marketData.top100TotalHoldings',\n MarketDataTop100HoldingsRatio: 'marketData.top100HoldingsRatio',\n MarketDataHolders: 'marketData.holders',\n MarketDataCreatorHoldings: 'marketData.creatorHoldings',\n MarketDataCreatorHoldingsRatio: 'marketData.creatorHoldingsRatio',\n StatsBuys1m: 'stats.buys1m',\n StatsBuys5m: 'stats.buys5m',\n StatsBuys15m: 'stats.buys15m',\n StatsBuys30m: 'stats.buys30m',\n StatsBuys1h: 'stats.buys1h',\n StatsBuys4h: 'stats.buys4h',\n StatsBuys24h: 'stats.buys24h',\n StatsSells1m: 'stats.sells1m',\n StatsSells5m: 'stats.sells5m',\n StatsSells15m: 'stats.sells15m',\n StatsSells30m: 'stats.sells30m',\n StatsSells1h: 'stats.sells1h',\n StatsSells4h: 'stats.sells4h',\n StatsSells24h: 'stats.sells24h',\n StatsTrades1m: 'stats.trades1m',\n StatsTrades5m: 'stats.trades5m',\n StatsTrades1h: 'stats.trades1h',\n StatsTrades4h: 'stats.trades4h',\n StatsTrades24h: 'stats.trades24h',\n StatsTraders1m: 'stats.traders1m',\n StatsTraders5m: 'stats.traders5m',\n StatsTraders1h: 'stats.traders1h',\n StatsTraders4h: 'stats.traders4h',\n StatsTraders24h: 'stats.traders24h',\n StatsVolumesInUsd1m: 'stats.volumesInUsd1m',\n StatsVolumesInUsd5m: 'stats.volumesInUsd5m',\n StatsVolumesInUsd1h: 'stats.volumesInUsd1h',\n StatsVolumesInUsd4h: 'stats.volumesInUsd4h',\n StatsVolumesInUsd24h: 'stats.volumesInUsd24h',\n TokenCreatedAt: 'tokenCreatedAt'\n} as const;\nexport type GetStocksTokensSortByEnum = typeof GetStocksTokensSortByEnum[keyof typeof GetStocksTokensSortByEnum];\n/**\n * @export\n */\nexport const GetStocksTokensSortDirectionEnum = {\n Asc: 'ASC',\n Desc: 'DESC'\n} as const;\nexport type GetStocksTokensSortDirectionEnum = typeof GetStocksTokensSortDirectionEnum[keyof typeof GetStocksTokensSortDirectionEnum];\n/**\n * @export\n */\nexport const GetStocksTokensTagEnum = {\n PumpFun: 'pump_fun',\n RaydiumLaunchpad: 'raydium_launchpad',\n MeteoraDynamicBoundingCurve: 'meteora_dynamic_bounding_curve',\n BonkFun: 'bonk_fun',\n MoonitFun: 'moonit_fun'\n} as const;\nexport type GetStocksTokensTagEnum = typeof GetStocksTokensTagEnum[keyof typeof GetStocksTokensTagEnum];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ChainSymbol,\n ClaimRedPacketInput,\n CreateRedPacketInput,\n CreateRedPacketReply,\n RedPacketClaimsPage,\n RedPacketDTO,\n RedPacketReply,\n RedPacketSendTxInput,\n RedPacketSendTxResponse,\n RedPacketsPage,\n} from '../models/index';\nimport {\n ChainSymbolFromJSON,\n ChainSymbolToJSON,\n ClaimRedPacketInputFromJSON,\n ClaimRedPacketInputToJSON,\n CreateRedPacketInputFromJSON,\n CreateRedPacketInputToJSON,\n CreateRedPacketReplyFromJSON,\n CreateRedPacketReplyToJSON,\n RedPacketClaimsPageFromJSON,\n RedPacketClaimsPageToJSON,\n RedPacketDTOFromJSON,\n RedPacketDTOToJSON,\n RedPacketReplyFromJSON,\n RedPacketReplyToJSON,\n RedPacketSendTxInputFromJSON,\n RedPacketSendTxInputToJSON,\n RedPacketSendTxResponseFromJSON,\n RedPacketSendTxResponseToJSON,\n RedPacketsPageFromJSON,\n RedPacketsPageToJSON,\n} from '../models/index';\n\nexport interface ClaimRedpacketRequest {\n chain: ChainSymbol;\n claimRedPacketInput: ClaimRedPacketInput;\n}\n\nexport interface CreateRedpacketRequest {\n chain: ChainSymbol;\n createRedPacketInput: CreateRedPacketInput;\n}\n\nexport interface GetClaimsRequest {\n id: string;\n cursor?: string;\n limit?: number;\n direction?: string;\n}\n\nexport interface GetClaimsByAddressRequest {\n address: string;\n cursor?: string;\n limit?: number;\n direction?: string;\n}\n\nexport interface GetRedpacketRequest {\n id: string;\n}\n\nexport interface GetRedpacketsRequest {\n cursor?: string;\n limit?: number;\n direction?: string;\n creator?: string;\n chain?: GetRedpacketsChainEnum;\n}\n\nexport interface GetRedpacketsByAddressRequest {\n address: string;\n cursor?: string;\n limit?: number;\n direction?: string;\n}\n\nexport interface RedpacketSendRequest {\n chain: ChainSymbol;\n redPacketSendTxInput: RedPacketSendTxInput;\n}\n\n/**\n * \n */\nexport class RedPacketApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.RED_PACKET.CLAIM.DESCRIPTION\n * CONTROLLER.RED_PACKET.CLAIM.SUMMARY\n */\n async claimRedpacketRaw(requestParameters: ClaimRedpacketRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<RedPacketReply>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling claimRedpacket().'\n );\n }\n\n if (requestParameters['claimRedPacketInput'] == null) {\n throw new runtime.RequiredError(\n 'claimRedPacketInput',\n 'Required parameter \"claimRedPacketInput\" was null or undefined when calling claimRedpacket().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/redpacket/{chain}/claim`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: ClaimRedPacketInputToJSON(requestParameters['claimRedPacketInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => RedPacketReplyFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.RED_PACKET.CLAIM.DESCRIPTION\n * CONTROLLER.RED_PACKET.CLAIM.SUMMARY\n */\n async claimRedpacket(requestParameters: ClaimRedpacketRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<RedPacketReply> {\n const response = await this.claimRedpacketRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RED_PACKET.CREATE.DESCRIPTION\n * CONTROLLER.RED_PACKET.CREATE.SUMMARY\n */\n async createRedpacketRaw(requestParameters: CreateRedpacketRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CreateRedPacketReply>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling createRedpacket().'\n );\n }\n\n if (requestParameters['createRedPacketInput'] == null) {\n throw new runtime.RequiredError(\n 'createRedPacketInput',\n 'Required parameter \"createRedPacketInput\" was null or undefined when calling createRedpacket().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/redpacket/{chain}/create`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: CreateRedPacketInputToJSON(requestParameters['createRedPacketInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => CreateRedPacketReplyFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.RED_PACKET.CREATE.DESCRIPTION\n * CONTROLLER.RED_PACKET.CREATE.SUMMARY\n */\n async createRedpacket(requestParameters: CreateRedpacketRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CreateRedPacketReply> {\n const response = await this.createRedpacketRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RED_PACKET.GET_CLAIMS.DESCRIPTION\n * CONTROLLER.RED_PACKET.GET_CLAIMS.SUMMARY\n */\n async getClaimsRaw(requestParameters: GetClaimsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<RedPacketClaimsPage>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling getClaims().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['direction'] != null) {\n queryParameters['direction'] = requestParameters['direction'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/redpacket/{id}/claims`;\n urlPath = urlPath.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => RedPacketClaimsPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.RED_PACKET.GET_CLAIMS.DESCRIPTION\n * CONTROLLER.RED_PACKET.GET_CLAIMS.SUMMARY\n */\n async getClaims(requestParameters: GetClaimsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<RedPacketClaimsPage> {\n const response = await this.getClaimsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RED_PACKET.GET_CLAIMS_BY_ADDRESS.DESCRIPTION\n * CONTROLLER.RED_PACKET.GET_CLAIMS_BY_ADDRESS.SUMMARY\n */\n async getClaimsByAddressRaw(requestParameters: GetClaimsByAddressRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<RedPacketClaimsPage>> {\n if (requestParameters['address'] == null) {\n throw new runtime.RequiredError(\n 'address',\n 'Required parameter \"address\" was null or undefined when calling getClaimsByAddress().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['direction'] != null) {\n queryParameters['direction'] = requestParameters['direction'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/redpacket/wallet/{address}/claims`;\n urlPath = urlPath.replace(`{${\"address\"}}`, encodeURIComponent(String(requestParameters['address'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => RedPacketClaimsPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.RED_PACKET.GET_CLAIMS_BY_ADDRESS.DESCRIPTION\n * CONTROLLER.RED_PACKET.GET_CLAIMS_BY_ADDRESS.SUMMARY\n */\n async getClaimsByAddress(requestParameters: GetClaimsByAddressRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<RedPacketClaimsPage> {\n const response = await this.getClaimsByAddressRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RED_PACKET.GET.DESCRIPTION\n * CONTROLLER.RED_PACKET.GET.SUMMARY\n */\n async getRedpacketRaw(requestParameters: GetRedpacketRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<RedPacketDTO>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling getRedpacket().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/redpacket/{id}`;\n urlPath = urlPath.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => RedPacketDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.RED_PACKET.GET.DESCRIPTION\n * CONTROLLER.RED_PACKET.GET.SUMMARY\n */\n async getRedpacket(requestParameters: GetRedpacketRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<RedPacketDTO> {\n const response = await this.getRedpacketRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RED_PACKET.GET_REDPACKETS.DESCRIPTION\n * CONTROLLER.RED_PACKET.GET_REDPACKETS.SUMMARY\n */\n async getRedpacketsRaw(requestParameters: GetRedpacketsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<RedPacketsPage>> {\n const queryParameters: any = {};\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['direction'] != null) {\n queryParameters['direction'] = requestParameters['direction'];\n }\n\n if (requestParameters['creator'] != null) {\n queryParameters['creator'] = requestParameters['creator'];\n }\n\n if (requestParameters['chain'] != null) {\n queryParameters['chain'] = requestParameters['chain'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/redpacket`;\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => RedPacketsPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.RED_PACKET.GET_REDPACKETS.DESCRIPTION\n * CONTROLLER.RED_PACKET.GET_REDPACKETS.SUMMARY\n */\n async getRedpackets(requestParameters: GetRedpacketsRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<RedPacketsPage> {\n const response = await this.getRedpacketsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RED_PACKET.GET_REDPACKETS_BY_ADDRESS.DESCRIPTION\n * CONTROLLER.RED_PACKET.GET_REDPACKETS_BY_ADDRESS.SUMMARY\n */\n async getRedpacketsByAddressRaw(requestParameters: GetRedpacketsByAddressRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<RedPacketsPage>> {\n if (requestParameters['address'] == null) {\n throw new runtime.RequiredError(\n 'address',\n 'Required parameter \"address\" was null or undefined when calling getRedpacketsByAddress().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['direction'] != null) {\n queryParameters['direction'] = requestParameters['direction'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/redpacket/wallet/{address}/redpackets`;\n urlPath = urlPath.replace(`{${\"address\"}}`, encodeURIComponent(String(requestParameters['address'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => RedPacketsPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.RED_PACKET.GET_REDPACKETS_BY_ADDRESS.DESCRIPTION\n * CONTROLLER.RED_PACKET.GET_REDPACKETS_BY_ADDRESS.SUMMARY\n */\n async getRedpacketsByAddress(requestParameters: GetRedpacketsByAddressRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<RedPacketsPage> {\n const response = await this.getRedpacketsByAddressRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RED_PACKET.SEND.DESCRIPTION\n * CONTROLLER.RED_PACKET.SEND.SUMMARY\n */\n async redpacketSendRaw(requestParameters: RedpacketSendRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<RedPacketSendTxResponse>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling redpacketSend().'\n );\n }\n\n if (requestParameters['redPacketSendTxInput'] == null) {\n throw new runtime.RequiredError(\n 'redPacketSendTxInput',\n 'Required parameter \"redPacketSendTxInput\" was null or undefined when calling redpacketSend().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/redpacket/{chain}/send`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: RedPacketSendTxInputToJSON(requestParameters['redPacketSendTxInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => RedPacketSendTxResponseFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.RED_PACKET.SEND.DESCRIPTION\n * CONTROLLER.RED_PACKET.SEND.SUMMARY\n */\n async redpacketSend(requestParameters: RedpacketSendRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<RedPacketSendTxResponse> {\n const response = await this.redpacketSendRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n\n/**\n * @export\n */\nexport const GetRedpacketsChainEnum = {\n Sol: 'sol',\n Base: 'base',\n Bsc: 'bsc',\n Polygon: 'polygon',\n Arbitrum: 'arbitrum',\n Optimism: 'optimism',\n Avalanche: 'avalanche',\n Ethereum: 'ethereum',\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 DexPoolDTO,\n FilterCondition,\n Resolution,\n Token,\n TokenCreationDTO,\n TokenCreationPage,\n TokenHolder,\n TokenHolderPage,\n TokenListPage,\n TokenMarketData,\n TokenMetadata,\n TokenPage,\n TokenPriceDTO,\n TokenPricePage,\n TokenStat,\n} from '../models/index';\nimport {\n CandleFromJSON,\n CandleToJSON,\n ChainSymbolFromJSON,\n ChainSymbolToJSON,\n DexPoolDTOFromJSON,\n DexPoolDTOToJSON,\n FilterConditionFromJSON,\n FilterConditionToJSON,\n ResolutionFromJSON,\n ResolutionToJSON,\n TokenFromJSON,\n TokenToJSON,\n TokenCreationDTOFromJSON,\n TokenCreationDTOToJSON,\n TokenCreationPageFromJSON,\n TokenCreationPageToJSON,\n TokenHolderFromJSON,\n TokenHolderToJSON,\n TokenHolderPageFromJSON,\n TokenHolderPageToJSON,\n TokenListPageFromJSON,\n TokenListPageToJSON,\n TokenMarketDataFromJSON,\n TokenMarketDataToJSON,\n TokenMetadataFromJSON,\n TokenMetadataToJSON,\n TokenPageFromJSON,\n TokenPageToJSON,\n TokenPriceDTOFromJSON,\n TokenPriceDTOToJSON,\n TokenPricePageFromJSON,\n TokenPricePageToJSON,\n TokenStatFromJSON,\n TokenStatToJSON,\n} 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 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}\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 GetTokensRequest {\n chain: ChainSymbol;\n tokenAddresses: string;\n sortBy?: GetTokensSortByEnum;\n sortDirection?: GetTokensSortDirectionEnum;\n filterBy?: Array<FilterCondition>;\n}\n\nexport interface GetTopHoldersRequest {\n chain: ChainSymbol;\n tokenAddress: string;\n}\n\nexport interface ListTokenRequest {\n chain: ChainSymbol;\n cursor?: string;\n limit?: number;\n direction?: ListTokenDirectionEnum;\n sort?: ListTokenSortEnum;\n sortBy?: ListTokenSortByEnum;\n minH24VolumeInUsd?: string;\n maxH24VolumeInUsd?: string;\n minH24PriceChangeRatio?: string;\n maxH24PriceChangeRatio?: string;\n minH24Buys?: string;\n maxH24Buys?: string;\n minH24Sells?: string;\n maxH24Sells?: string;\n minH24Trades?: string;\n maxH24Trades?: string;\n minH24Buyers?: string;\n maxH24Buyers?: string;\n minH24Sellers?: string;\n maxH24Sellers?: string;\n minH24BuyVolumeInUsd?: string;\n maxH24BuyVolumeInUsd?: string;\n minH24SellVolumeInUsd?: string;\n maxH24SellVolumeInUsd?: string;\n minH4VolumeInUsd?: string;\n maxH4VolumeInUsd?: string;\n minH4PriceChangeRatio?: string;\n maxH4PriceChangeRatio?: string;\n minH4Buys?: string;\n maxH4Buys?: string;\n minH4Sells?: string;\n maxH4Sells?: string;\n minH4Trades?: string;\n maxH4Trades?: string;\n minH4Buyers?: string;\n maxH4Buyers?: string;\n minH4Sellers?: string;\n maxH4Sellers?: string;\n minH4BuyVolumeInUsd?: string;\n maxH4BuyVolumeInUsd?: string;\n minH4SellVolumeInUsd?: string;\n maxH4SellVolumeInUsd?: string;\n minH1VolumeInUsd?: string;\n maxH1VolumeInUsd?: string;\n minH1PriceChangeRatio?: string;\n maxH1PriceChangeRatio?: string;\n minH1Buys?: string;\n maxH1Buys?: string;\n minH1Sells?: string;\n maxH1Sells?: string;\n minH1Trades?: string;\n maxH1Trades?: string;\n minH1Buyers?: string;\n maxH1Buyers?: string;\n minH1Sellers?: string;\n maxH1Sellers?: string;\n minH1BuyVolumeInUsd?: string;\n maxH1BuyVolumeInUsd?: string;\n minH1SellVolumeInUsd?: string;\n maxH1SellVolumeInUsd?: string;\n minM30VolumeInUsd?: string;\n maxM30VolumeInUsd?: string;\n minM30PriceChangeRatio?: string;\n maxM30PriceChangeRatio?: string;\n minM30Buys?: string;\n maxM30Buys?: string;\n minM30Sells?: string;\n maxM30Sells?: string;\n minM30Trades?: string;\n maxM30Trades?: string;\n minM30Buyers?: string;\n maxM30Buyers?: string;\n minM30Sellers?: string;\n maxM30Sellers?: string;\n minM30BuyVolumeInUsd?: string;\n maxM30BuyVolumeInUsd?: string;\n minM30SellVolumeInUsd?: string;\n maxM30SellVolumeInUsd?: string;\n minM15VolumeInUsd?: string;\n maxM15VolumeInUsd?: string;\n minM15PriceChangeRatio?: string;\n maxM15PriceChangeRatio?: string;\n minM15Buys?: string;\n maxM15Buys?: string;\n minM15Sells?: string;\n maxM15Sells?: string;\n minM15Trades?: string;\n maxM15Trades?: string;\n minM15Buyers?: string;\n maxM15Buyers?: string;\n minM15Sellers?: string;\n maxM15Sellers?: string;\n minM15BuyVolumeInUsd?: string;\n maxM15BuyVolumeInUsd?: string;\n minM15SellVolumeInUsd?: string;\n maxM15SellVolumeInUsd?: string;\n minM5VolumeInUsd?: string;\n maxM5VolumeInUsd?: string;\n minM5PriceChangeRatio?: string;\n maxM5PriceChangeRatio?: string;\n minM5Buys?: string;\n maxM5Buys?: string;\n minM5Sells?: string;\n maxM5Sells?: string;\n minM5Trades?: string;\n maxM5Trades?: string;\n minM5Buyers?: string;\n maxM5Buyers?: string;\n minM5Sellers?: string;\n maxM5Sellers?: string;\n minM5BuyVolumeInUsd?: string;\n maxM5BuyVolumeInUsd?: string;\n minM5SellVolumeInUsd?: string;\n maxM5SellVolumeInUsd?: string;\n minM1VolumeInUsd?: string;\n maxM1VolumeInUsd?: string;\n minM1PriceChangeRatio?: string;\n maxM1PriceChangeRatio?: string;\n minM1Buys?: string;\n maxM1Buys?: string;\n minM1Sells?: string;\n maxM1Sells?: string;\n minM1Trades?: string;\n maxM1Trades?: string;\n minM1Buyers?: string;\n maxM1Buyers?: string;\n minM1Sellers?: string;\n maxM1Sellers?: string;\n minM1BuyVolumeInUsd?: string;\n maxM1BuyVolumeInUsd?: string;\n minM1SellVolumeInUsd?: string;\n maxM1SellVolumeInUsd?: string;\n}\n\nexport interface SearchRequest {\n chains?: Array<string>;\n q?: string;\n limit?: number;\n sort?: SearchSortEnum;\n protocols?: Array<string>;\n cursor?: string;\n sortBy?: SearchSortByEnum;\n}\n\n/**\n * \n */\nexport class TokenApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.TOKEN.GET_CANDLES.DESCRIPTION\n * CONTROLLER.TOKEN.GET_CANDLES.SUMMARY\n */\n async getCandlesRaw(requestParameters: GetCandlesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Candle>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getCandles().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getCandles().'\n );\n }\n\n if (requestParameters['resolution'] == null) {\n throw new runtime.RequiredError(\n 'resolution',\n 'Required parameter \"resolution\" was null or undefined when calling getCandles().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['resolution'] != null) {\n queryParameters['resolution'] = requestParameters['resolution'];\n }\n\n if (requestParameters['from'] != null) {\n queryParameters['from'] = requestParameters['from'];\n }\n\n if (requestParameters['to'] != null) {\n queryParameters['to'] = requestParameters['to'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/candles`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(CandleFromJSON));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_CANDLES.DESCRIPTION\n * CONTROLLER.TOKEN.GET_CANDLES.SUMMARY\n */\n async getCandles(requestParameters: GetCandlesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Candle>> {\n const response = await this.getCandlesRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_CREATION.DESCRIPTION\n * CONTROLLER.TOKEN.GET_CREATION.SUMMARY\n */\n async getCreationRaw(requestParameters: GetCreationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenCreationDTO>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getCreation().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getCreation().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/creation`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenCreationDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_CREATION.DESCRIPTION\n * CONTROLLER.TOKEN.GET_CREATION.SUMMARY\n */\n async getCreation(requestParameters: GetCreationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenCreationDTO> {\n const response = await this.getCreationRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_HOLDERS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_HOLDERS.SUMMARY\n */\n async getHoldersRaw(requestParameters: GetHoldersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenHolderPage>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getHolders().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getHolders().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['direction'] != null) {\n queryParameters['direction'] = requestParameters['direction'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/holders`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenHolderPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_HOLDERS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_HOLDERS.SUMMARY\n */\n async getHolders(requestParameters: GetHoldersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenHolderPage> {\n const response = await this.getHoldersRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_HOLDERS_MULTI.DESCRIPTION\n * CONTROLLER.TOKEN.GET_HOLDERS_MULTI.SUMMARY\n */\n async getHoldersMultiRaw(requestParameters: GetHoldersMultiRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<TokenHolder>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getHoldersMulti().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getHoldersMulti().'\n );\n }\n\n if (requestParameters['walletAddresses'] == null) {\n throw new runtime.RequiredError(\n 'walletAddresses',\n 'Required parameter \"walletAddresses\" was null or undefined when calling getHoldersMulti().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['walletAddresses'] != null) {\n queryParameters['walletAddresses'] = requestParameters['walletAddresses'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/holders/multi`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(TokenHolderFromJSON));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_HOLDERS_MULTI.DESCRIPTION\n * CONTROLLER.TOKEN.GET_HOLDERS_MULTI.SUMMARY\n */\n async getHoldersMulti(requestParameters: GetHoldersMultiRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<TokenHolder>> {\n const response = await this.getHoldersMultiRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_MARKET_CAP.DESCRIPTION\n * CONTROLLER.TOKEN.GET_MARKET_CAP.SUMMARY\n */\n async getMarketDataRaw(requestParameters: GetMarketDataRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenMarketData>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getMarketData().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getMarketData().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/marketData`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenMarketDataFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_MARKET_CAP.DESCRIPTION\n * CONTROLLER.TOKEN.GET_MARKET_CAP.SUMMARY\n */\n async getMarketData(requestParameters: GetMarketDataRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenMarketData> {\n const response = await this.getMarketDataRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_MARKET_DATA_MULTI.DESCRIPTION\n * CONTROLLER.TOKEN.GET_MARKET_DATA_MULTI.SUMMARY\n */\n async getMarketDataMultiRaw(requestParameters: GetMarketDataMultiRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<{ [key: string]: TokenMarketData; }>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getMarketDataMulti().'\n );\n }\n\n if (requestParameters['tokenAddresses'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddresses',\n 'Required parameter \"tokenAddresses\" was null or undefined when calling getMarketDataMulti().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['tokenAddresses'] != null) {\n queryParameters['tokenAddresses'] = requestParameters['tokenAddresses'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/marketData/multi`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => runtime.mapValues(jsonValue, TokenMarketDataFromJSON));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_MARKET_DATA_MULTI.DESCRIPTION\n * CONTROLLER.TOKEN.GET_MARKET_DATA_MULTI.SUMMARY\n */\n async getMarketDataMulti(requestParameters: GetMarketDataMultiRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{ [key: string]: TokenMarketData; }> {\n const response = await this.getMarketDataMultiRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_METADATA.DESCRIPTION\n * CONTROLLER.TOKEN.GET_METADATA.SUMMARY\n */\n async getMetadataRaw(requestParameters: GetMetadataRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenMetadata>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getMetadata().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getMetadata().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/metadata`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenMetadataFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_METADATA.DESCRIPTION\n * CONTROLLER.TOKEN.GET_METADATA.SUMMARY\n */\n async getMetadata(requestParameters: GetMetadataRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenMetadata> {\n const response = await this.getMetadataRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_METADATA_MULTI.DESCRIPTION\n * CONTROLLER.TOKEN.GET_METADATA_MULTI.SUMMARY\n */\n async getMetadataMultiRaw(requestParameters: GetMetadataMultiRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<{ [key: string]: TokenMetadata; }>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getMetadataMulti().'\n );\n }\n\n if (requestParameters['tokenAddresses'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddresses',\n 'Required parameter \"tokenAddresses\" was null or undefined when calling getMetadataMulti().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['tokenAddresses'] != null) {\n queryParameters['tokenAddresses'] = requestParameters['tokenAddresses'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/metadata/multi`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => runtime.mapValues(jsonValue, TokenMetadataFromJSON));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_METADATA_MULTI.DESCRIPTION\n * CONTROLLER.TOKEN.GET_METADATA_MULTI.SUMMARY\n */\n async getMetadataMulti(requestParameters: GetMetadataMultiRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{ [key: string]: TokenMetadata; }> {\n const response = await this.getMetadataMultiRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_MINT_AND_BURN.DESCRIPTION\n * CONTROLLER.TOKEN.GET_MINT_AND_BURN.SUMMARY\n */\n async getMintAndBurnRaw(requestParameters: GetMintAndBurnRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenCreationPage>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getMintAndBurn().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getMintAndBurn().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['direction'] != null) {\n queryParameters['direction'] = requestParameters['direction'];\n }\n\n if (requestParameters['type'] != null) {\n queryParameters['type'] = requestParameters['type'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/mintAndBurn`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenCreationPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_MINT_AND_BURN.DESCRIPTION\n * CONTROLLER.TOKEN.GET_MINT_AND_BURN.SUMMARY\n */\n async getMintAndBurn(requestParameters: GetMintAndBurnRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenCreationPage> {\n const response = await this.getMintAndBurnRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_POOLS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_POOLS.SUMMARY\n */\n async getPoolsRaw(requestParameters: GetPoolsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<DexPoolDTO>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getPools().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getPools().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/pools`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(DexPoolDTOFromJSON));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_POOLS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_POOLS.SUMMARY\n */\n async getPools(requestParameters: GetPoolsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<DexPoolDTO>> {\n const response = await this.getPoolsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_PRICE_BY_TIME.DESCRIPTION\n * CONTROLLER.TOKEN.GET_PRICE_BY_TIME.SUMMARY\n */\n async getPriceByTimeRaw(requestParameters: GetPriceByTimeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenPriceDTO>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getPriceByTime().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getPriceByTime().'\n );\n }\n\n if (requestParameters['timestamp'] == null) {\n throw new runtime.RequiredError(\n 'timestamp',\n 'Required parameter \"timestamp\" was null or undefined when calling getPriceByTime().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['timestamp'] != null) {\n queryParameters['timestamp'] = requestParameters['timestamp'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/price`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenPriceDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_PRICE_BY_TIME.DESCRIPTION\n * CONTROLLER.TOKEN.GET_PRICE_BY_TIME.SUMMARY\n */\n async getPriceByTime(requestParameters: GetPriceByTimeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenPriceDTO> {\n const response = await this.getPriceByTimeRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_PRICES.DESCRIPTION\n * CONTROLLER.TOKEN.GET_PRICES.SUMMARY\n */\n async getPricesRaw(requestParameters: GetPricesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenPricePage>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getPrices().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getPrices().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['direction'] != null) {\n queryParameters['direction'] = requestParameters['direction'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/prices`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenPricePageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_PRICES.DESCRIPTION\n * CONTROLLER.TOKEN.GET_PRICES.SUMMARY\n */\n async getPrices(requestParameters: GetPricesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenPricePage> {\n const response = await this.getPricesRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_SECURITY.DESCRIPTION\n * CONTROLLER.TOKEN.GET_SECURITY.SUMMARY\n */\n async getSecurityRaw(requestParameters: GetSecurityRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<object>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getSecurity().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getSecurity().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/security`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse<any>(response);\n }\n\n /**\n * CONTROLLER.TOKEN.GET_SECURITY.DESCRIPTION\n * CONTROLLER.TOKEN.GET_SECURITY.SUMMARY\n */\n async getSecurity(requestParameters: GetSecurityRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<object> {\n const response = await this.getSecurityRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_STATS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_STATS.SUMMARY\n */\n async getStatsRaw(requestParameters: GetStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenStat>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getStats().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getStats().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/stats`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenStatFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_STATS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_STATS.SUMMARY\n */\n async getStats(requestParameters: GetStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenStat> {\n const response = await this.getStatsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_STATS_MULTI.DESCRIPTION\n * CONTROLLER.TOKEN.GET_STATS_MULTI.SUMMARY\n */\n async getStatsMultiRaw(requestParameters: GetStatsMultiRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<{ [key: string]: TokenStat; }>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getStatsMulti().'\n );\n }\n\n if (requestParameters['tokenAddresses'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddresses',\n 'Required parameter \"tokenAddresses\" was null or undefined when calling getStatsMulti().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['tokenAddresses'] != null) {\n queryParameters['tokenAddresses'] = requestParameters['tokenAddresses'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/stats/multi`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => runtime.mapValues(jsonValue, TokenStatFromJSON));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_STATS_MULTI.DESCRIPTION\n * CONTROLLER.TOKEN.GET_STATS_MULTI.SUMMARY\n */\n async getStatsMulti(requestParameters: GetStatsMultiRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{ [key: string]: TokenStat; }> {\n const response = await this.getStatsMultiRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET.DESCRIPTION\n * CONTROLLER.TOKEN.GET.SUMMARY\n */\n async getTokenRaw(requestParameters: GetTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Token>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getToken().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getToken().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET.DESCRIPTION\n * CONTROLLER.TOKEN.GET.SUMMARY\n */\n async getToken(requestParameters: GetTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Token> {\n const response = await this.getTokenRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_TOKENS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_TOKENS.SUMMARY\n */\n async getTokensRaw(requestParameters: GetTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Token>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getTokens().'\n );\n }\n\n if (requestParameters['tokenAddresses'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddresses',\n 'Required parameter \"tokenAddresses\" was null or undefined when calling getTokens().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['tokenAddresses'] != null) {\n queryParameters['tokenAddresses'] = requestParameters['tokenAddresses'];\n }\n\n if (requestParameters['sortBy'] != null) {\n queryParameters['sortBy'] = requestParameters['sortBy'];\n }\n\n if (requestParameters['sortDirection'] != null) {\n queryParameters['sortDirection'] = requestParameters['sortDirection'];\n }\n\n if (requestParameters['filterBy'] != null) {\n queryParameters['filterBy'] = requestParameters['filterBy'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/multi`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(TokenFromJSON));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_TOKENS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_TOKENS.SUMMARY\n */\n async getTokens(requestParameters: GetTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Token>> {\n const response = await this.getTokensRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_TOP_HOLDERS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_TOP_HOLDERS.SUMMARY\n */\n async getTopHoldersRaw(requestParameters: GetTopHoldersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenHolderPage>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getTopHolders().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getTopHolders().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/topHolders`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenHolderPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_TOP_HOLDERS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_TOP_HOLDERS.SUMMARY\n */\n async getTopHolders(requestParameters: GetTopHoldersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenHolderPage> {\n const response = await this.getTopHoldersRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_TOKEN_LIST.DESCRIPTION\n * CONTROLLER.TOKEN.GET_TOKEN_LIST.SUMMARY\n */\n async listTokenRaw(requestParameters: ListTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenListPage>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling listToken().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['direction'] != null) {\n queryParameters['direction'] = requestParameters['direction'];\n }\n\n if (requestParameters['sort'] != null) {\n queryParameters['sort'] = requestParameters['sort'];\n }\n\n if (requestParameters['sortBy'] != null) {\n queryParameters['sortBy'] = requestParameters['sortBy'];\n }\n\n if (requestParameters['minH24VolumeInUsd'] != null) {\n queryParameters['min_h24_volume_in_usd'] = requestParameters['minH24VolumeInUsd'];\n }\n\n if (requestParameters['maxH24VolumeInUsd'] != null) {\n queryParameters['max_h24_volume_in_usd'] = requestParameters['maxH24VolumeInUsd'];\n }\n\n if (requestParameters['minH24PriceChangeRatio'] != null) {\n queryParameters['min_h24_price_change_ratio'] = requestParameters['minH24PriceChangeRatio'];\n }\n\n if (requestParameters['maxH24PriceChangeRatio'] != null) {\n queryParameters['max_h24_price_change_ratio'] = requestParameters['maxH24PriceChangeRatio'];\n }\n\n if (requestParameters['minH24Buys'] != null) {\n queryParameters['min_h24_buys'] = requestParameters['minH24Buys'];\n }\n\n if (requestParameters['maxH24Buys'] != null) {\n queryParameters['max_h24_buys'] = requestParameters['maxH24Buys'];\n }\n\n if (requestParameters['minH24Sells'] != null) {\n queryParameters['min_h24_sells'] = requestParameters['minH24Sells'];\n }\n\n if (requestParameters['maxH24Sells'] != null) {\n queryParameters['max_h24_sells'] = requestParameters['maxH24Sells'];\n }\n\n if (requestParameters['minH24Trades'] != null) {\n queryParameters['min_h24_trades'] = requestParameters['minH24Trades'];\n }\n\n if (requestParameters['maxH24Trades'] != null) {\n queryParameters['max_h24_trades'] = requestParameters['maxH24Trades'];\n }\n\n if (requestParameters['minH24Buyers'] != null) {\n queryParameters['min_h24_buyers'] = requestParameters['minH24Buyers'];\n }\n\n if (requestParameters['maxH24Buyers'] != null) {\n queryParameters['max_h24_buyers'] = requestParameters['maxH24Buyers'];\n }\n\n if (requestParameters['minH24Sellers'] != null) {\n queryParameters['min_h24_sellers'] = requestParameters['minH24Sellers'];\n }\n\n if (requestParameters['maxH24Sellers'] != null) {\n queryParameters['max_h24_sellers'] = requestParameters['maxH24Sellers'];\n }\n\n if (requestParameters['minH24BuyVolumeInUsd'] != null) {\n queryParameters['min_h24_buy_volume_in_usd'] = requestParameters['minH24BuyVolumeInUsd'];\n }\n\n if (requestParameters['maxH24BuyVolumeInUsd'] != null) {\n queryParameters['max_h24_buy_volume_in_usd'] = requestParameters['maxH24BuyVolumeInUsd'];\n }\n\n if (requestParameters['minH24SellVolumeInUsd'] != null) {\n queryParameters['min_h24_sell_volume_in_usd'] = requestParameters['minH24SellVolumeInUsd'];\n }\n\n if (requestParameters['maxH24SellVolumeInUsd'] != null) {\n queryParameters['max_h24_sell_volume_in_usd'] = requestParameters['maxH24SellVolumeInUsd'];\n }\n\n if (requestParameters['minH4VolumeInUsd'] != null) {\n queryParameters['min_h4_volume_in_usd'] = requestParameters['minH4VolumeInUsd'];\n }\n\n if (requestParameters['maxH4VolumeInUsd'] != null) {\n queryParameters['max_h4_volume_in_usd'] = requestParameters['maxH4VolumeInUsd'];\n }\n\n if (requestParameters['minH4PriceChangeRatio'] != null) {\n queryParameters['min_h4_price_change_ratio'] = requestParameters['minH4PriceChangeRatio'];\n }\n\n if (requestParameters['maxH4PriceChangeRatio'] != null) {\n queryParameters['max_h4_price_change_ratio'] = requestParameters['maxH4PriceChangeRatio'];\n }\n\n if (requestParameters['minH4Buys'] != null) {\n queryParameters['min_h4_buys'] = requestParameters['minH4Buys'];\n }\n\n if (requestParameters['maxH4Buys'] != null) {\n queryParameters['max_h4_buys'] = requestParameters['maxH4Buys'];\n }\n\n if (requestParameters['minH4Sells'] != null) {\n queryParameters['min_h4_sells'] = requestParameters['minH4Sells'];\n }\n\n if (requestParameters['maxH4Sells'] != null) {\n queryParameters['max_h4_sells'] = requestParameters['maxH4Sells'];\n }\n\n if (requestParameters['minH4Trades'] != null) {\n queryParameters['min_h4_trades'] = requestParameters['minH4Trades'];\n }\n\n if (requestParameters['maxH4Trades'] != null) {\n queryParameters['max_h4_trades'] = requestParameters['maxH4Trades'];\n }\n\n if (requestParameters['minH4Buyers'] != null) {\n queryParameters['min_h4_buyers'] = requestParameters['minH4Buyers'];\n }\n\n if (requestParameters['maxH4Buyers'] != null) {\n queryParameters['max_h4_buyers'] = requestParameters['maxH4Buyers'];\n }\n\n if (requestParameters['minH4Sellers'] != null) {\n queryParameters['min_h4_sellers'] = requestParameters['minH4Sellers'];\n }\n\n if (requestParameters['maxH4Sellers'] != null) {\n queryParameters['max_h4_sellers'] = requestParameters['maxH4Sellers'];\n }\n\n if (requestParameters['minH4BuyVolumeInUsd'] != null) {\n queryParameters['min_h4_buy_volume_in_usd'] = requestParameters['minH4BuyVolumeInUsd'];\n }\n\n if (requestParameters['maxH4BuyVolumeInUsd'] != null) {\n queryParameters['max_h4_buy_volume_in_usd'] = requestParameters['maxH4BuyVolumeInUsd'];\n }\n\n if (requestParameters['minH4SellVolumeInUsd'] != null) {\n queryParameters['min_h4_sell_volume_in_usd'] = requestParameters['minH4SellVolumeInUsd'];\n }\n\n if (requestParameters['maxH4SellVolumeInUsd'] != null) {\n queryParameters['max_h4_sell_volume_in_usd'] = requestParameters['maxH4SellVolumeInUsd'];\n }\n\n if (requestParameters['minH1VolumeInUsd'] != null) {\n queryParameters['min_h1_volume_in_usd'] = requestParameters['minH1VolumeInUsd'];\n }\n\n if (requestParameters['maxH1VolumeInUsd'] != null) {\n queryParameters['max_h1_volume_in_usd'] = requestParameters['maxH1VolumeInUsd'];\n }\n\n if (requestParameters['minH1PriceChangeRatio'] != null) {\n queryParameters['min_h1_price_change_ratio'] = requestParameters['minH1PriceChangeRatio'];\n }\n\n if (requestParameters['maxH1PriceChangeRatio'] != null) {\n queryParameters['max_h1_price_change_ratio'] = requestParameters['maxH1PriceChangeRatio'];\n }\n\n if (requestParameters['minH1Buys'] != null) {\n queryParameters['min_h1_buys'] = requestParameters['minH1Buys'];\n }\n\n if (requestParameters['maxH1Buys'] != null) {\n queryParameters['max_h1_buys'] = requestParameters['maxH1Buys'];\n }\n\n if (requestParameters['minH1Sells'] != null) {\n queryParameters['min_h1_sells'] = requestParameters['minH1Sells'];\n }\n\n if (requestParameters['maxH1Sells'] != null) {\n queryParameters['max_h1_sells'] = requestParameters['maxH1Sells'];\n }\n\n if (requestParameters['minH1Trades'] != null) {\n queryParameters['min_h1_trades'] = requestParameters['minH1Trades'];\n }\n\n if (requestParameters['maxH1Trades'] != null) {\n queryParameters['max_h1_trades'] = requestParameters['maxH1Trades'];\n }\n\n if (requestParameters['minH1Buyers'] != null) {\n queryParameters['min_h1_buyers'] = requestParameters['minH1Buyers'];\n }\n\n if (requestParameters['maxH1Buyers'] != null) {\n queryParameters['max_h1_buyers'] = requestParameters['maxH1Buyers'];\n }\n\n if (requestParameters['minH1Sellers'] != null) {\n queryParameters['min_h1_sellers'] = requestParameters['minH1Sellers'];\n }\n\n if (requestParameters['maxH1Sellers'] != null) {\n queryParameters['max_h1_sellers'] = requestParameters['maxH1Sellers'];\n }\n\n if (requestParameters['minH1BuyVolumeInUsd'] != null) {\n queryParameters['min_h1_buy_volume_in_usd'] = requestParameters['minH1BuyVolumeInUsd'];\n }\n\n if (requestParameters['maxH1BuyVolumeInUsd'] != null) {\n queryParameters['max_h1_buy_volume_in_usd'] = requestParameters['maxH1BuyVolumeInUsd'];\n }\n\n if (requestParameters['minH1SellVolumeInUsd'] != null) {\n queryParameters['min_h1_sell_volume_in_usd'] = requestParameters['minH1SellVolumeInUsd'];\n }\n\n if (requestParameters['maxH1SellVolumeInUsd'] != null) {\n queryParameters['max_h1_sell_volume_in_usd'] = requestParameters['maxH1SellVolumeInUsd'];\n }\n\n if (requestParameters['minM30VolumeInUsd'] != null) {\n queryParameters['min_m30_volume_in_usd'] = requestParameters['minM30VolumeInUsd'];\n }\n\n if (requestParameters['maxM30VolumeInUsd'] != null) {\n queryParameters['max_m30_volume_in_usd'] = requestParameters['maxM30VolumeInUsd'];\n }\n\n if (requestParameters['minM30PriceChangeRatio'] != null) {\n queryParameters['min_m30_price_change_ratio'] = requestParameters['minM30PriceChangeRatio'];\n }\n\n if (requestParameters['maxM30PriceChangeRatio'] != null) {\n queryParameters['max_m30_price_change_ratio'] = requestParameters['maxM30PriceChangeRatio'];\n }\n\n if (requestParameters['minM30Buys'] != null) {\n queryParameters['min_m30_buys'] = requestParameters['minM30Buys'];\n }\n\n if (requestParameters['maxM30Buys'] != null) {\n queryParameters['max_m30_buys'] = requestParameters['maxM30Buys'];\n }\n\n if (requestParameters['minM30Sells'] != null) {\n queryParameters['min_m30_sells'] = requestParameters['minM30Sells'];\n }\n\n if (requestParameters['maxM30Sells'] != null) {\n queryParameters['max_m30_sells'] = requestParameters['maxM30Sells'];\n }\n\n if (requestParameters['minM30Trades'] != null) {\n queryParameters['min_m30_trades'] = requestParameters['minM30Trades'];\n }\n\n if (requestParameters['maxM30Trades'] != null) {\n queryParameters['max_m30_trades'] = requestParameters['maxM30Trades'];\n }\n\n if (requestParameters['minM30Buyers'] != null) {\n queryParameters['min_m30_buyers'] = requestParameters['minM30Buyers'];\n }\n\n if (requestParameters['maxM30Buyers'] != null) {\n queryParameters['max_m30_buyers'] = requestParameters['maxM30Buyers'];\n }\n\n if (requestParameters['minM30Sellers'] != null) {\n queryParameters['min_m30_sellers'] = requestParameters['minM30Sellers'];\n }\n\n if (requestParameters['maxM30Sellers'] != null) {\n queryParameters['max_m30_sellers'] = requestParameters['maxM30Sellers'];\n }\n\n if (requestParameters['minM30BuyVolumeInUsd'] != null) {\n queryParameters['min_m30_buy_volume_in_usd'] = requestParameters['minM30BuyVolumeInUsd'];\n }\n\n if (requestParameters['maxM30BuyVolumeInUsd'] != null) {\n queryParameters['max_m30_buy_volume_in_usd'] = requestParameters['maxM30BuyVolumeInUsd'];\n }\n\n if (requestParameters['minM30SellVolumeInUsd'] != null) {\n queryParameters['min_m30_sell_volume_in_usd'] = requestParameters['minM30SellVolumeInUsd'];\n }\n\n if (requestParameters['maxM30SellVolumeInUsd'] != null) {\n queryParameters['max_m30_sell_volume_in_usd'] = requestParameters['maxM30SellVolumeInUsd'];\n }\n\n if (requestParameters['minM15VolumeInUsd'] != null) {\n queryParameters['min_m15_volume_in_usd'] = requestParameters['minM15VolumeInUsd'];\n }\n\n if (requestParameters['maxM15VolumeInUsd'] != null) {\n queryParameters['max_m15_volume_in_usd'] = requestParameters['maxM15VolumeInUsd'];\n }\n\n if (requestParameters['minM15PriceChangeRatio'] != null) {\n queryParameters['min_m15_price_change_ratio'] = requestParameters['minM15PriceChangeRatio'];\n }\n\n if (requestParameters['maxM15PriceChangeRatio'] != null) {\n queryParameters['max_m15_price_change_ratio'] = requestParameters['maxM15PriceChangeRatio'];\n }\n\n if (requestParameters['minM15Buys'] != null) {\n queryParameters['min_m15_buys'] = requestParameters['minM15Buys'];\n }\n\n if (requestParameters['maxM15Buys'] != null) {\n queryParameters['max_m15_buys'] = requestParameters['maxM15Buys'];\n }\n\n if (requestParameters['minM15Sells'] != null) {\n queryParameters['min_m15_sells'] = requestParameters['minM15Sells'];\n }\n\n if (requestParameters['maxM15Sells'] != null) {\n queryParameters['max_m15_sells'] = requestParameters['maxM15Sells'];\n }\n\n if (requestParameters['minM15Trades'] != null) {\n queryParameters['min_m15_trades'] = requestParameters['minM15Trades'];\n }\n\n if (requestParameters['maxM15Trades'] != null) {\n queryParameters['max_m15_trades'] = requestParameters['maxM15Trades'];\n }\n\n if (requestParameters['minM15Buyers'] != null) {\n queryParameters['min_m15_buyers'] = requestParameters['minM15Buyers'];\n }\n\n if (requestParameters['maxM15Buyers'] != null) {\n queryParameters['max_m15_buyers'] = requestParameters['maxM15Buyers'];\n }\n\n if (requestParameters['minM15Sellers'] != null) {\n queryParameters['min_m15_sellers'] = requestParameters['minM15Sellers'];\n }\n\n if (requestParameters['maxM15Sellers'] != null) {\n queryParameters['max_m15_sellers'] = requestParameters['maxM15Sellers'];\n }\n\n if (requestParameters['minM15BuyVolumeInUsd'] != null) {\n queryParameters['min_m15_buy_volume_in_usd'] = requestParameters['minM15BuyVolumeInUsd'];\n }\n\n if (requestParameters['maxM15BuyVolumeInUsd'] != null) {\n queryParameters['max_m15_buy_volume_in_usd'] = requestParameters['maxM15BuyVolumeInUsd'];\n }\n\n if (requestParameters['minM15SellVolumeInUsd'] != null) {\n queryParameters['min_m15_sell_volume_in_usd'] = requestParameters['minM15SellVolumeInUsd'];\n }\n\n if (requestParameters['maxM15SellVolumeInUsd'] != null) {\n queryParameters['max_m15_sell_volume_in_usd'] = requestParameters['maxM15SellVolumeInUsd'];\n }\n\n if (requestParameters['minM5VolumeInUsd'] != null) {\n queryParameters['min_m5_volume_in_usd'] = requestParameters['minM5VolumeInUsd'];\n }\n\n if (requestParameters['maxM5VolumeInUsd'] != null) {\n queryParameters['max_m5_volume_in_usd'] = requestParameters['maxM5VolumeInUsd'];\n }\n\n if (requestParameters['minM5PriceChangeRatio'] != null) {\n queryParameters['min_m5_price_change_ratio'] = requestParameters['minM5PriceChangeRatio'];\n }\n\n if (requestParameters['maxM5PriceChangeRatio'] != null) {\n queryParameters['max_m5_price_change_ratio'] = requestParameters['maxM5PriceChangeRatio'];\n }\n\n if (requestParameters['minM5Buys'] != null) {\n queryParameters['min_m5_buys'] = requestParameters['minM5Buys'];\n }\n\n if (requestParameters['maxM5Buys'] != null) {\n queryParameters['max_m5_buys'] = requestParameters['maxM5Buys'];\n }\n\n if (requestParameters['minM5Sells'] != null) {\n queryParameters['min_m5_sells'] = requestParameters['minM5Sells'];\n }\n\n if (requestParameters['maxM5Sells'] != null) {\n queryParameters['max_m5_sells'] = requestParameters['maxM5Sells'];\n }\n\n if (requestParameters['minM5Trades'] != null) {\n queryParameters['min_m5_trades'] = requestParameters['minM5Trades'];\n }\n\n if (requestParameters['maxM5Trades'] != null) {\n queryParameters['max_m5_trades'] = requestParameters['maxM5Trades'];\n }\n\n if (requestParameters['minM5Buyers'] != null) {\n queryParameters['min_m5_buyers'] = requestParameters['minM5Buyers'];\n }\n\n if (requestParameters['maxM5Buyers'] != null) {\n queryParameters['max_m5_buyers'] = requestParameters['maxM5Buyers'];\n }\n\n if (requestParameters['minM5Sellers'] != null) {\n queryParameters['min_m5_sellers'] = requestParameters['minM5Sellers'];\n }\n\n if (requestParameters['maxM5Sellers'] != null) {\n queryParameters['max_m5_sellers'] = requestParameters['maxM5Sellers'];\n }\n\n if (requestParameters['minM5BuyVolumeInUsd'] != null) {\n queryParameters['min_m5_buy_volume_in_usd'] = requestParameters['minM5BuyVolumeInUsd'];\n }\n\n if (requestParameters['maxM5BuyVolumeInUsd'] != null) {\n queryParameters['max_m5_buy_volume_in_usd'] = requestParameters['maxM5BuyVolumeInUsd'];\n }\n\n if (requestParameters['minM5SellVolumeInUsd'] != null) {\n queryParameters['min_m5_sell_volume_in_usd'] = requestParameters['minM5SellVolumeInUsd'];\n }\n\n if (requestParameters['maxM5SellVolumeInUsd'] != null) {\n queryParameters['max_m5_sell_volume_in_usd'] = requestParameters['maxM5SellVolumeInUsd'];\n }\n\n if (requestParameters['minM1VolumeInUsd'] != null) {\n queryParameters['min_m1_volume_in_usd'] = requestParameters['minM1VolumeInUsd'];\n }\n\n if (requestParameters['maxM1VolumeInUsd'] != null) {\n queryParameters['max_m1_volume_in_usd'] = requestParameters['maxM1VolumeInUsd'];\n }\n\n if (requestParameters['minM1PriceChangeRatio'] != null) {\n queryParameters['min_m1_price_change_ratio'] = requestParameters['minM1PriceChangeRatio'];\n }\n\n if (requestParameters['maxM1PriceChangeRatio'] != null) {\n queryParameters['max_m1_price_change_ratio'] = requestParameters['maxM1PriceChangeRatio'];\n }\n\n if (requestParameters['minM1Buys'] != null) {\n queryParameters['min_m1_buys'] = requestParameters['minM1Buys'];\n }\n\n if (requestParameters['maxM1Buys'] != null) {\n queryParameters['max_m1_buys'] = requestParameters['maxM1Buys'];\n }\n\n if (requestParameters['minM1Sells'] != null) {\n queryParameters['min_m1_sells'] = requestParameters['minM1Sells'];\n }\n\n if (requestParameters['maxM1Sells'] != null) {\n queryParameters['max_m1_sells'] = requestParameters['maxM1Sells'];\n }\n\n if (requestParameters['minM1Trades'] != null) {\n queryParameters['min_m1_trades'] = requestParameters['minM1Trades'];\n }\n\n if (requestParameters['maxM1Trades'] != null) {\n queryParameters['max_m1_trades'] = requestParameters['maxM1Trades'];\n }\n\n if (requestParameters['minM1Buyers'] != null) {\n queryParameters['min_m1_buyers'] = requestParameters['minM1Buyers'];\n }\n\n if (requestParameters['maxM1Buyers'] != null) {\n queryParameters['max_m1_buyers'] = requestParameters['maxM1Buyers'];\n }\n\n if (requestParameters['minM1Sellers'] != null) {\n queryParameters['min_m1_sellers'] = requestParameters['minM1Sellers'];\n }\n\n if (requestParameters['maxM1Sellers'] != null) {\n queryParameters['max_m1_sellers'] = requestParameters['maxM1Sellers'];\n }\n\n if (requestParameters['minM1BuyVolumeInUsd'] != null) {\n queryParameters['min_m1_buy_volume_in_usd'] = requestParameters['minM1BuyVolumeInUsd'];\n }\n\n if (requestParameters['maxM1BuyVolumeInUsd'] != null) {\n queryParameters['max_m1_buy_volume_in_usd'] = requestParameters['maxM1BuyVolumeInUsd'];\n }\n\n if (requestParameters['minM1SellVolumeInUsd'] != null) {\n queryParameters['min_m1_sell_volume_in_usd'] = requestParameters['minM1SellVolumeInUsd'];\n }\n\n if (requestParameters['maxM1SellVolumeInUsd'] != null) {\n queryParameters['max_m1_sell_volume_in_usd'] = requestParameters['maxM1SellVolumeInUsd'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/list`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenListPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_TOKEN_LIST.DESCRIPTION\n * CONTROLLER.TOKEN.GET_TOKEN_LIST.SUMMARY\n */\n async listToken(requestParameters: ListTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenListPage> {\n const response = await this.listTokenRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.SEARCH.DESCRIPTION\n * CONTROLLER.TOKEN.SEARCH.SUMMARY\n */\n async searchRaw(requestParameters: SearchRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenPage>> {\n const queryParameters: any = {};\n\n if (requestParameters['chains'] != null) {\n queryParameters['chains'] = requestParameters['chains'];\n }\n\n if (requestParameters['q'] != null) {\n queryParameters['q'] = requestParameters['q'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['sort'] != null) {\n queryParameters['sort'] = requestParameters['sort'];\n }\n\n if (requestParameters['protocols'] != null) {\n queryParameters['protocols'] = requestParameters['protocols'];\n }\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['sortBy'] != null) {\n queryParameters['sortBy'] = requestParameters['sortBy'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/search`;\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.SEARCH.DESCRIPTION\n * CONTROLLER.TOKEN.SEARCH.SUMMARY\n */\n async search(requestParameters: SearchRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenPage> {\n const response = await this.searchRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n\n/**\n * @export\n */\nexport const GetHoldersDirectionEnum = {\n Next: 'next',\n Prev: 'prev'\n} as const;\nexport type GetHoldersDirectionEnum = typeof GetHoldersDirectionEnum[keyof typeof GetHoldersDirectionEnum];\n/**\n * @export\n */\nexport const GetMintAndBurnDirectionEnum = {\n Next: 'next',\n Prev: 'prev'\n} as const;\nexport type GetMintAndBurnDirectionEnum = typeof GetMintAndBurnDirectionEnum[keyof typeof GetMintAndBurnDirectionEnum];\n/**\n * @export\n */\nexport const GetMintAndBurnTypeEnum = {\n All: 'all',\n Mint: 'mint',\n Burn: 'burn'\n} as const;\nexport type GetMintAndBurnTypeEnum = typeof GetMintAndBurnTypeEnum[keyof typeof GetMintAndBurnTypeEnum];\n/**\n * @export\n */\nexport const GetPricesDirectionEnum = {\n Next: 'next',\n Prev: 'prev'\n} as const;\nexport type GetPricesDirectionEnum = typeof GetPricesDirectionEnum[keyof typeof GetPricesDirectionEnum];\n/**\n * @export\n */\nexport const GetTokensSortByEnum = {\n MarketDataPriceInUsd: 'marketData.priceInUsd',\n StatsPriceChangeRatioInUsd1m: 'stats.priceChangeRatioInUsd1m',\n StatsPriceChangeRatioInUsd5m: 'stats.priceChangeRatioInUsd5m',\n StatsPriceChangeRatioInUsd1h: 'stats.priceChangeRatioInUsd1h',\n StatsPriceChangeRatioInUsd4h: 'stats.priceChangeRatioInUsd4h',\n StatsPriceChangeRatioInUsd24h: 'stats.priceChangeRatioInUsd24h',\n MarketDataMarketCapInUsd: 'marketData.marketCapInUsd',\n MarketDataTvlInUsd: 'marketData.tvlInUsd',\n MarketDataTop10TotalHoldings: 'marketData.top10TotalHoldings',\n MarketDataTop10HoldingsRatio: 'marketData.top10HoldingsRatio',\n MarketDataTop100TotalHoldings: 'marketData.top100TotalHoldings',\n MarketDataTop100HoldingsRatio: 'marketData.top100HoldingsRatio',\n MarketDataHolders: 'marketData.holders',\n MarketDataCreatorHoldings: 'marketData.creatorHoldings',\n MarketDataCreatorHoldingsRatio: 'marketData.creatorHoldingsRatio',\n StatsBuys1m: 'stats.buys1m',\n StatsBuys5m: 'stats.buys5m',\n StatsBuys15m: 'stats.buys15m',\n StatsBuys30m: 'stats.buys30m',\n StatsBuys1h: 'stats.buys1h',\n StatsBuys4h: 'stats.buys4h',\n StatsBuys24h: 'stats.buys24h',\n StatsSells1m: 'stats.sells1m',\n StatsSells5m: 'stats.sells5m',\n StatsSells15m: 'stats.sells15m',\n StatsSells30m: 'stats.sells30m',\n StatsSells1h: 'stats.sells1h',\n StatsSells4h: 'stats.sells4h',\n StatsSells24h: 'stats.sells24h',\n StatsTrades1m: 'stats.trades1m',\n StatsTrades5m: 'stats.trades5m',\n StatsTrades1h: 'stats.trades1h',\n StatsTrades4h: 'stats.trades4h',\n StatsTrades24h: 'stats.trades24h',\n StatsTraders1m: 'stats.traders1m',\n StatsTraders5m: 'stats.traders5m',\n StatsTraders1h: 'stats.traders1h',\n StatsTraders4h: 'stats.traders4h',\n StatsTraders24h: 'stats.traders24h',\n StatsVolumesInUsd1m: 'stats.volumesInUsd1m',\n StatsVolumesInUsd5m: 'stats.volumesInUsd5m',\n StatsVolumesInUsd1h: 'stats.volumesInUsd1h',\n StatsVolumesInUsd4h: 'stats.volumesInUsd4h',\n StatsVolumesInUsd24h: 'stats.volumesInUsd24h',\n TokenCreatedAt: 'tokenCreatedAt'\n} as const;\nexport type GetTokensSortByEnum = typeof GetTokensSortByEnum[keyof typeof GetTokensSortByEnum];\n/**\n * @export\n */\nexport const GetTokensSortDirectionEnum = {\n Asc: 'ASC',\n Desc: 'DESC'\n} as const;\nexport type GetTokensSortDirectionEnum = typeof GetTokensSortDirectionEnum[keyof typeof GetTokensSortDirectionEnum];\n/**\n * @export\n */\nexport const ListTokenDirectionEnum = {\n Next: 'next',\n Prev: 'prev'\n} as const;\nexport type ListTokenDirectionEnum = typeof ListTokenDirectionEnum[keyof typeof ListTokenDirectionEnum];\n/**\n * @export\n */\nexport const ListTokenSortEnum = {\n Asc: 'asc',\n Desc: 'desc'\n} as const;\nexport type ListTokenSortEnum = typeof ListTokenSortEnum[keyof typeof ListTokenSortEnum];\n/**\n * @export\n */\nexport const ListTokenSortByEnum = {\n H24VolumeInUsd: 'h24VolumeInUsd',\n H24PriceChangeRatio: 'h24PriceChangeRatio',\n H24Buys: 'h24Buys',\n H24Sells: 'h24Sells',\n H24Trades: 'h24Trades',\n H24Buyers: 'h24Buyers',\n H24Sellers: 'h24Sellers',\n H24BuyVolumeInUsd: 'h24BuyVolumeInUsd',\n H24SellVolumeInUsd: 'h24SellVolumeInUsd',\n H4VolumeInUsd: 'h4VolumeInUsd',\n H4PriceChangeRatio: 'h4PriceChangeRatio',\n H4Buys: 'h4Buys',\n H4Sells: 'h4Sells',\n H4Trades: 'h4Trades',\n H4Buyers: 'h4Buyers',\n H4Sellers: 'h4Sellers',\n H4BuyVolumeInUsd: 'h4BuyVolumeInUsd',\n H4SellVolumeInUsd: 'h4SellVolumeInUsd',\n H1VolumeInUsd: 'h1VolumeInUsd',\n H1PriceChangeRatio: 'h1PriceChangeRatio',\n H1Buys: 'h1Buys',\n H1Sells: 'h1Sells',\n H1Trades: 'h1Trades',\n H1Buyers: 'h1Buyers',\n H1Sellers: 'h1Sellers',\n H1BuyVolumeInUsd: 'h1BuyVolumeInUsd',\n H1SellVolumeInUsd: 'h1SellVolumeInUsd',\n M30VolumeInUsd: 'm30VolumeInUsd',\n M30PriceChangeRatio: 'm30PriceChangeRatio',\n M30Buys: 'm30Buys',\n M30Sells: 'm30Sells',\n M30Trades: 'm30Trades',\n M30Buyers: 'm30Buyers',\n M30Sellers: 'm30Sellers',\n M30BuyVolumeInUsd: 'm30BuyVolumeInUsd',\n M30SellVolumeInUsd: 'm30SellVolumeInUsd',\n M15VolumeInUsd: 'm15VolumeInUsd',\n M15PriceChangeRatio: 'm15PriceChangeRatio',\n M15Buys: 'm15Buys',\n M15Sells: 'm15Sells',\n M15Trades: 'm15Trades',\n M15Buyers: 'm15Buyers',\n M15Sellers: 'm15Sellers',\n M15BuyVolumeInUsd: 'm15BuyVolumeInUsd',\n M15SellVolumeInUsd: 'm15SellVolumeInUsd',\n M5VolumeInUsd: 'm5VolumeInUsd',\n M5PriceChangeRatio: 'm5PriceChangeRatio',\n M5Buys: 'm5Buys',\n M5Sells: 'm5Sells',\n M5Trades: 'm5Trades',\n M5Buyers: 'm5Buyers',\n M5Sellers: 'm5Sellers',\n M5BuyVolumeInUsd: 'm5BuyVolumeInUsd',\n M5SellVolumeInUsd: 'm5SellVolumeInUsd',\n M1VolumeInUsd: 'm1VolumeInUsd',\n M1PriceChangeRatio: 'm1PriceChangeRatio',\n M1Buys: 'm1Buys',\n M1Sells: 'm1Sells',\n M1Trades: 'm1Trades',\n M1Buyers: 'm1Buyers',\n M1Sellers: 'm1Sellers',\n M1BuyVolumeInUsd: 'm1BuyVolumeInUsd',\n M1SellVolumeInUsd: 'm1SellVolumeInUsd'\n} as const;\nexport type ListTokenSortByEnum = typeof ListTokenSortByEnum[keyof typeof ListTokenSortByEnum];\n/**\n * @export\n */\nexport const SearchSortEnum = {\n Asc: 'asc',\n Desc: 'desc'\n} as const;\nexport type SearchSortEnum = typeof SearchSortEnum[keyof typeof SearchSortEnum];\n/**\n * @export\n */\nexport const SearchSortByEnum = {\n MarketCapInUsd: 'marketCapInUsd',\n LiquidityInUsd: 'liquidityInUsd',\n PriceInUsd: 'priceInUsd',\n HolderCount: 'holderCount',\n H24VolumeInUsd: 'h24VolumeInUsd',\n H24Transactions: 'h24Transactions',\n TokenCreatedAt: 'tokenCreatedAt'\n} as const;\nexport type SearchSortByEnum = typeof SearchSortByEnum[keyof typeof SearchSortByEnum];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ChainSymbol,\n GainersAndLosersPage,\n TopTradersPage,\n TradePage,\n} from '../models/index';\nimport {\n ChainSymbolFromJSON,\n ChainSymbolToJSON,\n GainersAndLosersPageFromJSON,\n GainersAndLosersPageToJSON,\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 GetGainersLosersRequest {\n chain: ChainSymbol;\n cursor?: string;\n limit?: number;\n direction?: GetGainersLosersDirectionEnum;\n type?: GetGainersLosersTypeEnum;\n sortBy?: GetGainersLosersSortByEnum;\n sortType?: GetGainersLosersSortTypeEnum;\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 * CONTROLLER.TRADE.GET.TOKEN_ACTIVITIES.DESCRIPTION\n * CONTROLLER.TRADE.GET.TOKEN_ACTIVITIES.SUMMARY\n */\n async getActivitiesRaw(requestParameters: GetActivitiesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TradePage>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getActivities().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['direction'] != null) {\n queryParameters['direction'] = requestParameters['direction'];\n }\n\n if (requestParameters['tokenAddress'] != null) {\n queryParameters['tokenAddress'] = requestParameters['tokenAddress'];\n }\n\n if (requestParameters['walletAddress'] != null) {\n queryParameters['walletAddress'] = requestParameters['walletAddress'];\n }\n\n if (requestParameters['poolAddress'] != null) {\n queryParameters['poolAddress'] = requestParameters['poolAddress'];\n }\n\n if (requestParameters['beforeTimestamp'] != null) {\n queryParameters['beforeTimestamp'] = requestParameters['beforeTimestamp'];\n }\n\n if (requestParameters['afterTimestamp'] != null) {\n queryParameters['afterTimestamp'] = requestParameters['afterTimestamp'];\n }\n\n if (requestParameters['beforeBlockHeight'] != null) {\n queryParameters['beforeBlockHeight'] = requestParameters['beforeBlockHeight'];\n }\n\n if (requestParameters['afterBlockHeight'] != null) {\n queryParameters['afterBlockHeight'] = requestParameters['afterBlockHeight'];\n }\n\n if (requestParameters['transactionsSignature'] != null) {\n queryParameters['transactionsSignature'] = requestParameters['transactionsSignature'];\n }\n\n if (requestParameters['type'] != null) {\n queryParameters['type'] = requestParameters['type'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/trade/{chain}/activities`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TradePageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TRADE.GET.TOKEN_ACTIVITIES.DESCRIPTION\n * CONTROLLER.TRADE.GET.TOKEN_ACTIVITIES.SUMMARY\n */\n async getActivities(requestParameters: GetActivitiesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TradePage> {\n const response = await this.getActivitiesRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TRADE.GET.GAINERS_LOSERS.DESCRIPTION\n * CONTROLLER.TRADE.GET.GAINERS_LOSERS.SUMMARY\n */\n async getGainersLosersRaw(requestParameters: GetGainersLosersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<GainersAndLosersPage>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getGainersLosers().'\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 if (requestParameters['sortBy'] != null) {\n queryParameters['sortBy'] = requestParameters['sortBy'];\n }\n\n if (requestParameters['sortType'] != null) {\n queryParameters['sortType'] = requestParameters['sortType'];\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}/gainers-losers`;\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) => GainersAndLosersPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TRADE.GET.GAINERS_LOSERS.DESCRIPTION\n * CONTROLLER.TRADE.GET.GAINERS_LOSERS.SUMMARY\n */\n async getGainersLosers(requestParameters: GetGainersLosersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<GainersAndLosersPage> {\n const response = await this.getGainersLosersRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TRADE.GET.TOP_TRADERS.DESCRIPTION\n * CONTROLLER.TRADE.GET.TOP_TRADERS.SUMMARY\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 * CONTROLLER.TRADE.GET.TOP_TRADERS.DESCRIPTION\n * CONTROLLER.TRADE.GET.TOP_TRADERS.SUMMARY\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 * CONTROLLER.TRADE.GET.TOKEN.DESCRIPTION\n * CONTROLLER.TRADE.GET.TOKEN.SUMMARY\n */\n async getTradesRaw(requestParameters: GetTradesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TradePage>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getTrades().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['direction'] != null) {\n queryParameters['direction'] = requestParameters['direction'];\n }\n\n if (requestParameters['tokenAddress'] != null) {\n queryParameters['tokenAddress'] = requestParameters['tokenAddress'];\n }\n\n if (requestParameters['walletAddress'] != null) {\n queryParameters['walletAddress'] = requestParameters['walletAddress'];\n }\n\n if (requestParameters['poolAddress'] != null) {\n queryParameters['poolAddress'] = requestParameters['poolAddress'];\n }\n\n if (requestParameters['beforeTimestamp'] != null) {\n queryParameters['beforeTimestamp'] = requestParameters['beforeTimestamp'];\n }\n\n if (requestParameters['afterTimestamp'] != null) {\n queryParameters['afterTimestamp'] = requestParameters['afterTimestamp'];\n }\n\n if (requestParameters['beforeBlockHeight'] != null) {\n queryParameters['beforeBlockHeight'] = requestParameters['beforeBlockHeight'];\n }\n\n if (requestParameters['afterBlockHeight'] != null) {\n queryParameters['afterBlockHeight'] = requestParameters['afterBlockHeight'];\n }\n\n if (requestParameters['transactionsSignature'] != null) {\n queryParameters['transactionsSignature'] = requestParameters['transactionsSignature'];\n }\n\n if (requestParameters['type'] != null) {\n queryParameters['type'] = requestParameters['type'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/trade/{chain}`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TradePageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TRADE.GET.TOKEN.DESCRIPTION\n * CONTROLLER.TRADE.GET.TOKEN.SUMMARY\n */\n async getTrades(requestParameters: GetTradesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TradePage> {\n const response = await this.getTradesRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n\n/**\n * @export\n */\nexport const GetActivitiesDirectionEnum = {\n Next: 'next',\n Prev: 'prev'\n} as const;\nexport type GetActivitiesDirectionEnum = typeof GetActivitiesDirectionEnum[keyof typeof GetActivitiesDirectionEnum];\n/**\n * @export\n */\nexport const GetActivitiesTypeEnum = {\n Buy: 'BUY',\n Sell: 'SELL',\n LiquidityInitialize: 'LIQUIDITY_INITIALIZE',\n LiquidityAdd: 'LIQUIDITY_ADD',\n LiquidityRemove: 'LIQUIDITY_REMOVE',\n RedPacketCreate: 'RED_PACKET_CREATE',\n RedPacketClaim: 'RED_PACKET_CLAIM',\n RedPacketComplete: 'RED_PACKET_COMPLETE',\n RedPacketRefund: 'RED_PACKET_REFUND'\n} as const;\nexport type GetActivitiesTypeEnum = typeof GetActivitiesTypeEnum[keyof typeof GetActivitiesTypeEnum];\n/**\n * @export\n */\nexport const GetGainersLosersDirectionEnum = {\n Next: 'next',\n Prev: 'prev'\n} as const;\nexport type GetGainersLosersDirectionEnum = typeof GetGainersLosersDirectionEnum[keyof typeof GetGainersLosersDirectionEnum];\n/**\n * @export\n */\nexport const GetGainersLosersTypeEnum = {\n _1W: '1W',\n Today: 'today',\n Yesterday: 'yesterday'\n} as const;\nexport type GetGainersLosersTypeEnum = typeof GetGainersLosersTypeEnum[keyof typeof GetGainersLosersTypeEnum];\n/**\n * @export\n */\nexport const GetGainersLosersSortByEnum = {\n PnL: 'PnL'\n} as const;\nexport type GetGainersLosersSortByEnum = typeof GetGainersLosersSortByEnum[keyof typeof GetGainersLosersSortByEnum];\n/**\n * @export\n */\nexport const GetGainersLosersSortTypeEnum = {\n Desc: 'desc',\n Asc: 'asc'\n} as const;\nexport type GetGainersLosersSortTypeEnum = typeof GetGainersLosersSortTypeEnum[keyof typeof GetGainersLosersSortTypeEnum];\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 Volume: 'volume',\n Trade: 'trade'\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 * CONTROLLER.TRANSACTION.ESTIMATE_GAS_LIMIT.DESCRIPTION\n * CONTROLLER.TRANSACTION.ESTIMATE_GAS_LIMIT.SUMMARY\n */\n async estimateGasLimitRaw(requestParameters: EstimateGasLimitRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<EstimateGasLimitResponse>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling estimateGasLimit().'\n );\n }\n\n if (requestParameters['estimateGasLimitInput'] == null) {\n throw new runtime.RequiredError(\n 'estimateGasLimitInput',\n 'Required parameter \"estimateGasLimitInput\" was null or undefined when calling estimateGasLimit().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/transaction/{chain}/estimate-gas-limit`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: EstimateGasLimitInputToJSON(requestParameters['estimateGasLimitInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => EstimateGasLimitResponseFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TRANSACTION.ESTIMATE_GAS_LIMIT.DESCRIPTION\n * CONTROLLER.TRANSACTION.ESTIMATE_GAS_LIMIT.SUMMARY\n */\n async estimateGasLimit(requestParameters: EstimateGasLimitRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<EstimateGasLimitResponse> {\n const response = await this.estimateGasLimitRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TRANSACTION.GET_GAS_PRICE.DESCRIPTION\n * CONTROLLER.TRANSACTION.GET_GAS_PRICE.SUMMARY\n */\n async getGasPriceRaw(requestParameters: GetGasPriceRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<GasPriceResponse>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getGasPrice().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/transaction/{chain}/gas-price`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => GasPriceResponseFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TRANSACTION.GET_GAS_PRICE.DESCRIPTION\n * CONTROLLER.TRANSACTION.GET_GAS_PRICE.SUMMARY\n */\n async getGasPrice(requestParameters: GetGasPriceRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<GasPriceResponse> {\n const response = await this.getGasPriceRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TRANSACTION.SEND.DESCRIPTION\n * CONTROLLER.TRANSACTION.SEND.SUMMARY\n */\n async sendRaw(requestParameters: SendRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SendTxResponse>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling send().'\n );\n }\n\n if (requestParameters['sendTxInput'] == null) {\n throw new runtime.RequiredError(\n 'sendTxInput',\n 'Required parameter \"sendTxInput\" was null or undefined when calling send().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/transaction/{chain}/send`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: SendTxInputToJSON(requestParameters['sendTxInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SendTxResponseFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TRANSACTION.SEND.DESCRIPTION\n * CONTROLLER.TRANSACTION.SEND.SUMMARY\n */\n async send(requestParameters: SendRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SendTxResponse> {\n const response = await this.sendRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n\n/**\n * @export\n */\nexport const EstimateGasLimitChainEnum = {\n Base: 'base',\n Bsc: 'bsc',\n Polygon: 'polygon',\n Arbitrum: 'arbitrum',\n Optimism: 'optimism',\n Avalanche: 'avalanche',\n Ethereum: 'ethereum',\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 Ethereum: 'ethereum',\n Zksync: 'zksync'\n} as const;\nexport type GetGasPriceChainEnum = typeof GetGasPriceChainEnum[keyof typeof GetGasPriceChainEnum];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n BooleanResultDTO,\n CalculatePnlInput,\n ChainSymbol,\n WalletBalancesDTO,\n WalletPnlDTO,\n} from '../models/index';\nimport {\n BooleanResultDTOFromJSON,\n BooleanResultDTOToJSON,\n CalculatePnlInputFromJSON,\n CalculatePnlInputToJSON,\n ChainSymbolFromJSON,\n ChainSymbolToJSON,\n WalletBalancesDTOFromJSON,\n WalletBalancesDTOToJSON,\n WalletPnlDTOFromJSON,\n WalletPnlDTOToJSON,\n} from '../models/index';\n\nexport interface CalculatePnlRequest {\n chain: ChainSymbol;\n walletAddress: string;\n calculatePnlInput: CalculatePnlInput;\n}\n\nexport interface GetBalanceRequest {\n chain: ChainSymbol;\n walletAddress: string;\n tokenAddress?: string;\n}\n\nexport interface GetPnlRequest {\n chain: ChainSymbol;\n walletAddress: string;\n tokenAddress?: string;\n}\n\nexport interface GetPnlStatsRequest {\n chain: ChainSymbol;\n walletAddress: string;\n}\n\n/**\n * \n */\nexport class WalletApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.WALLET.CALCULATE_PNL.DESCRIPTION\n * CONTROLLER.WALLET.CALCULATE_PNL.SUMMARY\n */\n async calculatePnlRaw(requestParameters: CalculatePnlRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<BooleanResultDTO>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling calculatePnl().'\n );\n }\n\n if (requestParameters['walletAddress'] == null) {\n throw new runtime.RequiredError(\n 'walletAddress',\n 'Required parameter \"walletAddress\" was null or undefined when calling calculatePnl().'\n );\n }\n\n if (requestParameters['calculatePnlInput'] == null) {\n throw new runtime.RequiredError(\n 'calculatePnlInput',\n 'Required parameter \"calculatePnlInput\" was null or undefined when calling calculatePnl().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/wallet/{chain}/{walletAddress}/calculate-pnl`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"walletAddress\"}}`, encodeURIComponent(String(requestParameters['walletAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: CalculatePnlInputToJSON(requestParameters['calculatePnlInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => BooleanResultDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.WALLET.CALCULATE_PNL.DESCRIPTION\n * CONTROLLER.WALLET.CALCULATE_PNL.SUMMARY\n */\n async calculatePnl(requestParameters: CalculatePnlRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<BooleanResultDTO> {\n const response = await this.calculatePnlRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.WALLET.GET_BALANCES.DESCRIPTION\n * CONTROLLER.WALLET.GET_BALANCES.SUMMARY\n */\n async getBalanceRaw(requestParameters: GetBalanceRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<WalletBalancesDTO>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getBalance().'\n );\n }\n\n if (requestParameters['walletAddress'] == null) {\n throw new runtime.RequiredError(\n 'walletAddress',\n 'Required parameter \"walletAddress\" was null or undefined when calling getBalance().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['tokenAddress'] != null) {\n queryParameters['tokenAddress'] = requestParameters['tokenAddress'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/wallet/{chain}/{walletAddress}/balance`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"walletAddress\"}}`, encodeURIComponent(String(requestParameters['walletAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => WalletBalancesDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.WALLET.GET_BALANCES.DESCRIPTION\n * CONTROLLER.WALLET.GET_BALANCES.SUMMARY\n */\n async getBalance(requestParameters: GetBalanceRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<WalletBalancesDTO> {\n const response = await this.getBalanceRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.WALLET.GET_PNL.DESCRIPTION\n * CONTROLLER.WALLET.GET_PNL.SUMMARY\n */\n async getPnlRaw(requestParameters: GetPnlRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<WalletPnlDTO>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getPnl().'\n );\n }\n\n if (requestParameters['walletAddress'] == null) {\n throw new runtime.RequiredError(\n 'walletAddress',\n 'Required parameter \"walletAddress\" was null or undefined when calling getPnl().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['tokenAddress'] != null) {\n queryParameters['tokenAddress'] = requestParameters['tokenAddress'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/wallet/{chain}/{walletAddress}`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"walletAddress\"}}`, encodeURIComponent(String(requestParameters['walletAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(WalletPnlDTOFromJSON));\n }\n\n /**\n * CONTROLLER.WALLET.GET_PNL.DESCRIPTION\n * CONTROLLER.WALLET.GET_PNL.SUMMARY\n */\n async getPnl(requestParameters: GetPnlRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<WalletPnlDTO>> {\n const response = await this.getPnlRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.WALLET.GET_PNL_STATS.DESCRIPTION\n * CONTROLLER.WALLET.GET_PNL_STATS.SUMMARY\n */\n async getPnlStatsRaw(requestParameters: GetPnlStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<WalletPnlDTO>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getPnlStats().'\n );\n }\n\n if (requestParameters['walletAddress'] == null) {\n throw new runtime.RequiredError(\n 'walletAddress',\n 'Required parameter \"walletAddress\" was null or undefined when calling getPnlStats().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/wallet/{chain}/{walletAddress}/stats`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"walletAddress\"}}`, encodeURIComponent(String(requestParameters['walletAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(WalletPnlDTOFromJSON));\n }\n\n /**\n * CONTROLLER.WALLET.GET_PNL_STATS.DESCRIPTION\n * CONTROLLER.WALLET.GET_PNL_STATS.SUMMARY\n */\n async getPnlStats(requestParameters: GetPnlStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<WalletPnlDTO>> {\n const response = await this.getPnlStatsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n BooleanResultDTO,\n ChainSymbol,\n} from '../models/index';\nimport {\n BooleanResultDTOFromJSON,\n BooleanResultDTOToJSON,\n ChainSymbolFromJSON,\n ChainSymbolToJSON,\n} from '../models/index';\n\nexport interface WatchlistAddRequest {\n chain: ChainSymbol;\n walletAddress: string;\n}\n\n/**\n * \n */\nexport class WatchlistApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.WATCHLIST.ADD.DESCRIPTION\n * CONTROLLER.WATCHLIST.ADD.SUMMARY\n */\n async watchlistAddRaw(requestParameters: WatchlistAddRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<BooleanResultDTO>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling watchlistAdd().'\n );\n }\n\n if (requestParameters['walletAddress'] == null) {\n throw new runtime.RequiredError(\n 'walletAddress',\n 'Required parameter \"walletAddress\" was null or undefined when calling watchlistAdd().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/watchlist/{chain}/{walletAddress}`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"walletAddress\"}}`, encodeURIComponent(String(requestParameters['walletAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => BooleanResultDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.WATCHLIST.ADD.DESCRIPTION\n * CONTROLLER.WATCHLIST.ADD.SUMMARY\n */\n async watchlistAdd(requestParameters: WatchlistAddRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<BooleanResultDTO> {\n const response = await this.watchlistAddRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","import { StreamApi } from \"./stream\";\nimport {\n DexApi,\n Configuration,\n TransactionApi,\n DefiSolanaMoonshotApi,\n DefiSolanaPumpfunApi,\n DexPoolApi,\n TokenApi,\n RankingApi,\n TradeApi,\n WalletApi,\n RedPacketApi,\n IpfsApi,\n WatchlistApi,\n BlockchainApi,\n JobsApi,\n 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\nexport const LIB_VERSION = \"0.1.5\";\n\nclass UserAgentMiddleware implements Middleware {\n public async pre(context: RequestContext): Promise<void> {\n if (!context.init.headers) {\n context.init.headers = {};\n }\n\n if (context.init.headers instanceof Headers) {\n context.init.headers.set(\"User-Agent\", `dex/${LIB_VERSION}/javascript`);\n } else {\n (context.init.headers as any)[\n \"User-Agent\"\n ] = `dex/${LIB_VERSION}/javascript`;\n }\n }\n\n public async post(context: ResponseContext): Promise<void> {}\n}\n\nexport class DexClient {\n public readonly requestCtx: DexRequestContext;\n public readonly _configuration: Configuration;\n public readonly dex: DexApi;\n public readonly dexpool: DexPoolApi;\n public readonly token: TokenApi;\n public readonly wallet: WalletApi;\n public readonly trade: TradeApi;\n public readonly ranking: RankingApi;\n public readonly transaction: TransactionApi;\n public readonly moonshot: DefiSolanaMoonshotApi;\n public readonly pumpfun: DefiSolanaPumpfunApi;\n public readonly stream: StreamApi;\n public readonly redPacket: RedPacketApi;\n public readonly ipfs: IpfsApi;\n public readonly blockchain: BlockchainApi;\n public readonly watchlist: WatchlistApi;\n public readonly jobs: JobsApi;\n public 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 const tokenProvider =\n typeof accessToken === \"string\"\n ? {\n getToken: () => accessToken,\n }\n : accessToken;\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.stream.connect();\n }\n\n async waitForJob<T>(jobId: string, timeout = 60000): Promise<T> {\n const accessToken =\n typeof this.requestCtx.accessToken === \"string\"\n ? this.requestCtx.accessToken\n : await this.requestCtx.accessToken.getToken();\n\n return new Promise((resolve, reject) => {\n const sse = new EventSourcePolyfill(\n `${this.requestCtx.baseUrl}/jobs/${jobId}/streaming`,\n {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n }\n );\n\n const timeoutId = setTimeout(() => {\n sse.close();\n reject(new Error(`Job ${jobId} timed out after ${timeout}ms`));\n }, timeout);\n\n sse.onmessage = (event: any) => {\n try {\n console.log(\"event.data: \", event.data);\n const data = JSON.parse(event.data);\n\n if (data.status === \"error\") {\n sse.close();\n reject(new Error(`Error: ${data.message}`));\n } else if (data.status === \"completed\") {\n clearTimeout(timeoutId);\n sse.close();\n resolve(data as T);\n }\n } catch (e) {\n clearTimeout(timeoutId);\n sse.close();\n reject(new Error(\"Error parsing event data\"));\n }\n };\n\n sse.onopen = () => {\n console.log(\"SSE connection opened\");\n };\n\n sse.onerror = (error: any) => {\n if (error.message?.includes(\"No activity within\")) {\n console.log(\"SSE reconnecting due to inactivity...\");\n return;\n }\n\n clearTimeout(timeoutId);\n\n sse.close();\n reject(new Error(`Error in SSE connection: ${error}`));\n };\n });\n }\n}\n\nexport interface PostOptions {\n idempotencyKey?: string;\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/stream/stream.ts","../src/stream/stream.fields.ts","../src/openapi/runtime.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/ClaimRedPacketInput.ts","../src/openapi/models/CreateRedPacketInput.ts","../src/openapi/models/CreateRedPacketReply.ts","../src/openapi/models/CreateTokenInput.ts","../src/openapi/models/CreateTokenReply.ts","../src/openapi/models/DexDTO.ts","../src/openapi/models/DexPage.ts","../src/openapi/models/DexPoolDTO.ts","../src/openapi/models/EstimateGasLimitInput.ts","../src/openapi/models/EstimateGasLimitResponse.ts","../src/openapi/models/GainersAndLosersDTO.ts","../src/openapi/models/GainersAndLosersPage.ts","../src/openapi/models/GasPriceResponse.ts","../src/openapi/models/JobDTO.ts","../src/openapi/models/JobStreamingDTO.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/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/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/TokenMarketData.ts","../src/openapi/models/TokenExtraDTO.ts","../src/openapi/models/TokenCreatorsDTO.ts","../src/openapi/models/TokenStat.ts","../src/openapi/models/TokenSocialMediasDTO.ts","../src/openapi/models/Token.ts","../src/openapi/models/TokenCreationDTO.ts","../src/openapi/models/TokenCreationPage.ts","../src/openapi/models/TokenHolder.ts","../src/openapi/models/TokenHolderPage.ts","../src/openapi/models/TokenListPage.ts","../src/openapi/models/TokenMetadata.ts","../src/openapi/models/TokenPage.ts","../src/openapi/models/TokenPriceDTO.ts","../src/openapi/models/TokenPricePage.ts","../src/openapi/models/TopTradersDTO.ts","../src/openapi/models/TopTradersPage.ts","../src/openapi/models/TradeDetailDTO.ts","../src/openapi/models/TradePage.ts","../src/openapi/models/WalletBalanceDetailDTO.ts","../src/openapi/models/WalletBalancesDTO.ts","../src/openapi/models/WalletPnlDTO.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/IpfsApi.ts","../src/openapi/apis/JobsApi.ts","../src/openapi/apis/RankingApi.ts","../src/openapi/apis/RedPacketApi.ts","../src/openapi/apis/TokenApi.ts","../src/openapi/apis/TradeApi.ts","../src/openapi/apis/TransactionApi.ts","../src/openapi/apis/WalletApi.ts","../src/openapi/apis/WatchlistApi.ts","../src/index.ts"],"sourcesContent":["import { Centrifuge, ConnectionTokenContext } from \"@chainstream-io/centrifuge\";\nimport { DexRequestContext } from \"..\";\nimport { Resolution } from \"../openapi\";\nimport {\n DexPoolBalance,\n NewToken,\n TokenMetadata,\n TokenHolder,\n TokenStat,\n TokenLiquidity,\n WalletBalance,\n TokenSupply,\n WalletPnl,\n ChannelType,\n TokenCandle,\n TradeActivity,\n WalletTokenPnl,\n RankingType,\n Dex,\n RankingTokenList,\n TokenBondingCurve,\n} from \"./stream.model\";\nimport { replaceFilterFields } from \"./stream.fields\";\n\nexport interface Unsubscrible {\n unsubscribe(): void;\n}\n\nexport class StreamApi {\n private realtimeClient: Centrifuge;\n private listenersMap: Map<string, Set<(data: any) => void>>;\n\n constructor(context: DexRequestContext) {\n const realtimeEndpoint = context.streamUrl;\n this.realtimeClient = new Centrifuge(realtimeEndpoint, {\n getToken: async (_ctx: ConnectionTokenContext) => {\n return typeof context.accessToken === \"string\"\n ? context.accessToken\n : await context.accessToken.getToken();\n },\n });\n\n this.realtimeClient\n .on(\"connected\", () => {\n console.log(\"[streaming] connected\");\n })\n .on(\"disconnected\", (err) => {\n console.warn(\"[streaming] disconnected\", err);\n })\n .on(\"error\", (err) => {\n console.error(\"[streaming] error: \", err);\n });\n\n this.listenersMap = new Map();\n }\n\n connect() {\n this.realtimeClient.connect();\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 this.realtimeClient.startBatching();\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 this.realtimeClient.stopBatching();\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 let sub = this.realtimeClient.getSubscription(channel);\n let listeners = this.listenersMap.get(channel);\n\n if (!sub) {\n listeners = new Set();\n this.listenersMap.set(channel, listeners);\n\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 // console.log('[xrealtime] publication, ctx.data: ', ctx.data);\n listeners?.forEach((it) => it(ctx.data));\n })\n .subscribe();\n }\n\n listeners?.add(fn);\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\n const sub = this.realtimeClient.getSubscription(channel);\n if (sub) {\n sub.unsubscribe();\n this.realtimeClient.removeSubscription(sub);\n }\n\n this.listenersMap.delete(channel);\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 top100Amount: this.formatScientificNotation(data.t100a),\n top10Amount: this.formatScientificNotation(data.t10a),\n top100Holders: data.t100h,\n top10Holders: data.t10h,\n top100Ratio: this.formatScientificNotation(data.t100r),\n top10Ratio: this.formatScientificNotation(data.t10r),\n creatorsHolders: data.ch,\n creatorsAmount: this.formatScientificNotation(data.ca),\n creatorsRatio: this.formatScientificNotation(data.cr),\n timestamp: data.ts,\n }), filter, \"subscribeTokenHolders\");\n }\n\n subscribeNewToken({\n chain,\n callback,\n filter,\n }: {\n chain: string;\n callback: (data: NewToken) => void;\n filter?: string;\n }): Unsubscrible {\n const channel = `dex-new-token:${chain}`;\n return this.subscribe(channel, (data: any) => {\n const result: any = {\n tokenAddress: data.a,\n name: data.n,\n symbol: data.s,\n createdAtMs: data.cts,\n };\n \n if (data.dec) {\n result.decimals = data.dec;\n }\n \n if (data.lf) {\n result.launchFrom = {};\n if (data.lf.pa) { result.launchFrom.programAddress = data.lf.pa }\n if (data.lf.pf) { result.launchFrom.protocolFamily = data.lf.pf }\n if (data.lf.pn) { result.launchFrom.protocolName = data.lf.pn }\n }\n \n callback(result);\n }, filter, \"subscribeNewToken\");\n }\n\n subscribeNewTokensMetadata({\n chain,\n callback,\n }: {\n chain: string;\n callback: (data: TokenMetadata[]) => void;\n }): Unsubscrible {\n const channel = `dex-new-tokens-metadata:${chain}`;\n return this.subscribe(channel, (data: any[]) =>\n callback(\n data.map(\n (it: any) =>\n ({\n tokenAddress: it.a,\n name: it.n,\n symbol: it.s,\n imageUrl: it.iu,\n description: it.de,\n socialMedia: (() => {\n const socialMedia: any = {};\n if (it.sm?.tw) { socialMedia.twitter = it.sm.tw }\n if (it.sm?.tg) { socialMedia.telegram = it.sm.tg }\n if (it.sm?.w) { socialMedia.website = it.sm.w }\n if (it.sm?.tt) { socialMedia.tiktok = it.sm.tt }\n if (it.sm?.dc) { socialMedia.discord = it.sm.dc }\n if (it.sm?.fb) { socialMedia.facebook = it.sm.fb }\n if (it.sm?.gh) { socialMedia.github = it.sm.gh }\n if (it.sm?.ig) { socialMedia.instagram = it.sm.ig }\n if (it.sm?.li) { socialMedia.linkedin = it.sm.li }\n if (it.sm?.md) { socialMedia.medium = it.sm.md }\n if (it.sm?.rd) { socialMedia.reddit = it.sm.rd }\n if (it.sm?.yt) { socialMedia.youtube = it.sm.yt }\n if (it.sm?.bb) { socialMedia.bitbucket = it.sm.bb }\n return socialMedia;\n })(),\n createdAtMs: it.cts,\n })\n )\n )\n );\n }\n\n // subscribeNewTokens({\n // chain,\n // callback,\n // }: {\n // chain: string;\n // callback: (data: NewToken[]) => void;\n // }): Unsubscrible {\n // const channel = `dex-new-tokens:${chain}`;\n // return this.subscribe(channel, (data: any[]) =>\n // callback(\n // data.map(\n // (it: any) =>\n // ({\n // tokenAddress: it.a,\n // name: it.n,\n // symbol: it.s,\n // description: it.de,\n // createdAtMs: it.cts,\n // }) as NewToken\n // )\n // )\n // );\n // }\n\n subscribeTokenSupply({\n chain,\n tokenAddress,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n callback: (data: TokenSupply) => void;\n filter?: string;\n }): Unsubscrible {\n const channel = `dex-token-supply:${chain}_${tokenAddress}`;\n return this.subscribe(channel, (data: any) =>\n callback({\n tokenAddress: data.a,\n supply: data.s,\n marketCapInUsd: data.mc,\n timestamp: data.ts,\n }), filter, \"subscribeTokenSupply\");\n }\n\n subscribeTokenLiquidity({\n chain,\n tokenAddress,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n callback: (data: TokenLiquidity) => void;\n filter?: string;\n }): Unsubscrible {\n const channel = `dex-token-general-stat-num:${chain}_${tokenAddress}`;\n return this.subscribe(channel, (data: any) =>\n callback({\n tokenAddress: data.a,\n metricType: data.t,\n value: data.v,\n timestamp: data.ts,\n }), filter, \"subscribeTokenLiquidity\");\n }\n\n subscribeRankingTokensLiquidity({\n chain,\n channelType,\n callback,\n }: {\n chain: string;\n channelType: ChannelType;\n callback: (data: TokenLiquidity[]) => void;\n }): Unsubscrible {\n const channel = `dex-ranking-token-general_stat_num-list:${chain}_${channelType}`;\n return this.subscribe(channel, (data: any[]) =>\n callback(\n data?.map(\n (it: any) =>\n ({\n tokenAddress: it.a,\n metricType: it.t,\n value: it.v,\n timestamp: it.ts,\n }) as TokenLiquidity\n )\n )\n );\n }\n\n subscribeRankingTokensList({\n chain,\n ranking_type,\n dex,\n callback,\n }: {\n chain: string;\n ranking_type: RankingType;\n dex?: Dex;\n callback: (data: RankingTokenList[]) => void;\n }): Unsubscrible {\n const channel = dex\n ? `dex-ranking-list:${chain}_${ranking_type}_${dex}`\n : `dex-ranking-list:${chain}_${ranking_type}`;\n return this.subscribe(channel, (data: any[]) =>\n callback(\n data?.map((item: any) => {\n const result: RankingTokenList = {} as RankingTokenList;\n\n // TokenMetadata (t)\n if (item.t) {\n result.metadata = {\n tokenAddress: item.t.a,\n };\n if (item.t.n) { result.metadata.name = item.t.n }\n if (item.t.s) { result.metadata.symbol = item.t.s }\n if (item.t.iu) { result.metadata.imageUrl = item.t.iu }\n if (item.t.de) { result.metadata.description = item.t.de }\n if (item.t.d) { result.metadata.decimals = item.t.dec }\n if (item.t.cts) { result.metadata.createdAtMs = item.t.cts }\n if (item.t.lf) {\n result.metadata.launchFrom = {};\n if (item.t.lf.pa) { result.metadata.launchFrom.programAddress = item.t.lf.pa }\n if (item.t.lf.pf) { result.metadata.launchFrom.protocolFamily = item.t.lf.pf }\n if (item.t.lf.pn) { result.metadata.launchFrom.protocolName = item.t.lf.pn }\n }\n if (item.t.mt) {\n result.metadata.migratedTo = {};\n if (item.t.mt.pa) { result.metadata.migratedTo.programAddress = item.t.mt.pa }\n if (item.t.mt.pf) { result.metadata.migratedTo.protocolFamily = item.t.mt.pf }\n if (item.t.mt.pn) { result.metadata.migratedTo.protocolName = item.t.mt.pn }\n }\n if (item.t.sm) {\n result.metadata.socialMedia = {};\n if (item.t.sm.tw) { result.metadata.socialMedia.twitter = item.t.sm.tw }\n if (item.t.sm.tg) { result.metadata.socialMedia.telegram = item.t.sm.tg }\n if (item.t.sm.w) { result.metadata.socialMedia.website = item.t.sm.w }\n if (item.t.sm.tt) { result.metadata.socialMedia.tiktok = item.t.sm.tt }\n if (item.t.sm.dc) { result.metadata.socialMedia.discord = item.t.sm.dc }\n if (item.t.sm.fb) { result.metadata.socialMedia.facebook = item.t.sm.fb }\n if (item.t.sm.gh) { result.metadata.socialMedia.github = item.t.sm.gh }\n if (item.t.sm.ig) { result.metadata.socialMedia.instagram = item.t.sm.ig }\n if (item.t.sm.li) { result.metadata.socialMedia.linkedin = item.t.sm.li }\n if (item.t.sm.md) { result.metadata.socialMedia.medium = item.t.sm.md }\n if (item.t.sm.rd) { result.metadata.socialMedia.reddit = item.t.sm.rd }\n if (item.t.sm.yt) { result.metadata.socialMedia.youtube = item.t.sm.yt }\n if (item.t.sm.bb) { result.metadata.socialMedia.bitbucket = item.t.sm.bb }\n }\n if (item.t.cts) { result.metadata.createdAtMs = item.t.cts }\n }\n\n // TokenBondingCurve (bc)\n if (item.bc) {\n result.bondingCurve = {};\n if (item.bc.pr) { result.bondingCurve.progressRatio = this.formatScientificNotation(item.bc.pr) }\n }\n\n // TokenHolder (h)\n if (item.h) {\n result.holder = {\n tokenAddress: item.h.a,\n timestamp: item.h.ts || 0,\n };\n if (item.h.h) { result.holder.holders = item.h.h }\n if (item.h.t100a) { result.holder.top100Amount = this.formatScientificNotation(item.h.t100a) }\n if (item.h.t10a) { result.holder.top10Amount = this.formatScientificNotation(item.h.t10a) }\n if (item.h.t100h) { result.holder.top100Holders = item.h.t100h }\n if (item.h.t10h) { result.holder.top10Holders = item.h.t10h }\n if (item.h.t100r) { result.holder.top100Ratio = this.formatScientificNotation(item.h.t100r) }\n if (item.h.t10r) { result.holder.top10Ratio = this.formatScientificNotation(item.h.t10r) }\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 top100Amount: this.formatScientificNotation(it.t100a),\n top10Amount: this.formatScientificNotation(it.t10a),\n top100Holders: it.t100h,\n top10Holders: it.t10h,\n top100Ratio: this.formatScientificNotation(it.t100r),\n top10Ratio: this.formatScientificNotation(it.t10r),\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 \"top100Amount\": \"t100a\",\n \"top10Amount\": \"t10a\",\n \"top100Holders\": \"t100h\",\n \"top10Holders\": \"t10h\",\n \"top100Ratio\": \"t100r\",\n \"top10Ratio\": \"t10r\",\n \"timestamp\": \"ts\",\n },\n\n // New token subscription fields\n \"subscribeNewToken\": {\n \"tokenAddress\": \"a\",\n \"name\": \"n\",\n \"symbol\": \"s\",\n \"createdAtMs\": \"cts\",\n },\n\n // Token supply subscription fields\n \"subscribeTokenSupply\": {\n \"tokenAddress\": \"a\",\n \"supply\": \"s\",\n \"timestamp\": \"ts\",\n },\n\n // Dex pool balance subscription fields\n \"subscribeDexPoolBalance\": {\n \"poolAddress\": \"a\",\n \"tokenAAddress\": \"taa\",\n \"tokenALiquidityInUsd\": \"taliu\",\n \"tokenBAddress\": \"tba\",\n \"tokenBLiquidityInUsd\": \"tbliu\",\n },\n\n // Token liquidity subscription fields\n \"subscribeTokenLiquidity\": {\n \"tokenAddress\": \"a\",\n \"metricType\": \"t\",\n \"value\": \"v\",\n \"timestamp\": \"ts\",\n },\n\n // New token metadata subscription fields\n \"subscribeNewTokensMetadata\": {\n \"tokenAddress\": \"a\",\n \"name\": \"n\",\n \"symbol\": \"s\",\n \"imageUrl\": \"iu\",\n \"description\": \"de\",\n \"socialMedia\": \"sm\",\n \"createdAtMs\": \"cts\",\n },\n\n // Token trades subscription fields\n \"subscribeTokenTrades\": {\n \"tokenAddress\": \"a\",\n \"timestamp\": \"t\",\n \"kind\": \"k\",\n \"buyAmount\": \"ba\",\n \"buyAmountInUsd\": \"baiu\",\n \"buyTokenAddress\": \"btma\",\n \"buyTokenName\": \"btn\",\n \"buyTokenSymbol\": \"bts\",\n \"buyWalletAddress\": \"bwa\",\n \"sellAmount\": \"sa\",\n \"sellAmountInUsd\": \"saiu\",\n \"sellTokenAddress\": \"stma\",\n \"sellTokenName\": \"stn\",\n \"sellTokenSymbol\": \"sts\",\n \"sellWalletAddress\": \"swa\",\n \"txHash\": \"h\",\n },\n\n // Wallet token PnL subscription fields\n \"subscribeWalletPnl\": {\n \"walletAddress\": \"a\",\n \"tokenAddress\": \"ta\",\n \"tokenPriceInUsd\": \"tpiu\",\n \"timestamp\": \"t\",\n \"opentime\": \"ot\",\n \"lasttime\": \"lt\",\n \"closetime\": \"ct\",\n \"buyAmount\": \"ba\",\n \"buyAmountInUsd\": \"baiu\",\n \"buyCount\": \"bs\",\n \"buyCount30d\": \"bs30d\",\n \"buyCount7d\": \"bs7d\",\n \"sellAmount\": \"sa\",\n \"sellAmountInUsd\": \"saiu\",\n \"sellCount\": \"ss\",\n \"sellCount30d\": \"ss30d\",\n \"sellCount7d\": \"ss7d\",\n \"heldDurationTimestamp\": \"hdts\",\n \"averageBuyPriceInUsd\": \"abpiu\",\n \"averageSellPriceInUsd\": \"aspiu\",\n \"unrealizedProfitInUsd\": \"upiu\",\n \"unrealizedProfitRatio\": \"upr\",\n \"realizedProfitInUsd\": \"rpiu\",\n \"realizedProfitRatio\": \"rpr\",\n \"totalRealizedProfitInUsd\": \"trpiu\",\n \"totalRealizedProfitRatio\": \"trr\",\n },\n} as const;\n\n/**\n * Get field mappings for a specific subscription method\n * @param methodName - The name of the subscription method\n * @returns Field mapping object for the method, or empty object if not found\n */\nexport function getFieldMappings(methodName: string): FieldMapping {\n return CEL_FIELD_MAPPINGS[methodName] || {};\n}\n\n/**\n * Replace long field names with short field names in a filter expression\n * Automatically adds meta. prefix if not present\n * @param filter - Original filter expression\n * @param methodName - The name of the subscription method\n * @returns Filter expression with short field names and meta. prefix\n */\nexport function replaceFilterFields(filter: string, methodName: string): string {\n if (!filter) {return filter}\n \n const fieldMappings = getFieldMappings(methodName);\n let result = filter;\n \n // Replace all long field names with short field names\n for (const [longField, shortField] of Object.entries(fieldMappings)) {\n // Handle both cases: with and without meta. prefix\n const patterns = [\n // Pattern 1: fieldName (without meta. prefix)\n new RegExp(`\\\\b${longField}\\\\b`, \"g\"),\n // Pattern 2: meta.fieldName (with meta. prefix)\n new RegExp(`\\\\bmeta\\\\.${longField}\\\\b`, \"g\"),\n ];\n \n patterns.forEach((pattern) => {\n result = result.replace(pattern, `meta.${shortField}`);\n });\n }\n \n return result;\n}\n\n/**\n * Type-safe field mapping for specific subscription methods\n */\nexport type SubscriptionMethod = keyof typeof CEL_FIELD_MAPPINGS;\n\n/**\n * Get available field names for a specific subscription method\n * @param methodName - The name of the subscription method\n * @returns Array of available field names\n */\nexport function getAvailableFields(methodName: string): string[] {\n const mappings = getFieldMappings(methodName);\n return Object.keys(mappings);\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nexport const BASE_PATH = \"http://localhost\".replace(/\\/+$/, \"\");\n\nexport interface ConfigurationParameters {\n basePath?: string; // override base path\n fetchApi?: FetchAPI; // override for fetch implementation\n middleware?: Middleware[]; // middleware to apply before/after fetch requests\n queryParamsStringify?: (params: HTTPQuery) => string; // stringify function for query strings\n username?: string; // parameter for basic security\n password?: string; // parameter for basic security\n apiKey?: string | Promise<string> | ((name: string) => string | Promise<string>); // parameter for apiKey security\n accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string | Promise<string>); // parameter for oauth2 security\n headers?: HTTPHeaders; //header params we want to use on every request\n credentials?: RequestCredentials; //value for the credentials param we want to use on each request\n}\n\nexport class Configuration {\n constructor(private configuration: ConfigurationParameters = {}) {}\n\n set config(configuration: Configuration) {\n this.configuration = configuration;\n }\n\n get basePath(): string {\n return this.configuration.basePath != null ? this.configuration.basePath : BASE_PATH;\n }\n\n get fetchApi(): FetchAPI | undefined {\n return this.configuration.fetchApi;\n }\n\n get middleware(): Middleware[] {\n return this.configuration.middleware || [];\n }\n\n get queryParamsStringify(): (params: HTTPQuery) => string {\n return this.configuration.queryParamsStringify || querystring;\n }\n\n get username(): string | undefined {\n return this.configuration.username;\n }\n\n get password(): string | undefined {\n return this.configuration.password;\n }\n\n get apiKey(): ((name: string) => string | Promise<string>) | undefined {\n const apiKey = this.configuration.apiKey;\n if (apiKey) {\n return typeof apiKey === 'function' ? apiKey : () => apiKey;\n }\n return undefined;\n }\n\n get accessToken(): ((name?: string, scopes?: string[]) => string | Promise<string>) | undefined {\n const accessToken = this.configuration.accessToken;\n if (accessToken) {\n return typeof accessToken === 'function' ? accessToken : async () => accessToken;\n }\n return undefined;\n }\n\n get headers(): HTTPHeaders | undefined {\n return this.configuration.headers;\n }\n\n get credentials(): RequestCredentials | undefined {\n return this.configuration.credentials;\n }\n}\n\nexport const DefaultConfig = new Configuration();\n\n/**\n * This is the base class for all generated API classes.\n */\nexport class BaseAPI {\n\n private static readonly jsonRegex = new RegExp('^(:?application\\/json|[^;/ \\t]+\\/[^;/ \\t]+[+]json)[ \\t]*(:?;.*)?$', 'i');\n private middleware: Middleware[];\n\n constructor(protected configuration = DefaultConfig) {\n this.middleware = configuration.middleware;\n }\n\n withMiddleware<T extends BaseAPI>(this: T, ...middlewares: Middleware[]) {\n const next = this.clone<T>();\n next.middleware = next.middleware.concat(...middlewares);\n return next;\n }\n\n withPreMiddleware<T extends BaseAPI>(this: T, ...preMiddlewares: Array<Middleware['pre']>) {\n const middlewares = preMiddlewares.map((pre) => ({ pre }));\n return this.withMiddleware<T>(...middlewares);\n }\n\n withPostMiddleware<T extends BaseAPI>(this: T, ...postMiddlewares: Array<Middleware['post']>) {\n const middlewares = postMiddlewares.map((post) => ({ post }));\n return this.withMiddleware<T>(...middlewares);\n }\n\n /**\n * Check if the given MIME is a JSON MIME.\n * JSON MIME examples:\n * application/json\n * application/json; charset=UTF8\n * APPLICATION/JSON\n * application/vnd.company+json\n * @param mime - MIME (Multipurpose Internet Mail Extensions)\n * @return True if the given MIME is JSON, false otherwise.\n */\n protected isJsonMime(mime: string | null | undefined): boolean {\n if (!mime) {\n return false;\n }\n return BaseAPI.jsonRegex.test(mime);\n }\n\n protected async request(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction): Promise<Response> {\n const { url, init } = await this.createFetchParams(context, initOverrides);\n const response = await this.fetchApi(url, init);\n if (response && (response.status >= 200 && response.status < 300)) {\n return response;\n }\n throw new ResponseError(response, 'Response returned an error code');\n }\n\n private async createFetchParams(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction) {\n let url = this.configuration.basePath + context.path;\n if (context.query !== undefined && Object.keys(context.query).length !== 0) {\n // only add the querystring to the URL if there are query parameters.\n // this is done to avoid urls ending with a \"?\" character which buggy webservers\n // do not handle correctly sometimes.\n url += '?' + this.configuration.queryParamsStringify(context.query);\n }\n\n const headers = Object.assign({}, this.configuration.headers, context.headers);\n Object.keys(headers).forEach(key => headers[key] === undefined ? delete headers[key] : {});\n\n const initOverrideFn =\n typeof initOverrides === \"function\"\n ? initOverrides\n : async () => initOverrides;\n\n const initParams = {\n method: context.method,\n headers,\n body: context.body,\n credentials: this.configuration.credentials,\n };\n\n const overriddenInit: RequestInit = {\n ...initParams,\n ...(await initOverrideFn({\n init: initParams,\n context,\n }))\n };\n\n let body: any;\n if (isFormData(overriddenInit.body)\n || (overriddenInit.body instanceof URLSearchParams)\n || isBlob(overriddenInit.body)) {\n body = overriddenInit.body;\n } else if (this.isJsonMime(headers['Content-Type'])) {\n body = JSON.stringify(overriddenInit.body);\n } else {\n body = overriddenInit.body;\n }\n\n const init: RequestInit = {\n ...overriddenInit,\n body\n };\n\n return { url, init };\n }\n\n private fetchApi = async (url: string, init: RequestInit) => {\n let fetchParams = { url, init };\n for (const middleware of this.middleware) {\n if (middleware.pre) {\n fetchParams = await middleware.pre({\n fetch: this.fetchApi,\n ...fetchParams,\n }) || fetchParams;\n }\n }\n let response: Response | undefined = undefined;\n try {\n response = await (this.configuration.fetchApi || fetch)(fetchParams.url, fetchParams.init);\n } catch (e) {\n for (const middleware of this.middleware) {\n if (middleware.onError) {\n response = await middleware.onError({\n fetch: this.fetchApi,\n url: fetchParams.url,\n init: fetchParams.init,\n error: e,\n response: response ? response.clone() : undefined,\n }) || response;\n }\n }\n if (response === undefined) {\n if (e instanceof Error) {\n throw new FetchError(e, 'The request failed and the interceptors did not return an alternative response');\n } else {\n throw e;\n }\n }\n }\n for (const middleware of this.middleware) {\n if (middleware.post) {\n response = await middleware.post({\n fetch: this.fetchApi,\n url: fetchParams.url,\n init: fetchParams.init,\n response: response.clone(),\n }) || response;\n }\n }\n return response;\n }\n\n /**\n * Create a shallow clone of `this` by constructing a new instance\n * and then shallow cloning data members.\n */\n private clone<T extends BaseAPI>(this: T): T {\n const constructor = this.constructor as any;\n const next = new constructor(this.configuration);\n next.middleware = this.middleware.slice();\n return next;\n }\n};\n\nfunction isBlob(value: any): value is Blob {\n return typeof Blob !== 'undefined' && value instanceof Blob;\n}\n\nfunction isFormData(value: any): value is FormData {\n return typeof FormData !== \"undefined\" && value instanceof FormData;\n}\n\nexport class ResponseError extends Error {\n override name: \"ResponseError\" = \"ResponseError\";\n constructor(public response: Response, msg?: string) {\n super(msg);\n }\n}\n\nexport class FetchError extends Error {\n override name: \"FetchError\" = \"FetchError\";\n constructor(public cause: Error, msg?: string) {\n super(msg);\n }\n}\n\nexport class RequiredError extends Error {\n override name: \"RequiredError\" = \"RequiredError\";\n constructor(public field: string, msg?: string) {\n super(msg);\n }\n}\n\nexport const COLLECTION_FORMATS = {\n csv: \",\",\n ssv: \" \",\n tsv: \"\\t\",\n pipes: \"|\",\n};\n\nexport type FetchAPI = WindowOrWorkerGlobalScope['fetch'];\n\nexport type Json = any;\nexport type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD';\nexport type HTTPHeaders = { [key: string]: string };\nexport type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery };\nexport type HTTPBody = Json | FormData | URLSearchParams;\nexport type HTTPRequestInit = { headers?: HTTPHeaders; method: HTTPMethod; credentials?: RequestCredentials; body?: HTTPBody };\nexport type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';\n\nexport type InitOverrideFunction = (requestContext: { init: HTTPRequestInit, context: RequestOpts }) => Promise<RequestInit>\n\nexport interface FetchParams {\n url: string;\n init: RequestInit;\n}\n\nexport interface RequestOpts {\n path: string;\n method: HTTPMethod;\n headers: HTTPHeaders;\n query?: HTTPQuery;\n body?: HTTPBody;\n}\n\nexport function querystring(params: HTTPQuery, prefix: string = ''): string {\n return Object.keys(params)\n .map(key => querystringSingleKey(key, params[key], prefix))\n .filter(part => part.length > 0)\n .join('&');\n}\n\nfunction querystringSingleKey(key: string, value: string | number | null | undefined | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery, keyPrefix: string = ''): string {\n const fullKey = keyPrefix + (keyPrefix.length ? `[${key}]` : key);\n if (value instanceof Array) {\n const multiValue = value.map(singleValue => encodeURIComponent(String(singleValue)))\n .join(`&${encodeURIComponent(fullKey)}=`);\n return `${encodeURIComponent(fullKey)}=${multiValue}`;\n }\n if (value instanceof Set) {\n const valueAsArray = Array.from(value);\n return querystringSingleKey(key, valueAsArray, keyPrefix);\n }\n if (value instanceof Date) {\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`;\n }\n if (value instanceof Object) {\n return querystring(value as HTTPQuery, fullKey);\n }\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`;\n}\n\nexport function exists(json: any, key: string) {\n const value = json[key];\n return value !== null && value !== undefined;\n}\n\nexport function mapValues(data: any, fn: (item: any) => any) {\n const result: { [key: string]: any } = {};\n for (const key of Object.keys(data)) {\n result[key] = fn(data[key]);\n }\n return result;\n}\n\nexport function canConsumeForm(consumes: Consume[]): boolean {\n for (const consume of consumes) {\n if ('multipart/form-data' === consume.contentType) {\n return true;\n }\n }\n return false;\n}\n\nexport interface Consume {\n contentType: string;\n}\n\nexport interface RequestContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n}\n\nexport interface ResponseContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n response: Response;\n}\n\nexport interface ErrorContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n error: unknown;\n response?: Response;\n}\n\nexport interface Middleware {\n pre?(context: RequestContext): Promise<FetchParams | void>;\n post?(context: ResponseContext): Promise<Response | void>;\n onError?(context: ErrorContext): Promise<Response | void>;\n}\n\nexport interface ApiResponse<T> {\n raw: Response;\n value(): Promise<T>;\n}\n\nexport interface ResponseTransformer<T> {\n (json: any): T;\n}\n\nexport class JSONApiResponse<T> {\n constructor(public raw: Response, private transformer: ResponseTransformer<T> = (jsonValue: any) => jsonValue) {}\n\n async value(): Promise<T> {\n return this.transformer(await this.raw.json());\n }\n}\n\nexport class VoidApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<void> {\n return undefined;\n }\n}\n\nexport class BlobApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<Blob> {\n return await this.raw.blob();\n };\n}\n\nexport class TextApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<string> {\n return await this.raw.text();\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface BlockchainDTO\n */\nexport interface BlockchainDTO {\n /**\n * DTO.BLOCKCHAIN.SYMBOL\n * @type {string}\n * @memberof BlockchainDTO\n */\n symbol: string;\n /**\n * DTO.BLOCKCHAIN.NAME\n * @type {string}\n * @memberof BlockchainDTO\n */\n name: string;\n /**\n * DTO.BLOCKCHAIN.EXPLORER_URL\n * @type {string}\n * @memberof BlockchainDTO\n */\n explorerUrl: string;\n /**\n * DTO.BLOCKCHAIN.CHAIN_ID\n * @type {number}\n * @memberof BlockchainDTO\n */\n chainId: number;\n}\n\n/**\n * Check if a given object implements the BlockchainDTO interface.\n */\nexport function instanceOfBlockchainDTO(value: object): value is BlockchainDTO {\n if (!('symbol' in value) || value['symbol'] === undefined) return false;\n if (!('name' in value) || value['name'] === undefined) return false;\n if (!('explorerUrl' in value) || value['explorerUrl'] === undefined) return false;\n if (!('chainId' in value) || value['chainId'] === undefined) return false;\n return true;\n}\n\nexport function BlockchainDTOFromJSON(json: any): BlockchainDTO {\n return BlockchainDTOFromJSONTyped(json, false);\n}\n\nexport function BlockchainDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): BlockchainDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'symbol': json['symbol'],\n 'name': json['name'],\n 'explorerUrl': json['explorerUrl'],\n 'chainId': json['chainId'],\n };\n}\n\nexport function BlockchainDTOToJSON(json: any): BlockchainDTO {\n return BlockchainDTOToJSONTyped(json, false);\n}\n\nexport function BlockchainDTOToJSONTyped(value?: BlockchainDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'symbol': value['symbol'],\n 'name': value['name'],\n 'explorerUrl': value['explorerUrl'],\n 'chainId': value['chainId'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface BlockchainLatestBlockDTO\n */\nexport interface BlockchainLatestBlockDTO {\n /**\n * DTO.BLOCKCHAIN.LATEST_BLOCK.BLOCKHASH\n * @type {string}\n * @memberof BlockchainLatestBlockDTO\n */\n blockhash: string;\n /**\n * DTO.BLOCKCHAIN.LATEST_BLOCK.LAST_VALID_BLOCK_HEIGHT\n * @type {number}\n * @memberof BlockchainLatestBlockDTO\n */\n lastValidBlockHeight: number;\n}\n\n/**\n * Check if a given object implements the BlockchainLatestBlockDTO interface.\n */\nexport function instanceOfBlockchainLatestBlockDTO(value: object): value is BlockchainLatestBlockDTO {\n if (!('blockhash' in value) || value['blockhash'] === undefined) return false;\n if (!('lastValidBlockHeight' in value) || value['lastValidBlockHeight'] === undefined) return false;\n return true;\n}\n\nexport function BlockchainLatestBlockDTOFromJSON(json: any): BlockchainLatestBlockDTO {\n return BlockchainLatestBlockDTOFromJSONTyped(json, false);\n}\n\nexport function BlockchainLatestBlockDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): BlockchainLatestBlockDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'blockhash': json['blockhash'],\n 'lastValidBlockHeight': json['lastValidBlockHeight'],\n };\n}\n\nexport function BlockchainLatestBlockDTOToJSON(json: any): BlockchainLatestBlockDTO {\n return BlockchainLatestBlockDTOToJSONTyped(json, false);\n}\n\nexport function BlockchainLatestBlockDTOToJSONTyped(value?: BlockchainLatestBlockDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'blockhash': value['blockhash'],\n 'lastValidBlockHeight': value['lastValidBlockHeight'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface BooleanResultDTO\n */\nexport interface BooleanResultDTO {\n /**\n * DTO.BOOLEAN_RESULT.SUCCESS\n * @type {boolean}\n * @memberof BooleanResultDTO\n */\n success: boolean;\n}\n\n/**\n * Check if a given object implements the BooleanResultDTO interface.\n */\nexport function instanceOfBooleanResultDTO(value: object): value is BooleanResultDTO {\n if (!('success' in value) || value['success'] === undefined) return false;\n return true;\n}\n\nexport function BooleanResultDTOFromJSON(json: any): BooleanResultDTO {\n return BooleanResultDTOFromJSONTyped(json, false);\n}\n\nexport function BooleanResultDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): BooleanResultDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'success': json['success'],\n };\n}\n\nexport function BooleanResultDTOToJSON(json: any): BooleanResultDTO {\n return BooleanResultDTOToJSONTyped(json, false);\n}\n\nexport function BooleanResultDTOToJSONTyped(value?: BooleanResultDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'success': value['success'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface CalculatePnlInput\n */\nexport interface CalculatePnlInput {\n /**\n * DTO.WALLET.CALCULATE_PNL.INPUT.TOKEN_ADDRESSES\n * @type {Array<string>}\n * @memberof CalculatePnlInput\n */\n tokenAddresses?: Array<string>;\n}\n\n/**\n * Check if a given object implements the CalculatePnlInput interface.\n */\nexport function instanceOfCalculatePnlInput(value: object): value is CalculatePnlInput {\n return true;\n}\n\nexport function CalculatePnlInputFromJSON(json: any): CalculatePnlInput {\n return CalculatePnlInputFromJSONTyped(json, false);\n}\n\nexport function CalculatePnlInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): CalculatePnlInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'tokenAddresses': json['tokenAddresses'] == null ? undefined : json['tokenAddresses'],\n };\n}\n\nexport function CalculatePnlInputToJSON(json: any): CalculatePnlInput {\n return CalculatePnlInputToJSONTyped(json, false);\n}\n\nexport function CalculatePnlInputToJSONTyped(value?: CalculatePnlInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'tokenAddresses': value['tokenAddresses'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const Resolution = {\n _1s: '1s',\n _15s: '15s',\n _30s: '30s',\n _1m: '1m',\n _5m: '5m',\n _15m: '15m',\n _1h: '1h',\n _4h: '4h',\n _12h: '12h',\n _1d: '1d'\n} as const;\nexport type Resolution = typeof Resolution[keyof typeof Resolution];\n\n\nexport function instanceOfResolution(value: any): boolean {\n for (const key in Resolution) {\n if (Object.prototype.hasOwnProperty.call(Resolution, key)) {\n if (Resolution[key as keyof typeof Resolution] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function ResolutionFromJSON(json: any): Resolution {\n return ResolutionFromJSONTyped(json, false);\n}\n\nexport function ResolutionFromJSONTyped(json: any, ignoreDiscriminator: boolean): Resolution {\n return json as Resolution;\n}\n\nexport function ResolutionToJSON(value?: Resolution | null): any {\n return value as any;\n}\n\nexport function ResolutionToJSONTyped(value: any, ignoreDiscriminator: boolean): Resolution {\n return value as Resolution;\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { Resolution } from './Resolution';\nimport {\n ResolutionFromJSON,\n ResolutionFromJSONTyped,\n ResolutionToJSON,\n ResolutionToJSONTyped,\n} from './Resolution';\n\n/**\n * \n * @export\n * @interface Candle\n */\nexport interface Candle {\n /**\n * DTO.CANDLE.OPEN\n * @type {string}\n * @memberof Candle\n */\n open: string;\n /**\n * DTO.CANDLE.CLOSE\n * @type {string}\n * @memberof Candle\n */\n close: string;\n /**\n * DTO.CANDLE.HIGH\n * @type {string}\n * @memberof Candle\n */\n high: string;\n /**\n * DTO.CANDLE.LOW\n * @type {string}\n * @memberof Candle\n */\n low: string;\n /**\n * DTO.CANDLE.VOLUME\n * @type {string}\n * @memberof Candle\n */\n volume: string;\n /**\n * DTO.CANDLE.RESOLUTION\n * @type {Resolution}\n * @memberof Candle\n */\n resolution: Resolution;\n /**\n * DTO.CANDLE.TIME\n * @type {number}\n * @memberof Candle\n */\n time: number;\n}\n\n\n\n/**\n * Check if a given object implements the Candle interface.\n */\nexport function instanceOfCandle(value: object): value is Candle {\n if (!('open' in value) || value['open'] === undefined) return false;\n if (!('close' in value) || value['close'] === undefined) return false;\n if (!('high' in value) || value['high'] === undefined) return false;\n if (!('low' in value) || value['low'] === undefined) return false;\n if (!('volume' in value) || value['volume'] === undefined) return false;\n if (!('resolution' in value) || value['resolution'] === undefined) return false;\n if (!('time' in value) || value['time'] === undefined) return false;\n return true;\n}\n\nexport function CandleFromJSON(json: any): Candle {\n return CandleFromJSONTyped(json, false);\n}\n\nexport function CandleFromJSONTyped(json: any, ignoreDiscriminator: boolean): Candle {\n if (json == null) {\n return json;\n }\n return {\n \n 'open': json['open'],\n 'close': json['close'],\n 'high': json['high'],\n 'low': json['low'],\n 'volume': json['volume'],\n 'resolution': ResolutionFromJSON(json['resolution']),\n 'time': json['time'],\n };\n}\n\nexport function CandleToJSON(json: any): Candle {\n return CandleToJSONTyped(json, false);\n}\n\nexport function CandleToJSONTyped(value?: Candle | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'open': value['open'],\n 'close': value['close'],\n 'high': value['high'],\n 'low': value['low'],\n 'volume': value['volume'],\n 'resolution': ResolutionToJSON(value['resolution']),\n 'time': value['time'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const Chain = {\n Sol: 'sol',\n Base: 'base',\n Bsc: 'bsc',\n Polygon: 'polygon',\n Arbitrum: 'arbitrum',\n Optimism: 'optimism',\n Avalanche: 'avalanche',\n Eth: 'eth',\n Zksync: 'zksync',\n Sui: 'sui'\n} as const;\nexport type Chain = typeof Chain[keyof typeof Chain];\n\n\nexport function instanceOfChain(value: any): boolean {\n for (const key in Chain) {\n if (Object.prototype.hasOwnProperty.call(Chain, key)) {\n if (Chain[key as keyof typeof Chain] === value) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport function ChainFromJSON(json: any): Chain {\n return ChainFromJSONTyped(json, false);\n}\n\nexport function ChainFromJSONTyped(json: any, ignoreDiscriminator: boolean): Chain {\n return json as Chain;\n}\n\nexport function ChainToJSON(value?: Chain | null): any {\n return value as any;\n}\n\nexport function ChainToJSONTyped(value: any, ignoreDiscriminator: boolean): Chain {\n return value as Chain;\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ClaimRedPacketInput\n */\nexport interface ClaimRedPacketInput {\n /**\n * DTO.RED_PACKET.CHAIN\n * @type {string}\n * @memberof ClaimRedPacketInput\n */\n chain: ClaimRedPacketInputChainEnum;\n /**\n * DTO.RED_PACKET.PACKET_ID\n * @type {string}\n * @memberof ClaimRedPacketInput\n */\n packetId?: string;\n /**\n * DTO.RED_PACKET.SHARE_ID\n * @type {string}\n * @memberof ClaimRedPacketInput\n */\n shareId?: string;\n /**\n * DTO.RED_PACKET.PASSWORD\n * @type {string}\n * @memberof ClaimRedPacketInput\n */\n password?: string;\n /**\n * DTO.RED_PACKET.CLAIMER\n * @type {string}\n * @memberof ClaimRedPacketInput\n */\n claimer: string;\n}\n\n\n/**\n * @export\n */\nexport const ClaimRedPacketInputChainEnum = {\n Sol: 'sol',\n Base: 'base',\n Bsc: 'bsc',\n Polygon: 'polygon',\n Arbitrum: 'arbitrum',\n Optimism: 'optimism',\n Avalanche: 'avalanche',\n Eth: 'eth',\n Zksync: 'zksync',\n Sui: 'sui'\n} as const;\nexport type ClaimRedPacketInputChainEnum = typeof ClaimRedPacketInputChainEnum[keyof typeof ClaimRedPacketInputChainEnum];\n\n\n/**\n * Check if a given object implements the ClaimRedPacketInput interface.\n */\nexport function instanceOfClaimRedPacketInput(value: object): value is ClaimRedPacketInput {\n if (!('chain' in value) || value['chain'] === undefined) return false;\n if (!('claimer' in value) || value['claimer'] === undefined) return false;\n return true;\n}\n\nexport function ClaimRedPacketInputFromJSON(json: any): ClaimRedPacketInput {\n return ClaimRedPacketInputFromJSONTyped(json, false);\n}\n\nexport function ClaimRedPacketInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): ClaimRedPacketInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'chain': json['chain'],\n 'packetId': json['packetId'] == null ? undefined : json['packetId'],\n 'shareId': json['shareId'] == null ? undefined : json['shareId'],\n 'password': json['password'] == null ? undefined : json['password'],\n 'claimer': json['claimer'],\n };\n}\n\nexport function ClaimRedPacketInputToJSON(json: any): ClaimRedPacketInput {\n return ClaimRedPacketInputToJSONTyped(json, false);\n}\n\nexport function ClaimRedPacketInputToJSONTyped(value?: ClaimRedPacketInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'chain': value['chain'],\n 'packetId': value['packetId'],\n 'shareId': value['shareId'],\n 'password': value['password'],\n 'claimer': value['claimer'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface CreateRedPacketInput\n */\nexport interface CreateRedPacketInput {\n /**\n * DTO.RED_PACKET.CHAIN\n * @type {string}\n * @memberof CreateRedPacketInput\n */\n chain: CreateRedPacketInputChainEnum;\n /**\n * DTO.RED_PACKET.CREATOR\n * @type {string}\n * @memberof CreateRedPacketInput\n */\n creator: string;\n /**\n * DTO.RED_PACKET.MINT\n * @type {string}\n * @memberof CreateRedPacketInput\n */\n mint: string;\n /**\n * DTO.RED_PACKET.MAX_CLAIMS\n * @type {number}\n * @memberof CreateRedPacketInput\n */\n maxClaims: number;\n /**\n * DTO.RED_PACKET.TOTAL_AMOUNT\n * @type {string}\n * @memberof CreateRedPacketInput\n */\n totalAmount?: string;\n /**\n * DTO.RED_PACKET.FIXED_AMOUNT\n * @type {string}\n * @memberof CreateRedPacketInput\n */\n fixedAmount?: string;\n /**\n * DTO.RED_PACKET.MEMO\n * @type {string}\n * @memberof CreateRedPacketInput\n */\n memo?: string;\n /**\n * DTO.RED_PACKET.PASSWORD\n * @type {string}\n * @memberof CreateRedPacketInput\n */\n password?: string;\n /**\n * DTO.RED_PACKET.CLAIM_AUTHORITY\n * @type {string}\n * @memberof CreateRedPacketInput\n */\n claimAuthority?: string;\n}\n\n\n/**\n * @export\n */\nexport const CreateRedPacketInputChainEnum = {\n Sol: 'sol',\n Base: 'base',\n Bsc: 'bsc',\n Polygon: 'polygon',\n Arbitrum: 'arbitrum',\n Optimism: 'optimism',\n Avalanche: 'avalanche',\n Eth: 'eth',\n Zksync: 'zksync',\n Sui: 'sui'\n} as const;\nexport type CreateRedPacketInputChainEnum = typeof CreateRedPacketInputChainEnum[keyof typeof CreateRedPacketInputChainEnum];\n\n\n/**\n * Check if a given object implements the CreateRedPacketInput interface.\n */\nexport function instanceOfCreateRedPacketInput(value: object): value is CreateRedPacketInput {\n if (!('chain' in value) || value['chain'] === undefined) return false;\n if (!('creator' in value) || value['creator'] === undefined) return false;\n if (!('mint' in value) || value['mint'] === undefined) return false;\n if (!('maxClaims' in value) || value['maxClaims'] === undefined) return false;\n return true;\n}\n\nexport function CreateRedPacketInputFromJSON(json: any): CreateRedPacketInput {\n return CreateRedPacketInputFromJSONTyped(json, false);\n}\n\nexport function CreateRedPacketInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): CreateRedPacketInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'chain': json['chain'],\n 'creator': json['creator'],\n 'mint': json['mint'],\n 'maxClaims': json['maxClaims'],\n 'totalAmount': json['totalAmount'] == null ? undefined : json['totalAmount'],\n 'fixedAmount': json['fixedAmount'] == null ? undefined : json['fixedAmount'],\n 'memo': json['memo'] == null ? undefined : json['memo'],\n 'password': json['password'] == null ? undefined : json['password'],\n 'claimAuthority': json['claimAuthority'] == null ? undefined : json['claimAuthority'],\n };\n}\n\nexport function CreateRedPacketInputToJSON(json: any): CreateRedPacketInput {\n return CreateRedPacketInputToJSONTyped(json, false);\n}\n\nexport function CreateRedPacketInputToJSONTyped(value?: CreateRedPacketInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'chain': value['chain'],\n 'creator': value['creator'],\n 'mint': value['mint'],\n 'maxClaims': value['maxClaims'],\n 'totalAmount': value['totalAmount'],\n 'fixedAmount': value['fixedAmount'],\n 'memo': value['memo'],\n 'password': value['password'],\n 'claimAuthority': value['claimAuthority'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface CreateRedPacketReply\n */\nexport interface CreateRedPacketReply {\n /**\n * DTO.RED_PACKET.SERIALIZED_TX\n * @type {string}\n * @memberof CreateRedPacketReply\n */\n txSerialize: string;\n /**\n * DTO.RED_PACKET.SHARE_ID\n * @type {string}\n * @memberof CreateRedPacketReply\n */\n shareId: string;\n}\n\n/**\n * Check if a given object implements the CreateRedPacketReply interface.\n */\nexport function instanceOfCreateRedPacketReply(value: object): value is CreateRedPacketReply {\n if (!('txSerialize' in value) || value['txSerialize'] === undefined) return false;\n if (!('shareId' in value) || value['shareId'] === undefined) return false;\n return true;\n}\n\nexport function CreateRedPacketReplyFromJSON(json: any): CreateRedPacketReply {\n return CreateRedPacketReplyFromJSONTyped(json, false);\n}\n\nexport function CreateRedPacketReplyFromJSONTyped(json: any, ignoreDiscriminator: boolean): CreateRedPacketReply {\n if (json == null) {\n return json;\n }\n return {\n \n 'txSerialize': json['txSerialize'],\n 'shareId': json['shareId'],\n };\n}\n\nexport function CreateRedPacketReplyToJSON(json: any): CreateRedPacketReply {\n return CreateRedPacketReplyToJSONTyped(json, false);\n}\n\nexport function CreateRedPacketReplyToJSONTyped(value?: CreateRedPacketReply | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'txSerialize': value['txSerialize'],\n 'shareId': value['shareId'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface CreateTokenInput\n */\nexport interface CreateTokenInput {\n /**\n * DTO.DEX.IDENTIFIER\n * @type {string}\n * @memberof CreateTokenInput\n */\n dex: CreateTokenInputDexEnum;\n /**\n * DTO.DEX.WALLET\n * @type {string}\n * @memberof CreateTokenInput\n */\n userAddress: string;\n /**\n * DTO.DEX.BASE.PRIORITY_FEE\n * @type {string}\n * @memberof CreateTokenInput\n */\n priorityFee?: string;\n /**\n * DTO.DEX.MINT.NAME\n * @type {string}\n * @memberof CreateTokenInput\n */\n name: string;\n /**\n * DTO.DEX.MINT.SYMBOL\n * @type {string}\n * @memberof CreateTokenInput\n */\n symbol: string;\n /**\n * DTO.DEX.MINT.URI\n * @type {string}\n * @memberof CreateTokenInput\n */\n uri?: string;\n /**\n * DTO.DEX.MINT.IMAGE\n * @type {string}\n * @memberof CreateTokenInput\n */\n image?: string;\n /**\n * DTO.DEX.MINT.EXTRA\n * @type {object}\n * @memberof CreateTokenInput\n */\n extra?: object;\n}\n\n\n/**\n * @export\n */\nexport const CreateTokenInputDexEnum = {\n Raydium: 'raydium',\n Pumpfun: 'pumpfun',\n Moonshot: 'moonshot',\n Candy: 'candy',\n Launchpad: 'launchpad'\n} as const;\nexport type CreateTokenInputDexEnum = typeof CreateTokenInputDexEnum[keyof typeof CreateTokenInputDexEnum];\n\n\n/**\n * Check if a given object implements the CreateTokenInput interface.\n */\nexport function instanceOfCreateTokenInput(value: object): value is CreateTokenInput {\n if (!('dex' in value) || value['dex'] === undefined) return false;\n if (!('userAddress' in value) || value['userAddress'] === undefined) return false;\n if (!('name' in value) || value['name'] === undefined) return false;\n if (!('symbol' in value) || value['symbol'] === undefined) return false;\n return true;\n}\n\nexport function CreateTokenInputFromJSON(json: any): CreateTokenInput {\n return CreateTokenInputFromJSONTyped(json, false);\n}\n\nexport function CreateTokenInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): CreateTokenInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'dex': json['dex'],\n 'userAddress': json['userAddress'],\n 'priorityFee': json['priorityFee'] == null ? undefined : json['priorityFee'],\n 'name': json['name'],\n 'symbol': json['symbol'],\n 'uri': json['uri'] == null ? undefined : json['uri'],\n 'image': json['image'] == null ? undefined : json['image'],\n 'extra': json['extra'] == null ? undefined : json['extra'],\n };\n}\n\nexport function CreateTokenInputToJSON(json: any): CreateTokenInput {\n return CreateTokenInputToJSONTyped(json, false);\n}\n\nexport function CreateTokenInputToJSONTyped(value?: CreateTokenInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'dex': value['dex'],\n 'userAddress': value['userAddress'],\n 'priorityFee': value['priorityFee'],\n 'name': value['name'],\n 'symbol': value['symbol'],\n 'uri': value['uri'],\n 'image': value['image'],\n 'extra': value['extra'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface CreateTokenReply\n */\nexport interface CreateTokenReply {\n /**\n * DTO.DEX.CREATE_TOKEN.SERIALIZED_TX\n * @type {string}\n * @memberof CreateTokenReply\n */\n serializedTx: string;\n /**\n * DTO.DEX.CREATE_TOKEN.MINT_ADDRESS\n * @type {string}\n * @memberof CreateTokenReply\n */\n mintAddress: string;\n}\n\n/**\n * Check if a given object implements the CreateTokenReply interface.\n */\nexport function instanceOfCreateTokenReply(value: object): value is CreateTokenReply {\n if (!('serializedTx' in value) || value['serializedTx'] === undefined) return false;\n if (!('mintAddress' in value) || value['mintAddress'] === undefined) return false;\n return true;\n}\n\nexport function CreateTokenReplyFromJSON(json: any): CreateTokenReply {\n return CreateTokenReplyFromJSONTyped(json, false);\n}\n\nexport function CreateTokenReplyFromJSONTyped(json: any, ignoreDiscriminator: boolean): CreateTokenReply {\n if (json == null) {\n return json;\n }\n return {\n \n 'serializedTx': json['serializedTx'],\n 'mintAddress': json['mintAddress'],\n };\n}\n\nexport function CreateTokenReplyToJSON(json: any): CreateTokenReply {\n return CreateTokenReplyToJSONTyped(json, false);\n}\n\nexport function CreateTokenReplyToJSONTyped(value?: CreateTokenReply | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'serializedTx': value['serializedTx'],\n 'mintAddress': value['mintAddress'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface DexDTO\n */\nexport interface DexDTO {\n /**\n * DTO.DEX.PROGRAM_ADDRESS\n * @type {string}\n * @memberof DexDTO\n */\n programAddress?: string;\n /**\n * DTO.DEX.PROTOCOL_FAMILY\n * @type {string}\n * @memberof DexDTO\n */\n protocolFamily?: string;\n /**\n * DTO.DEX.IMAGE\n * @type {string}\n * @memberof DexDTO\n */\n image?: string;\n /**\n * DTO.DEX.CHAIN\n * @type {string}\n * @memberof DexDTO\n */\n chain: string;\n}\n\n/**\n * Check if a given object implements the DexDTO interface.\n */\nexport function instanceOfDexDTO(value: object): value is DexDTO {\n if (!('chain' in value) || value['chain'] === undefined) return false;\n return true;\n}\n\nexport function DexDTOFromJSON(json: any): DexDTO {\n return DexDTOFromJSONTyped(json, false);\n}\n\nexport function DexDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): DexDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'programAddress': json['programAddress'] == null ? undefined : json['programAddress'],\n 'protocolFamily': json['protocolFamily'] == null ? undefined : json['protocolFamily'],\n 'image': json['image'] == null ? undefined : json['image'],\n 'chain': json['chain'],\n };\n}\n\nexport function DexDTOToJSON(json: any): DexDTO {\n return DexDTOToJSONTyped(json, false);\n}\n\nexport function DexDTOToJSONTyped(value?: DexDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'programAddress': value['programAddress'],\n 'protocolFamily': value['protocolFamily'],\n 'image': value['image'],\n 'chain': value['chain'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { DexDTO } from './DexDTO';\nimport {\n DexDTOFromJSON,\n DexDTOFromJSONTyped,\n DexDTOToJSON,\n DexDTOToJSONTyped,\n} from './DexDTO';\n\n/**\n * \n * @export\n * @interface DexPage\n */\nexport interface DexPage {\n /**\n * DTO.PAGE.HAS_NEXT\n * @type {boolean}\n * @memberof DexPage\n */\n hasNext?: boolean;\n /**\n * DTO.PAGE.HAS_PREV\n * @type {boolean}\n * @memberof DexPage\n */\n hasPrev?: boolean;\n /**\n * DTO.PAGE.START_CURSOR\n * @type {string}\n * @memberof DexPage\n */\n startCursor?: string;\n /**\n * DTO.PAGE.END_CURSOR\n * @type {string}\n * @memberof DexPage\n */\n endCursor?: string;\n /**\n * DTO.PAGE.TOTAL\n * @type {number}\n * @memberof DexPage\n */\n total?: number;\n /**\n * DTO.DEX.PAGE.DATA\n * @type {Array<DexDTO>}\n * @memberof DexPage\n */\n data: Array<DexDTO>;\n}\n\n/**\n * Check if a given object implements the DexPage interface.\n */\nexport function instanceOfDexPage(value: object): value is DexPage {\n if (!('data' in value) || value['data'] === undefined) return false;\n return true;\n}\n\nexport function DexPageFromJSON(json: any): DexPage {\n return DexPageFromJSONTyped(json, false);\n}\n\nexport function DexPageFromJSONTyped(json: any, ignoreDiscriminator: boolean): DexPage {\n if (json == null) {\n return json;\n }\n return {\n \n 'hasNext': json['hasNext'] == null ? undefined : json['hasNext'],\n 'hasPrev': json['hasPrev'] == null ? undefined : json['hasPrev'],\n 'startCursor': json['startCursor'] == null ? undefined : json['startCursor'],\n 'endCursor': json['endCursor'] == null ? undefined : json['endCursor'],\n 'total': json['total'] == null ? undefined : json['total'],\n 'data': ((json['data'] as Array<any>).map(DexDTOFromJSON)),\n };\n}\n\nexport function DexPageToJSON(json: any): DexPage {\n return DexPageToJSONTyped(json, false);\n}\n\nexport function DexPageToJSONTyped(value?: DexPage | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'hasNext': value['hasNext'],\n 'hasPrev': value['hasPrev'],\n 'startCursor': value['startCursor'],\n 'endCursor': value['endCursor'],\n 'total': value['total'],\n 'data': ((value['data'] as Array<any>).map(DexDTOToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface DexPoolDTO\n */\nexport interface DexPoolDTO {\n /**\n * DTO.DEX.PROGRAM_ADDRESS\n * @type {string}\n * @memberof DexPoolDTO\n */\n programAddress?: string;\n /**\n * DTO.DEX.PROTOCOL_FAMILY\n * @type {string}\n * @memberof DexPoolDTO\n */\n protocolFamily?: string;\n /**\n * DTO.DEX.IMAGE\n * @type {string}\n * @memberof DexPoolDTO\n */\n image?: string;\n /**\n * DTO.DEX.CHAIN\n * @type {string}\n * @memberof DexPoolDTO\n */\n chain: string;\n /**\n * DTO.DEXPOOL.POOL_ADDRESS\n * @type {string}\n * @memberof DexPoolDTO\n */\n poolAddress: string;\n /**\n * DTO.DEXPOOL.PROTOCOL_NAME\n * @type {string}\n * @memberof DexPoolDTO\n */\n protocolName?: string;\n /**\n * DTO.DEXPOOL.TOKEN_A\n * @type {string}\n * @memberof DexPoolDTO\n */\n tokenAAddress: string;\n /**\n * DTO.DEXPOOL.TOKEN_B\n * @type {string}\n * @memberof DexPoolDTO\n */\n tokenBAddress: string;\n /**\n * DTO.DEXPOOL.TVL_USD\n * @type {string}\n * @memberof DexPoolDTO\n */\n tvlInUsd?: string;\n /**\n * DTO.DEXPOOL.TVL_SOL\n * @type {string}\n * @memberof DexPoolDTO\n */\n tvlInSol?: string;\n}\n\n/**\n * Check if a given object implements the DexPoolDTO interface.\n */\nexport function instanceOfDexPoolDTO(value: object): value is DexPoolDTO {\n if (!('chain' in value) || value['chain'] === undefined) return false;\n if (!('poolAddress' in value) || value['poolAddress'] === undefined) return false;\n if (!('tokenAAddress' in value) || value['tokenAAddress'] === undefined) return false;\n if (!('tokenBAddress' in value) || value['tokenBAddress'] === undefined) return false;\n return true;\n}\n\nexport function DexPoolDTOFromJSON(json: any): DexPoolDTO {\n return DexPoolDTOFromJSONTyped(json, false);\n}\n\nexport function DexPoolDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): DexPoolDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'programAddress': json['programAddress'] == null ? undefined : json['programAddress'],\n 'protocolFamily': json['protocolFamily'] == null ? undefined : json['protocolFamily'],\n 'image': json['image'] == null ? undefined : json['image'],\n 'chain': json['chain'],\n 'poolAddress': json['poolAddress'],\n 'protocolName': json['protocolName'] == null ? undefined : json['protocolName'],\n 'tokenAAddress': json['tokenAAddress'],\n 'tokenBAddress': json['tokenBAddress'],\n 'tvlInUsd': json['tvlInUsd'] == null ? undefined : json['tvlInUsd'],\n 'tvlInSol': json['tvlInSol'] == null ? undefined : json['tvlInSol'],\n };\n}\n\nexport function DexPoolDTOToJSON(json: any): DexPoolDTO {\n return DexPoolDTOToJSONTyped(json, false);\n}\n\nexport function DexPoolDTOToJSONTyped(value?: DexPoolDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'programAddress': value['programAddress'],\n 'protocolFamily': value['protocolFamily'],\n 'image': value['image'],\n 'chain': value['chain'],\n 'poolAddress': value['poolAddress'],\n 'protocolName': value['protocolName'],\n 'tokenAAddress': value['tokenAAddress'],\n 'tokenBAddress': value['tokenBAddress'],\n 'tvlInUsd': value['tvlInUsd'],\n 'tvlInSol': value['tvlInSol'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface 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 GainersAndLosersDTO\n */\nexport interface GainersAndLosersDTO {\n /**\n * GLOBAL.WALLETADDRESS.DESCRIPTION\n * @type {string}\n * @memberof GainersAndLosersDTO\n */\n address: string;\n /**\n * DTO.TRADE.GAINERS_LOSERS.PNL\n * @type {number}\n * @memberof GainersAndLosersDTO\n */\n pnl: number;\n /**\n * DTO.TRADE.GAINERS_LOSERS.TRADE_COUNT\n * @type {number}\n * @memberof GainersAndLosersDTO\n */\n tradeCount: number;\n /**\n * DTO.TRADE.GAINERS_LOSERS.VOLUME\n * @type {number}\n * @memberof GainersAndLosersDTO\n */\n volume: number;\n}\n\n/**\n * Check if a given object implements the GainersAndLosersDTO interface.\n */\nexport function instanceOfGainersAndLosersDTO(value: object): value is GainersAndLosersDTO {\n if (!('address' in value) || value['address'] === undefined) return false;\n if (!('pnl' in value) || value['pnl'] === undefined) return false;\n if (!('tradeCount' in value) || value['tradeCount'] === undefined) return false;\n if (!('volume' in value) || value['volume'] === undefined) return false;\n return true;\n}\n\nexport function GainersAndLosersDTOFromJSON(json: any): GainersAndLosersDTO {\n return GainersAndLosersDTOFromJSONTyped(json, false);\n}\n\nexport function GainersAndLosersDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): GainersAndLosersDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'address': json['address'],\n 'pnl': json['pnl'],\n 'tradeCount': json['tradeCount'],\n 'volume': json['volume'],\n };\n}\n\nexport function GainersAndLosersDTOToJSON(json: any): GainersAndLosersDTO {\n return GainersAndLosersDTOToJSONTyped(json, false);\n}\n\nexport function GainersAndLosersDTOToJSONTyped(value?: GainersAndLosersDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'address': value['address'],\n 'pnl': value['pnl'],\n 'tradeCount': value['tradeCount'],\n 'volume': value['volume'],\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 { GainersAndLosersDTO } from './GainersAndLosersDTO';\nimport {\n GainersAndLosersDTOFromJSON,\n GainersAndLosersDTOFromJSONTyped,\n GainersAndLosersDTOToJSON,\n GainersAndLosersDTOToJSONTyped,\n} from './GainersAndLosersDTO';\n\n/**\n * \n * @export\n * @interface GainersAndLosersPage\n */\nexport interface GainersAndLosersPage {\n /**\n * DTO.PAGE.HAS_NEXT\n * @type {boolean}\n * @memberof GainersAndLosersPage\n */\n hasNext?: boolean;\n /**\n * DTO.PAGE.HAS_PREV\n * @type {boolean}\n * @memberof GainersAndLosersPage\n */\n hasPrev?: boolean;\n /**\n * DTO.PAGE.START_CURSOR\n * @type {string}\n * @memberof GainersAndLosersPage\n */\n startCursor?: string;\n /**\n * DTO.PAGE.END_CURSOR\n * @type {string}\n * @memberof GainersAndLosersPage\n */\n endCursor?: string;\n /**\n * DTO.PAGE.TOTAL\n * @type {number}\n * @memberof GainersAndLosersPage\n */\n total?: number;\n /**\n * DTO.TRADE.GAINERS_LOSERS.PAGE.DATA\n * @type {Array<GainersAndLosersDTO>}\n * @memberof GainersAndLosersPage\n */\n data: Array<GainersAndLosersDTO>;\n}\n\n/**\n * Check if a given object implements the GainersAndLosersPage interface.\n */\nexport function instanceOfGainersAndLosersPage(value: object): value is GainersAndLosersPage {\n if (!('data' in value) || value['data'] === undefined) return false;\n return true;\n}\n\nexport function GainersAndLosersPageFromJSON(json: any): GainersAndLosersPage {\n return GainersAndLosersPageFromJSONTyped(json, false);\n}\n\nexport function GainersAndLosersPageFromJSONTyped(json: any, ignoreDiscriminator: boolean): GainersAndLosersPage {\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(GainersAndLosersDTOFromJSON)),\n };\n}\n\nexport function GainersAndLosersPageToJSON(json: any): GainersAndLosersPage {\n return GainersAndLosersPageToJSONTyped(json, false);\n}\n\nexport function GainersAndLosersPageToJSONTyped(value?: GainersAndLosersPage | 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(GainersAndLosersDTOToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface GasPriceResponse\n */\nexport interface GasPriceResponse {\n /**\n * Current gas price in wei (hex string)\n * @type {string}\n * @memberof GasPriceResponse\n */\n gasPrice: string;\n /**\n * Chain symbol\n * @type {string}\n * @memberof GasPriceResponse\n */\n chain: string;\n}\n\n/**\n * Check if a given object implements the GasPriceResponse interface.\n */\nexport function instanceOfGasPriceResponse(value: object): value is GasPriceResponse {\n if (!('gasPrice' in value) || value['gasPrice'] === undefined) return false;\n if (!('chain' in value) || value['chain'] === undefined) return false;\n return true;\n}\n\nexport function GasPriceResponseFromJSON(json: any): GasPriceResponse {\n return GasPriceResponseFromJSONTyped(json, false);\n}\n\nexport function GasPriceResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): GasPriceResponse {\n if (json == null) {\n return json;\n }\n return {\n \n 'gasPrice': json['gasPrice'],\n 'chain': json['chain'],\n };\n}\n\nexport function GasPriceResponseToJSON(json: any): GasPriceResponse {\n return GasPriceResponseToJSONTyped(json, false);\n}\n\nexport function GasPriceResponseToJSONTyped(value?: GasPriceResponse | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'gasPrice': value['gasPrice'],\n 'chain': value['chain'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface JobDTO\n */\nexport interface JobDTO {\n /**\n * DTO.JOB.STATE\n * @type {string}\n * @memberof JobDTO\n */\n state: string;\n /**\n * DTO.JOB.RESULT\n * @type {object}\n * @memberof JobDTO\n */\n result: object;\n}\n\n/**\n * Check if a given object implements the JobDTO interface.\n */\nexport function instanceOfJobDTO(value: object): value is JobDTO {\n if (!('state' in value) || value['state'] === undefined) return false;\n if (!('result' in value) || value['result'] === undefined) return false;\n return true;\n}\n\nexport function JobDTOFromJSON(json: any): JobDTO {\n return JobDTOFromJSONTyped(json, false);\n}\n\nexport function JobDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): JobDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'state': json['state'],\n 'result': json['result'],\n };\n}\n\nexport function JobDTOToJSON(json: any): JobDTO {\n return JobDTOToJSONTyped(json, false);\n}\n\nexport function JobDTOToJSONTyped(value?: JobDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'state': value['state'],\n 'result': value['result'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface JobStreamingDTO\n */\nexport interface JobStreamingDTO {\n /**\n * DTO.JOB.STREAMING.ID\n * @type {number}\n * @memberof JobStreamingDTO\n */\n id: number;\n /**\n * DTO.JOB.STREAMING.DATA\n * @type {object}\n * @memberof JobStreamingDTO\n */\n data: object;\n}\n\n/**\n * Check if a given object implements the JobStreamingDTO interface.\n */\nexport function instanceOfJobStreamingDTO(value: object): value is JobStreamingDTO {\n if (!('id' in value) || value['id'] === undefined) return false;\n if (!('data' in value) || value['data'] === undefined) return false;\n return true;\n}\n\nexport function JobStreamingDTOFromJSON(json: any): JobStreamingDTO {\n return JobStreamingDTOFromJSONTyped(json, false);\n}\n\nexport function JobStreamingDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): JobStreamingDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'id': json['id'],\n 'data': json['data'],\n };\n}\n\nexport function JobStreamingDTOToJSON(json: any): JobStreamingDTO {\n return JobStreamingDTOToJSONTyped(json, false);\n}\n\nexport function JobStreamingDTOToJSONTyped(value?: JobStreamingDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'id': value['id'],\n 'data': value['data'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface Link\n */\nexport interface Link {\n /**\n * DTO.DEX.MOONSHOT.LINK.URL\n * @type {string}\n * @memberof Link\n */\n url: string;\n /**\n * DTO.DEX.MOONSHOT.LINK.LABEL\n * @type {string}\n * @memberof Link\n */\n label: LinkLabelEnum;\n}\n\n\n/**\n * @export\n */\nexport const LinkLabelEnum = {\n Website: 'website',\n Twitter: 'twitter',\n Telegram: 'telegram',\n Discord: 'discord'\n} as const;\nexport type LinkLabelEnum = typeof LinkLabelEnum[keyof typeof LinkLabelEnum];\n\n\n/**\n * Check if a given object implements the Link interface.\n */\nexport function instanceOfLink(value: object): value is Link {\n if (!('url' in value) || value['url'] === undefined) return false;\n if (!('label' in value) || value['label'] === undefined) return false;\n return true;\n}\n\nexport function LinkFromJSON(json: any): Link {\n return LinkFromJSONTyped(json, false);\n}\n\nexport function LinkFromJSONTyped(json: any, ignoreDiscriminator: boolean): Link {\n if (json == null) {\n return json;\n }\n return {\n \n 'url': json['url'],\n 'label': json['label'],\n };\n}\n\nexport function LinkToJSON(json: any): Link {\n return LinkToJSONTyped(json, false);\n}\n\nexport function LinkToJSONTyped(value?: Link | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'url': value['url'],\n 'label': value['label'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { Link } from './Link';\nimport {\n LinkFromJSON,\n LinkFromJSONTyped,\n LinkToJSON,\n LinkToJSONTyped,\n} from './Link';\n\n/**\n * \n * @export\n * @interface MoonshotCreateTokenInput\n */\nexport interface MoonshotCreateTokenInput {\n /**\n * DTO.DEX.IDENTIFIER\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n dex: MoonshotCreateTokenInputDexEnum;\n /**\n * DTO.DEX.WALLET\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n userAddress: string;\n /**\n * DTO.DEX.BASE.PRIORITY_FEE\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n priorityFee?: string;\n /**\n * DTO.DEX.MOONSHOT.MINT.NAME\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n name: string;\n /**\n * DTO.DEX.MOONSHOT.MINT.SYMBOL\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n symbol: string;\n /**\n * DTO.DEX.MOONSHOT.MINT.MIGRATION_DEX\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n migrationDex: MoonshotCreateTokenInputMigrationDexEnum;\n /**\n * DTO.DEX.MOONSHOT.MINT.ICON\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n icon: string;\n /**\n * DTO.DEX.MOONSHOT.MINT.DESCRIPTION\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n description: string;\n /**\n * DTO.DEX.MOONSHOT.MINT.LINKS\n * @type {Array<Link>}\n * @memberof MoonshotCreateTokenInput\n */\n links: Array<Link>;\n /**\n * DTO.DEX.MOONSHOT.MINT.BANNER\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n banner?: string;\n /**\n * DTO.DEX.MOONSHOT.MINT.TOKEN_AMOUNT\n * @type {string}\n * @memberof MoonshotCreateTokenInput\n */\n tokenAmount: string;\n}\n\n\n/**\n * @export\n */\nexport const MoonshotCreateTokenInputDexEnum = {\n Moonshot: 'moonshot'\n} as const;\nexport type MoonshotCreateTokenInputDexEnum = typeof MoonshotCreateTokenInputDexEnum[keyof typeof MoonshotCreateTokenInputDexEnum];\n\n/**\n * @export\n */\nexport const MoonshotCreateTokenInputMigrationDexEnum = {\n Raydium: 'RAYDIUM',\n Meteora: 'METEORA',\n Uniswap: 'UNISWAP'\n} as const;\nexport type MoonshotCreateTokenInputMigrationDexEnum = typeof MoonshotCreateTokenInputMigrationDexEnum[keyof typeof MoonshotCreateTokenInputMigrationDexEnum];\n\n\n/**\n * Check if a given object implements the MoonshotCreateTokenInput interface.\n */\nexport function instanceOfMoonshotCreateTokenInput(value: object): value is MoonshotCreateTokenInput {\n if (!('dex' in value) || value['dex'] === undefined) return false;\n if (!('userAddress' in value) || value['userAddress'] === undefined) return false;\n if (!('name' in value) || value['name'] === undefined) return false;\n if (!('symbol' in value) || value['symbol'] === undefined) return false;\n if (!('migrationDex' in value) || value['migrationDex'] === undefined) return false;\n if (!('icon' in value) || value['icon'] === undefined) return false;\n if (!('description' in value) || value['description'] === undefined) return false;\n if (!('links' in value) || value['links'] === undefined) return false;\n if (!('tokenAmount' in value) || value['tokenAmount'] === undefined) return false;\n return true;\n}\n\nexport function MoonshotCreateTokenInputFromJSON(json: any): MoonshotCreateTokenInput {\n return MoonshotCreateTokenInputFromJSONTyped(json, false);\n}\n\nexport function MoonshotCreateTokenInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): MoonshotCreateTokenInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'dex': json['dex'],\n 'userAddress': json['userAddress'],\n 'priorityFee': json['priorityFee'] == null ? undefined : json['priorityFee'],\n 'name': json['name'],\n 'symbol': json['symbol'],\n 'migrationDex': json['migrationDex'],\n 'icon': json['icon'],\n 'description': json['description'],\n 'links': ((json['links'] as Array<any>).map(LinkFromJSON)),\n 'banner': json['banner'] == null ? undefined : json['banner'],\n 'tokenAmount': json['tokenAmount'],\n };\n}\n\nexport function MoonshotCreateTokenInputToJSON(json: any): MoonshotCreateTokenInput {\n return MoonshotCreateTokenInputToJSONTyped(json, false);\n}\n\nexport function MoonshotCreateTokenInputToJSONTyped(value?: MoonshotCreateTokenInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'dex': value['dex'],\n 'userAddress': value['userAddress'],\n 'priorityFee': value['priorityFee'],\n 'name': value['name'],\n 'symbol': value['symbol'],\n 'migrationDex': value['migrationDex'],\n 'icon': value['icon'],\n 'description': value['description'],\n 'links': ((value['links'] as Array<any>).map(LinkToJSON)),\n 'banner': value['banner'],\n 'tokenAmount': value['tokenAmount'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface MoonshotCreateTokenReply\n */\nexport interface MoonshotCreateTokenReply {\n /**\n * DTO.DEX.MOONSHOT.CREATE_TOKEN.SERIALIZED_TX\n * @type {string}\n * @memberof MoonshotCreateTokenReply\n */\n serializedTx: string;\n /**\n * DTO.DEX.MOONSHOT.CREATE_TOKEN.EXTRA\n * @type {object}\n * @memberof MoonshotCreateTokenReply\n */\n extra: object;\n}\n\n/**\n * Check if a given object implements the MoonshotCreateTokenReply interface.\n */\nexport function instanceOfMoonshotCreateTokenReply(value: object): value is MoonshotCreateTokenReply {\n if (!('serializedTx' in value) || value['serializedTx'] === undefined) return false;\n if (!('extra' in value) || value['extra'] === undefined) return false;\n return true;\n}\n\nexport function MoonshotCreateTokenReplyFromJSON(json: any): MoonshotCreateTokenReply {\n return MoonshotCreateTokenReplyFromJSONTyped(json, false);\n}\n\nexport function MoonshotCreateTokenReplyFromJSONTyped(json: any, ignoreDiscriminator: boolean): MoonshotCreateTokenReply {\n if (json == null) {\n return json;\n }\n return {\n \n 'serializedTx': json['serializedTx'],\n 'extra': json['extra'],\n };\n}\n\nexport function MoonshotCreateTokenReplyToJSON(json: any): MoonshotCreateTokenReply {\n return MoonshotCreateTokenReplyToJSONTyped(json, false);\n}\n\nexport function MoonshotCreateTokenReplyToJSONTyped(value?: MoonshotCreateTokenReply | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'serializedTx': value['serializedTx'],\n 'extra': value['extra'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface MoonshotSubmitCreateToken200Response\n */\nexport interface MoonshotSubmitCreateToken200Response {\n /**\n * Transaction signature\n * @type {string}\n * @memberof MoonshotSubmitCreateToken200Response\n */\n signature?: string;\n /**\n * Block slot number\n * @type {number}\n * @memberof MoonshotSubmitCreateToken200Response\n */\n slot?: number;\n}\n\n/**\n * Check if a given object implements the MoonshotSubmitCreateToken200Response interface.\n */\nexport function instanceOfMoonshotSubmitCreateToken200Response(value: object): value is MoonshotSubmitCreateToken200Response {\n return true;\n}\n\nexport function MoonshotSubmitCreateToken200ResponseFromJSON(json: any): MoonshotSubmitCreateToken200Response {\n return MoonshotSubmitCreateToken200ResponseFromJSONTyped(json, false);\n}\n\nexport function MoonshotSubmitCreateToken200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): MoonshotSubmitCreateToken200Response {\n if (json == null) {\n return json;\n }\n return {\n \n 'signature': json['signature'] == null ? undefined : json['signature'],\n 'slot': json['slot'] == null ? undefined : json['slot'],\n };\n}\n\nexport function MoonshotSubmitCreateToken200ResponseToJSON(json: any): MoonshotSubmitCreateToken200Response {\n return MoonshotSubmitCreateToken200ResponseToJSONTyped(json, false);\n}\n\nexport function MoonshotSubmitCreateToken200ResponseToJSONTyped(value?: MoonshotSubmitCreateToken200Response | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'signature': value['signature'],\n 'slot': value['slot'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface MoonshotSubmitCreateTokenInput\n */\nexport interface MoonshotSubmitCreateTokenInput {\n /**\n * DTO.DEX.MOONSHOT.SUBMIT.CREATE_TOKEN.SIGNED_TX\n * @type {string}\n * @memberof MoonshotSubmitCreateTokenInput\n */\n signedTx: string;\n /**\n * DTO.DEX.MOONSHOT.SUBMIT.CREATE_TOKEN.EXTRA\n * @type {object}\n * @memberof MoonshotSubmitCreateTokenInput\n */\n extra?: object;\n}\n\n/**\n * Check if a given object implements the MoonshotSubmitCreateTokenInput interface.\n */\nexport function instanceOfMoonshotSubmitCreateTokenInput(value: object): value is MoonshotSubmitCreateTokenInput {\n if (!('signedTx' in value) || value['signedTx'] === undefined) return false;\n return true;\n}\n\nexport function MoonshotSubmitCreateTokenInputFromJSON(json: any): MoonshotSubmitCreateTokenInput {\n return MoonshotSubmitCreateTokenInputFromJSONTyped(json, false);\n}\n\nexport function MoonshotSubmitCreateTokenInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): MoonshotSubmitCreateTokenInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'signedTx': json['signedTx'],\n 'extra': json['extra'] == null ? undefined : json['extra'],\n };\n}\n\nexport function MoonshotSubmitCreateTokenInputToJSON(json: any): MoonshotSubmitCreateTokenInput {\n return MoonshotSubmitCreateTokenInputToJSONTyped(json, false);\n}\n\nexport function MoonshotSubmitCreateTokenInputToJSONTyped(value?: MoonshotSubmitCreateTokenInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'signedTx': value['signedTx'],\n 'extra': value['extra'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface PumpCreateTokenInput\n */\nexport interface PumpCreateTokenInput {\n /**\n * DTO.DEX.IDENTIFIER\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n dex: PumpCreateTokenInputDexEnum;\n /**\n * DTO.DEX.WALLET\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n userAddress: string;\n /**\n * DTO.DEX.BASE.PRIORITY_FEE\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n priorityFee?: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.TWITTER\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n twitter?: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.TELEGRAM\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n telegram?: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.WEBSITE\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n website?: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.NAME\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n name: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.SYMBOL\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n symbol: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.MIGRATION_DEX\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n migrationDex: PumpCreateTokenInputMigrationDexEnum;\n /**\n * DTO.DEX.PUMPFUN.MINT.IMAGE\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n image: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.MINT_ADDRESS\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n mintAddress: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.DESCRIPTION\n * @type {string}\n * @memberof PumpCreateTokenInput\n */\n description: string;\n}\n\n\n/**\n * @export\n */\nexport const PumpCreateTokenInputDexEnum = {\n Pumpfun: 'pumpfun'\n} as const;\nexport type PumpCreateTokenInputDexEnum = typeof PumpCreateTokenInputDexEnum[keyof typeof PumpCreateTokenInputDexEnum];\n\n/**\n * @export\n */\nexport const PumpCreateTokenInputMigrationDexEnum = {\n Raydium: 'RAYDIUM',\n Meteora: 'METEORA'\n} as const;\nexport type PumpCreateTokenInputMigrationDexEnum = typeof PumpCreateTokenInputMigrationDexEnum[keyof typeof PumpCreateTokenInputMigrationDexEnum];\n\n\n/**\n * Check if a given object implements the PumpCreateTokenInput interface.\n */\nexport function instanceOfPumpCreateTokenInput(value: object): value is PumpCreateTokenInput {\n if (!('dex' in value) || value['dex'] === undefined) return false;\n if (!('userAddress' in value) || value['userAddress'] === undefined) return false;\n if (!('name' in value) || value['name'] === undefined) return false;\n if (!('symbol' in value) || value['symbol'] === undefined) return false;\n if (!('migrationDex' in value) || value['migrationDex'] === undefined) return false;\n if (!('image' in value) || value['image'] === undefined) return false;\n if (!('mintAddress' in value) || value['mintAddress'] === undefined) return false;\n if (!('description' in value) || value['description'] === undefined) return false;\n return true;\n}\n\nexport function PumpCreateTokenInputFromJSON(json: any): PumpCreateTokenInput {\n return PumpCreateTokenInputFromJSONTyped(json, false);\n}\n\nexport function PumpCreateTokenInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): PumpCreateTokenInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'dex': json['dex'],\n 'userAddress': json['userAddress'],\n 'priorityFee': json['priorityFee'] == null ? undefined : json['priorityFee'],\n 'twitter': json['twitter'] == null ? undefined : json['twitter'],\n 'telegram': json['telegram'] == null ? undefined : json['telegram'],\n 'website': json['website'] == null ? undefined : json['website'],\n 'name': json['name'],\n 'symbol': json['symbol'],\n 'migrationDex': json['migrationDex'],\n 'image': json['image'],\n 'mintAddress': json['mintAddress'],\n 'description': json['description'],\n };\n}\n\nexport function PumpCreateTokenInputToJSON(json: any): PumpCreateTokenInput {\n return PumpCreateTokenInputToJSONTyped(json, false);\n}\n\nexport function PumpCreateTokenInputToJSONTyped(value?: PumpCreateTokenInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'dex': value['dex'],\n 'userAddress': value['userAddress'],\n 'priorityFee': value['priorityFee'],\n 'twitter': value['twitter'],\n 'telegram': value['telegram'],\n 'website': value['website'],\n 'name': value['name'],\n 'symbol': value['symbol'],\n 'migrationDex': value['migrationDex'],\n 'image': value['image'],\n 'mintAddress': value['mintAddress'],\n 'description': value['description'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface PumpCreateTokenReply\n */\nexport interface PumpCreateTokenReply {\n /**\n * DTO.DEX.PUMPFUN.MINT.SERIALIZED_TX\n * @type {string}\n * @memberof PumpCreateTokenReply\n */\n serializedTx: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.EXTRA\n * @type {object}\n * @memberof PumpCreateTokenReply\n */\n extra?: object;\n}\n\n/**\n * Check if a given object implements the PumpCreateTokenReply interface.\n */\nexport function instanceOfPumpCreateTokenReply(value: object): value is PumpCreateTokenReply {\n if (!('serializedTx' in value) || value['serializedTx'] === undefined) return false;\n return true;\n}\n\nexport function PumpCreateTokenReplyFromJSON(json: any): PumpCreateTokenReply {\n return PumpCreateTokenReplyFromJSONTyped(json, false);\n}\n\nexport function PumpCreateTokenReplyFromJSONTyped(json: any, ignoreDiscriminator: boolean): PumpCreateTokenReply {\n if (json == null) {\n return json;\n }\n return {\n \n 'serializedTx': json['serializedTx'],\n 'extra': json['extra'] == null ? undefined : json['extra'],\n };\n}\n\nexport function PumpCreateTokenReplyToJSON(json: any): PumpCreateTokenReply {\n return PumpCreateTokenReplyToJSONTyped(json, false);\n}\n\nexport function PumpCreateTokenReplyToJSONTyped(value?: PumpCreateTokenReply | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'serializedTx': value['serializedTx'],\n 'extra': value['extra'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface QuoteResponse\n */\nexport interface QuoteResponse {\n /**\n * DTO.DEX.QUOTE.AMOUNT_OUT\n * @type {string}\n * @memberof QuoteResponse\n */\n amountOut?: string;\n /**\n * DTO.DEX.QUOTE.MIN_AMOUNT_OUT\n * @type {string}\n * @memberof QuoteResponse\n */\n minAmountOut?: string;\n /**\n * DTO.DEX.QUOTE.CURRENT_PRICE\n * @type {string}\n * @memberof QuoteResponse\n */\n currentPrice?: string;\n /**\n * DTO.DEX.QUOTE.EXECUTION_PRICE\n * @type {string}\n * @memberof QuoteResponse\n */\n executionPrice?: string;\n /**\n * DTO.DEX.QUOTE.PRICE_IMPACT\n * @type {string}\n * @memberof QuoteResponse\n */\n priceImpact?: string;\n /**\n * DTO.DEX.QUOTE.FEE\n * @type {string}\n * @memberof QuoteResponse\n */\n fee?: string;\n}\n\n/**\n * Check if a given object implements the QuoteResponse interface.\n */\nexport function instanceOfQuoteResponse(value: object): value is QuoteResponse {\n return true;\n}\n\nexport function QuoteResponseFromJSON(json: any): QuoteResponse {\n return QuoteResponseFromJSONTyped(json, false);\n}\n\nexport function QuoteResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): QuoteResponse {\n if (json == null) {\n return json;\n }\n return {\n \n 'amountOut': json['amountOut'] == null ? undefined : json['amountOut'],\n 'minAmountOut': json['minAmountOut'] == null ? undefined : json['minAmountOut'],\n 'currentPrice': json['currentPrice'] == null ? undefined : json['currentPrice'],\n 'executionPrice': json['executionPrice'] == null ? undefined : json['executionPrice'],\n 'priceImpact': json['priceImpact'] == null ? undefined : json['priceImpact'],\n 'fee': json['fee'] == null ? undefined : json['fee'],\n };\n}\n\nexport function QuoteResponseToJSON(json: any): QuoteResponse {\n return QuoteResponseToJSONTyped(json, false);\n}\n\nexport function QuoteResponseToJSONTyped(value?: QuoteResponse | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'amountOut': value['amountOut'],\n 'minAmountOut': value['minAmountOut'],\n 'currentPrice': value['currentPrice'],\n 'executionPrice': value['executionPrice'],\n 'priceImpact': value['priceImpact'],\n 'fee': value['fee'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { Chain } from './Chain';\nimport {\n ChainFromJSON,\n ChainFromJSONTyped,\n ChainToJSON,\n ChainToJSONTyped,\n} from './Chain';\n\n/**\n * \n * @export\n * @interface RedPacketClaimDTO\n */\nexport interface RedPacketClaimDTO {\n /**\n * DTO.RED_PACKET.PACKET_ID\n * @type {string}\n * @memberof RedPacketClaimDTO\n */\n packetId: string;\n /**\n * DTO.RED_PACKET.CHAIN\n * @type {Chain}\n * @memberof RedPacketClaimDTO\n */\n chain: Chain;\n /**\n * DTO.RED_PACKET.CLAIMER\n * @type {string}\n * @memberof RedPacketClaimDTO\n */\n claimer: string;\n /**\n * DTO.RED_PACKET.MINT\n * @type {string}\n * @memberof RedPacketClaimDTO\n */\n mint: string;\n /**\n * DTO.RED_PACKET.AMOUNT\n * @type {string}\n * @memberof RedPacketClaimDTO\n */\n amount: string;\n /**\n * DTO.RED_PACKET.CLAIMED_AT\n * @type {number}\n * @memberof RedPacketClaimDTO\n */\n claimedAt: number;\n /**\n * DTO.RED_PACKET.CREATOR\n * @type {string}\n * @memberof RedPacketClaimDTO\n */\n creator: string;\n /**\n * DTO.RED_PACKET.TX_HASH\n * @type {string}\n * @memberof RedPacketClaimDTO\n */\n txHash: string;\n}\n\n\n\n/**\n * Check if a given object implements the RedPacketClaimDTO interface.\n */\nexport function instanceOfRedPacketClaimDTO(value: object): value is RedPacketClaimDTO {\n if (!('packetId' in value) || value['packetId'] === undefined) return false;\n if (!('chain' in value) || value['chain'] === undefined) return false;\n if (!('claimer' in value) || value['claimer'] === undefined) return false;\n if (!('mint' in value) || value['mint'] === undefined) return false;\n if (!('amount' in value) || value['amount'] === undefined) return false;\n if (!('claimedAt' in value) || value['claimedAt'] === undefined) return false;\n if (!('creator' in value) || value['creator'] === undefined) return false;\n if (!('txHash' in value) || value['txHash'] === undefined) return false;\n return true;\n}\n\nexport function RedPacketClaimDTOFromJSON(json: any): RedPacketClaimDTO {\n return RedPacketClaimDTOFromJSONTyped(json, false);\n}\n\nexport function RedPacketClaimDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): RedPacketClaimDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'packetId': json['packetId'],\n 'chain': ChainFromJSON(json['chain']),\n 'claimer': json['claimer'],\n 'mint': json['mint'],\n 'amount': json['amount'],\n 'claimedAt': json['claimedAt'],\n 'creator': json['creator'],\n 'txHash': json['txHash'],\n };\n}\n\nexport function RedPacketClaimDTOToJSON(json: any): RedPacketClaimDTO {\n return RedPacketClaimDTOToJSONTyped(json, false);\n}\n\nexport function RedPacketClaimDTOToJSONTyped(value?: RedPacketClaimDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'packetId': value['packetId'],\n 'chain': ChainToJSON(value['chain']),\n 'claimer': value['claimer'],\n 'mint': value['mint'],\n 'amount': value['amount'],\n 'claimedAt': value['claimedAt'],\n 'creator': value['creator'],\n 'txHash': value['txHash'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { RedPacketClaimDTO } from './RedPacketClaimDTO';\nimport {\n RedPacketClaimDTOFromJSON,\n RedPacketClaimDTOFromJSONTyped,\n RedPacketClaimDTOToJSON,\n RedPacketClaimDTOToJSONTyped,\n} from './RedPacketClaimDTO';\n\n/**\n * \n * @export\n * @interface RedPacketClaimsPage\n */\nexport interface RedPacketClaimsPage {\n /**\n * DTO.PAGE.TOTAL\n * @type {number}\n * @memberof RedPacketClaimsPage\n */\n total: number;\n /**\n * DTO.PAGE.HAS_NEXT\n * @type {boolean}\n * @memberof RedPacketClaimsPage\n */\n hasNextPage: boolean;\n /**\n * DTO.PAGE.START_CURSOR\n * @type {string}\n * @memberof RedPacketClaimsPage\n */\n startCursor: string;\n /**\n * DTO.PAGE.END_CURSOR\n * @type {string}\n * @memberof RedPacketClaimsPage\n */\n endCursor: string;\n /**\n * Array of claim records\n * @type {Array<RedPacketClaimDTO>}\n * @memberof RedPacketClaimsPage\n */\n records: Array<RedPacketClaimDTO>;\n}\n\n/**\n * Check if a given object implements the RedPacketClaimsPage interface.\n */\nexport function instanceOfRedPacketClaimsPage(value: object): value is RedPacketClaimsPage {\n if (!('total' in value) || value['total'] === undefined) return false;\n if (!('hasNextPage' in value) || value['hasNextPage'] === undefined) return false;\n if (!('startCursor' in value) || value['startCursor'] === undefined) return false;\n if (!('endCursor' in value) || value['endCursor'] === undefined) return false;\n if (!('records' in value) || value['records'] === undefined) return false;\n return true;\n}\n\nexport function RedPacketClaimsPageFromJSON(json: any): RedPacketClaimsPage {\n return RedPacketClaimsPageFromJSONTyped(json, false);\n}\n\nexport function RedPacketClaimsPageFromJSONTyped(json: any, ignoreDiscriminator: boolean): RedPacketClaimsPage {\n if (json == null) {\n return json;\n }\n return {\n \n 'total': json['total'],\n 'hasNextPage': json['hasNextPage'],\n 'startCursor': json['startCursor'],\n 'endCursor': json['endCursor'],\n 'records': ((json['records'] as Array<any>).map(RedPacketClaimDTOFromJSON)),\n };\n}\n\nexport function RedPacketClaimsPageToJSON(json: any): RedPacketClaimsPage {\n return RedPacketClaimsPageToJSONTyped(json, false);\n}\n\nexport function RedPacketClaimsPageToJSONTyped(value?: RedPacketClaimsPage | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'total': value['total'],\n 'hasNextPage': value['hasNextPage'],\n 'startCursor': value['startCursor'],\n 'endCursor': value['endCursor'],\n 'records': ((value['records'] as Array<any>).map(RedPacketClaimDTOToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { Chain } from './Chain';\nimport {\n ChainFromJSON,\n ChainFromJSONTyped,\n ChainToJSON,\n ChainToJSONTyped,\n} from './Chain';\n\n/**\n * \n * @export\n * @interface RedPacketDTO\n */\nexport interface RedPacketDTO {\n /**\n * GLOBAL.CHAIN.DESCRIPTION\n * @type {Chain}\n * @memberof RedPacketDTO\n */\n chain: Chain;\n /**\n * DTO.RED_PACKET.ID\n * @type {string}\n * @memberof RedPacketDTO\n */\n id: string;\n /**\n * DTO.RED_PACKET.SHARE_ID\n * @type {string}\n * @memberof RedPacketDTO\n */\n shareId: string;\n /**\n * DTO.RED_PACKET.TX_HASH\n * @type {string}\n * @memberof RedPacketDTO\n */\n txHash: string;\n /**\n * DTO.RED_PACKET.CREATOR\n * @type {string}\n * @memberof RedPacketDTO\n */\n creator: string;\n /**\n * DTO.RED_PACKET.MINT\n * @type {string}\n * @memberof RedPacketDTO\n */\n mint: string;\n /**\n * DTO.RED_PACKET.TOTAL_AMOUNT\n * @type {string}\n * @memberof RedPacketDTO\n */\n totalAmount: string;\n /**\n * DTO.RED_PACKET.MEMO\n * @type {string}\n * @memberof RedPacketDTO\n */\n memo: string;\n /**\n * DTO.RED_PACKET.MAX_CLAIMS\n * @type {number}\n * @memberof RedPacketDTO\n */\n maxClaims: number;\n /**\n * DTO.RED_PACKET.CLAIM_AUTHORITY\n * @type {string}\n * @memberof RedPacketDTO\n */\n claimAuthority: string;\n /**\n * DTO.RED_PACKET.WITHDRAWED\n * @type {boolean}\n * @memberof RedPacketDTO\n */\n expired: boolean;\n /**\n * DTO.RED_PACKET.EXPIRATION\n * @type {number}\n * @memberof RedPacketDTO\n */\n expiration: number;\n /**\n * DTO.RED_PACKET.CREATED_AT\n * @type {number}\n * @memberof RedPacketDTO\n */\n createdAt: number;\n /**\n * DTO.RED_PACKET.EXPIRES_AT\n * @type {number}\n * @memberof RedPacketDTO\n */\n expiredAt: number;\n /**\n * DTO.RED_PACKET.CLAIMED_COUNT\n * @type {number}\n * @memberof RedPacketDTO\n */\n claimedCount: number;\n /**\n * DTO.RED_PACKET.CLAIMED_AMOUNT\n * @type {string}\n * @memberof RedPacketDTO\n */\n claimedAmount: string;\n /**\n * DTO.RED_PACKET.REFUND_AMOUNT\n * @type {string}\n * @memberof RedPacketDTO\n */\n refundedAmount: string;\n}\n\n\n\n/**\n * Check if a given object implements the RedPacketDTO interface.\n */\nexport function instanceOfRedPacketDTO(value: object): value is RedPacketDTO {\n if (!('chain' in value) || value['chain'] === undefined) return false;\n if (!('id' in value) || value['id'] === undefined) return false;\n if (!('shareId' in value) || value['shareId'] === undefined) return false;\n if (!('txHash' in value) || value['txHash'] === undefined) return false;\n if (!('creator' in value) || value['creator'] === undefined) return false;\n if (!('mint' in value) || value['mint'] === undefined) return false;\n if (!('totalAmount' in value) || value['totalAmount'] === undefined) return false;\n if (!('memo' in value) || value['memo'] === undefined) return false;\n if (!('maxClaims' in value) || value['maxClaims'] === undefined) return false;\n if (!('claimAuthority' in value) || value['claimAuthority'] === undefined) return false;\n if (!('expired' in value) || value['expired'] === undefined) return false;\n if (!('expiration' in value) || value['expiration'] === undefined) return false;\n if (!('createdAt' in value) || value['createdAt'] === undefined) return false;\n if (!('expiredAt' in value) || value['expiredAt'] === undefined) return false;\n if (!('claimedCount' in value) || value['claimedCount'] === undefined) return false;\n if (!('claimedAmount' in value) || value['claimedAmount'] === undefined) return false;\n if (!('refundedAmount' in value) || value['refundedAmount'] === undefined) return false;\n return true;\n}\n\nexport function RedPacketDTOFromJSON(json: any): RedPacketDTO {\n return RedPacketDTOFromJSONTyped(json, false);\n}\n\nexport function RedPacketDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): RedPacketDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'chain': ChainFromJSON(json['chain']),\n 'id': json['id'],\n 'shareId': json['shareId'],\n 'txHash': json['txHash'],\n 'creator': json['creator'],\n 'mint': json['mint'],\n 'totalAmount': json['totalAmount'],\n 'memo': json['memo'],\n 'maxClaims': json['maxClaims'],\n 'claimAuthority': json['claimAuthority'],\n 'expired': json['expired'],\n 'expiration': json['expiration'],\n 'createdAt': json['createdAt'],\n 'expiredAt': json['expiredAt'],\n 'claimedCount': json['claimedCount'],\n 'claimedAmount': json['claimedAmount'],\n 'refundedAmount': json['refundedAmount'],\n };\n}\n\nexport function RedPacketDTOToJSON(json: any): RedPacketDTO {\n return RedPacketDTOToJSONTyped(json, false);\n}\n\nexport function RedPacketDTOToJSONTyped(value?: RedPacketDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'chain': ChainToJSON(value['chain']),\n 'id': value['id'],\n 'shareId': value['shareId'],\n 'txHash': value['txHash'],\n 'creator': value['creator'],\n 'mint': value['mint'],\n 'totalAmount': value['totalAmount'],\n 'memo': value['memo'],\n 'maxClaims': value['maxClaims'],\n 'claimAuthority': value['claimAuthority'],\n 'expired': value['expired'],\n 'expiration': value['expiration'],\n 'createdAt': value['createdAt'],\n 'expiredAt': value['expiredAt'],\n 'claimedCount': value['claimedCount'],\n 'claimedAmount': value['claimedAmount'],\n 'refundedAmount': value['refundedAmount'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface RedPacketReply\n */\nexport interface RedPacketReply {\n /**\n * DTO.RED_PACKET.SERIALIZED_TX\n * @type {string}\n * @memberof RedPacketReply\n */\n txSerialize: string;\n}\n\n/**\n * Check if a given object implements the RedPacketReply interface.\n */\nexport function instanceOfRedPacketReply(value: object): value is RedPacketReply {\n if (!('txSerialize' in value) || value['txSerialize'] === undefined) return false;\n return true;\n}\n\nexport function RedPacketReplyFromJSON(json: any): RedPacketReply {\n return RedPacketReplyFromJSONTyped(json, false);\n}\n\nexport function RedPacketReplyFromJSONTyped(json: any, ignoreDiscriminator: boolean): RedPacketReply {\n if (json == null) {\n return json;\n }\n return {\n \n 'txSerialize': json['txSerialize'],\n };\n}\n\nexport function RedPacketReplyToJSON(json: any): RedPacketReply {\n return RedPacketReplyToJSONTyped(json, false);\n}\n\nexport function RedPacketReplyToJSONTyped(value?: RedPacketReply | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'txSerialize': value['txSerialize'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface RedPacketSendTxInput\n */\nexport interface RedPacketSendTxInput {\n /**\n * DTO.RED_PACKET.SIGNED_TX\n * @type {string}\n * @memberof RedPacketSendTxInput\n */\n signedTx: string;\n}\n\n/**\n * Check if a given object implements the RedPacketSendTxInput interface.\n */\nexport function instanceOfRedPacketSendTxInput(value: object): value is RedPacketSendTxInput {\n if (!('signedTx' in value) || value['signedTx'] === undefined) return false;\n return true;\n}\n\nexport function RedPacketSendTxInputFromJSON(json: any): RedPacketSendTxInput {\n return RedPacketSendTxInputFromJSONTyped(json, false);\n}\n\nexport function RedPacketSendTxInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): RedPacketSendTxInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'signedTx': json['signedTx'],\n };\n}\n\nexport function RedPacketSendTxInputToJSON(json: any): RedPacketSendTxInput {\n return RedPacketSendTxInputToJSONTyped(json, false);\n}\n\nexport function RedPacketSendTxInputToJSONTyped(value?: RedPacketSendTxInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'signedTx': value['signedTx'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface RedPacketSendTxResponse\n */\nexport interface RedPacketSendTxResponse {\n /**\n * DTO.RED_PACKET.SIGNATURE\n * @type {string}\n * @memberof RedPacketSendTxResponse\n */\n signature: string;\n}\n\n/**\n * Check if a given object implements the RedPacketSendTxResponse interface.\n */\nexport function instanceOfRedPacketSendTxResponse(value: object): value is RedPacketSendTxResponse {\n if (!('signature' in value) || value['signature'] === undefined) return false;\n return true;\n}\n\nexport function RedPacketSendTxResponseFromJSON(json: any): RedPacketSendTxResponse {\n return RedPacketSendTxResponseFromJSONTyped(json, false);\n}\n\nexport function RedPacketSendTxResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): RedPacketSendTxResponse {\n if (json == null) {\n return json;\n }\n return {\n \n 'signature': json['signature'],\n };\n}\n\nexport function RedPacketSendTxResponseToJSON(json: any): RedPacketSendTxResponse {\n return RedPacketSendTxResponseToJSONTyped(json, false);\n}\n\nexport function RedPacketSendTxResponseToJSONTyped(value?: RedPacketSendTxResponse | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'signature': value['signature'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { RedPacketDTO } from './RedPacketDTO';\nimport {\n RedPacketDTOFromJSON,\n RedPacketDTOFromJSONTyped,\n RedPacketDTOToJSON,\n RedPacketDTOToJSONTyped,\n} from './RedPacketDTO';\n\n/**\n * \n * @export\n * @interface RedPacketsPage\n */\nexport interface RedPacketsPage {\n /**\n * DTO.PAGE.TOTAL\n * @type {number}\n * @memberof RedPacketsPage\n */\n total: number;\n /**\n * DTO.PAGE.HAS_NEXT\n * @type {boolean}\n * @memberof RedPacketsPage\n */\n hasNextPage: boolean;\n /**\n * DTO.PAGE.START_CURSOR\n * @type {string}\n * @memberof RedPacketsPage\n */\n startCursor: string;\n /**\n * DTO.PAGE.END_CURSOR\n * @type {string}\n * @memberof RedPacketsPage\n */\n endCursor: string;\n /**\n * Array of red packets\n * @type {Array<RedPacketDTO>}\n * @memberof RedPacketsPage\n */\n records: Array<RedPacketDTO>;\n}\n\n/**\n * Check if a given object implements the RedPacketsPage interface.\n */\nexport function instanceOfRedPacketsPage(value: object): value is RedPacketsPage {\n if (!('total' in value) || value['total'] === undefined) return false;\n if (!('hasNextPage' in value) || value['hasNextPage'] === undefined) return false;\n if (!('startCursor' in value) || value['startCursor'] === undefined) return false;\n if (!('endCursor' in value) || value['endCursor'] === undefined) return false;\n if (!('records' in value) || value['records'] === undefined) return false;\n return true;\n}\n\nexport function RedPacketsPageFromJSON(json: any): RedPacketsPage {\n return RedPacketsPageFromJSONTyped(json, false);\n}\n\nexport function RedPacketsPageFromJSONTyped(json: any, ignoreDiscriminator: boolean): RedPacketsPage {\n if (json == null) {\n return json;\n }\n return {\n \n 'total': json['total'],\n 'hasNextPage': json['hasNextPage'],\n 'startCursor': json['startCursor'],\n 'endCursor': json['endCursor'],\n 'records': ((json['records'] as Array<any>).map(RedPacketDTOFromJSON)),\n };\n}\n\nexport function RedPacketsPageToJSON(json: any): RedPacketsPage {\n return RedPacketsPageToJSONTyped(json, false);\n}\n\nexport function RedPacketsPageToJSONTyped(value?: RedPacketsPage | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'total': value['total'],\n 'hasNextPage': value['hasNextPage'],\n 'startCursor': value['startCursor'],\n 'endCursor': value['endCursor'],\n 'records': ((value['records'] as Array<any>).map(RedPacketDTOToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface SendTxInput\n */\nexport interface SendTxInput {\n /**\n * DTO.TRANSACTION.SEND.SIGNED_TX\n * @type {string}\n * @memberof SendTxInput\n */\n signedTx: string;\n /**\n * DTO.TRANSACTION.SEND.SUBMIT_TYPE\n * @type {string}\n * @memberof SendTxInput\n */\n submitType?: SendTxInputSubmitTypeEnum;\n /**\n * DTO.TRANSACTION.SEND.OPTIONS\n * @type {object}\n * @memberof SendTxInput\n */\n options?: object;\n}\n\n\n/**\n * @export\n */\nexport const SendTxInputSubmitTypeEnum = {\n Default: 'default',\n Priority: 'priority'\n} as const;\nexport type SendTxInputSubmitTypeEnum = typeof SendTxInputSubmitTypeEnum[keyof typeof SendTxInputSubmitTypeEnum];\n\n\n/**\n * Check if a given object implements the SendTxInput interface.\n */\nexport function instanceOfSendTxInput(value: object): value is SendTxInput {\n if (!('signedTx' in value) || value['signedTx'] === undefined) return false;\n return true;\n}\n\nexport function SendTxInputFromJSON(json: any): SendTxInput {\n return SendTxInputFromJSONTyped(json, false);\n}\n\nexport function SendTxInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): SendTxInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'signedTx': json['signedTx'],\n 'submitType': json['submitType'] == null ? undefined : json['submitType'],\n 'options': json['options'] == null ? undefined : json['options'],\n };\n}\n\nexport function SendTxInputToJSON(json: any): SendTxInput {\n return SendTxInputToJSONTyped(json, false);\n}\n\nexport function SendTxInputToJSONTyped(value?: SendTxInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'signedTx': value['signedTx'],\n 'submitType': value['submitType'],\n 'options': value['options'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface SendTxResponse\n */\nexport interface SendTxResponse {\n /**\n * DTO.TRANSACTION.SEND.SIGNATURE\n * @type {string}\n * @memberof SendTxResponse\n */\n signature: string;\n /**\n * DTO.TRANSACTION.SEND.ELAPSED_TIME\n * @type {number}\n * @memberof SendTxResponse\n */\n elapsedTime: number;\n /**\n * DTO.TRANSACTION.SEND.JOB_ID\n * @type {string}\n * @memberof SendTxResponse\n */\n jobId: string;\n}\n\n/**\n * Check if a given object implements the SendTxResponse interface.\n */\nexport function instanceOfSendTxResponse(value: object): value is SendTxResponse {\n if (!('signature' in value) || value['signature'] === undefined) return false;\n if (!('elapsedTime' in value) || value['elapsedTime'] === undefined) return false;\n if (!('jobId' in value) || value['jobId'] === undefined) return false;\n return true;\n}\n\nexport function SendTxResponseFromJSON(json: any): SendTxResponse {\n return SendTxResponseFromJSONTyped(json, false);\n}\n\nexport function SendTxResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): SendTxResponse {\n if (json == null) {\n return json;\n }\n return {\n \n 'signature': json['signature'],\n 'elapsedTime': json['elapsedTime'],\n 'jobId': json['jobId'],\n };\n}\n\nexport function SendTxResponseToJSON(json: any): SendTxResponse {\n return SendTxResponseToJSONTyped(json, false);\n}\n\nexport function SendTxResponseToJSONTyped(value?: SendTxResponse | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'signature': value['signature'],\n 'elapsedTime': value['elapsedTime'],\n 'jobId': value['jobId'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface SwapInput\n */\nexport interface SwapInput {\n /**\n * DTO.DEX.IDENTIFIER\n * @type {string}\n * @memberof SwapInput\n */\n dex: SwapInputDexEnum;\n /**\n * DTO.DEX.WALLET\n * @type {string}\n * @memberof SwapInput\n */\n userAddress: string;\n /**\n * DTO.DEX.BASE.PRIORITY_FEE\n * @type {string}\n * @memberof SwapInput\n */\n priorityFee?: string;\n /**\n * DTO.DEX.SWAP.POOL_ADDRESS\n * @type {string}\n * @memberof SwapInput\n */\n poolAddress?: string;\n /**\n * DTO.DEX.SWAP.AMOUNT\n * @type {string}\n * @memberof SwapInput\n */\n amount: string;\n /**\n * DTO.DEX.SWAP.MODE\n * @type {string}\n * @memberof SwapInput\n */\n swapMode: SwapInputSwapModeEnum;\n /**\n * DTO.DEX.SWAP.SLIPPAGE\n * @type {number}\n * @memberof SwapInput\n */\n slippage: number;\n /**\n * DTO.DEX.SWAP.INPUT_MINT\n * @type {string}\n * @memberof SwapInput\n */\n inputMint?: string;\n /**\n * DTO.DEX.SWAP.OUTPUT_MINT\n * @type {string}\n * @memberof SwapInput\n */\n outputMint?: string;\n}\n\n\n/**\n * @export\n */\nexport const SwapInputDexEnum = {\n Raydium: 'raydium',\n Pumpfun: 'pumpfun',\n Moonshot: 'moonshot',\n Candy: 'candy',\n Launchpad: 'launchpad'\n} as const;\nexport type SwapInputDexEnum = typeof SwapInputDexEnum[keyof typeof SwapInputDexEnum];\n\n/**\n * @export\n */\nexport const SwapInputSwapModeEnum = {\n ExactIn: 'ExactIn',\n ExactOut: 'ExactOut'\n} as const;\nexport type SwapInputSwapModeEnum = typeof SwapInputSwapModeEnum[keyof typeof SwapInputSwapModeEnum];\n\n\n/**\n * Check if a given object implements the SwapInput interface.\n */\nexport function instanceOfSwapInput(value: object): value is SwapInput {\n if (!('dex' in value) || value['dex'] === undefined) return false;\n if (!('userAddress' in value) || value['userAddress'] === undefined) return false;\n if (!('amount' in value) || value['amount'] === undefined) return false;\n if (!('swapMode' in value) || value['swapMode'] === undefined) return false;\n if (!('slippage' in value) || value['slippage'] === undefined) return false;\n return true;\n}\n\nexport function SwapInputFromJSON(json: any): SwapInput {\n return SwapInputFromJSONTyped(json, false);\n}\n\nexport function SwapInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): SwapInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'dex': json['dex'],\n 'userAddress': json['userAddress'],\n 'priorityFee': json['priorityFee'] == null ? undefined : json['priorityFee'],\n 'poolAddress': json['poolAddress'] == null ? undefined : json['poolAddress'],\n 'amount': json['amount'],\n 'swapMode': json['swapMode'],\n 'slippage': json['slippage'],\n 'inputMint': json['inputMint'] == null ? undefined : json['inputMint'],\n 'outputMint': json['outputMint'] == null ? undefined : json['outputMint'],\n };\n}\n\nexport function SwapInputToJSON(json: any): SwapInput {\n return SwapInputToJSONTyped(json, false);\n}\n\nexport function SwapInputToJSONTyped(value?: SwapInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'dex': value['dex'],\n 'userAddress': value['userAddress'],\n 'priorityFee': value['priorityFee'],\n 'poolAddress': value['poolAddress'],\n 'amount': value['amount'],\n 'swapMode': value['swapMode'],\n 'slippage': value['slippage'],\n 'inputMint': value['inputMint'],\n 'outputMint': value['outputMint'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface SwapReply\n */\nexport interface SwapReply {\n /**\n * DTO.DEX.SWAP.SERIALIZED_TX\n * @type {string}\n * @memberof SwapReply\n */\n serializedTx: string;\n /**\n * DTO.DEX.SWAP.ELAPSED_TIME\n * @type {number}\n * @memberof SwapReply\n */\n elapsedTime: number;\n}\n\n/**\n * Check if a given object implements the SwapReply interface.\n */\nexport function instanceOfSwapReply(value: object): value is SwapReply {\n if (!('serializedTx' in value) || value['serializedTx'] === undefined) return false;\n if (!('elapsedTime' in value) || value['elapsedTime'] === undefined) return false;\n return true;\n}\n\nexport function SwapReplyFromJSON(json: any): SwapReply {\n return SwapReplyFromJSONTyped(json, false);\n}\n\nexport function SwapReplyFromJSONTyped(json: any, ignoreDiscriminator: boolean): SwapReply {\n if (json == null) {\n return json;\n }\n return {\n \n 'serializedTx': json['serializedTx'],\n 'elapsedTime': json['elapsedTime'],\n };\n}\n\nexport function SwapReplyToJSON(json: any): SwapReply {\n return SwapReplyToJSONTyped(json, false);\n}\n\nexport function SwapReplyToJSONTyped(value?: SwapReply | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'serializedTx': value['serializedTx'],\n 'elapsedTime': value['elapsedTime'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface SwapRouteInput\n */\nexport interface SwapRouteInput {\n /**\n * DTO.DEX.IDENTIFIER\n * @type {string}\n * @memberof SwapRouteInput\n */\n dex: SwapRouteInputDexEnum;\n /**\n * DTO.DEX.WALLET\n * @type {string}\n * @memberof SwapRouteInput\n */\n userAddress: string;\n /**\n * DTO.DEX.BASE.PRIORITY_FEE\n * @type {string}\n * @memberof SwapRouteInput\n */\n priorityFee?: string;\n /**\n * DTO.DEX.SWAP.AMOUNT\n * @type {string}\n * @memberof SwapRouteInput\n */\n amount: string;\n /**\n * DTO.DEX.SWAP.MODE\n * @type {string}\n * @memberof SwapRouteInput\n */\n swapMode: SwapRouteInputSwapModeEnum;\n /**\n * DTO.DEX.SWAP.SLIPPAGE\n * @type {number}\n * @memberof SwapRouteInput\n */\n slippage: number;\n /**\n * DTO.DEX.SWAP.INPUT_MINT\n * @type {string}\n * @memberof SwapRouteInput\n */\n inputMint?: string;\n /**\n * DTO.DEX.SWAP.OUTPUT_MINT\n * @type {string}\n * @memberof SwapRouteInput\n */\n outputMint?: string;\n /**\n * DTO.DEX.SWAP.RECIPIENT_ADDRESS\n * @type {string}\n * @memberof SwapRouteInput\n */\n recipientAddress?: string;\n /**\n * DTO.DEX.SWAP.PERMIT\n * @type {string}\n * @memberof SwapRouteInput\n */\n permit?: string;\n /**\n * DTO.DEX.SWAP.DEADLINE\n * @type {number}\n * @memberof SwapRouteInput\n */\n deadline?: number;\n /**\n * DTO.DEX.BASE.TIP_FEE\n * @type {string}\n * @memberof SwapRouteInput\n */\n tipFee?: string;\n /**\n * DTO.DEX.BASE.IS_ANTI_MEV\n * @type {boolean}\n * @memberof SwapRouteInput\n */\n isAntiMev?: boolean;\n}\n\n\n/**\n * @export\n */\nexport const SwapRouteInputDexEnum = {\n Jupiter: 'jupiter',\n Kyberswap: 'kyberswap'\n} as const;\nexport type SwapRouteInputDexEnum = typeof SwapRouteInputDexEnum[keyof typeof SwapRouteInputDexEnum];\n\n/**\n * @export\n */\nexport const SwapRouteInputSwapModeEnum = {\n ExactIn: 'ExactIn',\n ExactOut: 'ExactOut'\n} as const;\nexport type SwapRouteInputSwapModeEnum = typeof SwapRouteInputSwapModeEnum[keyof typeof SwapRouteInputSwapModeEnum];\n\n\n/**\n * Check if a given object implements the SwapRouteInput interface.\n */\nexport function instanceOfSwapRouteInput(value: object): value is SwapRouteInput {\n if (!('dex' in value) || value['dex'] === undefined) return false;\n if (!('userAddress' in value) || value['userAddress'] === undefined) return false;\n if (!('amount' in value) || value['amount'] === undefined) return false;\n if (!('swapMode' in value) || value['swapMode'] === undefined) return false;\n if (!('slippage' in value) || value['slippage'] === undefined) return false;\n return true;\n}\n\nexport function SwapRouteInputFromJSON(json: any): SwapRouteInput {\n return SwapRouteInputFromJSONTyped(json, false);\n}\n\nexport function SwapRouteInputFromJSONTyped(json: any, ignoreDiscriminator: boolean): SwapRouteInput {\n if (json == null) {\n return json;\n }\n return {\n \n 'dex': json['dex'],\n 'userAddress': json['userAddress'],\n 'priorityFee': json['priorityFee'] == null ? undefined : json['priorityFee'],\n 'amount': json['amount'],\n 'swapMode': json['swapMode'],\n 'slippage': json['slippage'],\n 'inputMint': json['inputMint'] == null ? undefined : json['inputMint'],\n 'outputMint': json['outputMint'] == null ? undefined : json['outputMint'],\n 'recipientAddress': json['recipientAddress'] == null ? undefined : json['recipientAddress'],\n 'permit': json['permit'] == null ? undefined : json['permit'],\n 'deadline': json['deadline'] == null ? undefined : json['deadline'],\n 'tipFee': json['tipFee'] == null ? undefined : json['tipFee'],\n 'isAntiMev': json['isAntiMev'] == null ? undefined : json['isAntiMev'],\n };\n}\n\nexport function SwapRouteInputToJSON(json: any): SwapRouteInput {\n return SwapRouteInputToJSONTyped(json, false);\n}\n\nexport function SwapRouteInputToJSONTyped(value?: SwapRouteInput | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'dex': value['dex'],\n 'userAddress': value['userAddress'],\n 'priorityFee': value['priorityFee'],\n 'amount': value['amount'],\n 'swapMode': value['swapMode'],\n 'slippage': value['slippage'],\n 'inputMint': value['inputMint'],\n 'outputMint': value['outputMint'],\n 'recipientAddress': value['recipientAddress'],\n 'permit': value['permit'],\n 'deadline': value['deadline'],\n 'tipFee': value['tipFee'],\n 'isAntiMev': value['isAntiMev'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { SwapRouteInput } from './SwapRouteInput';\nimport {\n SwapRouteInputFromJSON,\n SwapRouteInputFromJSONTyped,\n SwapRouteInputToJSON,\n SwapRouteInputToJSONTyped,\n} from './SwapRouteInput';\n\n/**\n * \n * @export\n * @interface SwapRouteResponse\n */\nexport interface SwapRouteResponse {\n /**\n * DTO.DEX.SWAP.ARGS\n * @type {SwapRouteInput}\n * @memberof SwapRouteResponse\n */\n args: SwapRouteInput;\n /**\n * DTO.DEX.SWAP.SERIALIZED_TX\n * @type {string}\n * @memberof SwapRouteResponse\n */\n serializedTx: string;\n /**\n * DTO.DEX.SWAP.ROUTE_INFO\n * @type {object}\n * @memberof SwapRouteResponse\n */\n routeInfo: object;\n /**\n * DTO.DEX.SWAP.ELAPSED_TIME\n * @type {number}\n * @memberof SwapRouteResponse\n */\n elapsedTime: number;\n}\n\n/**\n * Check if a given object implements the SwapRouteResponse interface.\n */\nexport function instanceOfSwapRouteResponse(value: object): value is SwapRouteResponse {\n if (!('args' in value) || value['args'] === undefined) return false;\n if (!('serializedTx' in value) || value['serializedTx'] === undefined) return false;\n if (!('routeInfo' in value) || value['routeInfo'] === undefined) return false;\n if (!('elapsedTime' in value) || value['elapsedTime'] === undefined) return false;\n return true;\n}\n\nexport function SwapRouteResponseFromJSON(json: any): SwapRouteResponse {\n return SwapRouteResponseFromJSONTyped(json, false);\n}\n\nexport function SwapRouteResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): SwapRouteResponse {\n if (json == null) {\n return json;\n }\n return {\n \n 'args': SwapRouteInputFromJSON(json['args']),\n 'serializedTx': json['serializedTx'],\n 'routeInfo': json['routeInfo'],\n 'elapsedTime': json['elapsedTime'],\n };\n}\n\nexport function SwapRouteResponseToJSON(json: any): SwapRouteResponse {\n return SwapRouteResponseToJSONTyped(json, false);\n}\n\nexport function SwapRouteResponseToJSONTyped(value?: SwapRouteResponse | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'args': SwapRouteInputToJSON(value['args']),\n 'serializedTx': value['serializedTx'],\n 'routeInfo': value['routeInfo'],\n 'elapsedTime': value['elapsedTime'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TokenMarketData\n */\nexport interface TokenMarketData {\n /**\n * DTO.TOKEN.MARKET_CAP.TOTAL_SUPPLY\n * @type {string}\n * @memberof TokenMarketData\n */\n totalSupply: string;\n /**\n * DTO.TOKEN.MARKET_CAP.MARKET_CAP_IN_SOL\n * @type {string}\n * @memberof TokenMarketData\n */\n marketCapInSol?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.MARKET_CAP_IN_USD\n * @type {string}\n * @memberof TokenMarketData\n */\n marketCapInUsd: string;\n /**\n * DTO.TOKEN.MARKET_CAP.TOP10_TOTAL_HOLDINGS\n * @type {string}\n * @memberof TokenMarketData\n */\n top10TotalHoldings?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.TOP10_HOLDINGS_RATIO\n * @type {string}\n * @memberof TokenMarketData\n */\n top10HoldingsRatio?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.TOP100_TOTAL_HOLDINGS\n * @type {string}\n * @memberof TokenMarketData\n */\n top100TotalHoldings?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.TOP100_HOLDINGS_RATIO\n * @type {string}\n * @memberof TokenMarketData\n */\n top100HoldingsRatio?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.HOLDERS\n * @type {number}\n * @memberof TokenMarketData\n */\n holders: number;\n /**\n * DTO.TOKEN.MARKET_CAP.PRICE_IN_SOL\n * @type {string}\n * @memberof TokenMarketData\n */\n priceInSol?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.PRICE_IN_USD\n * @type {string}\n * @memberof TokenMarketData\n */\n priceInUsd: string;\n /**\n * DTO.TOKEN.MARKET_CAP.LIQUIDITY_IN_SOL\n * @type {string}\n * @memberof TokenMarketData\n */\n tvlInSol?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.LIQUIDITY_IN_USD\n * @type {string}\n * @memberof TokenMarketData\n */\n tvlInUsd: string;\n /**\n * DTO.TOKEN.MARKET_CAP.COMPLETION_RATIO\n * @type {string}\n * @memberof TokenMarketData\n */\n completionRatio?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.DEV_COUNT\n * @type {number}\n * @memberof TokenMarketData\n */\n devTeamCount?: number;\n /**\n * DTO.TOKEN.MARKET_CAP.DEV_AMOUNT\n * @type {string}\n * @memberof TokenMarketData\n */\n devTeamAmount?: string;\n /**\n * DTO.TOKEN.MARKET_CAP.DEV_RATIO\n * @type {string}\n * @memberof TokenMarketData\n */\n devTeamRatio?: string;\n}\n\n/**\n * Check if a given object implements the TokenMarketData interface.\n */\nexport function instanceOfTokenMarketData(value: object): value is TokenMarketData {\n if (!('totalSupply' in value) || value['totalSupply'] === undefined) return false;\n if (!('marketCapInUsd' in value) || value['marketCapInUsd'] === undefined) return false;\n if (!('holders' in value) || value['holders'] === undefined) return false;\n if (!('priceInUsd' in value) || value['priceInUsd'] === undefined) return false;\n if (!('tvlInUsd' in value) || value['tvlInUsd'] === undefined) return false;\n return true;\n}\n\nexport function TokenMarketDataFromJSON(json: any): TokenMarketData {\n return TokenMarketDataFromJSONTyped(json, false);\n}\n\nexport function TokenMarketDataFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenMarketData {\n if (json == null) {\n return json;\n }\n return {\n \n 'totalSupply': json['totalSupply'],\n 'marketCapInSol': json['marketCapInSol'] == null ? undefined : json['marketCapInSol'],\n 'marketCapInUsd': json['marketCapInUsd'],\n 'top10TotalHoldings': json['top10TotalHoldings'] == null ? undefined : json['top10TotalHoldings'],\n 'top10HoldingsRatio': json['top10HoldingsRatio'] == null ? undefined : json['top10HoldingsRatio'],\n 'top100TotalHoldings': json['top100TotalHoldings'] == null ? undefined : json['top100TotalHoldings'],\n 'top100HoldingsRatio': json['top100HoldingsRatio'] == null ? undefined : json['top100HoldingsRatio'],\n 'holders': json['holders'],\n 'priceInSol': json['priceInSol'] == null ? undefined : json['priceInSol'],\n 'priceInUsd': json['priceInUsd'],\n 'tvlInSol': json['tvlInSol'] == null ? undefined : json['tvlInSol'],\n 'tvlInUsd': json['tvlInUsd'],\n 'completionRatio': json['completionRatio'] == null ? undefined : json['completionRatio'],\n 'devTeamCount': json['devTeamCount'] == null ? undefined : json['devTeamCount'],\n 'devTeamAmount': json['devTeamAmount'] == null ? undefined : json['devTeamAmount'],\n 'devTeamRatio': json['devTeamRatio'] == null ? undefined : json['devTeamRatio'],\n };\n}\n\nexport function TokenMarketDataToJSON(json: any): TokenMarketData {\n return TokenMarketDataToJSONTyped(json, false);\n}\n\nexport function TokenMarketDataToJSONTyped(value?: TokenMarketData | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'totalSupply': value['totalSupply'],\n 'marketCapInSol': value['marketCapInSol'],\n 'marketCapInUsd': value['marketCapInUsd'],\n 'top10TotalHoldings': value['top10TotalHoldings'],\n 'top10HoldingsRatio': value['top10HoldingsRatio'],\n 'top100TotalHoldings': value['top100TotalHoldings'],\n 'top100HoldingsRatio': value['top100HoldingsRatio'],\n 'holders': value['holders'],\n 'priceInSol': value['priceInSol'],\n 'priceInUsd': value['priceInUsd'],\n 'tvlInSol': value['tvlInSol'],\n 'tvlInUsd': value['tvlInUsd'],\n 'completionRatio': value['completionRatio'],\n 'devTeamCount': value['devTeamCount'],\n 'devTeamAmount': value['devTeamAmount'],\n 'devTeamRatio': value['devTeamRatio'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TokenExtraDTO\n */\nexport interface TokenExtraDTO {\n /**\n * DTO.TOKEN.EXTRA.COLLECTION_ADDRESS\n * @type {string}\n * @memberof TokenExtraDTO\n */\n collectionAddress?: string;\n /**\n * DTO.TOKEN.EXTRA.EDITION_NONCE\n * @type {number}\n * @memberof TokenExtraDTO\n */\n editionNonce?: number;\n /**\n * DTO.TOKEN.EXTRA.FUNGIBLE\n * @type {boolean}\n * @memberof TokenExtraDTO\n */\n fungible?: boolean;\n /**\n * DTO.TOKEN.EXTRA.IS_MUTABLE\n * @type {boolean}\n * @memberof TokenExtraDTO\n */\n isMutable?: boolean;\n /**\n * DTO.TOKEN.EXTRA.KEY\n * @type {string}\n * @memberof TokenExtraDTO\n */\n key?: string;\n /**\n * DTO.TOKEN.EXTRA.IS_NATIVE\n * @type {boolean}\n * @memberof TokenExtraDTO\n */\n isNative?: boolean;\n /**\n * DTO.TOKEN.EXTRA.PRIMARY_SALE_HAPPENED\n * @type {boolean}\n * @memberof TokenExtraDTO\n */\n primarySaleHappened?: boolean;\n /**\n * DTO.TOKEN.EXTRA.LAUNCH_FROM_PROGRAM_ADDRESS\n * @type {string}\n * @memberof TokenExtraDTO\n */\n launchFromProgramAddress?: string;\n /**\n * DTO.TOKEN.EXTRA.LAUNCH_FROM_PROTOCOL_FAMILY\n * @type {string}\n * @memberof TokenExtraDTO\n */\n launchFromProtocolFamily?: string;\n /**\n * DTO.TOKEN.EXTRA.PROGRAM_ADDRESS\n * @type {string}\n * @memberof TokenExtraDTO\n */\n programAddress?: string;\n /**\n * DTO.TOKEN.EXTRA.MIGRATED_TO_PROGRAM_ADDRESS\n * @type {string}\n * @memberof TokenExtraDTO\n */\n migratedToProgramAddress?: string;\n /**\n * DTO.TOKEN.EXTRA.MIGRATED_TO_PROTOCOL_FAMILY\n * @type {string}\n * @memberof TokenExtraDTO\n */\n migratedToProtocolFamily?: string;\n /**\n * DTO.TOKEN.EXTRA.MIGRATED_TO_POOL_ADDRESS\n * @type {string}\n * @memberof TokenExtraDTO\n */\n migratedToPoolAddress?: string;\n /**\n * DTO.TOKEN.EXTRA.MIGRATED_AT\n * @type {number}\n * @memberof TokenExtraDTO\n */\n migratedAt?: number;\n /**\n * DTO.TOKEN.EXTRA.SELLER_FEE_BASIS_POINTS\n * @type {number}\n * @memberof TokenExtraDTO\n */\n sellerFeeBasisPoints?: number;\n /**\n * DTO.TOKEN.EXTRA.TOKEN_STANDARD\n * @type {string}\n * @memberof TokenExtraDTO\n */\n tokenStandard?: string;\n /**\n * DTO.TOKEN.EXTRA.MINT_AUTHORITY\n * @type {string}\n * @memberof TokenExtraDTO\n */\n mintAuthority?: string;\n /**\n * DTO.TOKEN.EXTRA.FREEZE_AUTHORITY\n * @type {string}\n * @memberof TokenExtraDTO\n */\n freezeAuthority?: string;\n /**\n * DTO.TOKEN.EXTRA.UPDATE_AUTHORITY\n * @type {string}\n * @memberof TokenExtraDTO\n */\n updateAuthority?: string;\n /**\n * DTO.TOKEN.EXTRA.IS_VERIFIED_COLLECTION\n * @type {boolean}\n * @memberof TokenExtraDTO\n */\n isVerifiedCollection?: boolean;\n /**\n * DTO.TOKEN.EXTRA.IS_WRAPPED\n * @type {boolean}\n * @memberof TokenExtraDTO\n */\n isWrapped?: boolean;\n}\n\n/**\n * Check if a given object implements the TokenExtraDTO interface.\n */\nexport function instanceOfTokenExtraDTO(value: object): value is TokenExtraDTO {\n return true;\n}\n\nexport function TokenExtraDTOFromJSON(json: any): TokenExtraDTO {\n return TokenExtraDTOFromJSONTyped(json, false);\n}\n\nexport function TokenExtraDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenExtraDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'collectionAddress': json['collectionAddress'] == null ? undefined : json['collectionAddress'],\n 'editionNonce': json['editionNonce'] == null ? undefined : json['editionNonce'],\n 'fungible': json['fungible'] == null ? undefined : json['fungible'],\n 'isMutable': json['isMutable'] == null ? undefined : json['isMutable'],\n 'key': json['key'] == null ? undefined : json['key'],\n 'isNative': json['isNative'] == null ? undefined : json['isNative'],\n 'primarySaleHappened': json['primarySaleHappened'] == null ? undefined : json['primarySaleHappened'],\n 'launchFromProgramAddress': json['launchFromProgramAddress'] == null ? undefined : json['launchFromProgramAddress'],\n 'launchFromProtocolFamily': json['launchFromProtocolFamily'] == null ? undefined : json['launchFromProtocolFamily'],\n 'programAddress': json['programAddress'] == null ? undefined : json['programAddress'],\n 'migratedToProgramAddress': json['migratedToProgramAddress'] == null ? undefined : json['migratedToProgramAddress'],\n 'migratedToProtocolFamily': json['migratedToProtocolFamily'] == null ? undefined : json['migratedToProtocolFamily'],\n 'migratedToPoolAddress': json['migratedToPoolAddress'] == null ? undefined : json['migratedToPoolAddress'],\n 'migratedAt': json['migratedAt'] == null ? undefined : json['migratedAt'],\n 'sellerFeeBasisPoints': json['sellerFeeBasisPoints'] == null ? undefined : json['sellerFeeBasisPoints'],\n 'tokenStandard': json['tokenStandard'] == null ? undefined : json['tokenStandard'],\n 'mintAuthority': json['mintAuthority'] == null ? undefined : json['mintAuthority'],\n 'freezeAuthority': json['freezeAuthority'] == null ? undefined : json['freezeAuthority'],\n 'updateAuthority': json['updateAuthority'] == null ? undefined : json['updateAuthority'],\n 'isVerifiedCollection': json['isVerifiedCollection'] == null ? undefined : json['isVerifiedCollection'],\n 'isWrapped': json['isWrapped'] == null ? undefined : json['isWrapped'],\n };\n}\n\nexport function TokenExtraDTOToJSON(json: any): TokenExtraDTO {\n return TokenExtraDTOToJSONTyped(json, false);\n}\n\nexport function TokenExtraDTOToJSONTyped(value?: TokenExtraDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'collectionAddress': value['collectionAddress'],\n 'editionNonce': value['editionNonce'],\n 'fungible': value['fungible'],\n 'isMutable': value['isMutable'],\n 'key': value['key'],\n 'isNative': value['isNative'],\n 'primarySaleHappened': value['primarySaleHappened'],\n 'launchFromProgramAddress': value['launchFromProgramAddress'],\n 'launchFromProtocolFamily': value['launchFromProtocolFamily'],\n 'programAddress': value['programAddress'],\n 'migratedToProgramAddress': value['migratedToProgramAddress'],\n 'migratedToProtocolFamily': value['migratedToProtocolFamily'],\n 'migratedToPoolAddress': value['migratedToPoolAddress'],\n 'migratedAt': value['migratedAt'],\n 'sellerFeeBasisPoints': value['sellerFeeBasisPoints'],\n 'tokenStandard': value['tokenStandard'],\n 'mintAuthority': value['mintAuthority'],\n 'freezeAuthority': value['freezeAuthority'],\n 'updateAuthority': value['updateAuthority'],\n 'isVerifiedCollection': value['isVerifiedCollection'],\n 'isWrapped': value['isWrapped'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TokenCreatorsDTO\n */\nexport interface TokenCreatorsDTO {\n /**\n * DTO.TOKEN.CREATORS.ADDRESS\n * @type {string}\n * @memberof TokenCreatorsDTO\n */\n address?: string;\n /**\n * DTO.TOKEN.CREATORS.SHARE\n * @type {number}\n * @memberof TokenCreatorsDTO\n */\n share?: number;\n /**\n * DTO.TOKEN.CREATORS.IS_VERIFIED\n * @type {boolean}\n * @memberof TokenCreatorsDTO\n */\n isVerified?: boolean;\n}\n\n/**\n * Check if a given object implements the TokenCreatorsDTO interface.\n */\nexport function instanceOfTokenCreatorsDTO(value: object): value is TokenCreatorsDTO {\n return true;\n}\n\nexport function TokenCreatorsDTOFromJSON(json: any): TokenCreatorsDTO {\n return TokenCreatorsDTOFromJSONTyped(json, false);\n}\n\nexport function TokenCreatorsDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenCreatorsDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'address': json['address'] == null ? undefined : json['address'],\n 'share': json['share'] == null ? undefined : json['share'],\n 'isVerified': json['isVerified'] == null ? undefined : json['isVerified'],\n };\n}\n\nexport function TokenCreatorsDTOToJSON(json: any): TokenCreatorsDTO {\n return TokenCreatorsDTOToJSONTyped(json, false);\n}\n\nexport function TokenCreatorsDTOToJSONTyped(value?: TokenCreatorsDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'address': value['address'],\n 'share': value['share'],\n 'isVerified': value['isVerified'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TokenStat\n */\nexport interface TokenStat {\n /**\n * DTO.TOKEN.STAT.ADDRESS\n * @type {string}\n * @memberof TokenStat\n */\n address: string;\n /**\n * DTO.TOKEN.STAT.PRICE_1M\n * @type {string}\n * @memberof TokenStat\n */\n price1m: string;\n /**\n * DTO.TOKEN.STAT.BUYS_1M\n * @type {number}\n * @memberof TokenStat\n */\n buys1m: number;\n /**\n * DTO.TOKEN.STAT.SELLS_1M\n * @type {number}\n * @memberof TokenStat\n */\n sells1m: number;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_1M\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumes1m: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_1M\n * @type {string}\n * @memberof TokenStat\n */\n sellsVolumes1m: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_1M\n * @type {string}\n * @memberof TokenStat\n */\n volumes1m: string;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_1M\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumesInUsd1m: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_1M\n * @type {string}\n * @memberof TokenStat\n */\n sellVolumesInUsd1m: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_IN_USD_1M\n * @type {string}\n * @memberof TokenStat\n */\n volumesInUsd1m: string;\n /**\n * DTO.TOKEN.STAT.BUYERS_1M\n * @type {number}\n * @memberof TokenStat\n */\n buyers1m?: number;\n /**\n * DTO.TOKEN.STAT.SELLERS_1M\n * @type {number}\n * @memberof TokenStat\n */\n sellers1m?: number;\n /**\n * DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_1M\n * @type {string}\n * @memberof TokenStat\n */\n openPriceInUsd1m: string;\n /**\n * DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_1M\n * @type {string}\n * @memberof TokenStat\n */\n closePriceInUsd1m: string;\n /**\n * DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_1M\n * @type {string}\n * @memberof TokenStat\n */\n priceChangeRatioInUsd1m: string;\n /**\n * DTO.TOKEN.STAT.TRADES_1M\n * @type {number}\n * @memberof TokenStat\n */\n trades1m: number;\n /**\n * DTO.TOKEN.STAT.TRADERS_1M\n * @type {number}\n * @memberof TokenStat\n */\n traders1m?: number;\n /**\n * DTO.TOKEN.STAT.HIGH_IN_USD_1M\n * @type {string}\n * @memberof TokenStat\n */\n highInUsd1m?: string;\n /**\n * DTO.TOKEN.STAT.LOW_IN_USD_1M\n * @type {string}\n * @memberof TokenStat\n */\n lowInUsd1m?: string;\n /**\n * DTO.TOKEN.STAT.PRICE_5M\n * @type {string}\n * @memberof TokenStat\n */\n price5m: string;\n /**\n * DTO.TOKEN.STAT.BUYS_5M\n * @type {number}\n * @memberof TokenStat\n */\n buys5m: number;\n /**\n * DTO.TOKEN.STAT.SELLS_5M\n * @type {number}\n * @memberof TokenStat\n */\n sells5m: number;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_5M\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumes5m: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_5M\n * @type {string}\n * @memberof TokenStat\n */\n sellsVolumes5m: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_5M\n * @type {string}\n * @memberof TokenStat\n */\n volumes5m: string;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_5M\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumesInUsd5m: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_5M\n * @type {string}\n * @memberof TokenStat\n */\n sellVolumesInUsd5m: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_IN_USD_5M\n * @type {string}\n * @memberof TokenStat\n */\n volumesInUsd5m: string;\n /**\n * DTO.TOKEN.STAT.BUYERS_5M\n * @type {number}\n * @memberof TokenStat\n */\n buyers5m?: number;\n /**\n * DTO.TOKEN.STAT.SELLERS_5M\n * @type {number}\n * @memberof TokenStat\n */\n sellers5m?: number;\n /**\n * DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_5M\n * @type {string}\n * @memberof TokenStat\n */\n openPriceInUsd5m: string;\n /**\n * DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_5M\n * @type {string}\n * @memberof TokenStat\n */\n closePriceInUsd5m: string;\n /**\n * DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_5M\n * @type {string}\n * @memberof TokenStat\n */\n priceChangeRatioInUsd5m: string;\n /**\n * DTO.TOKEN.STAT.TRADES_5M\n * @type {number}\n * @memberof TokenStat\n */\n trades5m: number;\n /**\n * DTO.TOKEN.STAT.TRADERS_5M\n * @type {number}\n * @memberof TokenStat\n */\n traders5m?: number;\n /**\n * DTO.TOKEN.STAT.HIGH_IN_USD_5M\n * @type {string}\n * @memberof TokenStat\n */\n highInUsd5m?: string;\n /**\n * DTO.TOKEN.STAT.LOW_IN_USD_5M\n * @type {string}\n * @memberof TokenStat\n */\n lowInUsd5m?: string;\n /**\n * DTO.TOKEN.STAT.PRICE_15M\n * @type {string}\n * @memberof TokenStat\n */\n price15m?: string;\n /**\n * DTO.TOKEN.STAT.BUYS_15M\n * @type {number}\n * @memberof TokenStat\n */\n buys15m?: number;\n /**\n * DTO.TOKEN.STAT.SELLS_15M\n * @type {number}\n * @memberof TokenStat\n */\n sells15m?: number;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_15M\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumes15m?: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_15M\n * @type {string}\n * @memberof TokenStat\n */\n sellsVolumes15m?: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_15M\n * @type {string}\n * @memberof TokenStat\n */\n volumes15m?: string;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_15M\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumesInUsd15m?: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_15M\n * @type {string}\n * @memberof TokenStat\n */\n sellVolumesInUsd15m?: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_IN_USD_15M\n * @type {string}\n * @memberof TokenStat\n */\n volumesInUsd15m?: string;\n /**\n * DTO.TOKEN.STAT.BUYERS_15M\n * @type {number}\n * @memberof TokenStat\n */\n buyers15m?: number;\n /**\n * DTO.TOKEN.STAT.SELLERS_15M\n * @type {number}\n * @memberof TokenStat\n */\n sellers15m?: number;\n /**\n * DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_15M\n * @type {string}\n * @memberof TokenStat\n */\n openPriceInUsd15m?: string;\n /**\n * DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_15M\n * @type {string}\n * @memberof TokenStat\n */\n closePriceInUsd15m?: string;\n /**\n * DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_15M\n * @type {string}\n * @memberof TokenStat\n */\n priceChangeRatioInUsd15m?: string;\n /**\n * DTO.TOKEN.STAT.TRADES_15M\n * @type {number}\n * @memberof TokenStat\n */\n trades15m?: number;\n /**\n * DTO.TOKEN.STAT.TRADERS_15M\n * @type {number}\n * @memberof TokenStat\n */\n traders15m?: number;\n /**\n * DTO.TOKEN.STAT.HIGH_IN_USD_15M\n * @type {string}\n * @memberof TokenStat\n */\n highInUsd15m?: string;\n /**\n * DTO.TOKEN.STAT.LOW_IN_USD_15M\n * @type {string}\n * @memberof TokenStat\n */\n lowInUsd15m?: string;\n /**\n * DTO.TOKEN.STAT.PRICE_30M\n * @type {string}\n * @memberof TokenStat\n */\n price30m: string;\n /**\n * DTO.TOKEN.STAT.BUYS_30M\n * @type {number}\n * @memberof TokenStat\n */\n buys30m: number;\n /**\n * DTO.TOKEN.STAT.SELLS_30M\n * @type {number}\n * @memberof TokenStat\n */\n sells30m: number;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_30M\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumes30m: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_30M\n * @type {string}\n * @memberof TokenStat\n */\n sellsVolumes30m: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_30M\n * @type {string}\n * @memberof TokenStat\n */\n volumes30m: string;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_30M\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumesInUsd30m: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_30M\n * @type {string}\n * @memberof TokenStat\n */\n sellVolumesInUsd30m: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_IN_USD_30M\n * @type {string}\n * @memberof TokenStat\n */\n volumesInUsd30m: string;\n /**\n * DTO.TOKEN.STAT.BUYERS_30M\n * @type {number}\n * @memberof TokenStat\n */\n buyers30m?: number;\n /**\n * DTO.TOKEN.STAT.SELLERS_30M\n * @type {number}\n * @memberof TokenStat\n */\n sellers30m?: number;\n /**\n * DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_30M\n * @type {string}\n * @memberof TokenStat\n */\n openPriceInUsd30m: string;\n /**\n * DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_30M\n * @type {string}\n * @memberof TokenStat\n */\n closePriceInUsd30m: string;\n /**\n * DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_30M\n * @type {string}\n * @memberof TokenStat\n */\n priceChangeRatioInUsd30m: string;\n /**\n * DTO.TOKEN.STAT.TRADES_30M\n * @type {number}\n * @memberof TokenStat\n */\n trades30m: number;\n /**\n * DTO.TOKEN.STAT.TRADERS_30M\n * @type {number}\n * @memberof TokenStat\n */\n traders30m?: number;\n /**\n * DTO.TOKEN.STAT.HIGH_IN_USD_30M\n * @type {string}\n * @memberof TokenStat\n */\n highInUsd30m?: string;\n /**\n * DTO.TOKEN.STAT.LOW_IN_USD_30M\n * @type {string}\n * @memberof TokenStat\n */\n lowInUsd30m?: string;\n /**\n * DTO.TOKEN.STAT.PRICE_1H\n * @type {string}\n * @memberof TokenStat\n */\n price1h: string;\n /**\n * DTO.TOKEN.STAT.BUYS_1H\n * @type {number}\n * @memberof TokenStat\n */\n buys1h: number;\n /**\n * DTO.TOKEN.STAT.SELLS_1H\n * @type {number}\n * @memberof TokenStat\n */\n sells1h: number;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_1H\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumes1h: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_1H\n * @type {string}\n * @memberof TokenStat\n */\n sellsVolumes1h: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_1H\n * @type {string}\n * @memberof TokenStat\n */\n volumes1h: string;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_1H\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumesInUsd1h: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_1H\n * @type {string}\n * @memberof TokenStat\n */\n sellVolumesInUsd1h: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_IN_USD_1H\n * @type {string}\n * @memberof TokenStat\n */\n volumesInUsd1h: string;\n /**\n * DTO.TOKEN.STAT.BUYERS_1H\n * @type {number}\n * @memberof TokenStat\n */\n buyers1h?: number;\n /**\n * DTO.TOKEN.STAT.SELLERS_1H\n * @type {number}\n * @memberof TokenStat\n */\n sellers1h?: number;\n /**\n * DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_1H\n * @type {string}\n * @memberof TokenStat\n */\n openPriceInUsd1h: string;\n /**\n * DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_1H\n * @type {string}\n * @memberof TokenStat\n */\n closePriceInUsd1h: string;\n /**\n * DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_1H\n * @type {string}\n * @memberof TokenStat\n */\n priceChangeRatioInUsd1h: string;\n /**\n * DTO.TOKEN.STAT.TRADES_1H\n * @type {number}\n * @memberof TokenStat\n */\n trades1h: number;\n /**\n * DTO.TOKEN.STAT.TRADERS_1H\n * @type {number}\n * @memberof TokenStat\n */\n traders1h?: number;\n /**\n * DTO.TOKEN.STAT.HIGH_IN_USD_1H\n * @type {string}\n * @memberof TokenStat\n */\n highInUsd1h?: string;\n /**\n * DTO.TOKEN.STAT.LOW_IN_USD_1H\n * @type {string}\n * @memberof TokenStat\n */\n lowInUsd1h?: string;\n /**\n * DTO.TOKEN.STAT.PRICE_4H\n * @type {string}\n * @memberof TokenStat\n */\n price4h: string;\n /**\n * DTO.TOKEN.STAT.BUYS_4H\n * @type {number}\n * @memberof TokenStat\n */\n buys4h: number;\n /**\n * DTO.TOKEN.STAT.SELLS_4H\n * @type {number}\n * @memberof TokenStat\n */\n sells4h: number;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_4H\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumes4h: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_4H\n * @type {string}\n * @memberof TokenStat\n */\n sellsVolumes4h: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_4H\n * @type {string}\n * @memberof TokenStat\n */\n volumes4h: string;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_4H\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumesInUsd4h: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_4H\n * @type {string}\n * @memberof TokenStat\n */\n sellVolumesInUsd4h: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_IN_USD_4H\n * @type {string}\n * @memberof TokenStat\n */\n volumesInUsd4h: string;\n /**\n * DTO.TOKEN.STAT.BUYERS_4H\n * @type {number}\n * @memberof TokenStat\n */\n buyers4h?: number;\n /**\n * DTO.TOKEN.STAT.SELLERS_4H\n * @type {number}\n * @memberof TokenStat\n */\n sellers4h?: number;\n /**\n * DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_4H\n * @type {string}\n * @memberof TokenStat\n */\n openPriceInUsd4h: string;\n /**\n * DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_4H\n * @type {string}\n * @memberof TokenStat\n */\n closePriceInUsd4h: string;\n /**\n * DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_4H\n * @type {string}\n * @memberof TokenStat\n */\n priceChangeRatioInUsd4h: string;\n /**\n * DTO.TOKEN.STAT.TRADES_4H\n * @type {number}\n * @memberof TokenStat\n */\n trades4h: number;\n /**\n * DTO.TOKEN.STAT.TRADERS_4H\n * @type {number}\n * @memberof TokenStat\n */\n traders4h?: number;\n /**\n * DTO.TOKEN.STAT.HIGH_IN_USD_4H\n * @type {string}\n * @memberof TokenStat\n */\n highInUsd4h?: string;\n /**\n * DTO.TOKEN.STAT.LOW_IN_USD_4H\n * @type {string}\n * @memberof TokenStat\n */\n lowInUsd4h?: string;\n /**\n * DTO.TOKEN.STAT.PRICE_24H\n * @type {string}\n * @memberof TokenStat\n */\n price24h: string;\n /**\n * DTO.TOKEN.STAT.BUYS_24H\n * @type {number}\n * @memberof TokenStat\n */\n buys24h: number;\n /**\n * DTO.TOKEN.STAT.SELLS_24H\n * @type {number}\n * @memberof TokenStat\n */\n sells24h: number;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_24H\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumes24h: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_24H\n * @type {string}\n * @memberof TokenStat\n */\n sellsVolumes24h: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_24H\n * @type {string}\n * @memberof TokenStat\n */\n volumes24h: string;\n /**\n * DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_24H\n * @type {string}\n * @memberof TokenStat\n */\n buyVolumesInUsd24h: string;\n /**\n * DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_24H\n * @type {string}\n * @memberof TokenStat\n */\n sellVolumesInUsd24h: string;\n /**\n * DTO.TOKEN.STAT.VOLUMES_IN_USD_24H\n * @type {string}\n * @memberof TokenStat\n */\n volumesInUsd24h: string;\n /**\n * DTO.TOKEN.STAT.BUYERS_24H\n * @type {number}\n * @memberof TokenStat\n */\n buyers24h?: number;\n /**\n * DTO.TOKEN.STAT.SELLERS_24H\n * @type {number}\n * @memberof TokenStat\n */\n sellers24h?: number;\n /**\n * DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_24H\n * @type {string}\n * @memberof TokenStat\n */\n openPriceInUsd24h: string;\n /**\n * DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_24H\n * @type {string}\n * @memberof TokenStat\n */\n closePriceInUsd24h: string;\n /**\n * DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_24H\n * @type {string}\n * @memberof TokenStat\n */\n priceChangeRatioInUsd24h: string;\n /**\n * DTO.TOKEN.STAT.TRADES_24H\n * @type {number}\n * @memberof TokenStat\n */\n trades24h: number;\n /**\n * DTO.TOKEN.STAT.TRADERS_24H\n * @type {number}\n * @memberof TokenStat\n */\n traders24h?: number;\n /**\n * DTO.TOKEN.STAT.HIGH_IN_USD_24H\n * @type {string}\n * @memberof TokenStat\n */\n highInUsd24h?: string;\n /**\n * DTO.TOKEN.STAT.LOW_IN_USD_24H\n * @type {string}\n * @memberof TokenStat\n */\n lowInUsd24h?: string;\n}\n\n/**\n * Check if a given object implements the TokenStat interface.\n */\nexport function instanceOfTokenStat(value: object): value is TokenStat {\n if (!('address' in value) || value['address'] === undefined) return false;\n if (!('price1m' in value) || value['price1m'] === undefined) return false;\n if (!('buys1m' in value) || value['buys1m'] === undefined) return false;\n if (!('sells1m' in value) || value['sells1m'] === undefined) return false;\n if (!('buyVolumes1m' in value) || value['buyVolumes1m'] === undefined) return false;\n if (!('sellsVolumes1m' in value) || value['sellsVolumes1m'] === undefined) return false;\n if (!('volumes1m' in value) || value['volumes1m'] === undefined) return false;\n if (!('buyVolumesInUsd1m' in value) || value['buyVolumesInUsd1m'] === undefined) return false;\n if (!('sellVolumesInUsd1m' in value) || value['sellVolumesInUsd1m'] === undefined) return false;\n if (!('volumesInUsd1m' in value) || value['volumesInUsd1m'] === undefined) return false;\n if (!('openPriceInUsd1m' in value) || value['openPriceInUsd1m'] === undefined) return false;\n if (!('closePriceInUsd1m' in value) || value['closePriceInUsd1m'] === undefined) return false;\n if (!('priceChangeRatioInUsd1m' in value) || value['priceChangeRatioInUsd1m'] === undefined) return false;\n if (!('trades1m' in value) || value['trades1m'] === undefined) return false;\n if (!('price5m' in value) || value['price5m'] === undefined) return false;\n if (!('buys5m' in value) || value['buys5m'] === undefined) return false;\n if (!('sells5m' in value) || value['sells5m'] === undefined) return false;\n if (!('buyVolumes5m' in value) || value['buyVolumes5m'] === undefined) return false;\n if (!('sellsVolumes5m' in value) || value['sellsVolumes5m'] === undefined) return false;\n if (!('volumes5m' in value) || value['volumes5m'] === undefined) return false;\n if (!('buyVolumesInUsd5m' in value) || value['buyVolumesInUsd5m'] === undefined) return false;\n if (!('sellVolumesInUsd5m' in value) || value['sellVolumesInUsd5m'] === undefined) return false;\n if (!('volumesInUsd5m' in value) || value['volumesInUsd5m'] === undefined) return false;\n if (!('openPriceInUsd5m' in value) || value['openPriceInUsd5m'] === undefined) return false;\n if (!('closePriceInUsd5m' in value) || value['closePriceInUsd5m'] === undefined) return false;\n if (!('priceChangeRatioInUsd5m' in value) || value['priceChangeRatioInUsd5m'] === undefined) return false;\n if (!('trades5m' in value) || value['trades5m'] === undefined) return false;\n if (!('price30m' in value) || value['price30m'] === undefined) return false;\n if (!('buys30m' in value) || value['buys30m'] === undefined) return false;\n if (!('sells30m' in value) || value['sells30m'] === undefined) return false;\n if (!('buyVolumes30m' in value) || value['buyVolumes30m'] === undefined) return false;\n if (!('sellsVolumes30m' in value) || value['sellsVolumes30m'] === undefined) return false;\n if (!('volumes30m' in value) || value['volumes30m'] === undefined) return false;\n if (!('buyVolumesInUsd30m' in value) || value['buyVolumesInUsd30m'] === undefined) return false;\n if (!('sellVolumesInUsd30m' in value) || value['sellVolumesInUsd30m'] === undefined) return false;\n if (!('volumesInUsd30m' in value) || value['volumesInUsd30m'] === undefined) return false;\n if (!('openPriceInUsd30m' in value) || value['openPriceInUsd30m'] === undefined) return false;\n if (!('closePriceInUsd30m' in value) || value['closePriceInUsd30m'] === undefined) return false;\n if (!('priceChangeRatioInUsd30m' in value) || value['priceChangeRatioInUsd30m'] === undefined) return false;\n if (!('trades30m' in value) || value['trades30m'] === undefined) return false;\n if (!('price1h' in value) || value['price1h'] === undefined) return false;\n if (!('buys1h' in value) || value['buys1h'] === undefined) return false;\n if (!('sells1h' in value) || value['sells1h'] === undefined) return false;\n if (!('buyVolumes1h' in value) || value['buyVolumes1h'] === undefined) return false;\n if (!('sellsVolumes1h' in value) || value['sellsVolumes1h'] === undefined) return false;\n if (!('volumes1h' in value) || value['volumes1h'] === undefined) return false;\n if (!('buyVolumesInUsd1h' in value) || value['buyVolumesInUsd1h'] === undefined) return false;\n if (!('sellVolumesInUsd1h' in value) || value['sellVolumesInUsd1h'] === undefined) return false;\n if (!('volumesInUsd1h' in value) || value['volumesInUsd1h'] === undefined) return false;\n if (!('openPriceInUsd1h' in value) || value['openPriceInUsd1h'] === undefined) return false;\n if (!('closePriceInUsd1h' in value) || value['closePriceInUsd1h'] === undefined) return false;\n if (!('priceChangeRatioInUsd1h' in value) || value['priceChangeRatioInUsd1h'] === undefined) return false;\n if (!('trades1h' in value) || value['trades1h'] === undefined) return false;\n if (!('price4h' in value) || value['price4h'] === undefined) return false;\n if (!('buys4h' in value) || value['buys4h'] === undefined) return false;\n if (!('sells4h' in value) || value['sells4h'] === undefined) return false;\n if (!('buyVolumes4h' in value) || value['buyVolumes4h'] === undefined) return false;\n if (!('sellsVolumes4h' in value) || value['sellsVolumes4h'] === undefined) return false;\n if (!('volumes4h' in value) || value['volumes4h'] === undefined) return false;\n if (!('buyVolumesInUsd4h' in value) || value['buyVolumesInUsd4h'] === undefined) return false;\n if (!('sellVolumesInUsd4h' in value) || value['sellVolumesInUsd4h'] === undefined) return false;\n if (!('volumesInUsd4h' in value) || value['volumesInUsd4h'] === undefined) return false;\n if (!('openPriceInUsd4h' in value) || value['openPriceInUsd4h'] === undefined) return false;\n if (!('closePriceInUsd4h' in value) || value['closePriceInUsd4h'] === undefined) return false;\n if (!('priceChangeRatioInUsd4h' in value) || value['priceChangeRatioInUsd4h'] === undefined) return false;\n if (!('trades4h' in value) || value['trades4h'] === undefined) return false;\n if (!('price24h' in value) || value['price24h'] === undefined) return false;\n if (!('buys24h' in value) || value['buys24h'] === undefined) return false;\n if (!('sells24h' in value) || value['sells24h'] === undefined) return false;\n if (!('buyVolumes24h' in value) || value['buyVolumes24h'] === undefined) return false;\n if (!('sellsVolumes24h' in value) || value['sellsVolumes24h'] === undefined) return false;\n if (!('volumes24h' in value) || value['volumes24h'] === undefined) return false;\n if (!('buyVolumesInUsd24h' in value) || value['buyVolumesInUsd24h'] === undefined) return false;\n if (!('sellVolumesInUsd24h' in value) || value['sellVolumesInUsd24h'] === undefined) return false;\n if (!('volumesInUsd24h' in value) || value['volumesInUsd24h'] === undefined) return false;\n if (!('openPriceInUsd24h' in value) || value['openPriceInUsd24h'] === undefined) return false;\n if (!('closePriceInUsd24h' in value) || value['closePriceInUsd24h'] === undefined) return false;\n if (!('priceChangeRatioInUsd24h' in value) || value['priceChangeRatioInUsd24h'] === undefined) return false;\n if (!('trades24h' in value) || value['trades24h'] === undefined) return false;\n return true;\n}\n\nexport function TokenStatFromJSON(json: any): TokenStat {\n return TokenStatFromJSONTyped(json, false);\n}\n\nexport function TokenStatFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenStat {\n if (json == null) {\n return json;\n }\n return {\n \n 'address': json['address'],\n 'price1m': json['price1m'],\n 'buys1m': json['buys1m'],\n 'sells1m': json['sells1m'],\n 'buyVolumes1m': json['buyVolumes1m'],\n 'sellsVolumes1m': json['sellsVolumes1m'],\n 'volumes1m': json['volumes1m'],\n 'buyVolumesInUsd1m': json['buyVolumesInUsd1m'],\n 'sellVolumesInUsd1m': json['sellVolumesInUsd1m'],\n 'volumesInUsd1m': json['volumesInUsd1m'],\n 'buyers1m': json['buyers1m'] == null ? undefined : json['buyers1m'],\n 'sellers1m': json['sellers1m'] == null ? undefined : json['sellers1m'],\n 'openPriceInUsd1m': json['openPriceInUsd1m'],\n 'closePriceInUsd1m': json['closePriceInUsd1m'],\n 'priceChangeRatioInUsd1m': json['priceChangeRatioInUsd1m'],\n 'trades1m': json['trades1m'],\n 'traders1m': json['traders1m'] == null ? undefined : json['traders1m'],\n 'highInUsd1m': json['highInUsd1m'] == null ? undefined : json['highInUsd1m'],\n 'lowInUsd1m': json['lowInUsd1m'] == null ? undefined : json['lowInUsd1m'],\n 'price5m': json['price5m'],\n 'buys5m': json['buys5m'],\n 'sells5m': json['sells5m'],\n 'buyVolumes5m': json['buyVolumes5m'],\n 'sellsVolumes5m': json['sellsVolumes5m'],\n 'volumes5m': json['volumes5m'],\n 'buyVolumesInUsd5m': json['buyVolumesInUsd5m'],\n 'sellVolumesInUsd5m': json['sellVolumesInUsd5m'],\n 'volumesInUsd5m': json['volumesInUsd5m'],\n 'buyers5m': json['buyers5m'] == null ? undefined : json['buyers5m'],\n 'sellers5m': json['sellers5m'] == null ? undefined : json['sellers5m'],\n 'openPriceInUsd5m': json['openPriceInUsd5m'],\n 'closePriceInUsd5m': json['closePriceInUsd5m'],\n 'priceChangeRatioInUsd5m': json['priceChangeRatioInUsd5m'],\n 'trades5m': json['trades5m'],\n 'traders5m': json['traders5m'] == null ? undefined : json['traders5m'],\n 'highInUsd5m': json['highInUsd5m'] == null ? undefined : json['highInUsd5m'],\n 'lowInUsd5m': json['lowInUsd5m'] == null ? undefined : json['lowInUsd5m'],\n 'price15m': json['price15m'] == null ? undefined : json['price15m'],\n 'buys15m': json['buys15m'] == null ? undefined : json['buys15m'],\n 'sells15m': json['sells15m'] == null ? undefined : json['sells15m'],\n 'buyVolumes15m': json['buyVolumes15m'] == null ? undefined : json['buyVolumes15m'],\n 'sellsVolumes15m': json['sellsVolumes15m'] == null ? undefined : json['sellsVolumes15m'],\n 'volumes15m': json['volumes15m'] == null ? undefined : json['volumes15m'],\n 'buyVolumesInUsd15m': json['buyVolumesInUsd15m'] == null ? undefined : json['buyVolumesInUsd15m'],\n 'sellVolumesInUsd15m': json['sellVolumesInUsd15m'] == null ? undefined : json['sellVolumesInUsd15m'],\n 'volumesInUsd15m': json['volumesInUsd15m'] == null ? undefined : json['volumesInUsd15m'],\n 'buyers15m': json['buyers15m'] == null ? undefined : json['buyers15m'],\n 'sellers15m': json['sellers15m'] == null ? undefined : json['sellers15m'],\n 'openPriceInUsd15m': json['openPriceInUsd15m'] == null ? undefined : json['openPriceInUsd15m'],\n 'closePriceInUsd15m': json['closePriceInUsd15m'] == null ? undefined : json['closePriceInUsd15m'],\n 'priceChangeRatioInUsd15m': json['priceChangeRatioInUsd15m'] == null ? undefined : json['priceChangeRatioInUsd15m'],\n 'trades15m': json['trades15m'] == null ? undefined : json['trades15m'],\n 'traders15m': json['traders15m'] == null ? undefined : json['traders15m'],\n 'highInUsd15m': json['highInUsd15m'] == null ? undefined : json['highInUsd15m'],\n 'lowInUsd15m': json['lowInUsd15m'] == null ? undefined : json['lowInUsd15m'],\n 'price30m': json['price30m'],\n 'buys30m': json['buys30m'],\n 'sells30m': json['sells30m'],\n 'buyVolumes30m': json['buyVolumes30m'],\n 'sellsVolumes30m': json['sellsVolumes30m'],\n 'volumes30m': json['volumes30m'],\n 'buyVolumesInUsd30m': json['buyVolumesInUsd30m'],\n 'sellVolumesInUsd30m': json['sellVolumesInUsd30m'],\n 'volumesInUsd30m': json['volumesInUsd30m'],\n 'buyers30m': json['buyers30m'] == null ? undefined : json['buyers30m'],\n 'sellers30m': json['sellers30m'] == null ? undefined : json['sellers30m'],\n 'openPriceInUsd30m': json['openPriceInUsd30m'],\n 'closePriceInUsd30m': json['closePriceInUsd30m'],\n 'priceChangeRatioInUsd30m': json['priceChangeRatioInUsd30m'],\n 'trades30m': json['trades30m'],\n 'traders30m': json['traders30m'] == null ? undefined : json['traders30m'],\n 'highInUsd30m': json['highInUsd30m'] == null ? undefined : json['highInUsd30m'],\n 'lowInUsd30m': json['lowInUsd30m'] == null ? undefined : json['lowInUsd30m'],\n 'price1h': json['price1h'],\n 'buys1h': json['buys1h'],\n 'sells1h': json['sells1h'],\n 'buyVolumes1h': json['buyVolumes1h'],\n 'sellsVolumes1h': json['sellsVolumes1h'],\n 'volumes1h': json['volumes1h'],\n 'buyVolumesInUsd1h': json['buyVolumesInUsd1h'],\n 'sellVolumesInUsd1h': json['sellVolumesInUsd1h'],\n 'volumesInUsd1h': json['volumesInUsd1h'],\n 'buyers1h': json['buyers1h'] == null ? undefined : json['buyers1h'],\n 'sellers1h': json['sellers1h'] == null ? undefined : json['sellers1h'],\n 'openPriceInUsd1h': json['openPriceInUsd1h'],\n 'closePriceInUsd1h': json['closePriceInUsd1h'],\n 'priceChangeRatioInUsd1h': json['priceChangeRatioInUsd1h'],\n 'trades1h': json['trades1h'],\n 'traders1h': json['traders1h'] == null ? undefined : json['traders1h'],\n 'highInUsd1h': json['highInUsd1h'] == null ? undefined : json['highInUsd1h'],\n 'lowInUsd1h': json['lowInUsd1h'] == null ? undefined : json['lowInUsd1h'],\n 'price4h': json['price4h'],\n 'buys4h': json['buys4h'],\n 'sells4h': json['sells4h'],\n 'buyVolumes4h': json['buyVolumes4h'],\n 'sellsVolumes4h': json['sellsVolumes4h'],\n 'volumes4h': json['volumes4h'],\n 'buyVolumesInUsd4h': json['buyVolumesInUsd4h'],\n 'sellVolumesInUsd4h': json['sellVolumesInUsd4h'],\n 'volumesInUsd4h': json['volumesInUsd4h'],\n 'buyers4h': json['buyers4h'] == null ? undefined : json['buyers4h'],\n 'sellers4h': json['sellers4h'] == null ? undefined : json['sellers4h'],\n 'openPriceInUsd4h': json['openPriceInUsd4h'],\n 'closePriceInUsd4h': json['closePriceInUsd4h'],\n 'priceChangeRatioInUsd4h': json['priceChangeRatioInUsd4h'],\n 'trades4h': json['trades4h'],\n 'traders4h': json['traders4h'] == null ? undefined : json['traders4h'],\n 'highInUsd4h': json['highInUsd4h'] == null ? undefined : json['highInUsd4h'],\n 'lowInUsd4h': json['lowInUsd4h'] == null ? undefined : json['lowInUsd4h'],\n 'price24h': json['price24h'],\n 'buys24h': json['buys24h'],\n 'sells24h': json['sells24h'],\n 'buyVolumes24h': json['buyVolumes24h'],\n 'sellsVolumes24h': json['sellsVolumes24h'],\n 'volumes24h': json['volumes24h'],\n 'buyVolumesInUsd24h': json['buyVolumesInUsd24h'],\n 'sellVolumesInUsd24h': json['sellVolumesInUsd24h'],\n 'volumesInUsd24h': json['volumesInUsd24h'],\n 'buyers24h': json['buyers24h'] == null ? undefined : json['buyers24h'],\n 'sellers24h': json['sellers24h'] == null ? undefined : json['sellers24h'],\n 'openPriceInUsd24h': json['openPriceInUsd24h'],\n 'closePriceInUsd24h': json['closePriceInUsd24h'],\n 'priceChangeRatioInUsd24h': json['priceChangeRatioInUsd24h'],\n 'trades24h': json['trades24h'],\n 'traders24h': json['traders24h'] == null ? undefined : json['traders24h'],\n 'highInUsd24h': json['highInUsd24h'] == null ? undefined : json['highInUsd24h'],\n 'lowInUsd24h': json['lowInUsd24h'] == null ? undefined : json['lowInUsd24h'],\n };\n}\n\nexport function TokenStatToJSON(json: any): TokenStat {\n return TokenStatToJSONTyped(json, false);\n}\n\nexport function TokenStatToJSONTyped(value?: TokenStat | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'address': value['address'],\n 'price1m': value['price1m'],\n 'buys1m': value['buys1m'],\n 'sells1m': value['sells1m'],\n 'buyVolumes1m': value['buyVolumes1m'],\n 'sellsVolumes1m': value['sellsVolumes1m'],\n 'volumes1m': value['volumes1m'],\n 'buyVolumesInUsd1m': value['buyVolumesInUsd1m'],\n 'sellVolumesInUsd1m': value['sellVolumesInUsd1m'],\n 'volumesInUsd1m': value['volumesInUsd1m'],\n 'buyers1m': value['buyers1m'],\n 'sellers1m': value['sellers1m'],\n 'openPriceInUsd1m': value['openPriceInUsd1m'],\n 'closePriceInUsd1m': value['closePriceInUsd1m'],\n 'priceChangeRatioInUsd1m': value['priceChangeRatioInUsd1m'],\n 'trades1m': value['trades1m'],\n 'traders1m': value['traders1m'],\n 'highInUsd1m': value['highInUsd1m'],\n 'lowInUsd1m': value['lowInUsd1m'],\n 'price5m': value['price5m'],\n 'buys5m': value['buys5m'],\n 'sells5m': value['sells5m'],\n 'buyVolumes5m': value['buyVolumes5m'],\n 'sellsVolumes5m': value['sellsVolumes5m'],\n 'volumes5m': value['volumes5m'],\n 'buyVolumesInUsd5m': value['buyVolumesInUsd5m'],\n 'sellVolumesInUsd5m': value['sellVolumesInUsd5m'],\n 'volumesInUsd5m': value['volumesInUsd5m'],\n 'buyers5m': value['buyers5m'],\n 'sellers5m': value['sellers5m'],\n 'openPriceInUsd5m': value['openPriceInUsd5m'],\n 'closePriceInUsd5m': value['closePriceInUsd5m'],\n 'priceChangeRatioInUsd5m': value['priceChangeRatioInUsd5m'],\n 'trades5m': value['trades5m'],\n 'traders5m': value['traders5m'],\n 'highInUsd5m': value['highInUsd5m'],\n 'lowInUsd5m': value['lowInUsd5m'],\n 'price15m': value['price15m'],\n 'buys15m': value['buys15m'],\n 'sells15m': value['sells15m'],\n 'buyVolumes15m': value['buyVolumes15m'],\n 'sellsVolumes15m': value['sellsVolumes15m'],\n 'volumes15m': value['volumes15m'],\n 'buyVolumesInUsd15m': value['buyVolumesInUsd15m'],\n 'sellVolumesInUsd15m': value['sellVolumesInUsd15m'],\n 'volumesInUsd15m': value['volumesInUsd15m'],\n 'buyers15m': value['buyers15m'],\n 'sellers15m': value['sellers15m'],\n 'openPriceInUsd15m': value['openPriceInUsd15m'],\n 'closePriceInUsd15m': value['closePriceInUsd15m'],\n 'priceChangeRatioInUsd15m': value['priceChangeRatioInUsd15m'],\n 'trades15m': value['trades15m'],\n 'traders15m': value['traders15m'],\n 'highInUsd15m': value['highInUsd15m'],\n 'lowInUsd15m': value['lowInUsd15m'],\n 'price30m': value['price30m'],\n 'buys30m': value['buys30m'],\n 'sells30m': value['sells30m'],\n 'buyVolumes30m': value['buyVolumes30m'],\n 'sellsVolumes30m': value['sellsVolumes30m'],\n 'volumes30m': value['volumes30m'],\n 'buyVolumesInUsd30m': value['buyVolumesInUsd30m'],\n 'sellVolumesInUsd30m': value['sellVolumesInUsd30m'],\n 'volumesInUsd30m': value['volumesInUsd30m'],\n 'buyers30m': value['buyers30m'],\n 'sellers30m': value['sellers30m'],\n 'openPriceInUsd30m': value['openPriceInUsd30m'],\n 'closePriceInUsd30m': value['closePriceInUsd30m'],\n 'priceChangeRatioInUsd30m': value['priceChangeRatioInUsd30m'],\n 'trades30m': value['trades30m'],\n 'traders30m': value['traders30m'],\n 'highInUsd30m': value['highInUsd30m'],\n 'lowInUsd30m': value['lowInUsd30m'],\n 'price1h': value['price1h'],\n 'buys1h': value['buys1h'],\n 'sells1h': value['sells1h'],\n 'buyVolumes1h': value['buyVolumes1h'],\n 'sellsVolumes1h': value['sellsVolumes1h'],\n 'volumes1h': value['volumes1h'],\n 'buyVolumesInUsd1h': value['buyVolumesInUsd1h'],\n 'sellVolumesInUsd1h': value['sellVolumesInUsd1h'],\n 'volumesInUsd1h': value['volumesInUsd1h'],\n 'buyers1h': value['buyers1h'],\n 'sellers1h': value['sellers1h'],\n 'openPriceInUsd1h': value['openPriceInUsd1h'],\n 'closePriceInUsd1h': value['closePriceInUsd1h'],\n 'priceChangeRatioInUsd1h': value['priceChangeRatioInUsd1h'],\n 'trades1h': value['trades1h'],\n 'traders1h': value['traders1h'],\n 'highInUsd1h': value['highInUsd1h'],\n 'lowInUsd1h': value['lowInUsd1h'],\n 'price4h': value['price4h'],\n 'buys4h': value['buys4h'],\n 'sells4h': value['sells4h'],\n 'buyVolumes4h': value['buyVolumes4h'],\n 'sellsVolumes4h': value['sellsVolumes4h'],\n 'volumes4h': value['volumes4h'],\n 'buyVolumesInUsd4h': value['buyVolumesInUsd4h'],\n 'sellVolumesInUsd4h': value['sellVolumesInUsd4h'],\n 'volumesInUsd4h': value['volumesInUsd4h'],\n 'buyers4h': value['buyers4h'],\n 'sellers4h': value['sellers4h'],\n 'openPriceInUsd4h': value['openPriceInUsd4h'],\n 'closePriceInUsd4h': value['closePriceInUsd4h'],\n 'priceChangeRatioInUsd4h': value['priceChangeRatioInUsd4h'],\n 'trades4h': value['trades4h'],\n 'traders4h': value['traders4h'],\n 'highInUsd4h': value['highInUsd4h'],\n 'lowInUsd4h': value['lowInUsd4h'],\n 'price24h': value['price24h'],\n 'buys24h': value['buys24h'],\n 'sells24h': value['sells24h'],\n 'buyVolumes24h': value['buyVolumes24h'],\n 'sellsVolumes24h': value['sellsVolumes24h'],\n 'volumes24h': value['volumes24h'],\n 'buyVolumesInUsd24h': value['buyVolumesInUsd24h'],\n 'sellVolumesInUsd24h': value['sellVolumesInUsd24h'],\n 'volumesInUsd24h': value['volumesInUsd24h'],\n 'buyers24h': value['buyers24h'],\n 'sellers24h': value['sellers24h'],\n 'openPriceInUsd24h': value['openPriceInUsd24h'],\n 'closePriceInUsd24h': value['closePriceInUsd24h'],\n 'priceChangeRatioInUsd24h': value['priceChangeRatioInUsd24h'],\n 'trades24h': value['trades24h'],\n 'traders24h': value['traders24h'],\n 'highInUsd24h': value['highInUsd24h'],\n 'lowInUsd24h': value['lowInUsd24h'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TokenSocialMediasDTO\n */\nexport interface TokenSocialMediasDTO {\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.TWITTER\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n twitter?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.TELEGRAM\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n telegram?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.WEBSITE\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n website?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.TIKTOK\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n tiktok?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.DISCORD\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n discord?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.FACEBOOK\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n facebook?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.GITHUB\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n github?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.INSTAGRAM\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n instagram?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.LINKEDIN\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n linkedin?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.MEDIUM\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n medium?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.REDDIT\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n reddit?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.YOUTUBE\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n youtube?: string;\n /**\n * DTO.TOKEN.SOCIAL_MEDIAS.BITBUCKET\n * @type {string}\n * @memberof TokenSocialMediasDTO\n */\n bitbucket?: string;\n}\n\n/**\n * Check if a given object implements the TokenSocialMediasDTO interface.\n */\nexport function instanceOfTokenSocialMediasDTO(value: object): value is TokenSocialMediasDTO {\n return true;\n}\n\nexport function TokenSocialMediasDTOFromJSON(json: any): TokenSocialMediasDTO {\n return TokenSocialMediasDTOFromJSONTyped(json, false);\n}\n\nexport function TokenSocialMediasDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenSocialMediasDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'twitter': json['twitter'] == null ? undefined : json['twitter'],\n 'telegram': json['telegram'] == null ? undefined : json['telegram'],\n 'website': json['website'] == null ? undefined : json['website'],\n 'tiktok': json['tiktok'] == null ? undefined : json['tiktok'],\n 'discord': json['discord'] == null ? undefined : json['discord'],\n 'facebook': json['facebook'] == null ? undefined : json['facebook'],\n 'github': json['github'] == null ? undefined : json['github'],\n 'instagram': json['instagram'] == null ? undefined : json['instagram'],\n 'linkedin': json['linkedin'] == null ? undefined : json['linkedin'],\n 'medium': json['medium'] == null ? undefined : json['medium'],\n 'reddit': json['reddit'] == null ? undefined : json['reddit'],\n 'youtube': json['youtube'] == null ? undefined : json['youtube'],\n 'bitbucket': json['bitbucket'] == null ? undefined : json['bitbucket'],\n };\n}\n\nexport function TokenSocialMediasDTOToJSON(json: any): TokenSocialMediasDTO {\n return TokenSocialMediasDTOToJSONTyped(json, false);\n}\n\nexport function TokenSocialMediasDTOToJSONTyped(value?: TokenSocialMediasDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'twitter': value['twitter'],\n 'telegram': value['telegram'],\n 'website': value['website'],\n 'tiktok': value['tiktok'],\n 'discord': value['discord'],\n 'facebook': value['facebook'],\n 'github': value['github'],\n 'instagram': value['instagram'],\n 'linkedin': value['linkedin'],\n 'medium': value['medium'],\n 'reddit': value['reddit'],\n 'youtube': value['youtube'],\n 'bitbucket': value['bitbucket'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { DexPoolDTO } from './DexPoolDTO';\nimport {\n DexPoolDTOFromJSON,\n DexPoolDTOFromJSONTyped,\n DexPoolDTOToJSON,\n DexPoolDTOToJSONTyped,\n} from './DexPoolDTO';\nimport type { TokenMarketData } from './TokenMarketData';\nimport {\n TokenMarketDataFromJSON,\n TokenMarketDataFromJSONTyped,\n TokenMarketDataToJSON,\n TokenMarketDataToJSONTyped,\n} from './TokenMarketData';\nimport type { TokenExtraDTO } from './TokenExtraDTO';\nimport {\n TokenExtraDTOFromJSON,\n TokenExtraDTOFromJSONTyped,\n TokenExtraDTOToJSON,\n TokenExtraDTOToJSONTyped,\n} from './TokenExtraDTO';\nimport type { TokenCreatorsDTO } from './TokenCreatorsDTO';\nimport {\n TokenCreatorsDTOFromJSON,\n TokenCreatorsDTOFromJSONTyped,\n TokenCreatorsDTOToJSON,\n TokenCreatorsDTOToJSONTyped,\n} from './TokenCreatorsDTO';\nimport type { TokenStat } from './TokenStat';\nimport {\n TokenStatFromJSON,\n TokenStatFromJSONTyped,\n TokenStatToJSON,\n TokenStatToJSONTyped,\n} from './TokenStat';\nimport type { TokenSocialMediasDTO } from './TokenSocialMediasDTO';\nimport {\n TokenSocialMediasDTOFromJSON,\n TokenSocialMediasDTOFromJSONTyped,\n TokenSocialMediasDTOToJSON,\n TokenSocialMediasDTOToJSONTyped,\n} from './TokenSocialMediasDTO';\n\n/**\n * \n * @export\n * @interface Token\n */\nexport interface Token {\n /**\n * DTO.TOKEN.METADATA.CHAIN\n * @type {string}\n * @memberof Token\n */\n chain: string;\n /**\n * DTO.TOKEN.METADATA.DECIMALS\n * @type {number}\n * @memberof Token\n */\n decimals: number;\n /**\n * DTO.TOKEN.METADATA.NAME\n * @type {string}\n * @memberof Token\n */\n name: string;\n /**\n * DTO.TOKEN.METADATA.SYMBOL\n * @type {string}\n * @memberof Token\n */\n symbol: string;\n /**\n * DTO.TOKEN.METADATA.METADATA_ADDRESS\n * @type {string}\n * @memberof Token\n */\n metadataAddress?: string;\n /**\n * DTO.TOKEN.METADATA.ADDRESS\n * @type {string}\n * @memberof Token\n */\n address: string;\n /**\n * DTO.TOKEN.METADATA.TOKEN_CREATORS\n * @type {Array<TokenCreatorsDTO>}\n * @memberof Token\n */\n tokenCreators?: Array<TokenCreatorsDTO>;\n /**\n * DTO.TOKEN.METADATA.IMAGE_URL\n * @type {string}\n * @memberof Token\n */\n imageUrl?: string;\n /**\n * DTO.TOKEN.METADATA.URI\n * @type {string}\n * @memberof Token\n */\n uri?: string;\n /**\n * DTO.TOKEN.METADATA.EXTRA\n * @type {TokenExtraDTO}\n * @memberof Token\n */\n extra?: TokenExtraDTO;\n /**\n * DTO.TOKEN.METADATA.SOCIAL_MEDIAS\n * @type {TokenSocialMediasDTO}\n * @memberof Token\n */\n socialMedias?: TokenSocialMediasDTO;\n /**\n * DTO.TOKEN.METADATA.TOKEN_CREATED_AT\n * @type {number}\n * @memberof Token\n */\n tokenCreatedAt?: number;\n /**\n * DTO.TOKEN.METADATA.DESCRIPTION\n * @type {string}\n * @memberof Token\n */\n description?: string;\n /**\n * DTO.TOKEN.MARKET_ID\n * @type {string}\n * @memberof Token\n */\n market?: string;\n /**\n * DTO.TOKEN.EXTENSION\n * @type {object}\n * @memberof Token\n */\n extension?: object;\n /**\n * DTO.TOKEN.STATS\n * @type {TokenStat}\n * @memberof Token\n */\n stats?: TokenStat;\n /**\n * DTO.TOKEN.LIQUIDITY\n * @type {Array<DexPoolDTO>}\n * @memberof Token\n */\n liquidity?: Array<DexPoolDTO>;\n /**\n * DTO.TOKEN.MARKET_CAP_INFO\n * @type {TokenMarketData}\n * @memberof Token\n */\n marketData: TokenMarketData;\n}\n\n/**\n * Check if a given object implements the Token interface.\n */\nexport function instanceOfToken(value: object): value is Token {\n if (!('chain' in value) || value['chain'] === undefined) return false;\n if (!('decimals' in value) || value['decimals'] === undefined) return false;\n if (!('name' in value) || value['name'] === undefined) return false;\n if (!('symbol' in value) || value['symbol'] === undefined) return false;\n if (!('address' in value) || value['address'] === undefined) return false;\n if (!('marketData' in value) || value['marketData'] === undefined) return false;\n return true;\n}\n\nexport function TokenFromJSON(json: any): Token {\n return TokenFromJSONTyped(json, false);\n}\n\nexport function TokenFromJSONTyped(json: any, ignoreDiscriminator: boolean): Token {\n if (json == null) {\n return json;\n }\n return {\n \n 'chain': json['chain'],\n 'decimals': json['decimals'],\n 'name': json['name'],\n 'symbol': json['symbol'],\n 'metadataAddress': json['metadataAddress'] == null ? undefined : json['metadataAddress'],\n 'address': json['address'],\n 'tokenCreators': json['tokenCreators'] == null ? undefined : ((json['tokenCreators'] as Array<any>).map(TokenCreatorsDTOFromJSON)),\n 'imageUrl': json['imageUrl'] == null ? undefined : json['imageUrl'],\n 'uri': json['uri'] == null ? undefined : json['uri'],\n 'extra': json['extra'] == null ? undefined : TokenExtraDTOFromJSON(json['extra']),\n 'socialMedias': json['socialMedias'] == null ? undefined : TokenSocialMediasDTOFromJSON(json['socialMedias']),\n 'tokenCreatedAt': json['tokenCreatedAt'] == null ? undefined : json['tokenCreatedAt'],\n 'description': json['description'] == null ? undefined : json['description'],\n '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 'market': value['market'],\n 'extension': value['extension'],\n 'stats': TokenStatToJSON(value['stats']),\n 'liquidity': value['liquidity'] == null ? undefined : ((value['liquidity'] as Array<any>).map(DexPoolDTOToJSON)),\n 'marketData': TokenMarketDataToJSON(value['marketData']),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TokenCreationDTO\n */\nexport interface TokenCreationDTO {\n /**\n * DTO.TOKEN.CREATION.TOKEN_ADDRESS\n * @type {string}\n * @memberof TokenCreationDTO\n */\n tokenAddress: string;\n /**\n * DTO.TOKEN.CREATION.BLOCK_HEIGHT\n * @type {number}\n * @memberof TokenCreationDTO\n */\n blockHeight: number;\n /**\n * DTO.TOKEN.CREATION.BLOCK_SLOT\n * @type {number}\n * @memberof TokenCreationDTO\n */\n blockSlot: number;\n /**\n * DTO.TOKEN.CREATION.BLOCK_HASH\n * @type {string}\n * @memberof TokenCreationDTO\n */\n blockHash: string;\n /**\n * DTO.TOKEN.CREATION.BLOCK_TIMESTAMP\n * @type {number}\n * @memberof TokenCreationDTO\n */\n blockTimestamp?: number;\n /**\n * DTO.TOKEN.CREATION.TRANSACTION_SIGNATURE\n * @type {string}\n * @memberof TokenCreationDTO\n */\n transactionSignature: string;\n /**\n * DTO.TOKEN.CREATION.TYPE\n * @type {string}\n * @memberof TokenCreationDTO\n */\n type: TokenCreationDTOTypeEnum;\n}\n\n\n/**\n * @export\n */\nexport const TokenCreationDTOTypeEnum = {\n Create: 'create',\n Mint: 'mint',\n Burn: 'burn'\n} as const;\nexport type TokenCreationDTOTypeEnum = typeof TokenCreationDTOTypeEnum[keyof typeof TokenCreationDTOTypeEnum];\n\n\n/**\n * Check if a given object implements the TokenCreationDTO interface.\n */\nexport function instanceOfTokenCreationDTO(value: object): value is TokenCreationDTO {\n if (!('tokenAddress' in value) || value['tokenAddress'] === undefined) return false;\n if (!('blockHeight' in value) || value['blockHeight'] === undefined) return false;\n if (!('blockSlot' in value) || value['blockSlot'] === undefined) return false;\n if (!('blockHash' in value) || value['blockHash'] === undefined) return false;\n if (!('transactionSignature' in value) || value['transactionSignature'] === undefined) return false;\n if (!('type' in value) || value['type'] === undefined) return false;\n return true;\n}\n\nexport function TokenCreationDTOFromJSON(json: any): TokenCreationDTO {\n return TokenCreationDTOFromJSONTyped(json, false);\n}\n\nexport function TokenCreationDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenCreationDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'tokenAddress': json['tokenAddress'],\n 'blockHeight': json['blockHeight'],\n 'blockSlot': json['blockSlot'],\n 'blockHash': json['blockHash'],\n 'blockTimestamp': json['blockTimestamp'] == null ? undefined : json['blockTimestamp'],\n 'transactionSignature': json['transactionSignature'],\n 'type': json['type'],\n };\n}\n\nexport function TokenCreationDTOToJSON(json: any): TokenCreationDTO {\n return TokenCreationDTOToJSONTyped(json, false);\n}\n\nexport function TokenCreationDTOToJSONTyped(value?: TokenCreationDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'tokenAddress': value['tokenAddress'],\n 'blockHeight': value['blockHeight'],\n 'blockSlot': value['blockSlot'],\n 'blockHash': value['blockHash'],\n 'blockTimestamp': value['blockTimestamp'],\n 'transactionSignature': value['transactionSignature'],\n 'type': value['type'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { TokenCreationDTO } from './TokenCreationDTO';\nimport {\n TokenCreationDTOFromJSON,\n TokenCreationDTOFromJSONTyped,\n TokenCreationDTOToJSON,\n TokenCreationDTOToJSONTyped,\n} from './TokenCreationDTO';\n\n/**\n * \n * @export\n * @interface TokenCreationPage\n */\nexport interface TokenCreationPage {\n /**\n * DTO.PAGE.HAS_NEXT\n * @type {boolean}\n * @memberof TokenCreationPage\n */\n hasNext?: boolean;\n /**\n * DTO.PAGE.HAS_PREV\n * @type {boolean}\n * @memberof TokenCreationPage\n */\n hasPrev?: boolean;\n /**\n * DTO.PAGE.START_CURSOR\n * @type {string}\n * @memberof TokenCreationPage\n */\n startCursor?: string;\n /**\n * DTO.PAGE.END_CURSOR\n * @type {string}\n * @memberof TokenCreationPage\n */\n endCursor?: string;\n /**\n * DTO.PAGE.TOTAL\n * @type {number}\n * @memberof TokenCreationPage\n */\n total?: number;\n /**\n * DTO.TOKEN.CREATION.PAGE.DATA\n * @type {Array<TokenCreationDTO>}\n * @memberof TokenCreationPage\n */\n data: Array<TokenCreationDTO>;\n}\n\n/**\n * Check if a given object implements the TokenCreationPage interface.\n */\nexport function instanceOfTokenCreationPage(value: object): value is TokenCreationPage {\n if (!('data' in value) || value['data'] === undefined) return false;\n return true;\n}\n\nexport function TokenCreationPageFromJSON(json: any): TokenCreationPage {\n return TokenCreationPageFromJSONTyped(json, false);\n}\n\nexport function TokenCreationPageFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenCreationPage {\n if (json == null) {\n return json;\n }\n return {\n \n 'hasNext': json['hasNext'] == null ? undefined : json['hasNext'],\n 'hasPrev': json['hasPrev'] == null ? undefined : json['hasPrev'],\n 'startCursor': json['startCursor'] == null ? undefined : json['startCursor'],\n 'endCursor': json['endCursor'] == null ? undefined : json['endCursor'],\n 'total': json['total'] == null ? undefined : json['total'],\n 'data': ((json['data'] as Array<any>).map(TokenCreationDTOFromJSON)),\n };\n}\n\nexport function TokenCreationPageToJSON(json: any): TokenCreationPage {\n return TokenCreationPageToJSONTyped(json, false);\n}\n\nexport function TokenCreationPageToJSONTyped(value?: TokenCreationPage | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'hasNext': value['hasNext'],\n 'hasPrev': value['hasPrev'],\n 'startCursor': value['startCursor'],\n 'endCursor': value['endCursor'],\n 'total': value['total'],\n 'data': ((value['data'] as Array<any>).map(TokenCreationDTOToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TokenHolder\n */\nexport interface TokenHolder {\n /**\n * DTO.TOKEN_HOLDER.WALLET_ADDRESS\n * @type {string}\n * @memberof TokenHolder\n */\n walletAddress: string;\n /**\n * DTO.TOKEN_HOLDER.AMOUNT\n * @type {number}\n * @memberof TokenHolder\n */\n amount: number;\n /**\n * DTO.TOKEN_HOLDER.AMOUNT_USD\n * @type {number}\n * @memberof TokenHolder\n */\n amountInUsd: number;\n /**\n * DTO.TOKEN_HOLDER.PERCENTAGE\n * @type {string}\n * @memberof TokenHolder\n */\n percentage: string;\n}\n\n/**\n * Check if a given object implements the TokenHolder interface.\n */\nexport function instanceOfTokenHolder(value: object): value is TokenHolder {\n if (!('walletAddress' in value) || value['walletAddress'] === undefined) return false;\n if (!('amount' in value) || value['amount'] === undefined) return false;\n if (!('amountInUsd' in value) || value['amountInUsd'] === undefined) return false;\n if (!('percentage' in value) || value['percentage'] === undefined) return false;\n return true;\n}\n\nexport function TokenHolderFromJSON(json: any): TokenHolder {\n return TokenHolderFromJSONTyped(json, false);\n}\n\nexport function TokenHolderFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenHolder {\n if (json == null) {\n return json;\n }\n return {\n \n 'walletAddress': json['walletAddress'],\n 'amount': json['amount'],\n 'amountInUsd': json['amountInUsd'],\n 'percentage': json['percentage'],\n };\n}\n\nexport function TokenHolderToJSON(json: any): TokenHolder {\n return TokenHolderToJSONTyped(json, false);\n}\n\nexport function TokenHolderToJSONTyped(value?: TokenHolder | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'walletAddress': value['walletAddress'],\n 'amount': value['amount'],\n 'amountInUsd': value['amountInUsd'],\n 'percentage': value['percentage'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { TokenHolder } from './TokenHolder';\nimport {\n TokenHolderFromJSON,\n TokenHolderFromJSONTyped,\n TokenHolderToJSON,\n TokenHolderToJSONTyped,\n} from './TokenHolder';\n\n/**\n * \n * @export\n * @interface TokenHolderPage\n */\nexport interface TokenHolderPage {\n /**\n * DTO.PAGE.HAS_NEXT\n * @type {boolean}\n * @memberof TokenHolderPage\n */\n hasNext?: boolean;\n /**\n * DTO.PAGE.HAS_PREV\n * @type {boolean}\n * @memberof TokenHolderPage\n */\n hasPrev?: boolean;\n /**\n * DTO.PAGE.START_CURSOR\n * @type {string}\n * @memberof TokenHolderPage\n */\n startCursor?: string;\n /**\n * DTO.PAGE.END_CURSOR\n * @type {string}\n * @memberof TokenHolderPage\n */\n endCursor?: string;\n /**\n * DTO.PAGE.TOTAL\n * @type {number}\n * @memberof TokenHolderPage\n */\n total?: number;\n /**\n * DTO.TOKEN_HOLDER.PAGE.DATA\n * @type {Array<TokenHolder>}\n * @memberof TokenHolderPage\n */\n data: Array<TokenHolder>;\n}\n\n/**\n * Check if a given object implements the TokenHolderPage interface.\n */\nexport function instanceOfTokenHolderPage(value: object): value is TokenHolderPage {\n if (!('data' in value) || value['data'] === undefined) return false;\n return true;\n}\n\nexport function TokenHolderPageFromJSON(json: any): TokenHolderPage {\n return TokenHolderPageFromJSONTyped(json, false);\n}\n\nexport function TokenHolderPageFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenHolderPage {\n if (json == null) {\n return json;\n }\n return {\n \n 'hasNext': json['hasNext'] == null ? undefined : json['hasNext'],\n 'hasPrev': json['hasPrev'] == null ? undefined : json['hasPrev'],\n 'startCursor': json['startCursor'] == null ? undefined : json['startCursor'],\n 'endCursor': json['endCursor'] == null ? undefined : json['endCursor'],\n 'total': json['total'] == null ? undefined : json['total'],\n 'data': ((json['data'] as Array<any>).map(TokenHolderFromJSON)),\n };\n}\n\nexport function TokenHolderPageToJSON(json: any): TokenHolderPage {\n return TokenHolderPageToJSONTyped(json, false);\n}\n\nexport function TokenHolderPageToJSONTyped(value?: TokenHolderPage | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'hasNext': value['hasNext'],\n 'hasPrev': value['hasPrev'],\n 'startCursor': value['startCursor'],\n 'endCursor': value['endCursor'],\n 'total': value['total'],\n 'data': ((value['data'] as Array<any>).map(TokenHolderToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { Token } from './Token';\nimport {\n TokenFromJSON,\n TokenFromJSONTyped,\n TokenToJSON,\n TokenToJSONTyped,\n} from './Token';\n\n/**\n * \n * @export\n * @interface TokenListPage\n */\nexport interface TokenListPage {\n /**\n * DTO.PAGE.HAS_NEXT\n * @type {boolean}\n * @memberof TokenListPage\n */\n hasNext?: boolean;\n /**\n * DTO.PAGE.HAS_PREV\n * @type {boolean}\n * @memberof TokenListPage\n */\n hasPrev?: boolean;\n /**\n * DTO.PAGE.START_CURSOR\n * @type {string}\n * @memberof TokenListPage\n */\n startCursor?: string;\n /**\n * DTO.PAGE.END_CURSOR\n * @type {string}\n * @memberof TokenListPage\n */\n endCursor?: string;\n /**\n * DTO.PAGE.TOTAL\n * @type {number}\n * @memberof TokenListPage\n */\n total?: number;\n /**\n * DTO.TOKEN.PAGE.DATA\n * @type {Array<Token>}\n * @memberof TokenListPage\n */\n data: Array<Token>;\n}\n\n/**\n * Check if a given object implements the TokenListPage interface.\n */\nexport function instanceOfTokenListPage(value: object): value is TokenListPage {\n if (!('data' in value) || value['data'] === undefined) return false;\n return true;\n}\n\nexport function TokenListPageFromJSON(json: any): TokenListPage {\n return TokenListPageFromJSONTyped(json, false);\n}\n\nexport function TokenListPageFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenListPage {\n if (json == null) {\n return json;\n }\n return {\n \n 'hasNext': json['hasNext'] == null ? undefined : json['hasNext'],\n 'hasPrev': json['hasPrev'] == null ? undefined : json['hasPrev'],\n 'startCursor': json['startCursor'] == null ? undefined : json['startCursor'],\n 'endCursor': json['endCursor'] == null ? undefined : json['endCursor'],\n 'total': json['total'] == null ? undefined : json['total'],\n 'data': ((json['data'] as Array<any>).map(TokenFromJSON)),\n };\n}\n\nexport function TokenListPageToJSON(json: any): TokenListPage {\n return TokenListPageToJSONTyped(json, false);\n}\n\nexport function TokenListPageToJSONTyped(value?: TokenListPage | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'hasNext': value['hasNext'],\n 'hasPrev': value['hasPrev'],\n 'startCursor': value['startCursor'],\n 'endCursor': value['endCursor'],\n 'total': value['total'],\n 'data': ((value['data'] as Array<any>).map(TokenToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { TokenExtraDTO } from './TokenExtraDTO';\nimport {\n TokenExtraDTOFromJSON,\n TokenExtraDTOFromJSONTyped,\n TokenExtraDTOToJSON,\n TokenExtraDTOToJSONTyped,\n} from './TokenExtraDTO';\nimport type { TokenCreatorsDTO } from './TokenCreatorsDTO';\nimport {\n TokenCreatorsDTOFromJSON,\n TokenCreatorsDTOFromJSONTyped,\n TokenCreatorsDTOToJSON,\n TokenCreatorsDTOToJSONTyped,\n} from './TokenCreatorsDTO';\nimport type { TokenSocialMediasDTO } from './TokenSocialMediasDTO';\nimport {\n TokenSocialMediasDTOFromJSON,\n TokenSocialMediasDTOFromJSONTyped,\n TokenSocialMediasDTOToJSON,\n TokenSocialMediasDTOToJSONTyped,\n} from './TokenSocialMediasDTO';\n\n/**\n * \n * @export\n * @interface TokenMetadata\n */\nexport interface TokenMetadata {\n /**\n * DTO.TOKEN.METADATA.CHAIN\n * @type {string}\n * @memberof TokenMetadata\n */\n chain: string;\n /**\n * DTO.TOKEN.METADATA.DECIMALS\n * @type {number}\n * @memberof TokenMetadata\n */\n decimals: number;\n /**\n * DTO.TOKEN.METADATA.NAME\n * @type {string}\n * @memberof TokenMetadata\n */\n name: string;\n /**\n * DTO.TOKEN.METADATA.SYMBOL\n * @type {string}\n * @memberof TokenMetadata\n */\n symbol: string;\n /**\n * DTO.TOKEN.METADATA.METADATA_ADDRESS\n * @type {string}\n * @memberof TokenMetadata\n */\n metadataAddress?: string;\n /**\n * DTO.TOKEN.METADATA.ADDRESS\n * @type {string}\n * @memberof TokenMetadata\n */\n address: string;\n /**\n * DTO.TOKEN.METADATA.TOKEN_CREATORS\n * @type {Array<TokenCreatorsDTO>}\n * @memberof TokenMetadata\n */\n tokenCreators?: Array<TokenCreatorsDTO>;\n /**\n * DTO.TOKEN.METADATA.IMAGE_URL\n * @type {string}\n * @memberof TokenMetadata\n */\n imageUrl?: string;\n /**\n * DTO.TOKEN.METADATA.URI\n * @type {string}\n * @memberof TokenMetadata\n */\n uri?: string;\n /**\n * DTO.TOKEN.METADATA.EXTRA\n * @type {TokenExtraDTO}\n * @memberof TokenMetadata\n */\n extra?: TokenExtraDTO;\n /**\n * DTO.TOKEN.METADATA.SOCIAL_MEDIAS\n * @type {TokenSocialMediasDTO}\n * @memberof TokenMetadata\n */\n socialMedias?: TokenSocialMediasDTO;\n /**\n * DTO.TOKEN.METADATA.TOKEN_CREATED_AT\n * @type {number}\n * @memberof TokenMetadata\n */\n tokenCreatedAt?: number;\n /**\n * DTO.TOKEN.METADATA.DESCRIPTION\n * @type {string}\n * @memberof TokenMetadata\n */\n description?: string;\n}\n\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 };\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 };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { Token } from './Token';\nimport {\n TokenFromJSON,\n TokenFromJSONTyped,\n TokenToJSON,\n TokenToJSONTyped,\n} from './Token';\n\n/**\n * \n * @export\n * @interface TokenPage\n */\nexport interface TokenPage {\n /**\n * DTO.PAGE.HAS_NEXT\n * @type {boolean}\n * @memberof TokenPage\n */\n hasNext?: boolean;\n /**\n * DTO.PAGE.HAS_PREV\n * @type {boolean}\n * @memberof TokenPage\n */\n hasPrev?: boolean;\n /**\n * DTO.PAGE.START_CURSOR\n * @type {string}\n * @memberof TokenPage\n */\n startCursor?: string;\n /**\n * DTO.PAGE.END_CURSOR\n * @type {string}\n * @memberof TokenPage\n */\n endCursor?: string;\n /**\n * DTO.PAGE.TOTAL\n * @type {number}\n * @memberof TokenPage\n */\n total?: number;\n /**\n * DTO.TOKEN.PAGE.COUNTS_BY_PROTOCOLS\n * @type {object}\n * @memberof TokenPage\n */\n countsByProtocols?: object;\n /**\n * DTO.TOKEN.PAGE.DATA\n * @type {Array<Token>}\n * @memberof TokenPage\n */\n data: Array<Token>;\n}\n\n/**\n * Check if a given object implements the TokenPage interface.\n */\nexport function instanceOfTokenPage(value: object): value is TokenPage {\n if (!('data' in value) || value['data'] === undefined) return false;\n return true;\n}\n\nexport function TokenPageFromJSON(json: any): TokenPage {\n return TokenPageFromJSONTyped(json, false);\n}\n\nexport function TokenPageFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenPage {\n if (json == null) {\n return json;\n }\n return {\n \n 'hasNext': json['hasNext'] == null ? undefined : json['hasNext'],\n 'hasPrev': json['hasPrev'] == null ? undefined : json['hasPrev'],\n 'startCursor': json['startCursor'] == null ? undefined : json['startCursor'],\n 'endCursor': json['endCursor'] == null ? undefined : json['endCursor'],\n 'total': json['total'] == null ? undefined : json['total'],\n 'countsByProtocols': json['countsByProtocols'] == null ? undefined : json['countsByProtocols'],\n 'data': ((json['data'] as Array<any>).map(TokenFromJSON)),\n };\n}\n\nexport function TokenPageToJSON(json: any): TokenPage {\n return TokenPageToJSONTyped(json, false);\n}\n\nexport function TokenPageToJSONTyped(value?: TokenPage | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'hasNext': value['hasNext'],\n 'hasPrev': value['hasPrev'],\n 'startCursor': value['startCursor'],\n 'endCursor': value['endCursor'],\n 'total': value['total'],\n 'countsByProtocols': value['countsByProtocols'],\n 'data': ((value['data'] as Array<any>).map(TokenToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TokenPriceDTO\n */\nexport interface TokenPriceDTO {\n /**\n * DTO.TOKEN.PRICE.TOKEN_ADDRESS\n * @type {string}\n * @memberof TokenPriceDTO\n */\n tokenAddress: string;\n /**\n * DTO.TOKEN.PRICE.PRICE_IN_USD\n * @type {string}\n * @memberof TokenPriceDTO\n */\n priceInUsd: string;\n /**\n * DTO.TOKEN.PRICE.PRICE_IN_NATIVE\n * @type {string}\n * @memberof TokenPriceDTO\n */\n priceInNative: string;\n /**\n * DTO.TOKEN.PRICE.TIMESTAMP\n * @type {number}\n * @memberof TokenPriceDTO\n */\n timestamp: number;\n}\n\n/**\n * Check if a given object implements the TokenPriceDTO interface.\n */\nexport function instanceOfTokenPriceDTO(value: object): value is TokenPriceDTO {\n if (!('tokenAddress' in value) || value['tokenAddress'] === undefined) return false;\n if (!('priceInUsd' in value) || value['priceInUsd'] === undefined) return false;\n if (!('priceInNative' in value) || value['priceInNative'] === undefined) return false;\n if (!('timestamp' in value) || value['timestamp'] === undefined) return false;\n return true;\n}\n\nexport function TokenPriceDTOFromJSON(json: any): TokenPriceDTO {\n return TokenPriceDTOFromJSONTyped(json, false);\n}\n\nexport function TokenPriceDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenPriceDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'tokenAddress': json['tokenAddress'],\n 'priceInUsd': json['priceInUsd'],\n 'priceInNative': json['priceInNative'],\n 'timestamp': json['timestamp'],\n };\n}\n\nexport function TokenPriceDTOToJSON(json: any): TokenPriceDTO {\n return TokenPriceDTOToJSONTyped(json, false);\n}\n\nexport function TokenPriceDTOToJSONTyped(value?: TokenPriceDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'tokenAddress': value['tokenAddress'],\n 'priceInUsd': value['priceInUsd'],\n 'priceInNative': value['priceInNative'],\n 'timestamp': value['timestamp'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { TokenPriceDTO } from './TokenPriceDTO';\nimport {\n TokenPriceDTOFromJSON,\n TokenPriceDTOFromJSONTyped,\n TokenPriceDTOToJSON,\n TokenPriceDTOToJSONTyped,\n} from './TokenPriceDTO';\n\n/**\n * \n * @export\n * @interface TokenPricePage\n */\nexport interface TokenPricePage {\n /**\n * DTO.PAGE.HAS_NEXT\n * @type {boolean}\n * @memberof TokenPricePage\n */\n hasNext?: boolean;\n /**\n * DTO.PAGE.HAS_PREV\n * @type {boolean}\n * @memberof TokenPricePage\n */\n hasPrev?: boolean;\n /**\n * DTO.PAGE.START_CURSOR\n * @type {string}\n * @memberof TokenPricePage\n */\n startCursor?: string;\n /**\n * DTO.PAGE.END_CURSOR\n * @type {string}\n * @memberof TokenPricePage\n */\n endCursor?: string;\n /**\n * DTO.PAGE.TOTAL\n * @type {number}\n * @memberof TokenPricePage\n */\n total?: number;\n /**\n * DTO.TOKEN.PRICE.PAGE.DATA\n * @type {Array<TokenPriceDTO>}\n * @memberof TokenPricePage\n */\n data: Array<TokenPriceDTO>;\n}\n\n/**\n * Check if a given object implements the TokenPricePage interface.\n */\nexport function instanceOfTokenPricePage(value: object): value is TokenPricePage {\n if (!('data' in value) || value['data'] === undefined) return false;\n return true;\n}\n\nexport function TokenPricePageFromJSON(json: any): TokenPricePage {\n return TokenPricePageFromJSONTyped(json, false);\n}\n\nexport function TokenPricePageFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenPricePage {\n if (json == null) {\n return json;\n }\n return {\n \n 'hasNext': json['hasNext'] == null ? undefined : json['hasNext'],\n 'hasPrev': json['hasPrev'] == null ? undefined : json['hasPrev'],\n 'startCursor': json['startCursor'] == null ? undefined : json['startCursor'],\n 'endCursor': json['endCursor'] == null ? undefined : json['endCursor'],\n 'total': json['total'] == null ? undefined : json['total'],\n 'data': ((json['data'] as Array<any>).map(TokenPriceDTOFromJSON)),\n };\n}\n\nexport function TokenPricePageToJSON(json: any): TokenPricePage {\n return TokenPricePageToJSONTyped(json, false);\n}\n\nexport function TokenPricePageToJSONTyped(value?: TokenPricePage | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'hasNext': value['hasNext'],\n 'hasPrev': value['hasPrev'],\n 'startCursor': value['startCursor'],\n 'endCursor': value['endCursor'],\n 'total': value['total'],\n 'data': ((value['data'] as Array<any>).map(TokenPriceDTOToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TopTradersDTO\n */\nexport interface TopTradersDTO {\n /**\n * DTO.TRADE.TOP_TRADERS.TOKEN_ADDRESS\n * @type {string}\n * @memberof TopTradersDTO\n */\n tokenAddress: string;\n /**\n * DTO.TRADE.TOP_TRADERS.OWNER\n * @type {string}\n * @memberof TopTradersDTO\n */\n owner: string;\n /**\n * DTO.TRADE.TOP_TRADERS.TAGS\n * @type {Array<string>}\n * @memberof TopTradersDTO\n */\n tags: Array<string>;\n /**\n * DTO.TRADE.TOP_TRADERS.TYPE\n * @type {string}\n * @memberof TopTradersDTO\n */\n type: string;\n /**\n * DTO.TRADE.TOP_TRADERS.VOLUME\n * @type {number}\n * @memberof TopTradersDTO\n */\n volume: number;\n /**\n * DTO.TRADE.TOP_TRADERS.TRADE\n * @type {number}\n * @memberof TopTradersDTO\n */\n trade: number;\n /**\n * DTO.TRADE.TOP_TRADERS.TRADE_BUY\n * @type {number}\n * @memberof TopTradersDTO\n */\n tradeBuy: number;\n /**\n * DTO.TRADE.TOP_TRADERS.TRADE_SELL\n * @type {number}\n * @memberof TopTradersDTO\n */\n tradeSell: number;\n /**\n * DTO.TRADE.TOP_TRADERS.VOLUME_BUY\n * @type {number}\n * @memberof TopTradersDTO\n */\n volumeBuy: number;\n /**\n * DTO.TRADE.TOP_TRADERS.VOLUME_SELL\n * @type {number}\n * @memberof TopTradersDTO\n */\n volumeSell: number;\n /**\n * DTO.TRADE.TOP_TRADERS.IS_SCALED_UI_TOKEN\n * @type {boolean}\n * @memberof TopTradersDTO\n */\n isScaledUiToken: boolean;\n /**\n * DTO.TRADE.TOP_TRADERS.MULTIPLIER\n * @type {string}\n * @memberof TopTradersDTO\n */\n multiplier?: 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 (!('owner' in value) || value['owner'] === undefined) return false;\n if (!('tags' in value) || value['tags'] === undefined) return false;\n if (!('type' in value) || value['type'] === undefined) return false;\n if (!('volume' in value) || value['volume'] === undefined) return false;\n if (!('trade' in value) || value['trade'] === undefined) return false;\n if (!('tradeBuy' in value) || value['tradeBuy'] === undefined) return false;\n if (!('tradeSell' in value) || value['tradeSell'] === undefined) return false;\n if (!('volumeBuy' in value) || value['volumeBuy'] === undefined) return false;\n if (!('volumeSell' in value) || value['volumeSell'] === undefined) return false;\n if (!('isScaledUiToken' in value) || value['isScaledUiToken'] === 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 'owner': json['owner'],\n 'tags': json['tags'],\n 'type': json['type'],\n 'volume': json['volume'],\n 'trade': json['trade'],\n 'tradeBuy': json['tradeBuy'],\n 'tradeSell': json['tradeSell'],\n 'volumeBuy': json['volumeBuy'],\n 'volumeSell': json['volumeSell'],\n 'isScaledUiToken': json['isScaledUiToken'],\n 'multiplier': json['multiplier'] == null ? undefined : json['multiplier'],\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 'owner': value['owner'],\n 'tags': value['tags'],\n 'type': value['type'],\n 'volume': value['volume'],\n 'trade': value['trade'],\n 'tradeBuy': value['tradeBuy'],\n 'tradeSell': value['tradeSell'],\n 'volumeBuy': value['volumeBuy'],\n 'volumeSell': value['volumeSell'],\n 'isScaledUiToken': value['isScaledUiToken'],\n 'multiplier': value['multiplier'],\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 * DTO.PAGE.HAS_NEXT\n * @type {boolean}\n * @memberof TopTradersPage\n */\n hasNext?: boolean;\n /**\n * DTO.PAGE.HAS_PREV\n * @type {boolean}\n * @memberof TopTradersPage\n */\n hasPrev?: boolean;\n /**\n * DTO.PAGE.START_CURSOR\n * @type {string}\n * @memberof TopTradersPage\n */\n startCursor?: string;\n /**\n * DTO.PAGE.END_CURSOR\n * @type {string}\n * @memberof TopTradersPage\n */\n endCursor?: string;\n /**\n * DTO.PAGE.TOTAL\n * @type {number}\n * @memberof TopTradersPage\n */\n total?: number;\n /**\n * DTO.TRADE.TOP_TRADERS.PAGE.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 * DTO.TRADE.DETAIL.CHAIN\n * @type {string}\n * @memberof TradeDetailDTO\n */\n chain: string;\n /**\n * DTO.TRADE.DETAIL.BLOCK_HEIGHT\n * @type {number}\n * @memberof TradeDetailDTO\n */\n blockHeight: number;\n /**\n * DTO.TRADE.DETAIL.BLOCK_TIMESTAMP\n * @type {number}\n * @memberof TradeDetailDTO\n */\n blockTimestamp: number;\n /**\n * DTO.TRADE.DETAIL.ACCOUNT_OWNER_ADDRESS\n * @type {string}\n * @memberof TradeDetailDTO\n */\n accountOwnerAddress: string;\n /**\n * DTO.TRADE.DETAIL.TRANSACTION_SIGNATURE\n * @type {string}\n * @memberof TradeDetailDTO\n */\n transactionSignature: string;\n /**\n * DTO.TRADE.DETAIL.TOKEN_NAME\n * @type {string}\n * @memberof TradeDetailDTO\n */\n tokenName: string;\n /**\n * DTO.TRADE.DETAIL.TOKEN_SYMBOL\n * @type {string}\n * @memberof TradeDetailDTO\n */\n tokenSymbol: string;\n /**\n * DTO.TRADE.DETAIL.TOKEN_IMAGE_URL\n * @type {string}\n * @memberof TradeDetailDTO\n */\n tokenImageUrl: string;\n /**\n * DTO.TRADE.DETAIL.TOKEN_ADDRESS\n * @type {string}\n * @memberof TradeDetailDTO\n */\n tokenAddress: string;\n /**\n * DTO.TRADE.DETAIL.POOL_ADDRESS\n * @type {string}\n * @memberof TradeDetailDTO\n */\n poolAddress: string;\n /**\n * DTO.TRADE.DETAIL.DEX_PROGRAM_ADDRESS\n * @type {string}\n * @memberof TradeDetailDTO\n */\n dexProgramAddress: string;\n /**\n * DTO.TRADE.DETAIL.DEX_PROTOCOL_FAMILY\n * @type {string}\n * @memberof TradeDetailDTO\n */\n dexProtocolFamily: string;\n /**\n * DTO.TRADE.DETAIL.DEX_IMAGE\n * @type {string}\n * @memberof TradeDetailDTO\n */\n dexImage: string;\n /**\n * DTO.TRADE.DETAIL.TOKEN_AMOUNT\n * @type {string}\n * @memberof TradeDetailDTO\n */\n tokenAmount: string;\n /**\n * DTO.TRADE.DETAIL.TOKEN_PRICE_IN_USD\n * @type {string}\n * @memberof TradeDetailDTO\n */\n tokenPriceInUsd: string;\n /**\n * DTO.TRADE.DETAIL.TOKEN_AMOUNT_IN_USD\n * @type {string}\n * @memberof TradeDetailDTO\n */\n tokenAmountInUsd: string;\n /**\n * DTO.TRADE.DETAIL.TYPE\n * @type {string}\n * @memberof TradeDetailDTO\n */\n type: string;\n /**\n * DTO.TRADE.DETAIL.SIDE_TOKEN_NAME\n * @type {string}\n * @memberof TradeDetailDTO\n */\n sideTokenName: string;\n /**\n * DTO.TRADE.DETAIL.SIDE_TOKEN_SYMBOL\n * @type {string}\n * @memberof TradeDetailDTO\n */\n sideTokenSymbol: string;\n /**\n * DTO.TRADE.DETAIL.SIDE_TOKEN_IMAGE_URL\n * @type {string}\n * @memberof TradeDetailDTO\n */\n sideTokenImageUrl: string;\n /**\n * DTO.TRADE.DETAIL.SIDE_TOKEN_ADDRESS\n * @type {string}\n * @memberof TradeDetailDTO\n */\n sideTokenAddress: string;\n /**\n * DTO.TRADE.DETAIL.SIDE_TOKEN_PRICE_IN_USD\n * @type {string}\n * @memberof TradeDetailDTO\n */\n sideTokenPriceInUsd: string;\n /**\n * DTO.TRADE.DETAIL.SIDE_TOKEN_AMOUNT\n * @type {string}\n * @memberof TradeDetailDTO\n */\n sideTokenAmount: string;\n /**\n * DTO.TRADE.DETAIL.SIDE_TOKEN_AMOUNT_IN_USD\n * @type {string}\n * @memberof TradeDetailDTO\n */\n sideTokenAmountInUsd: string;\n /**\n * DTO.TRADE.DETAIL.STATUS\n * @type {string}\n * @memberof TradeDetailDTO\n */\n status: string;\n}\n\n/**\n * Check if a given object implements the TradeDetailDTO interface.\n */\nexport function instanceOfTradeDetailDTO(value: object): value is TradeDetailDTO {\n if (!('chain' in value) || value['chain'] === undefined) return false;\n if (!('blockHeight' in value) || value['blockHeight'] === undefined) return false;\n if (!('blockTimestamp' in value) || value['blockTimestamp'] === undefined) return false;\n if (!('accountOwnerAddress' in value) || value['accountOwnerAddress'] === undefined) return false;\n if (!('transactionSignature' in value) || value['transactionSignature'] === undefined) return false;\n if (!('tokenName' in value) || value['tokenName'] === undefined) return false;\n if (!('tokenSymbol' in value) || value['tokenSymbol'] === undefined) return false;\n if (!('tokenImageUrl' in value) || value['tokenImageUrl'] === undefined) return false;\n if (!('tokenAddress' in value) || value['tokenAddress'] === undefined) return false;\n if (!('poolAddress' in value) || value['poolAddress'] === undefined) return false;\n if (!('dexProgramAddress' in value) || value['dexProgramAddress'] === undefined) return false;\n if (!('dexProtocolFamily' in value) || value['dexProtocolFamily'] === undefined) return false;\n if (!('dexImage' in value) || value['dexImage'] === undefined) return false;\n if (!('tokenAmount' in value) || value['tokenAmount'] === undefined) return false;\n if (!('tokenPriceInUsd' in value) || value['tokenPriceInUsd'] === undefined) return false;\n if (!('tokenAmountInUsd' in value) || value['tokenAmountInUsd'] === undefined) return false;\n if (!('type' in value) || value['type'] === undefined) return false;\n if (!('sideTokenName' in value) || value['sideTokenName'] === undefined) return false;\n if (!('sideTokenSymbol' in value) || value['sideTokenSymbol'] === undefined) return false;\n if (!('sideTokenImageUrl' in value) || value['sideTokenImageUrl'] === undefined) return false;\n if (!('sideTokenAddress' in value) || value['sideTokenAddress'] === undefined) return false;\n if (!('sideTokenPriceInUsd' in value) || value['sideTokenPriceInUsd'] === undefined) return false;\n if (!('sideTokenAmount' in value) || value['sideTokenAmount'] === undefined) return false;\n if (!('sideTokenAmountInUsd' in value) || value['sideTokenAmountInUsd'] === undefined) return false;\n if (!('status' in value) || value['status'] === undefined) return false;\n return true;\n}\n\nexport function TradeDetailDTOFromJSON(json: any): TradeDetailDTO {\n return TradeDetailDTOFromJSONTyped(json, false);\n}\n\nexport function TradeDetailDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): TradeDetailDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'chain': json['chain'],\n 'blockHeight': json['blockHeight'],\n 'blockTimestamp': json['blockTimestamp'],\n 'accountOwnerAddress': json['accountOwnerAddress'],\n 'transactionSignature': json['transactionSignature'],\n 'tokenName': json['tokenName'],\n 'tokenSymbol': json['tokenSymbol'],\n 'tokenImageUrl': json['tokenImageUrl'],\n 'tokenAddress': json['tokenAddress'],\n 'poolAddress': json['poolAddress'],\n 'dexProgramAddress': json['dexProgramAddress'],\n 'dexProtocolFamily': json['dexProtocolFamily'],\n 'dexImage': json['dexImage'],\n 'tokenAmount': json['tokenAmount'],\n 'tokenPriceInUsd': json['tokenPriceInUsd'],\n 'tokenAmountInUsd': json['tokenAmountInUsd'],\n 'type': json['type'],\n 'sideTokenName': json['sideTokenName'],\n 'sideTokenSymbol': json['sideTokenSymbol'],\n 'sideTokenImageUrl': json['sideTokenImageUrl'],\n 'sideTokenAddress': json['sideTokenAddress'],\n 'sideTokenPriceInUsd': json['sideTokenPriceInUsd'],\n 'sideTokenAmount': json['sideTokenAmount'],\n 'sideTokenAmountInUsd': json['sideTokenAmountInUsd'],\n 'status': json['status'],\n };\n}\n\nexport function TradeDetailDTOToJSON(json: any): TradeDetailDTO {\n return TradeDetailDTOToJSONTyped(json, false);\n}\n\nexport function TradeDetailDTOToJSONTyped(value?: TradeDetailDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'chain': value['chain'],\n 'blockHeight': value['blockHeight'],\n 'blockTimestamp': value['blockTimestamp'],\n 'accountOwnerAddress': value['accountOwnerAddress'],\n 'transactionSignature': value['transactionSignature'],\n 'tokenName': value['tokenName'],\n 'tokenSymbol': value['tokenSymbol'],\n 'tokenImageUrl': value['tokenImageUrl'],\n 'tokenAddress': value['tokenAddress'],\n 'poolAddress': value['poolAddress'],\n 'dexProgramAddress': value['dexProgramAddress'],\n 'dexProtocolFamily': value['dexProtocolFamily'],\n 'dexImage': value['dexImage'],\n 'tokenAmount': value['tokenAmount'],\n 'tokenPriceInUsd': value['tokenPriceInUsd'],\n 'tokenAmountInUsd': value['tokenAmountInUsd'],\n 'type': value['type'],\n 'sideTokenName': value['sideTokenName'],\n 'sideTokenSymbol': value['sideTokenSymbol'],\n 'sideTokenImageUrl': value['sideTokenImageUrl'],\n 'sideTokenAddress': value['sideTokenAddress'],\n 'sideTokenPriceInUsd': value['sideTokenPriceInUsd'],\n 'sideTokenAmount': value['sideTokenAmount'],\n 'sideTokenAmountInUsd': value['sideTokenAmountInUsd'],\n 'status': value['status'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { TradeDetailDTO } from './TradeDetailDTO';\nimport {\n TradeDetailDTOFromJSON,\n TradeDetailDTOFromJSONTyped,\n TradeDetailDTOToJSON,\n TradeDetailDTOToJSONTyped,\n} from './TradeDetailDTO';\n\n/**\n * \n * @export\n * @interface TradePage\n */\nexport interface TradePage {\n /**\n * DTO.PAGE.HAS_NEXT\n * @type {boolean}\n * @memberof TradePage\n */\n hasNext?: boolean;\n /**\n * DTO.PAGE.HAS_PREV\n * @type {boolean}\n * @memberof TradePage\n */\n hasPrev?: boolean;\n /**\n * DTO.PAGE.START_CURSOR\n * @type {string}\n * @memberof TradePage\n */\n startCursor?: string;\n /**\n * DTO.PAGE.END_CURSOR\n * @type {string}\n * @memberof TradePage\n */\n endCursor?: string;\n /**\n * DTO.PAGE.TOTAL\n * @type {number}\n * @memberof TradePage\n */\n total?: number;\n /**\n * DTO.TRADE.PAGE.DATA\n * @type {Array<TradeDetailDTO>}\n * @memberof TradePage\n */\n data: Array<TradeDetailDTO>;\n}\n\n/**\n * Check if a given object implements the TradePage interface.\n */\nexport function instanceOfTradePage(value: object): value is TradePage {\n if (!('data' in value) || value['data'] === undefined) return false;\n return true;\n}\n\nexport function TradePageFromJSON(json: any): TradePage {\n return TradePageFromJSONTyped(json, false);\n}\n\nexport function TradePageFromJSONTyped(json: any, ignoreDiscriminator: boolean): TradePage {\n if (json == null) {\n return json;\n }\n return {\n \n 'hasNext': json['hasNext'] == null ? undefined : json['hasNext'],\n 'hasPrev': json['hasPrev'] == null ? undefined : json['hasPrev'],\n 'startCursor': json['startCursor'] == null ? undefined : json['startCursor'],\n 'endCursor': json['endCursor'] == null ? undefined : json['endCursor'],\n 'total': json['total'] == null ? undefined : json['total'],\n 'data': ((json['data'] as Array<any>).map(TradeDetailDTOFromJSON)),\n };\n}\n\nexport function TradePageToJSON(json: any): TradePage {\n return TradePageToJSONTyped(json, false);\n}\n\nexport function TradePageToJSONTyped(value?: TradePage | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'hasNext': value['hasNext'],\n 'hasPrev': value['hasPrev'],\n 'startCursor': value['startCursor'],\n 'endCursor': value['endCursor'],\n 'total': value['total'],\n 'data': ((value['data'] as Array<any>).map(TradeDetailDTOToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface WalletBalanceDetailDTO\n */\nexport interface WalletBalanceDetailDTO {\n /**\n * DTO.WALLET.BALANCE.TOKEN_ADDRESS\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n tokenAddress: string;\n /**\n * DTO.WALLET.BALANCE.AMOUNT\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n amount: string;\n /**\n * DTO.WALLET.BALANCE.AMOUNT_IN_USD\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n valueInUsd: string;\n /**\n * DTO.WALLET.BALANCE.TOKEN_NAME\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n name: string;\n /**\n * DTO.WALLET.BALANCE.TOKEN_SYMBOL\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n symbol: string;\n /**\n * DTO.WALLET.BALANCE.TOKEN_IMAGE_URL\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n imageUrl: string;\n /**\n * DTO.WALLET.BALANCE.TOKEN_PRICE_IN_SOL\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n priceInSol: string;\n /**\n * DTO.WALLET.BALANCE.TOKEN_PRICE_IN_USD\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n priceInUsd: string;\n /**\n * DTO.WALLET.BALANCE.PRICE_CHANGE_24H\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n priceChangeRatioInUsd24h: string;\n /**\n * DTO.WALLET.BALANCE.UNREALIZED_PROFIT\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n unrealizedProfitInUsd: string;\n /**\n * DTO.WALLET.BALANCE.UNREALIZED_PROFIT_RATIO\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n unrealizedProfitRatio: string;\n /**\n * DTO.WALLET.BALANCE.OPEN_TIME\n * @type {number}\n * @memberof WalletBalanceDetailDTO\n */\n openTime: number;\n /**\n * DTO.WALLET.BALANCE.CLOSE_TIME\n * @type {number}\n * @memberof WalletBalanceDetailDTO\n */\n closeTime: number;\n /**\n * DTO.WALLET.BALANCE.BUYS\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n buys: string;\n /**\n * DTO.WALLET.BALANCE.BUY_AMOUNT\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n buyAmount: string;\n /**\n * DTO.WALLET.BALANCE.BUY_AMOUNT_USD\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n buyAmountInUsd: string;\n /**\n * DTO.WALLET.BALANCE.SELLS\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n sells: string;\n /**\n * DTO.WALLET.BALANCE.SELL_AMOUNT\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n sellAmount: string;\n /**\n * DTO.WALLET.BALANCE.SELL_AMOUNT_USD\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n sellAmountInUsd: string;\n /**\n * DTO.WALLET.BALANCE.AVERAGE_BUY_PRICE\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n averageBuyPriceInUsd: string;\n /**\n * DTO.WALLET.BALANCE.AVERAGE_SELL_PRICE\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n averageSellPriceInUsd: string;\n /**\n * DTO.WALLET.BALANCE.REALIZED_PROFIT_IN_USD\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n realizedProfitInUsd: string;\n /**\n * DTO.WALLET.BALANCE.REALIZED_PROFIT_RATIO\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n realizedProfitRatio: string;\n /**\n * DTO.WALLET.BALANCE.TOTAL_REALIZED_PROFIT\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n totalRealizedProfitInUsd: string;\n /**\n * DTO.WALLET.BALANCE.TOTAL_REALIZED_PROFIT_RATIO\n * @type {string}\n * @memberof WalletBalanceDetailDTO\n */\n totalRealizedProfitRatio: string;\n}\n\n/**\n * Check if a given object implements the WalletBalanceDetailDTO interface.\n */\nexport function instanceOfWalletBalanceDetailDTO(value: object): value is WalletBalanceDetailDTO {\n if (!('tokenAddress' in value) || value['tokenAddress'] === undefined) return false;\n if (!('amount' in value) || value['amount'] === undefined) return false;\n if (!('valueInUsd' in value) || value['valueInUsd'] === undefined) return false;\n if (!('name' in value) || value['name'] === undefined) return false;\n if (!('symbol' in value) || value['symbol'] === undefined) return false;\n if (!('imageUrl' in value) || value['imageUrl'] === undefined) return false;\n if (!('priceInSol' in value) || value['priceInSol'] === undefined) return false;\n if (!('priceInUsd' in value) || value['priceInUsd'] === undefined) return false;\n if (!('priceChangeRatioInUsd24h' in value) || value['priceChangeRatioInUsd24h'] === undefined) return false;\n if (!('unrealizedProfitInUsd' in value) || value['unrealizedProfitInUsd'] === undefined) return false;\n if (!('unrealizedProfitRatio' in value) || value['unrealizedProfitRatio'] === undefined) return false;\n if (!('openTime' in value) || value['openTime'] === undefined) return false;\n if (!('closeTime' in value) || value['closeTime'] === undefined) return false;\n if (!('buys' in value) || value['buys'] === undefined) return false;\n if (!('buyAmount' in value) || value['buyAmount'] === undefined) return false;\n if (!('buyAmountInUsd' in value) || value['buyAmountInUsd'] === undefined) return false;\n if (!('sells' in value) || value['sells'] === undefined) return false;\n if (!('sellAmount' in value) || value['sellAmount'] === undefined) return false;\n if (!('sellAmountInUsd' in value) || value['sellAmountInUsd'] === undefined) return false;\n if (!('averageBuyPriceInUsd' in value) || value['averageBuyPriceInUsd'] === undefined) return false;\n if (!('averageSellPriceInUsd' in value) || value['averageSellPriceInUsd'] === undefined) return false;\n if (!('realizedProfitInUsd' in value) || value['realizedProfitInUsd'] === undefined) return false;\n if (!('realizedProfitRatio' in value) || value['realizedProfitRatio'] === undefined) return false;\n if (!('totalRealizedProfitInUsd' in value) || value['totalRealizedProfitInUsd'] === undefined) return false;\n if (!('totalRealizedProfitRatio' in value) || value['totalRealizedProfitRatio'] === undefined) return false;\n return true;\n}\n\nexport function WalletBalanceDetailDTOFromJSON(json: any): WalletBalanceDetailDTO {\n return WalletBalanceDetailDTOFromJSONTyped(json, false);\n}\n\nexport function WalletBalanceDetailDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): WalletBalanceDetailDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'tokenAddress': json['tokenAddress'],\n 'amount': json['amount'],\n 'valueInUsd': json['valueInUsd'],\n 'name': json['name'],\n 'symbol': json['symbol'],\n 'imageUrl': json['imageUrl'],\n 'priceInSol': json['priceInSol'],\n 'priceInUsd': json['priceInUsd'],\n 'priceChangeRatioInUsd24h': json['priceChangeRatioInUsd24h'],\n 'unrealizedProfitInUsd': json['unrealizedProfitInUsd'],\n 'unrealizedProfitRatio': json['unrealizedProfitRatio'],\n 'openTime': json['openTime'],\n 'closeTime': json['closeTime'],\n 'buys': json['buys'],\n 'buyAmount': json['buyAmount'],\n 'buyAmountInUsd': json['buyAmountInUsd'],\n 'sells': json['sells'],\n 'sellAmount': json['sellAmount'],\n 'sellAmountInUsd': json['sellAmountInUsd'],\n 'averageBuyPriceInUsd': json['averageBuyPriceInUsd'],\n 'averageSellPriceInUsd': json['averageSellPriceInUsd'],\n 'realizedProfitInUsd': json['realizedProfitInUsd'],\n 'realizedProfitRatio': json['realizedProfitRatio'],\n 'totalRealizedProfitInUsd': json['totalRealizedProfitInUsd'],\n 'totalRealizedProfitRatio': json['totalRealizedProfitRatio'],\n };\n}\n\nexport function WalletBalanceDetailDTOToJSON(json: any): WalletBalanceDetailDTO {\n return WalletBalanceDetailDTOToJSONTyped(json, false);\n}\n\nexport function WalletBalanceDetailDTOToJSONTyped(value?: WalletBalanceDetailDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'tokenAddress': value['tokenAddress'],\n 'amount': value['amount'],\n 'valueInUsd': value['valueInUsd'],\n 'name': value['name'],\n 'symbol': value['symbol'],\n 'imageUrl': value['imageUrl'],\n 'priceInSol': value['priceInSol'],\n 'priceInUsd': value['priceInUsd'],\n 'priceChangeRatioInUsd24h': value['priceChangeRatioInUsd24h'],\n 'unrealizedProfitInUsd': value['unrealizedProfitInUsd'],\n 'unrealizedProfitRatio': value['unrealizedProfitRatio'],\n 'openTime': value['openTime'],\n 'closeTime': value['closeTime'],\n 'buys': value['buys'],\n 'buyAmount': value['buyAmount'],\n 'buyAmountInUsd': value['buyAmountInUsd'],\n 'sells': value['sells'],\n 'sellAmount': value['sellAmount'],\n 'sellAmountInUsd': value['sellAmountInUsd'],\n 'averageBuyPriceInUsd': value['averageBuyPriceInUsd'],\n 'averageSellPriceInUsd': value['averageSellPriceInUsd'],\n 'realizedProfitInUsd': value['realizedProfitInUsd'],\n 'realizedProfitRatio': value['realizedProfitRatio'],\n 'totalRealizedProfitInUsd': value['totalRealizedProfitInUsd'],\n 'totalRealizedProfitRatio': value['totalRealizedProfitRatio'],\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\nimport type { WalletBalanceDetailDTO } from './WalletBalanceDetailDTO';\nimport {\n WalletBalanceDetailDTOFromJSON,\n WalletBalanceDetailDTOFromJSONTyped,\n WalletBalanceDetailDTOToJSON,\n WalletBalanceDetailDTOToJSONTyped,\n} from './WalletBalanceDetailDTO';\n\n/**\n * \n * @export\n * @interface WalletBalancesDTO\n */\nexport interface WalletBalancesDTO {\n /**\n * DTO.WALLET.BALANCES.TOTAL_BALANCES_IN_USD\n * @type {string}\n * @memberof WalletBalancesDTO\n */\n totalBalancesInUsd: string;\n /**\n * DTO.WALLET.BALANCES.TOTAL_PROFIT_IN_USD\n * @type {string}\n * @memberof WalletBalancesDTO\n */\n totalProfitInUsd: string;\n /**\n * DTO.WALLET.BALANCES.BALANCES.DETAIL\n * @type {Array<WalletBalanceDetailDTO>}\n * @memberof WalletBalancesDTO\n */\n balances: Array<WalletBalanceDetailDTO>;\n}\n\n/**\n * Check if a given object implements the WalletBalancesDTO interface.\n */\nexport function instanceOfWalletBalancesDTO(value: object): value is WalletBalancesDTO {\n if (!('totalBalancesInUsd' in value) || value['totalBalancesInUsd'] === undefined) return false;\n if (!('totalProfitInUsd' in value) || value['totalProfitInUsd'] === undefined) return false;\n if (!('balances' in value) || value['balances'] === undefined) return false;\n return true;\n}\n\nexport function WalletBalancesDTOFromJSON(json: any): WalletBalancesDTO {\n return WalletBalancesDTOFromJSONTyped(json, false);\n}\n\nexport function WalletBalancesDTOFromJSONTyped(json: any, ignoreDiscriminator: boolean): WalletBalancesDTO {\n if (json == null) {\n return json;\n }\n return {\n \n 'totalBalancesInUsd': json['totalBalancesInUsd'],\n 'totalProfitInUsd': json['totalProfitInUsd'],\n 'balances': ((json['balances'] as Array<any>).map(WalletBalanceDetailDTOFromJSON)),\n };\n}\n\nexport function WalletBalancesDTOToJSON(json: any): WalletBalancesDTO {\n return WalletBalancesDTOToJSONTyped(json, false);\n}\n\nexport function WalletBalancesDTOToJSONTyped(value?: WalletBalancesDTO | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'totalBalancesInUsd': value['totalBalancesInUsd'],\n 'totalProfitInUsd': value['totalProfitInUsd'],\n 'balances': ((value['balances'] as Array<any>).map(WalletBalanceDetailDTOToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface WalletPnlDTO\n */\nexport interface WalletPnlDTO {\n /**\n * DTO.WALLET.PNL.ID\n * @type {number}\n * @memberof WalletPnlDTO\n */\n id: number;\n /**\n * DTO.WALLET.PNL.CHAIN\n * @type {string}\n * @memberof WalletPnlDTO\n */\n chain: string;\n /**\n * DTO.WALLET.PNL.WALLET_ADDRESS\n * @type {string}\n * @memberof WalletPnlDTO\n */\n walletAddress: string;\n /**\n * DTO.WALLET.PNL.TOKEN_ADDRESS\n * @type {string}\n * @memberof WalletPnlDTO\n */\n tokenAddress: string;\n /**\n * DTO.WALLET.PNL.TOKEN_PRICE\n * @type {number}\n * @memberof WalletPnlDTO\n */\n tokenPriceInUsd: number;\n /**\n * DTO.WALLET.PNL.OPEN_TIME\n * @type {number}\n * @memberof WalletPnlDTO\n */\n openTime: number;\n /**\n * DTO.WALLET.PNL.CLOSE_TIME\n * @type {number}\n * @memberof WalletPnlDTO\n */\n closeTime: number;\n /**\n * DTO.WALLET.PNL.LAST_TIME\n * @type {number}\n * @memberof WalletPnlDTO\n */\n lastTime: number;\n /**\n * DTO.WALLET.PNL.BALANCE\n * @type {number}\n * @memberof WalletPnlDTO\n */\n balance: number;\n /**\n * DTO.WALLET.PNL.BUY_AMOUNT\n * @type {number}\n * @memberof WalletPnlDTO\n */\n buyAmount: number;\n /**\n * DTO.WALLET.PNL.BUY_AMOUNT_USD\n * @type {number}\n * @memberof WalletPnlDTO\n */\n buyAmountInUsd: number;\n /**\n * DTO.WALLET.PNL.BUYS\n * @type {number}\n * @memberof WalletPnlDTO\n */\n buys: number;\n /**\n * DTO.WALLET.PNL.SELL_AMOUNT\n * @type {number}\n * @memberof WalletPnlDTO\n */\n sellAmount: number;\n /**\n * DTO.WALLET.PNL.SELL_AMOUNT_USD\n * @type {number}\n * @memberof WalletPnlDTO\n */\n sellAmountInUsd: number;\n /**\n * DTO.WALLET.PNL.SELLS\n * @type {number}\n * @memberof WalletPnlDTO\n */\n sells: number;\n /**\n * DTO.WALLET.PNL.AVERAGE_BUY_PRICE\n * @type {number}\n * @memberof WalletPnlDTO\n */\n averageBuyPriceInUsd: number;\n /**\n * DTO.WALLET.PNL.AVERAGE_SELL_PRICE\n * @type {number}\n * @memberof WalletPnlDTO\n */\n averageSellPriceInUsd: number;\n /**\n * DTO.WALLET.PNL.UNREALIZED_PROFIT\n * @type {number}\n * @memberof WalletPnlDTO\n */\n unrealizedProfitInUsd: number;\n /**\n * DTO.WALLET.PNL.UNREALIZED_PROFIT_RATIO\n * @type {number}\n * @memberof WalletPnlDTO\n */\n unrealizedProfitRatio: number;\n /**\n * DTO.WALLET.PNL.REALIZED_PROFIT\n * @type {number}\n * @memberof WalletPnlDTO\n */\n realizedProfitInUsd: number;\n /**\n * DTO.WALLET.PNL.REALIZED_PROFIT_RATIO\n * @type {number}\n * @memberof WalletPnlDTO\n */\n realizedProfitRatio: number;\n /**\n * DTO.WALLET.PNL.TOTAL_REALIZED_PROFIT\n * @type {number}\n * @memberof WalletPnlDTO\n */\n totalRealizedProfitInUsd: number;\n /**\n * DTO.WALLET.PNL.TOTAL_REALIZED_PROFIT_RATIO\n * @type {number}\n * @memberof WalletPnlDTO\n */\n totalRealizedProfitRatio: number;\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\n\nimport * as runtime from '../runtime';\nimport type {\n BlockchainDTO,\n BlockchainLatestBlockDTO,\n ChainSymbol,\n} from '../models/index';\nimport {\n BlockchainDTOFromJSON,\n BlockchainDTOToJSON,\n BlockchainLatestBlockDTOFromJSON,\n BlockchainLatestBlockDTOToJSON,\n ChainSymbolFromJSON,\n ChainSymbolToJSON,\n} from '../models/index';\n\nexport interface GetLatestBlockRequest {\n chain: ChainSymbol;\n}\n\n/**\n * \n */\nexport class BlockchainApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.GET_LATEST_BLOCK.DESCRIPTION\n * CONTROLLER.GET_LATEST_BLOCK.SUMMARY\n */\n async getLatestBlockRaw(requestParameters: GetLatestBlockRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<BlockchainLatestBlockDTO>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getLatestBlock().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/blockchain/{chain}/latest_block`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => BlockchainLatestBlockDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.GET_LATEST_BLOCK.DESCRIPTION\n * CONTROLLER.GET_LATEST_BLOCK.SUMMARY\n */\n async getLatestBlock(requestParameters: GetLatestBlockRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<BlockchainLatestBlockDTO> {\n const response = await this.getLatestBlockRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.GET_SUPPORTED_BLOCKCHAINS.DESCRIPTION\n * CONTROLLER.GET_SUPPORTED_BLOCKCHAINS.SUMMARY\n */\n async getSupportedBlockchainsRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<BlockchainDTO>>> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/blockchain`;\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(BlockchainDTOFromJSON));\n }\n\n /**\n * CONTROLLER.GET_SUPPORTED_BLOCKCHAINS.DESCRIPTION\n * CONTROLLER.GET_SUPPORTED_BLOCKCHAINS.SUMMARY\n */\n async getSupportedBlockchains(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<BlockchainDTO>> {\n const response = await this.getSupportedBlockchainsRaw(initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n MoonshotCreateTokenInput,\n MoonshotCreateTokenReply,\n MoonshotSubmitCreateToken200Response,\n MoonshotSubmitCreateTokenInput,\n} from '../models/index';\nimport {\n MoonshotCreateTokenInputFromJSON,\n MoonshotCreateTokenInputToJSON,\n MoonshotCreateTokenReplyFromJSON,\n MoonshotCreateTokenReplyToJSON,\n MoonshotSubmitCreateToken200ResponseFromJSON,\n MoonshotSubmitCreateToken200ResponseToJSON,\n MoonshotSubmitCreateTokenInputFromJSON,\n MoonshotSubmitCreateTokenInputToJSON,\n} from '../models/index';\n\nexport interface MoonshotCreateTokenRequest {\n moonshotCreateTokenInput: MoonshotCreateTokenInput;\n}\n\nexport interface MoonshotSubmitCreateTokenRequest {\n moonshotSubmitCreateTokenInput: MoonshotSubmitCreateTokenInput;\n}\n\n/**\n * \n */\nexport class DefiSolanaMoonshotApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.MOONSHOT.CREATE_TOKEN.DESCRIPTION\n * CONTROLLER.MOONSHOT.CREATE_TOKEN.SUMMARY\n */\n async moonshotCreateTokenRaw(requestParameters: MoonshotCreateTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<MoonshotCreateTokenReply>> {\n if (requestParameters['moonshotCreateTokenInput'] == null) {\n throw new runtime.RequiredError(\n 'moonshotCreateTokenInput',\n 'Required parameter \"moonshotCreateTokenInput\" was null or undefined when calling moonshotCreateToken().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/solana/moonshot/create`;\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: MoonshotCreateTokenInputToJSON(requestParameters['moonshotCreateTokenInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => MoonshotCreateTokenReplyFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.MOONSHOT.CREATE_TOKEN.DESCRIPTION\n * CONTROLLER.MOONSHOT.CREATE_TOKEN.SUMMARY\n */\n async moonshotCreateToken(requestParameters: MoonshotCreateTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<MoonshotCreateTokenReply> {\n const response = await this.moonshotCreateTokenRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.MOONSHOT.SUBMIT_CREATE_TOKEN.DESCRIPTION\n * CONTROLLER.MOONSHOT.SUBMIT_CREATE_TOKEN.SUMMARY\n */\n async moonshotSubmitCreateTokenRaw(requestParameters: MoonshotSubmitCreateTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<MoonshotSubmitCreateToken200Response>> {\n if (requestParameters['moonshotSubmitCreateTokenInput'] == null) {\n throw new runtime.RequiredError(\n 'moonshotSubmitCreateTokenInput',\n 'Required parameter \"moonshotSubmitCreateTokenInput\" was null or undefined when calling moonshotSubmitCreateToken().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/solana/moonshot/submitCreateToken`;\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: MoonshotSubmitCreateTokenInputToJSON(requestParameters['moonshotSubmitCreateTokenInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => MoonshotSubmitCreateToken200ResponseFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.MOONSHOT.SUBMIT_CREATE_TOKEN.DESCRIPTION\n * CONTROLLER.MOONSHOT.SUBMIT_CREATE_TOKEN.SUMMARY\n */\n async moonshotSubmitCreateToken(requestParameters: MoonshotSubmitCreateTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<MoonshotSubmitCreateToken200Response> {\n const response = await this.moonshotSubmitCreateTokenRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n PumpCreateTokenInput,\n PumpCreateTokenReply,\n} from '../models/index';\nimport {\n PumpCreateTokenInputFromJSON,\n PumpCreateTokenInputToJSON,\n PumpCreateTokenReplyFromJSON,\n PumpCreateTokenReplyToJSON,\n} from '../models/index';\n\nexport interface PumpfunCreateTokenRequest {\n pumpCreateTokenInput: PumpCreateTokenInput;\n}\n\n/**\n * \n */\nexport class DefiSolanaPumpfunApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.PUMPFUN.CREATE_TOKEN.DESCRIPTION\n * CONTROLLER.PUMPFUN.CREATE_TOKEN.SUMMARY\n */\n async pumpfunCreateTokenRaw(requestParameters: PumpfunCreateTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PumpCreateTokenReply>> {\n if (requestParameters['pumpCreateTokenInput'] == null) {\n throw new runtime.RequiredError(\n 'pumpCreateTokenInput',\n 'Required parameter \"pumpCreateTokenInput\" was null or undefined when calling pumpfunCreateToken().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/solana/pumpfun/create`;\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: PumpCreateTokenInputToJSON(requestParameters['pumpCreateTokenInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => PumpCreateTokenReplyFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.PUMPFUN.CREATE_TOKEN.DESCRIPTION\n * CONTROLLER.PUMPFUN.CREATE_TOKEN.SUMMARY\n */\n async pumpfunCreateToken(requestParameters: PumpfunCreateTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PumpCreateTokenReply> {\n const response = await this.pumpfunCreateTokenRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ChainSymbol,\n CreateTokenInput,\n CreateTokenReply,\n DexPage,\n QuoteResponse,\n SwapInput,\n SwapReply,\n SwapRouteInput,\n SwapRouteResponse,\n} from '../models/index';\nimport {\n ChainSymbolFromJSON,\n ChainSymbolToJSON,\n CreateTokenInputFromJSON,\n CreateTokenInputToJSON,\n CreateTokenReplyFromJSON,\n CreateTokenReplyToJSON,\n DexPageFromJSON,\n DexPageToJSON,\n QuoteResponseFromJSON,\n QuoteResponseToJSON,\n SwapInputFromJSON,\n SwapInputToJSON,\n SwapReplyFromJSON,\n SwapReplyToJSON,\n SwapRouteInputFromJSON,\n SwapRouteInputToJSON,\n SwapRouteResponseFromJSON,\n SwapRouteResponseToJSON,\n} from '../models/index';\n\nexport interface CreateTokenRequest {\n chain: ChainSymbol;\n createTokenInput: CreateTokenInput;\n}\n\nexport interface ListDexRequest {\n chains?: Array<string>;\n limit?: number;\n dexProgram?: string;\n}\n\nexport interface QuoteRequest {\n chain: ChainSymbol;\n dex: QuoteDexEnum;\n amount: string;\n inputMint: string;\n outputMint: string;\n exactIn: boolean;\n slippage: number;\n}\n\nexport interface RouteRequest {\n chain: ChainSymbol;\n swapRouteInput: SwapRouteInput;\n}\n\nexport interface SwapRequest {\n chain: ChainSymbol;\n swapInput: SwapInput;\n}\n\n/**\n * \n */\nexport class DexApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.DEX.CREATE.DESCRIPTION\n * CONTROLLER.DEX.CREATE.SUMMARY\n */\n async createTokenRaw(requestParameters: CreateTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CreateTokenReply>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling createToken().'\n );\n }\n\n if (requestParameters['createTokenInput'] == null) {\n throw new runtime.RequiredError(\n 'createTokenInput',\n 'Required parameter \"createTokenInput\" was null or undefined when calling createToken().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/dex/{chain}/create`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: CreateTokenInputToJSON(requestParameters['createTokenInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => CreateTokenReplyFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.DEX.CREATE.DESCRIPTION\n * CONTROLLER.DEX.CREATE.SUMMARY\n */\n async createToken(requestParameters: CreateTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CreateTokenReply> {\n const response = await this.createTokenRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.DEX.LIST.DESCRIPTION\n * CONTROLLER.DEX.LIST.SUMMARY\n */\n async listDexRaw(requestParameters: ListDexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<DexPage>> {\n const queryParameters: any = {};\n\n if (requestParameters['chains'] != null) {\n queryParameters['chains'] = requestParameters['chains'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['dexProgram'] != null) {\n queryParameters['dexProgram'] = requestParameters['dexProgram'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/dex`;\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => DexPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.DEX.LIST.DESCRIPTION\n * CONTROLLER.DEX.LIST.SUMMARY\n */\n async listDex(requestParameters: ListDexRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<DexPage> {\n const response = await this.listDexRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.DEX.QUOTE.DESCRIPTION\n * CONTROLLER.DEX.QUOTE.SUMMARY\n */\n async quoteRaw(requestParameters: QuoteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<QuoteResponse>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling quote().'\n );\n }\n\n if (requestParameters['dex'] == null) {\n throw new runtime.RequiredError(\n 'dex',\n 'Required parameter \"dex\" was null or undefined when calling quote().'\n );\n }\n\n if (requestParameters['amount'] == null) {\n throw new runtime.RequiredError(\n 'amount',\n 'Required parameter \"amount\" was null or undefined when calling quote().'\n );\n }\n\n if (requestParameters['inputMint'] == null) {\n throw new runtime.RequiredError(\n 'inputMint',\n 'Required parameter \"inputMint\" was null or undefined when calling quote().'\n );\n }\n\n if (requestParameters['outputMint'] == null) {\n throw new runtime.RequiredError(\n 'outputMint',\n 'Required parameter \"outputMint\" was null or undefined when calling quote().'\n );\n }\n\n if (requestParameters['exactIn'] == null) {\n throw new runtime.RequiredError(\n 'exactIn',\n 'Required parameter \"exactIn\" was null or undefined when calling quote().'\n );\n }\n\n if (requestParameters['slippage'] == null) {\n throw new runtime.RequiredError(\n 'slippage',\n 'Required parameter \"slippage\" was null or undefined when calling quote().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['dex'] != null) {\n queryParameters['dex'] = requestParameters['dex'];\n }\n\n if (requestParameters['amount'] != null) {\n queryParameters['amount'] = requestParameters['amount'];\n }\n\n if (requestParameters['inputMint'] != null) {\n queryParameters['inputMint'] = requestParameters['inputMint'];\n }\n\n if (requestParameters['outputMint'] != null) {\n queryParameters['outputMint'] = requestParameters['outputMint'];\n }\n\n if (requestParameters['exactIn'] != null) {\n queryParameters['exactIn'] = requestParameters['exactIn'];\n }\n\n if (requestParameters['slippage'] != null) {\n queryParameters['slippage'] = requestParameters['slippage'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/dex/{chain}/quote`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => QuoteResponseFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.DEX.QUOTE.DESCRIPTION\n * CONTROLLER.DEX.QUOTE.SUMMARY\n */\n async quote(requestParameters: QuoteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<QuoteResponse> {\n const response = await this.quoteRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.DEX.ROUTE.DESCRIPTION\n * CONTROLLER.DEX.ROUTE.SUMMARY\n */\n async routeRaw(requestParameters: RouteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SwapRouteResponse>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling route().'\n );\n }\n\n if (requestParameters['swapRouteInput'] == null) {\n throw new runtime.RequiredError(\n 'swapRouteInput',\n 'Required parameter \"swapRouteInput\" was null or undefined when calling route().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/dex/{chain}/route`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: SwapRouteInputToJSON(requestParameters['swapRouteInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SwapRouteResponseFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.DEX.ROUTE.DESCRIPTION\n * CONTROLLER.DEX.ROUTE.SUMMARY\n */\n async route(requestParameters: RouteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SwapRouteResponse> {\n const response = await this.routeRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.DEX.SWAP.DESCRIPTION\n * CONTROLLER.DEX.SWAP.SUMMARY\n */\n async swapRaw(requestParameters: SwapRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SwapReply>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling swap().'\n );\n }\n\n if (requestParameters['swapInput'] == null) {\n throw new runtime.RequiredError(\n 'swapInput',\n 'Required parameter \"swapInput\" was null or undefined when calling swap().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/dex/{chain}/swap`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: SwapInputToJSON(requestParameters['swapInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SwapReplyFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.DEX.SWAP.DESCRIPTION\n * CONTROLLER.DEX.SWAP.SUMMARY\n */\n async swap(requestParameters: SwapRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SwapReply> {\n const response = await this.swapRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n\n/**\n * @export\n */\nexport const QuoteDexEnum = {\n Raydium: 'raydium',\n Pumpfun: 'pumpfun'\n} as const;\nexport type QuoteDexEnum = typeof QuoteDexEnum[keyof typeof QuoteDexEnum];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ChainSymbol,\n DexPoolDTO,\n} from '../models/index';\nimport {\n ChainSymbolFromJSON,\n ChainSymbolToJSON,\n DexPoolDTOFromJSON,\n DexPoolDTOToJSON,\n} from '../models/index';\n\nexport interface GetDexpoolRequest {\n chain: ChainSymbol;\n poolAddress: string;\n}\n\n/**\n * \n */\nexport class DexPoolApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.DEXPOOL.GET.DESCRIPTION\n * CONTROLLER.DEXPOOL.GET.SUMMARY\n */\n async getDexpoolRaw(requestParameters: GetDexpoolRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<DexPoolDTO>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getDexpool().'\n );\n }\n\n if (requestParameters['poolAddress'] == null) {\n throw new runtime.RequiredError(\n 'poolAddress',\n 'Required parameter \"poolAddress\" was null or undefined when calling getDexpool().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/dexpools/{chain}/{poolAddress}`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"poolAddress\"}}`, encodeURIComponent(String(requestParameters['poolAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => DexPoolDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.DEXPOOL.GET.DESCRIPTION\n * CONTROLLER.DEXPOOL.GET.SUMMARY\n */\n async getDexpool(requestParameters: GetDexpoolRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<DexPoolDTO> {\n const response = await this.getDexpoolRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\n\n/**\n * \n */\nexport class IpfsApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.IPFS.PRESIGN.DESCRIPTION\n * CONTROLLER.IPFS.PRESIGN.SUMMARY\n */\n async presignRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<string>> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/ipfs/presign`;\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n if (this.isJsonMime(response.headers.get('content-type'))) {\n return new runtime.JSONApiResponse<string>(response);\n } else {\n return new runtime.TextApiResponse(response) as any;\n }\n }\n\n /**\n * CONTROLLER.IPFS.PRESIGN.DESCRIPTION\n * CONTROLLER.IPFS.PRESIGN.SUMMARY\n */\n async presign(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<string> {\n const response = await this.presignRaw(initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n JobDTO,\n JobStreamingDTO,\n} from '../models/index';\nimport {\n JobDTOFromJSON,\n JobDTOToJSON,\n JobStreamingDTOFromJSON,\n JobStreamingDTOToJSON,\n} from '../models/index';\n\nexport interface GetRequest {\n id: string;\n}\n\nexport interface StreamingRequest {\n id: string;\n}\n\n/**\n * \n */\nexport class JobsApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.JOB.GET.DESCRIPTION\n * CONTROLLER.JOB.GET.SUMMARY\n */\n async getRaw(requestParameters: GetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<JobDTO>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling get().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/jobs/{id}`;\n urlPath = urlPath.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => JobDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.JOB.GET.DESCRIPTION\n * CONTROLLER.JOB.GET.SUMMARY\n */\n async get(requestParameters: GetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<JobDTO> {\n const response = await this.getRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.JOB.STREAMING.DESCRIPTION\n * CONTROLLER.JOB.STREAMING.SUMMARY\n */\n async streamingRaw(requestParameters: StreamingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<JobStreamingDTO>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling streaming().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/jobs/{id}/streaming`;\n urlPath = urlPath.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => JobStreamingDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.JOB.STREAMING.DESCRIPTION\n * CONTROLLER.JOB.STREAMING.SUMMARY\n */\n async streaming(requestParameters: StreamingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<JobStreamingDTO> {\n const response = await this.streamingRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ChainSymbol,\n FilterCondition,\n Token,\n} from '../models/index';\nimport {\n ChainSymbolFromJSON,\n ChainSymbolToJSON,\n FilterConditionFromJSON,\n FilterConditionToJSON,\n TokenFromJSON,\n TokenToJSON,\n} from '../models/index';\n\nexport interface GetFinalStretchTokensRequest {\n chain: ChainSymbol;\n sortBy?: GetFinalStretchTokensSortByEnum;\n sortDirection?: GetFinalStretchTokensSortDirectionEnum;\n rangeFilters?: Array<FilterCondition>;\n tag?: GetFinalStretchTokensTagEnum;\n filters?: Array<string>;\n launchpadPlatform?: Array<string>;\n searchKeywords?: Array<string>;\n excludeKeywords?: Array<string>;\n}\n\nexport interface GetHotTokensRequest {\n chain: ChainSymbol;\n duration: GetHotTokensDurationEnum;\n sortBy?: GetHotTokensSortByEnum;\n sortDirection?: GetHotTokensSortDirectionEnum;\n rangeFilters?: Array<FilterCondition>;\n tag?: GetHotTokensTagEnum;\n filters?: Array<string>;\n launchpadPlatform?: Array<string>;\n searchKeywords?: Array<string>;\n excludeKeywords?: Array<string>;\n}\n\nexport interface GetMigratedTokensRequest {\n chain: ChainSymbol;\n sortBy?: GetMigratedTokensSortByEnum;\n sortDirection?: GetMigratedTokensSortDirectionEnum;\n rangeFilters?: Array<FilterCondition>;\n tag?: GetMigratedTokensTagEnum;\n filters?: Array<string>;\n launchpadPlatform?: Array<string>;\n searchKeywords?: Array<string>;\n excludeKeywords?: Array<string>;\n}\n\nexport interface GetNewTokensRequest {\n chain: ChainSymbol;\n sortBy?: GetNewTokensSortByEnum;\n sortDirection?: GetNewTokensSortDirectionEnum;\n rangeFilters?: Array<FilterCondition>;\n tag?: GetNewTokensTagEnum;\n filters?: Array<string>;\n launchpadPlatform?: Array<string>;\n searchKeywords?: Array<string>;\n excludeKeywords?: Array<string>;\n}\n\nexport interface GetStocksTokensRequest {\n chain: ChainSymbol;\n sortBy?: GetStocksTokensSortByEnum;\n sortDirection?: GetStocksTokensSortDirectionEnum;\n rangeFilters?: Array<FilterCondition>;\n tag?: GetStocksTokensTagEnum;\n filters?: Array<string>;\n launchpadPlatform?: Array<string>;\n searchKeywords?: Array<string>;\n excludeKeywords?: Array<string>;\n}\n\n/**\n * \n */\nexport class RankingApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.RANKING.FINAL_STRETCH_TOKENS.DESCRIPTION\n * CONTROLLER.RANKING.FINAL_STRETCH_TOKENS.SUMMARY\n */\n async getFinalStretchTokensRaw(requestParameters: GetFinalStretchTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Token>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getFinalStretchTokens().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['sortBy'] != null) {\n queryParameters['sortBy'] = requestParameters['sortBy'];\n }\n\n if (requestParameters['sortDirection'] != null) {\n queryParameters['sortDirection'] = requestParameters['sortDirection'];\n }\n\n if (requestParameters['rangeFilters'] != null) {\n queryParameters['rangeFilters'] = requestParameters['rangeFilters'];\n }\n\n if (requestParameters['tag'] != null) {\n queryParameters['tag'] = requestParameters['tag'];\n }\n\n if (requestParameters['filters'] != null) {\n queryParameters['filters'] = requestParameters['filters'];\n }\n\n if (requestParameters['launchpadPlatform'] != null) {\n queryParameters['launchpadPlatform'] = requestParameters['launchpadPlatform'];\n }\n\n if (requestParameters['searchKeywords'] != null) {\n queryParameters['searchKeywords'] = requestParameters['searchKeywords'];\n }\n\n if (requestParameters['excludeKeywords'] != null) {\n queryParameters['excludeKeywords'] = requestParameters['excludeKeywords'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/ranking/{chain}/finalStretch`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(TokenFromJSON));\n }\n\n /**\n * CONTROLLER.RANKING.FINAL_STRETCH_TOKENS.DESCRIPTION\n * CONTROLLER.RANKING.FINAL_STRETCH_TOKENS.SUMMARY\n */\n async getFinalStretchTokens(requestParameters: GetFinalStretchTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Token>> {\n const response = await this.getFinalStretchTokensRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RANKING.HOT_TOKENS.DESCRIPTION\n * CONTROLLER.RANKING.HOT_TOKENS.SUMMARY\n */\n async getHotTokensRaw(requestParameters: GetHotTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Token>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getHotTokens().'\n );\n }\n\n if (requestParameters['duration'] == null) {\n throw new runtime.RequiredError(\n 'duration',\n 'Required parameter \"duration\" was null or undefined when calling getHotTokens().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['sortBy'] != null) {\n queryParameters['sortBy'] = requestParameters['sortBy'];\n }\n\n if (requestParameters['sortDirection'] != null) {\n queryParameters['sortDirection'] = requestParameters['sortDirection'];\n }\n\n if (requestParameters['rangeFilters'] != null) {\n queryParameters['rangeFilters'] = requestParameters['rangeFilters'];\n }\n\n if (requestParameters['tag'] != null) {\n queryParameters['tag'] = requestParameters['tag'];\n }\n\n if (requestParameters['filters'] != null) {\n queryParameters['filters'] = requestParameters['filters'];\n }\n\n if (requestParameters['launchpadPlatform'] != null) {\n queryParameters['launchpadPlatform'] = requestParameters['launchpadPlatform'];\n }\n\n if (requestParameters['searchKeywords'] != null) {\n queryParameters['searchKeywords'] = requestParameters['searchKeywords'];\n }\n\n if (requestParameters['excludeKeywords'] != null) {\n queryParameters['excludeKeywords'] = requestParameters['excludeKeywords'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/ranking/{chain}/hotTokens/{duration}`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"duration\"}}`, encodeURIComponent(String(requestParameters['duration'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(TokenFromJSON));\n }\n\n /**\n * CONTROLLER.RANKING.HOT_TOKENS.DESCRIPTION\n * CONTROLLER.RANKING.HOT_TOKENS.SUMMARY\n */\n async getHotTokens(requestParameters: GetHotTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Token>> {\n const response = await this.getHotTokensRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RANKING.MIGRATED_TOKENS.DESCRIPTION\n * CONTROLLER.RANKING.MIGRATED_TOKENS.SUMMARY\n */\n async getMigratedTokensRaw(requestParameters: GetMigratedTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Token>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getMigratedTokens().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['sortBy'] != null) {\n queryParameters['sortBy'] = requestParameters['sortBy'];\n }\n\n if (requestParameters['sortDirection'] != null) {\n queryParameters['sortDirection'] = requestParameters['sortDirection'];\n }\n\n if (requestParameters['rangeFilters'] != null) {\n queryParameters['rangeFilters'] = requestParameters['rangeFilters'];\n }\n\n if (requestParameters['tag'] != null) {\n queryParameters['tag'] = requestParameters['tag'];\n }\n\n if (requestParameters['filters'] != null) {\n queryParameters['filters'] = requestParameters['filters'];\n }\n\n if (requestParameters['launchpadPlatform'] != null) {\n queryParameters['launchpadPlatform'] = requestParameters['launchpadPlatform'];\n }\n\n if (requestParameters['searchKeywords'] != null) {\n queryParameters['searchKeywords'] = requestParameters['searchKeywords'];\n }\n\n if (requestParameters['excludeKeywords'] != null) {\n queryParameters['excludeKeywords'] = requestParameters['excludeKeywords'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/ranking/{chain}/migrated`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(TokenFromJSON));\n }\n\n /**\n * CONTROLLER.RANKING.MIGRATED_TOKENS.DESCRIPTION\n * CONTROLLER.RANKING.MIGRATED_TOKENS.SUMMARY\n */\n async getMigratedTokens(requestParameters: GetMigratedTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Token>> {\n const response = await this.getMigratedTokensRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RANKING.NEW_TOKENS.DESCRIPTION\n * CONTROLLER.RANKING.NEW_TOKENS.SUMMARY\n */\n async getNewTokensRaw(requestParameters: GetNewTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Token>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getNewTokens().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['sortBy'] != null) {\n queryParameters['sortBy'] = requestParameters['sortBy'];\n }\n\n if (requestParameters['sortDirection'] != null) {\n queryParameters['sortDirection'] = requestParameters['sortDirection'];\n }\n\n if (requestParameters['rangeFilters'] != null) {\n queryParameters['rangeFilters'] = requestParameters['rangeFilters'];\n }\n\n if (requestParameters['tag'] != null) {\n queryParameters['tag'] = requestParameters['tag'];\n }\n\n if (requestParameters['filters'] != null) {\n queryParameters['filters'] = requestParameters['filters'];\n }\n\n if (requestParameters['launchpadPlatform'] != null) {\n queryParameters['launchpadPlatform'] = requestParameters['launchpadPlatform'];\n }\n\n if (requestParameters['searchKeywords'] != null) {\n queryParameters['searchKeywords'] = requestParameters['searchKeywords'];\n }\n\n if (requestParameters['excludeKeywords'] != null) {\n queryParameters['excludeKeywords'] = requestParameters['excludeKeywords'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/ranking/{chain}/newTokens`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(TokenFromJSON));\n }\n\n /**\n * CONTROLLER.RANKING.NEW_TOKENS.DESCRIPTION\n * CONTROLLER.RANKING.NEW_TOKENS.SUMMARY\n */\n async getNewTokens(requestParameters: GetNewTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Token>> {\n const response = await this.getNewTokensRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RANKING.STOCKS_TOKENS.DESCRIPTION\n * CONTROLLER.RANKING.STOCKS_TOKENS.SUMMARY\n */\n async getStocksTokensRaw(requestParameters: GetStocksTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Token>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getStocksTokens().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['sortBy'] != null) {\n queryParameters['sortBy'] = requestParameters['sortBy'];\n }\n\n if (requestParameters['sortDirection'] != null) {\n queryParameters['sortDirection'] = requestParameters['sortDirection'];\n }\n\n if (requestParameters['rangeFilters'] != null) {\n queryParameters['rangeFilters'] = requestParameters['rangeFilters'];\n }\n\n if (requestParameters['tag'] != null) {\n queryParameters['tag'] = requestParameters['tag'];\n }\n\n if (requestParameters['filters'] != null) {\n queryParameters['filters'] = requestParameters['filters'];\n }\n\n if (requestParameters['launchpadPlatform'] != null) {\n queryParameters['launchpadPlatform'] = requestParameters['launchpadPlatform'];\n }\n\n if (requestParameters['searchKeywords'] != null) {\n queryParameters['searchKeywords'] = requestParameters['searchKeywords'];\n }\n\n if (requestParameters['excludeKeywords'] != null) {\n queryParameters['excludeKeywords'] = requestParameters['excludeKeywords'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/ranking/{chain}/stocks`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(TokenFromJSON));\n }\n\n /**\n * CONTROLLER.RANKING.STOCKS_TOKENS.DESCRIPTION\n * CONTROLLER.RANKING.STOCKS_TOKENS.SUMMARY\n */\n async getStocksTokens(requestParameters: GetStocksTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Token>> {\n const response = await this.getStocksTokensRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n\n/**\n * @export\n */\nexport const GetFinalStretchTokensSortByEnum = {\n MarketDataPriceInUsd: 'marketData.priceInUsd',\n StatsPriceChangeRatioInUsd1m: 'stats.priceChangeRatioInUsd1m',\n StatsPriceChangeRatioInUsd5m: 'stats.priceChangeRatioInUsd5m',\n StatsPriceChangeRatioInUsd1h: 'stats.priceChangeRatioInUsd1h',\n StatsPriceChangeRatioInUsd4h: 'stats.priceChangeRatioInUsd4h',\n StatsPriceChangeRatioInUsd24h: 'stats.priceChangeRatioInUsd24h',\n MarketDataMarketCapInUsd: 'marketData.marketCapInUsd',\n MarketDataTvlInUsd: 'marketData.tvlInUsd',\n MarketDataTop10TotalHoldings: 'marketData.top10TotalHoldings',\n MarketDataTop10HoldingsRatio: 'marketData.top10HoldingsRatio',\n MarketDataTop100TotalHoldings: 'marketData.top100TotalHoldings',\n MarketDataTop100HoldingsRatio: 'marketData.top100HoldingsRatio',\n MarketDataHolders: 'marketData.holders',\n MarketDataCreatorHoldings: 'marketData.creatorHoldings',\n MarketDataCreatorHoldingsRatio: 'marketData.creatorHoldingsRatio',\n StatsBuys1m: 'stats.buys1m',\n StatsBuys5m: 'stats.buys5m',\n StatsBuys15m: 'stats.buys15m',\n StatsBuys30m: 'stats.buys30m',\n StatsBuys1h: 'stats.buys1h',\n StatsBuys4h: 'stats.buys4h',\n StatsBuys24h: 'stats.buys24h',\n StatsSells1m: 'stats.sells1m',\n StatsSells5m: 'stats.sells5m',\n StatsSells15m: 'stats.sells15m',\n StatsSells30m: 'stats.sells30m',\n StatsSells1h: 'stats.sells1h',\n StatsSells4h: 'stats.sells4h',\n StatsSells24h: 'stats.sells24h',\n StatsTrades1m: 'stats.trades1m',\n StatsTrades5m: 'stats.trades5m',\n StatsTrades1h: 'stats.trades1h',\n StatsTrades4h: 'stats.trades4h',\n StatsTrades24h: 'stats.trades24h',\n StatsTraders1m: 'stats.traders1m',\n StatsTraders5m: 'stats.traders5m',\n StatsTraders1h: 'stats.traders1h',\n StatsTraders4h: 'stats.traders4h',\n StatsTraders24h: 'stats.traders24h',\n StatsVolumesInUsd1m: 'stats.volumesInUsd1m',\n StatsVolumesInUsd5m: 'stats.volumesInUsd5m',\n StatsVolumesInUsd1h: 'stats.volumesInUsd1h',\n StatsVolumesInUsd4h: 'stats.volumesInUsd4h',\n StatsVolumesInUsd24h: 'stats.volumesInUsd24h',\n TokenCreatedAt: 'tokenCreatedAt'\n} as const;\nexport type GetFinalStretchTokensSortByEnum = typeof GetFinalStretchTokensSortByEnum[keyof typeof GetFinalStretchTokensSortByEnum];\n/**\n * @export\n */\nexport const GetFinalStretchTokensSortDirectionEnum = {\n Asc: 'ASC',\n Desc: 'DESC'\n} as const;\nexport type GetFinalStretchTokensSortDirectionEnum = typeof GetFinalStretchTokensSortDirectionEnum[keyof typeof GetFinalStretchTokensSortDirectionEnum];\n/**\n * @export\n */\nexport const GetFinalStretchTokensTagEnum = {\n PumpFun: 'pump_fun',\n RaydiumLaunchpad: 'raydium_launchpad',\n MeteoraDynamicBoundingCurve: 'meteora_dynamic_bounding_curve',\n BonkFun: 'bonk_fun',\n MoonitFun: 'moonit_fun'\n} as const;\nexport type GetFinalStretchTokensTagEnum = typeof GetFinalStretchTokensTagEnum[keyof typeof GetFinalStretchTokensTagEnum];\n/**\n * @export\n */\nexport const GetHotTokensDurationEnum = {\n _1m: '1m',\n _5m: '5m',\n _1h: '1h',\n _4h: '4h',\n _24h: '24h'\n} as const;\nexport type GetHotTokensDurationEnum = typeof GetHotTokensDurationEnum[keyof typeof GetHotTokensDurationEnum];\n/**\n * @export\n */\nexport const GetHotTokensSortByEnum = {\n MarketDataPriceInUsd: 'marketData.priceInUsd',\n StatsPriceChangeRatioInUsd1m: 'stats.priceChangeRatioInUsd1m',\n StatsPriceChangeRatioInUsd5m: 'stats.priceChangeRatioInUsd5m',\n StatsPriceChangeRatioInUsd1h: 'stats.priceChangeRatioInUsd1h',\n StatsPriceChangeRatioInUsd4h: 'stats.priceChangeRatioInUsd4h',\n StatsPriceChangeRatioInUsd24h: 'stats.priceChangeRatioInUsd24h',\n MarketDataMarketCapInUsd: 'marketData.marketCapInUsd',\n MarketDataTvlInUsd: 'marketData.tvlInUsd',\n MarketDataTop10TotalHoldings: 'marketData.top10TotalHoldings',\n MarketDataTop10HoldingsRatio: 'marketData.top10HoldingsRatio',\n MarketDataTop100TotalHoldings: 'marketData.top100TotalHoldings',\n MarketDataTop100HoldingsRatio: 'marketData.top100HoldingsRatio',\n MarketDataHolders: 'marketData.holders',\n MarketDataCreatorHoldings: 'marketData.creatorHoldings',\n MarketDataCreatorHoldingsRatio: 'marketData.creatorHoldingsRatio',\n StatsBuys1m: 'stats.buys1m',\n StatsBuys5m: 'stats.buys5m',\n StatsBuys15m: 'stats.buys15m',\n StatsBuys30m: 'stats.buys30m',\n StatsBuys1h: 'stats.buys1h',\n StatsBuys4h: 'stats.buys4h',\n StatsBuys24h: 'stats.buys24h',\n StatsSells1m: 'stats.sells1m',\n StatsSells5m: 'stats.sells5m',\n StatsSells15m: 'stats.sells15m',\n StatsSells30m: 'stats.sells30m',\n StatsSells1h: 'stats.sells1h',\n StatsSells4h: 'stats.sells4h',\n StatsSells24h: 'stats.sells24h',\n StatsTrades1m: 'stats.trades1m',\n StatsTrades5m: 'stats.trades5m',\n StatsTrades1h: 'stats.trades1h',\n StatsTrades4h: 'stats.trades4h',\n StatsTrades24h: 'stats.trades24h',\n StatsTraders1m: 'stats.traders1m',\n StatsTraders5m: 'stats.traders5m',\n StatsTraders1h: 'stats.traders1h',\n StatsTraders4h: 'stats.traders4h',\n StatsTraders24h: 'stats.traders24h',\n StatsVolumesInUsd1m: 'stats.volumesInUsd1m',\n StatsVolumesInUsd5m: 'stats.volumesInUsd5m',\n StatsVolumesInUsd1h: 'stats.volumesInUsd1h',\n StatsVolumesInUsd4h: 'stats.volumesInUsd4h',\n StatsVolumesInUsd24h: 'stats.volumesInUsd24h',\n TokenCreatedAt: 'tokenCreatedAt'\n} as const;\nexport type GetHotTokensSortByEnum = typeof GetHotTokensSortByEnum[keyof typeof GetHotTokensSortByEnum];\n/**\n * @export\n */\nexport const GetHotTokensSortDirectionEnum = {\n Asc: 'ASC',\n Desc: 'DESC'\n} as const;\nexport type GetHotTokensSortDirectionEnum = typeof GetHotTokensSortDirectionEnum[keyof typeof GetHotTokensSortDirectionEnum];\n/**\n * @export\n */\nexport const GetHotTokensTagEnum = {\n PumpFun: 'pump_fun',\n RaydiumLaunchpad: 'raydium_launchpad',\n MeteoraDynamicBoundingCurve: 'meteora_dynamic_bounding_curve',\n BonkFun: 'bonk_fun',\n MoonitFun: 'moonit_fun'\n} as const;\nexport type GetHotTokensTagEnum = typeof GetHotTokensTagEnum[keyof typeof GetHotTokensTagEnum];\n/**\n * @export\n */\nexport const GetMigratedTokensSortByEnum = {\n MarketDataPriceInUsd: 'marketData.priceInUsd',\n StatsPriceChangeRatioInUsd1m: 'stats.priceChangeRatioInUsd1m',\n StatsPriceChangeRatioInUsd5m: 'stats.priceChangeRatioInUsd5m',\n StatsPriceChangeRatioInUsd1h: 'stats.priceChangeRatioInUsd1h',\n StatsPriceChangeRatioInUsd4h: 'stats.priceChangeRatioInUsd4h',\n StatsPriceChangeRatioInUsd24h: 'stats.priceChangeRatioInUsd24h',\n MarketDataMarketCapInUsd: 'marketData.marketCapInUsd',\n MarketDataTvlInUsd: 'marketData.tvlInUsd',\n MarketDataTop10TotalHoldings: 'marketData.top10TotalHoldings',\n MarketDataTop10HoldingsRatio: 'marketData.top10HoldingsRatio',\n MarketDataTop100TotalHoldings: 'marketData.top100TotalHoldings',\n MarketDataTop100HoldingsRatio: 'marketData.top100HoldingsRatio',\n MarketDataHolders: 'marketData.holders',\n MarketDataCreatorHoldings: 'marketData.creatorHoldings',\n MarketDataCreatorHoldingsRatio: 'marketData.creatorHoldingsRatio',\n StatsBuys1m: 'stats.buys1m',\n StatsBuys5m: 'stats.buys5m',\n StatsBuys15m: 'stats.buys15m',\n StatsBuys30m: 'stats.buys30m',\n StatsBuys1h: 'stats.buys1h',\n StatsBuys4h: 'stats.buys4h',\n StatsBuys24h: 'stats.buys24h',\n StatsSells1m: 'stats.sells1m',\n StatsSells5m: 'stats.sells5m',\n StatsSells15m: 'stats.sells15m',\n StatsSells30m: 'stats.sells30m',\n StatsSells1h: 'stats.sells1h',\n StatsSells4h: 'stats.sells4h',\n StatsSells24h: 'stats.sells24h',\n StatsTrades1m: 'stats.trades1m',\n StatsTrades5m: 'stats.trades5m',\n StatsTrades1h: 'stats.trades1h',\n StatsTrades4h: 'stats.trades4h',\n StatsTrades24h: 'stats.trades24h',\n StatsTraders1m: 'stats.traders1m',\n StatsTraders5m: 'stats.traders5m',\n StatsTraders1h: 'stats.traders1h',\n StatsTraders4h: 'stats.traders4h',\n StatsTraders24h: 'stats.traders24h',\n StatsVolumesInUsd1m: 'stats.volumesInUsd1m',\n StatsVolumesInUsd5m: 'stats.volumesInUsd5m',\n StatsVolumesInUsd1h: 'stats.volumesInUsd1h',\n StatsVolumesInUsd4h: 'stats.volumesInUsd4h',\n StatsVolumesInUsd24h: 'stats.volumesInUsd24h',\n TokenCreatedAt: 'tokenCreatedAt'\n} as const;\nexport type GetMigratedTokensSortByEnum = typeof GetMigratedTokensSortByEnum[keyof typeof GetMigratedTokensSortByEnum];\n/**\n * @export\n */\nexport const GetMigratedTokensSortDirectionEnum = {\n Asc: 'ASC',\n Desc: 'DESC'\n} as const;\nexport type GetMigratedTokensSortDirectionEnum = typeof GetMigratedTokensSortDirectionEnum[keyof typeof GetMigratedTokensSortDirectionEnum];\n/**\n * @export\n */\nexport const GetMigratedTokensTagEnum = {\n PumpFun: 'pump_fun',\n RaydiumLaunchpad: 'raydium_launchpad',\n MeteoraDynamicBoundingCurve: 'meteora_dynamic_bounding_curve',\n BonkFun: 'bonk_fun',\n MoonitFun: 'moonit_fun'\n} as const;\nexport type GetMigratedTokensTagEnum = typeof GetMigratedTokensTagEnum[keyof typeof GetMigratedTokensTagEnum];\n/**\n * @export\n */\nexport const GetNewTokensSortByEnum = {\n MarketDataPriceInUsd: 'marketData.priceInUsd',\n StatsPriceChangeRatioInUsd1m: 'stats.priceChangeRatioInUsd1m',\n StatsPriceChangeRatioInUsd5m: 'stats.priceChangeRatioInUsd5m',\n StatsPriceChangeRatioInUsd1h: 'stats.priceChangeRatioInUsd1h',\n StatsPriceChangeRatioInUsd4h: 'stats.priceChangeRatioInUsd4h',\n StatsPriceChangeRatioInUsd24h: 'stats.priceChangeRatioInUsd24h',\n MarketDataMarketCapInUsd: 'marketData.marketCapInUsd',\n MarketDataTvlInUsd: 'marketData.tvlInUsd',\n MarketDataTop10TotalHoldings: 'marketData.top10TotalHoldings',\n MarketDataTop10HoldingsRatio: 'marketData.top10HoldingsRatio',\n MarketDataTop100TotalHoldings: 'marketData.top100TotalHoldings',\n MarketDataTop100HoldingsRatio: 'marketData.top100HoldingsRatio',\n MarketDataHolders: 'marketData.holders',\n MarketDataCreatorHoldings: 'marketData.creatorHoldings',\n MarketDataCreatorHoldingsRatio: 'marketData.creatorHoldingsRatio',\n StatsBuys1m: 'stats.buys1m',\n StatsBuys5m: 'stats.buys5m',\n StatsBuys15m: 'stats.buys15m',\n StatsBuys30m: 'stats.buys30m',\n StatsBuys1h: 'stats.buys1h',\n StatsBuys4h: 'stats.buys4h',\n StatsBuys24h: 'stats.buys24h',\n StatsSells1m: 'stats.sells1m',\n StatsSells5m: 'stats.sells5m',\n StatsSells15m: 'stats.sells15m',\n StatsSells30m: 'stats.sells30m',\n StatsSells1h: 'stats.sells1h',\n StatsSells4h: 'stats.sells4h',\n StatsSells24h: 'stats.sells24h',\n StatsTrades1m: 'stats.trades1m',\n StatsTrades5m: 'stats.trades5m',\n StatsTrades1h: 'stats.trades1h',\n StatsTrades4h: 'stats.trades4h',\n StatsTrades24h: 'stats.trades24h',\n StatsTraders1m: 'stats.traders1m',\n StatsTraders5m: 'stats.traders5m',\n StatsTraders1h: 'stats.traders1h',\n StatsTraders4h: 'stats.traders4h',\n StatsTraders24h: 'stats.traders24h',\n StatsVolumesInUsd1m: 'stats.volumesInUsd1m',\n StatsVolumesInUsd5m: 'stats.volumesInUsd5m',\n StatsVolumesInUsd1h: 'stats.volumesInUsd1h',\n StatsVolumesInUsd4h: 'stats.volumesInUsd4h',\n StatsVolumesInUsd24h: 'stats.volumesInUsd24h',\n TokenCreatedAt: 'tokenCreatedAt'\n} as const;\nexport type GetNewTokensSortByEnum = typeof GetNewTokensSortByEnum[keyof typeof GetNewTokensSortByEnum];\n/**\n * @export\n */\nexport const GetNewTokensSortDirectionEnum = {\n Asc: 'ASC',\n Desc: 'DESC'\n} as const;\nexport type GetNewTokensSortDirectionEnum = typeof GetNewTokensSortDirectionEnum[keyof typeof GetNewTokensSortDirectionEnum];\n/**\n * @export\n */\nexport const GetNewTokensTagEnum = {\n PumpFun: 'pump_fun',\n RaydiumLaunchpad: 'raydium_launchpad',\n MeteoraDynamicBoundingCurve: 'meteora_dynamic_bounding_curve',\n BonkFun: 'bonk_fun',\n MoonitFun: 'moonit_fun'\n} as const;\nexport type GetNewTokensTagEnum = typeof GetNewTokensTagEnum[keyof typeof GetNewTokensTagEnum];\n/**\n * @export\n */\nexport const GetStocksTokensSortByEnum = {\n MarketDataPriceInUsd: 'marketData.priceInUsd',\n StatsPriceChangeRatioInUsd1m: 'stats.priceChangeRatioInUsd1m',\n StatsPriceChangeRatioInUsd5m: 'stats.priceChangeRatioInUsd5m',\n StatsPriceChangeRatioInUsd1h: 'stats.priceChangeRatioInUsd1h',\n StatsPriceChangeRatioInUsd4h: 'stats.priceChangeRatioInUsd4h',\n StatsPriceChangeRatioInUsd24h: 'stats.priceChangeRatioInUsd24h',\n MarketDataMarketCapInUsd: 'marketData.marketCapInUsd',\n MarketDataTvlInUsd: 'marketData.tvlInUsd',\n MarketDataTop10TotalHoldings: 'marketData.top10TotalHoldings',\n MarketDataTop10HoldingsRatio: 'marketData.top10HoldingsRatio',\n MarketDataTop100TotalHoldings: 'marketData.top100TotalHoldings',\n MarketDataTop100HoldingsRatio: 'marketData.top100HoldingsRatio',\n MarketDataHolders: 'marketData.holders',\n MarketDataCreatorHoldings: 'marketData.creatorHoldings',\n MarketDataCreatorHoldingsRatio: 'marketData.creatorHoldingsRatio',\n StatsBuys1m: 'stats.buys1m',\n StatsBuys5m: 'stats.buys5m',\n StatsBuys15m: 'stats.buys15m',\n StatsBuys30m: 'stats.buys30m',\n StatsBuys1h: 'stats.buys1h',\n StatsBuys4h: 'stats.buys4h',\n StatsBuys24h: 'stats.buys24h',\n StatsSells1m: 'stats.sells1m',\n StatsSells5m: 'stats.sells5m',\n StatsSells15m: 'stats.sells15m',\n StatsSells30m: 'stats.sells30m',\n StatsSells1h: 'stats.sells1h',\n StatsSells4h: 'stats.sells4h',\n StatsSells24h: 'stats.sells24h',\n StatsTrades1m: 'stats.trades1m',\n StatsTrades5m: 'stats.trades5m',\n StatsTrades1h: 'stats.trades1h',\n StatsTrades4h: 'stats.trades4h',\n StatsTrades24h: 'stats.trades24h',\n StatsTraders1m: 'stats.traders1m',\n StatsTraders5m: 'stats.traders5m',\n StatsTraders1h: 'stats.traders1h',\n StatsTraders4h: 'stats.traders4h',\n StatsTraders24h: 'stats.traders24h',\n StatsVolumesInUsd1m: 'stats.volumesInUsd1m',\n StatsVolumesInUsd5m: 'stats.volumesInUsd5m',\n StatsVolumesInUsd1h: 'stats.volumesInUsd1h',\n StatsVolumesInUsd4h: 'stats.volumesInUsd4h',\n StatsVolumesInUsd24h: 'stats.volumesInUsd24h',\n TokenCreatedAt: 'tokenCreatedAt'\n} as const;\nexport type GetStocksTokensSortByEnum = typeof GetStocksTokensSortByEnum[keyof typeof GetStocksTokensSortByEnum];\n/**\n * @export\n */\nexport const GetStocksTokensSortDirectionEnum = {\n Asc: 'ASC',\n Desc: 'DESC'\n} as const;\nexport type GetStocksTokensSortDirectionEnum = typeof GetStocksTokensSortDirectionEnum[keyof typeof GetStocksTokensSortDirectionEnum];\n/**\n * @export\n */\nexport const GetStocksTokensTagEnum = {\n PumpFun: 'pump_fun',\n RaydiumLaunchpad: 'raydium_launchpad',\n MeteoraDynamicBoundingCurve: 'meteora_dynamic_bounding_curve',\n BonkFun: 'bonk_fun',\n MoonitFun: 'moonit_fun'\n} as const;\nexport type GetStocksTokensTagEnum = typeof GetStocksTokensTagEnum[keyof typeof GetStocksTokensTagEnum];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ChainSymbol,\n ClaimRedPacketInput,\n CreateRedPacketInput,\n CreateRedPacketReply,\n RedPacketClaimsPage,\n RedPacketDTO,\n RedPacketReply,\n RedPacketSendTxInput,\n RedPacketSendTxResponse,\n RedPacketsPage,\n} from '../models/index';\nimport {\n ChainSymbolFromJSON,\n ChainSymbolToJSON,\n ClaimRedPacketInputFromJSON,\n ClaimRedPacketInputToJSON,\n CreateRedPacketInputFromJSON,\n CreateRedPacketInputToJSON,\n CreateRedPacketReplyFromJSON,\n CreateRedPacketReplyToJSON,\n RedPacketClaimsPageFromJSON,\n RedPacketClaimsPageToJSON,\n RedPacketDTOFromJSON,\n RedPacketDTOToJSON,\n RedPacketReplyFromJSON,\n RedPacketReplyToJSON,\n RedPacketSendTxInputFromJSON,\n RedPacketSendTxInputToJSON,\n RedPacketSendTxResponseFromJSON,\n RedPacketSendTxResponseToJSON,\n RedPacketsPageFromJSON,\n RedPacketsPageToJSON,\n} from '../models/index';\n\nexport interface ClaimRedpacketRequest {\n chain: ChainSymbol;\n claimRedPacketInput: ClaimRedPacketInput;\n}\n\nexport interface CreateRedpacketRequest {\n chain: ChainSymbol;\n createRedPacketInput: CreateRedPacketInput;\n}\n\nexport interface GetClaimsRequest {\n id: string;\n cursor?: string;\n limit?: number;\n direction?: string;\n}\n\nexport interface GetClaimsByAddressRequest {\n address: string;\n cursor?: string;\n limit?: number;\n direction?: string;\n}\n\nexport interface GetRedpacketRequest {\n id: string;\n}\n\nexport interface GetRedpacketsRequest {\n cursor?: string;\n limit?: number;\n direction?: string;\n creator?: string;\n chain?: GetRedpacketsChainEnum;\n}\n\nexport interface GetRedpacketsByAddressRequest {\n address: string;\n cursor?: string;\n limit?: number;\n direction?: string;\n}\n\nexport interface RedpacketSendRequest {\n chain: ChainSymbol;\n redPacketSendTxInput: RedPacketSendTxInput;\n}\n\n/**\n * \n */\nexport class RedPacketApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.RED_PACKET.CLAIM.DESCRIPTION\n * CONTROLLER.RED_PACKET.CLAIM.SUMMARY\n */\n async claimRedpacketRaw(requestParameters: ClaimRedpacketRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<RedPacketReply>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling claimRedpacket().'\n );\n }\n\n if (requestParameters['claimRedPacketInput'] == null) {\n throw new runtime.RequiredError(\n 'claimRedPacketInput',\n 'Required parameter \"claimRedPacketInput\" was null or undefined when calling claimRedpacket().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/redpacket/{chain}/claim`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: ClaimRedPacketInputToJSON(requestParameters['claimRedPacketInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => RedPacketReplyFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.RED_PACKET.CLAIM.DESCRIPTION\n * CONTROLLER.RED_PACKET.CLAIM.SUMMARY\n */\n async claimRedpacket(requestParameters: ClaimRedpacketRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<RedPacketReply> {\n const response = await this.claimRedpacketRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RED_PACKET.CREATE.DESCRIPTION\n * CONTROLLER.RED_PACKET.CREATE.SUMMARY\n */\n async createRedpacketRaw(requestParameters: CreateRedpacketRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CreateRedPacketReply>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling createRedpacket().'\n );\n }\n\n if (requestParameters['createRedPacketInput'] == null) {\n throw new runtime.RequiredError(\n 'createRedPacketInput',\n 'Required parameter \"createRedPacketInput\" was null or undefined when calling createRedpacket().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/redpacket/{chain}/create`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: CreateRedPacketInputToJSON(requestParameters['createRedPacketInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => CreateRedPacketReplyFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.RED_PACKET.CREATE.DESCRIPTION\n * CONTROLLER.RED_PACKET.CREATE.SUMMARY\n */\n async createRedpacket(requestParameters: CreateRedpacketRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CreateRedPacketReply> {\n const response = await this.createRedpacketRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RED_PACKET.GET_CLAIMS.DESCRIPTION\n * CONTROLLER.RED_PACKET.GET_CLAIMS.SUMMARY\n */\n async getClaimsRaw(requestParameters: GetClaimsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<RedPacketClaimsPage>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling getClaims().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['direction'] != null) {\n queryParameters['direction'] = requestParameters['direction'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/redpacket/{id}/claims`;\n urlPath = urlPath.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => RedPacketClaimsPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.RED_PACKET.GET_CLAIMS.DESCRIPTION\n * CONTROLLER.RED_PACKET.GET_CLAIMS.SUMMARY\n */\n async getClaims(requestParameters: GetClaimsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<RedPacketClaimsPage> {\n const response = await this.getClaimsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RED_PACKET.GET_CLAIMS_BY_ADDRESS.DESCRIPTION\n * CONTROLLER.RED_PACKET.GET_CLAIMS_BY_ADDRESS.SUMMARY\n */\n async getClaimsByAddressRaw(requestParameters: GetClaimsByAddressRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<RedPacketClaimsPage>> {\n if (requestParameters['address'] == null) {\n throw new runtime.RequiredError(\n 'address',\n 'Required parameter \"address\" was null or undefined when calling getClaimsByAddress().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['direction'] != null) {\n queryParameters['direction'] = requestParameters['direction'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/redpacket/wallet/{address}/claims`;\n urlPath = urlPath.replace(`{${\"address\"}}`, encodeURIComponent(String(requestParameters['address'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => RedPacketClaimsPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.RED_PACKET.GET_CLAIMS_BY_ADDRESS.DESCRIPTION\n * CONTROLLER.RED_PACKET.GET_CLAIMS_BY_ADDRESS.SUMMARY\n */\n async getClaimsByAddress(requestParameters: GetClaimsByAddressRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<RedPacketClaimsPage> {\n const response = await this.getClaimsByAddressRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RED_PACKET.GET.DESCRIPTION\n * CONTROLLER.RED_PACKET.GET.SUMMARY\n */\n async getRedpacketRaw(requestParameters: GetRedpacketRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<RedPacketDTO>> {\n if (requestParameters['id'] == null) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter \"id\" was null or undefined when calling getRedpacket().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/redpacket/{id}`;\n urlPath = urlPath.replace(`{${\"id\"}}`, encodeURIComponent(String(requestParameters['id'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => RedPacketDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.RED_PACKET.GET.DESCRIPTION\n * CONTROLLER.RED_PACKET.GET.SUMMARY\n */\n async getRedpacket(requestParameters: GetRedpacketRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<RedPacketDTO> {\n const response = await this.getRedpacketRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RED_PACKET.GET_REDPACKETS.DESCRIPTION\n * CONTROLLER.RED_PACKET.GET_REDPACKETS.SUMMARY\n */\n async getRedpacketsRaw(requestParameters: GetRedpacketsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<RedPacketsPage>> {\n const queryParameters: any = {};\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['direction'] != null) {\n queryParameters['direction'] = requestParameters['direction'];\n }\n\n if (requestParameters['creator'] != null) {\n queryParameters['creator'] = requestParameters['creator'];\n }\n\n if (requestParameters['chain'] != null) {\n queryParameters['chain'] = requestParameters['chain'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/redpacket`;\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => RedPacketsPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.RED_PACKET.GET_REDPACKETS.DESCRIPTION\n * CONTROLLER.RED_PACKET.GET_REDPACKETS.SUMMARY\n */\n async getRedpackets(requestParameters: GetRedpacketsRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<RedPacketsPage> {\n const response = await this.getRedpacketsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RED_PACKET.GET_REDPACKETS_BY_ADDRESS.DESCRIPTION\n * CONTROLLER.RED_PACKET.GET_REDPACKETS_BY_ADDRESS.SUMMARY\n */\n async getRedpacketsByAddressRaw(requestParameters: GetRedpacketsByAddressRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<RedPacketsPage>> {\n if (requestParameters['address'] == null) {\n throw new runtime.RequiredError(\n 'address',\n 'Required parameter \"address\" was null or undefined when calling getRedpacketsByAddress().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['direction'] != null) {\n queryParameters['direction'] = requestParameters['direction'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/redpacket/wallet/{address}/redpackets`;\n urlPath = urlPath.replace(`{${\"address\"}}`, encodeURIComponent(String(requestParameters['address'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => RedPacketsPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.RED_PACKET.GET_REDPACKETS_BY_ADDRESS.DESCRIPTION\n * CONTROLLER.RED_PACKET.GET_REDPACKETS_BY_ADDRESS.SUMMARY\n */\n async getRedpacketsByAddress(requestParameters: GetRedpacketsByAddressRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<RedPacketsPage> {\n const response = await this.getRedpacketsByAddressRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.RED_PACKET.SEND.DESCRIPTION\n * CONTROLLER.RED_PACKET.SEND.SUMMARY\n */\n async redpacketSendRaw(requestParameters: RedpacketSendRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<RedPacketSendTxResponse>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling redpacketSend().'\n );\n }\n\n if (requestParameters['redPacketSendTxInput'] == null) {\n throw new runtime.RequiredError(\n 'redPacketSendTxInput',\n 'Required parameter \"redPacketSendTxInput\" was null or undefined when calling redpacketSend().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/redpacket/{chain}/send`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: RedPacketSendTxInputToJSON(requestParameters['redPacketSendTxInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => RedPacketSendTxResponseFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.RED_PACKET.SEND.DESCRIPTION\n * CONTROLLER.RED_PACKET.SEND.SUMMARY\n */\n async redpacketSend(requestParameters: RedpacketSendRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<RedPacketSendTxResponse> {\n const response = await this.redpacketSendRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n\n/**\n * @export\n */\nexport const GetRedpacketsChainEnum = {\n Sol: 'sol',\n Base: 'base',\n Bsc: 'bsc',\n Polygon: 'polygon',\n Arbitrum: 'arbitrum',\n Optimism: 'optimism',\n Avalanche: 'avalanche',\n Eth: 'eth',\n Zksync: 'zksync',\n Sui: 'sui'\n} as const;\nexport type GetRedpacketsChainEnum = typeof GetRedpacketsChainEnum[keyof typeof GetRedpacketsChainEnum];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n Candle,\n ChainSymbol,\n DexPoolDTO,\n FilterCondition,\n Resolution,\n Token,\n TokenCreationDTO,\n TokenCreationPage,\n TokenHolder,\n TokenHolderPage,\n TokenListPage,\n TokenMarketData,\n TokenMetadata,\n TokenPage,\n TokenPriceDTO,\n TokenPricePage,\n TokenStat,\n} from '../models/index';\nimport {\n CandleFromJSON,\n CandleToJSON,\n ChainSymbolFromJSON,\n ChainSymbolToJSON,\n DexPoolDTOFromJSON,\n DexPoolDTOToJSON,\n FilterConditionFromJSON,\n FilterConditionToJSON,\n ResolutionFromJSON,\n ResolutionToJSON,\n TokenFromJSON,\n TokenToJSON,\n TokenCreationDTOFromJSON,\n TokenCreationDTOToJSON,\n TokenCreationPageFromJSON,\n TokenCreationPageToJSON,\n TokenHolderFromJSON,\n TokenHolderToJSON,\n TokenHolderPageFromJSON,\n TokenHolderPageToJSON,\n TokenListPageFromJSON,\n TokenListPageToJSON,\n TokenMarketDataFromJSON,\n TokenMarketDataToJSON,\n TokenMetadataFromJSON,\n TokenMetadataToJSON,\n TokenPageFromJSON,\n TokenPageToJSON,\n TokenPriceDTOFromJSON,\n TokenPriceDTOToJSON,\n TokenPricePageFromJSON,\n TokenPricePageToJSON,\n TokenStatFromJSON,\n TokenStatToJSON,\n} 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 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}\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 GetTokensRequest {\n chain: ChainSymbol;\n tokenAddresses: string;\n sortBy?: GetTokensSortByEnum;\n sortDirection?: GetTokensSortDirectionEnum;\n filterBy?: Array<FilterCondition>;\n}\n\nexport interface GetTopHoldersRequest {\n chain: ChainSymbol;\n tokenAddress: string;\n}\n\nexport interface ListTokenRequest {\n chain: ChainSymbol;\n cursor?: string;\n limit?: number;\n direction?: ListTokenDirectionEnum;\n sort?: ListTokenSortEnum;\n sortBy?: ListTokenSortByEnum;\n minH24VolumeInUsd?: string;\n maxH24VolumeInUsd?: string;\n minH24PriceChangeRatio?: string;\n maxH24PriceChangeRatio?: string;\n minH24Buys?: string;\n maxH24Buys?: string;\n minH24Sells?: string;\n maxH24Sells?: string;\n minH24Trades?: string;\n maxH24Trades?: string;\n minH24Buyers?: string;\n maxH24Buyers?: string;\n minH24Sellers?: string;\n maxH24Sellers?: string;\n minH24BuyVolumeInUsd?: string;\n maxH24BuyVolumeInUsd?: string;\n minH24SellVolumeInUsd?: string;\n maxH24SellVolumeInUsd?: string;\n minH4VolumeInUsd?: string;\n maxH4VolumeInUsd?: string;\n minH4PriceChangeRatio?: string;\n maxH4PriceChangeRatio?: string;\n minH4Buys?: string;\n maxH4Buys?: string;\n minH4Sells?: string;\n maxH4Sells?: string;\n minH4Trades?: string;\n maxH4Trades?: string;\n minH4Buyers?: string;\n maxH4Buyers?: string;\n minH4Sellers?: string;\n maxH4Sellers?: string;\n minH4BuyVolumeInUsd?: string;\n maxH4BuyVolumeInUsd?: string;\n minH4SellVolumeInUsd?: string;\n maxH4SellVolumeInUsd?: string;\n minH1VolumeInUsd?: string;\n maxH1VolumeInUsd?: string;\n minH1PriceChangeRatio?: string;\n maxH1PriceChangeRatio?: string;\n minH1Buys?: string;\n maxH1Buys?: string;\n minH1Sells?: string;\n maxH1Sells?: string;\n minH1Trades?: string;\n maxH1Trades?: string;\n minH1Buyers?: string;\n maxH1Buyers?: string;\n minH1Sellers?: string;\n maxH1Sellers?: string;\n minH1BuyVolumeInUsd?: string;\n maxH1BuyVolumeInUsd?: string;\n minH1SellVolumeInUsd?: string;\n maxH1SellVolumeInUsd?: string;\n minM30VolumeInUsd?: string;\n maxM30VolumeInUsd?: string;\n minM30PriceChangeRatio?: string;\n maxM30PriceChangeRatio?: string;\n minM30Buys?: string;\n maxM30Buys?: string;\n minM30Sells?: string;\n maxM30Sells?: string;\n minM30Trades?: string;\n maxM30Trades?: string;\n minM30Buyers?: string;\n maxM30Buyers?: string;\n minM30Sellers?: string;\n maxM30Sellers?: string;\n minM30BuyVolumeInUsd?: string;\n maxM30BuyVolumeInUsd?: string;\n minM30SellVolumeInUsd?: string;\n maxM30SellVolumeInUsd?: string;\n minM15VolumeInUsd?: string;\n maxM15VolumeInUsd?: string;\n minM15PriceChangeRatio?: string;\n maxM15PriceChangeRatio?: string;\n minM15Buys?: string;\n maxM15Buys?: string;\n minM15Sells?: string;\n maxM15Sells?: string;\n minM15Trades?: string;\n maxM15Trades?: string;\n minM15Buyers?: string;\n maxM15Buyers?: string;\n minM15Sellers?: string;\n maxM15Sellers?: string;\n minM15BuyVolumeInUsd?: string;\n maxM15BuyVolumeInUsd?: string;\n minM15SellVolumeInUsd?: string;\n maxM15SellVolumeInUsd?: string;\n minM5VolumeInUsd?: string;\n maxM5VolumeInUsd?: string;\n minM5PriceChangeRatio?: string;\n maxM5PriceChangeRatio?: string;\n minM5Buys?: string;\n maxM5Buys?: string;\n minM5Sells?: string;\n maxM5Sells?: string;\n minM5Trades?: string;\n maxM5Trades?: string;\n minM5Buyers?: string;\n maxM5Buyers?: string;\n minM5Sellers?: string;\n maxM5Sellers?: string;\n minM5BuyVolumeInUsd?: string;\n maxM5BuyVolumeInUsd?: string;\n minM5SellVolumeInUsd?: string;\n maxM5SellVolumeInUsd?: string;\n minM1VolumeInUsd?: string;\n maxM1VolumeInUsd?: string;\n minM1PriceChangeRatio?: string;\n maxM1PriceChangeRatio?: string;\n minM1Buys?: string;\n maxM1Buys?: string;\n minM1Sells?: string;\n maxM1Sells?: string;\n minM1Trades?: string;\n maxM1Trades?: string;\n minM1Buyers?: string;\n maxM1Buyers?: string;\n minM1Sellers?: string;\n maxM1Sellers?: string;\n minM1BuyVolumeInUsd?: string;\n maxM1BuyVolumeInUsd?: string;\n minM1SellVolumeInUsd?: string;\n maxM1SellVolumeInUsd?: string;\n}\n\nexport interface SearchRequest {\n chains?: Array<string>;\n q?: string;\n limit?: number;\n sort?: SearchSortEnum;\n protocols?: Array<string>;\n cursor?: string;\n sortBy?: SearchSortByEnum;\n}\n\n/**\n * \n */\nexport class TokenApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.TOKEN.GET_CANDLES.DESCRIPTION\n * CONTROLLER.TOKEN.GET_CANDLES.SUMMARY\n */\n async getCandlesRaw(requestParameters: GetCandlesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Candle>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getCandles().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getCandles().'\n );\n }\n\n if (requestParameters['resolution'] == null) {\n throw new runtime.RequiredError(\n 'resolution',\n 'Required parameter \"resolution\" was null or undefined when calling getCandles().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['resolution'] != null) {\n queryParameters['resolution'] = requestParameters['resolution'];\n }\n\n if (requestParameters['from'] != null) {\n queryParameters['from'] = requestParameters['from'];\n }\n\n if (requestParameters['to'] != null) {\n queryParameters['to'] = requestParameters['to'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/candles`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(CandleFromJSON));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_CANDLES.DESCRIPTION\n * CONTROLLER.TOKEN.GET_CANDLES.SUMMARY\n */\n async getCandles(requestParameters: GetCandlesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Candle>> {\n const response = await this.getCandlesRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_CREATION.DESCRIPTION\n * CONTROLLER.TOKEN.GET_CREATION.SUMMARY\n */\n async getCreationRaw(requestParameters: GetCreationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenCreationDTO>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getCreation().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getCreation().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/creation`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenCreationDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_CREATION.DESCRIPTION\n * CONTROLLER.TOKEN.GET_CREATION.SUMMARY\n */\n async getCreation(requestParameters: GetCreationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenCreationDTO> {\n const response = await this.getCreationRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_HOLDERS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_HOLDERS.SUMMARY\n */\n async getHoldersRaw(requestParameters: GetHoldersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenHolderPage>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getHolders().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getHolders().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['direction'] != null) {\n queryParameters['direction'] = requestParameters['direction'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/holders`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenHolderPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_HOLDERS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_HOLDERS.SUMMARY\n */\n async getHolders(requestParameters: GetHoldersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenHolderPage> {\n const response = await this.getHoldersRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_HOLDERS_MULTI.DESCRIPTION\n * CONTROLLER.TOKEN.GET_HOLDERS_MULTI.SUMMARY\n */\n async getHoldersMultiRaw(requestParameters: GetHoldersMultiRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<TokenHolder>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getHoldersMulti().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getHoldersMulti().'\n );\n }\n\n if (requestParameters['walletAddresses'] == null) {\n throw new runtime.RequiredError(\n 'walletAddresses',\n 'Required parameter \"walletAddresses\" was null or undefined when calling getHoldersMulti().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['walletAddresses'] != null) {\n queryParameters['walletAddresses'] = requestParameters['walletAddresses'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/holders/multi`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(TokenHolderFromJSON));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_HOLDERS_MULTI.DESCRIPTION\n * CONTROLLER.TOKEN.GET_HOLDERS_MULTI.SUMMARY\n */\n async getHoldersMulti(requestParameters: GetHoldersMultiRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<TokenHolder>> {\n const response = await this.getHoldersMultiRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_MARKET_CAP.DESCRIPTION\n * CONTROLLER.TOKEN.GET_MARKET_CAP.SUMMARY\n */\n async getMarketDataRaw(requestParameters: GetMarketDataRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenMarketData>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getMarketData().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getMarketData().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/marketData`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenMarketDataFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_MARKET_CAP.DESCRIPTION\n * CONTROLLER.TOKEN.GET_MARKET_CAP.SUMMARY\n */\n async getMarketData(requestParameters: GetMarketDataRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenMarketData> {\n const response = await this.getMarketDataRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_MARKET_DATA_MULTI.DESCRIPTION\n * CONTROLLER.TOKEN.GET_MARKET_DATA_MULTI.SUMMARY\n */\n async getMarketDataMultiRaw(requestParameters: GetMarketDataMultiRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<{ [key: string]: TokenMarketData; }>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getMarketDataMulti().'\n );\n }\n\n if (requestParameters['tokenAddresses'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddresses',\n 'Required parameter \"tokenAddresses\" was null or undefined when calling getMarketDataMulti().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['tokenAddresses'] != null) {\n queryParameters['tokenAddresses'] = requestParameters['tokenAddresses'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/marketData/multi`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => runtime.mapValues(jsonValue, TokenMarketDataFromJSON));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_MARKET_DATA_MULTI.DESCRIPTION\n * CONTROLLER.TOKEN.GET_MARKET_DATA_MULTI.SUMMARY\n */\n async getMarketDataMulti(requestParameters: GetMarketDataMultiRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{ [key: string]: TokenMarketData; }> {\n const response = await this.getMarketDataMultiRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_METADATA.DESCRIPTION\n * CONTROLLER.TOKEN.GET_METADATA.SUMMARY\n */\n async getMetadataRaw(requestParameters: GetMetadataRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenMetadata>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getMetadata().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getMetadata().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/metadata`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenMetadataFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_METADATA.DESCRIPTION\n * CONTROLLER.TOKEN.GET_METADATA.SUMMARY\n */\n async getMetadata(requestParameters: GetMetadataRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenMetadata> {\n const response = await this.getMetadataRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_METADATA_MULTI.DESCRIPTION\n * CONTROLLER.TOKEN.GET_METADATA_MULTI.SUMMARY\n */\n async getMetadataMultiRaw(requestParameters: GetMetadataMultiRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<{ [key: string]: TokenMetadata; }>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getMetadataMulti().'\n );\n }\n\n if (requestParameters['tokenAddresses'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddresses',\n 'Required parameter \"tokenAddresses\" was null or undefined when calling getMetadataMulti().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['tokenAddresses'] != null) {\n queryParameters['tokenAddresses'] = requestParameters['tokenAddresses'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/metadata/multi`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => runtime.mapValues(jsonValue, TokenMetadataFromJSON));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_METADATA_MULTI.DESCRIPTION\n * CONTROLLER.TOKEN.GET_METADATA_MULTI.SUMMARY\n */\n async getMetadataMulti(requestParameters: GetMetadataMultiRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{ [key: string]: TokenMetadata; }> {\n const response = await this.getMetadataMultiRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_MINT_AND_BURN.DESCRIPTION\n * CONTROLLER.TOKEN.GET_MINT_AND_BURN.SUMMARY\n */\n async getMintAndBurnRaw(requestParameters: GetMintAndBurnRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenCreationPage>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getMintAndBurn().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getMintAndBurn().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['direction'] != null) {\n queryParameters['direction'] = requestParameters['direction'];\n }\n\n if (requestParameters['type'] != null) {\n queryParameters['type'] = requestParameters['type'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/mintAndBurn`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenCreationPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_MINT_AND_BURN.DESCRIPTION\n * CONTROLLER.TOKEN.GET_MINT_AND_BURN.SUMMARY\n */\n async getMintAndBurn(requestParameters: GetMintAndBurnRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenCreationPage> {\n const response = await this.getMintAndBurnRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_POOLS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_POOLS.SUMMARY\n */\n async getPoolsRaw(requestParameters: GetPoolsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<DexPoolDTO>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getPools().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getPools().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/pools`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(DexPoolDTOFromJSON));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_POOLS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_POOLS.SUMMARY\n */\n async getPools(requestParameters: GetPoolsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<DexPoolDTO>> {\n const response = await this.getPoolsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_PRICE_BY_TIME.DESCRIPTION\n * CONTROLLER.TOKEN.GET_PRICE_BY_TIME.SUMMARY\n */\n async getPriceByTimeRaw(requestParameters: GetPriceByTimeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenPriceDTO>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getPriceByTime().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getPriceByTime().'\n );\n }\n\n if (requestParameters['timestamp'] == null) {\n throw new runtime.RequiredError(\n 'timestamp',\n 'Required parameter \"timestamp\" was null or undefined when calling getPriceByTime().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['timestamp'] != null) {\n queryParameters['timestamp'] = requestParameters['timestamp'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/price`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenPriceDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_PRICE_BY_TIME.DESCRIPTION\n * CONTROLLER.TOKEN.GET_PRICE_BY_TIME.SUMMARY\n */\n async getPriceByTime(requestParameters: GetPriceByTimeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenPriceDTO> {\n const response = await this.getPriceByTimeRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_PRICES.DESCRIPTION\n * CONTROLLER.TOKEN.GET_PRICES.SUMMARY\n */\n async getPricesRaw(requestParameters: GetPricesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenPricePage>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getPrices().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getPrices().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['direction'] != null) {\n queryParameters['direction'] = requestParameters['direction'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/prices`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenPricePageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_PRICES.DESCRIPTION\n * CONTROLLER.TOKEN.GET_PRICES.SUMMARY\n */\n async getPrices(requestParameters: GetPricesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenPricePage> {\n const response = await this.getPricesRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_SECURITY.DESCRIPTION\n * CONTROLLER.TOKEN.GET_SECURITY.SUMMARY\n */\n async getSecurityRaw(requestParameters: GetSecurityRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<object>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getSecurity().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getSecurity().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/security`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse<any>(response);\n }\n\n /**\n * CONTROLLER.TOKEN.GET_SECURITY.DESCRIPTION\n * CONTROLLER.TOKEN.GET_SECURITY.SUMMARY\n */\n async getSecurity(requestParameters: GetSecurityRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<object> {\n const response = await this.getSecurityRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_STATS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_STATS.SUMMARY\n */\n async getStatsRaw(requestParameters: GetStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenStat>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getStats().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getStats().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/stats`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenStatFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_STATS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_STATS.SUMMARY\n */\n async getStats(requestParameters: GetStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenStat> {\n const response = await this.getStatsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_STATS_MULTI.DESCRIPTION\n * CONTROLLER.TOKEN.GET_STATS_MULTI.SUMMARY\n */\n async getStatsMultiRaw(requestParameters: GetStatsMultiRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<{ [key: string]: TokenStat; }>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getStatsMulti().'\n );\n }\n\n if (requestParameters['tokenAddresses'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddresses',\n 'Required parameter \"tokenAddresses\" was null or undefined when calling getStatsMulti().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['tokenAddresses'] != null) {\n queryParameters['tokenAddresses'] = requestParameters['tokenAddresses'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/stats/multi`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => runtime.mapValues(jsonValue, TokenStatFromJSON));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_STATS_MULTI.DESCRIPTION\n * CONTROLLER.TOKEN.GET_STATS_MULTI.SUMMARY\n */\n async getStatsMulti(requestParameters: GetStatsMultiRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{ [key: string]: TokenStat; }> {\n const response = await this.getStatsMultiRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET.DESCRIPTION\n * CONTROLLER.TOKEN.GET.SUMMARY\n */\n async getTokenRaw(requestParameters: GetTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Token>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getToken().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getToken().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET.DESCRIPTION\n * CONTROLLER.TOKEN.GET.SUMMARY\n */\n async getToken(requestParameters: GetTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Token> {\n const response = await this.getTokenRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_TOKENS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_TOKENS.SUMMARY\n */\n async getTokensRaw(requestParameters: GetTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Token>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getTokens().'\n );\n }\n\n if (requestParameters['tokenAddresses'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddresses',\n 'Required parameter \"tokenAddresses\" was null or undefined when calling getTokens().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['tokenAddresses'] != null) {\n queryParameters['tokenAddresses'] = requestParameters['tokenAddresses'];\n }\n\n if (requestParameters['sortBy'] != null) {\n queryParameters['sortBy'] = requestParameters['sortBy'];\n }\n\n if (requestParameters['sortDirection'] != null) {\n queryParameters['sortDirection'] = requestParameters['sortDirection'];\n }\n\n if (requestParameters['filterBy'] != null) {\n queryParameters['filterBy'] = requestParameters['filterBy'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/multi`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(TokenFromJSON));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_TOKENS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_TOKENS.SUMMARY\n */\n async getTokens(requestParameters: GetTokensRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Token>> {\n const response = await this.getTokensRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_TOP_HOLDERS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_TOP_HOLDERS.SUMMARY\n */\n async getTopHoldersRaw(requestParameters: GetTopHoldersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenHolderPage>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getTopHolders().'\n );\n }\n\n if (requestParameters['tokenAddress'] == null) {\n throw new runtime.RequiredError(\n 'tokenAddress',\n 'Required parameter \"tokenAddress\" was null or undefined when calling getTopHolders().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/{tokenAddress}/topHolders`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"tokenAddress\"}}`, encodeURIComponent(String(requestParameters['tokenAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenHolderPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_TOP_HOLDERS.DESCRIPTION\n * CONTROLLER.TOKEN.GET_TOP_HOLDERS.SUMMARY\n */\n async getTopHolders(requestParameters: GetTopHoldersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenHolderPage> {\n const response = await this.getTopHoldersRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.GET_TOKEN_LIST.DESCRIPTION\n * CONTROLLER.TOKEN.GET_TOKEN_LIST.SUMMARY\n */\n async listTokenRaw(requestParameters: ListTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenListPage>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling listToken().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['direction'] != null) {\n queryParameters['direction'] = requestParameters['direction'];\n }\n\n if (requestParameters['sort'] != null) {\n queryParameters['sort'] = requestParameters['sort'];\n }\n\n if (requestParameters['sortBy'] != null) {\n queryParameters['sortBy'] = requestParameters['sortBy'];\n }\n\n if (requestParameters['minH24VolumeInUsd'] != null) {\n queryParameters['min_h24_volume_in_usd'] = requestParameters['minH24VolumeInUsd'];\n }\n\n if (requestParameters['maxH24VolumeInUsd'] != null) {\n queryParameters['max_h24_volume_in_usd'] = requestParameters['maxH24VolumeInUsd'];\n }\n\n if (requestParameters['minH24PriceChangeRatio'] != null) {\n queryParameters['min_h24_price_change_ratio'] = requestParameters['minH24PriceChangeRatio'];\n }\n\n if (requestParameters['maxH24PriceChangeRatio'] != null) {\n queryParameters['max_h24_price_change_ratio'] = requestParameters['maxH24PriceChangeRatio'];\n }\n\n if (requestParameters['minH24Buys'] != null) {\n queryParameters['min_h24_buys'] = requestParameters['minH24Buys'];\n }\n\n if (requestParameters['maxH24Buys'] != null) {\n queryParameters['max_h24_buys'] = requestParameters['maxH24Buys'];\n }\n\n if (requestParameters['minH24Sells'] != null) {\n queryParameters['min_h24_sells'] = requestParameters['minH24Sells'];\n }\n\n if (requestParameters['maxH24Sells'] != null) {\n queryParameters['max_h24_sells'] = requestParameters['maxH24Sells'];\n }\n\n if (requestParameters['minH24Trades'] != null) {\n queryParameters['min_h24_trades'] = requestParameters['minH24Trades'];\n }\n\n if (requestParameters['maxH24Trades'] != null) {\n queryParameters['max_h24_trades'] = requestParameters['maxH24Trades'];\n }\n\n if (requestParameters['minH24Buyers'] != null) {\n queryParameters['min_h24_buyers'] = requestParameters['minH24Buyers'];\n }\n\n if (requestParameters['maxH24Buyers'] != null) {\n queryParameters['max_h24_buyers'] = requestParameters['maxH24Buyers'];\n }\n\n if (requestParameters['minH24Sellers'] != null) {\n queryParameters['min_h24_sellers'] = requestParameters['minH24Sellers'];\n }\n\n if (requestParameters['maxH24Sellers'] != null) {\n queryParameters['max_h24_sellers'] = requestParameters['maxH24Sellers'];\n }\n\n if (requestParameters['minH24BuyVolumeInUsd'] != null) {\n queryParameters['min_h24_buy_volume_in_usd'] = requestParameters['minH24BuyVolumeInUsd'];\n }\n\n if (requestParameters['maxH24BuyVolumeInUsd'] != null) {\n queryParameters['max_h24_buy_volume_in_usd'] = requestParameters['maxH24BuyVolumeInUsd'];\n }\n\n if (requestParameters['minH24SellVolumeInUsd'] != null) {\n queryParameters['min_h24_sell_volume_in_usd'] = requestParameters['minH24SellVolumeInUsd'];\n }\n\n if (requestParameters['maxH24SellVolumeInUsd'] != null) {\n queryParameters['max_h24_sell_volume_in_usd'] = requestParameters['maxH24SellVolumeInUsd'];\n }\n\n if (requestParameters['minH4VolumeInUsd'] != null) {\n queryParameters['min_h4_volume_in_usd'] = requestParameters['minH4VolumeInUsd'];\n }\n\n if (requestParameters['maxH4VolumeInUsd'] != null) {\n queryParameters['max_h4_volume_in_usd'] = requestParameters['maxH4VolumeInUsd'];\n }\n\n if (requestParameters['minH4PriceChangeRatio'] != null) {\n queryParameters['min_h4_price_change_ratio'] = requestParameters['minH4PriceChangeRatio'];\n }\n\n if (requestParameters['maxH4PriceChangeRatio'] != null) {\n queryParameters['max_h4_price_change_ratio'] = requestParameters['maxH4PriceChangeRatio'];\n }\n\n if (requestParameters['minH4Buys'] != null) {\n queryParameters['min_h4_buys'] = requestParameters['minH4Buys'];\n }\n\n if (requestParameters['maxH4Buys'] != null) {\n queryParameters['max_h4_buys'] = requestParameters['maxH4Buys'];\n }\n\n if (requestParameters['minH4Sells'] != null) {\n queryParameters['min_h4_sells'] = requestParameters['minH4Sells'];\n }\n\n if (requestParameters['maxH4Sells'] != null) {\n queryParameters['max_h4_sells'] = requestParameters['maxH4Sells'];\n }\n\n if (requestParameters['minH4Trades'] != null) {\n queryParameters['min_h4_trades'] = requestParameters['minH4Trades'];\n }\n\n if (requestParameters['maxH4Trades'] != null) {\n queryParameters['max_h4_trades'] = requestParameters['maxH4Trades'];\n }\n\n if (requestParameters['minH4Buyers'] != null) {\n queryParameters['min_h4_buyers'] = requestParameters['minH4Buyers'];\n }\n\n if (requestParameters['maxH4Buyers'] != null) {\n queryParameters['max_h4_buyers'] = requestParameters['maxH4Buyers'];\n }\n\n if (requestParameters['minH4Sellers'] != null) {\n queryParameters['min_h4_sellers'] = requestParameters['minH4Sellers'];\n }\n\n if (requestParameters['maxH4Sellers'] != null) {\n queryParameters['max_h4_sellers'] = requestParameters['maxH4Sellers'];\n }\n\n if (requestParameters['minH4BuyVolumeInUsd'] != null) {\n queryParameters['min_h4_buy_volume_in_usd'] = requestParameters['minH4BuyVolumeInUsd'];\n }\n\n if (requestParameters['maxH4BuyVolumeInUsd'] != null) {\n queryParameters['max_h4_buy_volume_in_usd'] = requestParameters['maxH4BuyVolumeInUsd'];\n }\n\n if (requestParameters['minH4SellVolumeInUsd'] != null) {\n queryParameters['min_h4_sell_volume_in_usd'] = requestParameters['minH4SellVolumeInUsd'];\n }\n\n if (requestParameters['maxH4SellVolumeInUsd'] != null) {\n queryParameters['max_h4_sell_volume_in_usd'] = requestParameters['maxH4SellVolumeInUsd'];\n }\n\n if (requestParameters['minH1VolumeInUsd'] != null) {\n queryParameters['min_h1_volume_in_usd'] = requestParameters['minH1VolumeInUsd'];\n }\n\n if (requestParameters['maxH1VolumeInUsd'] != null) {\n queryParameters['max_h1_volume_in_usd'] = requestParameters['maxH1VolumeInUsd'];\n }\n\n if (requestParameters['minH1PriceChangeRatio'] != null) {\n queryParameters['min_h1_price_change_ratio'] = requestParameters['minH1PriceChangeRatio'];\n }\n\n if (requestParameters['maxH1PriceChangeRatio'] != null) {\n queryParameters['max_h1_price_change_ratio'] = requestParameters['maxH1PriceChangeRatio'];\n }\n\n if (requestParameters['minH1Buys'] != null) {\n queryParameters['min_h1_buys'] = requestParameters['minH1Buys'];\n }\n\n if (requestParameters['maxH1Buys'] != null) {\n queryParameters['max_h1_buys'] = requestParameters['maxH1Buys'];\n }\n\n if (requestParameters['minH1Sells'] != null) {\n queryParameters['min_h1_sells'] = requestParameters['minH1Sells'];\n }\n\n if (requestParameters['maxH1Sells'] != null) {\n queryParameters['max_h1_sells'] = requestParameters['maxH1Sells'];\n }\n\n if (requestParameters['minH1Trades'] != null) {\n queryParameters['min_h1_trades'] = requestParameters['minH1Trades'];\n }\n\n if (requestParameters['maxH1Trades'] != null) {\n queryParameters['max_h1_trades'] = requestParameters['maxH1Trades'];\n }\n\n if (requestParameters['minH1Buyers'] != null) {\n queryParameters['min_h1_buyers'] = requestParameters['minH1Buyers'];\n }\n\n if (requestParameters['maxH1Buyers'] != null) {\n queryParameters['max_h1_buyers'] = requestParameters['maxH1Buyers'];\n }\n\n if (requestParameters['minH1Sellers'] != null) {\n queryParameters['min_h1_sellers'] = requestParameters['minH1Sellers'];\n }\n\n if (requestParameters['maxH1Sellers'] != null) {\n queryParameters['max_h1_sellers'] = requestParameters['maxH1Sellers'];\n }\n\n if (requestParameters['minH1BuyVolumeInUsd'] != null) {\n queryParameters['min_h1_buy_volume_in_usd'] = requestParameters['minH1BuyVolumeInUsd'];\n }\n\n if (requestParameters['maxH1BuyVolumeInUsd'] != null) {\n queryParameters['max_h1_buy_volume_in_usd'] = requestParameters['maxH1BuyVolumeInUsd'];\n }\n\n if (requestParameters['minH1SellVolumeInUsd'] != null) {\n queryParameters['min_h1_sell_volume_in_usd'] = requestParameters['minH1SellVolumeInUsd'];\n }\n\n if (requestParameters['maxH1SellVolumeInUsd'] != null) {\n queryParameters['max_h1_sell_volume_in_usd'] = requestParameters['maxH1SellVolumeInUsd'];\n }\n\n if (requestParameters['minM30VolumeInUsd'] != null) {\n queryParameters['min_m30_volume_in_usd'] = requestParameters['minM30VolumeInUsd'];\n }\n\n if (requestParameters['maxM30VolumeInUsd'] != null) {\n queryParameters['max_m30_volume_in_usd'] = requestParameters['maxM30VolumeInUsd'];\n }\n\n if (requestParameters['minM30PriceChangeRatio'] != null) {\n queryParameters['min_m30_price_change_ratio'] = requestParameters['minM30PriceChangeRatio'];\n }\n\n if (requestParameters['maxM30PriceChangeRatio'] != null) {\n queryParameters['max_m30_price_change_ratio'] = requestParameters['maxM30PriceChangeRatio'];\n }\n\n if (requestParameters['minM30Buys'] != null) {\n queryParameters['min_m30_buys'] = requestParameters['minM30Buys'];\n }\n\n if (requestParameters['maxM30Buys'] != null) {\n queryParameters['max_m30_buys'] = requestParameters['maxM30Buys'];\n }\n\n if (requestParameters['minM30Sells'] != null) {\n queryParameters['min_m30_sells'] = requestParameters['minM30Sells'];\n }\n\n if (requestParameters['maxM30Sells'] != null) {\n queryParameters['max_m30_sells'] = requestParameters['maxM30Sells'];\n }\n\n if (requestParameters['minM30Trades'] != null) {\n queryParameters['min_m30_trades'] = requestParameters['minM30Trades'];\n }\n\n if (requestParameters['maxM30Trades'] != null) {\n queryParameters['max_m30_trades'] = requestParameters['maxM30Trades'];\n }\n\n if (requestParameters['minM30Buyers'] != null) {\n queryParameters['min_m30_buyers'] = requestParameters['minM30Buyers'];\n }\n\n if (requestParameters['maxM30Buyers'] != null) {\n queryParameters['max_m30_buyers'] = requestParameters['maxM30Buyers'];\n }\n\n if (requestParameters['minM30Sellers'] != null) {\n queryParameters['min_m30_sellers'] = requestParameters['minM30Sellers'];\n }\n\n if (requestParameters['maxM30Sellers'] != null) {\n queryParameters['max_m30_sellers'] = requestParameters['maxM30Sellers'];\n }\n\n if (requestParameters['minM30BuyVolumeInUsd'] != null) {\n queryParameters['min_m30_buy_volume_in_usd'] = requestParameters['minM30BuyVolumeInUsd'];\n }\n\n if (requestParameters['maxM30BuyVolumeInUsd'] != null) {\n queryParameters['max_m30_buy_volume_in_usd'] = requestParameters['maxM30BuyVolumeInUsd'];\n }\n\n if (requestParameters['minM30SellVolumeInUsd'] != null) {\n queryParameters['min_m30_sell_volume_in_usd'] = requestParameters['minM30SellVolumeInUsd'];\n }\n\n if (requestParameters['maxM30SellVolumeInUsd'] != null) {\n queryParameters['max_m30_sell_volume_in_usd'] = requestParameters['maxM30SellVolumeInUsd'];\n }\n\n if (requestParameters['minM15VolumeInUsd'] != null) {\n queryParameters['min_m15_volume_in_usd'] = requestParameters['minM15VolumeInUsd'];\n }\n\n if (requestParameters['maxM15VolumeInUsd'] != null) {\n queryParameters['max_m15_volume_in_usd'] = requestParameters['maxM15VolumeInUsd'];\n }\n\n if (requestParameters['minM15PriceChangeRatio'] != null) {\n queryParameters['min_m15_price_change_ratio'] = requestParameters['minM15PriceChangeRatio'];\n }\n\n if (requestParameters['maxM15PriceChangeRatio'] != null) {\n queryParameters['max_m15_price_change_ratio'] = requestParameters['maxM15PriceChangeRatio'];\n }\n\n if (requestParameters['minM15Buys'] != null) {\n queryParameters['min_m15_buys'] = requestParameters['minM15Buys'];\n }\n\n if (requestParameters['maxM15Buys'] != null) {\n queryParameters['max_m15_buys'] = requestParameters['maxM15Buys'];\n }\n\n if (requestParameters['minM15Sells'] != null) {\n queryParameters['min_m15_sells'] = requestParameters['minM15Sells'];\n }\n\n if (requestParameters['maxM15Sells'] != null) {\n queryParameters['max_m15_sells'] = requestParameters['maxM15Sells'];\n }\n\n if (requestParameters['minM15Trades'] != null) {\n queryParameters['min_m15_trades'] = requestParameters['minM15Trades'];\n }\n\n if (requestParameters['maxM15Trades'] != null) {\n queryParameters['max_m15_trades'] = requestParameters['maxM15Trades'];\n }\n\n if (requestParameters['minM15Buyers'] != null) {\n queryParameters['min_m15_buyers'] = requestParameters['minM15Buyers'];\n }\n\n if (requestParameters['maxM15Buyers'] != null) {\n queryParameters['max_m15_buyers'] = requestParameters['maxM15Buyers'];\n }\n\n if (requestParameters['minM15Sellers'] != null) {\n queryParameters['min_m15_sellers'] = requestParameters['minM15Sellers'];\n }\n\n if (requestParameters['maxM15Sellers'] != null) {\n queryParameters['max_m15_sellers'] = requestParameters['maxM15Sellers'];\n }\n\n if (requestParameters['minM15BuyVolumeInUsd'] != null) {\n queryParameters['min_m15_buy_volume_in_usd'] = requestParameters['minM15BuyVolumeInUsd'];\n }\n\n if (requestParameters['maxM15BuyVolumeInUsd'] != null) {\n queryParameters['max_m15_buy_volume_in_usd'] = requestParameters['maxM15BuyVolumeInUsd'];\n }\n\n if (requestParameters['minM15SellVolumeInUsd'] != null) {\n queryParameters['min_m15_sell_volume_in_usd'] = requestParameters['minM15SellVolumeInUsd'];\n }\n\n if (requestParameters['maxM15SellVolumeInUsd'] != null) {\n queryParameters['max_m15_sell_volume_in_usd'] = requestParameters['maxM15SellVolumeInUsd'];\n }\n\n if (requestParameters['minM5VolumeInUsd'] != null) {\n queryParameters['min_m5_volume_in_usd'] = requestParameters['minM5VolumeInUsd'];\n }\n\n if (requestParameters['maxM5VolumeInUsd'] != null) {\n queryParameters['max_m5_volume_in_usd'] = requestParameters['maxM5VolumeInUsd'];\n }\n\n if (requestParameters['minM5PriceChangeRatio'] != null) {\n queryParameters['min_m5_price_change_ratio'] = requestParameters['minM5PriceChangeRatio'];\n }\n\n if (requestParameters['maxM5PriceChangeRatio'] != null) {\n queryParameters['max_m5_price_change_ratio'] = requestParameters['maxM5PriceChangeRatio'];\n }\n\n if (requestParameters['minM5Buys'] != null) {\n queryParameters['min_m5_buys'] = requestParameters['minM5Buys'];\n }\n\n if (requestParameters['maxM5Buys'] != null) {\n queryParameters['max_m5_buys'] = requestParameters['maxM5Buys'];\n }\n\n if (requestParameters['minM5Sells'] != null) {\n queryParameters['min_m5_sells'] = requestParameters['minM5Sells'];\n }\n\n if (requestParameters['maxM5Sells'] != null) {\n queryParameters['max_m5_sells'] = requestParameters['maxM5Sells'];\n }\n\n if (requestParameters['minM5Trades'] != null) {\n queryParameters['min_m5_trades'] = requestParameters['minM5Trades'];\n }\n\n if (requestParameters['maxM5Trades'] != null) {\n queryParameters['max_m5_trades'] = requestParameters['maxM5Trades'];\n }\n\n if (requestParameters['minM5Buyers'] != null) {\n queryParameters['min_m5_buyers'] = requestParameters['minM5Buyers'];\n }\n\n if (requestParameters['maxM5Buyers'] != null) {\n queryParameters['max_m5_buyers'] = requestParameters['maxM5Buyers'];\n }\n\n if (requestParameters['minM5Sellers'] != null) {\n queryParameters['min_m5_sellers'] = requestParameters['minM5Sellers'];\n }\n\n if (requestParameters['maxM5Sellers'] != null) {\n queryParameters['max_m5_sellers'] = requestParameters['maxM5Sellers'];\n }\n\n if (requestParameters['minM5BuyVolumeInUsd'] != null) {\n queryParameters['min_m5_buy_volume_in_usd'] = requestParameters['minM5BuyVolumeInUsd'];\n }\n\n if (requestParameters['maxM5BuyVolumeInUsd'] != null) {\n queryParameters['max_m5_buy_volume_in_usd'] = requestParameters['maxM5BuyVolumeInUsd'];\n }\n\n if (requestParameters['minM5SellVolumeInUsd'] != null) {\n queryParameters['min_m5_sell_volume_in_usd'] = requestParameters['minM5SellVolumeInUsd'];\n }\n\n if (requestParameters['maxM5SellVolumeInUsd'] != null) {\n queryParameters['max_m5_sell_volume_in_usd'] = requestParameters['maxM5SellVolumeInUsd'];\n }\n\n if (requestParameters['minM1VolumeInUsd'] != null) {\n queryParameters['min_m1_volume_in_usd'] = requestParameters['minM1VolumeInUsd'];\n }\n\n if (requestParameters['maxM1VolumeInUsd'] != null) {\n queryParameters['max_m1_volume_in_usd'] = requestParameters['maxM1VolumeInUsd'];\n }\n\n if (requestParameters['minM1PriceChangeRatio'] != null) {\n queryParameters['min_m1_price_change_ratio'] = requestParameters['minM1PriceChangeRatio'];\n }\n\n if (requestParameters['maxM1PriceChangeRatio'] != null) {\n queryParameters['max_m1_price_change_ratio'] = requestParameters['maxM1PriceChangeRatio'];\n }\n\n if (requestParameters['minM1Buys'] != null) {\n queryParameters['min_m1_buys'] = requestParameters['minM1Buys'];\n }\n\n if (requestParameters['maxM1Buys'] != null) {\n queryParameters['max_m1_buys'] = requestParameters['maxM1Buys'];\n }\n\n if (requestParameters['minM1Sells'] != null) {\n queryParameters['min_m1_sells'] = requestParameters['minM1Sells'];\n }\n\n if (requestParameters['maxM1Sells'] != null) {\n queryParameters['max_m1_sells'] = requestParameters['maxM1Sells'];\n }\n\n if (requestParameters['minM1Trades'] != null) {\n queryParameters['min_m1_trades'] = requestParameters['minM1Trades'];\n }\n\n if (requestParameters['maxM1Trades'] != null) {\n queryParameters['max_m1_trades'] = requestParameters['maxM1Trades'];\n }\n\n if (requestParameters['minM1Buyers'] != null) {\n queryParameters['min_m1_buyers'] = requestParameters['minM1Buyers'];\n }\n\n if (requestParameters['maxM1Buyers'] != null) {\n queryParameters['max_m1_buyers'] = requestParameters['maxM1Buyers'];\n }\n\n if (requestParameters['minM1Sellers'] != null) {\n queryParameters['min_m1_sellers'] = requestParameters['minM1Sellers'];\n }\n\n if (requestParameters['maxM1Sellers'] != null) {\n queryParameters['max_m1_sellers'] = requestParameters['maxM1Sellers'];\n }\n\n if (requestParameters['minM1BuyVolumeInUsd'] != null) {\n queryParameters['min_m1_buy_volume_in_usd'] = requestParameters['minM1BuyVolumeInUsd'];\n }\n\n if (requestParameters['maxM1BuyVolumeInUsd'] != null) {\n queryParameters['max_m1_buy_volume_in_usd'] = requestParameters['maxM1BuyVolumeInUsd'];\n }\n\n if (requestParameters['minM1SellVolumeInUsd'] != null) {\n queryParameters['min_m1_sell_volume_in_usd'] = requestParameters['minM1SellVolumeInUsd'];\n }\n\n if (requestParameters['maxM1SellVolumeInUsd'] != null) {\n queryParameters['max_m1_sell_volume_in_usd'] = requestParameters['maxM1SellVolumeInUsd'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/{chain}/list`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenListPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.GET_TOKEN_LIST.DESCRIPTION\n * CONTROLLER.TOKEN.GET_TOKEN_LIST.SUMMARY\n */\n async listToken(requestParameters: ListTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenListPage> {\n const response = await this.listTokenRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TOKEN.SEARCH.DESCRIPTION\n * CONTROLLER.TOKEN.SEARCH.SUMMARY\n */\n async searchRaw(requestParameters: SearchRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenPage>> {\n const queryParameters: any = {};\n\n if (requestParameters['chains'] != null) {\n queryParameters['chains'] = requestParameters['chains'];\n }\n\n if (requestParameters['q'] != null) {\n queryParameters['q'] = requestParameters['q'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['sort'] != null) {\n queryParameters['sort'] = requestParameters['sort'];\n }\n\n if (requestParameters['protocols'] != null) {\n queryParameters['protocols'] = requestParameters['protocols'];\n }\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['sortBy'] != null) {\n queryParameters['sortBy'] = requestParameters['sortBy'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/token/search`;\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TokenPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TOKEN.SEARCH.DESCRIPTION\n * CONTROLLER.TOKEN.SEARCH.SUMMARY\n */\n async search(requestParameters: SearchRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenPage> {\n const response = await this.searchRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n\n/**\n * @export\n */\nexport const GetHoldersDirectionEnum = {\n Next: 'next',\n Prev: 'prev'\n} as const;\nexport type GetHoldersDirectionEnum = typeof GetHoldersDirectionEnum[keyof typeof GetHoldersDirectionEnum];\n/**\n * @export\n */\nexport const GetMintAndBurnDirectionEnum = {\n Next: 'next',\n Prev: 'prev'\n} as const;\nexport type GetMintAndBurnDirectionEnum = typeof GetMintAndBurnDirectionEnum[keyof typeof GetMintAndBurnDirectionEnum];\n/**\n * @export\n */\nexport const GetMintAndBurnTypeEnum = {\n All: 'all',\n Mint: 'mint',\n Burn: 'burn'\n} as const;\nexport type GetMintAndBurnTypeEnum = typeof GetMintAndBurnTypeEnum[keyof typeof GetMintAndBurnTypeEnum];\n/**\n * @export\n */\nexport const GetPricesDirectionEnum = {\n Next: 'next',\n Prev: 'prev'\n} as const;\nexport type GetPricesDirectionEnum = typeof GetPricesDirectionEnum[keyof typeof GetPricesDirectionEnum];\n/**\n * @export\n */\nexport const GetTokensSortByEnum = {\n MarketDataPriceInUsd: 'marketData.priceInUsd',\n StatsPriceChangeRatioInUsd1m: 'stats.priceChangeRatioInUsd1m',\n StatsPriceChangeRatioInUsd5m: 'stats.priceChangeRatioInUsd5m',\n StatsPriceChangeRatioInUsd1h: 'stats.priceChangeRatioInUsd1h',\n StatsPriceChangeRatioInUsd4h: 'stats.priceChangeRatioInUsd4h',\n StatsPriceChangeRatioInUsd24h: 'stats.priceChangeRatioInUsd24h',\n MarketDataMarketCapInUsd: 'marketData.marketCapInUsd',\n MarketDataTvlInUsd: 'marketData.tvlInUsd',\n MarketDataTop10TotalHoldings: 'marketData.top10TotalHoldings',\n MarketDataTop10HoldingsRatio: 'marketData.top10HoldingsRatio',\n MarketDataTop100TotalHoldings: 'marketData.top100TotalHoldings',\n MarketDataTop100HoldingsRatio: 'marketData.top100HoldingsRatio',\n MarketDataHolders: 'marketData.holders',\n MarketDataCreatorHoldings: 'marketData.creatorHoldings',\n MarketDataCreatorHoldingsRatio: 'marketData.creatorHoldingsRatio',\n StatsBuys1m: 'stats.buys1m',\n StatsBuys5m: 'stats.buys5m',\n StatsBuys15m: 'stats.buys15m',\n StatsBuys30m: 'stats.buys30m',\n StatsBuys1h: 'stats.buys1h',\n StatsBuys4h: 'stats.buys4h',\n StatsBuys24h: 'stats.buys24h',\n StatsSells1m: 'stats.sells1m',\n StatsSells5m: 'stats.sells5m',\n StatsSells15m: 'stats.sells15m',\n StatsSells30m: 'stats.sells30m',\n StatsSells1h: 'stats.sells1h',\n StatsSells4h: 'stats.sells4h',\n StatsSells24h: 'stats.sells24h',\n StatsTrades1m: 'stats.trades1m',\n StatsTrades5m: 'stats.trades5m',\n StatsTrades1h: 'stats.trades1h',\n StatsTrades4h: 'stats.trades4h',\n StatsTrades24h: 'stats.trades24h',\n StatsTraders1m: 'stats.traders1m',\n StatsTraders5m: 'stats.traders5m',\n StatsTraders1h: 'stats.traders1h',\n StatsTraders4h: 'stats.traders4h',\n StatsTraders24h: 'stats.traders24h',\n StatsVolumesInUsd1m: 'stats.volumesInUsd1m',\n StatsVolumesInUsd5m: 'stats.volumesInUsd5m',\n StatsVolumesInUsd1h: 'stats.volumesInUsd1h',\n StatsVolumesInUsd4h: 'stats.volumesInUsd4h',\n StatsVolumesInUsd24h: 'stats.volumesInUsd24h',\n TokenCreatedAt: 'tokenCreatedAt'\n} as const;\nexport type GetTokensSortByEnum = typeof GetTokensSortByEnum[keyof typeof GetTokensSortByEnum];\n/**\n * @export\n */\nexport const GetTokensSortDirectionEnum = {\n Asc: 'ASC',\n Desc: 'DESC'\n} as const;\nexport type GetTokensSortDirectionEnum = typeof GetTokensSortDirectionEnum[keyof typeof GetTokensSortDirectionEnum];\n/**\n * @export\n */\nexport const ListTokenDirectionEnum = {\n Next: 'next',\n Prev: 'prev'\n} as const;\nexport type ListTokenDirectionEnum = typeof ListTokenDirectionEnum[keyof typeof ListTokenDirectionEnum];\n/**\n * @export\n */\nexport const ListTokenSortEnum = {\n Asc: 'asc',\n Desc: 'desc'\n} as const;\nexport type ListTokenSortEnum = typeof ListTokenSortEnum[keyof typeof ListTokenSortEnum];\n/**\n * @export\n */\nexport const ListTokenSortByEnum = {\n H24VolumeInUsd: 'h24VolumeInUsd',\n H24PriceChangeRatio: 'h24PriceChangeRatio',\n H24Buys: 'h24Buys',\n H24Sells: 'h24Sells',\n H24Trades: 'h24Trades',\n H24Buyers: 'h24Buyers',\n H24Sellers: 'h24Sellers',\n H24BuyVolumeInUsd: 'h24BuyVolumeInUsd',\n H24SellVolumeInUsd: 'h24SellVolumeInUsd',\n H4VolumeInUsd: 'h4VolumeInUsd',\n H4PriceChangeRatio: 'h4PriceChangeRatio',\n H4Buys: 'h4Buys',\n H4Sells: 'h4Sells',\n H4Trades: 'h4Trades',\n H4Buyers: 'h4Buyers',\n H4Sellers: 'h4Sellers',\n H4BuyVolumeInUsd: 'h4BuyVolumeInUsd',\n H4SellVolumeInUsd: 'h4SellVolumeInUsd',\n H1VolumeInUsd: 'h1VolumeInUsd',\n H1PriceChangeRatio: 'h1PriceChangeRatio',\n H1Buys: 'h1Buys',\n H1Sells: 'h1Sells',\n H1Trades: 'h1Trades',\n H1Buyers: 'h1Buyers',\n H1Sellers: 'h1Sellers',\n H1BuyVolumeInUsd: 'h1BuyVolumeInUsd',\n H1SellVolumeInUsd: 'h1SellVolumeInUsd',\n M30VolumeInUsd: 'm30VolumeInUsd',\n M30PriceChangeRatio: 'm30PriceChangeRatio',\n M30Buys: 'm30Buys',\n M30Sells: 'm30Sells',\n M30Trades: 'm30Trades',\n M30Buyers: 'm30Buyers',\n M30Sellers: 'm30Sellers',\n M30BuyVolumeInUsd: 'm30BuyVolumeInUsd',\n M30SellVolumeInUsd: 'm30SellVolumeInUsd',\n M15VolumeInUsd: 'm15VolumeInUsd',\n M15PriceChangeRatio: 'm15PriceChangeRatio',\n M15Buys: 'm15Buys',\n M15Sells: 'm15Sells',\n M15Trades: 'm15Trades',\n M15Buyers: 'm15Buyers',\n M15Sellers: 'm15Sellers',\n M15BuyVolumeInUsd: 'm15BuyVolumeInUsd',\n M15SellVolumeInUsd: 'm15SellVolumeInUsd',\n M5VolumeInUsd: 'm5VolumeInUsd',\n M5PriceChangeRatio: 'm5PriceChangeRatio',\n M5Buys: 'm5Buys',\n M5Sells: 'm5Sells',\n M5Trades: 'm5Trades',\n M5Buyers: 'm5Buyers',\n M5Sellers: 'm5Sellers',\n M5BuyVolumeInUsd: 'm5BuyVolumeInUsd',\n M5SellVolumeInUsd: 'm5SellVolumeInUsd',\n M1VolumeInUsd: 'm1VolumeInUsd',\n M1PriceChangeRatio: 'm1PriceChangeRatio',\n M1Buys: 'm1Buys',\n M1Sells: 'm1Sells',\n M1Trades: 'm1Trades',\n M1Buyers: 'm1Buyers',\n M1Sellers: 'm1Sellers',\n M1BuyVolumeInUsd: 'm1BuyVolumeInUsd',\n M1SellVolumeInUsd: 'm1SellVolumeInUsd'\n} as const;\nexport type ListTokenSortByEnum = typeof ListTokenSortByEnum[keyof typeof ListTokenSortByEnum];\n/**\n * @export\n */\nexport const SearchSortEnum = {\n Asc: 'asc',\n Desc: 'desc'\n} as const;\nexport type SearchSortEnum = typeof SearchSortEnum[keyof typeof SearchSortEnum];\n/**\n * @export\n */\nexport const SearchSortByEnum = {\n MarketCapInUsd: 'marketCapInUsd',\n LiquidityInUsd: 'liquidityInUsd',\n PriceInUsd: 'priceInUsd',\n HolderCount: 'holderCount',\n H24VolumeInUsd: 'h24VolumeInUsd',\n H24Transactions: 'h24Transactions',\n TokenCreatedAt: 'tokenCreatedAt'\n} as const;\nexport type SearchSortByEnum = typeof SearchSortByEnum[keyof typeof SearchSortByEnum];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ChainSymbol,\n GainersAndLosersPage,\n TopTradersPage,\n TradePage,\n} from '../models/index';\nimport {\n ChainSymbolFromJSON,\n ChainSymbolToJSON,\n GainersAndLosersPageFromJSON,\n GainersAndLosersPageToJSON,\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 GetGainersLosersRequest {\n chain: ChainSymbol;\n cursor?: string;\n limit?: number;\n direction?: GetGainersLosersDirectionEnum;\n type?: GetGainersLosersTypeEnum;\n sortBy?: GetGainersLosersSortByEnum;\n sortType?: GetGainersLosersSortTypeEnum;\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 * CONTROLLER.TRADE.GET.TOKEN_ACTIVITIES.DESCRIPTION\n * CONTROLLER.TRADE.GET.TOKEN_ACTIVITIES.SUMMARY\n */\n async getActivitiesRaw(requestParameters: GetActivitiesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TradePage>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getActivities().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['direction'] != null) {\n queryParameters['direction'] = requestParameters['direction'];\n }\n\n if (requestParameters['tokenAddress'] != null) {\n queryParameters['tokenAddress'] = requestParameters['tokenAddress'];\n }\n\n if (requestParameters['walletAddress'] != null) {\n queryParameters['walletAddress'] = requestParameters['walletAddress'];\n }\n\n if (requestParameters['poolAddress'] != null) {\n queryParameters['poolAddress'] = requestParameters['poolAddress'];\n }\n\n if (requestParameters['beforeTimestamp'] != null) {\n queryParameters['beforeTimestamp'] = requestParameters['beforeTimestamp'];\n }\n\n if (requestParameters['afterTimestamp'] != null) {\n queryParameters['afterTimestamp'] = requestParameters['afterTimestamp'];\n }\n\n if (requestParameters['beforeBlockHeight'] != null) {\n queryParameters['beforeBlockHeight'] = requestParameters['beforeBlockHeight'];\n }\n\n if (requestParameters['afterBlockHeight'] != null) {\n queryParameters['afterBlockHeight'] = requestParameters['afterBlockHeight'];\n }\n\n if (requestParameters['transactionsSignature'] != null) {\n queryParameters['transactionsSignature'] = requestParameters['transactionsSignature'];\n }\n\n if (requestParameters['type'] != null) {\n queryParameters['type'] = requestParameters['type'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/trade/{chain}/activities`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TradePageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TRADE.GET.TOKEN_ACTIVITIES.DESCRIPTION\n * CONTROLLER.TRADE.GET.TOKEN_ACTIVITIES.SUMMARY\n */\n async getActivities(requestParameters: GetActivitiesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TradePage> {\n const response = await this.getActivitiesRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TRADE.GET.GAINERS_LOSERS.DESCRIPTION\n * CONTROLLER.TRADE.GET.GAINERS_LOSERS.SUMMARY\n */\n async getGainersLosersRaw(requestParameters: GetGainersLosersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<GainersAndLosersPage>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getGainersLosers().'\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 if (requestParameters['sortBy'] != null) {\n queryParameters['sortBy'] = requestParameters['sortBy'];\n }\n\n if (requestParameters['sortType'] != null) {\n queryParameters['sortType'] = requestParameters['sortType'];\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}/gainers-losers`;\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) => GainersAndLosersPageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TRADE.GET.GAINERS_LOSERS.DESCRIPTION\n * CONTROLLER.TRADE.GET.GAINERS_LOSERS.SUMMARY\n */\n async getGainersLosers(requestParameters: GetGainersLosersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<GainersAndLosersPage> {\n const response = await this.getGainersLosersRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TRADE.GET.TOP_TRADERS.DESCRIPTION\n * CONTROLLER.TRADE.GET.TOP_TRADERS.SUMMARY\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 * CONTROLLER.TRADE.GET.TOP_TRADERS.DESCRIPTION\n * CONTROLLER.TRADE.GET.TOP_TRADERS.SUMMARY\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 * CONTROLLER.TRADE.GET.TOKEN.DESCRIPTION\n * CONTROLLER.TRADE.GET.TOKEN.SUMMARY\n */\n async getTradesRaw(requestParameters: GetTradesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TradePage>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getTrades().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['cursor'] != null) {\n queryParameters['cursor'] = requestParameters['cursor'];\n }\n\n if (requestParameters['limit'] != null) {\n queryParameters['limit'] = requestParameters['limit'];\n }\n\n if (requestParameters['direction'] != null) {\n queryParameters['direction'] = requestParameters['direction'];\n }\n\n if (requestParameters['tokenAddress'] != null) {\n queryParameters['tokenAddress'] = requestParameters['tokenAddress'];\n }\n\n if (requestParameters['walletAddress'] != null) {\n queryParameters['walletAddress'] = requestParameters['walletAddress'];\n }\n\n if (requestParameters['poolAddress'] != null) {\n queryParameters['poolAddress'] = requestParameters['poolAddress'];\n }\n\n if (requestParameters['beforeTimestamp'] != null) {\n queryParameters['beforeTimestamp'] = requestParameters['beforeTimestamp'];\n }\n\n if (requestParameters['afterTimestamp'] != null) {\n queryParameters['afterTimestamp'] = requestParameters['afterTimestamp'];\n }\n\n if (requestParameters['beforeBlockHeight'] != null) {\n queryParameters['beforeBlockHeight'] = requestParameters['beforeBlockHeight'];\n }\n\n if (requestParameters['afterBlockHeight'] != null) {\n queryParameters['afterBlockHeight'] = requestParameters['afterBlockHeight'];\n }\n\n if (requestParameters['transactionsSignature'] != null) {\n queryParameters['transactionsSignature'] = requestParameters['transactionsSignature'];\n }\n\n if (requestParameters['type'] != null) {\n queryParameters['type'] = requestParameters['type'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/trade/{chain}`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TradePageFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TRADE.GET.TOKEN.DESCRIPTION\n * CONTROLLER.TRADE.GET.TOKEN.SUMMARY\n */\n async getTrades(requestParameters: GetTradesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TradePage> {\n const response = await this.getTradesRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n\n/**\n * @export\n */\nexport const GetActivitiesDirectionEnum = {\n Next: 'next',\n Prev: 'prev'\n} as const;\nexport type GetActivitiesDirectionEnum = typeof GetActivitiesDirectionEnum[keyof typeof GetActivitiesDirectionEnum];\n/**\n * @export\n */\nexport const GetActivitiesTypeEnum = {\n Buy: 'BUY',\n Sell: 'SELL',\n LiquidityInitialize: 'LIQUIDITY_INITIALIZE',\n LiquidityAdd: 'LIQUIDITY_ADD',\n LiquidityRemove: 'LIQUIDITY_REMOVE',\n RedPacketCreate: 'RED_PACKET_CREATE',\n RedPacketClaim: 'RED_PACKET_CLAIM',\n RedPacketComplete: 'RED_PACKET_COMPLETE',\n RedPacketRefund: 'RED_PACKET_REFUND'\n} as const;\nexport type GetActivitiesTypeEnum = typeof GetActivitiesTypeEnum[keyof typeof GetActivitiesTypeEnum];\n/**\n * @export\n */\nexport const GetGainersLosersDirectionEnum = {\n Next: 'next',\n Prev: 'prev'\n} as const;\nexport type GetGainersLosersDirectionEnum = typeof GetGainersLosersDirectionEnum[keyof typeof GetGainersLosersDirectionEnum];\n/**\n * @export\n */\nexport const GetGainersLosersTypeEnum = {\n _1W: '1W',\n Today: 'today',\n Yesterday: 'yesterday'\n} as const;\nexport type GetGainersLosersTypeEnum = typeof GetGainersLosersTypeEnum[keyof typeof GetGainersLosersTypeEnum];\n/**\n * @export\n */\nexport const GetGainersLosersSortByEnum = {\n PnL: 'PnL'\n} as const;\nexport type GetGainersLosersSortByEnum = typeof GetGainersLosersSortByEnum[keyof typeof GetGainersLosersSortByEnum];\n/**\n * @export\n */\nexport const GetGainersLosersSortTypeEnum = {\n Desc: 'desc',\n Asc: 'asc'\n} as const;\nexport type GetGainersLosersSortTypeEnum = typeof GetGainersLosersSortTypeEnum[keyof typeof GetGainersLosersSortTypeEnum];\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 Volume: 'volume',\n Trade: 'trade'\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 * CONTROLLER.TRANSACTION.ESTIMATE_GAS_LIMIT.DESCRIPTION\n * CONTROLLER.TRANSACTION.ESTIMATE_GAS_LIMIT.SUMMARY\n */\n async estimateGasLimitRaw(requestParameters: EstimateGasLimitRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<EstimateGasLimitResponse>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling estimateGasLimit().'\n );\n }\n\n if (requestParameters['estimateGasLimitInput'] == null) {\n throw new runtime.RequiredError(\n 'estimateGasLimitInput',\n 'Required parameter \"estimateGasLimitInput\" was null or undefined when calling estimateGasLimit().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/transaction/{chain}/estimate-gas-limit`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: EstimateGasLimitInputToJSON(requestParameters['estimateGasLimitInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => EstimateGasLimitResponseFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TRANSACTION.ESTIMATE_GAS_LIMIT.DESCRIPTION\n * CONTROLLER.TRANSACTION.ESTIMATE_GAS_LIMIT.SUMMARY\n */\n async estimateGasLimit(requestParameters: EstimateGasLimitRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<EstimateGasLimitResponse> {\n const response = await this.estimateGasLimitRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TRANSACTION.GET_GAS_PRICE.DESCRIPTION\n * CONTROLLER.TRANSACTION.GET_GAS_PRICE.SUMMARY\n */\n async getGasPriceRaw(requestParameters: GetGasPriceRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<GasPriceResponse>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getGasPrice().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/transaction/{chain}/gas-price`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => GasPriceResponseFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TRANSACTION.GET_GAS_PRICE.DESCRIPTION\n * CONTROLLER.TRANSACTION.GET_GAS_PRICE.SUMMARY\n */\n async getGasPrice(requestParameters: GetGasPriceRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<GasPriceResponse> {\n const response = await this.getGasPriceRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.TRANSACTION.SEND.DESCRIPTION\n * CONTROLLER.TRANSACTION.SEND.SUMMARY\n */\n async sendRaw(requestParameters: SendRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SendTxResponse>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling send().'\n );\n }\n\n if (requestParameters['sendTxInput'] == null) {\n throw new runtime.RequiredError(\n 'sendTxInput',\n 'Required parameter \"sendTxInput\" was null or undefined when calling send().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/transaction/{chain}/send`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: SendTxInputToJSON(requestParameters['sendTxInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => SendTxResponseFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.TRANSACTION.SEND.DESCRIPTION\n * CONTROLLER.TRANSACTION.SEND.SUMMARY\n */\n async send(requestParameters: SendRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SendTxResponse> {\n const response = await this.sendRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n\n/**\n * @export\n */\nexport const EstimateGasLimitChainEnum = {\n Base: 'base',\n Bsc: 'bsc',\n Polygon: 'polygon',\n Arbitrum: 'arbitrum',\n Optimism: 'optimism',\n Avalanche: 'avalanche',\n Eth: 'eth',\n Zksync: 'zksync'\n} as const;\nexport type EstimateGasLimitChainEnum = typeof EstimateGasLimitChainEnum[keyof typeof EstimateGasLimitChainEnum];\n/**\n * @export\n */\nexport const GetGasPriceChainEnum = {\n Base: 'base',\n Bsc: 'bsc',\n Polygon: 'polygon',\n Arbitrum: 'arbitrum',\n Optimism: 'optimism',\n Avalanche: 'avalanche',\n Eth: 'eth',\n Zksync: 'zksync'\n} as const;\nexport type GetGasPriceChainEnum = typeof GetGasPriceChainEnum[keyof typeof GetGasPriceChainEnum];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n BooleanResultDTO,\n CalculatePnlInput,\n ChainSymbol,\n WalletBalancesDTO,\n WalletPnlDTO,\n} from '../models/index';\nimport {\n BooleanResultDTOFromJSON,\n BooleanResultDTOToJSON,\n CalculatePnlInputFromJSON,\n CalculatePnlInputToJSON,\n ChainSymbolFromJSON,\n ChainSymbolToJSON,\n WalletBalancesDTOFromJSON,\n WalletBalancesDTOToJSON,\n WalletPnlDTOFromJSON,\n WalletPnlDTOToJSON,\n} from '../models/index';\n\nexport interface CalculatePnlRequest {\n chain: ChainSymbol;\n walletAddress: string;\n calculatePnlInput: CalculatePnlInput;\n}\n\nexport interface GetBalanceRequest {\n chain: ChainSymbol;\n walletAddress: string;\n tokenAddress?: string;\n}\n\nexport interface GetPnlRequest {\n chain: ChainSymbol;\n walletAddress: string;\n tokenAddress?: string;\n}\n\nexport interface GetPnlStatsRequest {\n chain: ChainSymbol;\n walletAddress: string;\n}\n\n/**\n * \n */\nexport class WalletApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.WALLET.CALCULATE_PNL.DESCRIPTION\n * CONTROLLER.WALLET.CALCULATE_PNL.SUMMARY\n */\n async calculatePnlRaw(requestParameters: CalculatePnlRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<BooleanResultDTO>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling calculatePnl().'\n );\n }\n\n if (requestParameters['walletAddress'] == null) {\n throw new runtime.RequiredError(\n 'walletAddress',\n 'Required parameter \"walletAddress\" was null or undefined when calling calculatePnl().'\n );\n }\n\n if (requestParameters['calculatePnlInput'] == null) {\n throw new runtime.RequiredError(\n 'calculatePnlInput',\n 'Required parameter \"calculatePnlInput\" was null or undefined when calling calculatePnl().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/wallet/{chain}/{walletAddress}/calculate-pnl`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"walletAddress\"}}`, encodeURIComponent(String(requestParameters['walletAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: CalculatePnlInputToJSON(requestParameters['calculatePnlInput']),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => BooleanResultDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.WALLET.CALCULATE_PNL.DESCRIPTION\n * CONTROLLER.WALLET.CALCULATE_PNL.SUMMARY\n */\n async calculatePnl(requestParameters: CalculatePnlRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<BooleanResultDTO> {\n const response = await this.calculatePnlRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.WALLET.GET_BALANCES.DESCRIPTION\n * CONTROLLER.WALLET.GET_BALANCES.SUMMARY\n */\n async getBalanceRaw(requestParameters: GetBalanceRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<WalletBalancesDTO>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getBalance().'\n );\n }\n\n if (requestParameters['walletAddress'] == null) {\n throw new runtime.RequiredError(\n 'walletAddress',\n 'Required parameter \"walletAddress\" was null or undefined when calling getBalance().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['tokenAddress'] != null) {\n queryParameters['tokenAddress'] = requestParameters['tokenAddress'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/wallet/{chain}/{walletAddress}/balance`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"walletAddress\"}}`, encodeURIComponent(String(requestParameters['walletAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => WalletBalancesDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.WALLET.GET_BALANCES.DESCRIPTION\n * CONTROLLER.WALLET.GET_BALANCES.SUMMARY\n */\n async getBalance(requestParameters: GetBalanceRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<WalletBalancesDTO> {\n const response = await this.getBalanceRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.WALLET.GET_PNL.DESCRIPTION\n * CONTROLLER.WALLET.GET_PNL.SUMMARY\n */\n async getPnlRaw(requestParameters: GetPnlRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<WalletPnlDTO>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getPnl().'\n );\n }\n\n if (requestParameters['walletAddress'] == null) {\n throw new runtime.RequiredError(\n 'walletAddress',\n 'Required parameter \"walletAddress\" was null or undefined when calling getPnl().'\n );\n }\n\n const queryParameters: any = {};\n\n if (requestParameters['tokenAddress'] != null) {\n queryParameters['tokenAddress'] = requestParameters['tokenAddress'];\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/wallet/{chain}/{walletAddress}`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"walletAddress\"}}`, encodeURIComponent(String(requestParameters['walletAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(WalletPnlDTOFromJSON));\n }\n\n /**\n * CONTROLLER.WALLET.GET_PNL.DESCRIPTION\n * CONTROLLER.WALLET.GET_PNL.SUMMARY\n */\n async getPnl(requestParameters: GetPnlRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<WalletPnlDTO>> {\n const response = await this.getPnlRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * CONTROLLER.WALLET.GET_PNL_STATS.DESCRIPTION\n * CONTROLLER.WALLET.GET_PNL_STATS.SUMMARY\n */\n async getPnlStatsRaw(requestParameters: GetPnlStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<WalletPnlDTO>>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling getPnlStats().'\n );\n }\n\n if (requestParameters['walletAddress'] == null) {\n throw new runtime.RequiredError(\n 'walletAddress',\n 'Required parameter \"walletAddress\" was null or undefined when calling getPnlStats().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/wallet/{chain}/{walletAddress}/stats`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"walletAddress\"}}`, encodeURIComponent(String(requestParameters['walletAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(WalletPnlDTOFromJSON));\n }\n\n /**\n * CONTROLLER.WALLET.GET_PNL_STATS.DESCRIPTION\n * CONTROLLER.WALLET.GET_PNL_STATS.SUMMARY\n */\n async getPnlStats(requestParameters: GetPnlStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<WalletPnlDTO>> {\n const response = await this.getPnlStatsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n *\n * The version of the OpenAPI document: 1.0\n * Contact: ai@sx.ai\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n BooleanResultDTO,\n ChainSymbol,\n} from '../models/index';\nimport {\n BooleanResultDTOFromJSON,\n BooleanResultDTOToJSON,\n ChainSymbolFromJSON,\n ChainSymbolToJSON,\n} from '../models/index';\n\nexport interface WatchlistAddRequest {\n chain: ChainSymbol;\n walletAddress: string;\n}\n\n/**\n * \n */\nexport class WatchlistApi extends runtime.BaseAPI {\n\n /**\n * CONTROLLER.WATCHLIST.ADD.DESCRIPTION\n * CONTROLLER.WATCHLIST.ADD.SUMMARY\n */\n async watchlistAddRaw(requestParameters: WatchlistAddRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<BooleanResultDTO>> {\n if (requestParameters['chain'] == null) {\n throw new runtime.RequiredError(\n 'chain',\n 'Required parameter \"chain\" was null or undefined when calling watchlistAdd().'\n );\n }\n\n if (requestParameters['walletAddress'] == null) {\n throw new runtime.RequiredError(\n 'walletAddress',\n 'Required parameter \"walletAddress\" was null or undefined when calling watchlistAdd().'\n );\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n if (this.configuration && this.configuration.accessToken) {\n const token = this.configuration.accessToken;\n const tokenString = await token(\"bearer\", []);\n\n if (tokenString) {\n headerParameters[\"Authorization\"] = `Bearer ${tokenString}`;\n }\n }\n\n let urlPath = `/v1/watchlist/{chain}/{walletAddress}`;\n urlPath = urlPath.replace(`{${\"chain\"}}`, encodeURIComponent(String(requestParameters['chain'])));\n urlPath = urlPath.replace(`{${\"walletAddress\"}}`, encodeURIComponent(String(requestParameters['walletAddress'])));\n\n const response = await this.request({\n path: urlPath,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => BooleanResultDTOFromJSON(jsonValue));\n }\n\n /**\n * CONTROLLER.WATCHLIST.ADD.DESCRIPTION\n * CONTROLLER.WATCHLIST.ADD.SUMMARY\n */\n async watchlistAdd(requestParameters: WatchlistAddRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<BooleanResultDTO> {\n const response = await this.watchlistAddRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","import { StreamApi } from \"./stream\";\nimport {\n DexApi,\n Configuration,\n TransactionApi,\n DefiSolanaMoonshotApi,\n DefiSolanaPumpfunApi,\n DexPoolApi,\n TokenApi,\n RankingApi,\n TradeApi,\n WalletApi,\n RedPacketApi,\n IpfsApi,\n WatchlistApi,\n BlockchainApi,\n JobsApi,\n 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\nexport const LIB_VERSION = \"0.1.5\";\n\nclass UserAgentMiddleware implements Middleware {\n public async pre(context: RequestContext): Promise<void> {\n if (!context.init.headers) {\n context.init.headers = {};\n }\n\n if (context.init.headers instanceof Headers) {\n context.init.headers.set(\"User-Agent\", `dex/${LIB_VERSION}/javascript`);\n } else {\n (context.init.headers as any)[\n \"User-Agent\"\n ] = `dex/${LIB_VERSION}/javascript`;\n }\n }\n\n public async post(context: ResponseContext): Promise<void> {}\n}\n\nexport class DexClient {\n public readonly requestCtx: DexRequestContext;\n public readonly _configuration: Configuration;\n public readonly dex: DexApi;\n public readonly dexpool: DexPoolApi;\n public readonly token: TokenApi;\n public readonly wallet: WalletApi;\n public readonly trade: TradeApi;\n public readonly ranking: RankingApi;\n public readonly transaction: TransactionApi;\n public readonly moonshot: DefiSolanaMoonshotApi;\n public readonly pumpfun: DefiSolanaPumpfunApi;\n public readonly stream: StreamApi;\n public readonly redPacket: RedPacketApi;\n public readonly ipfs: IpfsApi;\n public readonly blockchain: BlockchainApi;\n public readonly watchlist: WatchlistApi;\n public readonly jobs: JobsApi;\n public 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 const tokenProvider =\n typeof accessToken === \"string\"\n ? {\n getToken: () => accessToken,\n }\n : accessToken;\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.stream.connect();\n }\n\n async waitForJob<T>(jobId: string, timeout = 60000): Promise<T> {\n const accessToken =\n typeof this.requestCtx.accessToken === \"string\"\n ? this.requestCtx.accessToken\n : await this.requestCtx.accessToken.getToken();\n\n return new Promise((resolve, reject) => {\n const sse = new EventSourcePolyfill(\n `${this.requestCtx.baseUrl}/jobs/${jobId}/streaming`,\n {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n }\n );\n\n const timeoutId = setTimeout(() => {\n sse.close();\n reject(new Error(`Job ${jobId} timed out after ${timeout}ms`));\n }, timeout);\n\n sse.onmessage = (event: any) => {\n try {\n console.log(\"event.data: \", event.data);\n const data = JSON.parse(event.data);\n\n if (data.status === \"error\") {\n sse.close();\n reject(new Error(`Error: ${data.message}`));\n } else if (data.status === \"completed\") {\n clearTimeout(timeoutId);\n sse.close();\n resolve(data as T);\n }\n } catch (e) {\n clearTimeout(timeoutId);\n sse.close();\n reject(new Error(\"Error parsing event data\"));\n }\n };\n\n sse.onopen = () => {\n console.log(\"SSE connection opened\");\n };\n\n sse.onerror = (error: any) => {\n if (error.message?.includes(\"No activity within\")) {\n console.log(\"SSE reconnecting due to inactivity...\");\n return;\n }\n\n clearTimeout(timeoutId);\n\n sse.close();\n reject(new Error(`Error in SSE connection: ${error}`));\n };\n });\n }\n}\n\nexport interface PostOptions {\n idempotencyKey?: string;\n}\n"],"mappings":"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","names":[]}