@chainstream-io/sdk 0.2.3 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chainstream-BYuhgvxX.d.cts → chainstream-BD-x5_ck.d.cts} +33 -2
- package/dist/{chainstream-BYuhgvxX.d.ts → chainstream-BD-x5_ck.d.ts} +33 -2
- package/dist/chainstream.cjs +1 -1
- package/dist/chainstream.cjs.map +1 -1
- package/dist/chainstream.d.cts +1 -1
- package/dist/chainstream.d.ts +1 -1
- package/dist/chainstream.mjs +1 -1
- package/dist/chainstream.mjs.map +1 -1
- package/dist/index.cjs +7 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.mjs +6 -1
- package/dist/index.mjs.map +1 -1
- package/dist/stream/index.d.cts +1 -1
- package/dist/stream/index.d.ts +1 -1
- package/package.json +1 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/chainstream.ts","../src/openapi-client/chainstreamApiClient.ts","../src/stream/stream.ts","../src/stream/stream.fields.ts","../src/stream/stream.model.ts","../src/openapi-client/generated/blockchain/blockchain.ts","../src/openapi-client/generated/defi-sol-moonshot/defi-sol-moonshot.ts","../src/openapi-client/generated/defi-sol-pumpfun/defi-sol-pumpfun.ts","../src/openapi-client/generated/dex-pool/dex-pool.ts","../src/openapi-client/generated/dex/dex.ts","../src/openapi-client/generated/endpoint/endpoint.ts","../src/openapi-client/generated/ipfs/ipfs.ts","../src/openapi-client/generated/jobs/jobs.ts","../src/openapi-client/generated/kyt/kyt.ts","../src/openapi-client/generated/ranking/ranking.ts","../src/openapi-client/generated/red-packet/red-packet.ts","../src/openapi-client/generated/token/token.ts","../src/openapi-client/generated/trade/trade.ts","../src/openapi-client/generated/transaction/transaction.ts","../src/openapi-client/generated/wallet/wallet.ts","../src/openapi-client/generated/watchlist/watchlist.ts","../src/openapi-client/generated/dexAggregatorAPI.schemas.ts"],"sourcesContent":["import { EventSourcePolyfill } from \"event-source-polyfill\";\nimport { configure } from \"./openapi-client/chainstreamApiClient.js\";\nimport { StreamApi } from \"./stream/index.js\";\n\n// Import all API modules\nimport * as blockchainApi from \"./openapi-client/generated/blockchain/blockchain.js\";\nimport * as moonshotApi from \"./openapi-client/generated/defi-sol-moonshot/defi-sol-moonshot.js\";\nimport * as pumpfunApi from \"./openapi-client/generated/defi-sol-pumpfun/defi-sol-pumpfun.js\";\nimport * as dexPoolApi from \"./openapi-client/generated/dex-pool/dex-pool.js\";\nimport * as dexApi from \"./openapi-client/generated/dex/dex.js\";\nimport * as endpointApi from \"./openapi-client/generated/endpoint/endpoint.js\";\nimport * as ipfsApi from \"./openapi-client/generated/ipfs/ipfs.js\";\nimport * as jobsApi from \"./openapi-client/generated/jobs/jobs.js\";\nimport * as kytApi from \"./openapi-client/generated/kyt/kyt.js\";\nimport * as rankingApi from \"./openapi-client/generated/ranking/ranking.js\";\nimport * as redPacketApi from \"./openapi-client/generated/red-packet/red-packet.js\";\nimport * as tokenApi from \"./openapi-client/generated/token/token.js\";\nimport * as tradeApi from \"./openapi-client/generated/trade/trade.js\";\nimport * as transactionApi from \"./openapi-client/generated/transaction/transaction.js\";\nimport * as walletApi from \"./openapi-client/generated/wallet/wallet.js\";\nimport * as watchlistApi from \"./openapi-client/generated/watchlist/watchlist.js\";\n\nexport interface TokenProvider {\n getToken(): Promise<string> | string;\n}\n\nexport interface ChainStreamRequestContext {\n baseUrl: string;\n streamUrl: string;\n accessToken: string | TokenProvider;\n}\n\nexport interface ChainStreamClientOptions {\n debug?: boolean;\n serverUrl?: string;\n streamUrl?: string;\n /**\n * Whether to automatically connect to WebSocket on initialization.\n * Default: false\n *\n * If set to true, WebSocket will connect automatically.\n * If false or not set, you need to manually call `client.stream.connect()` when needed.\n */\n autoConnectWebSocket?: boolean;\n}\n\nexport class ChainStreamClient {\n public readonly requestCtx: ChainStreamRequestContext;\n\n // WebSocket streaming client\n public readonly stream: StreamApi;\n\n // REST API modules\n public readonly token: typeof tokenApi;\n public readonly dex: typeof dexApi;\n public readonly dexpool: typeof dexPoolApi;\n public readonly trade: typeof tradeApi;\n public readonly ranking: typeof rankingApi;\n public readonly transaction: typeof transactionApi;\n public readonly moonshot: typeof moonshotApi;\n public readonly pumpfun: typeof pumpfunApi;\n public readonly wallet: typeof walletApi;\n public readonly redPacket: typeof redPacketApi;\n public readonly ipfs: typeof ipfsApi;\n public readonly blockchain: typeof blockchainApi;\n public readonly watchlist: typeof watchlistApi;\n public readonly jobs: typeof jobsApi;\n public readonly kyt: typeof kytApi;\n public readonly endpoint: typeof endpointApi;\n\n public constructor(accessToken: string | TokenProvider, options: ChainStreamClientOptions = {}) {\n const baseUrl: string = options.serverUrl ?? \"https://api-dex.chainstream.io\";\n const streamUrl: string =\n options.streamUrl ?? \"wss://realtime-dex.chainstream.io/connection/websocket\";\n\n this.requestCtx = { baseUrl, streamUrl, accessToken };\n\n // Configure the API client with authentication\n configure({\n accessToken,\n basePath: baseUrl,\n debugging: options.debug,\n });\n\n // Assign API modules\n this.token = tokenApi;\n this.dex = dexApi;\n this.dexpool = dexPoolApi;\n this.trade = tradeApi;\n this.ranking = rankingApi;\n this.transaction = transactionApi;\n this.moonshot = moonshotApi;\n this.pumpfun = pumpfunApi;\n this.wallet = walletApi;\n this.redPacket = redPacketApi;\n this.ipfs = ipfsApi;\n this.blockchain = blockchainApi;\n this.watchlist = watchlistApi;\n this.jobs = jobsApi;\n this.kyt = kytApi;\n this.endpoint = endpointApi;\n\n // Initialize WebSocket streaming client\n this.stream = new StreamApi(this.requestCtx);\n\n // Only auto-connect WebSocket if explicitly enabled\n if (options.autoConnectWebSocket === true) {\n this.stream.connect();\n }\n }\n\n /**\n * Wait for a job to complete using Server-Sent Events (SSE)\n * @param jobId - The job ID to wait for\n * @param timeout - Timeout in milliseconds (default: 60000)\n * @returns Promise that resolves with the job result\n */\n async waitForJob<T>(jobId: string, timeout = 60000): Promise<T> {\n const accessToken =\n typeof this.requestCtx.accessToken === \"string\"\n ? this.requestCtx.accessToken\n : await this.requestCtx.accessToken.getToken();\n\n return new Promise((resolve, reject) => {\n const sse = new EventSourcePolyfill(`${this.requestCtx.baseUrl}/jobs/${jobId}/streaming`, {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n });\n\n const timeoutId = setTimeout(() => {\n sse.close();\n reject(new Error(`Job ${jobId} timed out after ${timeout}ms`));\n }, timeout);\n\n sse.onmessage = event => {\n try {\n console.log(\"event.data: \", event.data);\n const data = JSON.parse(event.data as string);\n\n if (data.status === \"error\") {\n sse.close();\n reject(new Error(`Error: ${data.message}`));\n } else if (data.status === \"completed\") {\n clearTimeout(timeoutId);\n sse.close();\n resolve(data as T);\n }\n } catch {\n clearTimeout(timeoutId);\n sse.close();\n reject(new Error(\"Error parsing event data\"));\n }\n };\n\n sse.onopen = () => {\n console.log(\"SSE connection opened\");\n };\n\n sse.onerror = error => {\n const errorEvent = error as Event & { message?: string };\n if (errorEvent.message?.includes(\"No activity within\")) {\n console.log(\"SSE reconnecting due to inactivity...\");\n return;\n }\n\n clearTimeout(timeoutId);\n sse.close();\n reject(new Error(`Error in SSE connection: ${error}`));\n };\n });\n }\n}\n\nexport interface PostOptions {\n idempotencyKey?: string;\n}\n","import Axios, { AxiosInstance, AxiosRequestConfig } from \"axios\";\nimport axiosRetry, { exponentialDelay } from \"axios-retry\";\n\nimport type { TokenProvider } from \"../chainstream.js\";\n\n/**\n * The options for the ChainStream API client.\n */\nexport type ChainStreamApiOptions = {\n /**\n * The access token for authentication.\n * Can be a string or a TokenProvider that dynamically provides tokens.\n */\n accessToken: string | TokenProvider;\n\n /** The base path for the API. Defaults to https://api-dex.chainstream.io */\n basePath?: string;\n\n /** If true, logs API requests and responses to the console. */\n debugging?: boolean;\n\n /** The source for the API request, used for analytics. */\n source?: string;\n\n /** The version of the source for the API request, used for analytics. */\n sourceVersion?: string;\n};\n\nlet axiosInstance: AxiosInstance;\nlet currentOptions: ChainStreamApiOptions | undefined = undefined;\n\n/**\n * Configures the ChainStream API client with the given options.\n *\n * @param {ChainStreamApiOptions} options - The ChainStream API options.\n */\nexport const configure = (options: ChainStreamApiOptions) => {\n const baseURL = options.basePath || \"https://api-dex.chainstream.io\";\n\n currentOptions = {\n ...options,\n basePath: baseURL,\n };\n\n axiosInstance = Axios.create({\n baseURL,\n });\n\n axiosRetry(axiosInstance, {\n retryDelay: exponentialDelay,\n });\n\n // Add request interceptor for authentication\n axiosInstance.interceptors.request.use(async config => {\n const token =\n typeof options.accessToken === \"string\"\n ? options.accessToken\n : await options.accessToken.getToken();\n\n config.headers.Authorization = `Bearer ${token}`;\n config.headers[\"Content-Type\"] = \"application/json\";\n\n if (options.source) {\n config.headers[\"X-Source\"] = options.source;\n }\n if (options.sourceVersion) {\n config.headers[\"X-Source-Version\"] = options.sourceVersion;\n }\n\n if (options.debugging) {\n console.log(`[ChainStream API] ${config.method?.toUpperCase()} ${config.url}`);\n }\n\n return config;\n });\n\n // Add response interceptor for debugging\n if (options.debugging) {\n axiosInstance.interceptors.response.use(\n response => {\n console.log(`[ChainStream API] Response:`, response.status, response.data);\n return response;\n },\n error => {\n console.error(`[ChainStream API] Error:`, error.response?.status, error.response?.data);\n return Promise.reject(error);\n },\n );\n }\n};\n\n/**\n * Adds an idempotency key to request config if provided\n *\n * @param config - The Axios request configuration.\n * @param idempotencyKey - The idempotency key.\n * @returns The Axios request configuration with the idempotency key.\n */\nconst addIdempotencyKey = (\n config: AxiosRequestConfig,\n idempotencyKey?: string,\n): AxiosRequestConfig => {\n if (!idempotencyKey) {\n return config;\n }\n\n return {\n ...config,\n headers: {\n ...(config.headers || {}),\n \"X-Idempotency-Key\": idempotencyKey,\n },\n };\n};\n\n/**\n * The ChainStream API client function that handles authentication and error handling.\n *\n * @param {AxiosRequestConfig} config - The Axios request configuration.\n * @param idempotencyKey - Optional idempotency key.\n * @returns {Promise<T>} A promise that resolves to the response data.\n * @throws {Error} If the request fails.\n */\nexport const chainstreamApiClient = async <T>(\n config: AxiosRequestConfig,\n idempotencyKey?: string,\n): Promise<T> => {\n if (!axiosInstance) {\n throw new Error(\"ChainStream API client not configured. Call configure() first.\");\n }\n\n if (!config.url || config.url === \"\") {\n throw new Error(\"AxiosRequestConfig URL is empty.\");\n }\n\n if (!config.method || config.method === \"\") {\n throw new Error(\"AxiosRequestConfig method is empty.\");\n }\n\n // Add idempotency key to the request headers if provided\n const configWithIdempotencyKey = addIdempotencyKey(config, idempotencyKey);\n\n try {\n const response = await axiosInstance(configWithIdempotencyKey);\n return response.data as T;\n } catch (error) {\n // eslint-disable-next-line import/no-named-as-default-member\n if (Axios.isAxiosError(error) && error.response) {\n const statusCode = error.response.status;\n const responseData = error.response.data;\n\n throw new Error(\n `ChainStream API error (${statusCode}): ${\n typeof responseData === \"string\" ? responseData : JSON.stringify(responseData)\n }`,\n );\n }\n\n throw error;\n }\n};\n\n/**\n * Get the current configuration\n */\nexport const getConfig = () => currentOptions;\n","import { Centrifuge, ConnectionTokenContext } from \"@chainstream-io/centrifuge\";\nimport { ChainStreamRequestContext } from \"../chainstream.js\";\nimport { Resolution } from \"../openapi-client/index.js\";\nimport {\n WsDexPoolBalance,\n WsNewToken,\n WsTokenMetadata,\n WsTokenHolder,\n WsTokenStat,\n WsTokenLiquidity,\n WsTokenMaxLiquidity,\n WsTokenTotalLiquidity,\n WsWalletBalance,\n WsTokenSupply,\n WsWalletPnl,\n WsChannelType,\n WsTokenCandle,\n WsTradeActivity,\n WsWalletTokenPnl,\n WsRankingType,\n WsDex,\n WsRankingTokenList,\n WsTokenBondingCurve,\n} from \"./stream.model.js\";\nimport { replaceFilterFields } from \"./stream.fields.js\";\n\nexport interface Unsubscribable {\n unsubscribe(): void;\n}\n\nexport class StreamApi {\n private realtimeClient!: Centrifuge;\n private listenersMap: Map<string, Set<(data: unknown) => void>>;\n private context: ChainStreamRequestContext;\n private initPromise: Promise<void> | null = null;\n\n constructor(context: ChainStreamRequestContext) {\n this.context = context;\n this.listenersMap = new Map();\n }\n\n /**\n * Initialize Centrifuge client with current token\n * This is called lazily when connect() is called\n */\n private async initClient(): Promise<void> {\n if (this.realtimeClient) {\n return;\n }\n\n // Get initial token for URL\n const token = await this.getTokenValue();\n const realtimeEndpoint = this.buildWsUrl(this.context.streamUrl, token);\n\n this.realtimeClient = new Centrifuge(realtimeEndpoint, {\n getToken: async (_ctx: ConnectionTokenContext) => {\n return this.getTokenValue();\n },\n });\n\n this.realtimeClient\n .on(\"connected\", () => {\n console.log(\"[streaming] connected\");\n })\n .on(\"disconnected\", ctx => {\n console.warn(\"[streaming] disconnected\", ctx);\n })\n .on(\"error\", err => {\n console.error(\"[streaming] error: \", err);\n });\n }\n\n /**\n * Wait for initialization to complete\n * If not initialized, auto-connect first\n */\n private async ensureInitialized(): Promise<void> {\n if (!this.initPromise) {\n // Auto-connect if not initialized\n this.connect();\n }\n await this.initPromise;\n }\n\n /**\n * Get token value from string or TokenProvider\n */\n private async getTokenValue(): Promise<string> {\n return typeof this.context.accessToken === \"string\"\n ? this.context.accessToken\n : await this.context.accessToken.getToken();\n }\n\n /**\n * Build WebSocket URL with token as query parameter\n */\n private buildWsUrl(endpoint: string, token: string): string {\n const url = new URL(endpoint);\n url.searchParams.set(\"token\", token);\n return url.toString();\n }\n\n /**\n * Connect to the WebSocket server.\n * This is automatically called when you use subscribe methods if not already connected.\n * You can also call this method manually for explicit control.\n */\n connect(): void {\n // Start initialization and store the promise\n this.initPromise = this.initClient().then(() => {\n this.realtimeClient.connect();\n });\n }\n\n /**\n * Disconnect from the WebSocket server.\n * All subscriptions will be automatically removed.\n */\n disconnect(): void {\n if (this.realtimeClient) {\n this.realtimeClient.disconnect();\n }\n }\n\n /**\n * Check if the WebSocket is currently connected.\n */\n isConnected(): boolean {\n return this.realtimeClient?.state === \"connected\";\n }\n\n /**\n * Start batching commands for efficient bulk operations\n * All subscription commands after this call will be batched until stopBatching is called\n */\n startBatching(): void {\n if (this.realtimeClient) {\n this.realtimeClient.startBatching();\n }\n }\n\n /**\n * Stop batching and flush all collected commands to the server\n * This will send all batched subscription commands in a single network request\n */\n stopBatching(): void {\n if (this.realtimeClient) {\n this.realtimeClient.stopBatching();\n }\n }\n\n /**\n * Batch subscribe method that accepts a function containing subscription calls\n * All subscription methods called within the function will be batched\n * @param batchFunction Function containing subscription method calls\n * @returns Array of unsubscribe functions\n */\n batchSubscribe(batchFunction: () => Unsubscribable[]): Unsubscribable[] {\n // Start batching commands\n this.startBatching();\n\n // Execute the batch function (all subscription calls will be batched)\n const unsubscribables = batchFunction();\n\n // Stop batching and flush all commands\n this.stopBatching();\n\n return unsubscribables;\n }\n\n /**\n * Batch unsubscribe method that accepts an array of unsubscribe functions\n * All unsubscribe calls will be executed at once\n * @param unsubscribables Array of unsubscribe functions to execute\n */\n batchUnsubscribe(unsubscribables: Unsubscribable[]): void {\n if (!unsubscribables || unsubscribables.length === 0) {\n return;\n }\n\n // Execute all unsubscribe calls\n unsubscribables.forEach(unsub => {\n if (unsub && typeof unsub.unsubscribe === \"function\") {\n unsub.unsubscribe();\n }\n });\n }\n\n subscribe<T = unknown>(\n channel: string,\n fn: (data: T) => void,\n filter?: string,\n methodName?: string,\n ): Unsubscribable {\n // Add listener immediately\n let listeners = this.listenersMap.get(channel);\n if (!listeners) {\n listeners = new Set();\n this.listenersMap.set(channel, listeners);\n }\n listeners.add(fn as (data: unknown) => void);\n\n // Perform subscription after initialization is complete\n this.ensureInitialized().then(() => {\n let sub = this.realtimeClient.getSubscription(channel);\n\n if (!sub) {\n console.log(\"[xrealtime] create new sub: \", channel);\n\n // Process filter expression with method-specific field mappings\n const processedFilter =\n filter && methodName ? replaceFilterFields(filter, methodName) : filter;\n\n sub = this.realtimeClient.newSubscription(channel, {\n delta: \"fossil\",\n ...(processedFilter && { filter: processedFilter }),\n });\n\n sub\n .on(\"subscribed\", () => {\n console.log(\"[xrealtime] subscribed\", channel);\n })\n .on(\"unsubscribed\", () => {\n console.log(\"[xrealtime] unsubscribed\", channel);\n })\n .on(\"publication\", ctx => {\n const currentListeners = this.listenersMap.get(channel);\n currentListeners?.forEach(it => it(ctx.data));\n })\n .subscribe();\n }\n });\n\n return new StreamUnsubscribable<T>(this, channel, fn);\n }\n\n unsubscribe<T = unknown>(channel: string, fn: (data: T) => void): void {\n const listeners = this.listenersMap.get(channel);\n if (!listeners) {\n return;\n }\n\n listeners.delete(fn as (data: unknown) => void);\n console.log(\"unsubscribe, remain listeners: \", listeners.size);\n\n if (listeners.size === 0) {\n console.log(\"unsubscribe channel: \", channel);\n this.listenersMap.delete(channel);\n\n // Remove subscription after initialization is complete\n this.ensureInitialized().then(() => {\n const sub = this.realtimeClient.getSubscription(channel);\n if (sub) {\n sub.unsubscribe();\n this.realtimeClient.removeSubscription(sub);\n }\n });\n }\n }\n\n private formatScientificNotation(value: unknown): string {\n if (value === null || value === undefined) {\n return \"0\";\n }\n\n const strValue = value.toString();\n if (strValue.includes(\"e-\") || strValue.includes(\"E-\")) {\n return Number(value)\n .toFixed(20)\n .replace(/\\.?0+$/, \"\");\n }\n\n return strValue;\n }\n\n subscribeTokenCandles({\n chain,\n tokenAddress,\n resolution,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n resolution: Resolution;\n callback: (data: WsTokenCandle) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-candle:${chain}_${tokenAddress}_${resolution}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) => {\n callback({\n open: data.o as string,\n close: data.c as string,\n high: data.h as string,\n low: data.l as string,\n volume: data.v as string,\n resolution: data.r as Resolution,\n time: data.t as number,\n number: data.n as number,\n });\n },\n filter,\n \"subscribeTokenCandles\",\n );\n }\n\n subscribeTokenStats({\n chain,\n tokenAddress,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n callback: (data: WsTokenStat) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-token-stats:${chain}_${tokenAddress}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) =>\n callback({\n address: data.a as string,\n timestamp: data.t as number,\n buys1m: data.b1m as number,\n sells1m: data.s1m as number,\n buyers1m: data.be1m as number,\n sellers1m: data.se1m as number,\n buyVolumeInUsd1m: this.formatScientificNotation(data.bviu1m),\n sellVolumeInUsd1m: this.formatScientificNotation(data.sviu1m),\n price1m: this.formatScientificNotation(data.p1m),\n openInUsd1m: this.formatScientificNotation(data.oiu1m),\n closeInUsd1m: this.formatScientificNotation(data.ciu1m),\n\n buys5m: data.b5m as number,\n sells5m: data.s5m as number,\n buyers5m: data.be5m as number,\n sellers5m: data.se5m as number,\n buyVolumeInUsd5m: this.formatScientificNotation(data.bviu5m),\n sellVolumeInUsd5m: this.formatScientificNotation(data.sviu5m),\n price5m: this.formatScientificNotation(data.p5m),\n openInUsd5m: this.formatScientificNotation(data.oiu5m),\n closeInUsd5m: this.formatScientificNotation(data.ciu5m),\n\n buys15m: data.b15m as number,\n sells15m: data.s15m as number,\n buyers15m: data.be15m as number,\n sellers15m: data.se15m as number,\n buyVolumeInUsd15m: this.formatScientificNotation(data.bviu15m),\n sellVolumeInUsd15m: this.formatScientificNotation(data.sviu15m),\n price15m: this.formatScientificNotation(data.p15m),\n openInUsd15m: this.formatScientificNotation(data.oiu15m),\n closeInUsd15m: this.formatScientificNotation(data.ciu15m),\n\n buys30m: data.b30m as number,\n sells30m: data.s30m as number,\n buyers30m: data.be30m as number,\n sellers30m: data.se30m as number,\n buyVolumeInUsd30m: this.formatScientificNotation(data.bviu30m),\n sellVolumeInUsd30m: this.formatScientificNotation(data.sviu30m),\n price30m: this.formatScientificNotation(data.p30m),\n openInUsd30m: this.formatScientificNotation(data.oiu30m),\n closeInUsd30m: this.formatScientificNotation(data.ciu30m),\n\n buys1h: data.b1h as number,\n sells1h: data.s1h as number,\n buyers1h: data.be1h as number,\n sellers1h: data.se1h as number,\n buyVolumeInUsd1h: this.formatScientificNotation(data.bviu1h),\n sellVolumeInUsd1h: this.formatScientificNotation(data.sviu1h),\n price1h: this.formatScientificNotation(data.p1h),\n openInUsd1h: this.formatScientificNotation(data.oiu1h),\n closeInUsd1h: this.formatScientificNotation(data.ciu1h),\n\n buys4h: data.b4h as number,\n sells4h: data.s4h as number,\n buyers4h: data.be4h as number,\n sellers4h: data.se4h as number,\n buyVolumeInUsd4h: this.formatScientificNotation(data.bviu4h),\n sellVolumeInUsd4h: this.formatScientificNotation(data.sviu4h),\n price4h: this.formatScientificNotation(data.p4h),\n openInUsd4h: this.formatScientificNotation(data.oiu4h),\n closeInUsd4h: this.formatScientificNotation(data.ciu4h),\n\n buys24h: data.b24h as number,\n sells24h: data.s24h as number,\n buyers24h: data.be24h as number,\n sellers24h: data.se24h as number,\n buyVolumeInUsd24h: this.formatScientificNotation(data.bviu24h),\n sellVolumeInUsd24h: this.formatScientificNotation(data.sviu24h),\n price24h: this.formatScientificNotation(data.p24h),\n openInUsd24h: this.formatScientificNotation(data.oiu24h),\n closeInUsd24h: this.formatScientificNotation(data.ciu24h),\n\n price: this.formatScientificNotation(data.p),\n }),\n filter,\n \"subscribeTokenStats\",\n );\n }\n\n subscribeTokenHolders({\n chain,\n tokenAddress,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n callback: (data: WsTokenHolder) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-token-holding:${chain}_${tokenAddress}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) =>\n callback({\n tokenAddress: data.a as string,\n holders: data.h as number,\n top100HoldersAmount: this.formatScientificNotation(data.t100a),\n top50HoldersAmount: this.formatScientificNotation(data.t50a),\n top10HoldersAmount: this.formatScientificNotation(data.t10a),\n top100Holders: data.t100h as number,\n top50Holders: data.t50h as number,\n top10Holders: data.t10h as number,\n top100HoldersRatio: this.formatScientificNotation(data.t100r),\n top50HoldersRatio: this.formatScientificNotation(data.t50r),\n top10HoldersRatio: this.formatScientificNotation(data.t10r),\n creatorsHolders: data.ch as number,\n creatorsAmount: this.formatScientificNotation(data.ca),\n creatorsRatio: this.formatScientificNotation(data.cr),\n balanceTagFreshHolders: data.btfh as number,\n balanceTagFreshAmount: this.formatScientificNotation(data.btfa),\n balanceTagFreshRatio: this.formatScientificNotation(data.btfr),\n balanceTagSandwichHolders: data.btsh as number,\n balanceTagSandwichAmount: this.formatScientificNotation(data.btsa),\n balanceTagSandwichRatio: this.formatScientificNotation(data.btsr),\n balanceTagBundleHolders: data.btbh as number,\n balanceTagBundleAmount: this.formatScientificNotation(data.btba),\n balanceTagBundleRatio: this.formatScientificNotation(data.btbr),\n balanceTagSniperHolders: data.btsnh as number,\n balanceTagSniperAmount: this.formatScientificNotation(data.btsna),\n balanceTagSniperRatio: this.formatScientificNotation(data.btsnr),\n balanceTagDevHolders: data.btdh as number,\n balanceTagDevAmount: this.formatScientificNotation(data.btda),\n balanceTagDevRatio: this.formatScientificNotation(data.btdr),\n balanceTagProHolders: data.btph as number,\n balanceTagProAmount: this.formatScientificNotation(data.btpa),\n balanceTagProRatio: this.formatScientificNotation(data.btpr),\n balanceTagInsiderHolders: data.btih as number,\n balanceTagInsiderAmount: this.formatScientificNotation(data.btia),\n balanceTagInsiderRatio: this.formatScientificNotation(data.btir),\n balanceTagSmartHolders: data.btsmh as number,\n balanceTagSmartAmount: this.formatScientificNotation(data.btsma),\n balanceTagSmartRatio: this.formatScientificNotation(data.btsmr),\n balanceTagKolHolders: data.btkh as number,\n balanceTagKolAmount: this.formatScientificNotation(data.btka),\n balanceTagKolRatio: this.formatScientificNotation(data.btkr),\n balanceTagPhishingHolders: data.btphh as number,\n balanceTagPhishingAmount: this.formatScientificNotation(data.btpha),\n balanceTagPhishingRatio: this.formatScientificNotation(data.btphr),\n balanceTagBluechipHolders: data.btblh as number,\n balanceTagBluechipAmount: this.formatScientificNotation(data.btbla),\n balanceTagBluechipRatio: this.formatScientificNotation(data.btblr),\n balanceTagRatHolders: data.btrh as number,\n balanceTagRatAmount: this.formatScientificNotation(data.btra),\n balanceTagRatRatio: this.formatScientificNotation(data.btrr),\n timestamp: data.ts as number,\n }),\n filter,\n \"subscribeTokenHolders\",\n );\n }\n\n subscribeNewToken({\n chain,\n callback,\n filter,\n }: {\n chain: string;\n callback: (data: WsNewToken) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-new-token:${chain}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) => {\n const result: WsNewToken = {\n tokenAddress: data.a as string,\n name: data.n as string,\n symbol: data.s as string,\n createdAtMs: data.cts as number,\n };\n\n if (data.dec) {\n result.decimals = data.dec as number;\n }\n\n if (data.lf) {\n const lf = data.lf as Record<string, unknown>;\n result.launchFrom = {};\n if (lf.pa) {\n result.launchFrom.programAddress = lf.pa as string;\n }\n if (lf.pf) {\n result.launchFrom.protocolFamily = lf.pf as string;\n }\n if (lf.pn) {\n result.launchFrom.protocolName = lf.pn as string;\n }\n }\n\n callback(result);\n },\n filter,\n \"subscribeNewToken\",\n );\n }\n\n subscribeNewTokensMetadata({\n chain,\n callback,\n }: {\n chain: string;\n callback: (data: WsTokenMetadata[]) => void;\n }): Unsubscribable {\n const channel = `dex-new-tokens-metadata:${chain}`;\n return this.subscribe(channel, (data: Record<string, unknown>[]) =>\n callback(\n data.map(it => ({\n tokenAddress: it.a as string,\n name: it.n as string,\n symbol: it.s as string,\n imageUrl: it.iu as string,\n description: it.de as string,\n socialMedia: (() => {\n const sm = it.sm as Record<string, unknown> | undefined;\n if (!sm) return undefined;\n return {\n twitter: sm.tw as string | undefined,\n telegram: sm.tg as string | undefined,\n website: sm.w as string | undefined,\n tiktok: sm.tt as string | undefined,\n discord: sm.dc as string | undefined,\n facebook: sm.fb as string | undefined,\n github: sm.gh as string | undefined,\n instagram: sm.ig as string | undefined,\n linkedin: sm.li as string | undefined,\n medium: sm.md as string | undefined,\n reddit: sm.rd as string | undefined,\n youtube: sm.yt as string | undefined,\n bitbucket: sm.bb as string | undefined,\n };\n })(),\n createdAtMs: it.cts as number,\n })),\n ),\n );\n }\n\n subscribeTokenSupply({\n chain,\n tokenAddress,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n callback: (data: WsTokenSupply) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-token-supply:${chain}_${tokenAddress}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) =>\n callback({\n tokenAddress: data.a as string,\n supply: data.s as string,\n marketCapInUsd: data.mc as string,\n timestamp: data.ts as number,\n }),\n filter,\n \"subscribeTokenSupply\",\n );\n }\n\n subscribeTokenLiquidity({\n chain,\n tokenAddress,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n callback: (data: WsTokenLiquidity) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-token-general-stat-num:${chain}_${tokenAddress}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) =>\n callback({\n tokenAddress: data.a as string,\n metricType: data.t as WsTokenLiquidity[\"metricType\"],\n value: data.v as string,\n timestamp: data.ts as number,\n }),\n filter,\n \"subscribeTokenLiquidity\",\n );\n }\n\n /**\n * Subscribe to token max liquidity updates\n * Pushes the max liquidity info of a token in a single pool\n * Channel: dex-token-liquidity:{chain}_{token_address}\n */\n subscribeTokenMaxLiquidity({\n chain,\n tokenAddress,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n callback: (data: WsTokenMaxLiquidity) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-token-liquidity:${chain}_${tokenAddress}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) =>\n callback({\n tokenAddress: data.a as string,\n poolAddress: data.p as string,\n liquidityInUsd: data.liu as string,\n liquidityInNative: data.lin as string,\n timestamp: data.ts as number,\n }),\n filter,\n \"subscribeTokenMaxLiquidity\",\n );\n }\n\n /**\n * Subscribe to token total liquidity updates\n * Pushes the total liquidity info of a token across all pools\n * Channel: dex-token-total-liquidity:{chain}_{token_address}\n */\n subscribeTokenTotalLiquidity({\n chain,\n tokenAddress,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n callback: (data: WsTokenTotalLiquidity) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-token-total-liquidity:${chain}_${tokenAddress}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) =>\n callback({\n tokenAddress: data.a as string,\n liquidityInUsd: data.liu as string,\n liquidityInNative: data.lin as string,\n poolCount: data.pc as number,\n timestamp: data.ts as number,\n }),\n filter,\n \"subscribeTokenTotalLiquidity\",\n );\n }\n\n subscribeRankingTokensLiquidity({\n chain,\n channelType,\n callback,\n }: {\n chain: string;\n channelType: WsChannelType;\n callback: (data: WsTokenLiquidity[]) => void;\n }): Unsubscribable {\n const channel = `dex-ranking-token-general_stat_num-list:${chain}_${channelType}`;\n return this.subscribe(channel, (data: Record<string, unknown>[]) =>\n callback(\n data?.map(it => ({\n tokenAddress: it.a as string,\n metricType: it.t as WsTokenLiquidity[\"metricType\"],\n value: it.v as string,\n timestamp: it.ts as number,\n })),\n ),\n );\n }\n\n subscribeRankingTokensList({\n chain,\n ranking_type,\n dex,\n callback,\n }: {\n chain: string;\n ranking_type: WsRankingType;\n dex?: WsDex;\n callback: (data: WsRankingTokenList[]) => void;\n }): Unsubscribable {\n const channel = dex\n ? `dex-ranking-list:${chain}_${ranking_type}_${dex}`\n : `dex-ranking-list:${chain}_${ranking_type}`;\n return this.subscribe(channel, (data: Record<string, unknown>[]) =>\n callback(\n data?.map(item => {\n const result: WsRankingTokenList = {};\n const t = item.t as Record<string, unknown> | undefined;\n const bc = item.bc as Record<string, unknown> | undefined;\n const h = item.h as Record<string, unknown> | undefined;\n const s = item.s as Record<string, unknown> | undefined;\n const ts = item.ts as Record<string, unknown> | undefined;\n\n // TokenMetadata (t)\n if (t) {\n result.metadata = {\n tokenAddress: t.a as string,\n };\n if (t.n) {\n result.metadata.name = t.n as string;\n }\n if (t.s) {\n result.metadata.symbol = t.s as string;\n }\n if (t.iu) {\n result.metadata.imageUrl = t.iu as string;\n }\n if (t.de) {\n result.metadata.description = t.de as string;\n }\n if (t.dec) {\n result.metadata.decimals = t.dec as number;\n }\n if (t.cts) {\n result.metadata.createdAtMs = t.cts as number;\n }\n if (t.lf) {\n const lf = t.lf as Record<string, unknown>;\n result.metadata.launchFrom = {};\n if (lf.pa) {\n result.metadata.launchFrom.programAddress = lf.pa as string;\n }\n if (lf.pf) {\n result.metadata.launchFrom.protocolFamily = lf.pf as string;\n }\n if (lf.pn) {\n result.metadata.launchFrom.protocolName = lf.pn as string;\n }\n }\n if (t.mt) {\n const mt = t.mt as Record<string, unknown>;\n result.metadata.migratedTo = {};\n if (mt.pa) {\n result.metadata.migratedTo.programAddress = mt.pa as string;\n }\n if (mt.pf) {\n result.metadata.migratedTo.protocolFamily = mt.pf as string;\n }\n if (mt.pn) {\n result.metadata.migratedTo.protocolName = mt.pn as string;\n }\n }\n if (t.sm) {\n const sm = t.sm as Record<string, unknown>;\n result.metadata.socialMedia = {};\n if (sm.tw) {\n result.metadata.socialMedia.twitter = sm.tw as string;\n }\n if (sm.tg) {\n result.metadata.socialMedia.telegram = sm.tg as string;\n }\n if (sm.w) {\n result.metadata.socialMedia.website = sm.w as string;\n }\n if (sm.tt) {\n result.metadata.socialMedia.tiktok = sm.tt as string;\n }\n if (sm.dc) {\n result.metadata.socialMedia.discord = sm.dc as string;\n }\n if (sm.fb) {\n result.metadata.socialMedia.facebook = sm.fb as string;\n }\n if (sm.gh) {\n result.metadata.socialMedia.github = sm.gh as string;\n }\n if (sm.ig) {\n result.metadata.socialMedia.instagram = sm.ig as string;\n }\n if (sm.li) {\n result.metadata.socialMedia.linkedin = sm.li as string;\n }\n if (sm.md) {\n result.metadata.socialMedia.medium = sm.md as string;\n }\n if (sm.rd) {\n result.metadata.socialMedia.reddit = sm.rd as string;\n }\n if (sm.yt) {\n result.metadata.socialMedia.youtube = sm.yt as string;\n }\n if (sm.bb) {\n result.metadata.socialMedia.bitbucket = sm.bb as string;\n }\n }\n }\n\n // WsTokenBondingCurve (bc)\n if (bc) {\n result.bondingCurve = {};\n if (bc.pr) {\n result.bondingCurve.progressRatio = this.formatScientificNotation(bc.pr);\n }\n }\n\n // TokenHolder (h)\n if (h) {\n result.holder = {\n tokenAddress: h.a as string,\n timestamp: (h.ts as number) || 0,\n };\n if (h.h) {\n result.holder.holders = h.h as number;\n }\n if (h.t100a) {\n result.holder.top100HoldersAmount = this.formatScientificNotation(h.t100a);\n }\n if (h.t50a) {\n result.holder.top50HoldersAmount = this.formatScientificNotation(h.t50a);\n }\n if (h.t10a) {\n result.holder.top10HoldersAmount = this.formatScientificNotation(h.t10a);\n }\n if (h.t100h) {\n result.holder.top100Holders = h.t100h as number;\n }\n if (h.t50h) {\n result.holder.top50Holders = h.t50h as number;\n }\n if (h.t10h) {\n result.holder.top10Holders = h.t10h as number;\n }\n if (h.t100r) {\n result.holder.top100HoldersRatio = this.formatScientificNotation(h.t100r);\n }\n if (h.t50r) {\n result.holder.top50HoldersRatio = this.formatScientificNotation(h.t50r);\n }\n if (h.t10r) {\n result.holder.top10HoldersRatio = this.formatScientificNotation(h.t10r);\n }\n }\n\n // WsTokenSupply (s)\n if (s) {\n result.supply = {\n tokenAddress: s.a as string,\n timestamp: (s.ts as number) || 0,\n };\n if (s.s) {\n result.supply.supply = s.s as string;\n }\n if (s.mc) {\n result.supply.marketCapInUsd = s.mc as string;\n }\n }\n\n // TokenStat (ts)\n if (ts) {\n result.stat = {\n address: ts.a as string,\n timestamp: (ts.t as number) || 0,\n };\n\n // 1m data\n if (ts.b1m) {\n result.stat.buys1m = ts.b1m as number;\n }\n if (ts.s1m) {\n result.stat.sells1m = ts.s1m as number;\n }\n if (ts.be1m) {\n result.stat.buyers1m = ts.be1m as number;\n }\n if (ts.se1m) {\n result.stat.sellers1m = ts.se1m as number;\n }\n if (ts.bviu1m) {\n result.stat.buyVolumeInUsd1m = this.formatScientificNotation(ts.bviu1m);\n }\n if (ts.sviu1m) {\n result.stat.sellVolumeInUsd1m = this.formatScientificNotation(ts.sviu1m);\n }\n if (ts.p1m) {\n result.stat.price1m = this.formatScientificNotation(ts.p1m);\n }\n\n // Current price\n if (ts.p) {\n result.stat.price = this.formatScientificNotation(ts.p);\n }\n }\n\n return result;\n }),\n ),\n );\n }\n\n subscribeRankingTokensStats({\n chain,\n channelType,\n callback,\n }: {\n chain: string;\n channelType: WsChannelType;\n callback: (data: WsTokenStat[]) => void;\n }): Unsubscribable {\n const channel = `dex-ranking-token-stats-list:${chain}_${channelType}`;\n return this.subscribe(channel, (data: Record<string, unknown>[]) =>\n callback(\n data?.map(\n it =>\n ({\n address: it.a,\n timestamp: it.t,\n buys1m: it.b1m,\n sells1m: it.s1m,\n buyers1m: it.be1m,\n sellers1m: it.se1m,\n buyVolumeInUsd1m: this.formatScientificNotation(it.bviu1m),\n sellVolumeInUsd1m: this.formatScientificNotation(it.sviu1m),\n price1m: this.formatScientificNotation(it.p1m),\n openInUsd1m: this.formatScientificNotation(it.oiu1m),\n closeInUsd1m: this.formatScientificNotation(it.ciu1m),\n buys5m: it.b5m,\n sells5m: it.s5m,\n buyers5m: it.be5m,\n sellers5m: it.se5m,\n buyVolumeInUsd5m: this.formatScientificNotation(it.bviu5m),\n sellVolumeInUsd5m: this.formatScientificNotation(it.sviu5m),\n price5m: this.formatScientificNotation(it.p5m),\n openInUsd5m: this.formatScientificNotation(it.oiu5m),\n closeInUsd5m: this.formatScientificNotation(it.ciu5m),\n price: this.formatScientificNotation(it.p),\n }) as WsTokenStat,\n ),\n ),\n );\n }\n\n subscribeRankingTokensHolders({\n chain,\n channelType,\n callback,\n }: {\n chain: string;\n channelType: WsChannelType;\n callback: (data: WsTokenHolder[]) => void;\n }): Unsubscribable {\n const channel = `dex-ranking-token-holding-list:${chain}_${channelType}`;\n return this.subscribe(channel, (data: Record<string, unknown>[]) =>\n callback(\n data?.map(\n it =>\n ({\n tokenAddress: it.a,\n holders: it.h,\n top100HoldersAmount: this.formatScientificNotation(it.t100a),\n top50HoldersAmount: this.formatScientificNotation(it.t50a),\n top10HoldersAmount: this.formatScientificNotation(it.t10a),\n top100Holders: it.t100h,\n top50Holders: it.t50h,\n top10Holders: it.t10h,\n top100HoldersRatio: this.formatScientificNotation(it.t100r),\n top50HoldersRatio: this.formatScientificNotation(it.t50r),\n top10HoldersRatio: this.formatScientificNotation(it.t10r),\n timestamp: it.ts,\n }) as WsTokenHolder,\n ),\n ),\n );\n }\n\n subscribeRankingTokensSupply({\n chain,\n channelType,\n callback,\n }: {\n chain: string;\n channelType: WsChannelType;\n callback: (data: WsTokenSupply[]) => void;\n }): Unsubscribable {\n const channel = `dex-ranking-token-supply-list:${chain}_${channelType}`;\n return this.subscribe(channel, (data: Record<string, unknown>[]) =>\n callback(\n data?.map(it => ({\n tokenAddress: it.a as string,\n supply: it.s as string,\n marketCapInUsd: it.mc as string,\n timestamp: it.ts as number,\n })),\n ),\n );\n }\n\n subscribeRankingTokensBondingCurve({\n chain,\n callback,\n }: {\n chain: string;\n callback: (data: WsTokenBondingCurve[]) => void;\n }): Unsubscribable {\n const channel = `dex-ranking-token-bounding-curve-list:${chain}_new`;\n return this.subscribe(channel, (data: Record<string, unknown>[]) =>\n callback(\n data?.map(it => ({\n tokenAddress: it.a as string,\n progressRatio: it.pr as string,\n })),\n ),\n );\n }\n\n subscribeWalletBalance({\n chain,\n walletAddress,\n callback,\n filter,\n }: {\n chain: string;\n walletAddress: string;\n callback: (data: WsWalletBalance[]) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-wallet-balance:${chain}_${walletAddress}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) =>\n callback([\n {\n walletAddress: data.a as string,\n tokenAddress: data.ta as string,\n tokenPriceInUsd: data.tpiu as string,\n balance: data.b as string,\n timestamp: data.t as number,\n },\n ]),\n filter,\n \"subscribeWalletBalance\",\n );\n }\n\n subscribeWalletPnl({\n chain,\n walletAddress,\n callback,\n filter,\n }: {\n chain: string;\n walletAddress: string;\n callback: (data: WsWalletTokenPnl) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-wallet-token-pnl:${chain}_${walletAddress}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) =>\n callback({\n walletAddress: data.a as string,\n tokenAddress: data.ta as string,\n tokenPriceInUsd: data.tpiu as string,\n timestamp: data.t as number,\n opentime: data.ot as number,\n lasttime: data.lt as number,\n closetime: data.ct as number,\n buyAmount: data.ba as string,\n buyAmountInUsd: data.baiu as string,\n buyCount: data.bs as number,\n buyCount30d: data.bs30d as number,\n buyCount7d: data.bs7d as number,\n sellAmount: data.sa as string,\n sellAmountInUsd: data.saiu as string,\n sellCount: data.ss as number,\n sellCount30d: data.ss30d as number,\n sellCount7d: data.ss7d as number,\n heldDurationTimestamp: data.hdts as number,\n averageBuyPriceInUsd: data.abpiu as string,\n averageSellPriceInUsd: data.aspiu as string,\n unrealizedProfitInUsd: data.upiu as string,\n unrealizedProfitRatio: data.upr as string,\n realizedProfitInUsd: data.rpiu as string,\n realizedProfitRatio: data.rpr as string,\n totalRealizedProfitInUsd: data.trpiu as string,\n totalRealizedProfitRatio: data.trr as string,\n }),\n filter,\n \"subscribeWalletPnl\",\n );\n }\n\n subscribeWalletPnlList({\n chain,\n walletAddress,\n callback,\n }: {\n chain: string;\n walletAddress: string;\n callback: (data: WsWalletPnl[]) => void;\n }): Unsubscribable {\n const channel = `dex-wallet-pnl-list:${chain}_${walletAddress}`;\n return this.subscribe(channel, (data: Record<string, unknown>[]) =>\n callback(\n data?.map(\n it =>\n ({\n walletAddress: it.a,\n buys: it.bs,\n buyAmount: it.ba,\n buyAmountInUsd: it.baiu,\n averageBuyPriceInUsd: it.abpiu,\n sellAmount: it.sa,\n sellAmountInUsd: it.saiu,\n sells: it.ss,\n wins: it.ws,\n winRatio: it.wr,\n pnlInUsd: it.piu,\n averagePnlInUsd: it.apiu,\n pnlRatio: it.pr,\n profitableDays: it.pd,\n losingDays: it.ld,\n tokens: it.ts,\n resolution: it.r,\n }) as WsWalletPnl,\n ),\n ),\n );\n }\n\n subscribeTokenTrade({\n chain,\n tokenAddress,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n callback: (data: WsTradeActivity) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-trade:${chain}_${tokenAddress}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) =>\n callback({\n tokenAddress: data.a as string,\n timestamp: data.t as number,\n kind: data.k as string,\n buyAmount: data.ba as string,\n buyAmountInUsd: data.baiu as string,\n buyTokenAddress: data.btma as string,\n buyTokenName: data.btn as string,\n buyTokenSymbol: data.bts as string,\n buyWalletAddress: data.bwa as string,\n sellAmount: data.sa as string,\n sellAmountInUsd: data.saiu as string,\n sellTokenAddress: data.stma as string,\n sellTokenName: data.stn as string,\n sellTokenSymbol: data.sts as string,\n sellWalletAddress: data.swa as string,\n txHash: data.h as string,\n }),\n filter,\n \"subscribeTokenTrades\",\n );\n }\n\n subscribeWalletTrade({\n chain,\n walletAddress,\n callback,\n filter,\n }: {\n chain: string;\n walletAddress: string;\n callback: (data: WsTradeActivity) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-wallet-trade:${chain}_${walletAddress}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) =>\n callback({\n tokenAddress: data.a as string,\n timestamp: data.t as number,\n kind: data.k as string,\n buyAmount: data.ba as string,\n buyAmountInUsd: data.baiu as string,\n buyTokenAddress: data.btma as string,\n buyTokenName: data.btn as string,\n buyTokenSymbol: data.bts as string,\n buyWalletAddress: data.bwa as string,\n sellAmount: data.sa as string,\n sellAmountInUsd: data.saiu as string,\n sellTokenAddress: data.stma as string,\n sellTokenName: data.stn as string,\n sellTokenSymbol: data.sts as string,\n sellWalletAddress: data.swa as string,\n txHash: data.h as string,\n }),\n filter,\n \"subscribeTokenTrades\",\n );\n }\n\n subscribeDexPoolBalance({\n chain,\n poolAddress,\n callback,\n }: {\n chain: string;\n poolAddress: string;\n callback: (data: WsDexPoolBalance) => void;\n }): Unsubscribable {\n const channel = `dex-pool-balance:${chain}_${poolAddress}`;\n return this.subscribe(channel, (data: Record<string, unknown>) =>\n callback({\n poolAddress: data.a as string,\n tokenAAddress: data.taa as string,\n tokenALiquidityInUsd: data.taliu as string,\n tokenBAddress: data.tba as string,\n tokenBLiquidityInUsd: data.tbliu as string,\n }),\n );\n }\n}\n\nclass StreamUnsubscribable<T> {\n constructor(\n private readonly streamApi: StreamApi,\n private readonly channel: string,\n private readonly fn: (data: T) => void,\n ) {}\n\n unsubscribe(): void {\n this.streamApi.unsubscribe(this.channel, this.fn);\n }\n}\n","/**\n * Field mappings for CEL filter expressions\n * Maps human-readable field names to short field names used in the API\n * Organized by subscription method to handle field name conflicts\n */\n\nexport interface FieldMapping {\n readonly [key: string]: string;\n}\n\nexport interface MethodFieldMappings {\n readonly [methodName: string]: FieldMapping;\n}\n\n/**\n * Field mappings organized by subscription method\n * Each method can have its own field mappings to handle conflicts\n */\nexport const CEL_FIELD_MAPPINGS: MethodFieldMappings = {\n // Wallet balance subscription fields\n subscribeWalletBalance: {\n walletAddress: \"a\",\n tokenAddress: \"ta\",\n tokenPriceInUsd: \"tpiu\",\n balance: \"b\",\n timestamp: \"t\",\n },\n\n // Token candles subscription fields\n subscribeTokenCandles: {\n open: \"o\",\n close: \"c\",\n high: \"h\",\n low: \"l\",\n volume: \"v\",\n resolution: \"r\",\n time: \"t\",\n number: \"n\",\n },\n\n // Token stats subscription fields\n subscribeTokenStats: {\n address: \"a\",\n timestamp: \"t\",\n buys1m: \"b1m\",\n sells1m: \"s1m\",\n buyers1m: \"be1m\",\n sellers1m: \"se1m\",\n buyVolumeInUsd1m: \"bviu1m\",\n sellVolumeInUsd1m: \"sviu1m\",\n price1m: \"p1m\",\n openInUsd1m: \"oiu1m\",\n closeInUsd1m: \"ciu1m\",\n buys5m: \"b5m\",\n sells5m: \"s5m\",\n buyers5m: \"be5m\",\n sellers5m: \"se5m\",\n buyVolumeInUsd5m: \"bviu5m\",\n sellVolumeInUsd5m: \"sviu5m\",\n price5m: \"p5m\",\n openInUsd5m: \"oiu5m\",\n closeInUsd5m: \"ciu5m\",\n buys15m: \"b15m\",\n sells15m: \"s15m\",\n buyers15m: \"be15m\",\n sellers15m: \"se15m\",\n buyVolumeInUsd15m: \"bviu15m\",\n sellVolumeInUsd15m: \"sviu15m\",\n price15m: \"p15m\",\n openInUsd15m: \"oiu15m\",\n closeInUsd15m: \"ciu15m\",\n buys30m: \"b30m\",\n sells30m: \"s30m\",\n buyers30m: \"be30m\",\n sellers30m: \"se30m\",\n buyVolumeInUsd30m: \"bviu30m\",\n sellVolumeInUsd30m: \"sviu30m\",\n price30m: \"p30m\",\n openInUsd30m: \"oiu30m\",\n closeInUsd30m: \"ciu30m\",\n buys1h: \"b1h\",\n sells1h: \"s1h\",\n buyers1h: \"be1h\",\n sellers1h: \"se1h\",\n buyVolumeInUsd1h: \"bviu1h\",\n sellVolumeInUsd1h: \"sviu1h\",\n price1h: \"p1h\",\n openInUsd1h: \"oiu1h\",\n closeInUsd1h: \"ciu1h\",\n buys4h: \"b4h\",\n sells4h: \"s4h\",\n buyers4h: \"be4h\",\n sellers4h: \"se4h\",\n buyVolumeInUsd4h: \"bviu4h\",\n sellVolumeInUsd4h: \"sviu4h\",\n price4h: \"p4h\",\n openInUsd4h: \"oiu4h\",\n closeInUsd4h: \"ciu4h\",\n buys24h: \"b24h\",\n sells24h: \"s24h\",\n buyers24h: \"be24h\",\n sellers24h: \"se24h\",\n buyVolumeInUsd24h: \"bviu24h\",\n sellVolumeInUsd24h: \"sviu24h\",\n price24h: \"p24h\",\n price: \"p\",\n openInUsd24h: \"oiu24h\",\n closeInUsd24h: \"ciu24h\",\n },\n\n // Token holder subscription fields\n subscribeTokenHolders: {\n tokenAddress: \"a\",\n holders: \"h\",\n top100HoldersAmount: \"t100a\",\n top50HoldersAmount: \"t50a\",\n top10HoldersAmount: \"t10a\",\n top100Holders: \"t100h\",\n top50Holders: \"t50h\",\n top10Holders: \"t10h\",\n top100HoldersRatio: \"t100r\",\n top50HoldersRatio: \"t50r\",\n top10HoldersRatio: \"t10r\",\n creatorsHolders: \"ch\",\n creatorsAmount: \"ca\",\n creatorsRatio: \"cr\",\n balanceTagFreshHolders: \"btfh\",\n balanceTagFreshAmount: \"btfa\",\n balanceTagFreshRatio: \"btfr\",\n balanceTagSandwichHolders: \"btsh\",\n balanceTagSandwichAmount: \"btsa\",\n balanceTagSandwichRatio: \"btsr\",\n balanceTagBundleHolders: \"btbh\",\n balanceTagBundleAmount: \"btba\",\n balanceTagBundleRatio: \"btbr\",\n balanceTagSniperHolders: \"btsnh\",\n balanceTagSniperAmount: \"btsna\",\n balanceTagSniperRatio: \"btsnr\",\n balanceTagDevHolders: \"btdh\",\n balanceTagDevAmount: \"btda\",\n balanceTagDevRatio: \"btdr\",\n balanceTagProHolders: \"btph\",\n balanceTagProAmount: \"btpa\",\n balanceTagProRatio: \"btpr\",\n balanceTagInsiderHolders: \"btih\",\n balanceTagInsiderAmount: \"btia\",\n balanceTagInsiderRatio: \"btir\",\n balanceTagSmartHolders: \"btsmh\",\n balanceTagSmartAmount: \"btsma\",\n balanceTagSmartRatio: \"btsmr\",\n balanceTagKolHolders: \"btkh\",\n balanceTagKolAmount: \"btka\",\n balanceTagKolRatio: \"btkr\",\n balanceTagPhishingHolders: \"btphh\",\n balanceTagPhishingAmount: \"btpha\",\n balanceTagPhishingRatio: \"btphr\",\n balanceTagBluechipHolders: \"btblh\",\n balanceTagBluechipAmount: \"btbla\",\n balanceTagBluechipRatio: \"btblr\",\n balanceTagRatHolders: \"btrh\",\n balanceTagRatAmount: \"btra\",\n balanceTagRatRatio: \"btrr\",\n timestamp: \"ts\",\n },\n\n // New token subscription fields\n subscribeNewToken: {\n tokenAddress: \"a\",\n name: \"n\",\n symbol: \"s\",\n createdAtMs: \"cts\",\n },\n\n // Token supply subscription fields\n subscribeTokenSupply: {\n tokenAddress: \"a\",\n supply: \"s\",\n timestamp: \"ts\",\n },\n\n // Dex pool balance subscription fields\n subscribeDexPoolBalance: {\n poolAddress: \"a\",\n tokenAAddress: \"taa\",\n tokenALiquidityInUsd: \"taliu\",\n tokenBAddress: \"tba\",\n tokenBLiquidityInUsd: \"tbliu\",\n },\n\n // Token liquidity subscription fields\n subscribeTokenLiquidity: {\n tokenAddress: \"a\",\n metricType: \"t\",\n value: \"v\",\n timestamp: \"ts\",\n },\n\n // New token metadata subscription fields\n subscribeNewTokensMetadata: {\n tokenAddress: \"a\",\n name: \"n\",\n symbol: \"s\",\n imageUrl: \"iu\",\n description: \"de\",\n socialMedia: \"sm\",\n createdAtMs: \"cts\",\n },\n\n // Token trades subscription fields\n subscribeTokenTrades: {\n tokenAddress: \"a\",\n timestamp: \"t\",\n kind: \"k\",\n buyAmount: \"ba\",\n buyAmountInUsd: \"baiu\",\n buyTokenAddress: \"btma\",\n buyTokenName: \"btn\",\n buyTokenSymbol: \"bts\",\n buyWalletAddress: \"bwa\",\n sellAmount: \"sa\",\n sellAmountInUsd: \"saiu\",\n sellTokenAddress: \"stma\",\n sellTokenName: \"stn\",\n sellTokenSymbol: \"sts\",\n sellWalletAddress: \"swa\",\n txHash: \"h\",\n },\n\n // Wallet token PnL subscription fields\n subscribeWalletPnl: {\n walletAddress: \"a\",\n tokenAddress: \"ta\",\n tokenPriceInUsd: \"tpiu\",\n timestamp: \"t\",\n opentime: \"ot\",\n lasttime: \"lt\",\n closetime: \"ct\",\n buyAmount: \"ba\",\n buyAmountInUsd: \"baiu\",\n buyCount: \"bs\",\n buyCount30d: \"bs30d\",\n buyCount7d: \"bs7d\",\n sellAmount: \"sa\",\n sellAmountInUsd: \"saiu\",\n sellCount: \"ss\",\n sellCount30d: \"ss30d\",\n sellCount7d: \"ss7d\",\n heldDurationTimestamp: \"hdts\",\n averageBuyPriceInUsd: \"abpiu\",\n averageSellPriceInUsd: \"aspiu\",\n unrealizedProfitInUsd: \"upiu\",\n unrealizedProfitRatio: \"upr\",\n realizedProfitInUsd: \"rpiu\",\n realizedProfitRatio: \"rpr\",\n totalRealizedProfitInUsd: \"trpiu\",\n totalRealizedProfitRatio: \"trr\",\n },\n\n // Token max liquidity subscription fields\n subscribeTokenMaxLiquidity: {\n tokenAddress: \"a\",\n poolAddress: \"p\",\n liquidityInUsd: \"liu\",\n liquidityInNative: \"lin\",\n timestamp: \"ts\",\n },\n\n // Token total liquidity subscription fields\n subscribeTokenTotalLiquidity: {\n tokenAddress: \"a\",\n liquidityInUsd: \"liu\",\n liquidityInNative: \"lin\",\n poolCount: \"pc\",\n timestamp: \"ts\",\n },\n} as const;\n\n/**\n * Get field mappings for a specific subscription method\n * @param methodName - The name of the subscription method\n * @returns Field mapping object for the method, or empty object if not found\n */\nexport function getFieldMappings(methodName: string): FieldMapping {\n return CEL_FIELD_MAPPINGS[methodName] || {};\n}\n\n/**\n * Replace long field names with short field names in a filter expression\n * Automatically adds meta. prefix if not present\n * @param filter - Original filter expression\n * @param methodName - The name of the subscription method\n * @returns Filter expression with short field names and meta. prefix\n */\nexport function replaceFilterFields(filter: string, methodName: string): string {\n if (!filter) {\n return filter;\n }\n\n const fieldMappings = getFieldMappings(methodName);\n let result = filter;\n\n // Replace all long field names with short field names\n for (const [longField, shortField] of Object.entries(fieldMappings)) {\n // Handle both cases: with and without meta. prefix\n const patterns = [\n // Pattern 1: fieldName (without meta. prefix)\n new RegExp(`\\\\b${longField}\\\\b`, \"g\"),\n // Pattern 2: meta.fieldName (with meta. prefix)\n new RegExp(`\\\\bmeta\\\\.${longField}\\\\b`, \"g\"),\n ];\n\n patterns.forEach(pattern => {\n result = result.replace(pattern, `meta.${shortField}`);\n });\n }\n\n return result;\n}\n\n/**\n * Type-safe field mapping for specific subscription methods\n */\nexport type SubscriptionMethod = keyof typeof CEL_FIELD_MAPPINGS;\n\n/**\n * Get available field names for a specific subscription method\n * @param methodName - The name of the subscription method\n * @returns Array of available field names\n */\nexport function getAvailableFields(methodName: string): string[] {\n const mappings = getFieldMappings(methodName);\n return Object.keys(mappings);\n}\n","import { Resolution } from \"../openapi-client/index.js\";\n\nexport enum WsTokenActivityType {\n Sell = \"sell\",\n Buy = \"buy\",\n AddLiquidity = \"add_liquidity\",\n RemoveLiquidity = \"remove_liquidity\",\n}\n\nexport enum WsChannelType {\n New = \"new\",\n HOT = \"trending\",\n US_STOCKS = \"us_stocks\",\n COMPLETED = \"completed\",\n GRADUATED = \"graduated\",\n}\n\nexport enum WsMetricType {\n LIQUIDITY_IN_USD = \"liquidity_in_usd\",\n MIGRATED_RATIO = \"migrated_ratio\",\n}\n\nexport interface WsTokenActivity {\n address: string;\n priceUsd: string;\n amount: string;\n type: WsTokenActivityType;\n txHash: string;\n timestamp: number;\n}\n\nexport interface WsTokenStat {\n address: string;\n timestamp: number;\n buys1m?: number;\n sells1m?: number;\n buyers1m?: number;\n sellers1m?: number;\n buyVolumeInUsd1m?: string;\n sellVolumeInUsd1m?: string;\n price1m?: string;\n openInUsd1m?: string;\n closeInUsd1m?: string;\n\n buys5m?: number;\n sells5m?: number;\n buyers5m?: number;\n sellers5m?: number;\n buyVolumeInUsd5m?: string;\n sellVolumeInUsd5m?: string;\n price5m?: string;\n openInUsd5m?: string;\n closeInUsd5m?: string;\n\n buys15m?: number;\n sells15m?: number;\n buyers15m?: number;\n sellers15m?: number;\n buyVolumeInUsd15m?: string;\n sellVolumeInUsd15m?: string;\n price15m?: string;\n openInUsd15m?: string;\n closeInUsd15m?: string;\n\n buys30m?: number;\n sells30m?: number;\n buyers30m?: number;\n sellers30m?: number;\n buyVolumeInUsd30m?: string;\n sellVolumeInUsd30m?: string;\n price30m?: string;\n openInUsd30m?: string;\n closeInUsd30m?: string;\n\n buys1h?: number;\n sells1h?: number;\n buyers1h?: number;\n sellers1h?: number;\n buyVolumeInUsd1h?: string;\n sellVolumeInUsd1h?: string;\n price1h?: string;\n openInUsd1h?: string;\n closeInUsd1h?: string;\n\n buys4h?: number;\n sells4h?: number;\n buyers4h?: number;\n sellers4h?: number;\n buyVolumeInUsd4h?: string;\n sellVolumeInUsd4h?: string;\n price4h?: string;\n openInUsd4h?: string;\n closeInUsd4h?: string;\n\n buys24h?: number;\n sells24h?: number;\n buyers24h?: number;\n sellers24h?: number;\n buyVolumeInUsd24h?: string;\n sellVolumeInUsd24h?: string;\n price24h?: string;\n openInUsd24h?: string;\n closeInUsd24h?: string;\n\n price?: string;\n}\n\nexport interface WsTokenHolder {\n tokenAddress: string;\n holders?: number;\n top100HoldersAmount?: string;\n top50HoldersAmount?: string;\n top10HoldersAmount?: string;\n top100Holders?: number;\n top50Holders?: number;\n top10Holders?: number;\n top100HoldersRatio?: string;\n top50HoldersRatio?: string;\n top10HoldersRatio?: string;\n creatorsHolders?: number;\n creatorsAmount?: string;\n creatorsRatio?: string;\n balanceTagFreshHolders?: number;\n balanceTagFreshAmount?: string;\n balanceTagFreshRatio?: string;\n balanceTagSandwichHolders?: number;\n balanceTagSandwichAmount?: string;\n balanceTagSandwichRatio?: string;\n balanceTagBundleHolders?: number;\n balanceTagBundleAmount?: string;\n balanceTagBundleRatio?: string;\n balanceTagSniperHolders?: number;\n balanceTagSniperAmount?: string;\n balanceTagSniperRatio?: string;\n balanceTagDevHolders?: number;\n balanceTagDevAmount?: string;\n balanceTagDevRatio?: string;\n balanceTagProHolders?: number;\n balanceTagProAmount?: string;\n balanceTagProRatio?: string;\n balanceTagInsiderHolders?: number;\n balanceTagInsiderAmount?: string;\n balanceTagInsiderRatio?: string;\n balanceTagSmartHolders?: number;\n balanceTagSmartAmount?: string;\n balanceTagSmartRatio?: string;\n balanceTagKolHolders?: number;\n balanceTagKolAmount?: string;\n balanceTagKolRatio?: string;\n balanceTagPhishingHolders?: number;\n balanceTagPhishingAmount?: string;\n balanceTagPhishingRatio?: string;\n balanceTagBluechipHolders?: number;\n balanceTagBluechipAmount?: string;\n balanceTagBluechipRatio?: string;\n balanceTagRatHolders?: number;\n balanceTagRatAmount?: string;\n balanceTagRatRatio?: string;\n timestamp: number;\n}\n\nexport interface WsWalletBalance {\n walletAddress: string;\n tokenAddress: string;\n tokenPriceInUsd: string;\n balance: string;\n timestamp: number;\n}\n\nexport interface WsWalletPnl {\n walletAddress: string;\n buys: number;\n buyAmount: string;\n buyAmountInUsd: string;\n averageBuyPriceInUsd: string;\n sellAmount: string;\n sellAmountInUsd: string;\n sells: number;\n wins: number;\n winRatio: string;\n pnlInUsd: string;\n averagePnlInUsd: string;\n pnlRatio: string;\n profitableDays: number;\n losingDays: number;\n tokens: number;\n resolution: string;\n}\n\nexport interface WsNewToken {\n tokenAddress: string;\n name: string;\n symbol: string;\n decimals?: number;\n launchFrom?: WsDexProtocol;\n createdAtMs: number;\n}\n\nexport interface WsTokenSupply {\n tokenAddress: string;\n supply?: string;\n marketCapInUsd?: string;\n timestamp: number;\n}\n\nexport interface WsDexPoolBalance {\n poolAddress: string;\n tokenAAddress: string;\n tokenALiquidityInUsd: string;\n tokenBAddress: string;\n tokenBLiquidityInUsd: string;\n}\n\nexport interface WsTokenLiquidity {\n tokenAddress: string;\n metricType: WsMetricType;\n value: string;\n timestamp: number;\n}\n\nexport interface WsTokenMaxLiquidity {\n tokenAddress: string;\n poolAddress: string;\n liquidityInUsd: string;\n liquidityInNative: string;\n timestamp: number;\n}\n\nexport interface WsTokenTotalLiquidity {\n tokenAddress: string;\n liquidityInUsd: string;\n liquidityInNative: string;\n poolCount: number;\n timestamp: number;\n}\n\nexport interface WsDexProtocol {\n programAddress?: string;\n protocolFamily?: string;\n protocolName?: string;\n}\n\nexport interface WsTokenBondingCurve {\n tokenAddress?: string;\n progressRatio?: string;\n}\n\nexport interface WsTokenMetadata {\n tokenAddress: string;\n name?: string;\n decimals?: number;\n symbol?: string;\n imageUrl?: string;\n description?: string;\n socialMedia?: WsSocialMedia;\n createdAtMs?: number;\n launchFrom?: WsDexProtocol;\n migratedTo?: WsDexProtocol;\n}\n\nexport interface WsSocialMedia {\n twitter?: string;\n telegram?: string;\n website?: string;\n tiktok?: string;\n discord?: string;\n facebook?: string;\n github?: string;\n instagram?: string;\n linkedin?: string;\n medium?: string;\n reddit?: string;\n youtube?: string;\n bitbucket?: string;\n}\n\nexport interface WsTokenCandle {\n open: string;\n close: string;\n high: string;\n low: string;\n volume: string;\n resolution: Resolution;\n time: number;\n number: number;\n}\n\nexport interface WsTradeActivity {\n tokenAddress: string;\n timestamp: number;\n kind: string;\n buyAmount: string;\n buyAmountInUsd: string;\n buyTokenAddress: string;\n buyTokenName: string;\n buyTokenSymbol: string;\n buyWalletAddress: string;\n sellAmount: string;\n sellAmountInUsd: string;\n sellTokenAddress: string;\n sellTokenName: string;\n sellTokenSymbol: string;\n sellWalletAddress: string;\n txHash: string;\n}\n\nexport interface WsWalletTokenPnl {\n walletAddress: string;\n tokenAddress: string;\n tokenPriceInUsd: string;\n timestamp: number;\n opentime: number;\n lasttime: number;\n closetime: number;\n buyAmount: string;\n buyAmountInUsd: string;\n buyCount: number;\n buyCount30d: number;\n buyCount7d: number;\n sellAmount: string;\n sellAmountInUsd: string;\n sellCount: number;\n sellCount30d: number;\n sellCount7d: number;\n heldDurationTimestamp: number;\n averageBuyPriceInUsd: string;\n averageSellPriceInUsd: string;\n unrealizedProfitInUsd: string;\n unrealizedProfitRatio: string;\n realizedProfitInUsd: string;\n realizedProfitRatio: string;\n totalRealizedProfitInUsd: string;\n totalRealizedProfitRatio: string;\n}\n\nexport enum WsRankingType {\n NEW = \"new\",\n HOT = \"trending\",\n STOCKS = \"stocks\",\n FINALSTRETCH = \"completed\",\n MIGRATED = \"graduated\",\n}\n\nexport enum WsDex {\n PUMP_FUN = \"pump_fun\",\n RAYDIUM_LAUNCHPAD = \"raydium_launchpad\",\n METEOR_DYNAMIC_BOUNDING_CURVE = \"meteora_dynamic_bounding_curve\",\n BONK_FUN = \"bonk_fun\",\n BOOP_FUN = \"boop_fun\",\n MOONIT_FUN = \"moonit_fun\",\n}\n\nexport interface WsRankingTokenList {\n metadata?: WsTokenMetadata;\n holder?: WsTokenHolder;\n supply?: WsTokenSupply;\n stat?: WsTokenStat;\n bondingCurve?: WsTokenBondingCurve;\n}\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n BlockchainDTO,\n BlockchainLatestBlockDTO,\n ChainSymbol,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.GET_SUPPORTED_BLOCKCHAINS.DESCRIPTION\n * @summary CONTROLLER.GET_SUPPORTED_BLOCKCHAINS.SUMMARY\n */\nexport const getSupportedBlockchains = (options?: SecondParameter<typeof chainstreamApiClient>) => {\n return chainstreamApiClient<BlockchainDTO[]>({ url: `/v1/blockchain`, method: \"GET\" }, options);\n};\n/**\n * CONTROLLER.GET_LATEST_BLOCK.DESCRIPTION\n * @summary CONTROLLER.GET_LATEST_BLOCK.SUMMARY\n */\nexport const getLatestBlock = (\n chain: ChainSymbol,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<BlockchainLatestBlockDTO>(\n { url: `/v1/blockchain/${chain}/latest_block`, method: \"GET\" },\n options,\n );\n};\nexport type GetSupportedBlockchainsResult = NonNullable<\n Awaited<ReturnType<typeof getSupportedBlockchains>>\n>;\nexport type GetLatestBlockResult = NonNullable<Awaited<ReturnType<typeof getLatestBlock>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n MoonshotCreateTokenInput,\n MoonshotCreateTokenReply,\n MoonshotSubmitCreateToken200,\n MoonshotSubmitCreateTokenInput,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.MOONSHOT.CREATE_TOKEN.DESCRIPTION\n * @summary CONTROLLER.MOONSHOT.CREATE_TOKEN.SUMMARY\n */\nexport const moonshotCreateToken = (\n moonshotCreateTokenInput: MoonshotCreateTokenInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<MoonshotCreateTokenReply>(\n {\n url: `/v1/sol/moonshot/create`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: moonshotCreateTokenInput,\n },\n options,\n );\n};\n/**\n * CONTROLLER.MOONSHOT.SUBMIT_CREATE_TOKEN.DESCRIPTION\n * @summary CONTROLLER.MOONSHOT.SUBMIT_CREATE_TOKEN.SUMMARY\n */\nexport const moonshotSubmitCreateToken = (\n moonshotSubmitCreateTokenInput: MoonshotSubmitCreateTokenInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<MoonshotSubmitCreateToken200>(\n {\n url: `/v1/sol/moonshot/submitCreateToken`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: moonshotSubmitCreateTokenInput,\n },\n options,\n );\n};\nexport type MoonshotCreateTokenResult = NonNullable<\n Awaited<ReturnType<typeof moonshotCreateToken>>\n>;\nexport type MoonshotSubmitCreateTokenResult = NonNullable<\n Awaited<ReturnType<typeof moonshotSubmitCreateToken>>\n>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type { PumpCreateTokenInput, PumpCreateTokenReply } from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.PUMPFUN.CREATE_TOKEN.DESCRIPTION\n * @summary CONTROLLER.PUMPFUN.CREATE_TOKEN.SUMMARY\n */\nexport const pumpfunCreateToken = (\n pumpCreateTokenInput: PumpCreateTokenInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<PumpCreateTokenReply>(\n {\n url: `/v1/sol/pumpfun/create`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: pumpCreateTokenInput,\n },\n options,\n );\n};\nexport type PumpfunCreateTokenResult = NonNullable<Awaited<ReturnType<typeof pumpfunCreateToken>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n ChainSymbol,\n DexPoolDTO,\n DexPoolSnapshotPage,\n GetDexpoolSnapshotsParams,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.DEXPOOL.GET.DESCRIPTION\n * @summary CONTROLLER.DEXPOOL.GET.SUMMARY\n */\nexport const getDexpool = (\n chain: ChainSymbol,\n poolAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<DexPoolDTO>(\n { url: `/v1/dexpools/${chain}/${poolAddress}`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.DEXPOOL.SNAPSHOTS.DESCRIPTION\n * @summary CONTROLLER.DEXPOOL.SNAPSHOTS.SUMMARY\n */\nexport const getDexpoolSnapshots = (\n chain: ChainSymbol,\n poolAddress: string,\n params?: GetDexpoolSnapshotsParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<DexPoolSnapshotPage>(\n { url: `/v1/dexpools/${chain}/${poolAddress}/snapshots`, method: \"GET\", params },\n options,\n );\n};\nexport type GetDexpoolResult = NonNullable<Awaited<ReturnType<typeof getDexpool>>>;\nexport type GetDexpoolSnapshotsResult = NonNullable<\n Awaited<ReturnType<typeof getDexpoolSnapshots>>\n>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n ChainSymbol,\n CreateTokenInput,\n CreateTokenReply,\n DexPage,\n DexQuoteResponse,\n ListDexParams,\n QuoteParams,\n SwapInput,\n SwapReply,\n SwapRouteInput,\n SwapRouteResponse,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.DEX.SWAP.DESCRIPTION\n * @summary CONTROLLER.DEX.SWAP.SUMMARY\n */\nexport const swap = (\n chain: ChainSymbol,\n swapInput: SwapInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<SwapReply>(\n {\n url: `/v1/dex/${chain}/swap`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: swapInput,\n },\n options,\n );\n};\n/**\n * CONTROLLER.DEX.ROUTE.DESCRIPTION\n * @summary CONTROLLER.DEX.ROUTE.SUMMARY\n */\nexport const route = (\n chain: ChainSymbol,\n swapRouteInput: SwapRouteInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<SwapRouteResponse>(\n {\n url: `/v1/dex/${chain}/route`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: swapRouteInput,\n },\n options,\n );\n};\n/**\n * CONTROLLER.DEX.QUOTE.DESCRIPTION\n * @summary CONTROLLER.DEX.QUOTE.SUMMARY\n */\nexport const quote = (\n chain: ChainSymbol,\n params: QuoteParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<DexQuoteResponse>(\n { url: `/v1/dex/${chain}/quote`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.DEX.CREATE.DESCRIPTION\n * @summary CONTROLLER.DEX.CREATE.SUMMARY\n */\nexport const createToken = (\n chain: ChainSymbol,\n createTokenInput: CreateTokenInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<CreateTokenReply>(\n {\n url: `/v1/dex/${chain}/create`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: createTokenInput,\n },\n options,\n );\n};\n/**\n * CONTROLLER.DEX.LIST.DESCRIPTION\n * @summary CONTROLLER.DEX.LIST.SUMMARY\n */\nexport const listDex = (\n params?: ListDexParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<DexPage>({ url: `/v1/dex`, method: \"GET\", params }, options);\n};\nexport type SwapResult = NonNullable<Awaited<ReturnType<typeof swap>>>;\nexport type RouteResult = NonNullable<Awaited<ReturnType<typeof route>>>;\nexport type QuoteResult = NonNullable<Awaited<ReturnType<typeof quote>>>;\nexport type CreateTokenResult = NonNullable<Awaited<ReturnType<typeof createToken>>>;\nexport type ListDexResult = NonNullable<Awaited<ReturnType<typeof listDex>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n CreateEndpointInput,\n EndpointListResponse,\n EndpointOperationResponse,\n EndpointResponse,\n EndpointSecretResponse,\n ListEndpointsParams,\n UpdateEndpointInput,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.ENDPOINT.LIST.DESCRIPTION\n * @summary CONTROLLER.ENDPOINT.LIST.SUMMARY\n */\nexport const listEndpoints = (\n params?: ListEndpointsParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<EndpointListResponse>(\n { url: `/v1/webhook/endpoint`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.ENDPOINT.CREATE.DESCRIPTION\n * @summary CONTROLLER.ENDPOINT.CREATE.SUMMARY\n */\nexport const createEndpoint = (\n createEndpointInput: CreateEndpointInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<EndpointResponse>(\n {\n url: `/v1/webhook/endpoint`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: createEndpointInput,\n },\n options,\n );\n};\n/**\n * CONTROLLER.ENDPOINT.UPDATE.DESCRIPTION\n * @summary CONTROLLER.ENDPOINT.UPDATE.SUMMARY\n */\nexport const updateEndpoint = (\n updateEndpointInput: UpdateEndpointInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<EndpointResponse>(\n {\n url: `/v1/webhook/endpoint`,\n method: \"PATCH\",\n headers: { \"Content-Type\": \"application/json\" },\n data: updateEndpointInput,\n },\n options,\n );\n};\n/**\n * CONTROLLER.ENDPOINT.GET.DESCRIPTION\n * @summary CONTROLLER.ENDPOINT.GET.SUMMARY\n */\nexport const getEndpoint = (id: string, options?: SecondParameter<typeof chainstreamApiClient>) => {\n return chainstreamApiClient<EndpointResponse>(\n { url: `/v1/webhook/endpoint/${id}`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.ENDPOINT.DELETE.DESCRIPTION\n * @summary CONTROLLER.ENDPOINT.DELETE.SUMMARY\n */\nexport const deleteEndpoint = (\n id: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<EndpointOperationResponse>(\n { url: `/v1/webhook/endpoint/${id}`, method: \"DELETE\" },\n options,\n );\n};\n/**\n * CONTROLLER.ENDPOINT.GET.SECRET.DESCRIPTION\n * @summary CONTROLLER.ENDPOINT.GET.SECRET.SUMMARY\n */\nexport const getEndpointSecret = (\n id: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<EndpointSecretResponse>(\n { url: `/v1/webhook/endpoint/${id}/secret`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.ENDPOINT.ROTATE.DESCRIPTION\n * @summary CONTROLLER.ENDPOINT.ROTATE.SUMMARY\n */\nexport const rotateEndpointSecret = (\n id: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<EndpointOperationResponse>(\n { url: `/v1/webhook/endpoint/${id}/secret/rotate`, method: \"POST\" },\n options,\n );\n};\nexport type ListEndpointsResult = NonNullable<Awaited<ReturnType<typeof listEndpoints>>>;\nexport type CreateEndpointResult = NonNullable<Awaited<ReturnType<typeof createEndpoint>>>;\nexport type UpdateEndpointResult = NonNullable<Awaited<ReturnType<typeof updateEndpoint>>>;\nexport type GetEndpointResult = NonNullable<Awaited<ReturnType<typeof getEndpoint>>>;\nexport type DeleteEndpointResult = NonNullable<Awaited<ReturnType<typeof deleteEndpoint>>>;\nexport type GetEndpointSecretResult = NonNullable<Awaited<ReturnType<typeof getEndpointSecret>>>;\nexport type RotateEndpointSecretResult = NonNullable<\n Awaited<ReturnType<typeof rotateEndpointSecret>>\n>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.IPFS.PRESIGN.DESCRIPTION\n * @summary CONTROLLER.IPFS.PRESIGN.SUMMARY\n */\nexport const presign = (options?: SecondParameter<typeof chainstreamApiClient>) => {\n return chainstreamApiClient<string>({ url: `/v1/ipfs/presign`, method: \"POST\" }, options);\n};\nexport type PresignResult = NonNullable<Awaited<ReturnType<typeof presign>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type { JobDTO, JobStreamingDTO } from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.JOB.GET.DESCRIPTION\n * @summary CONTROLLER.JOB.GET.SUMMARY\n */\nexport const get = (id: string, options?: SecondParameter<typeof chainstreamApiClient>) => {\n return chainstreamApiClient<JobDTO>({ url: `/jobs/${id}`, method: \"GET\" }, options);\n};\n/**\n * CONTROLLER.JOB.STREAMING.DESCRIPTION\n * @summary CONTROLLER.JOB.STREAMING.SUMMARY\n */\nexport const streaming = (id: string, options?: SecondParameter<typeof chainstreamApiClient>) => {\n return chainstreamApiClient<JobStreamingDTO>(\n { url: `/jobs/${id}/streaming`, method: \"GET\" },\n options,\n );\n};\nexport type GetResult = NonNullable<Awaited<ReturnType<typeof get>>>;\nexport type StreamingResult = NonNullable<Awaited<ReturnType<typeof streaming>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n AddressRiskResponseDTO,\n KYTRegisterTransferRequest,\n KYTRegisterWithdrawalRequest,\n RegisterAddressRequest,\n RegisterAddressResponseDTO,\n TransferAlertsResponseDTO,\n TransferBaseResponseDTO,\n TransferDirectExposureResponseDTO,\n TransferNetworkIdentificationsResponseDTO,\n WithdrawalAddressIdentificationsResponseDTO,\n WithdrawalBaseResponseDTO,\n WithdrawalFraudAssessmentResponseDTO,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.KYT.REGISTER_TRANSFER.DESCRIPTION\n * @summary CONTROLLER.KYT.REGISTER_TRANSFER.SUMMARY\n */\nexport const registerTransfer = (\n kYTRegisterTransferRequest: KYTRegisterTransferRequest,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TransferBaseResponseDTO>(\n {\n url: `/v1/kyt/transfer`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: kYTRegisterTransferRequest,\n },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_TRANSFER_SUMMARY.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_TRANSFER_SUMMARY.SUMMARY\n */\nexport const getTransferSummary = (\n transferId: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TransferBaseResponseDTO>(\n { url: `/v1/kyt/transfers/${transferId}/summary`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_TRANSFER_DIRECT_EXPOSURE.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_TRANSFER_DIRECT_EXPOSURE.SUMMARY\n */\nexport const getTransferDirectExposure = (\n transferId: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TransferDirectExposureResponseDTO>(\n { url: `/v1/kyt/transfers/${transferId}/exposures/direct`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_TRANSFER_ALERTS.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_TRANSFER_ALERTS.SUMMARY\n */\nexport const getTransferAlerts = (\n transferId: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TransferAlertsResponseDTO>(\n { url: `/v1/kyt/transfers/${transferId}/alerts`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_TRANSFER_NETWORK_IDENTIFICATIONS.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_TRANSFER_NETWORK_IDENTIFICATIONS.SUMMARY\n */\nexport const getTransferNetworkIdentifications = (\n transferId: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TransferNetworkIdentificationsResponseDTO>(\n { url: `/v1/kyt/transfers/${transferId}/network-identifications`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.REGISTER_WITHDRAWAL.DESCRIPTION\n * @summary CONTROLLER.KYT.REGISTER_WITHDRAWAL.SUMMARY\n */\nexport const registerWithdrawal = (\n kYTRegisterWithdrawalRequest: KYTRegisterWithdrawalRequest,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<WithdrawalBaseResponseDTO>(\n {\n url: `/v1/kyt/withdrawal`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: kYTRegisterWithdrawalRequest,\n },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_WITHDRAWAL_SUMMARY.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_WITHDRAWAL_SUMMARY.SUMMARY\n */\nexport const getWithdrawalSummary = (\n withdrawalId: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<WithdrawalBaseResponseDTO>(\n { url: `/v1/kyt/withdrawal/${withdrawalId}/summary`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_WITHDRAWAL_DIRECT_EXPOSURE.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_WITHDRAWAL_DIRECT_EXPOSURE.SUMMARY\n */\nexport const getWithdrawalDirectExposure = (\n withdrawalId: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TransferDirectExposureResponseDTO>(\n { url: `/v1/kyt/withdrawal/${withdrawalId}/exposures/direct`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_WITHDRAWAL_ALERTS.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_WITHDRAWAL_ALERTS.SUMMARY\n */\nexport const getWithdrawalAlerts = (\n withdrawalId: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TransferAlertsResponseDTO>(\n { url: `/v1/kyt/withdrawal/${withdrawalId}/alerts`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_WITHDRAWAL_ADDRESS_IDENTIFICATIONS.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_WITHDRAWAL_ADDRESS_IDENTIFICATIONS.SUMMARY\n */\nexport const getWithdrawalAddressIdentifications = (\n withdrawalId: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<WithdrawalAddressIdentificationsResponseDTO>(\n { url: `/v1/kyt/withdrawal/${withdrawalId}/address-identifications`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_WITHDRAWAL_NETWORK_IDENTIFICATIONS.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_WITHDRAWAL_NETWORK_IDENTIFICATIONS.SUMMARY\n */\nexport const getWithdrawalNetworkIdentifications = (\n withdrawalId: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TransferNetworkIdentificationsResponseDTO>(\n { url: `/v1/kyt/withdrawal/${withdrawalId}/network-identifications`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_WITHDRAWAL_FRAUD_ASSESSMENT.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_WITHDRAWAL_FRAUD_ASSESSMENT.SUMMARY\n */\nexport const getWithdrawalFraudAssessment = (\n withdrawalId: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<WithdrawalFraudAssessmentResponseDTO>(\n { url: `/v1/kyt/withdrawal/${withdrawalId}/fraud-assessment`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.REGISTER_ADDRESS.DESCRIPTION\n * @summary CONTROLLER.KYT.REGISTER_ADDRESS.SUMMARY\n */\nexport const registerAddress = (\n registerAddressRequest: RegisterAddressRequest,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<RegisterAddressResponseDTO>(\n {\n url: `/v1/kyt/address`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: registerAddressRequest,\n },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_ADDRESS_RISK.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_ADDRESS_RISK.SUMMARY\n */\nexport const getAddressRisk = (\n address: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<AddressRiskResponseDTO>(\n { url: `/v1/kyt/addresses/${address}/risk`, method: \"GET\" },\n options,\n );\n};\nexport type RegisterTransferResult = NonNullable<Awaited<ReturnType<typeof registerTransfer>>>;\nexport type GetTransferSummaryResult = NonNullable<Awaited<ReturnType<typeof getTransferSummary>>>;\nexport type GetTransferDirectExposureResult = NonNullable<\n Awaited<ReturnType<typeof getTransferDirectExposure>>\n>;\nexport type GetTransferAlertsResult = NonNullable<Awaited<ReturnType<typeof getTransferAlerts>>>;\nexport type GetTransferNetworkIdentificationsResult = NonNullable<\n Awaited<ReturnType<typeof getTransferNetworkIdentifications>>\n>;\nexport type RegisterWithdrawalResult = NonNullable<Awaited<ReturnType<typeof registerWithdrawal>>>;\nexport type GetWithdrawalSummaryResult = NonNullable<\n Awaited<ReturnType<typeof getWithdrawalSummary>>\n>;\nexport type GetWithdrawalDirectExposureResult = NonNullable<\n Awaited<ReturnType<typeof getWithdrawalDirectExposure>>\n>;\nexport type GetWithdrawalAlertsResult = NonNullable<\n Awaited<ReturnType<typeof getWithdrawalAlerts>>\n>;\nexport type GetWithdrawalAddressIdentificationsResult = NonNullable<\n Awaited<ReturnType<typeof getWithdrawalAddressIdentifications>>\n>;\nexport type GetWithdrawalNetworkIdentificationsResult = NonNullable<\n Awaited<ReturnType<typeof getWithdrawalNetworkIdentifications>>\n>;\nexport type GetWithdrawalFraudAssessmentResult = NonNullable<\n Awaited<ReturnType<typeof getWithdrawalFraudAssessment>>\n>;\nexport type RegisterAddressResult = NonNullable<Awaited<ReturnType<typeof registerAddress>>>;\nexport type GetAddressRiskResult = NonNullable<Awaited<ReturnType<typeof getAddressRisk>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n ChainSymbol,\n GetFinalStretchTokensParams,\n GetHotTokensParams,\n GetMigratedTokensParams,\n GetNewTokensParams,\n GetStocksTokensParams,\n Token,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.RANKING.HOT_TOKENS.DESCRIPTION\n * @summary CONTROLLER.RANKING.HOT_TOKENS.SUMMARY\n */\nexport const getHotTokens = (\n chain: ChainSymbol,\n duration: \"1m\" | \"5m\" | \"1h\" | \"4h\" | \"24h\",\n params?: GetHotTokensParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<Token[]>(\n { url: `/v1/ranking/${chain}/hotTokens/${duration}`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.RANKING.NEW_TOKENS.DESCRIPTION\n * @summary CONTROLLER.RANKING.NEW_TOKENS.SUMMARY\n */\nexport const getNewTokens = (\n chain: ChainSymbol,\n params?: GetNewTokensParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<Token[]>(\n { url: `/v1/ranking/${chain}/newTokens`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.RANKING.STOCKS_TOKENS.DESCRIPTION\n * @summary CONTROLLER.RANKING.STOCKS_TOKENS.SUMMARY\n */\nexport const getStocksTokens = (\n chain: ChainSymbol,\n params?: GetStocksTokensParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<Token[]>(\n { url: `/v1/ranking/${chain}/stocks`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.RANKING.FINAL_STRETCH_TOKENS.DESCRIPTION\n * @summary CONTROLLER.RANKING.FINAL_STRETCH_TOKENS.SUMMARY\n */\nexport const getFinalStretchTokens = (\n chain: ChainSymbol,\n params?: GetFinalStretchTokensParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<Token[]>(\n { url: `/v1/ranking/${chain}/finalStretch`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.RANKING.MIGRATED_TOKENS.DESCRIPTION\n * @summary CONTROLLER.RANKING.MIGRATED_TOKENS.SUMMARY\n */\nexport const getMigratedTokens = (\n chain: ChainSymbol,\n params?: GetMigratedTokensParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<Token[]>(\n { url: `/v1/ranking/${chain}/migrated`, method: \"GET\", params },\n options,\n );\n};\nexport type GetHotTokensResult = NonNullable<Awaited<ReturnType<typeof getHotTokens>>>;\nexport type GetNewTokensResult = NonNullable<Awaited<ReturnType<typeof getNewTokens>>>;\nexport type GetStocksTokensResult = NonNullable<Awaited<ReturnType<typeof getStocksTokens>>>;\nexport type GetFinalStretchTokensResult = NonNullable<\n Awaited<ReturnType<typeof getFinalStretchTokens>>\n>;\nexport type GetMigratedTokensResult = NonNullable<Awaited<ReturnType<typeof getMigratedTokens>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n ChainSymbol,\n ClaimRedPacketInput,\n CreateRedPacketInput,\n CreateRedPacketReply,\n GetClaimsByAddressParams,\n GetClaimsParams,\n GetRedpacketsByAddressParams,\n GetRedpacketsParams,\n RedPacketClaimsPage,\n RedPacketDTO,\n RedPacketReply,\n RedPacketSendTxInput,\n RedPacketSendTxResponse,\n RedPacketsPage,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.RED_PACKET.CREATE.DESCRIPTION\n * @summary CONTROLLER.RED_PACKET.CREATE.SUMMARY\n */\nexport const createRedpacket = (\n chain: ChainSymbol,\n createRedPacketInput: CreateRedPacketInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<CreateRedPacketReply>(\n {\n url: `/v1/redpacket/${chain}/create`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: createRedPacketInput,\n },\n options,\n );\n};\n/**\n * CONTROLLER.RED_PACKET.CLAIM.DESCRIPTION\n * @summary CONTROLLER.RED_PACKET.CLAIM.SUMMARY\n */\nexport const claimRedpacket = (\n chain: ChainSymbol,\n claimRedPacketInput: ClaimRedPacketInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<RedPacketReply>(\n {\n url: `/v1/redpacket/${chain}/claim`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: claimRedPacketInput,\n },\n options,\n );\n};\n/**\n * CONTROLLER.RED_PACKET.GET.DESCRIPTION\n * @summary CONTROLLER.RED_PACKET.GET.SUMMARY\n */\nexport const getRedpacket = (\n id: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<RedPacketDTO>({ url: `/v1/redpacket/${id}`, method: \"GET\" }, options);\n};\n/**\n * CONTROLLER.RED_PACKET.GET_CLAIMS.DESCRIPTION\n * @summary CONTROLLER.RED_PACKET.GET_CLAIMS.SUMMARY\n */\nexport const getClaims = (\n id: string,\n params?: GetClaimsParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<RedPacketClaimsPage>(\n { url: `/v1/redpacket/${id}/claims`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.RED_PACKET.GET_REDPACKETS.DESCRIPTION\n * @summary CONTROLLER.RED_PACKET.GET_REDPACKETS.SUMMARY\n */\nexport const getRedpackets = (\n params?: GetRedpacketsParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<RedPacketsPage>(\n { url: `/v1/redpacket`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.RED_PACKET.GET_CLAIMS_BY_ADDRESS.DESCRIPTION\n * @summary CONTROLLER.RED_PACKET.GET_CLAIMS_BY_ADDRESS.SUMMARY\n */\nexport const getClaimsByAddress = (\n address: string,\n params?: GetClaimsByAddressParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<RedPacketClaimsPage>(\n { url: `/v1/redpacket/wallet/${address}/claims`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.RED_PACKET.GET_REDPACKETS_BY_ADDRESS.DESCRIPTION\n * @summary CONTROLLER.RED_PACKET.GET_REDPACKETS_BY_ADDRESS.SUMMARY\n */\nexport const getRedpacketsByAddress = (\n address: string,\n params?: GetRedpacketsByAddressParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<RedPacketsPage>(\n { url: `/v1/redpacket/wallet/${address}/redpackets`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.RED_PACKET.SEND.DESCRIPTION\n * @summary CONTROLLER.RED_PACKET.SEND.SUMMARY\n */\nexport const redpacketSend = (\n chain: ChainSymbol,\n redPacketSendTxInput: RedPacketSendTxInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<RedPacketSendTxResponse>(\n {\n url: `/v1/redpacket/${chain}/send`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: redPacketSendTxInput,\n },\n options,\n );\n};\nexport type CreateRedpacketResult = NonNullable<Awaited<ReturnType<typeof createRedpacket>>>;\nexport type ClaimRedpacketResult = NonNullable<Awaited<ReturnType<typeof claimRedpacket>>>;\nexport type GetRedpacketResult = NonNullable<Awaited<ReturnType<typeof getRedpacket>>>;\nexport type GetClaimsResult = NonNullable<Awaited<ReturnType<typeof getClaims>>>;\nexport type GetRedpacketsResult = NonNullable<Awaited<ReturnType<typeof getRedpackets>>>;\nexport type GetClaimsByAddressResult = NonNullable<Awaited<ReturnType<typeof getClaimsByAddress>>>;\nexport type GetRedpacketsByAddressResult = NonNullable<\n Awaited<ReturnType<typeof getRedpacketsByAddress>>\n>;\nexport type RedpacketSendResult = NonNullable<Awaited<ReturnType<typeof redpacketSend>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n Candle,\n ChainSymbol,\n DevTokenDTO,\n DexPoolDTO,\n GetCandlesParams,\n GetHoldersMultiParams,\n GetHoldersParams,\n GetMarketDataMulti200,\n GetMarketDataMultiParams,\n GetMetadataMulti200,\n GetMetadataMultiParams,\n GetMintAndBurnParams,\n GetPoolsParams,\n GetPriceByTimeParams,\n GetPricesParams,\n GetSecurity200,\n GetStatsMulti200,\n GetStatsMultiParams,\n GetTokenLiquiditySnapshotsParams,\n GetTokensParams,\n ListTokenParams,\n SearchParams,\n Token,\n TokenCreationDTO,\n TokenCreationPage,\n TokenHolder,\n TokenHolderPage,\n TokenLiquiditySnapshotPage,\n TokenListPage,\n TokenMarketData,\n TokenMetadata,\n TokenPage,\n TokenPriceDTO,\n TokenPricePage,\n TokenStat,\n TokenTrader,\n TokenTraderTag,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.TOKEN.SEARCH.DESCRIPTION\n * @summary CONTROLLER.TOKEN.SEARCH.SUMMARY\n */\nexport const search = (\n params?: SearchParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenPage>(\n { url: `/v1/token/search`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_TOKENS.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_TOKENS.SUMMARY\n */\nexport const getTokens = (\n chain: ChainSymbol,\n params: GetTokensParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<Token[]>(\n { url: `/v1/token/${chain}/multi`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET.SUMMARY\n */\nexport const getToken = (\n chain: ChainSymbol,\n tokenAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<Token>(\n { url: `/v1/token/${chain}/${tokenAddress}`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_METADATA.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_METADATA.SUMMARY\n */\nexport const getMetadata = (\n chain: ChainSymbol,\n tokenAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenMetadata>(\n { url: `/v1/token/${chain}/${tokenAddress}/metadata`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_METADATA_MULTI.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_METADATA_MULTI.SUMMARY\n */\nexport const getMetadataMulti = (\n chain: ChainSymbol,\n params: GetMetadataMultiParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<GetMetadataMulti200>(\n { url: `/v1/token/${chain}/metadata/multi`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_POOLS.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_POOLS.SUMMARY\n */\nexport const getPools = (\n chain: ChainSymbol,\n tokenAddress: string,\n params?: GetPoolsParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<DexPoolDTO[]>(\n { url: `/v1/token/${chain}/${tokenAddress}/pools`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_STATS.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_STATS.SUMMARY\n */\nexport const getStats = (\n chain: ChainSymbol,\n tokenAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenStat>(\n { url: `/v1/token/${chain}/${tokenAddress}/stats`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_STATS_MULTI.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_STATS_MULTI.SUMMARY\n */\nexport const getStatsMulti = (\n chain: ChainSymbol,\n params: GetStatsMultiParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<GetStatsMulti200>(\n { url: `/v1/token/${chain}/stats/multi`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_HOLDERS.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_HOLDERS.SUMMARY\n */\nexport const getHolders = (\n chain: ChainSymbol,\n tokenAddress: string,\n params?: GetHoldersParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenHolderPage>(\n { url: `/v1/token/${chain}/${tokenAddress}/holders`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_HOLDERS_MULTI.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_HOLDERS_MULTI.SUMMARY\n */\nexport const getHoldersMulti = (\n chain: ChainSymbol,\n tokenAddress: string,\n params: GetHoldersMultiParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenHolder[]>(\n { url: `/v1/token/${chain}/${tokenAddress}/holders/multi`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_CANDLES.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_CANDLES.SUMMARY\n */\nexport const getCandles = (\n chain: ChainSymbol,\n tokenAddress: string,\n params: GetCandlesParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<Candle[]>(\n { url: `/v1/token/${chain}/${tokenAddress}/candles`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_TOP_HOLDERS.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_TOP_HOLDERS.SUMMARY\n */\nexport const getTopHolders = (\n chain: ChainSymbol,\n tokenAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenHolderPage>(\n { url: `/v1/token/${chain}/${tokenAddress}/topHolders`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_MARKET_CAP.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_MARKET_CAP.SUMMARY\n */\nexport const getMarketData = (\n chain: ChainSymbol,\n tokenAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenMarketData>(\n { url: `/v1/token/${chain}/${tokenAddress}/marketData`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_MARKET_DATA_MULTI.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_MARKET_DATA_MULTI.SUMMARY\n */\nexport const getMarketDataMulti = (\n chain: ChainSymbol,\n params: GetMarketDataMultiParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<GetMarketDataMulti200>(\n { url: `/v1/token/${chain}/marketData/multi`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_PRICES.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_PRICES.SUMMARY\n */\nexport const getPrices = (\n chain: ChainSymbol,\n tokenAddress: string,\n params?: GetPricesParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenPricePage>(\n { url: `/v1/token/${chain}/${tokenAddress}/prices`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_PRICE_BY_TIME.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_PRICE_BY_TIME.SUMMARY\n */\nexport const getPriceByTime = (\n chain: ChainSymbol,\n tokenAddress: string,\n params: GetPriceByTimeParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenPriceDTO>(\n { url: `/v1/token/${chain}/${tokenAddress}/price`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_CREATION.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_CREATION.SUMMARY\n */\nexport const getCreation = (\n chain: ChainSymbol,\n tokenAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenCreationDTO>(\n { url: `/v1/token/${chain}/${tokenAddress}/creation`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_MINT_AND_BURN.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_MINT_AND_BURN.SUMMARY\n */\nexport const getMintAndBurn = (\n chain: ChainSymbol,\n tokenAddress: string,\n params?: GetMintAndBurnParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenCreationPage>(\n { url: `/v1/token/${chain}/${tokenAddress}/mintAndBurn`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_TOKEN_LIST.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_TOKEN_LIST.SUMMARY\n */\nexport const listToken = (\n chain: ChainSymbol,\n params?: ListTokenParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenListPage>(\n { url: `/v1/token/${chain}/list`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_SECURITY.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_SECURITY.SUMMARY\n */\nexport const getSecurity = (\n chain: ChainSymbol,\n tokenAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<GetSecurity200>(\n { url: `/v1/token/${chain}/${tokenAddress}/security`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_DEV_TOKENS.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_DEV_TOKENS.SUMMARY\n */\nexport const getDevTokens = (\n chain: ChainSymbol,\n devAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<DevTokenDTO[]>(\n { url: `/v1/token/${chain}/dev/${devAddress}/tokens`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_TOKEN_TRADERS.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_TOKEN_TRADERS.SUMMARY\n */\nexport const getTokenTraders = (\n chain: ChainSymbol,\n tokenAddress: string,\n tag: TokenTraderTag,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenTrader[]>(\n { url: `/v1/token/${chain}/${tokenAddress}/traders/${tag}`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_LIQUIDITY_SNAPSHOTS.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_LIQUIDITY_SNAPSHOTS.SUMMARY\n */\nexport const getTokenLiquiditySnapshots = (\n chain: ChainSymbol,\n tokenAddress: string,\n params?: GetTokenLiquiditySnapshotsParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenLiquiditySnapshotPage>(\n { url: `/v1/token/${chain}/${tokenAddress}/liquiditySnapshots`, method: \"GET\", params },\n options,\n );\n};\nexport type SearchResult = NonNullable<Awaited<ReturnType<typeof search>>>;\nexport type GetTokensResult = NonNullable<Awaited<ReturnType<typeof getTokens>>>;\nexport type GetTokenResult = NonNullable<Awaited<ReturnType<typeof getToken>>>;\nexport type GetMetadataResult = NonNullable<Awaited<ReturnType<typeof getMetadata>>>;\nexport type GetMetadataMultiResult = NonNullable<Awaited<ReturnType<typeof getMetadataMulti>>>;\nexport type GetPoolsResult = NonNullable<Awaited<ReturnType<typeof getPools>>>;\nexport type GetStatsResult = NonNullable<Awaited<ReturnType<typeof getStats>>>;\nexport type GetStatsMultiResult = NonNullable<Awaited<ReturnType<typeof getStatsMulti>>>;\nexport type GetHoldersResult = NonNullable<Awaited<ReturnType<typeof getHolders>>>;\nexport type GetHoldersMultiResult = NonNullable<Awaited<ReturnType<typeof getHoldersMulti>>>;\nexport type GetCandlesResult = NonNullable<Awaited<ReturnType<typeof getCandles>>>;\nexport type GetTopHoldersResult = NonNullable<Awaited<ReturnType<typeof getTopHolders>>>;\nexport type GetMarketDataResult = NonNullable<Awaited<ReturnType<typeof getMarketData>>>;\nexport type GetMarketDataMultiResult = NonNullable<Awaited<ReturnType<typeof getMarketDataMulti>>>;\nexport type GetPricesResult = NonNullable<Awaited<ReturnType<typeof getPrices>>>;\nexport type GetPriceByTimeResult = NonNullable<Awaited<ReturnType<typeof getPriceByTime>>>;\nexport type GetCreationResult = NonNullable<Awaited<ReturnType<typeof getCreation>>>;\nexport type GetMintAndBurnResult = NonNullable<Awaited<ReturnType<typeof getMintAndBurn>>>;\nexport type ListTokenResult = NonNullable<Awaited<ReturnType<typeof listToken>>>;\nexport type GetSecurityResult = NonNullable<Awaited<ReturnType<typeof getSecurity>>>;\nexport type GetDevTokensResult = NonNullable<Awaited<ReturnType<typeof getDevTokens>>>;\nexport type GetTokenTradersResult = NonNullable<Awaited<ReturnType<typeof getTokenTraders>>>;\nexport type GetTokenLiquiditySnapshotsResult = NonNullable<\n Awaited<ReturnType<typeof getTokenLiquiditySnapshots>>\n>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n ChainSymbol,\n GetActivitiesParams,\n GetTopTradersParams,\n GetTradesParams,\n TopTradersPage,\n TradePage,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.TRADE.GET.TOKEN.DESCRIPTION\n * @summary CONTROLLER.TRADE.GET.TOKEN.SUMMARY\n */\nexport const getTrades = (\n chain: ChainSymbol,\n params?: GetTradesParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TradePage>(\n { url: `/v1/trade/${chain}`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TRADE.GET.TOKEN_ACTIVITIES.DESCRIPTION\n * @summary CONTROLLER.TRADE.GET.TOKEN_ACTIVITIES.SUMMARY\n */\nexport const getActivities = (\n chain: ChainSymbol,\n params?: GetActivitiesParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TradePage>(\n { url: `/v1/trade/${chain}/activities`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TRADE.GET.TOP_TRADERS.DESCRIPTION\n * @summary CONTROLLER.TRADE.GET.TOP_TRADERS.SUMMARY\n */\nexport const getTopTraders = (\n chain: ChainSymbol,\n params: GetTopTradersParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TopTradersPage>(\n { url: `/v1/trade/${chain}/top-traders`, method: \"GET\", params },\n options,\n );\n};\nexport type GetTradesResult = NonNullable<Awaited<ReturnType<typeof getTrades>>>;\nexport type GetActivitiesResult = NonNullable<Awaited<ReturnType<typeof getActivities>>>;\nexport type GetTopTradersResult = NonNullable<Awaited<ReturnType<typeof getTopTraders>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n EstimateGasLimitInput,\n EstimateGasLimitResponse,\n GasPriceResponse,\n SendTxInput,\n SendTxResponse,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.TRANSACTION.SEND.DESCRIPTION\n * @summary CONTROLLER.TRANSACTION.SEND.SUMMARY\n */\nexport const send = (\n chain: string,\n sendTxInput: SendTxInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<SendTxResponse>(\n {\n url: `/v1/transaction/${chain}/send`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: sendTxInput,\n },\n options,\n );\n};\n/**\n * CONTROLLER.TRANSACTION.GET_GAS_PRICE.DESCRIPTION\n * @summary CONTROLLER.TRANSACTION.GET_GAS_PRICE.SUMMARY\n */\nexport const getGasPrice = (\n chain: \"bsc\" | \"eth\",\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<GasPriceResponse>(\n { url: `/v1/transaction/${chain}/gas-price`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.TRANSACTION.ESTIMATE_GAS_LIMIT.DESCRIPTION\n * @summary CONTROLLER.TRANSACTION.ESTIMATE_GAS_LIMIT.SUMMARY\n */\nexport const getGasLimit = (\n chain: \"bsc\" | \"eth\",\n estimateGasLimitInput: EstimateGasLimitInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<EstimateGasLimitResponse>(\n {\n url: `/v1/transaction/${chain}/estimate-gas-limit`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: estimateGasLimitInput,\n },\n options,\n );\n};\nexport type SendResult = NonNullable<Awaited<ReturnType<typeof send>>>;\nexport type GetGasPriceResult = NonNullable<Awaited<ReturnType<typeof getGasPrice>>>;\nexport type GetGasLimitResult = NonNullable<Awaited<ReturnType<typeof getGasLimit>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n BalanceUpdatePage,\n BooleanResultDTO,\n CalculatePnlInput,\n ChainSymbol,\n GetBalanceParams,\n GetBalanceUpdatesParams,\n GetPnlParams,\n WalletBalancesDTO,\n WalletPnlDTO,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.WALLET.GET_PNL.DESCRIPTION\n * @summary CONTROLLER.WALLET.GET_PNL.SUMMARY\n */\nexport const getPnl = (\n chain: ChainSymbol,\n walletAddress: string,\n params?: GetPnlParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<WalletPnlDTO[]>(\n { url: `/v1/wallet/${chain}/${walletAddress}`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.WALLET.GET_PNL_STATS.DESCRIPTION\n * @summary CONTROLLER.WALLET.GET_PNL_STATS.SUMMARY\n */\nexport const getPnlStats = (\n chain: ChainSymbol,\n walletAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<WalletPnlDTO[]>(\n { url: `/v1/wallet/${chain}/${walletAddress}/stats`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.WALLET.GET_BALANCES.DESCRIPTION\n * @summary CONTROLLER.WALLET.GET_BALANCES.SUMMARY\n */\nexport const getBalance = (\n chain: ChainSymbol,\n walletAddress: string,\n params?: GetBalanceParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<WalletBalancesDTO>(\n { url: `/v1/wallet/${chain}/${walletAddress}/balance`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.WALLET.CALCULATE_PNL.DESCRIPTION\n * @summary CONTROLLER.WALLET.CALCULATE_PNL.SUMMARY\n */\nexport const calculatePnl = (\n chain: ChainSymbol,\n walletAddress: string,\n calculatePnlInput: CalculatePnlInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<BooleanResultDTO>(\n {\n url: `/v1/wallet/${chain}/${walletAddress}/calculate-pnl`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: calculatePnlInput,\n },\n options,\n );\n};\n/**\n * CONTROLLER.WALLET.GET_BALANCE_UPDATES.DESCRIPTION\n * @summary CONTROLLER.WALLET.GET_BALANCE_UPDATES.SUMMARY\n */\nexport const getBalanceUpdates = (\n chain: ChainSymbol,\n walletAddress: string,\n params?: GetBalanceUpdatesParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<BalanceUpdatePage>(\n { url: `/v1/wallet/${chain}/${walletAddress}/balance-updates`, method: \"GET\", params },\n options,\n );\n};\nexport type GetPnlResult = NonNullable<Awaited<ReturnType<typeof getPnl>>>;\nexport type GetPnlStatsResult = NonNullable<Awaited<ReturnType<typeof getPnlStats>>>;\nexport type GetBalanceResult = NonNullable<Awaited<ReturnType<typeof getBalance>>>;\nexport type CalculatePnlResult = NonNullable<Awaited<ReturnType<typeof calculatePnl>>>;\nexport type GetBalanceUpdatesResult = NonNullable<Awaited<ReturnType<typeof getBalanceUpdates>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type { BooleanResultDTO, ChainSymbol } from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.WATCHLIST.ADD.DESCRIPTION\n * @summary CONTROLLER.WATCHLIST.ADD.SUMMARY\n */\nexport const watchlistAdd = (\n chain: ChainSymbol,\n walletAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<BooleanResultDTO>(\n { url: `/v1/watchlist/${chain}/${walletAddress}`, method: \"POST\" },\n options,\n );\n};\nexport type WatchlistAddResult = NonNullable<Awaited<ReturnType<typeof watchlistAdd>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\n/**\n * DTO.JOB.RESULT\n */\nexport type JobDTOResult = { [key: string]: unknown };\n\nexport interface JobDTO {\n /** DTO.JOB.STATE */\n state: string;\n /** DTO.JOB.RESULT */\n result: JobDTOResult;\n}\n\n/**\n * DTO.JOB.STREAMING.DATA\n */\nexport type JobStreamingDTOData = { [key: string]: unknown };\n\nexport interface JobStreamingDTO {\n /** DTO.JOB.STREAMING.ID */\n id: number;\n /** DTO.JOB.STREAMING.DATA */\n data: JobStreamingDTOData;\n}\n\nexport interface BlockchainDTO {\n /** DTO.BLOCKCHAIN.SYMBOL */\n symbol: string;\n /** DTO.BLOCKCHAIN.NAME */\n name: string;\n /** DTO.BLOCKCHAIN.EXPLORER_URL */\n explorerUrl: string;\n /** DTO.BLOCKCHAIN.CHAIN_ID */\n chainId: number;\n}\n\nexport type ChainSymbol = (typeof ChainSymbol)[keyof typeof ChainSymbol];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ChainSymbol = {\n sol: \"sol\",\n bsc: \"bsc\",\n eth: \"eth\",\n} as const;\n\nexport interface BlockchainLatestBlockDTO {\n /** DTO.BLOCKCHAIN.LATEST_BLOCK.BLOCKHASH */\n blockhash: string;\n /** DTO.BLOCKCHAIN.LATEST_BLOCK.LAST_VALID_BLOCK_HEIGHT */\n lastValidBlockHeight: number;\n}\n\n/**\n * DTO.TRANSACTION.SEND.SUBMIT_TYPE\n */\nexport type SendTxInputSubmitType =\n (typeof SendTxInputSubmitType)[keyof typeof SendTxInputSubmitType];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SendTxInputSubmitType = {\n default: \"default\",\n priority: \"priority\",\n} as const;\n\n/**\n * DTO.TRANSACTION.SEND.OPTIONS\n */\nexport type SendTxInputOptions = { [key: string]: unknown };\n\nexport interface SendTxInput {\n /** DTO.TRANSACTION.SEND.SIGNED_TX */\n signedTx: string;\n /** DTO.TRANSACTION.SEND.SUBMIT_TYPE */\n submitType?: SendTxInputSubmitType;\n /** DTO.TRANSACTION.SEND.OPTIONS */\n options?: SendTxInputOptions;\n}\n\nexport interface SendTxResponse {\n /** DTO.TRANSACTION.SEND.SIGNATURE */\n signature: string;\n /** DTO.TRANSACTION.SEND.ELAPSED_TIME */\n elapsedTime: number;\n /** DTO.TRANSACTION.SEND.JOB_ID */\n jobId: string;\n}\n\nexport interface GasPriceResponse {\n /** Current gas price in wei (hex string) */\n gasPrice: string;\n /** Chain symbol */\n chain: string;\n}\n\nexport interface EstimateGasLimitInput {\n /** From address */\n from: string;\n /** To address */\n to: string;\n /** Transaction data (hex) */\n data: string;\n /** Value to send (in wei, hex string) */\n value?: string;\n}\n\nexport interface EstimateGasLimitResponse {\n /** Estimated gas limit (hex string) */\n gasLimit: string;\n /** Chain symbol */\n chain: string;\n}\n\n/**\n * DTO.DEX.IDENTIFIER\n */\nexport type SwapInputDex = (typeof SwapInputDex)[keyof typeof SwapInputDex];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SwapInputDex = {\n raydium: \"raydium\",\n pumpfun: \"pumpfun\",\n moonshot: \"moonshot\",\n candy: \"candy\",\n launchpad: \"launchpad\",\n} as const;\n\n/**\n * DTO.DEX.SWAP.MODE\n */\nexport type SwapInputSwapMode = (typeof SwapInputSwapMode)[keyof typeof SwapInputSwapMode];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SwapInputSwapMode = {\n ExactIn: \"ExactIn\",\n ExactOut: \"ExactOut\",\n} as const;\n\nexport interface SwapInput {\n /** DTO.DEX.IDENTIFIER */\n dex: SwapInputDex;\n /**\n * DTO.DEX.WALLET\n * @minLength 8\n * @maxLength 64\n */\n userAddress: string;\n /** DTO.DEX.BASE.PRIORITY_FEE */\n priorityFee?: string;\n /** DTO.DEX.SWAP.POOL_ADDRESS */\n poolAddress?: string;\n /** DTO.DEX.SWAP.AMOUNT */\n amount: string;\n /** DTO.DEX.SWAP.MODE */\n swapMode: SwapInputSwapMode;\n /**\n * DTO.DEX.SWAP.SLIPPAGE\n * @minimum 0\n * @maximum 100\n */\n slippage: number;\n /** DTO.DEX.SWAP.INPUT_MINT */\n inputMint?: string;\n /** DTO.DEX.SWAP.OUTPUT_MINT */\n outputMint?: string;\n}\n\nexport interface SwapReply {\n /** DTO.DEX.SWAP.SERIALIZED_TX */\n serializedTx: string;\n /** DTO.DEX.SWAP.ELAPSED_TIME */\n elapsedTime: number;\n}\n\n/**\n * DTO.DEX.IDENTIFIER\n */\nexport type SwapRouteInputDex = (typeof SwapRouteInputDex)[keyof typeof SwapRouteInputDex];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SwapRouteInputDex = {\n jupiter: \"jupiter\",\n kyberswap: \"kyberswap\",\n} as const;\n\n/**\n * DTO.DEX.SWAP.MODE\n */\nexport type SwapRouteInputSwapMode =\n (typeof SwapRouteInputSwapMode)[keyof typeof SwapRouteInputSwapMode];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SwapRouteInputSwapMode = {\n ExactIn: \"ExactIn\",\n ExactOut: \"ExactOut\",\n} as const;\n\nexport interface SwapRouteInput {\n /** DTO.DEX.IDENTIFIER */\n dex: SwapRouteInputDex;\n /**\n * DTO.DEX.WALLET\n * @minLength 8\n * @maxLength 64\n */\n userAddress: string;\n /** DTO.DEX.BASE.PRIORITY_FEE */\n priorityFee?: string;\n /** DTO.DEX.SWAP.AMOUNT */\n amount: string;\n /** DTO.DEX.SWAP.MODE */\n swapMode: SwapRouteInputSwapMode;\n /**\n * DTO.DEX.SWAP.SLIPPAGE\n * @minimum 0\n * @maximum 100\n */\n slippage: number;\n /** DTO.DEX.SWAP.INPUT_MINT */\n inputMint?: string;\n /** DTO.DEX.SWAP.OUTPUT_MINT */\n outputMint?: string;\n /** DTO.DEX.SWAP.RECIPIENT_ADDRESS */\n recipientAddress?: string;\n /** DTO.DEX.SWAP.PERMIT */\n permit?: string;\n /** DTO.DEX.SWAP.DEADLINE */\n deadline?: number;\n /** DTO.DEX.BASE.TIP_FEE */\n tipFee?: string;\n /** DTO.DEX.BASE.IS_ANTI_MEV */\n isAntiMev?: boolean;\n}\n\n/**\n * DTO.DEX.SWAP.ROUTE_INFO\n */\nexport type SwapRouteResponseRouteInfo = { [key: string]: unknown };\n\nexport interface SwapRouteResponse {\n /** DTO.DEX.SWAP.ARGS */\n args: SwapRouteInput;\n /** DTO.DEX.SWAP.SERIALIZED_TX */\n serializedTx: string;\n /** DTO.DEX.SWAP.ROUTE_INFO */\n routeInfo: SwapRouteResponseRouteInfo;\n /** DTO.DEX.SWAP.ELAPSED_TIME */\n elapsedTime: number;\n}\n\nexport interface DexQuoteResponse {\n /** DTO.DEX.QUOTE.AMOUNT_OUT */\n amountOut?: string;\n /** DTO.DEX.QUOTE.MIN_AMOUNT_OUT */\n minAmountOut?: string;\n /** DTO.DEX.QUOTE.CURRENT_PRICE */\n currentPrice?: string;\n /** DTO.DEX.QUOTE.EXECUTION_PRICE */\n executionPrice?: string;\n /** DTO.DEX.QUOTE.PRICE_IMPACT */\n priceImpact?: string;\n /** DTO.DEX.QUOTE.FEE */\n fee?: string;\n}\n\n/**\n * DTO.DEX.IDENTIFIER\n */\nexport type CreateTokenInputDex = (typeof CreateTokenInputDex)[keyof typeof CreateTokenInputDex];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const CreateTokenInputDex = {\n raydium: \"raydium\",\n pumpfun: \"pumpfun\",\n moonshot: \"moonshot\",\n candy: \"candy\",\n launchpad: \"launchpad\",\n} as const;\n\n/**\n * DTO.DEX.MINT.EXTRA\n */\nexport type CreateTokenInputExtra = { [key: string]: unknown };\n\nexport interface CreateTokenInput {\n /** DTO.DEX.IDENTIFIER */\n dex: CreateTokenInputDex;\n /**\n * DTO.DEX.WALLET\n * @minLength 8\n * @maxLength 64\n */\n userAddress: string;\n /** DTO.DEX.BASE.PRIORITY_FEE */\n priorityFee?: string;\n /**\n * DTO.DEX.MINT.NAME\n * @minLength 1\n * @maxLength 32\n */\n name: string;\n /**\n * DTO.DEX.MINT.SYMBOL\n * @minLength 1\n * @maxLength 10\n */\n symbol: string;\n /** DTO.DEX.MINT.URI */\n uri?: string;\n /** DTO.DEX.MINT.IMAGE */\n image?: string;\n /** DTO.DEX.MINT.EXTRA */\n extra?: CreateTokenInputExtra;\n}\n\nexport interface CreateTokenReply {\n /** DTO.DEX.CREATE_TOKEN.SERIALIZED_TX */\n serializedTx: string;\n /** DTO.DEX.CREATE_TOKEN.MINT_ADDRESS */\n mintAddress: string;\n}\n\nexport interface DexDTO {\n /** DTO.DEX.PROGRAM_ADDRESS */\n programAddress?: string;\n /** DTO.DEX.PROTOCOL_FAMILY */\n protocolFamily?: string;\n /** DTO.DEX.IMAGE */\n image?: string;\n /** DTO.DEX.CHAIN */\n chain: string;\n}\n\nexport interface DexPage {\n /** DTO.PAGE.HAS_NEXT */\n hasNext?: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev?: boolean;\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.TOTAL */\n total?: number;\n /** DTO.DEX.PAGE.DATA */\n data: DexDTO[];\n}\n\n/**\n * DTO.DEX.MOONSHOT.LINK.LABEL\n */\nexport type LinkLabel = (typeof LinkLabel)[keyof typeof LinkLabel];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const LinkLabel = {\n website: \"website\",\n twitter: \"twitter\",\n telegram: \"telegram\",\n discord: \"discord\",\n} as const;\n\nexport interface Link {\n /** DTO.DEX.MOONSHOT.LINK.URL */\n url: string;\n /** DTO.DEX.MOONSHOT.LINK.LABEL */\n label: LinkLabel;\n}\n\n/**\n * DTO.DEX.IDENTIFIER\n */\nexport type MoonshotCreateTokenInputDex =\n (typeof MoonshotCreateTokenInputDex)[keyof typeof MoonshotCreateTokenInputDex];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const MoonshotCreateTokenInputDex = {\n moonshot: \"moonshot\",\n} as const;\n\n/**\n * DTO.DEX.MOONSHOT.MINT.MIGRATION_DEX\n */\nexport type MoonshotCreateTokenInputMigrationDex =\n (typeof MoonshotCreateTokenInputMigrationDex)[keyof typeof MoonshotCreateTokenInputMigrationDex];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const MoonshotCreateTokenInputMigrationDex = {\n RAYDIUM: \"RAYDIUM\",\n METEORA: \"METEORA\",\n UNISWAP: \"UNISWAP\",\n} as const;\n\nexport interface MoonshotCreateTokenInput {\n /** DTO.DEX.IDENTIFIER */\n dex: MoonshotCreateTokenInputDex;\n /**\n * DTO.DEX.WALLET\n * @minLength 8\n * @maxLength 64\n */\n userAddress: string;\n /** DTO.DEX.BASE.PRIORITY_FEE */\n priorityFee?: string;\n /**\n * DTO.DEX.MOONSHOT.MINT.NAME\n * @minLength 1\n * @maxLength 32\n */\n name: string;\n /**\n * DTO.DEX.MOONSHOT.MINT.SYMBOL\n * @minLength 1\n * @maxLength 10\n */\n symbol: string;\n /** DTO.DEX.MOONSHOT.MINT.MIGRATION_DEX */\n migrationDex: MoonshotCreateTokenInputMigrationDex;\n /**\n * DTO.DEX.MOONSHOT.MINT.ICON\n * @pattern ^(https?://|data:image/)\n */\n icon: string;\n /**\n * DTO.DEX.MOONSHOT.MINT.DESCRIPTION\n * @maxLength 1000\n */\n description: string;\n /** DTO.DEX.MOONSHOT.MINT.LINKS */\n links: Link[];\n /** DTO.DEX.MOONSHOT.MINT.BANNER */\n banner?: string;\n /**\n * DTO.DEX.MOONSHOT.MINT.TOKEN_AMOUNT\n * @pattern ^[0-9]+$\n */\n tokenAmount: string;\n}\n\n/**\n * DTO.DEX.MOONSHOT.CREATE_TOKEN.EXTRA\n */\nexport type MoonshotCreateTokenReplyExtra = { [key: string]: unknown };\n\nexport interface MoonshotCreateTokenReply {\n /** DTO.DEX.MOONSHOT.CREATE_TOKEN.SERIALIZED_TX */\n serializedTx: string;\n /** DTO.DEX.MOONSHOT.CREATE_TOKEN.EXTRA */\n extra: MoonshotCreateTokenReplyExtra;\n}\n\n/**\n * DTO.DEX.MOONSHOT.SUBMIT.CREATE_TOKEN.EXTRA\n */\nexport type MoonshotSubmitCreateTokenInputExtra = { [key: string]: unknown };\n\nexport interface MoonshotSubmitCreateTokenInput {\n /** DTO.DEX.MOONSHOT.SUBMIT.CREATE_TOKEN.SIGNED_TX */\n signedTx: string;\n /** DTO.DEX.MOONSHOT.SUBMIT.CREATE_TOKEN.EXTRA */\n extra?: MoonshotSubmitCreateTokenInputExtra;\n}\n\n/**\n * DTO.DEX.IDENTIFIER\n */\nexport type PumpCreateTokenInputDex =\n (typeof PumpCreateTokenInputDex)[keyof typeof PumpCreateTokenInputDex];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PumpCreateTokenInputDex = {\n pumpfun: \"pumpfun\",\n} as const;\n\n/**\n * DTO.DEX.PUMPFUN.MINT.MIGRATION_DEX\n */\nexport type PumpCreateTokenInputMigrationDex =\n (typeof PumpCreateTokenInputMigrationDex)[keyof typeof PumpCreateTokenInputMigrationDex];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PumpCreateTokenInputMigrationDex = {\n RAYDIUM: \"RAYDIUM\",\n METEORA: \"METEORA\",\n} as const;\n\nexport interface PumpCreateTokenInput {\n /** DTO.DEX.IDENTIFIER */\n dex: PumpCreateTokenInputDex;\n /**\n * DTO.DEX.WALLET\n * @minLength 8\n * @maxLength 64\n */\n userAddress: string;\n /** DTO.DEX.BASE.PRIORITY_FEE */\n priorityFee?: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.TWITTER\n * @pattern ^(@[a-zA-Z0-9_]{1,15}|https://twitter.com/[a-zA-Z0-9_]{1,15})$\n */\n twitter?: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.TELEGRAM\n * @pattern ^https://t.me/\n */\n telegram?: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.WEBSITE\n * @pattern ^https?://\n */\n website?: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.NAME\n * @minLength 1\n * @maxLength 32\n */\n name: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.SYMBOL\n * @minLength 1\n * @maxLength 10\n */\n symbol: string;\n /** DTO.DEX.PUMPFUN.MINT.MIGRATION_DEX */\n migrationDex: PumpCreateTokenInputMigrationDex;\n /** DTO.DEX.PUMPFUN.MINT.IMAGE */\n image: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.MINT_ADDRESS\n * @minLength 32\n * @maxLength 44\n */\n mintAddress: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.DESCRIPTION\n * @maxLength 1000\n */\n description: string;\n}\n\n/**\n * DTO.DEX.PUMPFUN.MINT.EXTRA\n */\nexport type PumpCreateTokenReplyExtra = { [key: string]: unknown };\n\nexport interface PumpCreateTokenReply {\n /** DTO.DEX.PUMPFUN.MINT.SERIALIZED_TX */\n serializedTx: string;\n /** DTO.DEX.PUMPFUN.MINT.EXTRA */\n extra?: PumpCreateTokenReplyExtra;\n}\n\nexport interface TradeDetailDTO {\n /** DTO.TRADE.DETAIL.CHAIN */\n chain: string;\n /** DTO.TRADE.DETAIL.BLOCK_HEIGHT */\n blockHeight: number;\n /** DTO.TRADE.DETAIL.BLOCK_TIMESTAMP */\n blockTimestamp: number;\n /** DTO.TRADE.DETAIL.ACCOUNT_OWNER_ADDRESS */\n accountOwnerAddress: string;\n /** DTO.TRADE.DETAIL.TRANSACTION_SIGNATURE */\n transactionSignature: string;\n /** DTO.TRADE.DETAIL.TOKEN_NAME */\n tokenName: string;\n /** DTO.TRADE.DETAIL.TOKEN_SYMBOL */\n tokenSymbol: string;\n /** DTO.TRADE.DETAIL.TOKEN_IMAGE_URL */\n tokenImageUrl: string;\n /** DTO.TRADE.DETAIL.TOKEN_ADDRESS */\n tokenAddress: string;\n /** DTO.TRADE.DETAIL.POOL_ADDRESS */\n poolAddress: string;\n /** DTO.TRADE.DETAIL.DEX_PROGRAM_ADDRESS */\n dexProgramAddress: string;\n /** DTO.TRADE.DETAIL.DEX_PROTOCOL_FAMILY */\n dexProtocolFamily: string;\n /** DTO.TRADE.DETAIL.DEX_IMAGE */\n dexImage: string;\n /** DTO.TRADE.DETAIL.TOKEN_AMOUNT */\n tokenAmount: string;\n /** DTO.TRADE.DETAIL.TOKEN_PRICE_IN_USD */\n tokenPriceInUsd: string;\n /** DTO.TRADE.DETAIL.TOKEN_AMOUNT_IN_USD */\n tokenAmountInUsd: string;\n /** DTO.TRADE.DETAIL.TYPE */\n type: string;\n /** DTO.TRADE.DETAIL.SIDE_TOKEN_NAME */\n sideTokenName: string;\n /** DTO.TRADE.DETAIL.SIDE_TOKEN_SYMBOL */\n sideTokenSymbol: string;\n /** DTO.TRADE.DETAIL.SIDE_TOKEN_IMAGE_URL */\n sideTokenImageUrl: string;\n /** DTO.TRADE.DETAIL.SIDE_TOKEN_ADDRESS */\n sideTokenAddress: string;\n /** DTO.TRADE.DETAIL.SIDE_TOKEN_PRICE_IN_USD */\n sideTokenPriceInUsd: string;\n /** DTO.TRADE.DETAIL.SIDE_TOKEN_AMOUNT */\n sideTokenAmount: string;\n /** DTO.TRADE.DETAIL.SIDE_TOKEN_AMOUNT_IN_USD */\n sideTokenAmountInUsd: string;\n /** DTO.TRADE.DETAIL.STATUS */\n status: string;\n}\n\nexport interface TradePage {\n /** DTO.PAGE.HAS_NEXT */\n hasNext?: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev?: boolean;\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.TOTAL */\n total?: number;\n /** DTO.TRADE.PAGE.DATA */\n data: TradeDetailDTO[];\n}\n\nexport interface TopTradersDTO {\n /** DTO.TRADE.TOP_TRADERS.TOKEN_ADDRESS */\n tokenAddress: string;\n /** DTO.TRADE.TOP_TRADERS.WALLET_ADDRESS */\n walletAddress: string;\n /** DTO.TRADE.TOP_TRADERS.TRADE_COUNT */\n tradeCount: number;\n /** DTO.TRADE.TOP_TRADERS.TRADE_AMOUNT */\n tradeAmount: string;\n /** DTO.TRADE.TOP_TRADERS.BUY_COUNT */\n buyCount: number;\n /** DTO.TRADE.TOP_TRADERS.BUY_AMOUNT */\n buyAmount: string;\n /** DTO.TRADE.TOP_TRADERS.BUY_AMOUNT_IN_USD */\n buyAmountInUsd: string;\n /** DTO.TRADE.TOP_TRADERS.BUY_AMOUNT_IN_NATIVE */\n buyAmountInNative: string;\n /** DTO.TRADE.TOP_TRADERS.SELL_COUNT */\n sellCount: number;\n /** DTO.TRADE.TOP_TRADERS.SELL_AMOUNT */\n sellAmount: string;\n /** DTO.TRADE.TOP_TRADERS.SELL_AMOUNT_IN_USD */\n sellAmountInUsd: string;\n /** DTO.TRADE.TOP_TRADERS.SELL_AMOUNT_IN_NATIVE */\n sellAmountInNative: string;\n}\n\nexport interface TopTradersPage {\n /** DTO.PAGE.HAS_NEXT */\n hasNext?: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev?: boolean;\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.TOTAL */\n total?: number;\n /** DTO.TRADE.TOP_TRADERS.PAGE.DATA */\n data: TopTradersDTO[];\n}\n\nexport interface TokenCreatorsDTO {\n /** DTO.TOKEN.CREATORS.ADDRESS */\n address?: string;\n /** DTO.TOKEN.CREATORS.SHARE */\n share?: number;\n /** DTO.TOKEN.CREATORS.IS_VERIFIED */\n isVerified?: boolean;\n}\n\nexport interface TokenExtraDTO {\n /** DTO.TOKEN.EXTRA.COLLECTION_ADDRESS */\n collectionAddress?: string;\n /** DTO.TOKEN.EXTRA.EDITION_NONCE */\n editionNonce?: number;\n /** DTO.TOKEN.EXTRA.FUNGIBLE */\n fungible?: boolean;\n /** DTO.TOKEN.EXTRA.IS_MUTABLE */\n isMutable?: boolean;\n /** DTO.TOKEN.EXTRA.KEY */\n key?: string;\n /** DTO.TOKEN.EXTRA.IS_NATIVE */\n isNative?: boolean;\n /** DTO.TOKEN.EXTRA.PRIMARY_SALE_HAPPENED */\n primarySaleHappened?: boolean;\n /** DTO.TOKEN.EXTRA.LAUNCH_FROM_PROGRAM_ADDRESS */\n launchFromProgramAddress?: string;\n /** DTO.TOKEN.EXTRA.LAUNCH_FROM_PROTOCOL_FAMILY */\n launchFromProtocolFamily?: string;\n /** DTO.TOKEN.EXTRA.PROGRAM_ADDRESS */\n programAddress?: string;\n /** DTO.TOKEN.EXTRA.MIGRATED_TO_PROGRAM_ADDRESS */\n migratedToProgramAddress?: string;\n /** DTO.TOKEN.EXTRA.MIGRATED_TO_PROTOCOL_FAMILY */\n migratedToProtocolFamily?: string;\n /** DTO.TOKEN.EXTRA.MIGRATED_TO_POOL_ADDRESS */\n migratedToPoolAddress?: string;\n /** DTO.TOKEN.EXTRA.MIGRATED_AT */\n migratedAt?: number;\n /** DTO.TOKEN.EXTRA.SELLER_FEE_BASIS_POINTS */\n sellerFeeBasisPoints?: number;\n /** DTO.TOKEN.EXTRA.TOKEN_STANDARD */\n tokenStandard?: string;\n /** DTO.TOKEN.EXTRA.MINT_AUTHORITY */\n mintAuthority?: string;\n /** DTO.TOKEN.EXTRA.FREEZE_AUTHORITY */\n freezeAuthority?: string;\n /** DTO.TOKEN.EXTRA.UPDATE_AUTHORITY */\n updateAuthority?: string;\n /** DTO.TOKEN.EXTRA.IS_VERIFIED_COLLECTION */\n isVerifiedCollection?: boolean;\n /** DTO.TOKEN.EXTRA.IS_WRAPPED */\n isWrapped?: boolean;\n}\n\nexport interface TokenSocialMediasDTO {\n /** DTO.TOKEN.SOCIAL_MEDIAS.TWITTER */\n twitter?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.TELEGRAM */\n telegram?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.WEBSITE */\n website?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.TIKTOK */\n tiktok?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.DISCORD */\n discord?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.FACEBOOK */\n facebook?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.GITHUB */\n github?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.INSTAGRAM */\n instagram?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.LINKEDIN */\n linkedin?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.MEDIUM */\n medium?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.REDDIT */\n reddit?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.YOUTUBE */\n youtube?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.BITBUCKET */\n bitbucket?: string;\n}\n\nexport interface TokenStat {\n /** DTO.TOKEN.STAT.ADDRESS */\n address: string;\n /** DTO.TOKEN.STAT.PRICE_1M */\n price1m: string;\n /** DTO.TOKEN.STAT.BUYS_1M */\n buys1m: string;\n /** DTO.TOKEN.STAT.SELLS_1M */\n sells1m: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_1M */\n buyVolumes1m: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_1M */\n sellsVolumes1m: string;\n /** DTO.TOKEN.STAT.VOLUMES_1M */\n volumes1m: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_1M */\n buyVolumesInUsd1m: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_1M */\n sellVolumesInUsd1m: string;\n /** DTO.TOKEN.STAT.VOLUMES_IN_USD_1M */\n volumesInUsd1m: string;\n /** DTO.TOKEN.STAT.BUYERS_1M */\n buyers1m?: string;\n /** DTO.TOKEN.STAT.SELLERS_1M */\n sellers1m?: string;\n /** DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_1M */\n openPriceInUsd1m: string;\n /** DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_1M */\n closePriceInUsd1m: string;\n /** DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_1M */\n priceChangeRatioInUsd1m: string;\n /** DTO.TOKEN.STAT.TRADES_1M */\n trades1m: string;\n /** DTO.TOKEN.STAT.TRADERS_1M */\n traders1m?: string;\n /** DTO.TOKEN.STAT.HIGH_IN_USD_1M */\n highInUsd1m?: string;\n /** DTO.TOKEN.STAT.LOW_IN_USD_1M */\n lowInUsd1m?: string;\n /** DTO.TOKEN.STAT.PRICE_5M */\n price5m: string;\n /** DTO.TOKEN.STAT.BUYS_5M */\n buys5m: string;\n /** DTO.TOKEN.STAT.SELLS_5M */\n sells5m: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_5M */\n buyVolumes5m: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_5M */\n sellsVolumes5m: string;\n /** DTO.TOKEN.STAT.VOLUMES_5M */\n volumes5m: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_5M */\n buyVolumesInUsd5m: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_5M */\n sellVolumesInUsd5m: string;\n /** DTO.TOKEN.STAT.VOLUMES_IN_USD_5M */\n volumesInUsd5m: string;\n /** DTO.TOKEN.STAT.BUYERS_5M */\n buyers5m?: string;\n /** DTO.TOKEN.STAT.SELLERS_5M */\n sellers5m?: string;\n /** DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_5M */\n openPriceInUsd5m: string;\n /** DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_5M */\n closePriceInUsd5m: string;\n /** DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_5M */\n priceChangeRatioInUsd5m: string;\n /** DTO.TOKEN.STAT.TRADES_5M */\n trades5m: string;\n /** DTO.TOKEN.STAT.TRADERS_5M */\n traders5m?: string;\n /** DTO.TOKEN.STAT.HIGH_IN_USD_5M */\n highInUsd5m?: string;\n /** DTO.TOKEN.STAT.LOW_IN_USD_5M */\n lowInUsd5m?: string;\n /** DTO.TOKEN.STAT.PRICE_15M */\n price15m?: string;\n /** DTO.TOKEN.STAT.BUYS_15M */\n buys15m?: string;\n /** DTO.TOKEN.STAT.SELLS_15M */\n sells15m?: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_15M */\n buyVolumes15m?: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_15M */\n sellsVolumes15m?: string;\n /** DTO.TOKEN.STAT.VOLUMES_15M */\n volumes15m?: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_15M */\n buyVolumesInUsd15m?: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_15M */\n sellVolumesInUsd15m?: string;\n /** DTO.TOKEN.STAT.VOLUMES_IN_USD_15M */\n volumesInUsd15m?: string;\n /** DTO.TOKEN.STAT.BUYERS_15M */\n buyers15m?: string;\n /** DTO.TOKEN.STAT.SELLERS_15M */\n sellers15m?: string;\n /** DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_15M */\n openPriceInUsd15m?: string;\n /** DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_15M */\n closePriceInUsd15m?: string;\n /** DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_15M */\n priceChangeRatioInUsd15m?: string;\n /** DTO.TOKEN.STAT.TRADES_15M */\n trades15m?: string;\n /** DTO.TOKEN.STAT.TRADERS_15M */\n traders15m?: string;\n /** DTO.TOKEN.STAT.HIGH_IN_USD_15M */\n highInUsd15m?: string;\n /** DTO.TOKEN.STAT.LOW_IN_USD_15M */\n lowInUsd15m?: string;\n /** DTO.TOKEN.STAT.PRICE_30M */\n price30m: string;\n /** DTO.TOKEN.STAT.BUYS_30M */\n buys30m: string;\n /** DTO.TOKEN.STAT.SELLS_30M */\n sells30m: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_30M */\n buyVolumes30m: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_30M */\n sellsVolumes30m: string;\n /** DTO.TOKEN.STAT.VOLUMES_30M */\n volumes30m: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_30M */\n buyVolumesInUsd30m: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_30M */\n sellVolumesInUsd30m: string;\n /** DTO.TOKEN.STAT.VOLUMES_IN_USD_30M */\n volumesInUsd30m: string;\n /** DTO.TOKEN.STAT.BUYERS_30M */\n buyers30m?: string;\n /** DTO.TOKEN.STAT.SELLERS_30M */\n sellers30m?: string;\n /** DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_30M */\n openPriceInUsd30m: string;\n /** DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_30M */\n closePriceInUsd30m: string;\n /** DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_30M */\n priceChangeRatioInUsd30m: string;\n /** DTO.TOKEN.STAT.TRADES_30M */\n trades30m: string;\n /** DTO.TOKEN.STAT.TRADERS_30M */\n traders30m?: string;\n /** DTO.TOKEN.STAT.HIGH_IN_USD_30M */\n highInUsd30m?: string;\n /** DTO.TOKEN.STAT.LOW_IN_USD_30M */\n lowInUsd30m?: string;\n /** DTO.TOKEN.STAT.PRICE_1H */\n price1h: string;\n /** DTO.TOKEN.STAT.BUYS_1H */\n buys1h: string;\n /** DTO.TOKEN.STAT.SELLS_1H */\n sells1h: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_1H */\n buyVolumes1h: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_1H */\n sellsVolumes1h: string;\n /** DTO.TOKEN.STAT.VOLUMES_1H */\n volumes1h: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_1H */\n buyVolumesInUsd1h: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_1H */\n sellVolumesInUsd1h: string;\n /** DTO.TOKEN.STAT.VOLUMES_IN_USD_1H */\n volumesInUsd1h: string;\n /** DTO.TOKEN.STAT.BUYERS_1H */\n buyers1h?: string;\n /** DTO.TOKEN.STAT.SELLERS_1H */\n sellers1h?: string;\n /** DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_1H */\n openPriceInUsd1h: string;\n /** DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_1H */\n closePriceInUsd1h: string;\n /** DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_1H */\n priceChangeRatioInUsd1h: string;\n /** DTO.TOKEN.STAT.TRADES_1H */\n trades1h: string;\n /** DTO.TOKEN.STAT.TRADERS_1H */\n traders1h?: string;\n /** DTO.TOKEN.STAT.HIGH_IN_USD_1H */\n highInUsd1h?: string;\n /** DTO.TOKEN.STAT.LOW_IN_USD_1H */\n lowInUsd1h?: string;\n /** DTO.TOKEN.STAT.PRICE_4H */\n price4h: string;\n /** DTO.TOKEN.STAT.BUYS_4H */\n buys4h: string;\n /** DTO.TOKEN.STAT.SELLS_4H */\n sells4h: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_4H */\n buyVolumes4h: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_4H */\n sellsVolumes4h: string;\n /** DTO.TOKEN.STAT.VOLUMES_4H */\n volumes4h: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_4H */\n buyVolumesInUsd4h: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_4H */\n sellVolumesInUsd4h: string;\n /** DTO.TOKEN.STAT.VOLUMES_IN_USD_4H */\n volumesInUsd4h: string;\n /** DTO.TOKEN.STAT.BUYERS_4H */\n buyers4h?: string;\n /** DTO.TOKEN.STAT.SELLERS_4H */\n sellers4h?: string;\n /** DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_4H */\n openPriceInUsd4h: string;\n /** DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_4H */\n closePriceInUsd4h: string;\n /** DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_4H */\n priceChangeRatioInUsd4h: string;\n /** DTO.TOKEN.STAT.TRADES_4H */\n trades4h: string;\n /** DTO.TOKEN.STAT.TRADERS_4H */\n traders4h?: string;\n /** DTO.TOKEN.STAT.HIGH_IN_USD_4H */\n highInUsd4h?: string;\n /** DTO.TOKEN.STAT.LOW_IN_USD_4H */\n lowInUsd4h?: string;\n /** DTO.TOKEN.STAT.PRICE_24H */\n price24h: string;\n /** DTO.TOKEN.STAT.BUYS_24H */\n buys24h: string;\n /** DTO.TOKEN.STAT.SELLS_24H */\n sells24h: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_24H */\n buyVolumes24h: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_24H */\n sellsVolumes24h: string;\n /** DTO.TOKEN.STAT.VOLUMES_24H */\n volumes24h: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_24H */\n buyVolumesInUsd24h: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_24H */\n sellVolumesInUsd24h: string;\n /** DTO.TOKEN.STAT.VOLUMES_IN_USD_24H */\n volumesInUsd24h: string;\n /** DTO.TOKEN.STAT.BUYERS_24H */\n buyers24h?: string;\n /** DTO.TOKEN.STAT.SELLERS_24H */\n sellers24h?: string;\n /** DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_24H */\n openPriceInUsd24h: string;\n /** DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_24H */\n closePriceInUsd24h: string;\n /** DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_24H */\n priceChangeRatioInUsd24h: string;\n /** DTO.TOKEN.STAT.TRADES_24H */\n trades24h: string;\n /** DTO.TOKEN.STAT.TRADERS_24H */\n traders24h?: string;\n /** DTO.TOKEN.STAT.HIGH_IN_USD_24H */\n highInUsd24h?: string;\n /** DTO.TOKEN.STAT.LOW_IN_USD_24H */\n lowInUsd24h?: string;\n}\n\nexport interface DexPoolTokenLiquidity {\n /** DTO.DEXPOOL.TOKEN_ADDRESS */\n tokenAddress: string;\n /** DTO.DEXPOOL.TOKEN_DECIMALS */\n tokenDecimals: number;\n /** DTO.DEXPOOL.VAULT_AMOUNT */\n vaultAmount: string;\n /** DTO.DEXPOOL.AMOUNT_IN_USD */\n amountInUsd: string;\n /** DTO.DEXPOOL.AMOUNT_IN_NATIVE */\n amountInNative: string;\n /** DTO.DEXPOOL.PRICE_USD */\n priceUsd: string;\n /** DTO.DEXPOOL.PRICE_NATIVE */\n priceNative: string;\n}\n\n/**\n * DTO.DEXPOOL.TYPE\n */\nexport type DexPoolDTOType = (typeof DexPoolDTOType)[keyof typeof DexPoolDTOType];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const DexPoolDTOType = {\n NUMBER_0: 0,\n NUMBER_1: 1,\n NUMBER_2: 2,\n NUMBER_3: 3,\n NUMBER_4: 4,\n} as const;\n\n/**\n * DTO.DEXPOOL.VERSION\n */\nexport type DexPoolDTOVersion = (typeof DexPoolDTOVersion)[keyof typeof DexPoolDTOVersion];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const DexPoolDTOVersion = {\n NUMBER_0: 0,\n NUMBER_1: 1,\n NUMBER_2: 2,\n NUMBER_3: 3,\n} as const;\n\n/**\n * DTO.DEXPOOL.LIQUIDITY_MODEL\n */\nexport type DexPoolDTOLiquidityModel =\n (typeof DexPoolDTOLiquidityModel)[keyof typeof DexPoolDTOLiquidityModel];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const DexPoolDTOLiquidityModel = {\n NUMBER_0: 0,\n NUMBER_1: 1,\n NUMBER_2: 2,\n NUMBER_3: 3,\n NUMBER_4: 4,\n} as const;\n\nexport interface DexPoolDTO {\n /** DTO.DEX.PROGRAM_ADDRESS */\n programAddress?: string;\n /** DTO.DEX.PROTOCOL_FAMILY */\n protocolFamily?: string;\n /** DTO.DEX.IMAGE */\n image?: string;\n /** DTO.DEX.CHAIN */\n chain: string;\n /** DTO.DEXPOOL.POOL_ADDRESS */\n poolAddress: string;\n /** DTO.DEXPOOL.PROTOCOL_NAME */\n protocolName?: string;\n /** DTO.DEXPOOL.TOKEN_A */\n tokenAAddress: string;\n /** DTO.DEXPOOL.TOKEN_B */\n tokenBAddress: string;\n /** DTO.DEXPOOL.TVL_USD */\n tvlInUsd?: string;\n /** DTO.DEXPOOL.TVL_SOL */\n tvlInSol?: string;\n /** DTO.DEXPOOL.TYPE */\n type?: DexPoolDTOType;\n /** DTO.DEXPOOL.VERSION */\n version?: DexPoolDTOVersion;\n /** DTO.DEXPOOL.LIQUIDITY_MODEL */\n liquidityModel?: DexPoolDTOLiquidityModel;\n /** DTO.DEXPOOL.FEE_RATE */\n feeRate?: string;\n /** DTO.DEXPOOL.TICK_SPACING */\n tickSpacing?: number;\n /** DTO.DEXPOOL.TOKEN_COUNT */\n tokenCount?: number;\n /** DTO.DEXPOOL.CREATED_BLOCK_TIMESTAMP */\n createdBlockTimestamp?: string;\n /** DTO.DEXPOOL.TOKEN_A_LIQUIDITY */\n tokenALiquidity?: DexPoolTokenLiquidity;\n /** DTO.DEXPOOL.TOKEN_B_LIQUIDITY */\n tokenBLiquidity?: DexPoolTokenLiquidity;\n}\n\nexport interface TokenMarketData {\n /** DTO.TOKEN.MARKET_CAP.TOTAL_SUPPLY */\n totalSupply: string;\n /** DTO.TOKEN.MARKET_CAP.MARKET_CAP_IN_SOL */\n marketCapInSol?: string;\n /** DTO.TOKEN.MARKET_CAP.MARKET_CAP_IN_USD */\n marketCapInUsd: string;\n /** DTO.TOKEN.MARKET_CAP.TOP10_TOTAL_HOLDINGS */\n top10TotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.TOP10_HOLDINGS_RATIO */\n top10HoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.TOP100_TOTAL_HOLDINGS */\n top100TotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.TOP100_HOLDINGS_RATIO */\n top100HoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.HOLDERS */\n holders: string;\n /** DTO.TOKEN.MARKET_CAP.PRICE_IN_SOL */\n priceInSol?: string;\n /** DTO.TOKEN.MARKET_CAP.PRICE_IN_USD */\n priceInUsd: string;\n /** DTO.TOKEN.MARKET_CAP.MAX_POOL_TVL_IN_SOL */\n maxPoolTvlInSol?: string;\n /** DTO.TOKEN.MARKET_CAP.MAX_POOL_TVL_IN_USD */\n maxPoolTvlInUsd?: string;\n /** DTO.TOKEN.MARKET_CAP.TOTAL_TVL_IN_SOL */\n totalTvlInSol: string;\n /** DTO.TOKEN.MARKET_CAP.TOTAL_TVL_IN_USD */\n totalTvlInUsd: string;\n /** DTO.TOKEN.MARKET_CAP.COMPLETION_RATIO */\n completionRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.TOP50_TOTAL_HOLDINGS */\n top50TotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.TOP50_HOLDINGS_RATIO */\n top50HoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.BLUECHIP_TOTAL_HOLDERS */\n bluechipTotalHolders?: string;\n /** DTO.TOKEN.MARKET_CAP.BLUECHIP_TOTAL_HOLDINGS */\n bluechipTotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.BLUECHIP_HOLDINGS_RATIO */\n bluechipHoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.KOL_TOTAL_HOLDERS */\n kolTotalHolders?: string;\n /** DTO.TOKEN.MARKET_CAP.KOL_TOTAL_HOLDINGS */\n kolTotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.KOL_HOLDINGS_RATIO */\n kolHoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.SNIPER_TOTAL_HOLDERS */\n sniperTotalHolders?: string;\n /** DTO.TOKEN.MARKET_CAP.SNIPER_TOTAL_HOLDINGS */\n sniperTotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.SNIPER_HOLDINGS_RATIO */\n sniperHoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.PRO_TOTAL_HOLDERS */\n proTotalHolders?: string;\n /** DTO.TOKEN.MARKET_CAP.PRO_TOTAL_HOLDINGS */\n proTotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.PRO_HOLDINGS_RATIO */\n proHoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.INSIDER_TOTAL_HOLDERS */\n insiderTotalHolders?: string;\n /** DTO.TOKEN.MARKET_CAP.INSIDER_TOTAL_HOLDINGS */\n insiderTotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.INSIDER_HOLDINGS_RATIO */\n insiderHoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.SANDWISH_TOTAL_HOLDERS */\n sandwishTotalHolders?: string;\n /** DTO.TOKEN.MARKET_CAP.SANDWISH_TOTAL_HOLDINGS */\n sandwishTotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.SANDWISH_HOLDINGS_RATIO */\n sandwishHoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.FRESH_TOTAL_HOLDERS */\n freshTotalHolders?: string;\n /** DTO.TOKEN.MARKET_CAP.FRESH_TOTAL_HOLDINGS */\n freshTotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.FRESH_HOLDINGS_RATIO */\n freshHoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.BUNDLE_TOTAL_HOLDERS */\n bundleTotalHolders?: string;\n /** DTO.TOKEN.MARKET_CAP.BUNDLE_TOTAL_HOLDINGS */\n bundleTotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.BUNDLE_HOLDINGS_RATIO */\n bundleHoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.DEV_TOTAL_HOLDERS */\n devTotalHolders?: string;\n /** DTO.TOKEN.MARKET_CAP.DEV_TOTAL_HOLDINGS */\n devTotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.DEV_HOLDINGS_RATIO */\n devHoldingsRatio?: string;\n}\n\n/**\n * DTO.TOKEN.EXTENSION\n */\nexport type TokenExtension = { [key: string]: unknown };\n\nexport interface Token {\n /** DTO.TOKEN.METADATA.CHAIN */\n chain: string;\n /** DTO.TOKEN.METADATA.DECIMALS */\n decimals: number;\n /** DTO.TOKEN.METADATA.NAME */\n name: string;\n /** DTO.TOKEN.METADATA.SYMBOL */\n symbol: string;\n /** DTO.TOKEN.METADATA.METADATA_ADDRESS */\n metadataAddress?: string;\n /** DTO.TOKEN.METADATA.ADDRESS */\n address: string;\n /** DTO.TOKEN.METADATA.TOKEN_CREATORS */\n tokenCreators?: TokenCreatorsDTO[];\n /** DTO.TOKEN.METADATA.IMAGE_URL */\n imageUrl?: string;\n /** DTO.TOKEN.METADATA.URI */\n uri?: string;\n /** DTO.TOKEN.METADATA.EXTRA */\n extra?: TokenExtraDTO;\n /** DTO.TOKEN.METADATA.SOCIAL_MEDIAS */\n socialMedias?: TokenSocialMediasDTO;\n /** DTO.TOKEN.METADATA.TOKEN_CREATED_AT */\n tokenCreatedAt?: number;\n /** DTO.TOKEN.METADATA.DESCRIPTION */\n description?: string;\n /** DTO.TOKEN.METADATA.DEV_TOTAL_TOKENS */\n devTotalTokens?: string;\n /** DTO.TOKEN.METADATA.DEV_LAST_TOKEN_CREATED_AT */\n devLastTokenCreatedAt?: string;\n /** DTO.TOKEN.MARKET_ID */\n market?: string;\n /** DTO.TOKEN.EXTENSION */\n extension?: TokenExtension;\n /** DTO.TOKEN.STATS */\n stats?: TokenStat;\n /** DTO.TOKEN.LIQUIDITY */\n liquidity?: DexPoolDTO[];\n /** DTO.TOKEN.MARKET_CAP_INFO */\n marketData: TokenMarketData;\n}\n\n/**\n * DTO.TOKEN.PAGE.COUNTS_BY_PROTOCOLS\n */\nexport type TokenPageCountsByProtocols = { [key: string]: unknown };\n\nexport interface TokenPage {\n /** DTO.PAGE.HAS_NEXT */\n hasNext?: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev?: boolean;\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.TOTAL */\n total?: number;\n /** DTO.TOKEN.PAGE.COUNTS_BY_PROTOCOLS */\n countsByProtocols?: TokenPageCountsByProtocols;\n /** DTO.TOKEN.PAGE.DATA */\n data: Token[];\n}\n\n/**\n * DTO.TOKEN.FILTER.FIELD\n */\nexport type FilterConditionField = (typeof FilterConditionField)[keyof typeof FilterConditionField];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const FilterConditionField = {\n marketDatapriceInUsd: \"marketData.priceInUsd\",\n statspriceChangeRatioInUsd1m: \"stats.priceChangeRatioInUsd1m\",\n statspriceChangeRatioInUsd5m: \"stats.priceChangeRatioInUsd5m\",\n statspriceChangeRatioInUsd1h: \"stats.priceChangeRatioInUsd1h\",\n statspriceChangeRatioInUsd4h: \"stats.priceChangeRatioInUsd4h\",\n statspriceChangeRatioInUsd24h: \"stats.priceChangeRatioInUsd24h\",\n marketDatamarketCapInUsd: \"marketData.marketCapInUsd\",\n marketDatamaxPoolTvlInUsd: \"marketData.maxPoolTvlInUsd\",\n marketDatatotalTvlInUsd: \"marketData.totalTvlInUsd\",\n marketDatatop10TotalHoldings: \"marketData.top10TotalHoldings\",\n marketDatatop10HoldingsRatio: \"marketData.top10HoldingsRatio\",\n marketDatatop100TotalHoldings: \"marketData.top100TotalHoldings\",\n marketDatatop100HoldingsRatio: \"marketData.top100HoldingsRatio\",\n marketDataholders: \"marketData.holders\",\n marketDatacreatorHoldings: \"marketData.creatorHoldings\",\n marketDatacreatorHoldingsRatio: \"marketData.creatorHoldingsRatio\",\n statsbuys1m: \"stats.buys1m\",\n statsbuys5m: \"stats.buys5m\",\n statsbuys15m: \"stats.buys15m\",\n statsbuys30m: \"stats.buys30m\",\n statsbuys1h: \"stats.buys1h\",\n statsbuys4h: \"stats.buys4h\",\n statsbuys24h: \"stats.buys24h\",\n statssells1m: \"stats.sells1m\",\n statssells5m: \"stats.sells5m\",\n statssells15m: \"stats.sells15m\",\n statssells30m: \"stats.sells30m\",\n statssells1h: \"stats.sells1h\",\n statssells4h: \"stats.sells4h\",\n statssells24h: \"stats.sells24h\",\n statstrades1m: \"stats.trades1m\",\n statstrades5m: \"stats.trades5m\",\n statstrades1h: \"stats.trades1h\",\n statstrades4h: \"stats.trades4h\",\n statstrades24h: \"stats.trades24h\",\n statstraders1m: \"stats.traders1m\",\n statstraders5m: \"stats.traders5m\",\n statstraders1h: \"stats.traders1h\",\n statstraders4h: \"stats.traders4h\",\n statstraders24h: \"stats.traders24h\",\n statsvolumesInUsd1m: \"stats.volumesInUsd1m\",\n statsvolumesInUsd5m: \"stats.volumesInUsd5m\",\n statsvolumesInUsd1h: \"stats.volumesInUsd1h\",\n statsvolumesInUsd4h: \"stats.volumesInUsd4h\",\n statsvolumesInUsd24h: \"stats.volumesInUsd24h\",\n tokenCreatedAt: \"tokenCreatedAt\",\n} as const;\n\nexport interface FilterCondition {\n /** DTO.TOKEN.FILTER.FIELD */\n field?: FilterConditionField;\n /** DTO.TOKEN.FILTER.MIN */\n min?: string;\n /** DTO.TOKEN.FILTER.MAX */\n max?: string;\n}\n\nexport interface TokenMetadata {\n /** DTO.TOKEN.METADATA.CHAIN */\n chain: string;\n /** DTO.TOKEN.METADATA.DECIMALS */\n decimals: number;\n /** DTO.TOKEN.METADATA.NAME */\n name: string;\n /** DTO.TOKEN.METADATA.SYMBOL */\n symbol: string;\n /** DTO.TOKEN.METADATA.METADATA_ADDRESS */\n metadataAddress?: string;\n /** DTO.TOKEN.METADATA.ADDRESS */\n address: string;\n /** DTO.TOKEN.METADATA.TOKEN_CREATORS */\n tokenCreators?: TokenCreatorsDTO[];\n /** DTO.TOKEN.METADATA.IMAGE_URL */\n imageUrl?: string;\n /** DTO.TOKEN.METADATA.URI */\n uri?: string;\n /** DTO.TOKEN.METADATA.EXTRA */\n extra?: TokenExtraDTO;\n /** DTO.TOKEN.METADATA.SOCIAL_MEDIAS */\n socialMedias?: TokenSocialMediasDTO;\n /** DTO.TOKEN.METADATA.TOKEN_CREATED_AT */\n tokenCreatedAt?: number;\n /** DTO.TOKEN.METADATA.DESCRIPTION */\n description?: string;\n /** DTO.TOKEN.METADATA.DEV_TOTAL_TOKENS */\n devTotalTokens?: string;\n /** DTO.TOKEN.METADATA.DEV_LAST_TOKEN_CREATED_AT */\n devLastTokenCreatedAt?: string;\n}\n\nexport interface TokenHolder {\n /** DTO.TOKEN_HOLDER.WALLET_ADDRESS */\n walletAddress: string;\n /** DTO.TOKEN_HOLDER.AMOUNT */\n amount: string;\n /** DTO.TOKEN_HOLDER.AMOUNT_USD */\n amountInUsd: string;\n /** DTO.TOKEN_HOLDER.PERCENTAGE */\n percentage: string;\n}\n\nexport interface TokenHolderPage {\n /** DTO.PAGE.HAS_NEXT */\n hasNext?: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev?: boolean;\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.TOTAL */\n total?: number;\n /** DTO.TOKEN_HOLDER.PAGE.DATA */\n data: TokenHolder[];\n}\n\nexport type Resolution = (typeof Resolution)[keyof typeof Resolution];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const Resolution = {\n \"1s\": \"1s\",\n \"15s\": \"15s\",\n \"30s\": \"30s\",\n \"1m\": \"1m\",\n \"5m\": \"5m\",\n \"15m\": \"15m\",\n \"1h\": \"1h\",\n \"4h\": \"4h\",\n \"12h\": \"12h\",\n \"1d\": \"1d\",\n} as const;\n\nexport interface Candle {\n /** DTO.CANDLE.OPEN */\n open: string;\n /** DTO.CANDLE.CLOSE */\n close: string;\n /** DTO.CANDLE.HIGH */\n high: string;\n /** DTO.CANDLE.LOW */\n low: string;\n /** DTO.CANDLE.VOLUME */\n volume: string;\n /** DTO.CANDLE.RESOLUTION */\n resolution: Resolution;\n /** DTO.CANDLE.TIME */\n time: number;\n}\n\nexport interface TokenPriceDTO {\n /** DTO.TOKEN.PRICE.TOKEN_ADDRESS */\n tokenAddress: string;\n /** DTO.TOKEN.PRICE.PRICE_IN_USD */\n priceInUsd: string;\n /** DTO.TOKEN.PRICE.PRICE_IN_NATIVE */\n priceInNative: string;\n /** DTO.TOKEN.PRICE.TIMESTAMP */\n timestamp: number;\n}\n\nexport interface TokenPricePage {\n /** DTO.PAGE.HAS_NEXT */\n hasNext?: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev?: boolean;\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.TOTAL */\n total?: number;\n /** DTO.TOKEN.PRICE.PAGE.DATA */\n data: TokenPriceDTO[];\n}\n\n/**\n * DTO.TOKEN.CREATION.TYPE\n */\nexport type TokenCreationDTOType = (typeof TokenCreationDTOType)[keyof typeof TokenCreationDTOType];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const TokenCreationDTOType = {\n create: \"create\",\n mint: \"mint\",\n burn: \"burn\",\n} as const;\n\nexport interface TokenCreationDTO {\n /** DTO.TOKEN.CREATION.TOKEN_ADDRESS */\n tokenAddress: string;\n /** DTO.TOKEN.CREATION.BLOCK_HEIGHT */\n blockHeight: number;\n /** DTO.TOKEN.CREATION.BLOCK_SLOT */\n blockSlot: number;\n /** DTO.TOKEN.CREATION.BLOCK_HASH */\n blockHash: string;\n /** DTO.TOKEN.CREATION.BLOCK_TIMESTAMP */\n blockTimestamp?: number;\n /** DTO.TOKEN.CREATION.TRANSACTION_SIGNATURE */\n transactionSignature: string;\n /** DTO.TOKEN.CREATION.TYPE */\n type: TokenCreationDTOType;\n}\n\nexport interface TokenCreationPage {\n /** DTO.PAGE.HAS_NEXT */\n hasNext?: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev?: boolean;\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.TOTAL */\n total?: number;\n /** DTO.TOKEN.CREATION.PAGE.DATA */\n data: TokenCreationDTO[];\n}\n\nexport interface TokenListPage {\n /** DTO.PAGE.HAS_NEXT */\n hasNext?: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev?: boolean;\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.TOTAL */\n total?: number;\n /** DTO.TOKEN.PAGE.DATA */\n data: Token[];\n}\n\nexport interface DevTokenDTO {\n /** DTO.DEV_TOKEN.ADDRESS */\n address: string;\n /** DTO.DEV_TOKEN.METADATA */\n metadata: TokenMetadata;\n /** DTO.DEV_TOKEN.MARKET_DATA */\n marketData: TokenMarketData;\n /** DTO.DEV_TOKEN.STATS */\n stats: TokenStat;\n}\n\nexport type TokenTraderTag = (typeof TokenTraderTag)[keyof typeof TokenTraderTag];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const TokenTraderTag = {\n fresh: \"fresh\",\n sandwish: \"sandwish\",\n bundle: \"bundle\",\n sniper: \"sniper\",\n dev: \"dev\",\n pro: \"pro\",\n insider: \"insider\",\n kol: \"kol\",\n bluechip: \"bluechip\",\n} as const;\n\n/**\n * DTO.TOKEN_TRADER.ONCHAIN_CREATED_AT\n */\nexport type TokenTraderOnchainCreatedAt = { [key: string]: unknown };\n\nexport interface TokenTrader {\n /** DTO.TOKEN_TRADER.ADDRESS */\n address: string;\n /** DTO.TOKEN_TRADER.TRANSACTION_SIGNATURE */\n transactionSignature?: string;\n /** DTO.TOKEN_TRADER.BLOCK_HASH */\n blockHash?: string;\n /** DTO.TOKEN_TRADER.BLOCK_HEIGHT */\n blockHeight?: number;\n /** DTO.TOKEN_TRADER.BLOCK_SLOT */\n blockSlot?: number;\n /** DTO.TOKEN_TRADER.BLOCK_TIMESTAMP */\n blockTimestamp?: string;\n /** DTO.TOKEN_TRADER.ONCHAIN_CREATED_AT */\n onchainCreatedAt?: TokenTraderOnchainCreatedAt;\n /** DTO.TOKEN_TRADER.TRADE_COUNT */\n tradeCount?: number;\n /** DTO.TOKEN_TRADER.TRADE_AMOUNT_IN_NATIVE */\n tradeAmountInNative?: string;\n /** DTO.TOKEN_TRADER.TRADE_AMOUNT_IN_USD */\n tradeAmountInUsd?: string;\n /** DTO.TOKEN_TRADER.PERCENTILE_RANK_TRADE_COUNT */\n percentileRankTradeCount?: number;\n /** DTO.TOKEN_TRADER.PERCENTILE_RANK_TRADE_AMOUNT_IN_USD */\n percentileRankTradeAmountInUsd?: string;\n /** DTO.TOKEN_TRADER.RANK_TRADE_AMOUNT_IN_USD */\n rankTradeAmountInUsd?: string;\n}\n\nexport interface TokenLiquiditySnapshotDTO {\n /** DTO.TOKEN.LIQUIDITY_SNAPSHOT.SNAPSHOT_TIME */\n snapshotTime: number;\n /** DTO.TOKEN.LIQUIDITY_SNAPSHOT.MAX_LIQUIDITY_POOL_ADDRESS */\n maxLiquidityPoolAddress: string;\n /** DTO.TOKEN.LIQUIDITY_SNAPSHOT.MAX_LIQUIDITY_IN_USD */\n maxLiquidityInUsd: string;\n /** DTO.TOKEN.LIQUIDITY_SNAPSHOT.MAX_LIQUIDITY_IN_NATIVE */\n maxLiquidityInNative: string;\n /** DTO.TOKEN.LIQUIDITY_SNAPSHOT.TOTAL_LIQUIDITY_IN_USD */\n totalLiquidityInUsd: string;\n /** DTO.TOKEN.LIQUIDITY_SNAPSHOT.TOTAL_LIQUIDITY_IN_NATIVE */\n totalLiquidityInNative: string;\n /** DTO.TOKEN.LIQUIDITY_SNAPSHOT.POOL_COUNT */\n poolCount: number;\n /** DTO.TOKEN.LIQUIDITY_SNAPSHOT.PRICE_USD */\n priceUsd: string;\n /** DTO.TOKEN.LIQUIDITY_SNAPSHOT.PRICE_NATIVE */\n priceNative: string;\n /** DTO.TOKEN.LIQUIDITY_SNAPSHOT.CALCULATED_AT */\n calculatedAt: number;\n}\n\nexport interface TokenLiquiditySnapshotPage {\n /** DTO.PAGE.DATA */\n data: TokenLiquiditySnapshotDTO[];\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.HAS_NEXT */\n hasNext: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev: boolean;\n}\n\nexport interface DexPoolTokenSnapshotDTO {\n /** DTO.DEXPOOL.TOKEN_ADDRESS */\n tokenAddress: string;\n /** DTO.DEXPOOL.TOKEN_DECIMALS */\n tokenDecimals: number;\n /** DTO.DEXPOOL.VAULT_AMOUNT */\n vaultAmount: string;\n /** DTO.DEXPOOL.AMOUNT_IN_USD */\n amountInUsd: string;\n /** DTO.DEXPOOL.AMOUNT_IN_NATIVE */\n amountInNative: string;\n /** DTO.DEXPOOL.PRICE_USD */\n priceUsd: string;\n /** DTO.DEXPOOL.PRICE_NATIVE */\n priceNative: string;\n}\n\nexport interface DexPoolSnapshotDTO {\n /** DTO.DEXPOOL.POOL_ADDRESS */\n poolAddress: string;\n /** DTO.DEXPOOL.SNAPSHOT.SNAPSHOT_TIME */\n snapshotTime: number;\n /** DTO.DEXPOOL.TVL_USD */\n tvlInUsd: string;\n /** DTO.DEXPOOL.TVL_SOL */\n tvlInNative: string;\n /** DTO.DEXPOOL.SNAPSHOT.TOKEN_A */\n tokenA: DexPoolTokenSnapshotDTO;\n /** DTO.DEXPOOL.SNAPSHOT.TOKEN_B */\n tokenB: DexPoolTokenSnapshotDTO;\n /** DTO.DEXPOOL.SNAPSHOT.BLOCK_HEIGHT */\n blockHeight: number;\n /** DTO.DEXPOOL.SNAPSHOT.BLOCK_SLOT */\n blockSlot?: number;\n /** DTO.DEXPOOL.SNAPSHOT.BLOCK_TIMESTAMP */\n blockTimestamp: number;\n}\n\nexport interface DexPoolSnapshotPage {\n /** DTO.PAGE.DATA */\n data: DexPoolSnapshotDTO[];\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.HAS_NEXT */\n hasNext: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev: boolean;\n}\n\nexport interface WalletPnlDTO {\n /** DTO.WALLET.PNL.ID */\n id: number;\n /** DTO.WALLET.PNL.CHAIN */\n chain: string;\n /** DTO.WALLET.PNL.WALLET_ADDRESS */\n walletAddress: string;\n /** DTO.WALLET.PNL.TOKEN_ADDRESS */\n tokenAddress: string;\n /** DTO.WALLET.PNL.TOKEN_PRICE */\n tokenPriceInUsd: string;\n /** DTO.WALLET.PNL.OPEN_TIME */\n openTime: number;\n /** DTO.WALLET.PNL.CLOSE_TIME */\n closeTime: number;\n /** DTO.WALLET.PNL.LAST_TIME */\n lastTime: number;\n /** DTO.WALLET.PNL.BALANCE */\n balance: string;\n /** DTO.WALLET.PNL.BUY_AMOUNT */\n buyAmount: string;\n /** DTO.WALLET.PNL.BUY_AMOUNT_USD */\n buyAmountInUsd: string;\n /** DTO.WALLET.PNL.BUYS */\n buys: string;\n /** DTO.WALLET.PNL.SELL_AMOUNT */\n sellAmount: string;\n /** DTO.WALLET.PNL.SELL_AMOUNT_USD */\n sellAmountInUsd: string;\n /** DTO.WALLET.PNL.SELLS */\n sells: string;\n /** DTO.WALLET.PNL.AVERAGE_BUY_PRICE */\n averageBuyPriceInUsd: string;\n /** DTO.WALLET.PNL.AVERAGE_SELL_PRICE */\n averageSellPriceInUsd: string;\n /** DTO.WALLET.PNL.UNREALIZED_PROFIT */\n unrealizedProfitInUsd: string;\n /** DTO.WALLET.PNL.UNREALIZED_PROFIT_RATIO */\n unrealizedProfitRatio: string;\n /** DTO.WALLET.PNL.REALIZED_PROFIT */\n realizedProfitInUsd: string;\n /** DTO.WALLET.PNL.REALIZED_PROFIT_RATIO */\n realizedProfitRatio: string;\n /** DTO.WALLET.PNL.TOTAL_REALIZED_PROFIT */\n totalRealizedProfitInUsd: string;\n /** DTO.WALLET.PNL.TOTAL_REALIZED_PROFIT_RATIO */\n totalRealizedProfitRatio: string;\n}\n\nexport interface WalletBalanceDetailDTO {\n /** DTO.WALLET.BALANCE.TOKEN_ADDRESS */\n tokenAddress: string;\n /** DTO.WALLET.BALANCE.AMOUNT */\n amount: string;\n /** DTO.WALLET.BALANCE.AMOUNT_IN_USD */\n valueInUsd: string;\n /** DTO.WALLET.BALANCE.TOKEN_NAME */\n name: string;\n /** DTO.WALLET.BALANCE.TOKEN_SYMBOL */\n symbol: string;\n /** DTO.WALLET.BALANCE.TOKEN_IMAGE_URL */\n imageUrl: string;\n /** DTO.WALLET.BALANCE.TOKEN_PRICE_IN_SOL */\n priceInSol: string;\n /** DTO.WALLET.BALANCE.TOKEN_PRICE_IN_USD */\n priceInUsd: string;\n /** DTO.WALLET.BALANCE.PRICE_CHANGE_24H */\n priceChangeRatioInUsd24h: string;\n /** DTO.WALLET.BALANCE.UNREALIZED_PROFIT */\n unrealizedProfitInUsd: string;\n /** DTO.WALLET.BALANCE.UNREALIZED_PROFIT_RATIO */\n unrealizedProfitRatio: string;\n /** DTO.WALLET.BALANCE.OPEN_TIME */\n openTime: number;\n /** DTO.WALLET.BALANCE.CLOSE_TIME */\n closeTime: number;\n /** DTO.WALLET.BALANCE.BUYS */\n buys: string;\n /** DTO.WALLET.BALANCE.BUY_AMOUNT */\n buyAmount: string;\n /** DTO.WALLET.BALANCE.BUY_AMOUNT_USD */\n buyAmountInUsd: string;\n /** DTO.WALLET.BALANCE.SELLS */\n sells: string;\n /** DTO.WALLET.BALANCE.SELL_AMOUNT */\n sellAmount: string;\n /** DTO.WALLET.BALANCE.SELL_AMOUNT_USD */\n sellAmountInUsd: string;\n /** DTO.WALLET.BALANCE.AVERAGE_BUY_PRICE */\n averageBuyPriceInUsd: string;\n /** DTO.WALLET.BALANCE.AVERAGE_SELL_PRICE */\n averageSellPriceInUsd: string;\n /** DTO.WALLET.BALANCE.REALIZED_PROFIT_IN_USD */\n realizedProfitInUsd: string;\n /** DTO.WALLET.BALANCE.REALIZED_PROFIT_RATIO */\n realizedProfitRatio: string;\n /** DTO.WALLET.BALANCE.TOTAL_REALIZED_PROFIT */\n totalRealizedProfitInUsd: string;\n /** DTO.WALLET.BALANCE.TOTAL_REALIZED_PROFIT_RATIO */\n totalRealizedProfitRatio: string;\n}\n\nexport interface WalletBalancesDTO {\n /** DTO.WALLET.BALANCES.TOTAL_BALANCES_IN_USD */\n totalBalancesInUsd: string;\n /** DTO.WALLET.BALANCES.TOTAL_PROFIT_IN_USD */\n totalProfitInUsd: string;\n /** DTO.WALLET.BALANCES.BALANCES.DETAIL */\n balances: WalletBalanceDetailDTO[];\n}\n\nexport interface CalculatePnlInput {\n /** DTO.WALLET.CALCULATE_PNL.INPUT.TOKEN_ADDRESSES */\n tokenAddresses?: string[];\n}\n\nexport interface BooleanResultDTO {\n /** DTO.BOOLEAN_RESULT.SUCCESS */\n success: boolean;\n}\n\nexport type BalanceTokenType = (typeof BalanceTokenType)[keyof typeof BalanceTokenType];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const BalanceTokenType = {\n SOL: \"SOL\",\n SPL: \"SPL\",\n} as const;\n\nexport type BalanceChangeType = (typeof BalanceChangeType)[keyof typeof BalanceChangeType];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const BalanceChangeType = {\n INCREASE: \"INCREASE\",\n DECREASE: \"DECREASE\",\n} as const;\n\nexport interface BalanceUpdateDTO {\n /** DTO.WALLET.BALANCE_UPDATE.ID */\n id: number;\n /** DTO.WALLET.BALANCE_UPDATE.BLOCK_HASH */\n blockHash: string;\n /** DTO.WALLET.BALANCE_UPDATE.BLOCK_HEIGHT */\n blockHeight: number;\n /** DTO.WALLET.BALANCE_UPDATE.BLOCK_SLOT */\n blockSlot: number;\n /** DTO.WALLET.BALANCE_UPDATE.BLOCK_TIMESTAMP */\n blockTimestamp: number;\n /** DTO.WALLET.BALANCE_UPDATE.TRANSACTION_SIGNATURE */\n transactionSignature: string;\n /** DTO.WALLET.BALANCE_UPDATE.INDEX */\n index: number;\n /** DTO.WALLET.BALANCE_UPDATE.TOKEN_ADDRESS */\n tokenAddress: string;\n /** DTO.WALLET.BALANCE_UPDATE.TOKEN_ACCOUNT_ADDRESS */\n tokenAccountAddress: string;\n /** DTO.WALLET.BALANCE_UPDATE.ACCOUNT_OWNER_ADDRESS */\n accountOwnerAddress: string;\n /** DTO.WALLET.BALANCE_UPDATE.PRE_BALANCE */\n preBalance: string;\n /** DTO.WALLET.BALANCE_UPDATE.PRE_BALANCE_IN_NATIVE */\n preBalanceInNative: string;\n /** DTO.WALLET.BALANCE_UPDATE.PRE_BALANCE_IN_USD */\n preBalanceInUsd: string;\n /** DTO.WALLET.BALANCE_UPDATE.POST_BALANCE */\n postBalance: string;\n /** DTO.WALLET.BALANCE_UPDATE.POST_BALANCE_IN_NATIVE */\n postBalanceInNative: string;\n /** DTO.WALLET.BALANCE_UPDATE.POST_BALANCE_IN_USD */\n postBalanceInUsd: string;\n /** DTO.WALLET.BALANCE_UPDATE.BALANCE_CHANGE */\n balanceChange: string;\n /** DTO.WALLET.BALANCE_UPDATE.BALANCE_CHANGE_IN_NATIVE */\n balanceChangeInNative: string;\n /** DTO.WALLET.BALANCE_UPDATE.BALANCE_CHANGE_IN_USD */\n balanceChangeInUsd: string;\n /** DTO.WALLET.BALANCE_UPDATE.TYPE */\n type: BalanceTokenType;\n /** DTO.WALLET.BALANCE_UPDATE.CHANGE_TYPE */\n changeType: BalanceChangeType;\n}\n\nexport interface BalanceUpdatePage {\n /** DTO.PAGE.DATA */\n data: BalanceUpdateDTO[];\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.HAS_NEXT */\n hasNext: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev: boolean;\n}\n\n/**\n * DTO.RED_PACKET.CHAIN\n */\nexport type CreateRedPacketInputChain =\n (typeof CreateRedPacketInputChain)[keyof typeof CreateRedPacketInputChain];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const CreateRedPacketInputChain = {\n sol: \"sol\",\n bsc: \"bsc\",\n eth: \"eth\",\n} as const;\n\nexport interface CreateRedPacketInput {\n /** DTO.RED_PACKET.CHAIN */\n chain: CreateRedPacketInputChain;\n /**\n * DTO.RED_PACKET.CREATOR\n * @minLength 8\n * @maxLength 64\n */\n creator: string;\n /** DTO.RED_PACKET.MINT */\n mint: string;\n /**\n * DTO.RED_PACKET.MAX_CLAIMS\n * @minimum 1\n * @maximum 100\n */\n maxClaims: number;\n /** DTO.RED_PACKET.TOTAL_AMOUNT */\n totalAmount?: string;\n /** DTO.RED_PACKET.FIXED_AMOUNT */\n fixedAmount?: string;\n /** DTO.RED_PACKET.MEMO */\n memo?: string;\n /** DTO.RED_PACKET.PASSWORD */\n password?: string;\n /** DTO.RED_PACKET.CLAIM_AUTHORITY */\n claimAuthority?: string;\n}\n\nexport interface CreateRedPacketReply {\n /** DTO.RED_PACKET.SERIALIZED_TX */\n txSerialize: string;\n /** DTO.RED_PACKET.SHARE_ID */\n shareId: string;\n}\n\n/**\n * DTO.RED_PACKET.CHAIN\n */\nexport type ClaimRedPacketInputChain =\n (typeof ClaimRedPacketInputChain)[keyof typeof ClaimRedPacketInputChain];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ClaimRedPacketInputChain = {\n sol: \"sol\",\n bsc: \"bsc\",\n eth: \"eth\",\n} as const;\n\nexport interface ClaimRedPacketInput {\n /** DTO.RED_PACKET.CHAIN */\n chain: ClaimRedPacketInputChain;\n /** DTO.RED_PACKET.PACKET_ID */\n packetId?: string;\n /** DTO.RED_PACKET.SHARE_ID */\n shareId?: string;\n /** DTO.RED_PACKET.PASSWORD */\n password?: string;\n /** DTO.RED_PACKET.CLAIMER */\n claimer: string;\n}\n\nexport interface RedPacketReply {\n /** DTO.RED_PACKET.SERIALIZED_TX */\n txSerialize: string;\n}\n\nexport type Chain = (typeof Chain)[keyof typeof Chain];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const Chain = {\n sol: \"sol\",\n bsc: \"bsc\",\n eth: \"eth\",\n} as const;\n\nexport interface RedPacketDTO {\n /** GLOBAL.CHAIN.DESCRIPTION */\n chain: Chain;\n /** DTO.RED_PACKET.ID */\n id: string;\n /** DTO.RED_PACKET.SHARE_ID */\n shareId: string;\n /** DTO.RED_PACKET.TX_HASH */\n txHash: string;\n /** DTO.RED_PACKET.CREATOR */\n creator: string;\n /** DTO.RED_PACKET.MINT */\n mint: string;\n /** DTO.RED_PACKET.TOTAL_AMOUNT */\n totalAmount: string;\n /** DTO.RED_PACKET.MEMO */\n memo: string;\n /** DTO.RED_PACKET.MAX_CLAIMS */\n maxClaims: number;\n /** DTO.RED_PACKET.CLAIM_AUTHORITY */\n claimAuthority: string;\n /** DTO.RED_PACKET.WITHDRAWED */\n expired: boolean;\n /** DTO.RED_PACKET.EXPIRATION */\n expiration: number;\n /** DTO.RED_PACKET.CREATED_AT */\n createdAt: number;\n /** DTO.RED_PACKET.EXPIRES_AT */\n expiredAt: number;\n /** DTO.RED_PACKET.CLAIMED_COUNT */\n claimedCount: number;\n /** DTO.RED_PACKET.CLAIMED_AMOUNT */\n claimedAmount: string;\n /** DTO.RED_PACKET.REFUND_AMOUNT */\n refundedAmount: string;\n}\n\nexport interface RedPacketClaimDTO {\n /** DTO.RED_PACKET.PACKET_ID */\n packetId: string;\n /** DTO.RED_PACKET.CHAIN */\n chain: Chain;\n /** DTO.RED_PACKET.CLAIMER */\n claimer: string;\n /** DTO.RED_PACKET.MINT */\n mint: string;\n /** DTO.RED_PACKET.AMOUNT */\n amount: string;\n /** DTO.RED_PACKET.CLAIMED_AT */\n claimedAt: number;\n /** DTO.RED_PACKET.CREATOR */\n creator: string;\n /** DTO.RED_PACKET.TX_HASH */\n txHash: string;\n}\n\nexport interface RedPacketClaimsPage {\n /** DTO.PAGE.TOTAL */\n total: number;\n /** DTO.PAGE.HAS_NEXT */\n hasNextPage: boolean;\n /** DTO.PAGE.START_CURSOR */\n startCursor: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor: string;\n /** Array of claim records */\n records: RedPacketClaimDTO[];\n}\n\nexport interface RedPacketsPage {\n /** DTO.PAGE.TOTAL */\n total: number;\n /** DTO.PAGE.HAS_NEXT */\n hasNextPage: boolean;\n /** DTO.PAGE.START_CURSOR */\n startCursor: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor: string;\n /** Array of red packets */\n records: RedPacketDTO[];\n}\n\nexport interface RedPacketSendTxInput {\n /** DTO.RED_PACKET.SIGNED_TX */\n signedTx: string;\n}\n\nexport interface RedPacketSendTxResponse {\n /** DTO.RED_PACKET.SIGNATURE */\n signature: string;\n}\n\n/**\n * DTO.KYT.KYT_REGISTER_TRANSFER_REQUEST.NETWORK\n */\nexport type KYTRegisterTransferRequestNetwork =\n (typeof KYTRegisterTransferRequestNetwork)[keyof typeof KYTRegisterTransferRequestNetwork];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const KYTRegisterTransferRequestNetwork = {\n bitcoin: \"bitcoin\",\n ethereum: \"ethereum\",\n Solana: \"Solana\",\n} as const;\n\n/**\n * DTO.KYT.KYT_REGISTER_TRANSFER_REQUEST.DIRECTION\n */\nexport type KYTRegisterTransferRequestDirection =\n (typeof KYTRegisterTransferRequestDirection)[keyof typeof KYTRegisterTransferRequestDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const KYTRegisterTransferRequestDirection = {\n sent: \"sent\",\n received: \"received\",\n} as const;\n\nexport interface KYTRegisterTransferRequest {\n /** DTO.KYT.KYT_REGISTER_TRANSFER_REQUEST.NETWORK */\n network: KYTRegisterTransferRequestNetwork;\n /** DTO.KYT.KYT_REGISTER_TRANSFER_REQUEST.ASSET */\n asset: string;\n /** DTO.KYT.KYT_REGISTER_TRANSFER_REQUEST.TRANSFER_REFERENCE */\n transferReference: string;\n /** DTO.KYT.KYT_REGISTER_TRANSFER_REQUEST.DIRECTION */\n direction: KYTRegisterTransferRequestDirection;\n}\n\nexport interface TransferBaseResponseDTO {\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.UPDATED_AT\n * @nullable\n */\n updatedAt: string | null;\n /** DTO.KYT.TRANSFER_BASE_RESPONSE.ASSET */\n asset: string;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.ASSET_ID\n * @nullable\n */\n assetId: string | null;\n /** DTO.KYT.TRANSFER_BASE_RESPONSE.NETWORK */\n network: string;\n /** DTO.KYT.TRANSFER_BASE_RESPONSE.TRANSFER_REFERENCE */\n transferReference: string;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.MEMO\n * @nullable\n */\n memo: string | null;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.TX\n * @nullable\n */\n tx: string | null;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.IDX\n * @nullable\n */\n idx: number | null;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.USD_AMOUNT\n * @nullable\n */\n usdAmount: string | null;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.ASSET_AMOUNT\n * @nullable\n */\n assetAmount: string | null;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.TIMESTAMP\n * @nullable\n */\n timestamp: string | null;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.OUTPUT_ADDRESS\n * @nullable\n */\n outputAddress: string | null;\n /** DTO.KYT.TRANSFER_BASE_RESPONSE.EXTERNAL_ID */\n externalId: string;\n}\n\nexport interface DirectExposureDetail {\n /** DTO.KYT.DIRECT_EXPOSURE_DETAIL.NAME */\n name: string;\n /** DTO.KYT.DIRECT_EXPOSURE_DETAIL.CATEGORY_ID */\n categoryId: number;\n}\n\nexport interface TransferDirectExposureResponseDTO {\n /** DTO.KYT.TRANSFER_DIRECT_EXPOSURE_RESPONSE.DIRECT */\n direct: DirectExposureDetail;\n}\n\nexport interface AlertDetail {\n /** DTO.KYT.ALERT_DETAIL.ALERT_LEVEL */\n alertLevel: string;\n /** DTO.KYT.ALERT_DETAIL.SERVICE */\n service: string;\n /** DTO.KYT.ALERT_DETAIL.EXTERNAL_ID */\n externalId: string;\n /** DTO.KYT.ALERT_DETAIL.ALERT_AMOUNT */\n alertAmount: string;\n /** DTO.KYT.ALERT_DETAIL.EXPOSURE_TYPE */\n exposureType: string;\n /** DTO.KYT.ALERT_DETAIL.CATEGORY_ID */\n categoryId: number;\n /**\n * DTO.KYT.ALERT_DETAIL.MEMO\n * @nullable\n */\n memo: string | null;\n}\n\nexport interface TransferAlertsResponseDTO {\n /** DTO.KYT.TRANSFER_ALERTS_RESPONSE.ALERTS */\n alerts: AlertDetail[];\n}\n\nexport interface NetworkIdentificationOrg {\n /** DTO.KYT.NETWORK_IDENTIFICATION_ORG.NAME */\n name: string;\n}\n\nexport interface TransferNetworkIdentificationsResponseDTO {\n /** DTO.KYT.TRANSFER_NETWORK_IDENTIFICATIONS_RESPONSE.COUNT */\n count: number;\n /** DTO.KYT.TRANSFER_NETWORK_IDENTIFICATIONS_RESPONSE.NETWORK_IDENTIFICATION_ORGS */\n networkIdentificationOrgs: NetworkIdentificationOrg[];\n}\n\n/**\n * DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.NETWORK\n */\nexport type KYTRegisterWithdrawalRequestNetwork =\n (typeof KYTRegisterWithdrawalRequestNetwork)[keyof typeof KYTRegisterWithdrawalRequestNetwork];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const KYTRegisterWithdrawalRequestNetwork = {\n bitcoin: \"bitcoin\",\n ethereum: \"ethereum\",\n Solana: \"Solana\",\n} as const;\n\nexport interface KYTRegisterWithdrawalRequest {\n /** DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.NETWORK */\n network: KYTRegisterWithdrawalRequestNetwork;\n /** DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.ASSET */\n asset: string;\n /** DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.ADDRESS */\n address: string;\n /** DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.ASSET_AMOUNT */\n assetAmount: string;\n /** DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.ATTEMPT_TIMESTAMP */\n attemptTimestamp: string;\n /**\n * DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.ASSET_PRICE\n * @nullable\n */\n assetPrice?: string | null;\n /**\n * DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.ASSET_DENOMINATION\n * @nullable\n */\n assetDenomination?: string | null;\n /**\n * DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.ASSET_ID\n * @nullable\n */\n assetId?: string | null;\n /**\n * DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.MEMO\n * @nullable\n */\n memo?: string | null;\n}\n\nexport interface WithdrawalBaseResponseDTO {\n /** DTO.KYT.WITHDRAWAL_BASE_RESPONSE.ASSET */\n asset: string;\n /**\n * DTO.KYT.WITHDRAWAL_BASE_RESPONSE.ASSET_ID\n * @nullable\n */\n assetId: string | null;\n /** DTO.KYT.WITHDRAWAL_BASE_RESPONSE.NETWORK */\n network: string;\n /** DTO.KYT.WITHDRAWAL_BASE_RESPONSE.ADDRESS */\n address: string;\n /**\n * DTO.KYT.WITHDRAWAL_BASE_RESPONSE.MEMO\n * @nullable\n */\n memo: string | null;\n /** DTO.KYT.WITHDRAWAL_BASE_RESPONSE.ATTEMPT_IDENTIFIER */\n attemptIdentifier: string;\n /** DTO.KYT.WITHDRAWAL_BASE_RESPONSE.ASSET_AMOUNT */\n assetAmount: string;\n /** DTO.KYT.WITHDRAWAL_BASE_RESPONSE.EXTERNAL_ID */\n externalId: string;\n /** DTO.KYT.WITHDRAWAL_BASE_RESPONSE.USD_AMOUNT */\n usdAmount: string;\n /** DTO.KYT.WITHDRAWAL_BASE_RESPONSE.UPDATED_AT */\n updatedAt: string;\n}\n\nexport interface ChainalysisAddressIdentification {\n /** DTO.KYT.CHAINALYSIS_ADDRESS_IDENTIFICATION.ADDRESS_NAME */\n addressName: string;\n /** DTO.KYT.CHAINALYSIS_ADDRESS_IDENTIFICATION.DESCRIPTION */\n description: string;\n /** DTO.KYT.CHAINALYSIS_ADDRESS_IDENTIFICATION.CATEGORY_ID */\n categoryId: number;\n}\n\nexport interface WithdrawalAddressIdentificationsResponseDTO {\n /** DTO.KYT.WITHDRAWAL_ADDRESS_IDENTIFICATIONS_RESPONSE.CHAINALYSIS_IDENTIFICATIONS */\n chainalysisIdentifications: ChainalysisAddressIdentification[];\n /** DTO.KYT.WITHDRAWAL_ADDRESS_IDENTIFICATIONS_RESPONSE.CUSTOM_ADDRESSES */\n customAddresses: string[];\n}\n\nexport interface OnChainActivity {\n /** DTO.KYT.ON_CHAIN_ACTIVITY.FIRST_TRANSACTION_AT */\n first_transaction_at: number;\n}\n\nexport interface AlteryaIdentification {\n /** DTO.KYT.ALTERYA_IDENTIFICATION.OBJECT */\n object: string;\n /** DTO.KYT.ALTERYA_IDENTIFICATION.ADDRESS */\n address: string;\n /** DTO.KYT.ALTERYA_IDENTIFICATION.CHAIN */\n chain: string;\n /** DTO.KYT.ALTERYA_IDENTIFICATION.RISK_LEVEL */\n risk_level: string;\n /** DTO.KYT.ALTERYA_IDENTIFICATION.REASON */\n reason: string;\n /** DTO.KYT.ALTERYA_IDENTIFICATION.LABELS */\n labels: string[];\n /** DTO.KYT.ALTERYA_IDENTIFICATION.ON_CHAIN_ACTIVITY */\n on_chain_activity: OnChainActivity;\n /** DTO.KYT.ALTERYA_IDENTIFICATION.RISK_SCORE */\n risk_score: string;\n}\n\nexport interface WithdrawalFraudAssessmentResponseDTO {\n /** DTO.KYT.WITHDRAWAL_FRAUD_ASSESSMENT_RESPONSE.ALTERYA_IDENTIFICATIONS */\n alteryaIdentifications: AlteryaIdentification[];\n}\n\nexport interface RegisterAddressRequest {\n /** DTO.KYT.REGISTER_ADDRESS_REQUEST.ADDRESS */\n address: string;\n}\n\nexport interface RegisterAddressResponseDTO {\n /** DTO.KYT.REGISTER_ADDRESS_RESPONSE.ADDRESS */\n address: string;\n}\n\nexport interface AddressExposure {\n /** DTO.KYT.ADDRESS_EXPOSURE.CATEGORY */\n category: string;\n /** DTO.KYT.ADDRESS_EXPOSURE.VALUE */\n value: string;\n /** DTO.KYT.ADDRESS_EXPOSURE.EXPOSURE_TYPE */\n exposureType: string;\n /** DTO.KYT.ADDRESS_EXPOSURE.DIRECTION */\n direction: string;\n}\n\nexport interface AddressRiskResponseDTO {\n /** DTO.KYT.ADDRESS_RISK_RESPONSE.ADDRESS */\n address: string;\n /** DTO.KYT.ADDRESS_RISK_RESPONSE.RISK */\n risk: string;\n /**\n * DTO.KYT.ADDRESS_RISK_RESPONSE.RISK_REASON\n * @nullable\n */\n riskReason: string | null;\n /** DTO.KYT.ADDRESS_RISK_RESPONSE.ADDRESS_TYPE */\n addressType: string;\n /**\n * DTO.KYT.ADDRESS_RISK_RESPONSE.CLUSTER\n * @nullable\n */\n cluster: string | null;\n /** DTO.KYT.ADDRESS_RISK_RESPONSE.ADDRESS_IDENTIFICATIONS */\n addressIdentifications: string[];\n /** DTO.KYT.ADDRESS_RISK_RESPONSE.EXPOSURES */\n exposures: AddressExposure[];\n /** DTO.KYT.ADDRESS_RISK_RESPONSE.TRIGGERS */\n triggers: string[];\n /** DTO.KYT.ADDRESS_RISK_RESPONSE.STATUS */\n status: string;\n}\n\n/**\n * DTO.ENDPOINT.METADATA\n */\nexport type EndpointResponseMetadata = { [key: string]: unknown };\n\nexport interface EndpointResponse {\n /** DTO.ENDPOINT.ID */\n id?: string;\n /** DTO.ENDPOINT.URL */\n url?: string;\n /** DTO.ENDPOINT.DESCRIPTION */\n description?: string;\n /** DTO.ENDPOINT.FILTER_TYPES */\n filterTypes?: string[];\n /** DTO.ENDPOINT.CHANNELS */\n channels?: string[];\n /** DTO.ENDPOINT.DISABLED */\n disabled?: boolean;\n /** DTO.ENDPOINT.METADATA */\n metadata?: EndpointResponseMetadata;\n /** DTO.ENDPOINT.RATE_LIMIT */\n rateLimit?: number;\n /** DTO.ENDPOINT.FILTER */\n filter?: string;\n /** DTO.ENDPOINT.CREATED_AT */\n createdAt?: string;\n /** DTO.ENDPOINT.UPDATED_AT */\n updatedAt?: string;\n}\n\nexport interface EndpointListResponse {\n /** DTO.ENDPOINT.PAGE.DATA */\n data?: EndpointResponse[];\n /** DTO.ENDPOINT.PAGE.DONE */\n done?: boolean;\n /** DTO.ENDPOINT.PAGE.ITERATOR */\n iterator?: string;\n /** DTO.ENDPOINT.PAGE.PREV_ITERATOR */\n prevIterator?: string;\n}\n\nexport interface EndpointSecretResponse {\n /** DTO.ENDPOINT.SECRET */\n secret?: string;\n}\n\nexport interface EndpointOperationResponse {\n /** DTO.ENDPOINT.SUCCESS */\n success?: boolean;\n}\n\n/**\n * DTO.ENDPOINT.METADATA\n */\nexport type CreateEndpointInputMetadata = { [key: string]: unknown };\n\nexport interface CreateEndpointInput {\n /** DTO.ENDPOINT.CHANNELS */\n channels?: string[];\n /** DTO.ENDPOINT.DESCRIPTION */\n description?: string;\n /** DTO.ENDPOINT.DISABLED */\n disabled?: boolean;\n /** DTO.ENDPOINT.FILTER_TYPES */\n filterTypes?: string[];\n /** DTO.ENDPOINT.METADATA */\n metadata?: CreateEndpointInputMetadata;\n /** DTO.ENDPOINT.RATE_LIMIT */\n rateLimit?: number;\n /** DTO.ENDPOINT.URL */\n url?: string;\n /** DTO.ENDPOINT.FILTER */\n filter?: string;\n}\n\n/**\n * DTO.ENDPOINT.METADATA\n */\nexport type UpdateEndpointInputMetadata = { [key: string]: unknown };\n\nexport interface UpdateEndpointInput {\n /** DTO.ENDPOINT.ENDPOINT_ID */\n endpointId?: string;\n /** DTO.ENDPOINT.CHANNELS */\n channels?: string[];\n /** DTO.ENDPOINT.DESCRIPTION */\n description?: string;\n /** DTO.ENDPOINT.DISABLED */\n disabled?: boolean;\n /** DTO.ENDPOINT.FILTER_TYPES */\n filterTypes?: string[];\n /** DTO.ENDPOINT.METADATA */\n metadata?: UpdateEndpointInputMetadata;\n /** DTO.ENDPOINT.RATE_LIMIT */\n rateLimit?: number;\n /** DTO.ENDPOINT.URL */\n url?: string;\n /** DTO.ENDPOINT.FILTER */\n filter?: string;\n}\n\nexport type TradeType = (typeof TradeType)[keyof typeof TradeType];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const TradeType = {\n buy: \"buy\",\n sell: \"sell\",\n} as const;\n\nexport interface TradeEvent {\n /** DTO.TRADE.MAKER */\n maker: string;\n /** DTO.TRADE.BASE_AMOUNT */\n baseAmount: string;\n /** DTO.TRADE.QUOTE_AMOUNT */\n quoteAmount: string;\n /** DTO.TRADE.QUOTE_SYMBOL */\n quoteSymbol: string;\n /** DTO.TRADE.QUOTE_ADDRESS */\n quoteAddress: string;\n /** DTO.TRADE.AMOUNT_IN_USD */\n amountInUsd: string;\n /** DTO.TRADE.TIMESTAMP */\n timestamp: number;\n /** DTO.TRADE.EVENT */\n event: TradeType;\n /** DTO.TRADE.TX_HASH */\n txHash: string;\n /** DTO.TRADE.PRICE_IN_USD */\n priceInUsd: string;\n /** DTO.TRADE.ID */\n id: string;\n /** DTO.TRADE.BUY_COST_USD */\n buyCostUsd: string;\n /** DTO.TRADE.TOKEN_ADDRESS */\n tokenAddress: string;\n}\n\nexport type QuoteParams = {\n /**\n * DTO.DEX.QUOTE.DEX\n */\n dex: QuoteDex;\n /**\n * DTO.DEX.QUOTE.AMOUNT\n */\n amount: string;\n /**\n * DTO.DEX.QUOTE.INPUT_MINT\n */\n inputMint: string;\n /**\n * DTO.DEX.QUOTE.OUTPUT_MINT\n */\n outputMint: string;\n /**\n * DTO.DEX.QUOTE.EXACT_IN\n */\n exactIn?: boolean;\n /**\n * DTO.DEX.QUOTE.SLIPPAGE\n */\n slippage: number;\n};\n\nexport type QuoteDex = (typeof QuoteDex)[keyof typeof QuoteDex];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const QuoteDex = {\n raydium: \"raydium\",\n pumpfun: \"pumpfun\",\n} as const;\n\nexport type ListDexParams = {\n chains?: string[];\n /**\n * DTO.DEX.QUERY.LIMIT\n */\n limit?: number;\n /**\n * DTO.DEX.QUERY.DEX_PROGRAM\n */\n dexProgram?: string;\n};\n\nexport type MoonshotSubmitCreateToken200 = {\n /** Transaction signature */\n signature?: string;\n /** Block slot number */\n slot?: number;\n};\n\nexport type GetTradesParams = {\n /**\n * DTO.PAGE.CURSOR.DESCRIPTION\n */\n cursor?: string;\n /**\n * DTO.PAGE.LIMIT\n */\n limit?: number;\n /**\n * DTO.PAGE.DIRECTION\n */\n direction?: GetTradesDirection;\n /**\n * DTO.TRADE.QUERY.TOKEN_ADDRESS\n */\n tokenAddress?: string;\n /**\n * DTO.TRADE.QUERY.WALLET_ADDRESS\n */\n walletAddress?: string;\n /**\n * DTO.TRADE.QUERY.POOL_ADDRESS\n */\n poolAddress?: string;\n /**\n * DTO.TRADE.QUERY.BEFORE_TIMESTAMP\n */\n beforeTimestamp?: number;\n /**\n * DTO.TRADE.QUERY.AFTER_TIMESTAMP\n */\n afterTimestamp?: number;\n /**\n * DTO.TRADE.QUERY.BEFORE_BLOCK_HEIGHT\n */\n beforeBlockHeight?: number;\n /**\n * DTO.TRADE.QUERY.AFTER_BLOCK_HEIGHT\n */\n afterBlockHeight?: number;\n /**\n * DTO.TRADE.QUERY.TRANSACTIONS_SIGNATURE\n */\n transactionsSignature?: string;\n /**\n * DTO.TRADE.QUERY.TRADES_TYPE\n */\n type?: GetTradesType;\n};\n\nexport type GetTradesDirection = (typeof GetTradesDirection)[keyof typeof GetTradesDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetTradesDirection = {\n next: \"next\",\n prev: \"prev\",\n} as const;\n\nexport type GetTradesType = (typeof GetTradesType)[keyof typeof GetTradesType];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetTradesType = {\n BUY: \"BUY\",\n SELL: \"SELL\",\n} as const;\n\nexport type GetActivitiesParams = {\n /**\n * DTO.PAGE.CURSOR.DESCRIPTION\n */\n cursor?: string;\n /**\n * DTO.PAGE.LIMIT\n */\n limit?: number;\n /**\n * DTO.PAGE.DIRECTION\n */\n direction?: GetActivitiesDirection;\n /**\n * DTO.TRADE.QUERY.TOKEN_ADDRESS\n */\n tokenAddress?: string;\n /**\n * DTO.TRADE.QUERY.WALLET_ADDRESS\n */\n walletAddress?: string;\n /**\n * DTO.TRADE.QUERY.POOL_ADDRESS\n */\n poolAddress?: string;\n /**\n * DTO.TRADE.QUERY.BEFORE_TIMESTAMP\n */\n beforeTimestamp?: number;\n /**\n * DTO.TRADE.QUERY.AFTER_TIMESTAMP\n */\n afterTimestamp?: number;\n /**\n * DTO.TRADE.QUERY.BEFORE_BLOCK_HEIGHT\n */\n beforeBlockHeight?: number;\n /**\n * DTO.TRADE.QUERY.AFTER_BLOCK_HEIGHT\n */\n afterBlockHeight?: number;\n /**\n * DTO.TRADE.QUERY.TRANSACTIONS_SIGNATURE\n */\n transactionsSignature?: string;\n /**\n * DTO.TRADE.QUERY.ACTIVITIES_TYPE\n */\n type?: GetActivitiesType;\n};\n\nexport type GetActivitiesDirection =\n (typeof GetActivitiesDirection)[keyof typeof GetActivitiesDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetActivitiesDirection = {\n next: \"next\",\n prev: \"prev\",\n} as const;\n\nexport type GetActivitiesType = (typeof GetActivitiesType)[keyof typeof GetActivitiesType];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetActivitiesType = {\n BUY: \"BUY\",\n SELL: \"SELL\",\n LIQUIDITY_INITIALIZE: \"LIQUIDITY_INITIALIZE\",\n LIQUIDITY_ADD: \"LIQUIDITY_ADD\",\n LIQUIDITY_REMOVE: \"LIQUIDITY_REMOVE\",\n RED_PACKET_CREATE: \"RED_PACKET_CREATE\",\n RED_PACKET_CLAIM: \"RED_PACKET_CLAIM\",\n RED_PACKET_COMPLETE: \"RED_PACKET_COMPLETE\",\n RED_PACKET_REFUND: \"RED_PACKET_REFUND\",\n} as const;\n\nexport type GetTopTradersParams = {\n /**\n * DTO.PAGE.CURSOR.DESCRIPTION\n */\n cursor?: string;\n /**\n * DTO.TRADE.QUERY.LIMIT\n */\n limit?: number;\n /**\n * DTO.PAGE.DIRECTION\n */\n direction?: GetTopTradersDirection;\n /**\n * DTO.TRADE.QUERY.TOKEN_ADDRESS\n */\n tokenAddress: string;\n /**\n * DTO.TRADE.QUERY.TIME_FRAME\n */\n timeFrame?: GetTopTradersTimeFrame;\n /**\n * DTO.TRADE.QUERY.SORT_TYPE\n */\n sortType?: GetTopTradersSortType;\n /**\n * DTO.TRADE.QUERY.SORT_BY\n */\n sortBy?: GetTopTradersSortBy;\n};\n\nexport type GetTopTradersDirection =\n (typeof GetTopTradersDirection)[keyof typeof GetTopTradersDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetTopTradersDirection = {\n next: \"next\",\n prev: \"prev\",\n} as const;\n\nexport type GetTopTradersTimeFrame =\n (typeof GetTopTradersTimeFrame)[keyof typeof GetTopTradersTimeFrame];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetTopTradersTimeFrame = {\n \"30m\": \"30m\",\n \"1h\": \"1h\",\n \"2h\": \"2h\",\n \"4h\": \"4h\",\n \"6h\": \"6h\",\n \"8h\": \"8h\",\n \"12h\": \"12h\",\n \"24h\": \"24h\",\n} as const;\n\nexport type GetTopTradersSortType =\n (typeof GetTopTradersSortType)[keyof typeof GetTopTradersSortType];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetTopTradersSortType = {\n desc: \"desc\",\n asc: \"asc\",\n} as const;\n\nexport type GetTopTradersSortBy = (typeof GetTopTradersSortBy)[keyof typeof GetTopTradersSortBy];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetTopTradersSortBy = {\n tradeAmount: \"tradeAmount\",\n tradeCount: \"tradeCount\",\n} as const;\n\nexport type SearchParams = {\n /**\n * DTO.TOKEN.SEARCH.CHAINS\n */\n chains?: string[];\n /**\n * DTO.TOKEN.SEARCH.QUERY\n */\n q?: string;\n /**\n * DTO.TOKEN.SEARCH.LIMIT\n */\n limit?: number;\n /**\n * DTO.TOKEN.SEARCH.SORT_DIRECTION\n */\n sort?: SearchSort;\n /**\n * DTO.TOKEN.SEARCH.PROTOCOLS\n */\n protocols?: string[];\n /**\n * DTO.PAGE.CURSOR\n */\n cursor?: string;\n /**\n * DTO.TOKEN.SEARCH.SORT_BY\n */\n sortBy?: SearchSortBy;\n};\n\nexport type SearchSort = (typeof SearchSort)[keyof typeof SearchSort];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SearchSort = {\n asc: \"asc\",\n desc: \"desc\",\n} as const;\n\nexport type SearchSortBy = (typeof SearchSortBy)[keyof typeof SearchSortBy];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SearchSortBy = {\n marketCapInUsd: \"marketCapInUsd\",\n liquidityInUsd: \"liquidityInUsd\",\n priceInUsd: \"priceInUsd\",\n holderCount: \"holderCount\",\n h24VolumeInUsd: \"h24VolumeInUsd\",\n h24Transactions: \"h24Transactions\",\n tokenCreatedAt: \"tokenCreatedAt\",\n} as const;\n\nexport type GetTokensParams = {\n /**\n * GLOBAL.TOKENADDRESSES.DESCRIPTION\n */\n tokenAddresses: string;\n /**\n * DTO.TOKEN.REQUEST.SORT_BY\n */\n sortBy?: GetTokensSortBy;\n /**\n * DTO.TOKEN.REQUEST.SORT_DIRECTION\n */\n sortDirection?: GetTokensSortDirection;\n /**\n * DTO.TOKEN.REQUEST.FILTER_BY\n */\n filterBy?: FilterCondition[];\n};\n\nexport type GetTokensSortBy = (typeof GetTokensSortBy)[keyof typeof GetTokensSortBy];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetTokensSortBy = {\n marketDatapriceInUsd: \"marketData.priceInUsd\",\n statspriceChangeRatioInUsd1m: \"stats.priceChangeRatioInUsd1m\",\n statspriceChangeRatioInUsd5m: \"stats.priceChangeRatioInUsd5m\",\n statspriceChangeRatioInUsd1h: \"stats.priceChangeRatioInUsd1h\",\n statspriceChangeRatioInUsd4h: \"stats.priceChangeRatioInUsd4h\",\n statspriceChangeRatioInUsd24h: \"stats.priceChangeRatioInUsd24h\",\n marketDatamarketCapInUsd: \"marketData.marketCapInUsd\",\n marketDatamaxPoolTvlInUsd: \"marketData.maxPoolTvlInUsd\",\n marketDatatotalTvlInUsd: \"marketData.totalTvlInUsd\",\n marketDatatop10TotalHoldings: \"marketData.top10TotalHoldings\",\n marketDatatop10HoldingsRatio: \"marketData.top10HoldingsRatio\",\n marketDatatop100TotalHoldings: \"marketData.top100TotalHoldings\",\n marketDatatop100HoldingsRatio: \"marketData.top100HoldingsRatio\",\n marketDataholders: \"marketData.holders\",\n marketDatacreatorHoldings: \"marketData.creatorHoldings\",\n marketDatacreatorHoldingsRatio: \"marketData.creatorHoldingsRatio\",\n statsbuys1m: \"stats.buys1m\",\n statsbuys5m: \"stats.buys5m\",\n statsbuys15m: \"stats.buys15m\",\n statsbuys30m: \"stats.buys30m\",\n statsbuys1h: \"stats.buys1h\",\n statsbuys4h: \"stats.buys4h\",\n statsbuys24h: \"stats.buys24h\",\n statssells1m: \"stats.sells1m\",\n statssells5m: \"stats.sells5m\",\n statssells15m: \"stats.sells15m\",\n statssells30m: \"stats.sells30m\",\n statssells1h: \"stats.sells1h\",\n statssells4h: \"stats.sells4h\",\n statssells24h: \"stats.sells24h\",\n statstrades1m: \"stats.trades1m\",\n statstrades5m: \"stats.trades5m\",\n statstrades1h: \"stats.trades1h\",\n statstrades4h: \"stats.trades4h\",\n statstrades24h: \"stats.trades24h\",\n statstraders1m: \"stats.traders1m\",\n statstraders5m: \"stats.traders5m\",\n statstraders1h: \"stats.traders1h\",\n statstraders4h: \"stats.traders4h\",\n statstraders24h: \"stats.traders24h\",\n statsvolumesInUsd1m: \"stats.volumesInUsd1m\",\n statsvolumesInUsd5m: \"stats.volumesInUsd5m\",\n statsvolumesInUsd1h: \"stats.volumesInUsd1h\",\n statsvolumesInUsd4h: \"stats.volumesInUsd4h\",\n statsvolumesInUsd24h: \"stats.volumesInUsd24h\",\n tokenCreatedAt: \"tokenCreatedAt\",\n} as const;\n\nexport type GetTokensSortDirection =\n (typeof GetTokensSortDirection)[keyof typeof GetTokensSortDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetTokensSortDirection = {\n ASC: \"ASC\",\n DESC: \"DESC\",\n} as const;\n\nexport type GetMetadataMultiParams = {\n /**\n * GLOBAL.TOKENADDRESSES.DESCRIPTION\n */\n tokenAddresses: string;\n};\n\nexport type GetMetadataMulti200 = { [key: string]: TokenMetadata };\n\nexport type GetPoolsParams = {\n /**\n * DTO.POOL.SORT_BY\n */\n sortBy?: GetPoolsSortBy;\n /**\n * DTO.POOL.SORT_DIRECTION\n */\n sortDirection?: GetPoolsSortDirection;\n /**\n * DTO.POOL.MIN_TVL_IN_SOL\n */\n minTvlInSol?: string;\n /**\n * DTO.POOL.MAX_TVL_IN_SOL\n */\n maxTvlInSol?: string;\n /**\n * DTO.POOL.MIN_TVL_IN_USD\n */\n minTvlInUsd?: string;\n /**\n * DTO.POOL.MAX_TVL_IN_USD\n */\n maxTvlInUsd?: string;\n};\n\nexport type GetPoolsSortBy = (typeof GetPoolsSortBy)[keyof typeof GetPoolsSortBy];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetPoolsSortBy = {\n tvlInSol: \"tvlInSol\",\n tvlInUsd: \"tvlInUsd\",\n} as const;\n\nexport type GetPoolsSortDirection =\n (typeof GetPoolsSortDirection)[keyof typeof GetPoolsSortDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetPoolsSortDirection = {\n asc: \"asc\",\n desc: \"desc\",\n} as const;\n\nexport type GetStatsMultiParams = {\n /**\n * GLOBAL.TOKENADDRESSES.DESCRIPTION\n */\n tokenAddresses: string;\n};\n\nexport type GetStatsMulti200 = { [key: string]: TokenStat };\n\nexport type GetHoldersParams = {\n /**\n * DTO.PAGE.CURSOR.DESCRIPTION\n */\n cursor?: string;\n /**\n * DTO.PAGE.LIMIT\n */\n limit?: number;\n /**\n * DTO.PAGE.DIRECTION\n */\n direction?: GetHoldersDirection;\n};\n\nexport type GetHoldersDirection = (typeof GetHoldersDirection)[keyof typeof GetHoldersDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetHoldersDirection = {\n next: \"next\",\n prev: \"prev\",\n} as const;\n\nexport type GetHoldersMultiParams = {\n /**\n * GLOBAL.WALLETADDRESSES.DESCRIPTION\n */\n walletAddresses: string;\n};\n\nexport type GetCandlesParams = {\n /**\n * DTO.CANDLE.RESOLUTION\n */\n resolution: Resolution;\n /**\n * DTO.CANDLE.FROM\n */\n from?: number;\n /**\n * DTO.CANDLE.TO\n */\n to?: number;\n /**\n * DTO.CANDLE.LIMIT\n */\n limit?: number;\n};\n\nexport type GetMarketDataMultiParams = {\n /**\n * GLOBAL.TOKENADDRESSES.DESCRIPTION\n */\n tokenAddresses: string;\n};\n\nexport type GetMarketDataMulti200 = { [key: string]: TokenMarketData };\n\nexport type GetPricesParams = {\n /**\n * DTO.PAGE.CURSOR.DESCRIPTION\n */\n cursor?: string;\n /**\n * DTO.PAGE.LIMIT\n */\n limit?: number;\n /**\n * DTO.PAGE.DIRECTION\n */\n direction?: GetPricesDirection;\n};\n\nexport type GetPricesDirection = (typeof GetPricesDirection)[keyof typeof GetPricesDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetPricesDirection = {\n next: \"next\",\n prev: \"prev\",\n} as const;\n\nexport type GetPriceByTimeParams = {\n /**\n * DTO.TOKEN.PRICE.QUERY.TIMESTAMP\n */\n timestamp: number;\n};\n\nexport type GetMintAndBurnParams = {\n /**\n * DTO.PAGE.CURSOR.DESCRIPTION\n */\n cursor?: string;\n /**\n * DTO.PAGE.LIMIT\n */\n limit?: number;\n /**\n * DTO.PAGE.DIRECTION\n */\n direction?: GetMintAndBurnDirection;\n /**\n * DTO.TOKEN.MINT_AND_BURN.TYPE\n */\n type?: GetMintAndBurnType;\n};\n\nexport type GetMintAndBurnDirection =\n (typeof GetMintAndBurnDirection)[keyof typeof GetMintAndBurnDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetMintAndBurnDirection = {\n next: \"next\",\n prev: \"prev\",\n} as const;\n\nexport type GetMintAndBurnType = (typeof GetMintAndBurnType)[keyof typeof GetMintAndBurnType];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetMintAndBurnType = {\n all: \"all\",\n mint: \"mint\",\n burn: \"burn\",\n} as const;\n\nexport type ListTokenParams = {\n /**\n * DTO.PAGE.CURSOR.DESCRIPTION\n */\n cursor?: string;\n /**\n * DTO.PAGE.LIMIT\n */\n limit?: number;\n /**\n * DTO.PAGE.DIRECTION\n */\n direction?: ListTokenDirection;\n /**\n * DTO.TOKEN.SEARCH.SORT_DIRECTION\n */\n sort?: ListTokenSort;\n /**\n * DTO.TOKEN.LIST.QUERY.SORT_BY\n */\n sortBy?: ListTokenSortBy;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H24_VOLUME_IN_USD\n */\n min_h24_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H24_VOLUME_IN_USD\n */\n max_h24_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H24_PRICE_CHANGE_RATIO\n */\n min_h24_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H24_PRICE_CHANGE_RATIO\n */\n max_h24_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H24_BUYS\n */\n min_h24_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H24_BUYS\n */\n max_h24_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H24_SELLS\n */\n min_h24_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H24_SELLS\n */\n max_h24_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H24_TRADES\n */\n min_h24_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H24_TRADES\n */\n max_h24_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H24_BUYERS\n */\n min_h24_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H24_BUYERS\n */\n max_h24_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H24_SELLERS\n */\n min_h24_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H24_SELLERS\n */\n max_h24_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H24_BUY_VOLUME_IN_USD\n */\n min_h24_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H24_BUY_VOLUME_IN_USD\n */\n max_h24_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H24_SELL_VOLUME_IN_USD\n */\n min_h24_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H24_SELL_VOLUME_IN_USD\n */\n max_h24_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H4_VOLUME_IN_USD\n */\n min_h4_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H4_VOLUME_IN_USD\n */\n max_h4_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H4_PRICE_CHANGE_RATIO\n */\n min_h4_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H4_PRICE_CHANGE_RATIO\n */\n max_h4_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H4_BUYS\n */\n min_h4_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H4_BUYS\n */\n max_h4_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H4_SELLS\n */\n min_h4_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H4_SELLS\n */\n max_h4_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H4_TRADES\n */\n min_h4_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H4_TRADES\n */\n max_h4_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H4_BUYERS\n */\n min_h4_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H4_BUYERS\n */\n max_h4_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H4_SELLERS\n */\n min_h4_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H4_SELLERS\n */\n max_h4_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H4_BUY_VOLUME_IN_USD\n */\n min_h4_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H4_BUY_VOLUME_IN_USD\n */\n max_h4_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H4_SELL_VOLUME_IN_USD\n */\n min_h4_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H4_SELL_VOLUME_IN_USD\n */\n max_h4_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H1_VOLUME_IN_USD\n */\n min_h1_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H1_VOLUME_IN_USD\n */\n max_h1_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H1_PRICE_CHANGE_RATIO\n */\n min_h1_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H1_PRICE_CHANGE_RATIO\n */\n max_h1_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H1_BUYS\n */\n min_h1_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H1_BUYS\n */\n max_h1_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H1_SELLS\n */\n min_h1_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H1_SELLS\n */\n max_h1_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H1_TRADES\n */\n min_h1_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H1_TRADES\n */\n max_h1_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H1_BUYERS\n */\n min_h1_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H1_BUYERS\n */\n max_h1_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H1_SELLERS\n */\n min_h1_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H1_SELLERS\n */\n max_h1_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H1_BUY_VOLUME_IN_USD\n */\n min_h1_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H1_BUY_VOLUME_IN_USD\n */\n max_h1_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H1_SELL_VOLUME_IN_USD\n */\n min_h1_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H1_SELL_VOLUME_IN_USD\n */\n max_h1_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M30_VOLUME_IN_USD\n */\n min_m30_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M30_VOLUME_IN_USD\n */\n max_m30_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M30_PRICE_CHANGE_RATIO\n */\n min_m30_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M30_PRICE_CHANGE_RATIO\n */\n max_m30_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M30_BUYS\n */\n min_m30_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M30_BUYS\n */\n max_m30_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M30_SELLS\n */\n min_m30_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M30_SELLS\n */\n max_m30_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M30_TRADES\n */\n min_m30_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M30_TRADES\n */\n max_m30_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M30_BUYERS\n */\n min_m30_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M30_BUYERS\n */\n max_m30_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M30_SELLERS\n */\n min_m30_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M30_SELLERS\n */\n max_m30_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M30_BUY_VOLUME_IN_USD\n */\n min_m30_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M30_BUY_VOLUME_IN_USD\n */\n max_m30_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M30_SELL_VOLUME_IN_USD\n */\n min_m30_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M30_SELL_VOLUME_IN_USD\n */\n max_m30_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M15_VOLUME_IN_USD\n */\n min_m15_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M15_VOLUME_IN_USD\n */\n max_m15_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M15_PRICE_CHANGE_RATIO\n */\n min_m15_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M15_PRICE_CHANGE_RATIO\n */\n max_m15_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M15_BUYS\n */\n min_m15_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M15_BUYS\n */\n max_m15_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M15_SELLS\n */\n min_m15_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M15_SELLS\n */\n max_m15_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M15_TRADES\n */\n min_m15_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M15_TRADES\n */\n max_m15_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M15_BUYERS\n */\n min_m15_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M15_BUYERS\n */\n max_m15_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M15_SELLERS\n */\n min_m15_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M15_SELLERS\n */\n max_m15_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M15_BUY_VOLUME_IN_USD\n */\n min_m15_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M15_BUY_VOLUME_IN_USD\n */\n max_m15_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M15_SELL_VOLUME_IN_USD\n */\n min_m15_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M15_SELL_VOLUME_IN_USD\n */\n max_m15_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M5_VOLUME_IN_USD\n */\n min_m5_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M5_VOLUME_IN_USD\n */\n max_m5_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M5_PRICE_CHANGE_RATIO\n */\n min_m5_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M5_PRICE_CHANGE_RATIO\n */\n max_m5_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M5_BUYS\n */\n min_m5_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M5_BUYS\n */\n max_m5_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M5_SELLS\n */\n min_m5_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M5_SELLS\n */\n max_m5_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M5_TRADES\n */\n min_m5_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M5_TRADES\n */\n max_m5_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M5_BUYERS\n */\n min_m5_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M5_BUYERS\n */\n max_m5_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M5_SELLERS\n */\n min_m5_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M5_SELLERS\n */\n max_m5_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M5_BUY_VOLUME_IN_USD\n */\n min_m5_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M5_BUY_VOLUME_IN_USD\n */\n max_m5_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M5_SELL_VOLUME_IN_USD\n */\n min_m5_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M5_SELL_VOLUME_IN_USD\n */\n max_m5_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M1_VOLUME_IN_USD\n */\n min_m1_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M1_VOLUME_IN_USD\n */\n max_m1_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M1_PRICE_CHANGE_RATIO\n */\n min_m1_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M1_PRICE_CHANGE_RATIO\n */\n max_m1_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M1_BUYS\n */\n min_m1_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M1_BUYS\n */\n max_m1_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M1_SELLS\n */\n min_m1_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M1_SELLS\n */\n max_m1_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M1_TRADES\n */\n min_m1_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M1_TRADES\n */\n max_m1_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M1_BUYERS\n */\n min_m1_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M1_BUYERS\n */\n max_m1_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M1_SELLERS\n */\n min_m1_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M1_SELLERS\n */\n max_m1_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M1_BUY_VOLUME_IN_USD\n */\n min_m1_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M1_BUY_VOLUME_IN_USD\n */\n max_m1_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M1_SELL_VOLUME_IN_USD\n */\n min_m1_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M1_SELL_VOLUME_IN_USD\n */\n max_m1_sell_volume_in_usd?: string;\n};\n\nexport type ListTokenDirection = (typeof ListTokenDirection)[keyof typeof ListTokenDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ListTokenDirection = {\n next: \"next\",\n prev: \"prev\",\n} as const;\n\nexport type ListTokenSort = (typeof ListTokenSort)[keyof typeof ListTokenSort];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ListTokenSort = {\n asc: \"asc\",\n desc: \"desc\",\n} as const;\n\nexport type ListTokenSortBy = (typeof ListTokenSortBy)[keyof typeof ListTokenSortBy];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ListTokenSortBy = {\n h24VolumeInUsd: \"h24VolumeInUsd\",\n h24PriceChangeRatio: \"h24PriceChangeRatio\",\n h24Buys: \"h24Buys\",\n h24Sells: \"h24Sells\",\n h24Trades: \"h24Trades\",\n h24Buyers: \"h24Buyers\",\n h24Sellers: \"h24Sellers\",\n h24BuyVolumeInUsd: \"h24BuyVolumeInUsd\",\n h24SellVolumeInUsd: \"h24SellVolumeInUsd\",\n h4VolumeInUsd: \"h4VolumeInUsd\",\n h4PriceChangeRatio: \"h4PriceChangeRatio\",\n h4Buys: \"h4Buys\",\n h4Sells: \"h4Sells\",\n h4Trades: \"h4Trades\",\n h4Buyers: \"h4Buyers\",\n h4Sellers: \"h4Sellers\",\n h4BuyVolumeInUsd: \"h4BuyVolumeInUsd\",\n h4SellVolumeInUsd: \"h4SellVolumeInUsd\",\n h1VolumeInUsd: \"h1VolumeInUsd\",\n h1PriceChangeRatio: \"h1PriceChangeRatio\",\n h1Buys: \"h1Buys\",\n h1Sells: \"h1Sells\",\n h1Trades: \"h1Trades\",\n h1Buyers: \"h1Buyers\",\n h1Sellers: \"h1Sellers\",\n h1BuyVolumeInUsd: \"h1BuyVolumeInUsd\",\n h1SellVolumeInUsd: \"h1SellVolumeInUsd\",\n m30VolumeInUsd: \"m30VolumeInUsd\",\n m30PriceChangeRatio: \"m30PriceChangeRatio\",\n m30Buys: \"m30Buys\",\n m30Sells: \"m30Sells\",\n m30Trades: \"m30Trades\",\n m30Buyers: \"m30Buyers\",\n m30Sellers: \"m30Sellers\",\n m30BuyVolumeInUsd: \"m30BuyVolumeInUsd\",\n m30SellVolumeInUsd: \"m30SellVolumeInUsd\",\n m15VolumeInUsd: \"m15VolumeInUsd\",\n m15PriceChangeRatio: \"m15PriceChangeRatio\",\n m15Buys: \"m15Buys\",\n m15Sells: \"m15Sells\",\n m15Trades: \"m15Trades\",\n m15Buyers: \"m15Buyers\",\n m15Sellers: \"m15Sellers\",\n m15BuyVolumeInUsd: \"m15BuyVolumeInUsd\",\n m15SellVolumeInUsd: \"m15SellVolumeInUsd\",\n m5VolumeInUsd: \"m5VolumeInUsd\",\n m5PriceChangeRatio: \"m5PriceChangeRatio\",\n m5Buys: \"m5Buys\",\n m5Sells: \"m5Sells\",\n m5Trades: \"m5Trades\",\n m5Buyers: \"m5Buyers\",\n m5Sellers: \"m5Sellers\",\n m5BuyVolumeInUsd: \"m5BuyVolumeInUsd\",\n m5SellVolumeInUsd: \"m5SellVolumeInUsd\",\n m1VolumeInUsd: \"m1VolumeInUsd\",\n m1PriceChangeRatio: \"m1PriceChangeRatio\",\n m1Buys: \"m1Buys\",\n m1Sells: \"m1Sells\",\n m1Trades: \"m1Trades\",\n m1Buyers: \"m1Buyers\",\n m1Sellers: \"m1Sellers\",\n m1BuyVolumeInUsd: \"m1BuyVolumeInUsd\",\n m1SellVolumeInUsd: \"m1SellVolumeInUsd\",\n} as const;\n\nexport type GetSecurity200 = { [key: string]: unknown };\n\nexport type GetTokenLiquiditySnapshotsParams = {\n /**\n * DTO.TOKEN.LIQUIDITY_SNAPSHOT.TIME\n */\n time?: number;\n /**\n * DTO.PAGE.CURSOR\n */\n cursor?: string;\n /**\n * DTO.PAGE.LIMIT\n */\n limit?: number;\n};\n\nexport type GetDexpoolSnapshotsParams = {\n /**\n * DTO.DEXPOOL.SNAPSHOT.TIME\n */\n time?: number;\n /**\n * DTO.PAGE.CURSOR\n */\n cursor?: string;\n /**\n * DTO.PAGE.LIMIT\n */\n limit?: number;\n};\n\nexport type GetHotTokensParams = {\n /**\n * DTO.TOKEN.REQUEST.SORT_BY\n */\n sortBy?: GetHotTokensSortBy;\n /**\n * DTO.TOKEN.REQUEST.SORT_DIRECTION\n */\n sortDirection?: GetHotTokensSortDirection;\n /**\n * DTO.TOKEN.REQUEST.FILTER_BY\n */\n rangeFilters?: FilterCondition[];\n /**\n * DTO.TOKEN.REQUEST.TAG\n */\n tag?: GetHotTokensTag;\n /**\n * DTO.TOKEN.FILTER.FILTERS\n */\n filters?: string[];\n /**\n * DTO.TOKEN.FILTER.LAUNCHPAD_PLATFORM\n */\n launchpadPlatform?: string[];\n /**\n * DTO.TOKEN.FILTER.SEARCH_KEYWORDS\n */\n searchKeywords?: string[];\n /**\n * DTO.TOKEN.FILTER.EXCLUDE_KEYWORDS\n */\n excludeKeywords?: string[];\n};\n\nexport type GetHotTokensSortBy = (typeof GetHotTokensSortBy)[keyof typeof GetHotTokensSortBy];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetHotTokensSortBy = {\n marketDatapriceInUsd: \"marketData.priceInUsd\",\n statspriceChangeRatioInUsd1m: \"stats.priceChangeRatioInUsd1m\",\n statspriceChangeRatioInUsd5m: \"stats.priceChangeRatioInUsd5m\",\n statspriceChangeRatioInUsd1h: \"stats.priceChangeRatioInUsd1h\",\n statspriceChangeRatioInUsd4h: \"stats.priceChangeRatioInUsd4h\",\n statspriceChangeRatioInUsd24h: \"stats.priceChangeRatioInUsd24h\",\n marketDatamarketCapInUsd: \"marketData.marketCapInUsd\",\n marketDatamaxPoolTvlInUsd: \"marketData.maxPoolTvlInUsd\",\n marketDatatotalTvlInUsd: \"marketData.totalTvlInUsd\",\n marketDatatop10TotalHoldings: \"marketData.top10TotalHoldings\",\n marketDatatop10HoldingsRatio: \"marketData.top10HoldingsRatio\",\n marketDatatop100TotalHoldings: \"marketData.top100TotalHoldings\",\n marketDatatop100HoldingsRatio: \"marketData.top100HoldingsRatio\",\n marketDataholders: \"marketData.holders\",\n marketDatacreatorHoldings: \"marketData.creatorHoldings\",\n marketDatacreatorHoldingsRatio: \"marketData.creatorHoldingsRatio\",\n statsbuys1m: \"stats.buys1m\",\n statsbuys5m: \"stats.buys5m\",\n statsbuys15m: \"stats.buys15m\",\n statsbuys30m: \"stats.buys30m\",\n statsbuys1h: \"stats.buys1h\",\n statsbuys4h: \"stats.buys4h\",\n statsbuys24h: \"stats.buys24h\",\n statssells1m: \"stats.sells1m\",\n statssells5m: \"stats.sells5m\",\n statssells15m: \"stats.sells15m\",\n statssells30m: \"stats.sells30m\",\n statssells1h: \"stats.sells1h\",\n statssells4h: \"stats.sells4h\",\n statssells24h: \"stats.sells24h\",\n statstrades1m: \"stats.trades1m\",\n statstrades5m: \"stats.trades5m\",\n statstrades1h: \"stats.trades1h\",\n statstrades4h: \"stats.trades4h\",\n statstrades24h: \"stats.trades24h\",\n statstraders1m: \"stats.traders1m\",\n statstraders5m: \"stats.traders5m\",\n statstraders1h: \"stats.traders1h\",\n statstraders4h: \"stats.traders4h\",\n statstraders24h: \"stats.traders24h\",\n statsvolumesInUsd1m: \"stats.volumesInUsd1m\",\n statsvolumesInUsd5m: \"stats.volumesInUsd5m\",\n statsvolumesInUsd1h: \"stats.volumesInUsd1h\",\n statsvolumesInUsd4h: \"stats.volumesInUsd4h\",\n statsvolumesInUsd24h: \"stats.volumesInUsd24h\",\n tokenCreatedAt: \"tokenCreatedAt\",\n} as const;\n\nexport type GetHotTokensSortDirection =\n (typeof GetHotTokensSortDirection)[keyof typeof GetHotTokensSortDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetHotTokensSortDirection = {\n ASC: \"ASC\",\n DESC: \"DESC\",\n} as const;\n\nexport type GetHotTokensTag = (typeof GetHotTokensTag)[keyof typeof GetHotTokensTag];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetHotTokensTag = {\n pump_fun: \"pump_fun\",\n raydium_launchpad: \"raydium_launchpad\",\n meteora_dynamic_bounding_curve: \"meteora_dynamic_bounding_curve\",\n bonk_fun: \"bonk_fun\",\n moonit_fun: \"moonit_fun\",\n} as const;\n\nexport type GetNewTokensParams = {\n /**\n * DTO.TOKEN.REQUEST.SORT_BY\n */\n sortBy?: GetNewTokensSortBy;\n /**\n * DTO.TOKEN.REQUEST.SORT_DIRECTION\n */\n sortDirection?: GetNewTokensSortDirection;\n /**\n * DTO.TOKEN.REQUEST.FILTER_BY\n */\n rangeFilters?: FilterCondition[];\n /**\n * DTO.TOKEN.REQUEST.TAG\n */\n tag?: GetNewTokensTag;\n /**\n * DTO.TOKEN.FILTER.FILTERS\n */\n filters?: string[];\n /**\n * DTO.TOKEN.FILTER.LAUNCHPAD_PLATFORM\n */\n launchpadPlatform?: string[];\n /**\n * DTO.TOKEN.FILTER.SEARCH_KEYWORDS\n */\n searchKeywords?: string[];\n /**\n * DTO.TOKEN.FILTER.EXCLUDE_KEYWORDS\n */\n excludeKeywords?: string[];\n};\n\nexport type GetNewTokensSortBy = (typeof GetNewTokensSortBy)[keyof typeof GetNewTokensSortBy];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetNewTokensSortBy = {\n marketDatapriceInUsd: \"marketData.priceInUsd\",\n statspriceChangeRatioInUsd1m: \"stats.priceChangeRatioInUsd1m\",\n statspriceChangeRatioInUsd5m: \"stats.priceChangeRatioInUsd5m\",\n statspriceChangeRatioInUsd1h: \"stats.priceChangeRatioInUsd1h\",\n statspriceChangeRatioInUsd4h: \"stats.priceChangeRatioInUsd4h\",\n statspriceChangeRatioInUsd24h: \"stats.priceChangeRatioInUsd24h\",\n marketDatamarketCapInUsd: \"marketData.marketCapInUsd\",\n marketDatamaxPoolTvlInUsd: \"marketData.maxPoolTvlInUsd\",\n marketDatatotalTvlInUsd: \"marketData.totalTvlInUsd\",\n marketDatatop10TotalHoldings: \"marketData.top10TotalHoldings\",\n marketDatatop10HoldingsRatio: \"marketData.top10HoldingsRatio\",\n marketDatatop100TotalHoldings: \"marketData.top100TotalHoldings\",\n marketDatatop100HoldingsRatio: \"marketData.top100HoldingsRatio\",\n marketDataholders: \"marketData.holders\",\n marketDatacreatorHoldings: \"marketData.creatorHoldings\",\n marketDatacreatorHoldingsRatio: \"marketData.creatorHoldingsRatio\",\n statsbuys1m: \"stats.buys1m\",\n statsbuys5m: \"stats.buys5m\",\n statsbuys15m: \"stats.buys15m\",\n statsbuys30m: \"stats.buys30m\",\n statsbuys1h: \"stats.buys1h\",\n statsbuys4h: \"stats.buys4h\",\n statsbuys24h: \"stats.buys24h\",\n statssells1m: \"stats.sells1m\",\n statssells5m: \"stats.sells5m\",\n statssells15m: \"stats.sells15m\",\n statssells30m: \"stats.sells30m\",\n statssells1h: \"stats.sells1h\",\n statssells4h: \"stats.sells4h\",\n statssells24h: \"stats.sells24h\",\n statstrades1m: \"stats.trades1m\",\n statstrades5m: \"stats.trades5m\",\n statstrades1h: \"stats.trades1h\",\n statstrades4h: \"stats.trades4h\",\n statstrades24h: \"stats.trades24h\",\n statstraders1m: \"stats.traders1m\",\n statstraders5m: \"stats.traders5m\",\n statstraders1h: \"stats.traders1h\",\n statstraders4h: \"stats.traders4h\",\n statstraders24h: \"stats.traders24h\",\n statsvolumesInUsd1m: \"stats.volumesInUsd1m\",\n statsvolumesInUsd5m: \"stats.volumesInUsd5m\",\n statsvolumesInUsd1h: \"stats.volumesInUsd1h\",\n statsvolumesInUsd4h: \"stats.volumesInUsd4h\",\n statsvolumesInUsd24h: \"stats.volumesInUsd24h\",\n tokenCreatedAt: \"tokenCreatedAt\",\n} as const;\n\nexport type GetNewTokensSortDirection =\n (typeof GetNewTokensSortDirection)[keyof typeof GetNewTokensSortDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetNewTokensSortDirection = {\n ASC: \"ASC\",\n DESC: \"DESC\",\n} as const;\n\nexport type GetNewTokensTag = (typeof GetNewTokensTag)[keyof typeof GetNewTokensTag];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetNewTokensTag = {\n pump_fun: \"pump_fun\",\n raydium_launchpad: \"raydium_launchpad\",\n meteora_dynamic_bounding_curve: \"meteora_dynamic_bounding_curve\",\n bonk_fun: \"bonk_fun\",\n moonit_fun: \"moonit_fun\",\n} as const;\n\nexport type GetStocksTokensParams = {\n /**\n * DTO.TOKEN.REQUEST.SORT_BY\n */\n sortBy?: GetStocksTokensSortBy;\n /**\n * DTO.TOKEN.REQUEST.SORT_DIRECTION\n */\n sortDirection?: GetStocksTokensSortDirection;\n /**\n * DTO.TOKEN.REQUEST.FILTER_BY\n */\n rangeFilters?: FilterCondition[];\n /**\n * DTO.TOKEN.REQUEST.TAG\n */\n tag?: GetStocksTokensTag;\n /**\n * DTO.TOKEN.FILTER.FILTERS\n */\n filters?: string[];\n /**\n * DTO.TOKEN.FILTER.LAUNCHPAD_PLATFORM\n */\n launchpadPlatform?: string[];\n /**\n * DTO.TOKEN.FILTER.SEARCH_KEYWORDS\n */\n searchKeywords?: string[];\n /**\n * DTO.TOKEN.FILTER.EXCLUDE_KEYWORDS\n */\n excludeKeywords?: string[];\n};\n\nexport type GetStocksTokensSortBy =\n (typeof GetStocksTokensSortBy)[keyof typeof GetStocksTokensSortBy];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetStocksTokensSortBy = {\n marketDatapriceInUsd: \"marketData.priceInUsd\",\n statspriceChangeRatioInUsd1m: \"stats.priceChangeRatioInUsd1m\",\n statspriceChangeRatioInUsd5m: \"stats.priceChangeRatioInUsd5m\",\n statspriceChangeRatioInUsd1h: \"stats.priceChangeRatioInUsd1h\",\n statspriceChangeRatioInUsd4h: \"stats.priceChangeRatioInUsd4h\",\n statspriceChangeRatioInUsd24h: \"stats.priceChangeRatioInUsd24h\",\n marketDatamarketCapInUsd: \"marketData.marketCapInUsd\",\n marketDatamaxPoolTvlInUsd: \"marketData.maxPoolTvlInUsd\",\n marketDatatotalTvlInUsd: \"marketData.totalTvlInUsd\",\n marketDatatop10TotalHoldings: \"marketData.top10TotalHoldings\",\n marketDatatop10HoldingsRatio: \"marketData.top10HoldingsRatio\",\n marketDatatop100TotalHoldings: \"marketData.top100TotalHoldings\",\n marketDatatop100HoldingsRatio: \"marketData.top100HoldingsRatio\",\n marketDataholders: \"marketData.holders\",\n marketDatacreatorHoldings: \"marketData.creatorHoldings\",\n marketDatacreatorHoldingsRatio: \"marketData.creatorHoldingsRatio\",\n statsbuys1m: \"stats.buys1m\",\n statsbuys5m: \"stats.buys5m\",\n statsbuys15m: \"stats.buys15m\",\n statsbuys30m: \"stats.buys30m\",\n statsbuys1h: \"stats.buys1h\",\n statsbuys4h: \"stats.buys4h\",\n statsbuys24h: \"stats.buys24h\",\n statssells1m: \"stats.sells1m\",\n statssells5m: \"stats.sells5m\",\n statssells15m: \"stats.sells15m\",\n statssells30m: \"stats.sells30m\",\n statssells1h: \"stats.sells1h\",\n statssells4h: \"stats.sells4h\",\n statssells24h: \"stats.sells24h\",\n statstrades1m: \"stats.trades1m\",\n statstrades5m: \"stats.trades5m\",\n statstrades1h: \"stats.trades1h\",\n statstrades4h: \"stats.trades4h\",\n statstrades24h: \"stats.trades24h\",\n statstraders1m: \"stats.traders1m\",\n statstraders5m: \"stats.traders5m\",\n statstraders1h: \"stats.traders1h\",\n statstraders4h: \"stats.traders4h\",\n statstraders24h: \"stats.traders24h\",\n statsvolumesInUsd1m: \"stats.volumesInUsd1m\",\n statsvolumesInUsd5m: \"stats.volumesInUsd5m\",\n statsvolumesInUsd1h: \"stats.volumesInUsd1h\",\n statsvolumesInUsd4h: \"stats.volumesInUsd4h\",\n statsvolumesInUsd24h: \"stats.volumesInUsd24h\",\n tokenCreatedAt: \"tokenCreatedAt\",\n} as const;\n\nexport type GetStocksTokensSortDirection =\n (typeof GetStocksTokensSortDirection)[keyof typeof GetStocksTokensSortDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetStocksTokensSortDirection = {\n ASC: \"ASC\",\n DESC: \"DESC\",\n} as const;\n\nexport type GetStocksTokensTag = (typeof GetStocksTokensTag)[keyof typeof GetStocksTokensTag];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetStocksTokensTag = {\n pump_fun: \"pump_fun\",\n raydium_launchpad: \"raydium_launchpad\",\n meteora_dynamic_bounding_curve: \"meteora_dynamic_bounding_curve\",\n bonk_fun: \"bonk_fun\",\n moonit_fun: \"moonit_fun\",\n} as const;\n\nexport type GetFinalStretchTokensParams = {\n /**\n * DTO.TOKEN.REQUEST.SORT_BY\n */\n sortBy?: GetFinalStretchTokensSortBy;\n /**\n * DTO.TOKEN.REQUEST.SORT_DIRECTION\n */\n sortDirection?: GetFinalStretchTokensSortDirection;\n /**\n * DTO.TOKEN.REQUEST.FILTER_BY\n */\n rangeFilters?: FilterCondition[];\n /**\n * DTO.TOKEN.REQUEST.TAG\n */\n tag?: GetFinalStretchTokensTag;\n /**\n * DTO.TOKEN.FILTER.FILTERS\n */\n filters?: string[];\n /**\n * DTO.TOKEN.FILTER.LAUNCHPAD_PLATFORM\n */\n launchpadPlatform?: string[];\n /**\n * DTO.TOKEN.FILTER.SEARCH_KEYWORDS\n */\n searchKeywords?: string[];\n /**\n * DTO.TOKEN.FILTER.EXCLUDE_KEYWORDS\n */\n excludeKeywords?: string[];\n};\n\nexport type GetFinalStretchTokensSortBy =\n (typeof GetFinalStretchTokensSortBy)[keyof typeof GetFinalStretchTokensSortBy];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetFinalStretchTokensSortBy = {\n marketDatapriceInUsd: \"marketData.priceInUsd\",\n statspriceChangeRatioInUsd1m: \"stats.priceChangeRatioInUsd1m\",\n statspriceChangeRatioInUsd5m: \"stats.priceChangeRatioInUsd5m\",\n statspriceChangeRatioInUsd1h: \"stats.priceChangeRatioInUsd1h\",\n statspriceChangeRatioInUsd4h: \"stats.priceChangeRatioInUsd4h\",\n statspriceChangeRatioInUsd24h: \"stats.priceChangeRatioInUsd24h\",\n marketDatamarketCapInUsd: \"marketData.marketCapInUsd\",\n marketDatamaxPoolTvlInUsd: \"marketData.maxPoolTvlInUsd\",\n marketDatatotalTvlInUsd: \"marketData.totalTvlInUsd\",\n marketDatatop10TotalHoldings: \"marketData.top10TotalHoldings\",\n marketDatatop10HoldingsRatio: \"marketData.top10HoldingsRatio\",\n marketDatatop100TotalHoldings: \"marketData.top100TotalHoldings\",\n marketDatatop100HoldingsRatio: \"marketData.top100HoldingsRatio\",\n marketDataholders: \"marketData.holders\",\n marketDatacreatorHoldings: \"marketData.creatorHoldings\",\n marketDatacreatorHoldingsRatio: \"marketData.creatorHoldingsRatio\",\n statsbuys1m: \"stats.buys1m\",\n statsbuys5m: \"stats.buys5m\",\n statsbuys15m: \"stats.buys15m\",\n statsbuys30m: \"stats.buys30m\",\n statsbuys1h: \"stats.buys1h\",\n statsbuys4h: \"stats.buys4h\",\n statsbuys24h: \"stats.buys24h\",\n statssells1m: \"stats.sells1m\",\n statssells5m: \"stats.sells5m\",\n statssells15m: \"stats.sells15m\",\n statssells30m: \"stats.sells30m\",\n statssells1h: \"stats.sells1h\",\n statssells4h: \"stats.sells4h\",\n statssells24h: \"stats.sells24h\",\n statstrades1m: \"stats.trades1m\",\n statstrades5m: \"stats.trades5m\",\n statstrades1h: \"stats.trades1h\",\n statstrades4h: \"stats.trades4h\",\n statstrades24h: \"stats.trades24h\",\n statstraders1m: \"stats.traders1m\",\n statstraders5m: \"stats.traders5m\",\n statstraders1h: \"stats.traders1h\",\n statstraders4h: \"stats.traders4h\",\n statstraders24h: \"stats.traders24h\",\n statsvolumesInUsd1m: \"stats.volumesInUsd1m\",\n statsvolumesInUsd5m: \"stats.volumesInUsd5m\",\n statsvolumesInUsd1h: \"stats.volumesInUsd1h\",\n statsvolumesInUsd4h: \"stats.volumesInUsd4h\",\n statsvolumesInUsd24h: \"stats.volumesInUsd24h\",\n tokenCreatedAt: \"tokenCreatedAt\",\n} as const;\n\nexport type GetFinalStretchTokensSortDirection =\n (typeof GetFinalStretchTokensSortDirection)[keyof typeof GetFinalStretchTokensSortDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetFinalStretchTokensSortDirection = {\n ASC: \"ASC\",\n DESC: \"DESC\",\n} as const;\n\nexport type GetFinalStretchTokensTag =\n (typeof GetFinalStretchTokensTag)[keyof typeof GetFinalStretchTokensTag];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetFinalStretchTokensTag = {\n pump_fun: \"pump_fun\",\n raydium_launchpad: \"raydium_launchpad\",\n meteora_dynamic_bounding_curve: \"meteora_dynamic_bounding_curve\",\n bonk_fun: \"bonk_fun\",\n moonit_fun: \"moonit_fun\",\n} as const;\n\nexport type GetMigratedTokensParams = {\n /**\n * DTO.TOKEN.REQUEST.SORT_BY\n */\n sortBy?: GetMigratedTokensSortBy;\n /**\n * DTO.TOKEN.REQUEST.SORT_DIRECTION\n */\n sortDirection?: GetMigratedTokensSortDirection;\n /**\n * DTO.TOKEN.REQUEST.FILTER_BY\n */\n rangeFilters?: FilterCondition[];\n /**\n * DTO.TOKEN.REQUEST.TAG\n */\n tag?: GetMigratedTokensTag;\n /**\n * DTO.TOKEN.FILTER.FILTERS\n */\n filters?: string[];\n /**\n * DTO.TOKEN.FILTER.LAUNCHPAD_PLATFORM\n */\n launchpadPlatform?: string[];\n /**\n * DTO.TOKEN.FILTER.SEARCH_KEYWORDS\n */\n searchKeywords?: string[];\n /**\n * DTO.TOKEN.FILTER.EXCLUDE_KEYWORDS\n */\n excludeKeywords?: string[];\n};\n\nexport type GetMigratedTokensSortBy =\n (typeof GetMigratedTokensSortBy)[keyof typeof GetMigratedTokensSortBy];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetMigratedTokensSortBy = {\n marketDatapriceInUsd: \"marketData.priceInUsd\",\n statspriceChangeRatioInUsd1m: \"stats.priceChangeRatioInUsd1m\",\n statspriceChangeRatioInUsd5m: \"stats.priceChangeRatioInUsd5m\",\n statspriceChangeRatioInUsd1h: \"stats.priceChangeRatioInUsd1h\",\n statspriceChangeRatioInUsd4h: \"stats.priceChangeRatioInUsd4h\",\n statspriceChangeRatioInUsd24h: \"stats.priceChangeRatioInUsd24h\",\n marketDatamarketCapInUsd: \"marketData.marketCapInUsd\",\n marketDatamaxPoolTvlInUsd: \"marketData.maxPoolTvlInUsd\",\n marketDatatotalTvlInUsd: \"marketData.totalTvlInUsd\",\n marketDatatop10TotalHoldings: \"marketData.top10TotalHoldings\",\n marketDatatop10HoldingsRatio: \"marketData.top10HoldingsRatio\",\n marketDatatop100TotalHoldings: \"marketData.top100TotalHoldings\",\n marketDatatop100HoldingsRatio: \"marketData.top100HoldingsRatio\",\n marketDataholders: \"marketData.holders\",\n marketDatacreatorHoldings: \"marketData.creatorHoldings\",\n marketDatacreatorHoldingsRatio: \"marketData.creatorHoldingsRatio\",\n statsbuys1m: \"stats.buys1m\",\n statsbuys5m: \"stats.buys5m\",\n statsbuys15m: \"stats.buys15m\",\n statsbuys30m: \"stats.buys30m\",\n statsbuys1h: \"stats.buys1h\",\n statsbuys4h: \"stats.buys4h\",\n statsbuys24h: \"stats.buys24h\",\n statssells1m: \"stats.sells1m\",\n statssells5m: \"stats.sells5m\",\n statssells15m: \"stats.sells15m\",\n statssells30m: \"stats.sells30m\",\n statssells1h: \"stats.sells1h\",\n statssells4h: \"stats.sells4h\",\n statssells24h: \"stats.sells24h\",\n statstrades1m: \"stats.trades1m\",\n statstrades5m: \"stats.trades5m\",\n statstrades1h: \"stats.trades1h\",\n statstrades4h: \"stats.trades4h\",\n statstrades24h: \"stats.trades24h\",\n statstraders1m: \"stats.traders1m\",\n statstraders5m: \"stats.traders5m\",\n statstraders1h: \"stats.traders1h\",\n statstraders4h: \"stats.traders4h\",\n statstraders24h: \"stats.traders24h\",\n statsvolumesInUsd1m: \"stats.volumesInUsd1m\",\n statsvolumesInUsd5m: \"stats.volumesInUsd5m\",\n statsvolumesInUsd1h: \"stats.volumesInUsd1h\",\n statsvolumesInUsd4h: \"stats.volumesInUsd4h\",\n statsvolumesInUsd24h: \"stats.volumesInUsd24h\",\n tokenCreatedAt: \"tokenCreatedAt\",\n} as const;\n\nexport type GetMigratedTokensSortDirection =\n (typeof GetMigratedTokensSortDirection)[keyof typeof GetMigratedTokensSortDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetMigratedTokensSortDirection = {\n ASC: \"ASC\",\n DESC: \"DESC\",\n} as const;\n\nexport type GetMigratedTokensTag = (typeof GetMigratedTokensTag)[keyof typeof GetMigratedTokensTag];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetMigratedTokensTag = {\n pump_fun: \"pump_fun\",\n raydium_launchpad: \"raydium_launchpad\",\n meteora_dynamic_bounding_curve: \"meteora_dynamic_bounding_curve\",\n bonk_fun: \"bonk_fun\",\n moonit_fun: \"moonit_fun\",\n} as const;\n\nexport type GetPnlParams = {\n /**\n * GLOBAL.TOKENADDRESS.DESCRIPTION\n */\n tokenAddress?: string;\n};\n\nexport type GetBalanceParams = {\n /**\n * DTO.WALLET.BALANCE.QUERY.TOKEN_ADDRESS\n */\n tokenAddress?: string;\n};\n\nexport type GetBalanceUpdatesParams = {\n /**\n * DTO.WALLET.BALANCE_UPDATE.QUERY.TOKEN_ADDRESS\n */\n tokenAddress?: string;\n /**\n * DTO.WALLET.BALANCE_UPDATE.QUERY.TIME_FROM\n */\n timeFrom?: number;\n /**\n * DTO.WALLET.BALANCE_UPDATE.QUERY.TIME_TO\n */\n timeTo?: number;\n /**\n * DTO.WALLET.BALANCE_UPDATE.QUERY.TYPE\n */\n type?: BalanceTokenType;\n /**\n * DTO.WALLET.BALANCE_UPDATE.QUERY.CHANGE_TYPE\n */\n changeType?: BalanceChangeType;\n /**\n * DTO.PAGE.CURSOR\n */\n cursor?: string;\n /**\n * DTO.PAGE.LIMIT\n */\n limit?: number;\n};\n\nexport type GetClaimsParams = {\n /**\n * DTO.RED_PACKET.CURSOR\n */\n cursor?: string;\n /**\n * DTO.RED_PACKET.LIMIT\n */\n limit?: number;\n /**\n * DTO.RED_PACKET.DIRECTION\n */\n direction?: string;\n};\n\nexport type GetRedpacketsParams = {\n /**\n * DTO.RED_PACKET.CURSOR\n */\n cursor?: string;\n /**\n * DTO.RED_PACKET.LIMIT\n */\n limit?: number;\n /**\n * DTO.RED_PACKET.DIRECTION\n */\n direction?: string;\n /**\n * DTO.RED_PACKET.CREATOR\n */\n creator?: string;\n /**\n * DTO.RED_PACKET.CHAIN\n */\n chain?: GetRedpacketsChain;\n};\n\nexport type GetRedpacketsChain = (typeof GetRedpacketsChain)[keyof typeof GetRedpacketsChain];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetRedpacketsChain = {\n sol: \"sol\",\n bsc: \"bsc\",\n eth: \"eth\",\n} as const;\n\nexport type GetClaimsByAddressParams = {\n /**\n * DTO.RED_PACKET.CURSOR\n */\n cursor?: string;\n /**\n * DTO.RED_PACKET.LIMIT\n */\n limit?: number;\n /**\n * DTO.RED_PACKET.DIRECTION\n */\n direction?: string;\n};\n\nexport type GetRedpacketsByAddressParams = {\n /**\n * DTO.RED_PACKET.CURSOR\n */\n cursor?: string;\n /**\n * DTO.RED_PACKET.LIMIT\n */\n limit?: number;\n /**\n * DTO.RED_PACKET.DIRECTION\n */\n direction?: string;\n};\n\nexport type ListEndpointsParams = {\n /**\n * DTO.ENDPOINT.LIMIT\n */\n limit?: number;\n /**\n * DTO.ENDPOINT.ITERATOR\n */\n iterator?: string;\n /**\n * DTO.ENDPOINT.ORDER\n */\n order?: ListEndpointsOrder;\n};\n\nexport type ListEndpointsOrder = (typeof ListEndpointsOrder)[keyof typeof ListEndpointsOrder];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ListEndpointsOrder = {\n ascending: \"ascending\",\n descending: \"descending\",\n} as const;\n"],"mappings":"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","names":["WsTokenActivityType","WsChannelType","WsMetricType","WsRankingType","WsDex"]}
|
|
1
|
+
{"version":3,"sources":["../src/chainstream.ts","../src/openapi-client/chainstreamApiClient.ts","../src/stream/stream.ts","../src/stream/stream.fields.ts","../src/stream/stream.model.ts","../src/openapi-client/generated/blockchain/blockchain.ts","../src/openapi-client/generated/defi-sol-moonshot/defi-sol-moonshot.ts","../src/openapi-client/generated/defi-sol-pumpfun/defi-sol-pumpfun.ts","../src/openapi-client/generated/dex-pool/dex-pool.ts","../src/openapi-client/generated/dex/dex.ts","../src/openapi-client/generated/endpoint/endpoint.ts","../src/openapi-client/generated/ipfs/ipfs.ts","../src/openapi-client/generated/jobs/jobs.ts","../src/openapi-client/generated/kyt/kyt.ts","../src/openapi-client/generated/ranking/ranking.ts","../src/openapi-client/generated/red-packet/red-packet.ts","../src/openapi-client/generated/token/token.ts","../src/openapi-client/generated/trade/trade.ts","../src/openapi-client/generated/transaction/transaction.ts","../src/openapi-client/generated/wallet/wallet.ts","../src/openapi-client/generated/watchlist/watchlist.ts","../src/openapi-client/generated/dexAggregatorAPI.schemas.ts"],"sourcesContent":["import { EventSourcePolyfill } from \"event-source-polyfill\";\nimport { configure } from \"./openapi-client/chainstreamApiClient.js\";\nimport { StreamApi } from \"./stream/index.js\";\n\n// Import all API modules\nimport * as blockchainApi from \"./openapi-client/generated/blockchain/blockchain.js\";\nimport * as moonshotApi from \"./openapi-client/generated/defi-sol-moonshot/defi-sol-moonshot.js\";\nimport * as pumpfunApi from \"./openapi-client/generated/defi-sol-pumpfun/defi-sol-pumpfun.js\";\nimport * as dexPoolApi from \"./openapi-client/generated/dex-pool/dex-pool.js\";\nimport * as dexApi from \"./openapi-client/generated/dex/dex.js\";\nimport * as endpointApi from \"./openapi-client/generated/endpoint/endpoint.js\";\nimport * as ipfsApi from \"./openapi-client/generated/ipfs/ipfs.js\";\nimport * as jobsApi from \"./openapi-client/generated/jobs/jobs.js\";\nimport * as kytApi from \"./openapi-client/generated/kyt/kyt.js\";\nimport * as rankingApi from \"./openapi-client/generated/ranking/ranking.js\";\nimport * as redPacketApi from \"./openapi-client/generated/red-packet/red-packet.js\";\nimport * as tokenApi from \"./openapi-client/generated/token/token.js\";\nimport * as tradeApi from \"./openapi-client/generated/trade/trade.js\";\nimport * as transactionApi from \"./openapi-client/generated/transaction/transaction.js\";\nimport * as walletApi from \"./openapi-client/generated/wallet/wallet.js\";\nimport * as watchlistApi from \"./openapi-client/generated/watchlist/watchlist.js\";\n\nexport interface TokenProvider {\n getToken(): Promise<string> | string;\n}\n\nexport interface ChainStreamRequestContext {\n baseUrl: string;\n streamUrl: string;\n accessToken: string | TokenProvider;\n}\n\nexport interface ChainStreamClientOptions {\n debug?: boolean;\n serverUrl?: string;\n streamUrl?: string;\n /**\n * Whether to automatically connect to WebSocket on initialization.\n * Default: false\n *\n * If set to true, WebSocket will connect automatically.\n * If false or not set, you need to manually call `client.stream.connect()` when needed.\n */\n autoConnectWebSocket?: boolean;\n}\n\nexport class ChainStreamClient {\n public readonly requestCtx: ChainStreamRequestContext;\n\n // WebSocket streaming client\n public readonly stream: StreamApi;\n\n // REST API modules\n public readonly token: typeof tokenApi;\n public readonly dex: typeof dexApi;\n public readonly dexpool: typeof dexPoolApi;\n public readonly trade: typeof tradeApi;\n public readonly ranking: typeof rankingApi;\n public readonly transaction: typeof transactionApi;\n public readonly moonshot: typeof moonshotApi;\n public readonly pumpfun: typeof pumpfunApi;\n public readonly wallet: typeof walletApi;\n public readonly redPacket: typeof redPacketApi;\n public readonly ipfs: typeof ipfsApi;\n public readonly blockchain: typeof blockchainApi;\n public readonly watchlist: typeof watchlistApi;\n public readonly jobs: typeof jobsApi;\n public readonly kyt: typeof kytApi;\n public readonly endpoint: typeof endpointApi;\n\n public constructor(accessToken: string | TokenProvider, options: ChainStreamClientOptions = {}) {\n const baseUrl: string = options.serverUrl ?? \"https://api-dex.chainstream.io\";\n const streamUrl: string =\n options.streamUrl ?? \"wss://realtime-dex.chainstream.io/connection/websocket\";\n\n this.requestCtx = { baseUrl, streamUrl, accessToken };\n\n // Configure the API client with authentication\n configure({\n accessToken,\n basePath: baseUrl,\n debugging: options.debug,\n });\n\n // Assign API modules\n this.token = tokenApi;\n this.dex = dexApi;\n this.dexpool = dexPoolApi;\n this.trade = tradeApi;\n this.ranking = rankingApi;\n this.transaction = transactionApi;\n this.moonshot = moonshotApi;\n this.pumpfun = pumpfunApi;\n this.wallet = walletApi;\n this.redPacket = redPacketApi;\n this.ipfs = ipfsApi;\n this.blockchain = blockchainApi;\n this.watchlist = watchlistApi;\n this.jobs = jobsApi;\n this.kyt = kytApi;\n this.endpoint = endpointApi;\n\n // Initialize WebSocket streaming client\n this.stream = new StreamApi(this.requestCtx);\n\n // Only auto-connect WebSocket if explicitly enabled\n if (options.autoConnectWebSocket === true) {\n this.stream.connect();\n }\n }\n\n /**\n * Wait for a job to complete using Server-Sent Events (SSE)\n * @param jobId - The job ID to wait for\n * @param timeout - Timeout in milliseconds (default: 60000)\n * @returns Promise that resolves with the job result\n */\n async waitForJob<T>(jobId: string, timeout = 60000): Promise<T> {\n const accessToken =\n typeof this.requestCtx.accessToken === \"string\"\n ? this.requestCtx.accessToken\n : await this.requestCtx.accessToken.getToken();\n\n return new Promise((resolve, reject) => {\n const sse = new EventSourcePolyfill(`${this.requestCtx.baseUrl}/jobs/${jobId}/streaming`, {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n });\n\n const timeoutId = setTimeout(() => {\n sse.close();\n reject(new Error(`Job ${jobId} timed out after ${timeout}ms`));\n }, timeout);\n\n sse.onmessage = event => {\n try {\n console.log(\"event.data: \", event.data);\n const data = JSON.parse(event.data as string);\n\n if (data.status === \"error\") {\n sse.close();\n reject(new Error(`Error: ${data.message}`));\n } else if (data.status === \"completed\") {\n clearTimeout(timeoutId);\n sse.close();\n resolve(data as T);\n }\n } catch {\n clearTimeout(timeoutId);\n sse.close();\n reject(new Error(\"Error parsing event data\"));\n }\n };\n\n sse.onopen = () => {\n console.log(\"SSE connection opened\");\n };\n\n sse.onerror = error => {\n const errorEvent = error as Event & { message?: string };\n if (errorEvent.message?.includes(\"No activity within\")) {\n console.log(\"SSE reconnecting due to inactivity...\");\n return;\n }\n\n clearTimeout(timeoutId);\n sse.close();\n reject(new Error(`Error in SSE connection: ${error}`));\n };\n });\n }\n}\n\nexport interface PostOptions {\n idempotencyKey?: string;\n}\n","import Axios, { AxiosInstance, AxiosRequestConfig } from \"axios\";\nimport axiosRetry, { exponentialDelay } from \"axios-retry\";\n\nimport type { TokenProvider } from \"../chainstream.js\";\n\n/**\n * The options for the ChainStream API client.\n */\nexport type ChainStreamApiOptions = {\n /**\n * The access token for authentication.\n * Can be a string or a TokenProvider that dynamically provides tokens.\n */\n accessToken: string | TokenProvider;\n\n /** The base path for the API. Defaults to https://api-dex.chainstream.io */\n basePath?: string;\n\n /** If true, logs API requests and responses to the console. */\n debugging?: boolean;\n\n /** The source for the API request, used for analytics. */\n source?: string;\n\n /** The version of the source for the API request, used for analytics. */\n sourceVersion?: string;\n};\n\nlet axiosInstance: AxiosInstance;\nlet currentOptions: ChainStreamApiOptions | undefined = undefined;\n\n/**\n * Configures the ChainStream API client with the given options.\n *\n * @param {ChainStreamApiOptions} options - The ChainStream API options.\n */\nexport const configure = (options: ChainStreamApiOptions) => {\n const baseURL = options.basePath || \"https://api-dex.chainstream.io\";\n\n currentOptions = {\n ...options,\n basePath: baseURL,\n };\n\n axiosInstance = Axios.create({\n baseURL,\n });\n\n axiosRetry(axiosInstance, {\n retryDelay: exponentialDelay,\n });\n\n // Add request interceptor for authentication\n axiosInstance.interceptors.request.use(async config => {\n const token =\n typeof options.accessToken === \"string\"\n ? options.accessToken\n : await options.accessToken.getToken();\n\n config.headers.Authorization = `Bearer ${token}`;\n config.headers[\"Content-Type\"] = \"application/json\";\n\n if (options.source) {\n config.headers[\"X-Source\"] = options.source;\n }\n if (options.sourceVersion) {\n config.headers[\"X-Source-Version\"] = options.sourceVersion;\n }\n\n if (options.debugging) {\n console.log(`[ChainStream API] ${config.method?.toUpperCase()} ${config.url}`);\n }\n\n return config;\n });\n\n // Add response interceptor for debugging\n if (options.debugging) {\n axiosInstance.interceptors.response.use(\n response => {\n console.log(`[ChainStream API] Response:`, response.status, response.data);\n return response;\n },\n error => {\n console.error(`[ChainStream API] Error:`, error.response?.status, error.response?.data);\n return Promise.reject(error);\n },\n );\n }\n};\n\n/**\n * Adds an idempotency key to request config if provided\n *\n * @param config - The Axios request configuration.\n * @param idempotencyKey - The idempotency key.\n * @returns The Axios request configuration with the idempotency key.\n */\nconst addIdempotencyKey = (\n config: AxiosRequestConfig,\n idempotencyKey?: string,\n): AxiosRequestConfig => {\n if (!idempotencyKey) {\n return config;\n }\n\n return {\n ...config,\n headers: {\n ...(config.headers || {}),\n \"X-Idempotency-Key\": idempotencyKey,\n },\n };\n};\n\n/**\n * The ChainStream API client function that handles authentication and error handling.\n *\n * @param {AxiosRequestConfig} config - The Axios request configuration.\n * @param idempotencyKey - Optional idempotency key.\n * @returns {Promise<T>} A promise that resolves to the response data.\n * @throws {Error} If the request fails.\n */\nexport const chainstreamApiClient = async <T>(\n config: AxiosRequestConfig,\n idempotencyKey?: string,\n): Promise<T> => {\n if (!axiosInstance) {\n throw new Error(\"ChainStream API client not configured. Call configure() first.\");\n }\n\n if (!config.url || config.url === \"\") {\n throw new Error(\"AxiosRequestConfig URL is empty.\");\n }\n\n if (!config.method || config.method === \"\") {\n throw new Error(\"AxiosRequestConfig method is empty.\");\n }\n\n // Add idempotency key to the request headers if provided\n const configWithIdempotencyKey = addIdempotencyKey(config, idempotencyKey);\n\n try {\n const response = await axiosInstance(configWithIdempotencyKey);\n return response.data as T;\n } catch (error) {\n // eslint-disable-next-line import/no-named-as-default-member\n if (Axios.isAxiosError(error) && error.response) {\n const statusCode = error.response.status;\n const responseData = error.response.data;\n\n throw new Error(\n `ChainStream API error (${statusCode}): ${\n typeof responseData === \"string\" ? responseData : JSON.stringify(responseData)\n }`,\n );\n }\n\n throw error;\n }\n};\n\n/**\n * Get the current configuration\n */\nexport const getConfig = () => currentOptions;\n","import { Centrifuge, ConnectionTokenContext } from \"@chainstream-io/centrifuge\";\nimport { ChainStreamRequestContext } from \"../chainstream.js\";\nimport { Resolution } from \"../openapi-client/index.js\";\nimport {\n WsDexPoolBalance,\n WsNewToken,\n WsTokenMetadata,\n WsTokenHolder,\n WsTokenStat,\n WsTokenLiquidity,\n WsTokenMaxLiquidity,\n WsTokenTotalLiquidity,\n WsWalletBalance,\n WsTokenSupply,\n WsWalletPnl,\n WsChannelType,\n WsTokenCandle,\n WsTradeActivity,\n WsWalletTokenPnl,\n WsRankingType,\n WsDex,\n WsRankingTokenList,\n WsTokenBondingCurve,\n} from \"./stream.model.js\";\nimport { replaceFilterFields } from \"./stream.fields.js\";\n\nexport interface Unsubscribable {\n unsubscribe(): void;\n}\n\nexport class StreamApi {\n private realtimeClient!: Centrifuge;\n private listenersMap: Map<string, Set<(data: unknown) => void>>;\n private context: ChainStreamRequestContext;\n private initPromise: Promise<void> | null = null;\n\n constructor(context: ChainStreamRequestContext) {\n this.context = context;\n this.listenersMap = new Map();\n }\n\n /**\n * Initialize Centrifuge client with current token\n * This is called lazily when connect() is called\n */\n private async initClient(): Promise<void> {\n if (this.realtimeClient) {\n return;\n }\n\n // Get initial token for URL\n const token = await this.getTokenValue();\n const realtimeEndpoint = this.buildWsUrl(this.context.streamUrl, token);\n\n this.realtimeClient = new Centrifuge(realtimeEndpoint, {\n getToken: async (_ctx: ConnectionTokenContext) => {\n return this.getTokenValue();\n },\n });\n\n this.realtimeClient\n .on(\"connected\", () => {\n console.log(\"[streaming] connected\");\n })\n .on(\"disconnected\", ctx => {\n console.warn(\"[streaming] disconnected\", ctx);\n })\n .on(\"error\", err => {\n console.error(\"[streaming] error: \", err);\n });\n }\n\n /**\n * Wait for initialization to complete\n * If not initialized, auto-connect first\n */\n private async ensureInitialized(): Promise<void> {\n if (!this.initPromise) {\n // Auto-connect if not initialized\n this.connect();\n }\n await this.initPromise;\n }\n\n /**\n * Get token value from string or TokenProvider\n */\n private async getTokenValue(): Promise<string> {\n return typeof this.context.accessToken === \"string\"\n ? this.context.accessToken\n : await this.context.accessToken.getToken();\n }\n\n /**\n * Build WebSocket URL with token as query parameter\n */\n private buildWsUrl(endpoint: string, token: string): string {\n const url = new URL(endpoint);\n url.searchParams.set(\"token\", token);\n return url.toString();\n }\n\n /**\n * Connect to the WebSocket server.\n * This is automatically called when you use subscribe methods if not already connected.\n * You can also call this method manually for explicit control.\n */\n connect(): void {\n // Start initialization and store the promise\n this.initPromise = this.initClient().then(() => {\n this.realtimeClient.connect();\n });\n }\n\n /**\n * Disconnect from the WebSocket server.\n * All subscriptions will be automatically removed.\n */\n disconnect(): void {\n if (this.realtimeClient) {\n this.realtimeClient.disconnect();\n }\n }\n\n /**\n * Check if the WebSocket is currently connected.\n */\n isConnected(): boolean {\n return this.realtimeClient?.state === \"connected\";\n }\n\n /**\n * Start batching commands for efficient bulk operations\n * All subscription commands after this call will be batched until stopBatching is called\n */\n startBatching(): void {\n if (this.realtimeClient) {\n this.realtimeClient.startBatching();\n }\n }\n\n /**\n * Stop batching and flush all collected commands to the server\n * This will send all batched subscription commands in a single network request\n */\n stopBatching(): void {\n if (this.realtimeClient) {\n this.realtimeClient.stopBatching();\n }\n }\n\n /**\n * Batch subscribe method that accepts a function containing subscription calls\n * All subscription methods called within the function will be batched\n * @param batchFunction Function containing subscription method calls\n * @returns Array of unsubscribe functions\n */\n batchSubscribe(batchFunction: () => Unsubscribable[]): Unsubscribable[] {\n // Start batching commands\n this.startBatching();\n\n // Execute the batch function (all subscription calls will be batched)\n const unsubscribables = batchFunction();\n\n // Stop batching and flush all commands\n this.stopBatching();\n\n return unsubscribables;\n }\n\n /**\n * Batch unsubscribe method that accepts an array of unsubscribe functions\n * All unsubscribe calls will be executed at once\n * @param unsubscribables Array of unsubscribe functions to execute\n */\n batchUnsubscribe(unsubscribables: Unsubscribable[]): void {\n if (!unsubscribables || unsubscribables.length === 0) {\n return;\n }\n\n // Execute all unsubscribe calls\n unsubscribables.forEach(unsub => {\n if (unsub && typeof unsub.unsubscribe === \"function\") {\n unsub.unsubscribe();\n }\n });\n }\n\n subscribe<T = unknown>(\n channel: string,\n fn: (data: T) => void,\n filter?: string,\n methodName?: string,\n ): Unsubscribable {\n // Add listener immediately\n let listeners = this.listenersMap.get(channel);\n if (!listeners) {\n listeners = new Set();\n this.listenersMap.set(channel, listeners);\n }\n listeners.add(fn as (data: unknown) => void);\n\n // Perform subscription after initialization is complete\n this.ensureInitialized().then(() => {\n let sub = this.realtimeClient.getSubscription(channel);\n\n if (!sub) {\n console.log(\"[xrealtime] create new sub: \", channel);\n\n // Process filter expression with method-specific field mappings\n const processedFilter =\n filter && methodName ? replaceFilterFields(filter, methodName) : filter;\n\n sub = this.realtimeClient.newSubscription(channel, {\n delta: \"fossil\",\n ...(processedFilter && { filter: processedFilter }),\n });\n\n sub\n .on(\"subscribed\", () => {\n console.log(\"[xrealtime] subscribed\", channel);\n })\n .on(\"unsubscribed\", () => {\n console.log(\"[xrealtime] unsubscribed\", channel);\n })\n .on(\"publication\", ctx => {\n const currentListeners = this.listenersMap.get(channel);\n currentListeners?.forEach(it => it(ctx.data));\n })\n .subscribe();\n }\n });\n\n return new StreamUnsubscribable<T>(this, channel, fn);\n }\n\n unsubscribe<T = unknown>(channel: string, fn: (data: T) => void): void {\n const listeners = this.listenersMap.get(channel);\n if (!listeners) {\n return;\n }\n\n listeners.delete(fn as (data: unknown) => void);\n console.log(\"unsubscribe, remain listeners: \", listeners.size);\n\n if (listeners.size === 0) {\n console.log(\"unsubscribe channel: \", channel);\n this.listenersMap.delete(channel);\n\n // Remove subscription after initialization is complete\n this.ensureInitialized().then(() => {\n const sub = this.realtimeClient.getSubscription(channel);\n if (sub) {\n sub.unsubscribe();\n this.realtimeClient.removeSubscription(sub);\n }\n });\n }\n }\n\n private formatScientificNotation(value: unknown): string {\n if (value === null || value === undefined) {\n return \"0\";\n }\n\n const strValue = value.toString();\n if (strValue.includes(\"e-\") || strValue.includes(\"E-\")) {\n return Number(value)\n .toFixed(20)\n .replace(/\\.?0+$/, \"\");\n }\n\n return strValue;\n }\n\n subscribeTokenCandles({\n chain,\n tokenAddress,\n resolution,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n resolution: Resolution;\n callback: (data: WsTokenCandle) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-candle:${chain}_${tokenAddress}_${resolution}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) => {\n callback({\n open: data.o as string,\n close: data.c as string,\n high: data.h as string,\n low: data.l as string,\n volume: data.v as string,\n resolution: data.r as Resolution,\n time: data.t as number,\n number: data.n as number,\n });\n },\n filter,\n \"subscribeTokenCandles\",\n );\n }\n\n subscribeTokenStats({\n chain,\n tokenAddress,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n callback: (data: WsTokenStat) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-token-stats:${chain}_${tokenAddress}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) =>\n callback({\n address: data.a as string,\n timestamp: data.t as number,\n buys1m: data.b1m as number,\n sells1m: data.s1m as number,\n buyers1m: data.be1m as number,\n sellers1m: data.se1m as number,\n buyVolumeInUsd1m: this.formatScientificNotation(data.bviu1m),\n sellVolumeInUsd1m: this.formatScientificNotation(data.sviu1m),\n price1m: this.formatScientificNotation(data.p1m),\n openInUsd1m: this.formatScientificNotation(data.oiu1m),\n closeInUsd1m: this.formatScientificNotation(data.ciu1m),\n\n buys5m: data.b5m as number,\n sells5m: data.s5m as number,\n buyers5m: data.be5m as number,\n sellers5m: data.se5m as number,\n buyVolumeInUsd5m: this.formatScientificNotation(data.bviu5m),\n sellVolumeInUsd5m: this.formatScientificNotation(data.sviu5m),\n price5m: this.formatScientificNotation(data.p5m),\n openInUsd5m: this.formatScientificNotation(data.oiu5m),\n closeInUsd5m: this.formatScientificNotation(data.ciu5m),\n\n buys15m: data.b15m as number,\n sells15m: data.s15m as number,\n buyers15m: data.be15m as number,\n sellers15m: data.se15m as number,\n buyVolumeInUsd15m: this.formatScientificNotation(data.bviu15m),\n sellVolumeInUsd15m: this.formatScientificNotation(data.sviu15m),\n price15m: this.formatScientificNotation(data.p15m),\n openInUsd15m: this.formatScientificNotation(data.oiu15m),\n closeInUsd15m: this.formatScientificNotation(data.ciu15m),\n\n buys30m: data.b30m as number,\n sells30m: data.s30m as number,\n buyers30m: data.be30m as number,\n sellers30m: data.se30m as number,\n buyVolumeInUsd30m: this.formatScientificNotation(data.bviu30m),\n sellVolumeInUsd30m: this.formatScientificNotation(data.sviu30m),\n price30m: this.formatScientificNotation(data.p30m),\n openInUsd30m: this.formatScientificNotation(data.oiu30m),\n closeInUsd30m: this.formatScientificNotation(data.ciu30m),\n\n buys1h: data.b1h as number,\n sells1h: data.s1h as number,\n buyers1h: data.be1h as number,\n sellers1h: data.se1h as number,\n buyVolumeInUsd1h: this.formatScientificNotation(data.bviu1h),\n sellVolumeInUsd1h: this.formatScientificNotation(data.sviu1h),\n price1h: this.formatScientificNotation(data.p1h),\n openInUsd1h: this.formatScientificNotation(data.oiu1h),\n closeInUsd1h: this.formatScientificNotation(data.ciu1h),\n\n buys4h: data.b4h as number,\n sells4h: data.s4h as number,\n buyers4h: data.be4h as number,\n sellers4h: data.se4h as number,\n buyVolumeInUsd4h: this.formatScientificNotation(data.bviu4h),\n sellVolumeInUsd4h: this.formatScientificNotation(data.sviu4h),\n price4h: this.formatScientificNotation(data.p4h),\n openInUsd4h: this.formatScientificNotation(data.oiu4h),\n closeInUsd4h: this.formatScientificNotation(data.ciu4h),\n\n buys24h: data.b24h as number,\n sells24h: data.s24h as number,\n buyers24h: data.be24h as number,\n sellers24h: data.se24h as number,\n buyVolumeInUsd24h: this.formatScientificNotation(data.bviu24h),\n sellVolumeInUsd24h: this.formatScientificNotation(data.sviu24h),\n price24h: this.formatScientificNotation(data.p24h),\n openInUsd24h: this.formatScientificNotation(data.oiu24h),\n closeInUsd24h: this.formatScientificNotation(data.ciu24h),\n\n price: this.formatScientificNotation(data.p),\n }),\n filter,\n \"subscribeTokenStats\",\n );\n }\n\n subscribeTokenHolders({\n chain,\n tokenAddress,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n callback: (data: WsTokenHolder) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-token-holding:${chain}_${tokenAddress}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) =>\n callback({\n tokenAddress: data.a as string,\n holders: data.h as number,\n top100HoldersAmount: this.formatScientificNotation(data.t100a),\n top50HoldersAmount: this.formatScientificNotation(data.t50a),\n top10HoldersAmount: this.formatScientificNotation(data.t10a),\n top100Holders: data.t100h as number,\n top50Holders: data.t50h as number,\n top10Holders: data.t10h as number,\n top100HoldersRatio: this.formatScientificNotation(data.t100r),\n top50HoldersRatio: this.formatScientificNotation(data.t50r),\n top10HoldersRatio: this.formatScientificNotation(data.t10r),\n creatorsHolders: data.ch as number,\n creatorsAmount: this.formatScientificNotation(data.ca),\n creatorsRatio: this.formatScientificNotation(data.cr),\n balanceTagFreshHolders: data.btfh as number,\n balanceTagFreshAmount: this.formatScientificNotation(data.btfa),\n balanceTagFreshRatio: this.formatScientificNotation(data.btfr),\n balanceTagSandwichHolders: data.btsh as number,\n balanceTagSandwichAmount: this.formatScientificNotation(data.btsa),\n balanceTagSandwichRatio: this.formatScientificNotation(data.btsr),\n balanceTagBundleHolders: data.btbh as number,\n balanceTagBundleAmount: this.formatScientificNotation(data.btba),\n balanceTagBundleRatio: this.formatScientificNotation(data.btbr),\n balanceTagSniperHolders: data.btsnh as number,\n balanceTagSniperAmount: this.formatScientificNotation(data.btsna),\n balanceTagSniperRatio: this.formatScientificNotation(data.btsnr),\n balanceTagDevHolders: data.btdh as number,\n balanceTagDevAmount: this.formatScientificNotation(data.btda),\n balanceTagDevRatio: this.formatScientificNotation(data.btdr),\n balanceTagProHolders: data.btph as number,\n balanceTagProAmount: this.formatScientificNotation(data.btpa),\n balanceTagProRatio: this.formatScientificNotation(data.btpr),\n balanceTagInsiderHolders: data.btih as number,\n balanceTagInsiderAmount: this.formatScientificNotation(data.btia),\n balanceTagInsiderRatio: this.formatScientificNotation(data.btir),\n balanceTagSmartHolders: data.btsmh as number,\n balanceTagSmartAmount: this.formatScientificNotation(data.btsma),\n balanceTagSmartRatio: this.formatScientificNotation(data.btsmr),\n balanceTagKolHolders: data.btkh as number,\n balanceTagKolAmount: this.formatScientificNotation(data.btka),\n balanceTagKolRatio: this.formatScientificNotation(data.btkr),\n balanceTagPhishingHolders: data.btphh as number,\n balanceTagPhishingAmount: this.formatScientificNotation(data.btpha),\n balanceTagPhishingRatio: this.formatScientificNotation(data.btphr),\n balanceTagBluechipHolders: data.btblh as number,\n balanceTagBluechipAmount: this.formatScientificNotation(data.btbla),\n balanceTagBluechipRatio: this.formatScientificNotation(data.btblr),\n balanceTagRatHolders: data.btrh as number,\n balanceTagRatAmount: this.formatScientificNotation(data.btra),\n balanceTagRatRatio: this.formatScientificNotation(data.btrr),\n timestamp: data.ts as number,\n }),\n filter,\n \"subscribeTokenHolders\",\n );\n }\n\n subscribeNewToken({\n chain,\n callback,\n filter,\n }: {\n chain: string;\n callback: (data: WsNewToken) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-new-token:${chain}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) => {\n const result: WsNewToken = {\n tokenAddress: data.a as string,\n name: data.n as string,\n symbol: data.s as string,\n createdAtMs: data.cts as number,\n };\n\n if (data.dec) {\n result.decimals = data.dec as number;\n }\n\n if (data.lf) {\n const lf = data.lf as Record<string, unknown>;\n result.launchFrom = {};\n if (lf.pa) {\n result.launchFrom.programAddress = lf.pa as string;\n }\n if (lf.pf) {\n result.launchFrom.protocolFamily = lf.pf as string;\n }\n if (lf.pn) {\n result.launchFrom.protocolName = lf.pn as string;\n }\n }\n\n callback(result);\n },\n filter,\n \"subscribeNewToken\",\n );\n }\n\n subscribeNewTokensMetadata({\n chain,\n callback,\n }: {\n chain: string;\n callback: (data: WsTokenMetadata[]) => void;\n }): Unsubscribable {\n const channel = `dex-new-tokens-metadata:${chain}`;\n return this.subscribe(channel, (data: Record<string, unknown>[]) =>\n callback(\n data.map(it => ({\n tokenAddress: it.a as string,\n name: it.n as string,\n symbol: it.s as string,\n imageUrl: it.iu as string,\n description: it.de as string,\n socialMedia: (() => {\n const sm = it.sm as Record<string, unknown> | undefined;\n if (!sm) return undefined;\n return {\n twitter: sm.tw as string | undefined,\n telegram: sm.tg as string | undefined,\n website: sm.w as string | undefined,\n tiktok: sm.tt as string | undefined,\n discord: sm.dc as string | undefined,\n facebook: sm.fb as string | undefined,\n github: sm.gh as string | undefined,\n instagram: sm.ig as string | undefined,\n linkedin: sm.li as string | undefined,\n medium: sm.md as string | undefined,\n reddit: sm.rd as string | undefined,\n youtube: sm.yt as string | undefined,\n bitbucket: sm.bb as string | undefined,\n };\n })(),\n createdAtMs: it.cts as number,\n })),\n ),\n );\n }\n\n subscribeTokenSupply({\n chain,\n tokenAddress,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n callback: (data: WsTokenSupply) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-token-supply:${chain}_${tokenAddress}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) =>\n callback({\n tokenAddress: data.a as string,\n supply: data.s as string,\n marketCapInUsd: data.mc as string,\n timestamp: data.ts as number,\n }),\n filter,\n \"subscribeTokenSupply\",\n );\n }\n\n subscribeTokenLiquidity({\n chain,\n tokenAddress,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n callback: (data: WsTokenLiquidity) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-token-general-stat-num:${chain}_${tokenAddress}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) =>\n callback({\n tokenAddress: data.a as string,\n metricType: data.t as WsTokenLiquidity[\"metricType\"],\n value: data.v as string,\n timestamp: data.ts as number,\n }),\n filter,\n \"subscribeTokenLiquidity\",\n );\n }\n\n /**\n * Subscribe to token max liquidity updates\n * Pushes the max liquidity info of a token in a single pool\n * Channel: dex-token-liquidity:{chain}_{token_address}\n */\n subscribeTokenMaxLiquidity({\n chain,\n tokenAddress,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n callback: (data: WsTokenMaxLiquidity) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-token-liquidity:${chain}_${tokenAddress}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) =>\n callback({\n tokenAddress: data.a as string,\n poolAddress: data.p as string,\n liquidityInUsd: data.liu as string,\n liquidityInNative: data.lin as string,\n timestamp: data.ts as number,\n }),\n filter,\n \"subscribeTokenMaxLiquidity\",\n );\n }\n\n /**\n * Subscribe to token total liquidity updates\n * Pushes the total liquidity info of a token across all pools\n * Channel: dex-token-total-liquidity:{chain}_{token_address}\n */\n subscribeTokenTotalLiquidity({\n chain,\n tokenAddress,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n callback: (data: WsTokenTotalLiquidity) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-token-total-liquidity:${chain}_${tokenAddress}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) =>\n callback({\n tokenAddress: data.a as string,\n liquidityInUsd: data.liu as string,\n liquidityInNative: data.lin as string,\n poolCount: data.pc as number,\n timestamp: data.ts as number,\n }),\n filter,\n \"subscribeTokenTotalLiquidity\",\n );\n }\n\n subscribeRankingTokensLiquidity({\n chain,\n channelType,\n callback,\n }: {\n chain: string;\n channelType: WsChannelType;\n callback: (data: WsTokenLiquidity[]) => void;\n }): Unsubscribable {\n const channel = `dex-ranking-token-general_stat_num-list:${chain}_${channelType}`;\n return this.subscribe(channel, (data: Record<string, unknown>[]) =>\n callback(\n data?.map(it => ({\n tokenAddress: it.a as string,\n metricType: it.t as WsTokenLiquidity[\"metricType\"],\n value: it.v as string,\n timestamp: it.ts as number,\n })),\n ),\n );\n }\n\n subscribeRankingTokensList({\n chain,\n ranking_type,\n dex,\n callback,\n }: {\n chain: string;\n ranking_type: WsRankingType;\n dex?: WsDex;\n callback: (data: WsRankingTokenList[]) => void;\n }): Unsubscribable {\n const channel = dex\n ? `dex-ranking-list:${chain}_${ranking_type}_${dex}`\n : `dex-ranking-list:${chain}_${ranking_type}`;\n return this.subscribe(channel, (data: Record<string, unknown>[]) =>\n callback(\n data?.map(item => {\n const result: WsRankingTokenList = {};\n const t = item.t as Record<string, unknown> | undefined;\n const bc = item.bc as Record<string, unknown> | undefined;\n const h = item.h as Record<string, unknown> | undefined;\n const s = item.s as Record<string, unknown> | undefined;\n const ts = item.ts as Record<string, unknown> | undefined;\n\n // TokenMetadata (t)\n if (t) {\n result.metadata = {\n tokenAddress: t.a as string,\n };\n if (t.n) {\n result.metadata.name = t.n as string;\n }\n if (t.s) {\n result.metadata.symbol = t.s as string;\n }\n if (t.iu) {\n result.metadata.imageUrl = t.iu as string;\n }\n if (t.de) {\n result.metadata.description = t.de as string;\n }\n if (t.dec) {\n result.metadata.decimals = t.dec as number;\n }\n if (t.cts) {\n result.metadata.createdAtMs = t.cts as number;\n }\n if (t.lf) {\n const lf = t.lf as Record<string, unknown>;\n result.metadata.launchFrom = {};\n if (lf.pa) {\n result.metadata.launchFrom.programAddress = lf.pa as string;\n }\n if (lf.pf) {\n result.metadata.launchFrom.protocolFamily = lf.pf as string;\n }\n if (lf.pn) {\n result.metadata.launchFrom.protocolName = lf.pn as string;\n }\n }\n if (t.mt) {\n const mt = t.mt as Record<string, unknown>;\n result.metadata.migratedTo = {};\n if (mt.pa) {\n result.metadata.migratedTo.programAddress = mt.pa as string;\n }\n if (mt.pf) {\n result.metadata.migratedTo.protocolFamily = mt.pf as string;\n }\n if (mt.pn) {\n result.metadata.migratedTo.protocolName = mt.pn as string;\n }\n }\n if (t.sm) {\n const sm = t.sm as Record<string, unknown>;\n result.metadata.socialMedia = {};\n if (sm.tw) {\n result.metadata.socialMedia.twitter = sm.tw as string;\n }\n if (sm.tg) {\n result.metadata.socialMedia.telegram = sm.tg as string;\n }\n if (sm.w) {\n result.metadata.socialMedia.website = sm.w as string;\n }\n if (sm.tt) {\n result.metadata.socialMedia.tiktok = sm.tt as string;\n }\n if (sm.dc) {\n result.metadata.socialMedia.discord = sm.dc as string;\n }\n if (sm.fb) {\n result.metadata.socialMedia.facebook = sm.fb as string;\n }\n if (sm.gh) {\n result.metadata.socialMedia.github = sm.gh as string;\n }\n if (sm.ig) {\n result.metadata.socialMedia.instagram = sm.ig as string;\n }\n if (sm.li) {\n result.metadata.socialMedia.linkedin = sm.li as string;\n }\n if (sm.md) {\n result.metadata.socialMedia.medium = sm.md as string;\n }\n if (sm.rd) {\n result.metadata.socialMedia.reddit = sm.rd as string;\n }\n if (sm.yt) {\n result.metadata.socialMedia.youtube = sm.yt as string;\n }\n if (sm.bb) {\n result.metadata.socialMedia.bitbucket = sm.bb as string;\n }\n }\n }\n\n // WsTokenBondingCurve (bc)\n if (bc) {\n result.bondingCurve = {};\n if (bc.pr) {\n result.bondingCurve.progressRatio = this.formatScientificNotation(bc.pr);\n }\n }\n\n // TokenHolder (h)\n if (h) {\n result.holder = {\n tokenAddress: h.a as string,\n timestamp: (h.ts as number) || 0,\n };\n if (h.h) {\n result.holder.holders = h.h as number;\n }\n if (h.t100a) {\n result.holder.top100HoldersAmount = this.formatScientificNotation(h.t100a);\n }\n if (h.t50a) {\n result.holder.top50HoldersAmount = this.formatScientificNotation(h.t50a);\n }\n if (h.t10a) {\n result.holder.top10HoldersAmount = this.formatScientificNotation(h.t10a);\n }\n if (h.t100h) {\n result.holder.top100Holders = h.t100h as number;\n }\n if (h.t50h) {\n result.holder.top50Holders = h.t50h as number;\n }\n if (h.t10h) {\n result.holder.top10Holders = h.t10h as number;\n }\n if (h.t100r) {\n result.holder.top100HoldersRatio = this.formatScientificNotation(h.t100r);\n }\n if (h.t50r) {\n result.holder.top50HoldersRatio = this.formatScientificNotation(h.t50r);\n }\n if (h.t10r) {\n result.holder.top10HoldersRatio = this.formatScientificNotation(h.t10r);\n }\n }\n\n // WsTokenSupply (s)\n if (s) {\n result.supply = {\n tokenAddress: s.a as string,\n timestamp: (s.ts as number) || 0,\n };\n if (s.s) {\n result.supply.supply = s.s as string;\n }\n if (s.mc) {\n result.supply.marketCapInUsd = s.mc as string;\n }\n }\n\n // TokenStat (ts)\n if (ts) {\n result.stat = {\n address: ts.a as string,\n timestamp: (ts.t as number) || 0,\n };\n\n // 1m data\n if (ts.b1m) {\n result.stat.buys1m = ts.b1m as number;\n }\n if (ts.s1m) {\n result.stat.sells1m = ts.s1m as number;\n }\n if (ts.be1m) {\n result.stat.buyers1m = ts.be1m as number;\n }\n if (ts.se1m) {\n result.stat.sellers1m = ts.se1m as number;\n }\n if (ts.bviu1m) {\n result.stat.buyVolumeInUsd1m = this.formatScientificNotation(ts.bviu1m);\n }\n if (ts.sviu1m) {\n result.stat.sellVolumeInUsd1m = this.formatScientificNotation(ts.sviu1m);\n }\n if (ts.p1m) {\n result.stat.price1m = this.formatScientificNotation(ts.p1m);\n }\n\n // Current price\n if (ts.p) {\n result.stat.price = this.formatScientificNotation(ts.p);\n }\n }\n\n return result;\n }),\n ),\n );\n }\n\n subscribeRankingTokensStats({\n chain,\n channelType,\n callback,\n }: {\n chain: string;\n channelType: WsChannelType;\n callback: (data: WsTokenStat[]) => void;\n }): Unsubscribable {\n const channel = `dex-ranking-token-stats-list:${chain}_${channelType}`;\n return this.subscribe(channel, (data: Record<string, unknown>[]) =>\n callback(\n data?.map(\n it =>\n ({\n address: it.a,\n timestamp: it.t,\n buys1m: it.b1m,\n sells1m: it.s1m,\n buyers1m: it.be1m,\n sellers1m: it.se1m,\n buyVolumeInUsd1m: this.formatScientificNotation(it.bviu1m),\n sellVolumeInUsd1m: this.formatScientificNotation(it.sviu1m),\n price1m: this.formatScientificNotation(it.p1m),\n openInUsd1m: this.formatScientificNotation(it.oiu1m),\n closeInUsd1m: this.formatScientificNotation(it.ciu1m),\n buys5m: it.b5m,\n sells5m: it.s5m,\n buyers5m: it.be5m,\n sellers5m: it.se5m,\n buyVolumeInUsd5m: this.formatScientificNotation(it.bviu5m),\n sellVolumeInUsd5m: this.formatScientificNotation(it.sviu5m),\n price5m: this.formatScientificNotation(it.p5m),\n openInUsd5m: this.formatScientificNotation(it.oiu5m),\n closeInUsd5m: this.formatScientificNotation(it.ciu5m),\n price: this.formatScientificNotation(it.p),\n }) as WsTokenStat,\n ),\n ),\n );\n }\n\n subscribeRankingTokensHolders({\n chain,\n channelType,\n callback,\n }: {\n chain: string;\n channelType: WsChannelType;\n callback: (data: WsTokenHolder[]) => void;\n }): Unsubscribable {\n const channel = `dex-ranking-token-holding-list:${chain}_${channelType}`;\n return this.subscribe(channel, (data: Record<string, unknown>[]) =>\n callback(\n data?.map(\n it =>\n ({\n tokenAddress: it.a,\n holders: it.h,\n top100HoldersAmount: this.formatScientificNotation(it.t100a),\n top50HoldersAmount: this.formatScientificNotation(it.t50a),\n top10HoldersAmount: this.formatScientificNotation(it.t10a),\n top100Holders: it.t100h,\n top50Holders: it.t50h,\n top10Holders: it.t10h,\n top100HoldersRatio: this.formatScientificNotation(it.t100r),\n top50HoldersRatio: this.formatScientificNotation(it.t50r),\n top10HoldersRatio: this.formatScientificNotation(it.t10r),\n timestamp: it.ts,\n }) as WsTokenHolder,\n ),\n ),\n );\n }\n\n subscribeRankingTokensSupply({\n chain,\n channelType,\n callback,\n }: {\n chain: string;\n channelType: WsChannelType;\n callback: (data: WsTokenSupply[]) => void;\n }): Unsubscribable {\n const channel = `dex-ranking-token-supply-list:${chain}_${channelType}`;\n return this.subscribe(channel, (data: Record<string, unknown>[]) =>\n callback(\n data?.map(it => ({\n tokenAddress: it.a as string,\n supply: it.s as string,\n marketCapInUsd: it.mc as string,\n timestamp: it.ts as number,\n })),\n ),\n );\n }\n\n subscribeRankingTokensBondingCurve({\n chain,\n callback,\n }: {\n chain: string;\n callback: (data: WsTokenBondingCurve[]) => void;\n }): Unsubscribable {\n const channel = `dex-ranking-token-bounding-curve-list:${chain}_new`;\n return this.subscribe(channel, (data: Record<string, unknown>[]) =>\n callback(\n data?.map(it => ({\n tokenAddress: it.a as string,\n progressRatio: it.pr as string,\n })),\n ),\n );\n }\n\n subscribeWalletBalance({\n chain,\n walletAddress,\n callback,\n filter,\n }: {\n chain: string;\n walletAddress: string;\n callback: (data: WsWalletBalance[]) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-wallet-balance:${chain}_${walletAddress}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) =>\n callback([\n {\n walletAddress: data.a as string,\n tokenAddress: data.ta as string,\n tokenPriceInUsd: data.tpiu as string,\n balance: data.b as string,\n timestamp: data.t as number,\n },\n ]),\n filter,\n \"subscribeWalletBalance\",\n );\n }\n\n subscribeWalletPnl({\n chain,\n walletAddress,\n callback,\n filter,\n }: {\n chain: string;\n walletAddress: string;\n callback: (data: WsWalletTokenPnl) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-wallet-token-pnl:${chain}_${walletAddress}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) =>\n callback({\n walletAddress: data.a as string,\n tokenAddress: data.ta as string,\n tokenPriceInUsd: data.tpiu as string,\n timestamp: data.t as number,\n opentime: data.ot as number,\n lasttime: data.lt as number,\n closetime: data.ct as number,\n buyAmount: data.ba as string,\n buyAmountInUsd: data.baiu as string,\n buyCount: data.bs as number,\n buyCount30d: data.bs30d as number,\n buyCount7d: data.bs7d as number,\n sellAmount: data.sa as string,\n sellAmountInUsd: data.saiu as string,\n sellCount: data.ss as number,\n sellCount30d: data.ss30d as number,\n sellCount7d: data.ss7d as number,\n heldDurationTimestamp: data.hdts as number,\n averageBuyPriceInUsd: data.abpiu as string,\n averageSellPriceInUsd: data.aspiu as string,\n unrealizedProfitInUsd: data.upiu as string,\n unrealizedProfitRatio: data.upr as string,\n realizedProfitInUsd: data.rpiu as string,\n realizedProfitRatio: data.rpr as string,\n totalRealizedProfitInUsd: data.trpiu as string,\n totalRealizedProfitRatio: data.trr as string,\n }),\n filter,\n \"subscribeWalletPnl\",\n );\n }\n\n subscribeWalletPnlList({\n chain,\n walletAddress,\n callback,\n }: {\n chain: string;\n walletAddress: string;\n callback: (data: WsWalletPnl[]) => void;\n }): Unsubscribable {\n const channel = `dex-wallet-pnl-list:${chain}_${walletAddress}`;\n return this.subscribe(channel, (data: Record<string, unknown>[]) =>\n callback(\n data?.map(\n it =>\n ({\n walletAddress: it.a,\n buys: it.bs,\n buyAmount: it.ba,\n buyAmountInUsd: it.baiu,\n averageBuyPriceInUsd: it.abpiu,\n sellAmount: it.sa,\n sellAmountInUsd: it.saiu,\n sells: it.ss,\n wins: it.ws,\n winRatio: it.wr,\n pnlInUsd: it.piu,\n averagePnlInUsd: it.apiu,\n pnlRatio: it.pr,\n profitableDays: it.pd,\n losingDays: it.ld,\n tokens: it.ts,\n resolution: it.r,\n }) as WsWalletPnl,\n ),\n ),\n );\n }\n\n subscribeTokenTrade({\n chain,\n tokenAddress,\n callback,\n filter,\n }: {\n chain: string;\n tokenAddress: string;\n callback: (data: WsTradeActivity) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-trade:${chain}_${tokenAddress}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) =>\n callback({\n tokenAddress: data.a as string,\n timestamp: data.t as number,\n kind: data.k as string,\n buyAmount: data.ba as string,\n buyAmountInUsd: data.baiu as string,\n buyTokenAddress: data.btma as string,\n buyTokenName: data.btn as string,\n buyTokenSymbol: data.bts as string,\n buyWalletAddress: data.bwa as string,\n sellAmount: data.sa as string,\n sellAmountInUsd: data.saiu as string,\n sellTokenAddress: data.stma as string,\n sellTokenName: data.stn as string,\n sellTokenSymbol: data.sts as string,\n sellWalletAddress: data.swa as string,\n txHash: data.h as string,\n }),\n filter,\n \"subscribeTokenTrades\",\n );\n }\n\n subscribeWalletTrade({\n chain,\n walletAddress,\n callback,\n filter,\n }: {\n chain: string;\n walletAddress: string;\n callback: (data: WsTradeActivity) => void;\n filter?: string;\n }): Unsubscribable {\n const channel = `dex-wallet-trade:${chain}_${walletAddress}`;\n return this.subscribe(\n channel,\n (data: Record<string, unknown>) =>\n callback({\n tokenAddress: data.a as string,\n timestamp: data.t as number,\n kind: data.k as string,\n buyAmount: data.ba as string,\n buyAmountInUsd: data.baiu as string,\n buyTokenAddress: data.btma as string,\n buyTokenName: data.btn as string,\n buyTokenSymbol: data.bts as string,\n buyWalletAddress: data.bwa as string,\n sellAmount: data.sa as string,\n sellAmountInUsd: data.saiu as string,\n sellTokenAddress: data.stma as string,\n sellTokenName: data.stn as string,\n sellTokenSymbol: data.sts as string,\n sellWalletAddress: data.swa as string,\n txHash: data.h as string,\n }),\n filter,\n \"subscribeTokenTrades\",\n );\n }\n\n subscribeDexPoolBalance({\n chain,\n poolAddress,\n callback,\n }: {\n chain: string;\n poolAddress: string;\n callback: (data: WsDexPoolBalance) => void;\n }): Unsubscribable {\n const channel = `dex-pool-balance:${chain}_${poolAddress}`;\n return this.subscribe(channel, (data: Record<string, unknown>) =>\n callback({\n poolAddress: data.a as string,\n tokenAAddress: data.taa as string,\n tokenALiquidityInUsd: data.taliu as string,\n tokenBAddress: data.tba as string,\n tokenBLiquidityInUsd: data.tbliu as string,\n }),\n );\n }\n}\n\nclass StreamUnsubscribable<T> {\n constructor(\n private readonly streamApi: StreamApi,\n private readonly channel: string,\n private readonly fn: (data: T) => void,\n ) {}\n\n unsubscribe(): void {\n this.streamApi.unsubscribe(this.channel, this.fn);\n }\n}\n","/**\n * Field mappings for CEL filter expressions\n * Maps human-readable field names to short field names used in the API\n * Organized by subscription method to handle field name conflicts\n */\n\nexport interface FieldMapping {\n readonly [key: string]: string;\n}\n\nexport interface MethodFieldMappings {\n readonly [methodName: string]: FieldMapping;\n}\n\n/**\n * Field mappings organized by subscription method\n * Each method can have its own field mappings to handle conflicts\n */\nexport const CEL_FIELD_MAPPINGS: MethodFieldMappings = {\n // Wallet balance subscription fields\n subscribeWalletBalance: {\n walletAddress: \"a\",\n tokenAddress: \"ta\",\n tokenPriceInUsd: \"tpiu\",\n balance: \"b\",\n timestamp: \"t\",\n },\n\n // Token candles subscription fields\n subscribeTokenCandles: {\n open: \"o\",\n close: \"c\",\n high: \"h\",\n low: \"l\",\n volume: \"v\",\n resolution: \"r\",\n time: \"t\",\n number: \"n\",\n },\n\n // Token stats subscription fields\n subscribeTokenStats: {\n address: \"a\",\n timestamp: \"t\",\n buys1m: \"b1m\",\n sells1m: \"s1m\",\n buyers1m: \"be1m\",\n sellers1m: \"se1m\",\n buyVolumeInUsd1m: \"bviu1m\",\n sellVolumeInUsd1m: \"sviu1m\",\n price1m: \"p1m\",\n openInUsd1m: \"oiu1m\",\n closeInUsd1m: \"ciu1m\",\n buys5m: \"b5m\",\n sells5m: \"s5m\",\n buyers5m: \"be5m\",\n sellers5m: \"se5m\",\n buyVolumeInUsd5m: \"bviu5m\",\n sellVolumeInUsd5m: \"sviu5m\",\n price5m: \"p5m\",\n openInUsd5m: \"oiu5m\",\n closeInUsd5m: \"ciu5m\",\n buys15m: \"b15m\",\n sells15m: \"s15m\",\n buyers15m: \"be15m\",\n sellers15m: \"se15m\",\n buyVolumeInUsd15m: \"bviu15m\",\n sellVolumeInUsd15m: \"sviu15m\",\n price15m: \"p15m\",\n openInUsd15m: \"oiu15m\",\n closeInUsd15m: \"ciu15m\",\n buys30m: \"b30m\",\n sells30m: \"s30m\",\n buyers30m: \"be30m\",\n sellers30m: \"se30m\",\n buyVolumeInUsd30m: \"bviu30m\",\n sellVolumeInUsd30m: \"sviu30m\",\n price30m: \"p30m\",\n openInUsd30m: \"oiu30m\",\n closeInUsd30m: \"ciu30m\",\n buys1h: \"b1h\",\n sells1h: \"s1h\",\n buyers1h: \"be1h\",\n sellers1h: \"se1h\",\n buyVolumeInUsd1h: \"bviu1h\",\n sellVolumeInUsd1h: \"sviu1h\",\n price1h: \"p1h\",\n openInUsd1h: \"oiu1h\",\n closeInUsd1h: \"ciu1h\",\n buys4h: \"b4h\",\n sells4h: \"s4h\",\n buyers4h: \"be4h\",\n sellers4h: \"se4h\",\n buyVolumeInUsd4h: \"bviu4h\",\n sellVolumeInUsd4h: \"sviu4h\",\n price4h: \"p4h\",\n openInUsd4h: \"oiu4h\",\n closeInUsd4h: \"ciu4h\",\n buys24h: \"b24h\",\n sells24h: \"s24h\",\n buyers24h: \"be24h\",\n sellers24h: \"se24h\",\n buyVolumeInUsd24h: \"bviu24h\",\n sellVolumeInUsd24h: \"sviu24h\",\n price24h: \"p24h\",\n price: \"p\",\n openInUsd24h: \"oiu24h\",\n closeInUsd24h: \"ciu24h\",\n },\n\n // Token holder subscription fields\n subscribeTokenHolders: {\n tokenAddress: \"a\",\n holders: \"h\",\n top100HoldersAmount: \"t100a\",\n top50HoldersAmount: \"t50a\",\n top10HoldersAmount: \"t10a\",\n top100Holders: \"t100h\",\n top50Holders: \"t50h\",\n top10Holders: \"t10h\",\n top100HoldersRatio: \"t100r\",\n top50HoldersRatio: \"t50r\",\n top10HoldersRatio: \"t10r\",\n creatorsHolders: \"ch\",\n creatorsAmount: \"ca\",\n creatorsRatio: \"cr\",\n balanceTagFreshHolders: \"btfh\",\n balanceTagFreshAmount: \"btfa\",\n balanceTagFreshRatio: \"btfr\",\n balanceTagSandwichHolders: \"btsh\",\n balanceTagSandwichAmount: \"btsa\",\n balanceTagSandwichRatio: \"btsr\",\n balanceTagBundleHolders: \"btbh\",\n balanceTagBundleAmount: \"btba\",\n balanceTagBundleRatio: \"btbr\",\n balanceTagSniperHolders: \"btsnh\",\n balanceTagSniperAmount: \"btsna\",\n balanceTagSniperRatio: \"btsnr\",\n balanceTagDevHolders: \"btdh\",\n balanceTagDevAmount: \"btda\",\n balanceTagDevRatio: \"btdr\",\n balanceTagProHolders: \"btph\",\n balanceTagProAmount: \"btpa\",\n balanceTagProRatio: \"btpr\",\n balanceTagInsiderHolders: \"btih\",\n balanceTagInsiderAmount: \"btia\",\n balanceTagInsiderRatio: \"btir\",\n balanceTagSmartHolders: \"btsmh\",\n balanceTagSmartAmount: \"btsma\",\n balanceTagSmartRatio: \"btsmr\",\n balanceTagKolHolders: \"btkh\",\n balanceTagKolAmount: \"btka\",\n balanceTagKolRatio: \"btkr\",\n balanceTagPhishingHolders: \"btphh\",\n balanceTagPhishingAmount: \"btpha\",\n balanceTagPhishingRatio: \"btphr\",\n balanceTagBluechipHolders: \"btblh\",\n balanceTagBluechipAmount: \"btbla\",\n balanceTagBluechipRatio: \"btblr\",\n balanceTagRatHolders: \"btrh\",\n balanceTagRatAmount: \"btra\",\n balanceTagRatRatio: \"btrr\",\n timestamp: \"ts\",\n },\n\n // New token subscription fields\n subscribeNewToken: {\n tokenAddress: \"a\",\n name: \"n\",\n symbol: \"s\",\n createdAtMs: \"cts\",\n },\n\n // Token supply subscription fields\n subscribeTokenSupply: {\n tokenAddress: \"a\",\n supply: \"s\",\n timestamp: \"ts\",\n },\n\n // Dex pool balance subscription fields\n subscribeDexPoolBalance: {\n poolAddress: \"a\",\n tokenAAddress: \"taa\",\n tokenALiquidityInUsd: \"taliu\",\n tokenBAddress: \"tba\",\n tokenBLiquidityInUsd: \"tbliu\",\n },\n\n // Token liquidity subscription fields\n subscribeTokenLiquidity: {\n tokenAddress: \"a\",\n metricType: \"t\",\n value: \"v\",\n timestamp: \"ts\",\n },\n\n // New token metadata subscription fields\n subscribeNewTokensMetadata: {\n tokenAddress: \"a\",\n name: \"n\",\n symbol: \"s\",\n imageUrl: \"iu\",\n description: \"de\",\n socialMedia: \"sm\",\n createdAtMs: \"cts\",\n },\n\n // Token trades subscription fields\n subscribeTokenTrades: {\n tokenAddress: \"a\",\n timestamp: \"t\",\n kind: \"k\",\n buyAmount: \"ba\",\n buyAmountInUsd: \"baiu\",\n buyTokenAddress: \"btma\",\n buyTokenName: \"btn\",\n buyTokenSymbol: \"bts\",\n buyWalletAddress: \"bwa\",\n sellAmount: \"sa\",\n sellAmountInUsd: \"saiu\",\n sellTokenAddress: \"stma\",\n sellTokenName: \"stn\",\n sellTokenSymbol: \"sts\",\n sellWalletAddress: \"swa\",\n txHash: \"h\",\n },\n\n // Wallet token PnL subscription fields\n subscribeWalletPnl: {\n walletAddress: \"a\",\n tokenAddress: \"ta\",\n tokenPriceInUsd: \"tpiu\",\n timestamp: \"t\",\n opentime: \"ot\",\n lasttime: \"lt\",\n closetime: \"ct\",\n buyAmount: \"ba\",\n buyAmountInUsd: \"baiu\",\n buyCount: \"bs\",\n buyCount30d: \"bs30d\",\n buyCount7d: \"bs7d\",\n sellAmount: \"sa\",\n sellAmountInUsd: \"saiu\",\n sellCount: \"ss\",\n sellCount30d: \"ss30d\",\n sellCount7d: \"ss7d\",\n heldDurationTimestamp: \"hdts\",\n averageBuyPriceInUsd: \"abpiu\",\n averageSellPriceInUsd: \"aspiu\",\n unrealizedProfitInUsd: \"upiu\",\n unrealizedProfitRatio: \"upr\",\n realizedProfitInUsd: \"rpiu\",\n realizedProfitRatio: \"rpr\",\n totalRealizedProfitInUsd: \"trpiu\",\n totalRealizedProfitRatio: \"trr\",\n },\n\n // Token max liquidity subscription fields\n subscribeTokenMaxLiquidity: {\n tokenAddress: \"a\",\n poolAddress: \"p\",\n liquidityInUsd: \"liu\",\n liquidityInNative: \"lin\",\n timestamp: \"ts\",\n },\n\n // Token total liquidity subscription fields\n subscribeTokenTotalLiquidity: {\n tokenAddress: \"a\",\n liquidityInUsd: \"liu\",\n liquidityInNative: \"lin\",\n poolCount: \"pc\",\n timestamp: \"ts\",\n },\n} as const;\n\n/**\n * Get field mappings for a specific subscription method\n * @param methodName - The name of the subscription method\n * @returns Field mapping object for the method, or empty object if not found\n */\nexport function getFieldMappings(methodName: string): FieldMapping {\n return CEL_FIELD_MAPPINGS[methodName] || {};\n}\n\n/**\n * Replace long field names with short field names in a filter expression\n * Automatically adds meta. prefix if not present\n * @param filter - Original filter expression\n * @param methodName - The name of the subscription method\n * @returns Filter expression with short field names and meta. prefix\n */\nexport function replaceFilterFields(filter: string, methodName: string): string {\n if (!filter) {\n return filter;\n }\n\n const fieldMappings = getFieldMappings(methodName);\n let result = filter;\n\n // Replace all long field names with short field names\n for (const [longField, shortField] of Object.entries(fieldMappings)) {\n // Handle both cases: with and without meta. prefix\n const patterns = [\n // Pattern 1: fieldName (without meta. prefix)\n new RegExp(`\\\\b${longField}\\\\b`, \"g\"),\n // Pattern 2: meta.fieldName (with meta. prefix)\n new RegExp(`\\\\bmeta\\\\.${longField}\\\\b`, \"g\"),\n ];\n\n patterns.forEach(pattern => {\n result = result.replace(pattern, `meta.${shortField}`);\n });\n }\n\n return result;\n}\n\n/**\n * Type-safe field mapping for specific subscription methods\n */\nexport type SubscriptionMethod = keyof typeof CEL_FIELD_MAPPINGS;\n\n/**\n * Get available field names for a specific subscription method\n * @param methodName - The name of the subscription method\n * @returns Array of available field names\n */\nexport function getAvailableFields(methodName: string): string[] {\n const mappings = getFieldMappings(methodName);\n return Object.keys(mappings);\n}\n","import { Resolution } from \"../openapi-client/index.js\";\n\nexport enum WsTokenActivityType {\n Sell = \"sell\",\n Buy = \"buy\",\n AddLiquidity = \"add_liquidity\",\n RemoveLiquidity = \"remove_liquidity\",\n}\n\nexport enum WsChannelType {\n New = \"new\",\n HOT = \"trending\",\n US_STOCKS = \"us_stocks\",\n COMPLETED = \"completed\",\n GRADUATED = \"graduated\",\n}\n\nexport enum WsMetricType {\n LIQUIDITY_IN_USD = \"liquidity_in_usd\",\n MIGRATED_RATIO = \"migrated_ratio\",\n}\n\nexport interface WsTokenActivity {\n address: string;\n priceUsd: string;\n amount: string;\n type: WsTokenActivityType;\n txHash: string;\n timestamp: number;\n}\n\nexport interface WsTokenStat {\n address: string;\n timestamp: number;\n buys1m?: number;\n sells1m?: number;\n buyers1m?: number;\n sellers1m?: number;\n buyVolumeInUsd1m?: string;\n sellVolumeInUsd1m?: string;\n price1m?: string;\n openInUsd1m?: string;\n closeInUsd1m?: string;\n\n buys5m?: number;\n sells5m?: number;\n buyers5m?: number;\n sellers5m?: number;\n buyVolumeInUsd5m?: string;\n sellVolumeInUsd5m?: string;\n price5m?: string;\n openInUsd5m?: string;\n closeInUsd5m?: string;\n\n buys15m?: number;\n sells15m?: number;\n buyers15m?: number;\n sellers15m?: number;\n buyVolumeInUsd15m?: string;\n sellVolumeInUsd15m?: string;\n price15m?: string;\n openInUsd15m?: string;\n closeInUsd15m?: string;\n\n buys30m?: number;\n sells30m?: number;\n buyers30m?: number;\n sellers30m?: number;\n buyVolumeInUsd30m?: string;\n sellVolumeInUsd30m?: string;\n price30m?: string;\n openInUsd30m?: string;\n closeInUsd30m?: string;\n\n buys1h?: number;\n sells1h?: number;\n buyers1h?: number;\n sellers1h?: number;\n buyVolumeInUsd1h?: string;\n sellVolumeInUsd1h?: string;\n price1h?: string;\n openInUsd1h?: string;\n closeInUsd1h?: string;\n\n buys4h?: number;\n sells4h?: number;\n buyers4h?: number;\n sellers4h?: number;\n buyVolumeInUsd4h?: string;\n sellVolumeInUsd4h?: string;\n price4h?: string;\n openInUsd4h?: string;\n closeInUsd4h?: string;\n\n buys24h?: number;\n sells24h?: number;\n buyers24h?: number;\n sellers24h?: number;\n buyVolumeInUsd24h?: string;\n sellVolumeInUsd24h?: string;\n price24h?: string;\n openInUsd24h?: string;\n closeInUsd24h?: string;\n\n price?: string;\n}\n\nexport interface WsTokenHolder {\n tokenAddress: string;\n holders?: number;\n top100HoldersAmount?: string;\n top50HoldersAmount?: string;\n top10HoldersAmount?: string;\n top100Holders?: number;\n top50Holders?: number;\n top10Holders?: number;\n top100HoldersRatio?: string;\n top50HoldersRatio?: string;\n top10HoldersRatio?: string;\n creatorsHolders?: number;\n creatorsAmount?: string;\n creatorsRatio?: string;\n balanceTagFreshHolders?: number;\n balanceTagFreshAmount?: string;\n balanceTagFreshRatio?: string;\n balanceTagSandwichHolders?: number;\n balanceTagSandwichAmount?: string;\n balanceTagSandwichRatio?: string;\n balanceTagBundleHolders?: number;\n balanceTagBundleAmount?: string;\n balanceTagBundleRatio?: string;\n balanceTagSniperHolders?: number;\n balanceTagSniperAmount?: string;\n balanceTagSniperRatio?: string;\n balanceTagDevHolders?: number;\n balanceTagDevAmount?: string;\n balanceTagDevRatio?: string;\n balanceTagProHolders?: number;\n balanceTagProAmount?: string;\n balanceTagProRatio?: string;\n balanceTagInsiderHolders?: number;\n balanceTagInsiderAmount?: string;\n balanceTagInsiderRatio?: string;\n balanceTagSmartHolders?: number;\n balanceTagSmartAmount?: string;\n balanceTagSmartRatio?: string;\n balanceTagKolHolders?: number;\n balanceTagKolAmount?: string;\n balanceTagKolRatio?: string;\n balanceTagPhishingHolders?: number;\n balanceTagPhishingAmount?: string;\n balanceTagPhishingRatio?: string;\n balanceTagBluechipHolders?: number;\n balanceTagBluechipAmount?: string;\n balanceTagBluechipRatio?: string;\n balanceTagRatHolders?: number;\n balanceTagRatAmount?: string;\n balanceTagRatRatio?: string;\n timestamp: number;\n}\n\nexport interface WsWalletBalance {\n walletAddress: string;\n tokenAddress: string;\n tokenPriceInUsd: string;\n balance: string;\n timestamp: number;\n}\n\nexport interface WsWalletPnl {\n walletAddress: string;\n buys: number;\n buyAmount: string;\n buyAmountInUsd: string;\n averageBuyPriceInUsd: string;\n sellAmount: string;\n sellAmountInUsd: string;\n sells: number;\n wins: number;\n winRatio: string;\n pnlInUsd: string;\n averagePnlInUsd: string;\n pnlRatio: string;\n profitableDays: number;\n losingDays: number;\n tokens: number;\n resolution: string;\n}\n\nexport interface WsNewToken {\n tokenAddress: string;\n name: string;\n symbol: string;\n decimals?: number;\n launchFrom?: WsDexProtocol;\n createdAtMs: number;\n}\n\nexport interface WsTokenSupply {\n tokenAddress: string;\n supply?: string;\n marketCapInUsd?: string;\n timestamp: number;\n}\n\nexport interface WsDexPoolBalance {\n poolAddress: string;\n tokenAAddress: string;\n tokenALiquidityInUsd: string;\n tokenBAddress: string;\n tokenBLiquidityInUsd: string;\n}\n\nexport interface WsTokenLiquidity {\n tokenAddress: string;\n metricType: WsMetricType;\n value: string;\n timestamp: number;\n}\n\nexport interface WsTokenMaxLiquidity {\n tokenAddress: string;\n poolAddress: string;\n liquidityInUsd: string;\n liquidityInNative: string;\n timestamp: number;\n}\n\nexport interface WsTokenTotalLiquidity {\n tokenAddress: string;\n liquidityInUsd: string;\n liquidityInNative: string;\n poolCount: number;\n timestamp: number;\n}\n\nexport interface WsDexProtocol {\n programAddress?: string;\n protocolFamily?: string;\n protocolName?: string;\n}\n\nexport interface WsTokenBondingCurve {\n tokenAddress?: string;\n progressRatio?: string;\n}\n\nexport interface WsTokenMetadata {\n tokenAddress: string;\n name?: string;\n decimals?: number;\n symbol?: string;\n imageUrl?: string;\n description?: string;\n socialMedia?: WsSocialMedia;\n createdAtMs?: number;\n launchFrom?: WsDexProtocol;\n migratedTo?: WsDexProtocol;\n}\n\nexport interface WsSocialMedia {\n twitter?: string;\n telegram?: string;\n website?: string;\n tiktok?: string;\n discord?: string;\n facebook?: string;\n github?: string;\n instagram?: string;\n linkedin?: string;\n medium?: string;\n reddit?: string;\n youtube?: string;\n bitbucket?: string;\n}\n\nexport interface WsTokenCandle {\n open: string;\n close: string;\n high: string;\n low: string;\n volume: string;\n resolution: Resolution;\n time: number;\n number: number;\n}\n\nexport interface WsTradeActivity {\n tokenAddress: string;\n timestamp: number;\n kind: string;\n buyAmount: string;\n buyAmountInUsd: string;\n buyTokenAddress: string;\n buyTokenName: string;\n buyTokenSymbol: string;\n buyWalletAddress: string;\n sellAmount: string;\n sellAmountInUsd: string;\n sellTokenAddress: string;\n sellTokenName: string;\n sellTokenSymbol: string;\n sellWalletAddress: string;\n txHash: string;\n}\n\nexport interface WsWalletTokenPnl {\n walletAddress: string;\n tokenAddress: string;\n tokenPriceInUsd: string;\n timestamp: number;\n opentime: number;\n lasttime: number;\n closetime: number;\n buyAmount: string;\n buyAmountInUsd: string;\n buyCount: number;\n buyCount30d: number;\n buyCount7d: number;\n sellAmount: string;\n sellAmountInUsd: string;\n sellCount: number;\n sellCount30d: number;\n sellCount7d: number;\n heldDurationTimestamp: number;\n averageBuyPriceInUsd: string;\n averageSellPriceInUsd: string;\n unrealizedProfitInUsd: string;\n unrealizedProfitRatio: string;\n realizedProfitInUsd: string;\n realizedProfitRatio: string;\n totalRealizedProfitInUsd: string;\n totalRealizedProfitRatio: string;\n}\n\nexport enum WsRankingType {\n NEW = \"new\",\n HOT = \"trending\",\n STOCKS = \"stocks\",\n FINALSTRETCH = \"completed\",\n MIGRATED = \"graduated\",\n}\n\nexport enum WsDex {\n PUMP_FUN = \"pump_fun\",\n RAYDIUM_LAUNCHPAD = \"raydium_launchpad\",\n METEOR_DYNAMIC_BOUNDING_CURVE = \"meteora_dynamic_bounding_curve\",\n BONK_FUN = \"bonk_fun\",\n BOOP_FUN = \"boop_fun\",\n MOONIT_FUN = \"moonit_fun\",\n}\n\nexport interface WsRankingTokenList {\n metadata?: WsTokenMetadata;\n holder?: WsTokenHolder;\n supply?: WsTokenSupply;\n stat?: WsTokenStat;\n bondingCurve?: WsTokenBondingCurve;\n}\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n BlockchainDTO,\n BlockchainLatestBlockDTO,\n ChainSymbol,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.GET_SUPPORTED_BLOCKCHAINS.DESCRIPTION\n * @summary CONTROLLER.GET_SUPPORTED_BLOCKCHAINS.SUMMARY\n */\nexport const getSupportedBlockchains = (options?: SecondParameter<typeof chainstreamApiClient>) => {\n return chainstreamApiClient<BlockchainDTO[]>({ url: `/v1/blockchain`, method: \"GET\" }, options);\n};\n/**\n * CONTROLLER.GET_LATEST_BLOCK.DESCRIPTION\n * @summary CONTROLLER.GET_LATEST_BLOCK.SUMMARY\n */\nexport const getLatestBlock = (\n chain: ChainSymbol,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<BlockchainLatestBlockDTO>(\n { url: `/v1/blockchain/${chain}/latest_block`, method: \"GET\" },\n options,\n );\n};\nexport type GetSupportedBlockchainsResult = NonNullable<\n Awaited<ReturnType<typeof getSupportedBlockchains>>\n>;\nexport type GetLatestBlockResult = NonNullable<Awaited<ReturnType<typeof getLatestBlock>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n MoonshotCreateTokenInput,\n MoonshotCreateTokenReply,\n MoonshotSubmitCreateToken200,\n MoonshotSubmitCreateTokenInput,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.MOONSHOT.CREATE_TOKEN.DESCRIPTION\n * @summary CONTROLLER.MOONSHOT.CREATE_TOKEN.SUMMARY\n */\nexport const moonshotCreateToken = (\n moonshotCreateTokenInput: MoonshotCreateTokenInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<MoonshotCreateTokenReply>(\n {\n url: `/v1/sol/moonshot/create`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: moonshotCreateTokenInput,\n },\n options,\n );\n};\n/**\n * CONTROLLER.MOONSHOT.SUBMIT_CREATE_TOKEN.DESCRIPTION\n * @summary CONTROLLER.MOONSHOT.SUBMIT_CREATE_TOKEN.SUMMARY\n */\nexport const moonshotSubmitCreateToken = (\n moonshotSubmitCreateTokenInput: MoonshotSubmitCreateTokenInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<MoonshotSubmitCreateToken200>(\n {\n url: `/v1/sol/moonshot/submitCreateToken`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: moonshotSubmitCreateTokenInput,\n },\n options,\n );\n};\nexport type MoonshotCreateTokenResult = NonNullable<\n Awaited<ReturnType<typeof moonshotCreateToken>>\n>;\nexport type MoonshotSubmitCreateTokenResult = NonNullable<\n Awaited<ReturnType<typeof moonshotSubmitCreateToken>>\n>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type { PumpCreateTokenInput, PumpCreateTokenReply } from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.PUMPFUN.CREATE_TOKEN.DESCRIPTION\n * @summary CONTROLLER.PUMPFUN.CREATE_TOKEN.SUMMARY\n */\nexport const pumpfunCreateToken = (\n pumpCreateTokenInput: PumpCreateTokenInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<PumpCreateTokenReply>(\n {\n url: `/v1/sol/pumpfun/create`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: pumpCreateTokenInput,\n },\n options,\n );\n};\nexport type PumpfunCreateTokenResult = NonNullable<Awaited<ReturnType<typeof pumpfunCreateToken>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n ChainSymbol,\n DexPoolDTO,\n DexPoolSnapshotPage,\n GetDexpoolSnapshotsParams,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.DEXPOOL.GET.DESCRIPTION\n * @summary CONTROLLER.DEXPOOL.GET.SUMMARY\n */\nexport const getDexpool = (\n chain: ChainSymbol,\n poolAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<DexPoolDTO>(\n { url: `/v1/dexpools/${chain}/${poolAddress}`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.DEXPOOL.SNAPSHOTS.DESCRIPTION\n * @summary CONTROLLER.DEXPOOL.SNAPSHOTS.SUMMARY\n */\nexport const getDexpoolSnapshots = (\n chain: ChainSymbol,\n poolAddress: string,\n params?: GetDexpoolSnapshotsParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<DexPoolSnapshotPage>(\n { url: `/v1/dexpools/${chain}/${poolAddress}/snapshots`, method: \"GET\", params },\n options,\n );\n};\nexport type GetDexpoolResult = NonNullable<Awaited<ReturnType<typeof getDexpool>>>;\nexport type GetDexpoolSnapshotsResult = NonNullable<\n Awaited<ReturnType<typeof getDexpoolSnapshots>>\n>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n ChainSymbol,\n CreateTokenInput,\n CreateTokenReply,\n DexPage,\n DexQuoteResponse,\n ListDexParams,\n QuoteParams,\n SwapInput,\n SwapReply,\n SwapRouteInput,\n SwapRouteResponse,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.DEX.SWAP.DESCRIPTION\n * @summary CONTROLLER.DEX.SWAP.SUMMARY\n */\nexport const swap = (\n chain: ChainSymbol,\n swapInput: SwapInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<SwapReply>(\n {\n url: `/v1/dex/${chain}/swap`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: swapInput,\n },\n options,\n );\n};\n/**\n * CONTROLLER.DEX.ROUTE.DESCRIPTION\n * @summary CONTROLLER.DEX.ROUTE.SUMMARY\n */\nexport const route = (\n chain: ChainSymbol,\n swapRouteInput: SwapRouteInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<SwapRouteResponse>(\n {\n url: `/v1/dex/${chain}/route`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: swapRouteInput,\n },\n options,\n );\n};\n/**\n * CONTROLLER.DEX.QUOTE.DESCRIPTION\n * @summary CONTROLLER.DEX.QUOTE.SUMMARY\n */\nexport const quote = (\n chain: ChainSymbol,\n params: QuoteParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<DexQuoteResponse>(\n { url: `/v1/dex/${chain}/quote`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.DEX.CREATE.DESCRIPTION\n * @summary CONTROLLER.DEX.CREATE.SUMMARY\n */\nexport const createToken = (\n chain: ChainSymbol,\n createTokenInput: CreateTokenInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<CreateTokenReply>(\n {\n url: `/v1/dex/${chain}/create`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: createTokenInput,\n },\n options,\n );\n};\n/**\n * CONTROLLER.DEX.LIST.DESCRIPTION\n * @summary CONTROLLER.DEX.LIST.SUMMARY\n */\nexport const listDex = (\n params?: ListDexParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<DexPage>({ url: `/v1/dex`, method: \"GET\", params }, options);\n};\nexport type SwapResult = NonNullable<Awaited<ReturnType<typeof swap>>>;\nexport type RouteResult = NonNullable<Awaited<ReturnType<typeof route>>>;\nexport type QuoteResult = NonNullable<Awaited<ReturnType<typeof quote>>>;\nexport type CreateTokenResult = NonNullable<Awaited<ReturnType<typeof createToken>>>;\nexport type ListDexResult = NonNullable<Awaited<ReturnType<typeof listDex>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n CreateEndpointInput,\n EndpointListResponse,\n EndpointOperationResponse,\n EndpointResponse,\n EndpointSecretResponse,\n ListEndpointsParams,\n UpdateEndpointInput,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.ENDPOINT.LIST.DESCRIPTION\n * @summary CONTROLLER.ENDPOINT.LIST.SUMMARY\n */\nexport const listEndpoints = (\n params?: ListEndpointsParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<EndpointListResponse>(\n { url: `/v1/webhook/endpoint`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.ENDPOINT.CREATE.DESCRIPTION\n * @summary CONTROLLER.ENDPOINT.CREATE.SUMMARY\n */\nexport const createEndpoint = (\n createEndpointInput: CreateEndpointInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<EndpointResponse>(\n {\n url: `/v1/webhook/endpoint`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: createEndpointInput,\n },\n options,\n );\n};\n/**\n * CONTROLLER.ENDPOINT.UPDATE.DESCRIPTION\n * @summary CONTROLLER.ENDPOINT.UPDATE.SUMMARY\n */\nexport const updateEndpoint = (\n updateEndpointInput: UpdateEndpointInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<EndpointResponse>(\n {\n url: `/v1/webhook/endpoint`,\n method: \"PATCH\",\n headers: { \"Content-Type\": \"application/json\" },\n data: updateEndpointInput,\n },\n options,\n );\n};\n/**\n * CONTROLLER.ENDPOINT.GET.DESCRIPTION\n * @summary CONTROLLER.ENDPOINT.GET.SUMMARY\n */\nexport const getEndpoint = (id: string, options?: SecondParameter<typeof chainstreamApiClient>) => {\n return chainstreamApiClient<EndpointResponse>(\n { url: `/v1/webhook/endpoint/${id}`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.ENDPOINT.DELETE.DESCRIPTION\n * @summary CONTROLLER.ENDPOINT.DELETE.SUMMARY\n */\nexport const deleteEndpoint = (\n id: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<EndpointOperationResponse>(\n { url: `/v1/webhook/endpoint/${id}`, method: \"DELETE\" },\n options,\n );\n};\n/**\n * CONTROLLER.ENDPOINT.GET.SECRET.DESCRIPTION\n * @summary CONTROLLER.ENDPOINT.GET.SECRET.SUMMARY\n */\nexport const getEndpointSecret = (\n id: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<EndpointSecretResponse>(\n { url: `/v1/webhook/endpoint/${id}/secret`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.ENDPOINT.ROTATE.DESCRIPTION\n * @summary CONTROLLER.ENDPOINT.ROTATE.SUMMARY\n */\nexport const rotateEndpointSecret = (\n id: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<EndpointOperationResponse>(\n { url: `/v1/webhook/endpoint/${id}/secret/rotate`, method: \"POST\" },\n options,\n );\n};\nexport type ListEndpointsResult = NonNullable<Awaited<ReturnType<typeof listEndpoints>>>;\nexport type CreateEndpointResult = NonNullable<Awaited<ReturnType<typeof createEndpoint>>>;\nexport type UpdateEndpointResult = NonNullable<Awaited<ReturnType<typeof updateEndpoint>>>;\nexport type GetEndpointResult = NonNullable<Awaited<ReturnType<typeof getEndpoint>>>;\nexport type DeleteEndpointResult = NonNullable<Awaited<ReturnType<typeof deleteEndpoint>>>;\nexport type GetEndpointSecretResult = NonNullable<Awaited<ReturnType<typeof getEndpointSecret>>>;\nexport type RotateEndpointSecretResult = NonNullable<\n Awaited<ReturnType<typeof rotateEndpointSecret>>\n>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.IPFS.PRESIGN.DESCRIPTION\n * @summary CONTROLLER.IPFS.PRESIGN.SUMMARY\n */\nexport const presign = (options?: SecondParameter<typeof chainstreamApiClient>) => {\n return chainstreamApiClient<string>({ url: `/v1/ipfs/presign`, method: \"POST\" }, options);\n};\nexport type PresignResult = NonNullable<Awaited<ReturnType<typeof presign>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type { JobDTO, JobStreamingDTO } from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.JOB.GET.DESCRIPTION\n * @summary CONTROLLER.JOB.GET.SUMMARY\n */\nexport const get = (id: string, options?: SecondParameter<typeof chainstreamApiClient>) => {\n return chainstreamApiClient<JobDTO>({ url: `/jobs/${id}`, method: \"GET\" }, options);\n};\n/**\n * CONTROLLER.JOB.STREAMING.DESCRIPTION\n * @summary CONTROLLER.JOB.STREAMING.SUMMARY\n */\nexport const streaming = (id: string, options?: SecondParameter<typeof chainstreamApiClient>) => {\n return chainstreamApiClient<JobStreamingDTO>(\n { url: `/jobs/${id}/streaming`, method: \"GET\" },\n options,\n );\n};\nexport type GetResult = NonNullable<Awaited<ReturnType<typeof get>>>;\nexport type StreamingResult = NonNullable<Awaited<ReturnType<typeof streaming>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n AddressRiskResponseDTO,\n KYTRegisterTransferRequest,\n KYTRegisterWithdrawalRequest,\n RegisterAddressRequest,\n RegisterAddressResponseDTO,\n TransferAlertsResponseDTO,\n TransferBaseResponseDTO,\n TransferDirectExposureResponseDTO,\n TransferNetworkIdentificationsResponseDTO,\n WithdrawalAddressIdentificationsResponseDTO,\n WithdrawalBaseResponseDTO,\n WithdrawalFraudAssessmentResponseDTO,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.KYT.REGISTER_TRANSFER.DESCRIPTION\n * @summary CONTROLLER.KYT.REGISTER_TRANSFER.SUMMARY\n */\nexport const registerTransfer = (\n kYTRegisterTransferRequest: KYTRegisterTransferRequest,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TransferBaseResponseDTO>(\n {\n url: `/v1/kyt/transfer`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: kYTRegisterTransferRequest,\n },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_TRANSFER_SUMMARY.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_TRANSFER_SUMMARY.SUMMARY\n */\nexport const getTransferSummary = (\n transferId: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TransferBaseResponseDTO>(\n { url: `/v1/kyt/transfers/${transferId}/summary`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_TRANSFER_DIRECT_EXPOSURE.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_TRANSFER_DIRECT_EXPOSURE.SUMMARY\n */\nexport const getTransferDirectExposure = (\n transferId: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TransferDirectExposureResponseDTO>(\n { url: `/v1/kyt/transfers/${transferId}/exposures/direct`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_TRANSFER_ALERTS.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_TRANSFER_ALERTS.SUMMARY\n */\nexport const getTransferAlerts = (\n transferId: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TransferAlertsResponseDTO>(\n { url: `/v1/kyt/transfers/${transferId}/alerts`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_TRANSFER_NETWORK_IDENTIFICATIONS.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_TRANSFER_NETWORK_IDENTIFICATIONS.SUMMARY\n */\nexport const getTransferNetworkIdentifications = (\n transferId: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TransferNetworkIdentificationsResponseDTO>(\n { url: `/v1/kyt/transfers/${transferId}/network-identifications`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.REGISTER_WITHDRAWAL.DESCRIPTION\n * @summary CONTROLLER.KYT.REGISTER_WITHDRAWAL.SUMMARY\n */\nexport const registerWithdrawal = (\n kYTRegisterWithdrawalRequest: KYTRegisterWithdrawalRequest,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<WithdrawalBaseResponseDTO>(\n {\n url: `/v1/kyt/withdrawal`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: kYTRegisterWithdrawalRequest,\n },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_WITHDRAWAL_SUMMARY.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_WITHDRAWAL_SUMMARY.SUMMARY\n */\nexport const getWithdrawalSummary = (\n withdrawalId: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<WithdrawalBaseResponseDTO>(\n { url: `/v1/kyt/withdrawal/${withdrawalId}/summary`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_WITHDRAWAL_DIRECT_EXPOSURE.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_WITHDRAWAL_DIRECT_EXPOSURE.SUMMARY\n */\nexport const getWithdrawalDirectExposure = (\n withdrawalId: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TransferDirectExposureResponseDTO>(\n { url: `/v1/kyt/withdrawal/${withdrawalId}/exposures/direct`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_WITHDRAWAL_ALERTS.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_WITHDRAWAL_ALERTS.SUMMARY\n */\nexport const getWithdrawalAlerts = (\n withdrawalId: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TransferAlertsResponseDTO>(\n { url: `/v1/kyt/withdrawal/${withdrawalId}/alerts`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_WITHDRAWAL_ADDRESS_IDENTIFICATIONS.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_WITHDRAWAL_ADDRESS_IDENTIFICATIONS.SUMMARY\n */\nexport const getWithdrawalAddressIdentifications = (\n withdrawalId: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<WithdrawalAddressIdentificationsResponseDTO>(\n { url: `/v1/kyt/withdrawal/${withdrawalId}/address-identifications`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_WITHDRAWAL_NETWORK_IDENTIFICATIONS.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_WITHDRAWAL_NETWORK_IDENTIFICATIONS.SUMMARY\n */\nexport const getWithdrawalNetworkIdentifications = (\n withdrawalId: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TransferNetworkIdentificationsResponseDTO>(\n { url: `/v1/kyt/withdrawal/${withdrawalId}/network-identifications`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_WITHDRAWAL_FRAUD_ASSESSMENT.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_WITHDRAWAL_FRAUD_ASSESSMENT.SUMMARY\n */\nexport const getWithdrawalFraudAssessment = (\n withdrawalId: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<WithdrawalFraudAssessmentResponseDTO>(\n { url: `/v1/kyt/withdrawal/${withdrawalId}/fraud-assessment`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.REGISTER_ADDRESS.DESCRIPTION\n * @summary CONTROLLER.KYT.REGISTER_ADDRESS.SUMMARY\n */\nexport const registerAddress = (\n registerAddressRequest: RegisterAddressRequest,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<RegisterAddressResponseDTO>(\n {\n url: `/v1/kyt/address`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: registerAddressRequest,\n },\n options,\n );\n};\n/**\n * CONTROLLER.KYT.GET_ADDRESS_RISK.DESCRIPTION\n * @summary CONTROLLER.KYT.GET_ADDRESS_RISK.SUMMARY\n */\nexport const getAddressRisk = (\n address: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<AddressRiskResponseDTO>(\n { url: `/v1/kyt/addresses/${address}/risk`, method: \"GET\" },\n options,\n );\n};\nexport type RegisterTransferResult = NonNullable<Awaited<ReturnType<typeof registerTransfer>>>;\nexport type GetTransferSummaryResult = NonNullable<Awaited<ReturnType<typeof getTransferSummary>>>;\nexport type GetTransferDirectExposureResult = NonNullable<\n Awaited<ReturnType<typeof getTransferDirectExposure>>\n>;\nexport type GetTransferAlertsResult = NonNullable<Awaited<ReturnType<typeof getTransferAlerts>>>;\nexport type GetTransferNetworkIdentificationsResult = NonNullable<\n Awaited<ReturnType<typeof getTransferNetworkIdentifications>>\n>;\nexport type RegisterWithdrawalResult = NonNullable<Awaited<ReturnType<typeof registerWithdrawal>>>;\nexport type GetWithdrawalSummaryResult = NonNullable<\n Awaited<ReturnType<typeof getWithdrawalSummary>>\n>;\nexport type GetWithdrawalDirectExposureResult = NonNullable<\n Awaited<ReturnType<typeof getWithdrawalDirectExposure>>\n>;\nexport type GetWithdrawalAlertsResult = NonNullable<\n Awaited<ReturnType<typeof getWithdrawalAlerts>>\n>;\nexport type GetWithdrawalAddressIdentificationsResult = NonNullable<\n Awaited<ReturnType<typeof getWithdrawalAddressIdentifications>>\n>;\nexport type GetWithdrawalNetworkIdentificationsResult = NonNullable<\n Awaited<ReturnType<typeof getWithdrawalNetworkIdentifications>>\n>;\nexport type GetWithdrawalFraudAssessmentResult = NonNullable<\n Awaited<ReturnType<typeof getWithdrawalFraudAssessment>>\n>;\nexport type RegisterAddressResult = NonNullable<Awaited<ReturnType<typeof registerAddress>>>;\nexport type GetAddressRiskResult = NonNullable<Awaited<ReturnType<typeof getAddressRisk>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n ChainSymbol,\n GetFinalStretchTokensParams,\n GetHotTokensParams,\n GetMigratedTokensParams,\n GetNewTokensParams,\n GetStocksTokensParams,\n Token,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.RANKING.HOT_TOKENS.DESCRIPTION\n * @summary CONTROLLER.RANKING.HOT_TOKENS.SUMMARY\n */\nexport const getHotTokens = (\n chain: ChainSymbol,\n duration: \"1m\" | \"5m\" | \"1h\" | \"4h\" | \"24h\",\n params?: GetHotTokensParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<Token[]>(\n { url: `/v1/ranking/${chain}/hotTokens/${duration}`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.RANKING.NEW_TOKENS.DESCRIPTION\n * @summary CONTROLLER.RANKING.NEW_TOKENS.SUMMARY\n */\nexport const getNewTokens = (\n chain: ChainSymbol,\n params?: GetNewTokensParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<Token[]>(\n { url: `/v1/ranking/${chain}/newTokens`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.RANKING.STOCKS_TOKENS.DESCRIPTION\n * @summary CONTROLLER.RANKING.STOCKS_TOKENS.SUMMARY\n */\nexport const getStocksTokens = (\n chain: ChainSymbol,\n params?: GetStocksTokensParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<Token[]>(\n { url: `/v1/ranking/${chain}/stocks`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.RANKING.FINAL_STRETCH_TOKENS.DESCRIPTION\n * @summary CONTROLLER.RANKING.FINAL_STRETCH_TOKENS.SUMMARY\n */\nexport const getFinalStretchTokens = (\n chain: ChainSymbol,\n params?: GetFinalStretchTokensParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<Token[]>(\n { url: `/v1/ranking/${chain}/finalStretch`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.RANKING.MIGRATED_TOKENS.DESCRIPTION\n * @summary CONTROLLER.RANKING.MIGRATED_TOKENS.SUMMARY\n */\nexport const getMigratedTokens = (\n chain: ChainSymbol,\n params?: GetMigratedTokensParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<Token[]>(\n { url: `/v1/ranking/${chain}/migrated`, method: \"GET\", params },\n options,\n );\n};\nexport type GetHotTokensResult = NonNullable<Awaited<ReturnType<typeof getHotTokens>>>;\nexport type GetNewTokensResult = NonNullable<Awaited<ReturnType<typeof getNewTokens>>>;\nexport type GetStocksTokensResult = NonNullable<Awaited<ReturnType<typeof getStocksTokens>>>;\nexport type GetFinalStretchTokensResult = NonNullable<\n Awaited<ReturnType<typeof getFinalStretchTokens>>\n>;\nexport type GetMigratedTokensResult = NonNullable<Awaited<ReturnType<typeof getMigratedTokens>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n ChainSymbol,\n ClaimRedPacketInput,\n CreateRedPacketInput,\n CreateRedPacketReply,\n GetClaimsByAddressParams,\n GetClaimsParams,\n GetRedpacketsByAddressParams,\n GetRedpacketsParams,\n RedPacketClaimsPage,\n RedPacketDTO,\n RedPacketReply,\n RedPacketSendTxInput,\n RedPacketSendTxResponse,\n RedPacketsPage,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.RED_PACKET.CREATE.DESCRIPTION\n * @summary CONTROLLER.RED_PACKET.CREATE.SUMMARY\n */\nexport const createRedpacket = (\n chain: ChainSymbol,\n createRedPacketInput: CreateRedPacketInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<CreateRedPacketReply>(\n {\n url: `/v1/redpacket/${chain}/create`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: createRedPacketInput,\n },\n options,\n );\n};\n/**\n * CONTROLLER.RED_PACKET.CLAIM.DESCRIPTION\n * @summary CONTROLLER.RED_PACKET.CLAIM.SUMMARY\n */\nexport const claimRedpacket = (\n chain: ChainSymbol,\n claimRedPacketInput: ClaimRedPacketInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<RedPacketReply>(\n {\n url: `/v1/redpacket/${chain}/claim`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: claimRedPacketInput,\n },\n options,\n );\n};\n/**\n * CONTROLLER.RED_PACKET.GET.DESCRIPTION\n * @summary CONTROLLER.RED_PACKET.GET.SUMMARY\n */\nexport const getRedpacket = (\n id: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<RedPacketDTO>({ url: `/v1/redpacket/${id}`, method: \"GET\" }, options);\n};\n/**\n * CONTROLLER.RED_PACKET.GET_CLAIMS.DESCRIPTION\n * @summary CONTROLLER.RED_PACKET.GET_CLAIMS.SUMMARY\n */\nexport const getClaims = (\n id: string,\n params?: GetClaimsParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<RedPacketClaimsPage>(\n { url: `/v1/redpacket/${id}/claims`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.RED_PACKET.GET_REDPACKETS.DESCRIPTION\n * @summary CONTROLLER.RED_PACKET.GET_REDPACKETS.SUMMARY\n */\nexport const getRedpackets = (\n params?: GetRedpacketsParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<RedPacketsPage>(\n { url: `/v1/redpacket`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.RED_PACKET.GET_CLAIMS_BY_ADDRESS.DESCRIPTION\n * @summary CONTROLLER.RED_PACKET.GET_CLAIMS_BY_ADDRESS.SUMMARY\n */\nexport const getClaimsByAddress = (\n address: string,\n params?: GetClaimsByAddressParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<RedPacketClaimsPage>(\n { url: `/v1/redpacket/wallet/${address}/claims`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.RED_PACKET.GET_REDPACKETS_BY_ADDRESS.DESCRIPTION\n * @summary CONTROLLER.RED_PACKET.GET_REDPACKETS_BY_ADDRESS.SUMMARY\n */\nexport const getRedpacketsByAddress = (\n address: string,\n params?: GetRedpacketsByAddressParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<RedPacketsPage>(\n { url: `/v1/redpacket/wallet/${address}/redpackets`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.RED_PACKET.SEND.DESCRIPTION\n * @summary CONTROLLER.RED_PACKET.SEND.SUMMARY\n */\nexport const redpacketSend = (\n chain: ChainSymbol,\n redPacketSendTxInput: RedPacketSendTxInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<RedPacketSendTxResponse>(\n {\n url: `/v1/redpacket/${chain}/send`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: redPacketSendTxInput,\n },\n options,\n );\n};\nexport type CreateRedpacketResult = NonNullable<Awaited<ReturnType<typeof createRedpacket>>>;\nexport type ClaimRedpacketResult = NonNullable<Awaited<ReturnType<typeof claimRedpacket>>>;\nexport type GetRedpacketResult = NonNullable<Awaited<ReturnType<typeof getRedpacket>>>;\nexport type GetClaimsResult = NonNullable<Awaited<ReturnType<typeof getClaims>>>;\nexport type GetRedpacketsResult = NonNullable<Awaited<ReturnType<typeof getRedpackets>>>;\nexport type GetClaimsByAddressResult = NonNullable<Awaited<ReturnType<typeof getClaimsByAddress>>>;\nexport type GetRedpacketsByAddressResult = NonNullable<\n Awaited<ReturnType<typeof getRedpacketsByAddress>>\n>;\nexport type RedpacketSendResult = NonNullable<Awaited<ReturnType<typeof redpacketSend>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n Candle,\n ChainSymbol,\n DevTokenDTO,\n DexPoolPage,\n GetCandlesParams,\n GetHoldersMultiParams,\n GetHoldersParams,\n GetMarketDataMulti200,\n GetMarketDataMultiParams,\n GetMetadataMulti200,\n GetMetadataMultiParams,\n GetMintAndBurnParams,\n GetPoolsParams,\n GetPriceByTimeParams,\n GetPricesParams,\n GetSecurity200,\n GetStatsMulti200,\n GetStatsMultiParams,\n GetTokenLiquiditySnapshotsParams,\n GetTokensParams,\n ListTokenParams,\n SearchParams,\n Token,\n TokenCreationDTO,\n TokenCreationPage,\n TokenHolder,\n TokenHolderPage,\n TokenLiquiditySnapshotPage,\n TokenListPage,\n TokenMarketData,\n TokenMetadata,\n TokenPage,\n TokenPriceDTO,\n TokenPricePage,\n TokenStat,\n TokenTrader,\n TokenTraderTag,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.TOKEN.SEARCH.DESCRIPTION\n * @summary CONTROLLER.TOKEN.SEARCH.SUMMARY\n */\nexport const search = (\n params?: SearchParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenPage>(\n { url: `/v1/token/search`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_TOKENS.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_TOKENS.SUMMARY\n */\nexport const getTokens = (\n chain: ChainSymbol,\n params: GetTokensParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<Token[]>(\n { url: `/v1/token/${chain}/multi`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET.SUMMARY\n */\nexport const getToken = (\n chain: ChainSymbol,\n tokenAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<Token>(\n { url: `/v1/token/${chain}/${tokenAddress}`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_METADATA.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_METADATA.SUMMARY\n */\nexport const getMetadata = (\n chain: ChainSymbol,\n tokenAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenMetadata>(\n { url: `/v1/token/${chain}/${tokenAddress}/metadata`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_METADATA_MULTI.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_METADATA_MULTI.SUMMARY\n */\nexport const getMetadataMulti = (\n chain: ChainSymbol,\n params: GetMetadataMultiParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<GetMetadataMulti200>(\n { url: `/v1/token/${chain}/metadata/multi`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_POOLS.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_POOLS.SUMMARY\n */\nexport const getPools = (\n chain: ChainSymbol,\n tokenAddress: string,\n params?: GetPoolsParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<DexPoolPage>(\n { url: `/v1/token/${chain}/${tokenAddress}/pools`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_STATS.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_STATS.SUMMARY\n */\nexport const getStats = (\n chain: ChainSymbol,\n tokenAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenStat>(\n { url: `/v1/token/${chain}/${tokenAddress}/stats`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_STATS_MULTI.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_STATS_MULTI.SUMMARY\n */\nexport const getStatsMulti = (\n chain: ChainSymbol,\n params: GetStatsMultiParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<GetStatsMulti200>(\n { url: `/v1/token/${chain}/stats/multi`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_HOLDERS.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_HOLDERS.SUMMARY\n */\nexport const getHolders = (\n chain: ChainSymbol,\n tokenAddress: string,\n params?: GetHoldersParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenHolderPage>(\n { url: `/v1/token/${chain}/${tokenAddress}/holders`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_HOLDERS_MULTI.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_HOLDERS_MULTI.SUMMARY\n */\nexport const getHoldersMulti = (\n chain: ChainSymbol,\n tokenAddress: string,\n params: GetHoldersMultiParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenHolder[]>(\n { url: `/v1/token/${chain}/${tokenAddress}/holders/multi`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_CANDLES.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_CANDLES.SUMMARY\n */\nexport const getCandles = (\n chain: ChainSymbol,\n tokenAddress: string,\n params: GetCandlesParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<Candle[]>(\n { url: `/v1/token/${chain}/${tokenAddress}/candles`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_TOP_HOLDERS.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_TOP_HOLDERS.SUMMARY\n */\nexport const getTopHolders = (\n chain: ChainSymbol,\n tokenAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenHolderPage>(\n { url: `/v1/token/${chain}/${tokenAddress}/topHolders`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_MARKET_CAP.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_MARKET_CAP.SUMMARY\n */\nexport const getMarketData = (\n chain: ChainSymbol,\n tokenAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenMarketData>(\n { url: `/v1/token/${chain}/${tokenAddress}/marketData`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_MARKET_DATA_MULTI.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_MARKET_DATA_MULTI.SUMMARY\n */\nexport const getMarketDataMulti = (\n chain: ChainSymbol,\n params: GetMarketDataMultiParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<GetMarketDataMulti200>(\n { url: `/v1/token/${chain}/marketData/multi`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_PRICES.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_PRICES.SUMMARY\n */\nexport const getPrices = (\n chain: ChainSymbol,\n tokenAddress: string,\n params?: GetPricesParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenPricePage>(\n { url: `/v1/token/${chain}/${tokenAddress}/prices`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_PRICE_BY_TIME.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_PRICE_BY_TIME.SUMMARY\n */\nexport const getPriceByTime = (\n chain: ChainSymbol,\n tokenAddress: string,\n params: GetPriceByTimeParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenPriceDTO>(\n { url: `/v1/token/${chain}/${tokenAddress}/price`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_CREATION.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_CREATION.SUMMARY\n */\nexport const getCreation = (\n chain: ChainSymbol,\n tokenAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenCreationDTO>(\n { url: `/v1/token/${chain}/${tokenAddress}/creation`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_MINT_AND_BURN.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_MINT_AND_BURN.SUMMARY\n */\nexport const getMintAndBurn = (\n chain: ChainSymbol,\n tokenAddress: string,\n params?: GetMintAndBurnParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenCreationPage>(\n { url: `/v1/token/${chain}/${tokenAddress}/mintAndBurn`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_TOKEN_LIST.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_TOKEN_LIST.SUMMARY\n */\nexport const listToken = (\n chain: ChainSymbol,\n params?: ListTokenParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenListPage>(\n { url: `/v1/token/${chain}/list`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_SECURITY.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_SECURITY.SUMMARY\n */\nexport const getSecurity = (\n chain: ChainSymbol,\n tokenAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<GetSecurity200>(\n { url: `/v1/token/${chain}/${tokenAddress}/security`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_DEV_TOKENS.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_DEV_TOKENS.SUMMARY\n */\nexport const getDevTokens = (\n chain: ChainSymbol,\n devAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<DevTokenDTO[]>(\n { url: `/v1/token/${chain}/dev/${devAddress}/tokens`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_TOKEN_TRADERS.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_TOKEN_TRADERS.SUMMARY\n */\nexport const getTokenTraders = (\n chain: ChainSymbol,\n tokenAddress: string,\n tag: TokenTraderTag,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenTrader[]>(\n { url: `/v1/token/${chain}/${tokenAddress}/traders/${tag}`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.TOKEN.GET_LIQUIDITY_SNAPSHOTS.DESCRIPTION\n * @summary CONTROLLER.TOKEN.GET_LIQUIDITY_SNAPSHOTS.SUMMARY\n */\nexport const getTokenLiquiditySnapshots = (\n chain: ChainSymbol,\n tokenAddress: string,\n params?: GetTokenLiquiditySnapshotsParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TokenLiquiditySnapshotPage>(\n { url: `/v1/token/${chain}/${tokenAddress}/liquiditySnapshots`, method: \"GET\", params },\n options,\n );\n};\nexport type SearchResult = NonNullable<Awaited<ReturnType<typeof search>>>;\nexport type GetTokensResult = NonNullable<Awaited<ReturnType<typeof getTokens>>>;\nexport type GetTokenResult = NonNullable<Awaited<ReturnType<typeof getToken>>>;\nexport type GetMetadataResult = NonNullable<Awaited<ReturnType<typeof getMetadata>>>;\nexport type GetMetadataMultiResult = NonNullable<Awaited<ReturnType<typeof getMetadataMulti>>>;\nexport type GetPoolsResult = NonNullable<Awaited<ReturnType<typeof getPools>>>;\nexport type GetStatsResult = NonNullable<Awaited<ReturnType<typeof getStats>>>;\nexport type GetStatsMultiResult = NonNullable<Awaited<ReturnType<typeof getStatsMulti>>>;\nexport type GetHoldersResult = NonNullable<Awaited<ReturnType<typeof getHolders>>>;\nexport type GetHoldersMultiResult = NonNullable<Awaited<ReturnType<typeof getHoldersMulti>>>;\nexport type GetCandlesResult = NonNullable<Awaited<ReturnType<typeof getCandles>>>;\nexport type GetTopHoldersResult = NonNullable<Awaited<ReturnType<typeof getTopHolders>>>;\nexport type GetMarketDataResult = NonNullable<Awaited<ReturnType<typeof getMarketData>>>;\nexport type GetMarketDataMultiResult = NonNullable<Awaited<ReturnType<typeof getMarketDataMulti>>>;\nexport type GetPricesResult = NonNullable<Awaited<ReturnType<typeof getPrices>>>;\nexport type GetPriceByTimeResult = NonNullable<Awaited<ReturnType<typeof getPriceByTime>>>;\nexport type GetCreationResult = NonNullable<Awaited<ReturnType<typeof getCreation>>>;\nexport type GetMintAndBurnResult = NonNullable<Awaited<ReturnType<typeof getMintAndBurn>>>;\nexport type ListTokenResult = NonNullable<Awaited<ReturnType<typeof listToken>>>;\nexport type GetSecurityResult = NonNullable<Awaited<ReturnType<typeof getSecurity>>>;\nexport type GetDevTokensResult = NonNullable<Awaited<ReturnType<typeof getDevTokens>>>;\nexport type GetTokenTradersResult = NonNullable<Awaited<ReturnType<typeof getTokenTraders>>>;\nexport type GetTokenLiquiditySnapshotsResult = NonNullable<\n Awaited<ReturnType<typeof getTokenLiquiditySnapshots>>\n>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n ChainSymbol,\n GetActivitiesParams,\n GetTopTradersParams,\n GetTradesParams,\n TopTradersPage,\n TradePage,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.TRADE.GET.TOKEN.DESCRIPTION\n * @summary CONTROLLER.TRADE.GET.TOKEN.SUMMARY\n */\nexport const getTrades = (\n chain: ChainSymbol,\n params?: GetTradesParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TradePage>(\n { url: `/v1/trade/${chain}`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TRADE.GET.TOKEN_ACTIVITIES.DESCRIPTION\n * @summary CONTROLLER.TRADE.GET.TOKEN_ACTIVITIES.SUMMARY\n */\nexport const getActivities = (\n chain: ChainSymbol,\n params?: GetActivitiesParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TradePage>(\n { url: `/v1/trade/${chain}/activities`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.TRADE.GET.TOP_TRADERS.DESCRIPTION\n * @summary CONTROLLER.TRADE.GET.TOP_TRADERS.SUMMARY\n */\nexport const getTopTraders = (\n chain: ChainSymbol,\n params: GetTopTradersParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<TopTradersPage>(\n { url: `/v1/trade/${chain}/top-traders`, method: \"GET\", params },\n options,\n );\n};\nexport type GetTradesResult = NonNullable<Awaited<ReturnType<typeof getTrades>>>;\nexport type GetActivitiesResult = NonNullable<Awaited<ReturnType<typeof getActivities>>>;\nexport type GetTopTradersResult = NonNullable<Awaited<ReturnType<typeof getTopTraders>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n EstimateGasLimitInput,\n EstimateGasLimitResponse,\n GasPriceResponse,\n SendTxInput,\n SendTxResponse,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.TRANSACTION.SEND.DESCRIPTION\n * @summary CONTROLLER.TRANSACTION.SEND.SUMMARY\n */\nexport const send = (\n chain: string,\n sendTxInput: SendTxInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<SendTxResponse>(\n {\n url: `/v1/transaction/${chain}/send`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: sendTxInput,\n },\n options,\n );\n};\n/**\n * CONTROLLER.TRANSACTION.GET_GAS_PRICE.DESCRIPTION\n * @summary CONTROLLER.TRANSACTION.GET_GAS_PRICE.SUMMARY\n */\nexport const getGasPrice = (\n chain: \"bsc\" | \"eth\",\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<GasPriceResponse>(\n { url: `/v1/transaction/${chain}/gas-price`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.TRANSACTION.ESTIMATE_GAS_LIMIT.DESCRIPTION\n * @summary CONTROLLER.TRANSACTION.ESTIMATE_GAS_LIMIT.SUMMARY\n */\nexport const getGasLimit = (\n chain: \"bsc\" | \"eth\",\n estimateGasLimitInput: EstimateGasLimitInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<EstimateGasLimitResponse>(\n {\n url: `/v1/transaction/${chain}/estimate-gas-limit`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: estimateGasLimitInput,\n },\n options,\n );\n};\nexport type SendResult = NonNullable<Awaited<ReturnType<typeof send>>>;\nexport type GetGasPriceResult = NonNullable<Awaited<ReturnType<typeof getGasPrice>>>;\nexport type GetGasLimitResult = NonNullable<Awaited<ReturnType<typeof getGasLimit>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type {\n BalanceUpdatePage,\n BooleanResultDTO,\n CalculatePnlInput,\n ChainSymbol,\n GetBalanceParams,\n GetBalanceUpdatesParams,\n GetPnlParams,\n WalletBalancesDTO,\n WalletPnlDTO,\n} from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.WALLET.GET_PNL.DESCRIPTION\n * @summary CONTROLLER.WALLET.GET_PNL.SUMMARY\n */\nexport const getPnl = (\n chain: ChainSymbol,\n walletAddress: string,\n params?: GetPnlParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<WalletPnlDTO[]>(\n { url: `/v1/wallet/${chain}/${walletAddress}/pnl`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.WALLET.GET_PNL_STATS.DESCRIPTION\n * @summary CONTROLLER.WALLET.GET_PNL_STATS.SUMMARY\n */\nexport const getPnlStats = (\n chain: ChainSymbol,\n walletAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<WalletPnlDTO[]>(\n { url: `/v1/wallet/${chain}/${walletAddress}/stats`, method: \"GET\" },\n options,\n );\n};\n/**\n * CONTROLLER.WALLET.GET_BALANCES.DESCRIPTION\n * @summary CONTROLLER.WALLET.GET_BALANCES.SUMMARY\n */\nexport const getBalance = (\n chain: ChainSymbol,\n walletAddress: string,\n params?: GetBalanceParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<WalletBalancesDTO>(\n { url: `/v1/wallet/${chain}/${walletAddress}/balance`, method: \"GET\", params },\n options,\n );\n};\n/**\n * CONTROLLER.WALLET.CALCULATE_PNL.DESCRIPTION\n * @summary CONTROLLER.WALLET.CALCULATE_PNL.SUMMARY\n */\nexport const calculatePnl = (\n chain: ChainSymbol,\n walletAddress: string,\n calculatePnlInput: CalculatePnlInput,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<BooleanResultDTO>(\n {\n url: `/v1/wallet/${chain}/${walletAddress}/calculate-pnl`,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n data: calculatePnlInput,\n },\n options,\n );\n};\n/**\n * CONTROLLER.WALLET.GET_BALANCE_UPDATES.DESCRIPTION\n * @summary CONTROLLER.WALLET.GET_BALANCE_UPDATES.SUMMARY\n */\nexport const getBalanceUpdates = (\n chain: ChainSymbol,\n walletAddress: string,\n params?: GetBalanceUpdatesParams,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<BalanceUpdatePage>(\n { url: `/v1/wallet/${chain}/${walletAddress}/balance-updates`, method: \"GET\", params },\n options,\n );\n};\nexport type GetPnlResult = NonNullable<Awaited<ReturnType<typeof getPnl>>>;\nexport type GetPnlStatsResult = NonNullable<Awaited<ReturnType<typeof getPnlStats>>>;\nexport type GetBalanceResult = NonNullable<Awaited<ReturnType<typeof getBalance>>>;\nexport type CalculatePnlResult = NonNullable<Awaited<ReturnType<typeof calculatePnl>>>;\nexport type GetBalanceUpdatesResult = NonNullable<Awaited<ReturnType<typeof getBalanceUpdates>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\nimport type { BooleanResultDTO, ChainSymbol } from \"../dexAggregatorAPI.schemas\";\n\nimport { chainstreamApiClient } from \"../../chainstreamApiClient.js\";\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n/**\n * CONTROLLER.WATCHLIST.ADD.DESCRIPTION\n * @summary CONTROLLER.WATCHLIST.ADD.SUMMARY\n */\nexport const watchlistAdd = (\n chain: ChainSymbol,\n walletAddress: string,\n options?: SecondParameter<typeof chainstreamApiClient>,\n) => {\n return chainstreamApiClient<BooleanResultDTO>(\n { url: `/v1/watchlist/${chain}/${walletAddress}`, method: \"POST\" },\n options,\n );\n};\nexport type WatchlistAddResult = NonNullable<Awaited<ReturnType<typeof watchlistAdd>>>;\n","/**\n * Generated by orval v7.6.0 🍺\n * Do not edit manually.\n * Dex Aggregator API\n * Dex Aggregator API ⚡️\n * OpenAPI spec version: 1.0\n */\n/**\n * DTO.JOB.RESULT\n */\nexport type JobDTOResult = { [key: string]: unknown };\n\nexport interface JobDTO {\n /** DTO.JOB.STATE */\n state: string;\n /** DTO.JOB.RESULT */\n result: JobDTOResult;\n}\n\n/**\n * DTO.JOB.STREAMING.DATA\n */\nexport type JobStreamingDTOData = { [key: string]: unknown };\n\nexport interface JobStreamingDTO {\n /** DTO.JOB.STREAMING.ID */\n id: number;\n /** DTO.JOB.STREAMING.DATA */\n data: JobStreamingDTOData;\n}\n\nexport interface BlockchainDTO {\n /** DTO.BLOCKCHAIN.SYMBOL */\n symbol: string;\n /** DTO.BLOCKCHAIN.NAME */\n name: string;\n /** DTO.BLOCKCHAIN.EXPLORER_URL */\n explorerUrl: string;\n /** DTO.BLOCKCHAIN.CHAIN_ID */\n chainId: number;\n}\n\nexport type ChainSymbol = (typeof ChainSymbol)[keyof typeof ChainSymbol];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ChainSymbol = {\n sol: \"sol\",\n bsc: \"bsc\",\n eth: \"eth\",\n} as const;\n\nexport interface BlockchainLatestBlockDTO {\n /** DTO.BLOCKCHAIN.LATEST_BLOCK.BLOCKHASH */\n blockhash: string;\n /** DTO.BLOCKCHAIN.LATEST_BLOCK.LAST_VALID_BLOCK_HEIGHT */\n lastValidBlockHeight: number;\n}\n\n/**\n * DTO.TRANSACTION.SEND.SUBMIT_TYPE\n */\nexport type SendTxInputSubmitType =\n (typeof SendTxInputSubmitType)[keyof typeof SendTxInputSubmitType];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SendTxInputSubmitType = {\n default: \"default\",\n priority: \"priority\",\n} as const;\n\n/**\n * DTO.TRANSACTION.SEND.OPTIONS\n */\nexport type SendTxInputOptions = { [key: string]: unknown };\n\nexport interface SendTxInput {\n /** DTO.TRANSACTION.SEND.SIGNED_TX */\n signedTx: string;\n /** DTO.TRANSACTION.SEND.SUBMIT_TYPE */\n submitType?: SendTxInputSubmitType;\n /** DTO.TRANSACTION.SEND.OPTIONS */\n options?: SendTxInputOptions;\n}\n\nexport interface SendTxResponse {\n /** DTO.TRANSACTION.SEND.SIGNATURE */\n signature: string;\n /** DTO.TRANSACTION.SEND.ELAPSED_TIME */\n elapsedTime: number;\n /** DTO.TRANSACTION.SEND.JOB_ID */\n jobId: string;\n}\n\nexport interface GasPriceResponse {\n /** Current gas price in wei (hex string) */\n gasPrice: string;\n /** Chain symbol */\n chain: string;\n}\n\nexport interface EstimateGasLimitInput {\n /** From address */\n from: string;\n /** To address */\n to: string;\n /** Transaction data (hex) */\n data: string;\n /** Value to send (in wei, hex string) */\n value?: string;\n}\n\nexport interface EstimateGasLimitResponse {\n /** Estimated gas limit (hex string) */\n gasLimit: string;\n /** Chain symbol */\n chain: string;\n}\n\n/**\n * DTO.DEX.IDENTIFIER\n */\nexport type SwapInputDex = (typeof SwapInputDex)[keyof typeof SwapInputDex];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SwapInputDex = {\n raydium: \"raydium\",\n pumpfun: \"pumpfun\",\n moonshot: \"moonshot\",\n candy: \"candy\",\n launchpad: \"launchpad\",\n} as const;\n\n/**\n * DTO.DEX.SWAP.MODE\n */\nexport type SwapInputSwapMode = (typeof SwapInputSwapMode)[keyof typeof SwapInputSwapMode];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SwapInputSwapMode = {\n ExactIn: \"ExactIn\",\n ExactOut: \"ExactOut\",\n} as const;\n\nexport interface SwapInput {\n /** DTO.DEX.IDENTIFIER */\n dex: SwapInputDex;\n /**\n * DTO.DEX.WALLET\n * @minLength 8\n * @maxLength 64\n */\n userAddress: string;\n /** DTO.DEX.BASE.PRIORITY_FEE */\n priorityFee?: string;\n /** DTO.DEX.SWAP.POOL_ADDRESS */\n poolAddress?: string;\n /** DTO.DEX.SWAP.AMOUNT */\n amount: string;\n /** DTO.DEX.SWAP.MODE */\n swapMode: SwapInputSwapMode;\n /**\n * DTO.DEX.SWAP.SLIPPAGE\n * @minimum 0\n * @maximum 100\n */\n slippage: number;\n /** DTO.DEX.SWAP.INPUT_MINT */\n inputMint?: string;\n /** DTO.DEX.SWAP.OUTPUT_MINT */\n outputMint?: string;\n}\n\nexport interface SwapReply {\n /** DTO.DEX.SWAP.SERIALIZED_TX */\n serializedTx: string;\n /** DTO.DEX.SWAP.ELAPSED_TIME */\n elapsedTime: number;\n}\n\n/**\n * DTO.DEX.IDENTIFIER\n */\nexport type SwapRouteInputDex = (typeof SwapRouteInputDex)[keyof typeof SwapRouteInputDex];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SwapRouteInputDex = {\n jupiter: \"jupiter\",\n kyberswap: \"kyberswap\",\n} as const;\n\n/**\n * DTO.DEX.SWAP.MODE\n */\nexport type SwapRouteInputSwapMode =\n (typeof SwapRouteInputSwapMode)[keyof typeof SwapRouteInputSwapMode];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SwapRouteInputSwapMode = {\n ExactIn: \"ExactIn\",\n ExactOut: \"ExactOut\",\n} as const;\n\nexport interface SwapRouteInput {\n /** DTO.DEX.IDENTIFIER */\n dex: SwapRouteInputDex;\n /**\n * DTO.DEX.WALLET\n * @minLength 8\n * @maxLength 64\n */\n userAddress: string;\n /** DTO.DEX.BASE.PRIORITY_FEE */\n priorityFee?: string;\n /** DTO.DEX.SWAP.AMOUNT */\n amount: string;\n /** DTO.DEX.SWAP.MODE */\n swapMode: SwapRouteInputSwapMode;\n /**\n * DTO.DEX.SWAP.SLIPPAGE\n * @minimum 0\n * @maximum 100\n */\n slippage: number;\n /** DTO.DEX.SWAP.INPUT_MINT */\n inputMint?: string;\n /** DTO.DEX.SWAP.OUTPUT_MINT */\n outputMint?: string;\n /** DTO.DEX.SWAP.RECIPIENT_ADDRESS */\n recipientAddress?: string;\n /** DTO.DEX.SWAP.PERMIT */\n permit?: string;\n /** DTO.DEX.SWAP.DEADLINE */\n deadline?: number;\n /** DTO.DEX.BASE.TIP_FEE */\n tipFee?: string;\n /** DTO.DEX.BASE.IS_ANTI_MEV */\n isAntiMev?: boolean;\n}\n\n/**\n * DTO.DEX.SWAP.ROUTE_INFO\n */\nexport type SwapRouteResponseRouteInfo = { [key: string]: unknown };\n\nexport interface SwapRouteResponse {\n /** DTO.DEX.SWAP.ARGS */\n args: SwapRouteInput;\n /** DTO.DEX.SWAP.SERIALIZED_TX */\n serializedTx: string;\n /** DTO.DEX.SWAP.ROUTE_INFO */\n routeInfo: SwapRouteResponseRouteInfo;\n /** DTO.DEX.SWAP.ELAPSED_TIME */\n elapsedTime: number;\n}\n\nexport interface DexQuoteResponse {\n /** DTO.DEX.QUOTE.AMOUNT_OUT */\n amountOut?: string;\n /** DTO.DEX.QUOTE.MIN_AMOUNT_OUT */\n minAmountOut?: string;\n /** DTO.DEX.QUOTE.CURRENT_PRICE */\n currentPrice?: string;\n /** DTO.DEX.QUOTE.EXECUTION_PRICE */\n executionPrice?: string;\n /** DTO.DEX.QUOTE.PRICE_IMPACT */\n priceImpact?: string;\n /** DTO.DEX.QUOTE.FEE */\n fee?: string;\n}\n\n/**\n * DTO.DEX.IDENTIFIER\n */\nexport type CreateTokenInputDex = (typeof CreateTokenInputDex)[keyof typeof CreateTokenInputDex];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const CreateTokenInputDex = {\n raydium: \"raydium\",\n pumpfun: \"pumpfun\",\n moonshot: \"moonshot\",\n candy: \"candy\",\n launchpad: \"launchpad\",\n} as const;\n\n/**\n * DTO.DEX.MINT.EXTRA\n */\nexport type CreateTokenInputExtra = { [key: string]: unknown };\n\nexport interface CreateTokenInput {\n /** DTO.DEX.IDENTIFIER */\n dex: CreateTokenInputDex;\n /**\n * DTO.DEX.WALLET\n * @minLength 8\n * @maxLength 64\n */\n userAddress: string;\n /** DTO.DEX.BASE.PRIORITY_FEE */\n priorityFee?: string;\n /**\n * DTO.DEX.MINT.NAME\n * @minLength 1\n * @maxLength 32\n */\n name: string;\n /**\n * DTO.DEX.MINT.SYMBOL\n * @minLength 1\n * @maxLength 10\n */\n symbol: string;\n /** DTO.DEX.MINT.URI */\n uri?: string;\n /** DTO.DEX.MINT.IMAGE */\n image?: string;\n /** DTO.DEX.MINT.EXTRA */\n extra?: CreateTokenInputExtra;\n}\n\nexport interface CreateTokenReply {\n /** DTO.DEX.CREATE_TOKEN.SERIALIZED_TX */\n serializedTx: string;\n /** DTO.DEX.CREATE_TOKEN.MINT_ADDRESS */\n mintAddress: string;\n}\n\nexport interface DexDTO {\n /** DTO.DEX.PROGRAM_ADDRESS */\n programAddress?: string;\n /** DTO.DEX.PROTOCOL_FAMILY */\n protocolFamily?: string;\n /** DTO.DEX.IMAGE */\n image?: string;\n /** DTO.DEX.CHAIN */\n chain: string;\n}\n\nexport interface DexPage {\n /** DTO.PAGE.HAS_NEXT */\n hasNext?: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev?: boolean;\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.TOTAL */\n total?: number;\n /** DTO.DEX.PAGE.DATA */\n data: DexDTO[];\n}\n\n/**\n * DTO.DEX.MOONSHOT.LINK.LABEL\n */\nexport type LinkLabel = (typeof LinkLabel)[keyof typeof LinkLabel];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const LinkLabel = {\n website: \"website\",\n twitter: \"twitter\",\n telegram: \"telegram\",\n discord: \"discord\",\n} as const;\n\nexport interface Link {\n /** DTO.DEX.MOONSHOT.LINK.URL */\n url: string;\n /** DTO.DEX.MOONSHOT.LINK.LABEL */\n label: LinkLabel;\n}\n\n/**\n * DTO.DEX.IDENTIFIER\n */\nexport type MoonshotCreateTokenInputDex =\n (typeof MoonshotCreateTokenInputDex)[keyof typeof MoonshotCreateTokenInputDex];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const MoonshotCreateTokenInputDex = {\n moonshot: \"moonshot\",\n} as const;\n\n/**\n * DTO.DEX.MOONSHOT.MINT.MIGRATION_DEX\n */\nexport type MoonshotCreateTokenInputMigrationDex =\n (typeof MoonshotCreateTokenInputMigrationDex)[keyof typeof MoonshotCreateTokenInputMigrationDex];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const MoonshotCreateTokenInputMigrationDex = {\n RAYDIUM: \"RAYDIUM\",\n METEORA: \"METEORA\",\n UNISWAP: \"UNISWAP\",\n} as const;\n\nexport interface MoonshotCreateTokenInput {\n /** DTO.DEX.IDENTIFIER */\n dex: MoonshotCreateTokenInputDex;\n /**\n * DTO.DEX.WALLET\n * @minLength 8\n * @maxLength 64\n */\n userAddress: string;\n /** DTO.DEX.BASE.PRIORITY_FEE */\n priorityFee?: string;\n /**\n * DTO.DEX.MOONSHOT.MINT.NAME\n * @minLength 1\n * @maxLength 32\n */\n name: string;\n /**\n * DTO.DEX.MOONSHOT.MINT.SYMBOL\n * @minLength 1\n * @maxLength 10\n */\n symbol: string;\n /** DTO.DEX.MOONSHOT.MINT.MIGRATION_DEX */\n migrationDex: MoonshotCreateTokenInputMigrationDex;\n /**\n * DTO.DEX.MOONSHOT.MINT.ICON\n * @pattern ^(https?://|data:image/)\n */\n icon: string;\n /**\n * DTO.DEX.MOONSHOT.MINT.DESCRIPTION\n * @maxLength 1000\n */\n description: string;\n /** DTO.DEX.MOONSHOT.MINT.LINKS */\n links: Link[];\n /** DTO.DEX.MOONSHOT.MINT.BANNER */\n banner?: string;\n /**\n * DTO.DEX.MOONSHOT.MINT.TOKEN_AMOUNT\n * @pattern ^[0-9]+$\n */\n tokenAmount: string;\n}\n\n/**\n * DTO.DEX.MOONSHOT.CREATE_TOKEN.EXTRA\n */\nexport type MoonshotCreateTokenReplyExtra = { [key: string]: unknown };\n\nexport interface MoonshotCreateTokenReply {\n /** DTO.DEX.MOONSHOT.CREATE_TOKEN.SERIALIZED_TX */\n serializedTx: string;\n /** DTO.DEX.MOONSHOT.CREATE_TOKEN.EXTRA */\n extra: MoonshotCreateTokenReplyExtra;\n}\n\n/**\n * DTO.DEX.MOONSHOT.SUBMIT.CREATE_TOKEN.EXTRA\n */\nexport type MoonshotSubmitCreateTokenInputExtra = { [key: string]: unknown };\n\nexport interface MoonshotSubmitCreateTokenInput {\n /** DTO.DEX.MOONSHOT.SUBMIT.CREATE_TOKEN.SIGNED_TX */\n signedTx: string;\n /** DTO.DEX.MOONSHOT.SUBMIT.CREATE_TOKEN.EXTRA */\n extra?: MoonshotSubmitCreateTokenInputExtra;\n}\n\n/**\n * DTO.DEX.IDENTIFIER\n */\nexport type PumpCreateTokenInputDex =\n (typeof PumpCreateTokenInputDex)[keyof typeof PumpCreateTokenInputDex];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PumpCreateTokenInputDex = {\n pumpfun: \"pumpfun\",\n} as const;\n\n/**\n * DTO.DEX.PUMPFUN.MINT.MIGRATION_DEX\n */\nexport type PumpCreateTokenInputMigrationDex =\n (typeof PumpCreateTokenInputMigrationDex)[keyof typeof PumpCreateTokenInputMigrationDex];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PumpCreateTokenInputMigrationDex = {\n RAYDIUM: \"RAYDIUM\",\n METEORA: \"METEORA\",\n} as const;\n\nexport interface PumpCreateTokenInput {\n /** DTO.DEX.IDENTIFIER */\n dex: PumpCreateTokenInputDex;\n /**\n * DTO.DEX.WALLET\n * @minLength 8\n * @maxLength 64\n */\n userAddress: string;\n /** DTO.DEX.BASE.PRIORITY_FEE */\n priorityFee?: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.TWITTER\n * @pattern ^(@[a-zA-Z0-9_]{1,15}|https://twitter.com/[a-zA-Z0-9_]{1,15})$\n */\n twitter?: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.TELEGRAM\n * @pattern ^https://t.me/\n */\n telegram?: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.WEBSITE\n * @pattern ^https?://\n */\n website?: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.NAME\n * @minLength 1\n * @maxLength 32\n */\n name: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.SYMBOL\n * @minLength 1\n * @maxLength 10\n */\n symbol: string;\n /** DTO.DEX.PUMPFUN.MINT.MIGRATION_DEX */\n migrationDex: PumpCreateTokenInputMigrationDex;\n /** DTO.DEX.PUMPFUN.MINT.IMAGE */\n image: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.MINT_ADDRESS\n * @minLength 32\n * @maxLength 44\n */\n mintAddress: string;\n /**\n * DTO.DEX.PUMPFUN.MINT.DESCRIPTION\n * @maxLength 1000\n */\n description: string;\n}\n\n/**\n * DTO.DEX.PUMPFUN.MINT.EXTRA\n */\nexport type PumpCreateTokenReplyExtra = { [key: string]: unknown };\n\nexport interface PumpCreateTokenReply {\n /** DTO.DEX.PUMPFUN.MINT.SERIALIZED_TX */\n serializedTx: string;\n /** DTO.DEX.PUMPFUN.MINT.EXTRA */\n extra?: PumpCreateTokenReplyExtra;\n}\n\nexport interface TradeDetailDTO {\n /** DTO.TRADE.DETAIL.CHAIN */\n chain: string;\n /** DTO.TRADE.DETAIL.BLOCK_HEIGHT */\n blockHeight: number;\n /** DTO.TRADE.DETAIL.BLOCK_TIMESTAMP */\n blockTimestamp: number;\n /** DTO.TRADE.DETAIL.ACCOUNT_OWNER_ADDRESS */\n accountOwnerAddress: string;\n /** DTO.TRADE.DETAIL.TRANSACTION_SIGNATURE */\n transactionSignature: string;\n /** DTO.TRADE.DETAIL.TOKEN_NAME */\n tokenName: string;\n /** DTO.TRADE.DETAIL.TOKEN_SYMBOL */\n tokenSymbol: string;\n /** DTO.TRADE.DETAIL.TOKEN_IMAGE_URL */\n tokenImageUrl: string;\n /** DTO.TRADE.DETAIL.TOKEN_ADDRESS */\n tokenAddress: string;\n /** DTO.TRADE.DETAIL.POOL_ADDRESS */\n poolAddress: string;\n /** DTO.TRADE.DETAIL.DEX_PROGRAM_ADDRESS */\n dexProgramAddress: string;\n /** DTO.TRADE.DETAIL.DEX_PROTOCOL_FAMILY */\n dexProtocolFamily: string;\n /** DTO.TRADE.DETAIL.DEX_IMAGE */\n dexImage: string;\n /** DTO.TRADE.DETAIL.TOKEN_AMOUNT */\n tokenAmount: string;\n /** DTO.TRADE.DETAIL.TOKEN_PRICE_IN_USD */\n tokenPriceInUsd: string;\n /** DTO.TRADE.DETAIL.TOKEN_AMOUNT_IN_USD */\n tokenAmountInUsd: string;\n /** DTO.TRADE.DETAIL.TYPE */\n type: string;\n /** DTO.TRADE.DETAIL.SIDE_TOKEN_NAME */\n sideTokenName: string;\n /** DTO.TRADE.DETAIL.SIDE_TOKEN_SYMBOL */\n sideTokenSymbol: string;\n /** DTO.TRADE.DETAIL.SIDE_TOKEN_IMAGE_URL */\n sideTokenImageUrl: string;\n /** DTO.TRADE.DETAIL.SIDE_TOKEN_ADDRESS */\n sideTokenAddress: string;\n /** DTO.TRADE.DETAIL.SIDE_TOKEN_PRICE_IN_USD */\n sideTokenPriceInUsd: string;\n /** DTO.TRADE.DETAIL.SIDE_TOKEN_AMOUNT */\n sideTokenAmount: string;\n /** DTO.TRADE.DETAIL.SIDE_TOKEN_AMOUNT_IN_USD */\n sideTokenAmountInUsd: string;\n /** DTO.TRADE.DETAIL.STATUS */\n status: string;\n}\n\nexport interface TradePage {\n /** DTO.PAGE.HAS_NEXT */\n hasNext?: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev?: boolean;\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.TOTAL */\n total?: number;\n /** DTO.TRADE.PAGE.DATA */\n data: TradeDetailDTO[];\n}\n\nexport interface TopTradersDTO {\n /** DTO.TRADE.TOP_TRADERS.TOKEN_ADDRESS */\n tokenAddress: string;\n /** DTO.TRADE.TOP_TRADERS.WALLET_ADDRESS */\n walletAddress: string;\n /** DTO.TRADE.TOP_TRADERS.TRADE_COUNT */\n tradeCount: number;\n /** DTO.TRADE.TOP_TRADERS.TRADE_AMOUNT */\n tradeAmount: string;\n /** DTO.TRADE.TOP_TRADERS.BUY_COUNT */\n buyCount: number;\n /** DTO.TRADE.TOP_TRADERS.BUY_AMOUNT */\n buyAmount: string;\n /** DTO.TRADE.TOP_TRADERS.BUY_AMOUNT_IN_USD */\n buyAmountInUsd: string;\n /** DTO.TRADE.TOP_TRADERS.BUY_AMOUNT_IN_NATIVE */\n buyAmountInNative: string;\n /** DTO.TRADE.TOP_TRADERS.SELL_COUNT */\n sellCount: number;\n /** DTO.TRADE.TOP_TRADERS.SELL_AMOUNT */\n sellAmount: string;\n /** DTO.TRADE.TOP_TRADERS.SELL_AMOUNT_IN_USD */\n sellAmountInUsd: string;\n /** DTO.TRADE.TOP_TRADERS.SELL_AMOUNT_IN_NATIVE */\n sellAmountInNative: string;\n}\n\nexport interface TopTradersPage {\n /** DTO.PAGE.HAS_NEXT */\n hasNext?: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev?: boolean;\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.TOTAL */\n total?: number;\n /** DTO.TRADE.TOP_TRADERS.PAGE.DATA */\n data: TopTradersDTO[];\n}\n\nexport interface TokenCreatorsDTO {\n /** DTO.TOKEN.CREATORS.ADDRESS */\n address?: string;\n /** DTO.TOKEN.CREATORS.SHARE */\n share?: number;\n /** DTO.TOKEN.CREATORS.IS_VERIFIED */\n isVerified?: boolean;\n}\n\nexport interface TokenExtraDTO {\n /** DTO.TOKEN.EXTRA.COLLECTION_ADDRESS */\n collectionAddress?: string;\n /** DTO.TOKEN.EXTRA.EDITION_NONCE */\n editionNonce?: number;\n /** DTO.TOKEN.EXTRA.FUNGIBLE */\n fungible?: boolean;\n /** DTO.TOKEN.EXTRA.IS_MUTABLE */\n isMutable?: boolean;\n /** DTO.TOKEN.EXTRA.KEY */\n key?: string;\n /** DTO.TOKEN.EXTRA.IS_NATIVE */\n isNative?: boolean;\n /** DTO.TOKEN.EXTRA.PRIMARY_SALE_HAPPENED */\n primarySaleHappened?: boolean;\n /** DTO.TOKEN.EXTRA.LAUNCH_FROM_PROGRAM_ADDRESS */\n launchFromProgramAddress?: string;\n /** DTO.TOKEN.EXTRA.LAUNCH_FROM_PROTOCOL_FAMILY */\n launchFromProtocolFamily?: string;\n /** DTO.TOKEN.EXTRA.PROGRAM_ADDRESS */\n programAddress?: string;\n /** DTO.TOKEN.EXTRA.MIGRATED_TO_PROGRAM_ADDRESS */\n migratedToProgramAddress?: string;\n /** DTO.TOKEN.EXTRA.MIGRATED_TO_PROTOCOL_FAMILY */\n migratedToProtocolFamily?: string;\n /** DTO.TOKEN.EXTRA.MIGRATED_TO_POOL_ADDRESS */\n migratedToPoolAddress?: string;\n /** DTO.TOKEN.EXTRA.MIGRATED_AT */\n migratedAt?: number;\n /** DTO.TOKEN.EXTRA.SELLER_FEE_BASIS_POINTS */\n sellerFeeBasisPoints?: number;\n /** DTO.TOKEN.EXTRA.TOKEN_STANDARD */\n tokenStandard?: string;\n /** DTO.TOKEN.EXTRA.MINT_AUTHORITY */\n mintAuthority?: string;\n /** DTO.TOKEN.EXTRA.FREEZE_AUTHORITY */\n freezeAuthority?: string;\n /** DTO.TOKEN.EXTRA.UPDATE_AUTHORITY */\n updateAuthority?: string;\n /** DTO.TOKEN.EXTRA.IS_VERIFIED_COLLECTION */\n isVerifiedCollection?: boolean;\n /** DTO.TOKEN.EXTRA.IS_WRAPPED */\n isWrapped?: boolean;\n}\n\nexport interface TokenSocialMediasDTO {\n /** DTO.TOKEN.SOCIAL_MEDIAS.TWITTER */\n twitter?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.TELEGRAM */\n telegram?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.WEBSITE */\n website?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.TIKTOK */\n tiktok?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.DISCORD */\n discord?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.FACEBOOK */\n facebook?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.GITHUB */\n github?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.INSTAGRAM */\n instagram?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.LINKEDIN */\n linkedin?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.MEDIUM */\n medium?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.REDDIT */\n reddit?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.YOUTUBE */\n youtube?: string;\n /** DTO.TOKEN.SOCIAL_MEDIAS.BITBUCKET */\n bitbucket?: string;\n}\n\nexport interface TokenStat {\n /** DTO.TOKEN.STAT.ADDRESS */\n address: string;\n /** DTO.TOKEN.STAT.PRICE_1M */\n price1m: string;\n /** DTO.TOKEN.STAT.BUYS_1M */\n buys1m: string;\n /** DTO.TOKEN.STAT.SELLS_1M */\n sells1m: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_1M */\n buyVolumes1m: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_1M */\n sellsVolumes1m: string;\n /** DTO.TOKEN.STAT.VOLUMES_1M */\n volumes1m: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_1M */\n buyVolumesInUsd1m: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_1M */\n sellVolumesInUsd1m: string;\n /** DTO.TOKEN.STAT.VOLUMES_IN_USD_1M */\n volumesInUsd1m: string;\n /** DTO.TOKEN.STAT.BUYERS_1M */\n buyers1m?: string;\n /** DTO.TOKEN.STAT.SELLERS_1M */\n sellers1m?: string;\n /** DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_1M */\n openPriceInUsd1m: string;\n /** DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_1M */\n closePriceInUsd1m: string;\n /** DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_1M */\n priceChangeRatioInUsd1m: string;\n /** DTO.TOKEN.STAT.TRADES_1M */\n trades1m: string;\n /** DTO.TOKEN.STAT.TRADERS_1M */\n traders1m?: string;\n /** DTO.TOKEN.STAT.HIGH_IN_USD_1M */\n highInUsd1m?: string;\n /** DTO.TOKEN.STAT.LOW_IN_USD_1M */\n lowInUsd1m?: string;\n /** DTO.TOKEN.STAT.PRICE_5M */\n price5m: string;\n /** DTO.TOKEN.STAT.BUYS_5M */\n buys5m: string;\n /** DTO.TOKEN.STAT.SELLS_5M */\n sells5m: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_5M */\n buyVolumes5m: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_5M */\n sellsVolumes5m: string;\n /** DTO.TOKEN.STAT.VOLUMES_5M */\n volumes5m: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_5M */\n buyVolumesInUsd5m: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_5M */\n sellVolumesInUsd5m: string;\n /** DTO.TOKEN.STAT.VOLUMES_IN_USD_5M */\n volumesInUsd5m: string;\n /** DTO.TOKEN.STAT.BUYERS_5M */\n buyers5m?: string;\n /** DTO.TOKEN.STAT.SELLERS_5M */\n sellers5m?: string;\n /** DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_5M */\n openPriceInUsd5m: string;\n /** DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_5M */\n closePriceInUsd5m: string;\n /** DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_5M */\n priceChangeRatioInUsd5m: string;\n /** DTO.TOKEN.STAT.TRADES_5M */\n trades5m: string;\n /** DTO.TOKEN.STAT.TRADERS_5M */\n traders5m?: string;\n /** DTO.TOKEN.STAT.HIGH_IN_USD_5M */\n highInUsd5m?: string;\n /** DTO.TOKEN.STAT.LOW_IN_USD_5M */\n lowInUsd5m?: string;\n /** DTO.TOKEN.STAT.PRICE_15M */\n price15m?: string;\n /** DTO.TOKEN.STAT.BUYS_15M */\n buys15m?: string;\n /** DTO.TOKEN.STAT.SELLS_15M */\n sells15m?: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_15M */\n buyVolumes15m?: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_15M */\n sellsVolumes15m?: string;\n /** DTO.TOKEN.STAT.VOLUMES_15M */\n volumes15m?: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_15M */\n buyVolumesInUsd15m?: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_15M */\n sellVolumesInUsd15m?: string;\n /** DTO.TOKEN.STAT.VOLUMES_IN_USD_15M */\n volumesInUsd15m?: string;\n /** DTO.TOKEN.STAT.BUYERS_15M */\n buyers15m?: string;\n /** DTO.TOKEN.STAT.SELLERS_15M */\n sellers15m?: string;\n /** DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_15M */\n openPriceInUsd15m?: string;\n /** DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_15M */\n closePriceInUsd15m?: string;\n /** DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_15M */\n priceChangeRatioInUsd15m?: string;\n /** DTO.TOKEN.STAT.TRADES_15M */\n trades15m?: string;\n /** DTO.TOKEN.STAT.TRADERS_15M */\n traders15m?: string;\n /** DTO.TOKEN.STAT.HIGH_IN_USD_15M */\n highInUsd15m?: string;\n /** DTO.TOKEN.STAT.LOW_IN_USD_15M */\n lowInUsd15m?: string;\n /** DTO.TOKEN.STAT.PRICE_30M */\n price30m: string;\n /** DTO.TOKEN.STAT.BUYS_30M */\n buys30m: string;\n /** DTO.TOKEN.STAT.SELLS_30M */\n sells30m: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_30M */\n buyVolumes30m: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_30M */\n sellsVolumes30m: string;\n /** DTO.TOKEN.STAT.VOLUMES_30M */\n volumes30m: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_30M */\n buyVolumesInUsd30m: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_30M */\n sellVolumesInUsd30m: string;\n /** DTO.TOKEN.STAT.VOLUMES_IN_USD_30M */\n volumesInUsd30m: string;\n /** DTO.TOKEN.STAT.BUYERS_30M */\n buyers30m?: string;\n /** DTO.TOKEN.STAT.SELLERS_30M */\n sellers30m?: string;\n /** DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_30M */\n openPriceInUsd30m: string;\n /** DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_30M */\n closePriceInUsd30m: string;\n /** DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_30M */\n priceChangeRatioInUsd30m: string;\n /** DTO.TOKEN.STAT.TRADES_30M */\n trades30m: string;\n /** DTO.TOKEN.STAT.TRADERS_30M */\n traders30m?: string;\n /** DTO.TOKEN.STAT.HIGH_IN_USD_30M */\n highInUsd30m?: string;\n /** DTO.TOKEN.STAT.LOW_IN_USD_30M */\n lowInUsd30m?: string;\n /** DTO.TOKEN.STAT.PRICE_1H */\n price1h: string;\n /** DTO.TOKEN.STAT.BUYS_1H */\n buys1h: string;\n /** DTO.TOKEN.STAT.SELLS_1H */\n sells1h: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_1H */\n buyVolumes1h: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_1H */\n sellsVolumes1h: string;\n /** DTO.TOKEN.STAT.VOLUMES_1H */\n volumes1h: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_1H */\n buyVolumesInUsd1h: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_1H */\n sellVolumesInUsd1h: string;\n /** DTO.TOKEN.STAT.VOLUMES_IN_USD_1H */\n volumesInUsd1h: string;\n /** DTO.TOKEN.STAT.BUYERS_1H */\n buyers1h?: string;\n /** DTO.TOKEN.STAT.SELLERS_1H */\n sellers1h?: string;\n /** DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_1H */\n openPriceInUsd1h: string;\n /** DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_1H */\n closePriceInUsd1h: string;\n /** DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_1H */\n priceChangeRatioInUsd1h: string;\n /** DTO.TOKEN.STAT.TRADES_1H */\n trades1h: string;\n /** DTO.TOKEN.STAT.TRADERS_1H */\n traders1h?: string;\n /** DTO.TOKEN.STAT.HIGH_IN_USD_1H */\n highInUsd1h?: string;\n /** DTO.TOKEN.STAT.LOW_IN_USD_1H */\n lowInUsd1h?: string;\n /** DTO.TOKEN.STAT.PRICE_4H */\n price4h: string;\n /** DTO.TOKEN.STAT.BUYS_4H */\n buys4h: string;\n /** DTO.TOKEN.STAT.SELLS_4H */\n sells4h: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_4H */\n buyVolumes4h: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_4H */\n sellsVolumes4h: string;\n /** DTO.TOKEN.STAT.VOLUMES_4H */\n volumes4h: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_4H */\n buyVolumesInUsd4h: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_4H */\n sellVolumesInUsd4h: string;\n /** DTO.TOKEN.STAT.VOLUMES_IN_USD_4H */\n volumesInUsd4h: string;\n /** DTO.TOKEN.STAT.BUYERS_4H */\n buyers4h?: string;\n /** DTO.TOKEN.STAT.SELLERS_4H */\n sellers4h?: string;\n /** DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_4H */\n openPriceInUsd4h: string;\n /** DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_4H */\n closePriceInUsd4h: string;\n /** DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_4H */\n priceChangeRatioInUsd4h: string;\n /** DTO.TOKEN.STAT.TRADES_4H */\n trades4h: string;\n /** DTO.TOKEN.STAT.TRADERS_4H */\n traders4h?: string;\n /** DTO.TOKEN.STAT.HIGH_IN_USD_4H */\n highInUsd4h?: string;\n /** DTO.TOKEN.STAT.LOW_IN_USD_4H */\n lowInUsd4h?: string;\n /** DTO.TOKEN.STAT.PRICE_24H */\n price24h: string;\n /** DTO.TOKEN.STAT.BUYS_24H */\n buys24h: string;\n /** DTO.TOKEN.STAT.SELLS_24H */\n sells24h: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_24H */\n buyVolumes24h: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_24H */\n sellsVolumes24h: string;\n /** DTO.TOKEN.STAT.VOLUMES_24H */\n volumes24h: string;\n /** DTO.TOKEN.STAT.BUY_VOLUMES_IN_USD_24H */\n buyVolumesInUsd24h: string;\n /** DTO.TOKEN.STAT.SELL_VOLUMES_IN_USD_24H */\n sellVolumesInUsd24h: string;\n /** DTO.TOKEN.STAT.VOLUMES_IN_USD_24H */\n volumesInUsd24h: string;\n /** DTO.TOKEN.STAT.BUYERS_24H */\n buyers24h?: string;\n /** DTO.TOKEN.STAT.SELLERS_24H */\n sellers24h?: string;\n /** DTO.TOKEN.STAT.OPEN_PRICE_IN_USD_24H */\n openPriceInUsd24h: string;\n /** DTO.TOKEN.STAT.CLOSE_PRICE_IN_USD_24H */\n closePriceInUsd24h: string;\n /** DTO.TOKEN.STAT.PRICE_CHANGE_RATIO_IN_USD_24H */\n priceChangeRatioInUsd24h: string;\n /** DTO.TOKEN.STAT.TRADES_24H */\n trades24h: string;\n /** DTO.TOKEN.STAT.TRADERS_24H */\n traders24h?: string;\n /** DTO.TOKEN.STAT.HIGH_IN_USD_24H */\n highInUsd24h?: string;\n /** DTO.TOKEN.STAT.LOW_IN_USD_24H */\n lowInUsd24h?: string;\n}\n\nexport interface DexPoolTokenLiquidity {\n /** DTO.DEXPOOL.TOKEN_ADDRESS */\n tokenAddress: string;\n /** DTO.DEXPOOL.TOKEN_DECIMALS */\n tokenDecimals: number;\n /** DTO.DEXPOOL.VAULT_AMOUNT */\n vaultAmount: string;\n /** DTO.DEXPOOL.AMOUNT_IN_USD */\n amountInUsd: string;\n /** DTO.DEXPOOL.AMOUNT_IN_NATIVE */\n amountInNative: string;\n /** DTO.DEXPOOL.PRICE_USD */\n priceUsd: string;\n /** DTO.DEXPOOL.PRICE_NATIVE */\n priceNative: string;\n}\n\n/**\n * DTO.DEXPOOL.TYPE\n */\nexport type DexPoolDTOType = (typeof DexPoolDTOType)[keyof typeof DexPoolDTOType];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const DexPoolDTOType = {\n NUMBER_0: 0,\n NUMBER_1: 1,\n NUMBER_2: 2,\n NUMBER_3: 3,\n NUMBER_4: 4,\n} as const;\n\n/**\n * DTO.DEXPOOL.VERSION\n */\nexport type DexPoolDTOVersion = (typeof DexPoolDTOVersion)[keyof typeof DexPoolDTOVersion];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const DexPoolDTOVersion = {\n NUMBER_0: 0,\n NUMBER_1: 1,\n NUMBER_2: 2,\n NUMBER_3: 3,\n} as const;\n\n/**\n * DTO.DEXPOOL.LIQUIDITY_MODEL\n */\nexport type DexPoolDTOLiquidityModel =\n (typeof DexPoolDTOLiquidityModel)[keyof typeof DexPoolDTOLiquidityModel];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const DexPoolDTOLiquidityModel = {\n NUMBER_0: 0,\n NUMBER_1: 1,\n NUMBER_2: 2,\n NUMBER_3: 3,\n NUMBER_4: 4,\n} as const;\n\nexport interface DexPoolDTO {\n /** DTO.DEX.PROGRAM_ADDRESS */\n programAddress?: string;\n /** DTO.DEX.PROTOCOL_FAMILY */\n protocolFamily?: string;\n /** DTO.DEX.IMAGE */\n image?: string;\n /** DTO.DEX.CHAIN */\n chain: string;\n /** DTO.DEXPOOL.POOL_ADDRESS */\n poolAddress: string;\n /** DTO.DEXPOOL.PROTOCOL_NAME */\n protocolName?: string;\n /** DTO.DEXPOOL.TOKEN_A */\n tokenAAddress: string;\n /** DTO.DEXPOOL.TOKEN_B */\n tokenBAddress: string;\n /** DTO.DEXPOOL.TVL_USD */\n tvlInUsd?: string;\n /** DTO.DEXPOOL.TVL_SOL */\n tvlInSol?: string;\n /** DTO.DEXPOOL.TYPE */\n type?: DexPoolDTOType;\n /** DTO.DEXPOOL.VERSION */\n version?: DexPoolDTOVersion;\n /** DTO.DEXPOOL.LIQUIDITY_MODEL */\n liquidityModel?: DexPoolDTOLiquidityModel;\n /** DTO.DEXPOOL.FEE_RATE */\n feeRate?: string;\n /** DTO.DEXPOOL.TICK_SPACING */\n tickSpacing?: number;\n /** DTO.DEXPOOL.TOKEN_COUNT */\n tokenCount?: number;\n /** DTO.DEXPOOL.CREATED_BLOCK_TIMESTAMP */\n createdBlockTimestamp?: string;\n /** DTO.DEXPOOL.TOKEN_A_LIQUIDITY */\n tokenALiquidity?: DexPoolTokenLiquidity;\n /** DTO.DEXPOOL.TOKEN_B_LIQUIDITY */\n tokenBLiquidity?: DexPoolTokenLiquidity;\n}\n\nexport interface TokenMarketData {\n /** DTO.TOKEN.MARKET_CAP.TOTAL_SUPPLY */\n totalSupply: string;\n /** DTO.TOKEN.MARKET_CAP.MARKET_CAP_IN_SOL */\n marketCapInSol?: string;\n /** DTO.TOKEN.MARKET_CAP.MARKET_CAP_IN_USD */\n marketCapInUsd: string;\n /** DTO.TOKEN.MARKET_CAP.TOP10_TOTAL_HOLDINGS */\n top10TotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.TOP10_HOLDINGS_RATIO */\n top10HoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.TOP100_TOTAL_HOLDINGS */\n top100TotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.TOP100_HOLDINGS_RATIO */\n top100HoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.HOLDERS */\n holders: string;\n /** DTO.TOKEN.MARKET_CAP.PRICE_IN_SOL */\n priceInSol?: string;\n /** DTO.TOKEN.MARKET_CAP.PRICE_IN_USD */\n priceInUsd: string;\n /** DTO.TOKEN.MARKET_CAP.MAX_POOL_TVL_IN_SOL */\n maxPoolTvlInSol?: string;\n /** DTO.TOKEN.MARKET_CAP.MAX_POOL_TVL_IN_USD */\n maxPoolTvlInUsd?: string;\n /** DTO.TOKEN.MARKET_CAP.TOTAL_TVL_IN_SOL */\n totalTvlInSol: string;\n /** DTO.TOKEN.MARKET_CAP.TOTAL_TVL_IN_USD */\n totalTvlInUsd: string;\n /** DTO.TOKEN.MARKET_CAP.COMPLETION_RATIO */\n completionRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.TOP50_TOTAL_HOLDINGS */\n top50TotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.TOP50_HOLDINGS_RATIO */\n top50HoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.BLUECHIP_TOTAL_HOLDERS */\n bluechipTotalHolders?: string;\n /** DTO.TOKEN.MARKET_CAP.BLUECHIP_TOTAL_HOLDINGS */\n bluechipTotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.BLUECHIP_HOLDINGS_RATIO */\n bluechipHoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.KOL_TOTAL_HOLDERS */\n kolTotalHolders?: string;\n /** DTO.TOKEN.MARKET_CAP.KOL_TOTAL_HOLDINGS */\n kolTotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.KOL_HOLDINGS_RATIO */\n kolHoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.SNIPER_TOTAL_HOLDERS */\n sniperTotalHolders?: string;\n /** DTO.TOKEN.MARKET_CAP.SNIPER_TOTAL_HOLDINGS */\n sniperTotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.SNIPER_HOLDINGS_RATIO */\n sniperHoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.PRO_TOTAL_HOLDERS */\n proTotalHolders?: string;\n /** DTO.TOKEN.MARKET_CAP.PRO_TOTAL_HOLDINGS */\n proTotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.PRO_HOLDINGS_RATIO */\n proHoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.INSIDER_TOTAL_HOLDERS */\n insiderTotalHolders?: string;\n /** DTO.TOKEN.MARKET_CAP.INSIDER_TOTAL_HOLDINGS */\n insiderTotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.INSIDER_HOLDINGS_RATIO */\n insiderHoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.SANDWISH_TOTAL_HOLDERS */\n sandwishTotalHolders?: string;\n /** DTO.TOKEN.MARKET_CAP.SANDWISH_TOTAL_HOLDINGS */\n sandwishTotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.SANDWISH_HOLDINGS_RATIO */\n sandwishHoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.FRESH_TOTAL_HOLDERS */\n freshTotalHolders?: string;\n /** DTO.TOKEN.MARKET_CAP.FRESH_TOTAL_HOLDINGS */\n freshTotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.FRESH_HOLDINGS_RATIO */\n freshHoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.BUNDLE_TOTAL_HOLDERS */\n bundleTotalHolders?: string;\n /** DTO.TOKEN.MARKET_CAP.BUNDLE_TOTAL_HOLDINGS */\n bundleTotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.BUNDLE_HOLDINGS_RATIO */\n bundleHoldingsRatio?: string;\n /** DTO.TOKEN.MARKET_CAP.DEV_TOTAL_HOLDERS */\n devTotalHolders?: string;\n /** DTO.TOKEN.MARKET_CAP.DEV_TOTAL_HOLDINGS */\n devTotalHoldings?: string;\n /** DTO.TOKEN.MARKET_CAP.DEV_HOLDINGS_RATIO */\n devHoldingsRatio?: string;\n}\n\n/**\n * DTO.TOKEN.EXTENSION\n */\nexport type TokenExtension = { [key: string]: unknown };\n\nexport interface Token {\n /** DTO.TOKEN.METADATA.CHAIN */\n chain: string;\n /** DTO.TOKEN.METADATA.DECIMALS */\n decimals: number;\n /** DTO.TOKEN.METADATA.NAME */\n name: string;\n /** DTO.TOKEN.METADATA.SYMBOL */\n symbol: string;\n /** DTO.TOKEN.METADATA.METADATA_ADDRESS */\n metadataAddress?: string;\n /** DTO.TOKEN.METADATA.ADDRESS */\n address: string;\n /** DTO.TOKEN.METADATA.TOKEN_CREATORS */\n tokenCreators?: TokenCreatorsDTO[];\n /** DTO.TOKEN.METADATA.IMAGE_URL */\n imageUrl?: string;\n /** DTO.TOKEN.METADATA.URI */\n uri?: string;\n /** DTO.TOKEN.METADATA.EXTRA */\n extra?: TokenExtraDTO;\n /** DTO.TOKEN.METADATA.SOCIAL_MEDIAS */\n socialMedias?: TokenSocialMediasDTO;\n /** DTO.TOKEN.METADATA.TOKEN_CREATED_AT */\n tokenCreatedAt?: number;\n /** DTO.TOKEN.METADATA.DESCRIPTION */\n description?: string;\n /** DTO.TOKEN.METADATA.DEV_TOTAL_TOKENS */\n devTotalTokens?: string;\n /** DTO.TOKEN.METADATA.DEV_LAST_TOKEN_CREATED_AT */\n devLastTokenCreatedAt?: string;\n /** DTO.TOKEN.MARKET_ID */\n market?: string;\n /** DTO.TOKEN.EXTENSION */\n extension?: TokenExtension;\n /** DTO.TOKEN.STATS */\n stats?: TokenStat;\n /** DTO.TOKEN.LIQUIDITY */\n liquidity?: DexPoolDTO[];\n /** DTO.TOKEN.MARKET_CAP_INFO */\n marketData: TokenMarketData;\n}\n\n/**\n * DTO.TOKEN.PAGE.COUNTS_BY_PROTOCOLS\n */\nexport type TokenPageCountsByProtocols = { [key: string]: unknown };\n\nexport interface TokenPage {\n /** DTO.PAGE.HAS_NEXT */\n hasNext?: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev?: boolean;\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.TOTAL */\n total?: number;\n /** DTO.TOKEN.PAGE.COUNTS_BY_PROTOCOLS */\n countsByProtocols?: TokenPageCountsByProtocols;\n /** DTO.TOKEN.PAGE.DATA */\n data: Token[];\n}\n\n/**\n * DTO.TOKEN.FILTER.FIELD\n */\nexport type FilterConditionField = (typeof FilterConditionField)[keyof typeof FilterConditionField];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const FilterConditionField = {\n marketDatapriceInUsd: \"marketData.priceInUsd\",\n statspriceChangeRatioInUsd1m: \"stats.priceChangeRatioInUsd1m\",\n statspriceChangeRatioInUsd5m: \"stats.priceChangeRatioInUsd5m\",\n statspriceChangeRatioInUsd1h: \"stats.priceChangeRatioInUsd1h\",\n statspriceChangeRatioInUsd4h: \"stats.priceChangeRatioInUsd4h\",\n statspriceChangeRatioInUsd24h: \"stats.priceChangeRatioInUsd24h\",\n marketDatamarketCapInUsd: \"marketData.marketCapInUsd\",\n marketDatamaxPoolTvlInUsd: \"marketData.maxPoolTvlInUsd\",\n marketDatatotalTvlInUsd: \"marketData.totalTvlInUsd\",\n marketDatatop10TotalHoldings: \"marketData.top10TotalHoldings\",\n marketDatatop10HoldingsRatio: \"marketData.top10HoldingsRatio\",\n marketDatatop100TotalHoldings: \"marketData.top100TotalHoldings\",\n marketDatatop100HoldingsRatio: \"marketData.top100HoldingsRatio\",\n marketDataholders: \"marketData.holders\",\n marketDatacreatorHoldings: \"marketData.creatorHoldings\",\n marketDatacreatorHoldingsRatio: \"marketData.creatorHoldingsRatio\",\n statsbuys1m: \"stats.buys1m\",\n statsbuys5m: \"stats.buys5m\",\n statsbuys15m: \"stats.buys15m\",\n statsbuys30m: \"stats.buys30m\",\n statsbuys1h: \"stats.buys1h\",\n statsbuys4h: \"stats.buys4h\",\n statsbuys24h: \"stats.buys24h\",\n statssells1m: \"stats.sells1m\",\n statssells5m: \"stats.sells5m\",\n statssells15m: \"stats.sells15m\",\n statssells30m: \"stats.sells30m\",\n statssells1h: \"stats.sells1h\",\n statssells4h: \"stats.sells4h\",\n statssells24h: \"stats.sells24h\",\n statstrades1m: \"stats.trades1m\",\n statstrades5m: \"stats.trades5m\",\n statstrades1h: \"stats.trades1h\",\n statstrades4h: \"stats.trades4h\",\n statstrades24h: \"stats.trades24h\",\n statstraders1m: \"stats.traders1m\",\n statstraders5m: \"stats.traders5m\",\n statstraders1h: \"stats.traders1h\",\n statstraders4h: \"stats.traders4h\",\n statstraders24h: \"stats.traders24h\",\n statsvolumesInUsd1m: \"stats.volumesInUsd1m\",\n statsvolumesInUsd5m: \"stats.volumesInUsd5m\",\n statsvolumesInUsd1h: \"stats.volumesInUsd1h\",\n statsvolumesInUsd4h: \"stats.volumesInUsd4h\",\n statsvolumesInUsd24h: \"stats.volumesInUsd24h\",\n tokenCreatedAt: \"tokenCreatedAt\",\n} as const;\n\nexport interface FilterCondition {\n /** DTO.TOKEN.FILTER.FIELD */\n field?: FilterConditionField;\n /** DTO.TOKEN.FILTER.MIN */\n min?: string;\n /** DTO.TOKEN.FILTER.MAX */\n max?: string;\n}\n\nexport interface TokenMetadata {\n /** DTO.TOKEN.METADATA.CHAIN */\n chain: string;\n /** DTO.TOKEN.METADATA.DECIMALS */\n decimals: number;\n /** DTO.TOKEN.METADATA.NAME */\n name: string;\n /** DTO.TOKEN.METADATA.SYMBOL */\n symbol: string;\n /** DTO.TOKEN.METADATA.METADATA_ADDRESS */\n metadataAddress?: string;\n /** DTO.TOKEN.METADATA.ADDRESS */\n address: string;\n /** DTO.TOKEN.METADATA.TOKEN_CREATORS */\n tokenCreators?: TokenCreatorsDTO[];\n /** DTO.TOKEN.METADATA.IMAGE_URL */\n imageUrl?: string;\n /** DTO.TOKEN.METADATA.URI */\n uri?: string;\n /** DTO.TOKEN.METADATA.EXTRA */\n extra?: TokenExtraDTO;\n /** DTO.TOKEN.METADATA.SOCIAL_MEDIAS */\n socialMedias?: TokenSocialMediasDTO;\n /** DTO.TOKEN.METADATA.TOKEN_CREATED_AT */\n tokenCreatedAt?: number;\n /** DTO.TOKEN.METADATA.DESCRIPTION */\n description?: string;\n /** DTO.TOKEN.METADATA.DEV_TOTAL_TOKENS */\n devTotalTokens?: string;\n /** DTO.TOKEN.METADATA.DEV_LAST_TOKEN_CREATED_AT */\n devLastTokenCreatedAt?: string;\n}\n\nexport interface DexPoolPage {\n /** DTO.PAGE.HAS_NEXT */\n hasNext?: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev?: boolean;\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.TOTAL */\n total?: number;\n /** DTO.DEXPOOL.PAGE.DATA */\n data: DexPoolDTO[];\n}\n\nexport interface TokenHolder {\n /** DTO.TOKEN_HOLDER.WALLET_ADDRESS */\n walletAddress: string;\n /** DTO.TOKEN_HOLDER.AMOUNT */\n amount: string;\n /** DTO.TOKEN_HOLDER.AMOUNT_USD */\n amountInUsd: string;\n /** DTO.TOKEN_HOLDER.PERCENTAGE */\n percentage: string;\n}\n\nexport interface TokenHolderPage {\n /** DTO.PAGE.HAS_NEXT */\n hasNext?: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev?: boolean;\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.TOTAL */\n total?: number;\n /** DTO.TOKEN_HOLDER.PAGE.DATA */\n data: TokenHolder[];\n}\n\nexport type Resolution = (typeof Resolution)[keyof typeof Resolution];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const Resolution = {\n \"1s\": \"1s\",\n \"15s\": \"15s\",\n \"30s\": \"30s\",\n \"1m\": \"1m\",\n \"5m\": \"5m\",\n \"15m\": \"15m\",\n \"1h\": \"1h\",\n \"4h\": \"4h\",\n \"12h\": \"12h\",\n \"1d\": \"1d\",\n} as const;\n\nexport interface Candle {\n /** DTO.CANDLE.OPEN */\n open: string;\n /** DTO.CANDLE.CLOSE */\n close: string;\n /** DTO.CANDLE.HIGH */\n high: string;\n /** DTO.CANDLE.LOW */\n low: string;\n /** DTO.CANDLE.VOLUME */\n volume: string;\n /** DTO.CANDLE.RESOLUTION */\n resolution: Resolution;\n /** DTO.CANDLE.TIME */\n time: number;\n}\n\nexport interface TokenPriceDTO {\n /** DTO.TOKEN.PRICE.TOKEN_ADDRESS */\n tokenAddress: string;\n /** DTO.TOKEN.PRICE.PRICE_IN_USD */\n priceInUsd: string;\n /** DTO.TOKEN.PRICE.PRICE_IN_NATIVE */\n priceInNative: string;\n /** DTO.TOKEN.PRICE.TIMESTAMP */\n timestamp: number;\n}\n\nexport interface TokenPricePage {\n /** DTO.PAGE.HAS_NEXT */\n hasNext?: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev?: boolean;\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.TOTAL */\n total?: number;\n /** DTO.TOKEN.PRICE.PAGE.DATA */\n data: TokenPriceDTO[];\n}\n\n/**\n * DTO.TOKEN.CREATION.TYPE\n */\nexport type TokenCreationDTOType = (typeof TokenCreationDTOType)[keyof typeof TokenCreationDTOType];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const TokenCreationDTOType = {\n create: \"create\",\n mint: \"mint\",\n burn: \"burn\",\n} as const;\n\nexport interface TokenCreationDTO {\n /** DTO.TOKEN.CREATION.TOKEN_ADDRESS */\n tokenAddress: string;\n /** DTO.TOKEN.CREATION.BLOCK_HEIGHT */\n blockHeight: number;\n /** DTO.TOKEN.CREATION.BLOCK_SLOT */\n blockSlot: number;\n /** DTO.TOKEN.CREATION.BLOCK_HASH */\n blockHash: string;\n /** DTO.TOKEN.CREATION.BLOCK_TIMESTAMP */\n blockTimestamp?: number;\n /** DTO.TOKEN.CREATION.TRANSACTION_SIGNATURE */\n transactionSignature: string;\n /** DTO.TOKEN.CREATION.TYPE */\n type: TokenCreationDTOType;\n}\n\nexport interface TokenCreationPage {\n /** DTO.PAGE.HAS_NEXT */\n hasNext?: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev?: boolean;\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.TOTAL */\n total?: number;\n /** DTO.TOKEN.CREATION.PAGE.DATA */\n data: TokenCreationDTO[];\n}\n\nexport interface TokenListPage {\n /** DTO.PAGE.HAS_NEXT */\n hasNext?: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev?: boolean;\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.TOTAL */\n total?: number;\n /** DTO.TOKEN.PAGE.DATA */\n data: Token[];\n}\n\nexport interface DevTokenDTO {\n /** DTO.DEV_TOKEN.ADDRESS */\n address: string;\n /** DTO.DEV_TOKEN.METADATA */\n metadata: TokenMetadata;\n /** DTO.DEV_TOKEN.MARKET_DATA */\n marketData: TokenMarketData;\n /** DTO.DEV_TOKEN.STATS */\n stats: TokenStat;\n}\n\nexport type TokenTraderTag = (typeof TokenTraderTag)[keyof typeof TokenTraderTag];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const TokenTraderTag = {\n fresh: \"fresh\",\n sandwish: \"sandwish\",\n bundle: \"bundle\",\n sniper: \"sniper\",\n dev: \"dev\",\n pro: \"pro\",\n insider: \"insider\",\n kol: \"kol\",\n bluechip: \"bluechip\",\n} as const;\n\n/**\n * DTO.TOKEN_TRADER.ONCHAIN_CREATED_AT\n */\nexport type TokenTraderOnchainCreatedAt = { [key: string]: unknown };\n\nexport interface TokenTrader {\n /** DTO.TOKEN_TRADER.ADDRESS */\n address: string;\n /** DTO.TOKEN_TRADER.TRANSACTION_SIGNATURE */\n transactionSignature?: string;\n /** DTO.TOKEN_TRADER.BLOCK_HASH */\n blockHash?: string;\n /** DTO.TOKEN_TRADER.BLOCK_HEIGHT */\n blockHeight?: number;\n /** DTO.TOKEN_TRADER.BLOCK_SLOT */\n blockSlot?: number;\n /** DTO.TOKEN_TRADER.BLOCK_TIMESTAMP */\n blockTimestamp?: string;\n /** DTO.TOKEN_TRADER.ONCHAIN_CREATED_AT */\n onchainCreatedAt?: TokenTraderOnchainCreatedAt;\n /** DTO.TOKEN_TRADER.TRADE_COUNT */\n tradeCount?: number;\n /** DTO.TOKEN_TRADER.TRADE_AMOUNT_IN_NATIVE */\n tradeAmountInNative?: string;\n /** DTO.TOKEN_TRADER.TRADE_AMOUNT_IN_USD */\n tradeAmountInUsd?: string;\n /** DTO.TOKEN_TRADER.PERCENTILE_RANK_TRADE_COUNT */\n percentileRankTradeCount?: number;\n /** DTO.TOKEN_TRADER.PERCENTILE_RANK_TRADE_AMOUNT_IN_USD */\n percentileRankTradeAmountInUsd?: string;\n /** DTO.TOKEN_TRADER.RANK_TRADE_AMOUNT_IN_USD */\n rankTradeAmountInUsd?: string;\n}\n\nexport interface TokenLiquiditySnapshotDTO {\n /** DTO.TOKEN.LIQUIDITY_SNAPSHOT.SNAPSHOT_TIME */\n snapshotTime: number;\n /** DTO.TOKEN.LIQUIDITY_SNAPSHOT.MAX_LIQUIDITY_POOL_ADDRESS */\n maxLiquidityPoolAddress: string;\n /** DTO.TOKEN.LIQUIDITY_SNAPSHOT.MAX_LIQUIDITY_IN_USD */\n maxLiquidityInUsd: string;\n /** DTO.TOKEN.LIQUIDITY_SNAPSHOT.MAX_LIQUIDITY_IN_NATIVE */\n maxLiquidityInNative: string;\n /** DTO.TOKEN.LIQUIDITY_SNAPSHOT.TOTAL_LIQUIDITY_IN_USD */\n totalLiquidityInUsd: string;\n /** DTO.TOKEN.LIQUIDITY_SNAPSHOT.TOTAL_LIQUIDITY_IN_NATIVE */\n totalLiquidityInNative: string;\n /** DTO.TOKEN.LIQUIDITY_SNAPSHOT.POOL_COUNT */\n poolCount: number;\n /** DTO.TOKEN.LIQUIDITY_SNAPSHOT.PRICE_USD */\n priceUsd: string;\n /** DTO.TOKEN.LIQUIDITY_SNAPSHOT.PRICE_NATIVE */\n priceNative: string;\n /** DTO.TOKEN.LIQUIDITY_SNAPSHOT.CALCULATED_AT */\n calculatedAt: number;\n}\n\nexport interface TokenLiquiditySnapshotPage {\n /** DTO.PAGE.DATA */\n data: TokenLiquiditySnapshotDTO[];\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.HAS_NEXT */\n hasNext: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev: boolean;\n}\n\nexport interface DexPoolTokenSnapshotDTO {\n /** DTO.DEXPOOL.TOKEN_ADDRESS */\n tokenAddress: string;\n /** DTO.DEXPOOL.TOKEN_DECIMALS */\n tokenDecimals: number;\n /** DTO.DEXPOOL.VAULT_AMOUNT */\n vaultAmount: string;\n /** DTO.DEXPOOL.AMOUNT_IN_USD */\n amountInUsd: string;\n /** DTO.DEXPOOL.AMOUNT_IN_NATIVE */\n amountInNative: string;\n /** DTO.DEXPOOL.PRICE_USD */\n priceUsd: string;\n /** DTO.DEXPOOL.PRICE_NATIVE */\n priceNative: string;\n}\n\nexport interface DexPoolSnapshotDTO {\n /** DTO.DEXPOOL.POOL_ADDRESS */\n poolAddress: string;\n /** DTO.DEXPOOL.SNAPSHOT.SNAPSHOT_TIME */\n snapshotTime: number;\n /** DTO.DEXPOOL.TVL_USD */\n tvlInUsd: string;\n /** DTO.DEXPOOL.TVL_SOL */\n tvlInNative: string;\n /** DTO.DEXPOOL.SNAPSHOT.TOKEN_A */\n tokenA: DexPoolTokenSnapshotDTO;\n /** DTO.DEXPOOL.SNAPSHOT.TOKEN_B */\n tokenB: DexPoolTokenSnapshotDTO;\n /** DTO.DEXPOOL.SNAPSHOT.BLOCK_HEIGHT */\n blockHeight: number;\n /** DTO.DEXPOOL.SNAPSHOT.BLOCK_SLOT */\n blockSlot?: number;\n /** DTO.DEXPOOL.SNAPSHOT.BLOCK_TIMESTAMP */\n blockTimestamp: number;\n}\n\nexport interface DexPoolSnapshotPage {\n /** DTO.PAGE.DATA */\n data: DexPoolSnapshotDTO[];\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.HAS_NEXT */\n hasNext: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev: boolean;\n}\n\nexport interface WalletPnlDTO {\n /** DTO.WALLET.PNL.ID */\n id: number;\n /** DTO.WALLET.PNL.CHAIN */\n chain: string;\n /** DTO.WALLET.PNL.WALLET_ADDRESS */\n walletAddress: string;\n /** DTO.WALLET.PNL.TOKEN_ADDRESS */\n tokenAddress: string;\n /** DTO.WALLET.PNL.TOKEN_PRICE */\n tokenPriceInUsd: string;\n /** DTO.WALLET.PNL.OPEN_TIME */\n openTime: number;\n /** DTO.WALLET.PNL.CLOSE_TIME */\n closeTime: number;\n /** DTO.WALLET.PNL.LAST_TIME */\n lastTime: number;\n /** DTO.WALLET.PNL.BALANCE */\n balance: string;\n /** DTO.WALLET.PNL.BUY_AMOUNT */\n buyAmount: string;\n /** DTO.WALLET.PNL.BUY_AMOUNT_USD */\n buyAmountInUsd: string;\n /** DTO.WALLET.PNL.BUYS */\n buys: string;\n /** DTO.WALLET.PNL.SELL_AMOUNT */\n sellAmount: string;\n /** DTO.WALLET.PNL.SELL_AMOUNT_USD */\n sellAmountInUsd: string;\n /** DTO.WALLET.PNL.SELLS */\n sells: string;\n /** DTO.WALLET.PNL.AVERAGE_BUY_PRICE */\n averageBuyPriceInUsd: string;\n /** DTO.WALLET.PNL.AVERAGE_SELL_PRICE */\n averageSellPriceInUsd: string;\n /** DTO.WALLET.PNL.UNREALIZED_PROFIT */\n unrealizedProfitInUsd: string;\n /** DTO.WALLET.PNL.UNREALIZED_PROFIT_RATIO */\n unrealizedProfitRatio: string;\n /** DTO.WALLET.PNL.REALIZED_PROFIT */\n realizedProfitInUsd: string;\n /** DTO.WALLET.PNL.REALIZED_PROFIT_RATIO */\n realizedProfitRatio: string;\n /** DTO.WALLET.PNL.TOTAL_REALIZED_PROFIT */\n totalRealizedProfitInUsd: string;\n /** DTO.WALLET.PNL.TOTAL_REALIZED_PROFIT_RATIO */\n totalRealizedProfitRatio: string;\n}\n\nexport interface WalletBalanceDetailDTO {\n /** DTO.WALLET.BALANCE.TOKEN_ADDRESS */\n tokenAddress: string;\n /** DTO.WALLET.BALANCE.AMOUNT */\n amount: string;\n /** DTO.WALLET.BALANCE.AMOUNT_IN_USD */\n valueInUsd: string;\n /** DTO.WALLET.BALANCE.TOKEN_NAME */\n name: string;\n /** DTO.WALLET.BALANCE.TOKEN_SYMBOL */\n symbol: string;\n /** DTO.WALLET.BALANCE.TOKEN_IMAGE_URL */\n imageUrl: string;\n /** DTO.WALLET.BALANCE.TOKEN_PRICE_IN_SOL */\n priceInSol: string;\n /** DTO.WALLET.BALANCE.TOKEN_PRICE_IN_USD */\n priceInUsd: string;\n /** DTO.WALLET.BALANCE.PRICE_CHANGE_24H */\n priceChangeRatioInUsd24h: string;\n /** DTO.WALLET.BALANCE.UNREALIZED_PROFIT */\n unrealizedProfitInUsd: string;\n /** DTO.WALLET.BALANCE.UNREALIZED_PROFIT_RATIO */\n unrealizedProfitRatio: string;\n /** DTO.WALLET.BALANCE.OPEN_TIME */\n openTime: number;\n /** DTO.WALLET.BALANCE.CLOSE_TIME */\n closeTime: number;\n /** DTO.WALLET.BALANCE.BUYS */\n buys: string;\n /** DTO.WALLET.BALANCE.BUY_AMOUNT */\n buyAmount: string;\n /** DTO.WALLET.BALANCE.BUY_AMOUNT_USD */\n buyAmountInUsd: string;\n /** DTO.WALLET.BALANCE.SELLS */\n sells: string;\n /** DTO.WALLET.BALANCE.SELL_AMOUNT */\n sellAmount: string;\n /** DTO.WALLET.BALANCE.SELL_AMOUNT_USD */\n sellAmountInUsd: string;\n /** DTO.WALLET.BALANCE.AVERAGE_BUY_PRICE */\n averageBuyPriceInUsd: string;\n /** DTO.WALLET.BALANCE.AVERAGE_SELL_PRICE */\n averageSellPriceInUsd: string;\n /** DTO.WALLET.BALANCE.REALIZED_PROFIT_IN_USD */\n realizedProfitInUsd: string;\n /** DTO.WALLET.BALANCE.REALIZED_PROFIT_RATIO */\n realizedProfitRatio: string;\n /** DTO.WALLET.BALANCE.TOTAL_REALIZED_PROFIT */\n totalRealizedProfitInUsd: string;\n /** DTO.WALLET.BALANCE.TOTAL_REALIZED_PROFIT_RATIO */\n totalRealizedProfitRatio: string;\n}\n\nexport interface WalletBalancesDTO {\n /** DTO.WALLET.BALANCES.TOTAL_BALANCES_IN_USD */\n totalBalancesInUsd: string;\n /** DTO.WALLET.BALANCES.TOTAL_PROFIT_IN_USD */\n totalProfitInUsd: string;\n /** DTO.WALLET.BALANCES.BALANCES.DETAIL */\n balances: WalletBalanceDetailDTO[];\n}\n\nexport interface CalculatePnlInput {\n /** DTO.WALLET.CALCULATE_PNL.INPUT.TOKEN_ADDRESSES */\n tokenAddresses?: string[];\n}\n\nexport interface BooleanResultDTO {\n /** DTO.BOOLEAN_RESULT.SUCCESS */\n success: boolean;\n}\n\nexport type BalanceTokenType = (typeof BalanceTokenType)[keyof typeof BalanceTokenType];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const BalanceTokenType = {\n SOL: \"SOL\",\n SPL: \"SPL\",\n} as const;\n\nexport type BalanceChangeType = (typeof BalanceChangeType)[keyof typeof BalanceChangeType];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const BalanceChangeType = {\n INCREASE: \"INCREASE\",\n DECREASE: \"DECREASE\",\n} as const;\n\nexport interface BalanceUpdateDTO {\n /** DTO.WALLET.BALANCE_UPDATE.ID */\n id: number;\n /** DTO.WALLET.BALANCE_UPDATE.BLOCK_HASH */\n blockHash: string;\n /** DTO.WALLET.BALANCE_UPDATE.BLOCK_HEIGHT */\n blockHeight: number;\n /** DTO.WALLET.BALANCE_UPDATE.BLOCK_SLOT */\n blockSlot: number;\n /** DTO.WALLET.BALANCE_UPDATE.BLOCK_TIMESTAMP */\n blockTimestamp: number;\n /** DTO.WALLET.BALANCE_UPDATE.TRANSACTION_SIGNATURE */\n transactionSignature: string;\n /** DTO.WALLET.BALANCE_UPDATE.INDEX */\n index: number;\n /** DTO.WALLET.BALANCE_UPDATE.TOKEN_ADDRESS */\n tokenAddress: string;\n /** DTO.WALLET.BALANCE_UPDATE.TOKEN_ACCOUNT_ADDRESS */\n tokenAccountAddress: string;\n /** DTO.WALLET.BALANCE_UPDATE.ACCOUNT_OWNER_ADDRESS */\n accountOwnerAddress: string;\n /** DTO.WALLET.BALANCE_UPDATE.PRE_BALANCE */\n preBalance: string;\n /** DTO.WALLET.BALANCE_UPDATE.PRE_BALANCE_IN_NATIVE */\n preBalanceInNative: string;\n /** DTO.WALLET.BALANCE_UPDATE.PRE_BALANCE_IN_USD */\n preBalanceInUsd: string;\n /** DTO.WALLET.BALANCE_UPDATE.POST_BALANCE */\n postBalance: string;\n /** DTO.WALLET.BALANCE_UPDATE.POST_BALANCE_IN_NATIVE */\n postBalanceInNative: string;\n /** DTO.WALLET.BALANCE_UPDATE.POST_BALANCE_IN_USD */\n postBalanceInUsd: string;\n /** DTO.WALLET.BALANCE_UPDATE.BALANCE_CHANGE */\n balanceChange: string;\n /** DTO.WALLET.BALANCE_UPDATE.BALANCE_CHANGE_IN_NATIVE */\n balanceChangeInNative: string;\n /** DTO.WALLET.BALANCE_UPDATE.BALANCE_CHANGE_IN_USD */\n balanceChangeInUsd: string;\n /** DTO.WALLET.BALANCE_UPDATE.TYPE */\n type: BalanceTokenType;\n /** DTO.WALLET.BALANCE_UPDATE.CHANGE_TYPE */\n changeType: BalanceChangeType;\n}\n\nexport interface BalanceUpdatePage {\n /** DTO.PAGE.DATA */\n data: BalanceUpdateDTO[];\n /** DTO.PAGE.START_CURSOR */\n startCursor?: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor?: string;\n /** DTO.PAGE.HAS_NEXT */\n hasNext: boolean;\n /** DTO.PAGE.HAS_PREV */\n hasPrev: boolean;\n}\n\n/**\n * DTO.RED_PACKET.CHAIN\n */\nexport type CreateRedPacketInputChain =\n (typeof CreateRedPacketInputChain)[keyof typeof CreateRedPacketInputChain];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const CreateRedPacketInputChain = {\n sol: \"sol\",\n bsc: \"bsc\",\n eth: \"eth\",\n} as const;\n\nexport interface CreateRedPacketInput {\n /** DTO.RED_PACKET.CHAIN */\n chain: CreateRedPacketInputChain;\n /**\n * DTO.RED_PACKET.CREATOR\n * @minLength 8\n * @maxLength 64\n */\n creator: string;\n /** DTO.RED_PACKET.MINT */\n mint: string;\n /**\n * DTO.RED_PACKET.MAX_CLAIMS\n * @minimum 1\n * @maximum 100\n */\n maxClaims: number;\n /** DTO.RED_PACKET.TOTAL_AMOUNT */\n totalAmount?: string;\n /** DTO.RED_PACKET.FIXED_AMOUNT */\n fixedAmount?: string;\n /** DTO.RED_PACKET.MEMO */\n memo?: string;\n /** DTO.RED_PACKET.PASSWORD */\n password?: string;\n /** DTO.RED_PACKET.CLAIM_AUTHORITY */\n claimAuthority?: string;\n}\n\nexport interface CreateRedPacketReply {\n /** DTO.RED_PACKET.SERIALIZED_TX */\n txSerialize: string;\n /** DTO.RED_PACKET.SHARE_ID */\n shareId: string;\n}\n\n/**\n * DTO.RED_PACKET.CHAIN\n */\nexport type ClaimRedPacketInputChain =\n (typeof ClaimRedPacketInputChain)[keyof typeof ClaimRedPacketInputChain];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ClaimRedPacketInputChain = {\n sol: \"sol\",\n bsc: \"bsc\",\n eth: \"eth\",\n} as const;\n\nexport interface ClaimRedPacketInput {\n /** DTO.RED_PACKET.CHAIN */\n chain: ClaimRedPacketInputChain;\n /** DTO.RED_PACKET.PACKET_ID */\n packetId?: string;\n /** DTO.RED_PACKET.SHARE_ID */\n shareId?: string;\n /** DTO.RED_PACKET.PASSWORD */\n password?: string;\n /** DTO.RED_PACKET.CLAIMER */\n claimer: string;\n}\n\nexport interface RedPacketReply {\n /** DTO.RED_PACKET.SERIALIZED_TX */\n txSerialize: string;\n}\n\nexport type Chain = (typeof Chain)[keyof typeof Chain];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const Chain = {\n sol: \"sol\",\n bsc: \"bsc\",\n eth: \"eth\",\n} as const;\n\nexport interface RedPacketDTO {\n /** GLOBAL.CHAIN.DESCRIPTION */\n chain: Chain;\n /** DTO.RED_PACKET.ID */\n id: string;\n /** DTO.RED_PACKET.SHARE_ID */\n shareId: string;\n /** DTO.RED_PACKET.TX_HASH */\n txHash: string;\n /** DTO.RED_PACKET.CREATOR */\n creator: string;\n /** DTO.RED_PACKET.MINT */\n mint: string;\n /** DTO.RED_PACKET.TOTAL_AMOUNT */\n totalAmount: string;\n /** DTO.RED_PACKET.MEMO */\n memo: string;\n /** DTO.RED_PACKET.MAX_CLAIMS */\n maxClaims: number;\n /** DTO.RED_PACKET.CLAIM_AUTHORITY */\n claimAuthority: string;\n /** DTO.RED_PACKET.WITHDRAWED */\n expired: boolean;\n /** DTO.RED_PACKET.EXPIRATION */\n expiration: number;\n /** DTO.RED_PACKET.CREATED_AT */\n createdAt: number;\n /** DTO.RED_PACKET.EXPIRES_AT */\n expiredAt: number;\n /** DTO.RED_PACKET.CLAIMED_COUNT */\n claimedCount: number;\n /** DTO.RED_PACKET.CLAIMED_AMOUNT */\n claimedAmount: string;\n /** DTO.RED_PACKET.REFUND_AMOUNT */\n refundedAmount: string;\n}\n\nexport interface RedPacketClaimDTO {\n /** DTO.RED_PACKET.PACKET_ID */\n packetId: string;\n /** DTO.RED_PACKET.CHAIN */\n chain: Chain;\n /** DTO.RED_PACKET.CLAIMER */\n claimer: string;\n /** DTO.RED_PACKET.MINT */\n mint: string;\n /** DTO.RED_PACKET.AMOUNT */\n amount: string;\n /** DTO.RED_PACKET.CLAIMED_AT */\n claimedAt: number;\n /** DTO.RED_PACKET.CREATOR */\n creator: string;\n /** DTO.RED_PACKET.TX_HASH */\n txHash: string;\n}\n\nexport interface RedPacketClaimsPage {\n /** DTO.PAGE.TOTAL */\n total: number;\n /** DTO.PAGE.HAS_NEXT */\n hasNextPage: boolean;\n /** DTO.PAGE.START_CURSOR */\n startCursor: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor: string;\n /** Array of claim records */\n records: RedPacketClaimDTO[];\n}\n\nexport interface RedPacketsPage {\n /** DTO.PAGE.TOTAL */\n total: number;\n /** DTO.PAGE.HAS_NEXT */\n hasNextPage: boolean;\n /** DTO.PAGE.START_CURSOR */\n startCursor: string;\n /** DTO.PAGE.END_CURSOR */\n endCursor: string;\n /** Array of red packets */\n records: RedPacketDTO[];\n}\n\nexport interface RedPacketSendTxInput {\n /** DTO.RED_PACKET.SIGNED_TX */\n signedTx: string;\n}\n\nexport interface RedPacketSendTxResponse {\n /** DTO.RED_PACKET.SIGNATURE */\n signature: string;\n}\n\n/**\n * DTO.KYT.KYT_REGISTER_TRANSFER_REQUEST.NETWORK\n */\nexport type KYTRegisterTransferRequestNetwork =\n (typeof KYTRegisterTransferRequestNetwork)[keyof typeof KYTRegisterTransferRequestNetwork];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const KYTRegisterTransferRequestNetwork = {\n bitcoin: \"bitcoin\",\n ethereum: \"ethereum\",\n Solana: \"Solana\",\n} as const;\n\n/**\n * DTO.KYT.KYT_REGISTER_TRANSFER_REQUEST.DIRECTION\n */\nexport type KYTRegisterTransferRequestDirection =\n (typeof KYTRegisterTransferRequestDirection)[keyof typeof KYTRegisterTransferRequestDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const KYTRegisterTransferRequestDirection = {\n sent: \"sent\",\n received: \"received\",\n} as const;\n\nexport interface KYTRegisterTransferRequest {\n /** DTO.KYT.KYT_REGISTER_TRANSFER_REQUEST.NETWORK */\n network: KYTRegisterTransferRequestNetwork;\n /** DTO.KYT.KYT_REGISTER_TRANSFER_REQUEST.ASSET */\n asset: string;\n /** DTO.KYT.KYT_REGISTER_TRANSFER_REQUEST.TRANSFER_REFERENCE */\n transferReference: string;\n /** DTO.KYT.KYT_REGISTER_TRANSFER_REQUEST.DIRECTION */\n direction: KYTRegisterTransferRequestDirection;\n}\n\nexport interface TransferBaseResponseDTO {\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.UPDATED_AT\n * @nullable\n */\n updatedAt: string | null;\n /** DTO.KYT.TRANSFER_BASE_RESPONSE.ASSET */\n asset: string;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.ASSET_ID\n * @nullable\n */\n assetId: string | null;\n /** DTO.KYT.TRANSFER_BASE_RESPONSE.NETWORK */\n network: string;\n /** DTO.KYT.TRANSFER_BASE_RESPONSE.TRANSFER_REFERENCE */\n transferReference: string;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.MEMO\n * @nullable\n */\n memo: string | null;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.TX\n * @nullable\n */\n tx: string | null;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.IDX\n * @nullable\n */\n idx: number | null;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.USD_AMOUNT\n * @nullable\n */\n usdAmount: string | null;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.ASSET_AMOUNT\n * @nullable\n */\n assetAmount: string | null;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.TIMESTAMP\n * @nullable\n */\n timestamp: string | null;\n /**\n * DTO.KYT.TRANSFER_BASE_RESPONSE.OUTPUT_ADDRESS\n * @nullable\n */\n outputAddress: string | null;\n /** DTO.KYT.TRANSFER_BASE_RESPONSE.EXTERNAL_ID */\n externalId: string;\n}\n\nexport interface DirectExposureDetail {\n /** DTO.KYT.DIRECT_EXPOSURE_DETAIL.NAME */\n name: string;\n /** DTO.KYT.DIRECT_EXPOSURE_DETAIL.CATEGORY_ID */\n categoryId: number;\n}\n\nexport interface TransferDirectExposureResponseDTO {\n /** DTO.KYT.TRANSFER_DIRECT_EXPOSURE_RESPONSE.DIRECT */\n direct: DirectExposureDetail;\n}\n\nexport interface AlertDetail {\n /** DTO.KYT.ALERT_DETAIL.ALERT_LEVEL */\n alertLevel: string;\n /** DTO.KYT.ALERT_DETAIL.SERVICE */\n service: string;\n /** DTO.KYT.ALERT_DETAIL.EXTERNAL_ID */\n externalId: string;\n /** DTO.KYT.ALERT_DETAIL.ALERT_AMOUNT */\n alertAmount: string;\n /** DTO.KYT.ALERT_DETAIL.EXPOSURE_TYPE */\n exposureType: string;\n /** DTO.KYT.ALERT_DETAIL.CATEGORY_ID */\n categoryId: number;\n /**\n * DTO.KYT.ALERT_DETAIL.MEMO\n * @nullable\n */\n memo: string | null;\n}\n\nexport interface TransferAlertsResponseDTO {\n /** DTO.KYT.TRANSFER_ALERTS_RESPONSE.ALERTS */\n alerts: AlertDetail[];\n}\n\nexport interface NetworkIdentificationOrg {\n /** DTO.KYT.NETWORK_IDENTIFICATION_ORG.NAME */\n name: string;\n}\n\nexport interface TransferNetworkIdentificationsResponseDTO {\n /** DTO.KYT.TRANSFER_NETWORK_IDENTIFICATIONS_RESPONSE.COUNT */\n count: number;\n /** DTO.KYT.TRANSFER_NETWORK_IDENTIFICATIONS_RESPONSE.NETWORK_IDENTIFICATION_ORGS */\n networkIdentificationOrgs: NetworkIdentificationOrg[];\n}\n\n/**\n * DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.NETWORK\n */\nexport type KYTRegisterWithdrawalRequestNetwork =\n (typeof KYTRegisterWithdrawalRequestNetwork)[keyof typeof KYTRegisterWithdrawalRequestNetwork];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const KYTRegisterWithdrawalRequestNetwork = {\n bitcoin: \"bitcoin\",\n ethereum: \"ethereum\",\n Solana: \"Solana\",\n} as const;\n\nexport interface KYTRegisterWithdrawalRequest {\n /** DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.NETWORK */\n network: KYTRegisterWithdrawalRequestNetwork;\n /** DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.ASSET */\n asset: string;\n /** DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.ADDRESS */\n address: string;\n /** DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.ASSET_AMOUNT */\n assetAmount: string;\n /** DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.ATTEMPT_TIMESTAMP */\n attemptTimestamp: string;\n /**\n * DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.ASSET_PRICE\n * @nullable\n */\n assetPrice?: string | null;\n /**\n * DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.ASSET_DENOMINATION\n * @nullable\n */\n assetDenomination?: string | null;\n /**\n * DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.ASSET_ID\n * @nullable\n */\n assetId?: string | null;\n /**\n * DTO.KYT.KYT_REGISTER_WITHDRAWAL_REQUEST.MEMO\n * @nullable\n */\n memo?: string | null;\n}\n\nexport interface WithdrawalBaseResponseDTO {\n /** DTO.KYT.WITHDRAWAL_BASE_RESPONSE.ASSET */\n asset: string;\n /**\n * DTO.KYT.WITHDRAWAL_BASE_RESPONSE.ASSET_ID\n * @nullable\n */\n assetId: string | null;\n /** DTO.KYT.WITHDRAWAL_BASE_RESPONSE.NETWORK */\n network: string;\n /** DTO.KYT.WITHDRAWAL_BASE_RESPONSE.ADDRESS */\n address: string;\n /**\n * DTO.KYT.WITHDRAWAL_BASE_RESPONSE.MEMO\n * @nullable\n */\n memo: string | null;\n /** DTO.KYT.WITHDRAWAL_BASE_RESPONSE.ATTEMPT_IDENTIFIER */\n attemptIdentifier: string;\n /** DTO.KYT.WITHDRAWAL_BASE_RESPONSE.ASSET_AMOUNT */\n assetAmount: string;\n /** DTO.KYT.WITHDRAWAL_BASE_RESPONSE.EXTERNAL_ID */\n externalId: string;\n /** DTO.KYT.WITHDRAWAL_BASE_RESPONSE.USD_AMOUNT */\n usdAmount: string;\n /** DTO.KYT.WITHDRAWAL_BASE_RESPONSE.UPDATED_AT */\n updatedAt: string;\n}\n\nexport interface ChainalysisAddressIdentification {\n /** DTO.KYT.CHAINALYSIS_ADDRESS_IDENTIFICATION.ADDRESS_NAME */\n addressName: string;\n /** DTO.KYT.CHAINALYSIS_ADDRESS_IDENTIFICATION.DESCRIPTION */\n description: string;\n /** DTO.KYT.CHAINALYSIS_ADDRESS_IDENTIFICATION.CATEGORY_ID */\n categoryId: number;\n}\n\nexport interface WithdrawalAddressIdentificationsResponseDTO {\n /** DTO.KYT.WITHDRAWAL_ADDRESS_IDENTIFICATIONS_RESPONSE.CHAINALYSIS_IDENTIFICATIONS */\n chainalysisIdentifications: ChainalysisAddressIdentification[];\n /** DTO.KYT.WITHDRAWAL_ADDRESS_IDENTIFICATIONS_RESPONSE.CUSTOM_ADDRESSES */\n customAddresses: string[];\n}\n\nexport interface OnChainActivity {\n /** DTO.KYT.ON_CHAIN_ACTIVITY.FIRST_TRANSACTION_AT */\n first_transaction_at: number;\n}\n\nexport interface AlteryaIdentification {\n /** DTO.KYT.ALTERYA_IDENTIFICATION.OBJECT */\n object: string;\n /** DTO.KYT.ALTERYA_IDENTIFICATION.ADDRESS */\n address: string;\n /** DTO.KYT.ALTERYA_IDENTIFICATION.CHAIN */\n chain: string;\n /** DTO.KYT.ALTERYA_IDENTIFICATION.RISK_LEVEL */\n risk_level: string;\n /** DTO.KYT.ALTERYA_IDENTIFICATION.REASON */\n reason: string;\n /** DTO.KYT.ALTERYA_IDENTIFICATION.LABELS */\n labels: string[];\n /** DTO.KYT.ALTERYA_IDENTIFICATION.ON_CHAIN_ACTIVITY */\n on_chain_activity: OnChainActivity;\n /** DTO.KYT.ALTERYA_IDENTIFICATION.RISK_SCORE */\n risk_score: string;\n}\n\nexport interface WithdrawalFraudAssessmentResponseDTO {\n /** DTO.KYT.WITHDRAWAL_FRAUD_ASSESSMENT_RESPONSE.ALTERYA_IDENTIFICATIONS */\n alteryaIdentifications: AlteryaIdentification[];\n}\n\nexport interface RegisterAddressRequest {\n /** DTO.KYT.REGISTER_ADDRESS_REQUEST.ADDRESS */\n address: string;\n}\n\nexport interface RegisterAddressResponseDTO {\n /** DTO.KYT.REGISTER_ADDRESS_RESPONSE.ADDRESS */\n address: string;\n}\n\nexport interface AddressExposure {\n /** DTO.KYT.ADDRESS_EXPOSURE.CATEGORY */\n category: string;\n /** DTO.KYT.ADDRESS_EXPOSURE.VALUE */\n value: string;\n /** DTO.KYT.ADDRESS_EXPOSURE.EXPOSURE_TYPE */\n exposureType: string;\n /** DTO.KYT.ADDRESS_EXPOSURE.DIRECTION */\n direction: string;\n}\n\nexport interface AddressRiskResponseDTO {\n /** DTO.KYT.ADDRESS_RISK_RESPONSE.ADDRESS */\n address: string;\n /** DTO.KYT.ADDRESS_RISK_RESPONSE.RISK */\n risk: string;\n /**\n * DTO.KYT.ADDRESS_RISK_RESPONSE.RISK_REASON\n * @nullable\n */\n riskReason: string | null;\n /** DTO.KYT.ADDRESS_RISK_RESPONSE.ADDRESS_TYPE */\n addressType: string;\n /**\n * DTO.KYT.ADDRESS_RISK_RESPONSE.CLUSTER\n * @nullable\n */\n cluster: string | null;\n /** DTO.KYT.ADDRESS_RISK_RESPONSE.ADDRESS_IDENTIFICATIONS */\n addressIdentifications: string[];\n /** DTO.KYT.ADDRESS_RISK_RESPONSE.EXPOSURES */\n exposures: AddressExposure[];\n /** DTO.KYT.ADDRESS_RISK_RESPONSE.TRIGGERS */\n triggers: string[];\n /** DTO.KYT.ADDRESS_RISK_RESPONSE.STATUS */\n status: string;\n}\n\n/**\n * DTO.ENDPOINT.METADATA\n */\nexport type EndpointResponseMetadata = { [key: string]: unknown };\n\nexport interface EndpointResponse {\n /** DTO.ENDPOINT.ID */\n id?: string;\n /** DTO.ENDPOINT.URL */\n url?: string;\n /** DTO.ENDPOINT.DESCRIPTION */\n description?: string;\n /** DTO.ENDPOINT.FILTER_TYPES */\n filterTypes?: string[];\n /** DTO.ENDPOINT.CHANNELS */\n channels?: string[];\n /** DTO.ENDPOINT.DISABLED */\n disabled?: boolean;\n /** DTO.ENDPOINT.METADATA */\n metadata?: EndpointResponseMetadata;\n /** DTO.ENDPOINT.RATE_LIMIT */\n rateLimit?: number;\n /** DTO.ENDPOINT.FILTER */\n filter?: string;\n /** DTO.ENDPOINT.CREATED_AT */\n createdAt?: string;\n /** DTO.ENDPOINT.UPDATED_AT */\n updatedAt?: string;\n}\n\nexport interface EndpointListResponse {\n /** DTO.ENDPOINT.PAGE.DATA */\n data?: EndpointResponse[];\n /** DTO.ENDPOINT.PAGE.DONE */\n done?: boolean;\n /** DTO.ENDPOINT.PAGE.ITERATOR */\n iterator?: string;\n /** DTO.ENDPOINT.PAGE.PREV_ITERATOR */\n prevIterator?: string;\n}\n\nexport interface EndpointSecretResponse {\n /** DTO.ENDPOINT.SECRET */\n secret?: string;\n}\n\nexport interface EndpointOperationResponse {\n /** DTO.ENDPOINT.SUCCESS */\n success?: boolean;\n}\n\n/**\n * DTO.ENDPOINT.METADATA\n */\nexport type CreateEndpointInputMetadata = { [key: string]: unknown };\n\nexport interface CreateEndpointInput {\n /** DTO.ENDPOINT.CHANNELS */\n channels?: string[];\n /** DTO.ENDPOINT.DESCRIPTION */\n description?: string;\n /** DTO.ENDPOINT.DISABLED */\n disabled?: boolean;\n /** DTO.ENDPOINT.FILTER_TYPES */\n filterTypes?: string[];\n /** DTO.ENDPOINT.METADATA */\n metadata?: CreateEndpointInputMetadata;\n /** DTO.ENDPOINT.RATE_LIMIT */\n rateLimit?: number;\n /** DTO.ENDPOINT.URL */\n url?: string;\n /** DTO.ENDPOINT.FILTER */\n filter?: string;\n}\n\n/**\n * DTO.ENDPOINT.METADATA\n */\nexport type UpdateEndpointInputMetadata = { [key: string]: unknown };\n\nexport interface UpdateEndpointInput {\n /** DTO.ENDPOINT.ENDPOINT_ID */\n endpointId?: string;\n /** DTO.ENDPOINT.CHANNELS */\n channels?: string[];\n /** DTO.ENDPOINT.DESCRIPTION */\n description?: string;\n /** DTO.ENDPOINT.DISABLED */\n disabled?: boolean;\n /** DTO.ENDPOINT.FILTER_TYPES */\n filterTypes?: string[];\n /** DTO.ENDPOINT.METADATA */\n metadata?: UpdateEndpointInputMetadata;\n /** DTO.ENDPOINT.RATE_LIMIT */\n rateLimit?: number;\n /** DTO.ENDPOINT.URL */\n url?: string;\n /** DTO.ENDPOINT.FILTER */\n filter?: string;\n}\n\nexport type TradeType = (typeof TradeType)[keyof typeof TradeType];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const TradeType = {\n buy: \"buy\",\n sell: \"sell\",\n} as const;\n\nexport interface TradeEvent {\n /** DTO.TRADE.MAKER */\n maker: string;\n /** DTO.TRADE.BASE_AMOUNT */\n baseAmount: string;\n /** DTO.TRADE.QUOTE_AMOUNT */\n quoteAmount: string;\n /** DTO.TRADE.QUOTE_SYMBOL */\n quoteSymbol: string;\n /** DTO.TRADE.QUOTE_ADDRESS */\n quoteAddress: string;\n /** DTO.TRADE.AMOUNT_IN_USD */\n amountInUsd: string;\n /** DTO.TRADE.TIMESTAMP */\n timestamp: number;\n /** DTO.TRADE.EVENT */\n event: TradeType;\n /** DTO.TRADE.TX_HASH */\n txHash: string;\n /** DTO.TRADE.PRICE_IN_USD */\n priceInUsd: string;\n /** DTO.TRADE.ID */\n id: string;\n /** DTO.TRADE.BUY_COST_USD */\n buyCostUsd: string;\n /** DTO.TRADE.TOKEN_ADDRESS */\n tokenAddress: string;\n}\n\nexport type QuoteParams = {\n /**\n * DTO.DEX.QUOTE.DEX\n */\n dex: QuoteDex;\n /**\n * DTO.DEX.QUOTE.AMOUNT\n */\n amount: string;\n /**\n * DTO.DEX.QUOTE.INPUT_MINT\n */\n inputMint: string;\n /**\n * DTO.DEX.QUOTE.OUTPUT_MINT\n */\n outputMint: string;\n /**\n * DTO.DEX.QUOTE.EXACT_IN\n */\n exactIn?: boolean;\n /**\n * DTO.DEX.QUOTE.SLIPPAGE\n */\n slippage: number;\n};\n\nexport type QuoteDex = (typeof QuoteDex)[keyof typeof QuoteDex];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const QuoteDex = {\n raydium: \"raydium\",\n pumpfun: \"pumpfun\",\n} as const;\n\nexport type ListDexParams = {\n chains?: string[];\n /**\n * DTO.DEX.QUERY.LIMIT\n */\n limit?: number;\n /**\n * DTO.DEX.QUERY.DEX_PROGRAM\n */\n dexProgram?: string;\n};\n\nexport type MoonshotSubmitCreateToken200 = {\n /** Transaction signature */\n signature?: string;\n /** Block slot number */\n slot?: number;\n};\n\nexport type GetTradesParams = {\n /**\n * DTO.PAGE.CURSOR.DESCRIPTION\n */\n cursor?: string;\n /**\n * DTO.PAGE.LIMIT\n */\n limit?: number;\n /**\n * DTO.PAGE.DIRECTION\n */\n direction?: GetTradesDirection;\n /**\n * DTO.TRADE.QUERY.TOKEN_ADDRESS\n */\n tokenAddress?: string;\n /**\n * DTO.TRADE.QUERY.WALLET_ADDRESS\n */\n walletAddress?: string;\n /**\n * DTO.TRADE.QUERY.POOL_ADDRESS\n */\n poolAddress?: string;\n /**\n * DTO.TRADE.QUERY.BEFORE_TIMESTAMP\n */\n beforeTimestamp?: number;\n /**\n * DTO.TRADE.QUERY.AFTER_TIMESTAMP\n */\n afterTimestamp?: number;\n /**\n * DTO.TRADE.QUERY.BEFORE_BLOCK_HEIGHT\n */\n beforeBlockHeight?: number;\n /**\n * DTO.TRADE.QUERY.AFTER_BLOCK_HEIGHT\n */\n afterBlockHeight?: number;\n /**\n * DTO.TRADE.QUERY.TRANSACTIONS_SIGNATURE\n */\n transactionsSignature?: string;\n /**\n * DTO.TRADE.QUERY.TRADES_TYPE\n */\n type?: GetTradesType;\n};\n\nexport type GetTradesDirection = (typeof GetTradesDirection)[keyof typeof GetTradesDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetTradesDirection = {\n next: \"next\",\n prev: \"prev\",\n} as const;\n\nexport type GetTradesType = (typeof GetTradesType)[keyof typeof GetTradesType];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetTradesType = {\n BUY: \"BUY\",\n SELL: \"SELL\",\n} as const;\n\nexport type GetActivitiesParams = {\n /**\n * DTO.PAGE.CURSOR.DESCRIPTION\n */\n cursor?: string;\n /**\n * DTO.PAGE.LIMIT\n */\n limit?: number;\n /**\n * DTO.PAGE.DIRECTION\n */\n direction?: GetActivitiesDirection;\n /**\n * DTO.TRADE.QUERY.TOKEN_ADDRESS\n */\n tokenAddress?: string;\n /**\n * DTO.TRADE.QUERY.WALLET_ADDRESS\n */\n walletAddress?: string;\n /**\n * DTO.TRADE.QUERY.POOL_ADDRESS\n */\n poolAddress?: string;\n /**\n * DTO.TRADE.QUERY.BEFORE_TIMESTAMP\n */\n beforeTimestamp?: number;\n /**\n * DTO.TRADE.QUERY.AFTER_TIMESTAMP\n */\n afterTimestamp?: number;\n /**\n * DTO.TRADE.QUERY.BEFORE_BLOCK_HEIGHT\n */\n beforeBlockHeight?: number;\n /**\n * DTO.TRADE.QUERY.AFTER_BLOCK_HEIGHT\n */\n afterBlockHeight?: number;\n /**\n * DTO.TRADE.QUERY.TRANSACTIONS_SIGNATURE\n */\n transactionsSignature?: string;\n /**\n * DTO.TRADE.QUERY.ACTIVITIES_TYPE\n */\n type?: GetActivitiesType;\n};\n\nexport type GetActivitiesDirection =\n (typeof GetActivitiesDirection)[keyof typeof GetActivitiesDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetActivitiesDirection = {\n next: \"next\",\n prev: \"prev\",\n} as const;\n\nexport type GetActivitiesType = (typeof GetActivitiesType)[keyof typeof GetActivitiesType];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetActivitiesType = {\n BUY: \"BUY\",\n SELL: \"SELL\",\n LIQUIDITY_INITIALIZE: \"LIQUIDITY_INITIALIZE\",\n LIQUIDITY_ADD: \"LIQUIDITY_ADD\",\n LIQUIDITY_REMOVE: \"LIQUIDITY_REMOVE\",\n RED_PACKET_CREATE: \"RED_PACKET_CREATE\",\n RED_PACKET_CLAIM: \"RED_PACKET_CLAIM\",\n RED_PACKET_COMPLETE: \"RED_PACKET_COMPLETE\",\n RED_PACKET_REFUND: \"RED_PACKET_REFUND\",\n} as const;\n\nexport type GetTopTradersParams = {\n /**\n * DTO.PAGE.CURSOR.DESCRIPTION\n */\n cursor?: string;\n /**\n * DTO.TRADE.QUERY.LIMIT\n */\n limit?: number;\n /**\n * DTO.PAGE.DIRECTION\n */\n direction?: GetTopTradersDirection;\n /**\n * DTO.TRADE.QUERY.TOKEN_ADDRESS\n */\n tokenAddress: string;\n /**\n * DTO.TRADE.QUERY.TIME_FRAME\n */\n timeFrame?: GetTopTradersTimeFrame;\n /**\n * DTO.TRADE.QUERY.SORT_TYPE\n */\n sortType?: GetTopTradersSortType;\n /**\n * DTO.TRADE.QUERY.SORT_BY\n */\n sortBy?: GetTopTradersSortBy;\n};\n\nexport type GetTopTradersDirection =\n (typeof GetTopTradersDirection)[keyof typeof GetTopTradersDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetTopTradersDirection = {\n next: \"next\",\n prev: \"prev\",\n} as const;\n\nexport type GetTopTradersTimeFrame =\n (typeof GetTopTradersTimeFrame)[keyof typeof GetTopTradersTimeFrame];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetTopTradersTimeFrame = {\n \"30m\": \"30m\",\n \"1h\": \"1h\",\n \"2h\": \"2h\",\n \"4h\": \"4h\",\n \"6h\": \"6h\",\n \"8h\": \"8h\",\n \"12h\": \"12h\",\n \"24h\": \"24h\",\n} as const;\n\nexport type GetTopTradersSortType =\n (typeof GetTopTradersSortType)[keyof typeof GetTopTradersSortType];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetTopTradersSortType = {\n desc: \"desc\",\n asc: \"asc\",\n} as const;\n\nexport type GetTopTradersSortBy = (typeof GetTopTradersSortBy)[keyof typeof GetTopTradersSortBy];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetTopTradersSortBy = {\n tradeAmount: \"tradeAmount\",\n tradeCount: \"tradeCount\",\n} as const;\n\nexport type SearchParams = {\n /**\n * DTO.TOKEN.SEARCH.CHAINS\n */\n chains?: string[];\n /**\n * DTO.TOKEN.SEARCH.QUERY\n */\n q?: string;\n /**\n * DTO.TOKEN.SEARCH.LIMIT\n */\n limit?: number;\n /**\n * DTO.TOKEN.SEARCH.SORT_DIRECTION\n */\n sort?: SearchSort;\n /**\n * DTO.TOKEN.SEARCH.PROTOCOLS\n */\n protocols?: string[];\n /**\n * DTO.PAGE.CURSOR\n */\n cursor?: string;\n /**\n * DTO.TOKEN.SEARCH.SORT_BY\n */\n sortBy?: SearchSortBy;\n};\n\nexport type SearchSort = (typeof SearchSort)[keyof typeof SearchSort];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SearchSort = {\n asc: \"asc\",\n desc: \"desc\",\n} as const;\n\nexport type SearchSortBy = (typeof SearchSortBy)[keyof typeof SearchSortBy];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SearchSortBy = {\n marketCapInUsd: \"marketCapInUsd\",\n liquidityInUsd: \"liquidityInUsd\",\n priceInUsd: \"priceInUsd\",\n holderCount: \"holderCount\",\n h24VolumeInUsd: \"h24VolumeInUsd\",\n h24Transactions: \"h24Transactions\",\n tokenCreatedAt: \"tokenCreatedAt\",\n} as const;\n\nexport type GetTokensParams = {\n /**\n * GLOBAL.TOKENADDRESSES.DESCRIPTION\n */\n tokenAddresses: string;\n /**\n * DTO.TOKEN.REQUEST.SORT_BY\n */\n sortBy?: GetTokensSortBy;\n /**\n * DTO.TOKEN.REQUEST.SORT_DIRECTION\n */\n sortDirection?: GetTokensSortDirection;\n /**\n * DTO.TOKEN.REQUEST.FILTER_BY\n */\n filterBy?: FilterCondition[];\n};\n\nexport type GetTokensSortBy = (typeof GetTokensSortBy)[keyof typeof GetTokensSortBy];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetTokensSortBy = {\n marketDatapriceInUsd: \"marketData.priceInUsd\",\n statspriceChangeRatioInUsd1m: \"stats.priceChangeRatioInUsd1m\",\n statspriceChangeRatioInUsd5m: \"stats.priceChangeRatioInUsd5m\",\n statspriceChangeRatioInUsd1h: \"stats.priceChangeRatioInUsd1h\",\n statspriceChangeRatioInUsd4h: \"stats.priceChangeRatioInUsd4h\",\n statspriceChangeRatioInUsd24h: \"stats.priceChangeRatioInUsd24h\",\n marketDatamarketCapInUsd: \"marketData.marketCapInUsd\",\n marketDatamaxPoolTvlInUsd: \"marketData.maxPoolTvlInUsd\",\n marketDatatotalTvlInUsd: \"marketData.totalTvlInUsd\",\n marketDatatop10TotalHoldings: \"marketData.top10TotalHoldings\",\n marketDatatop10HoldingsRatio: \"marketData.top10HoldingsRatio\",\n marketDatatop100TotalHoldings: \"marketData.top100TotalHoldings\",\n marketDatatop100HoldingsRatio: \"marketData.top100HoldingsRatio\",\n marketDataholders: \"marketData.holders\",\n marketDatacreatorHoldings: \"marketData.creatorHoldings\",\n marketDatacreatorHoldingsRatio: \"marketData.creatorHoldingsRatio\",\n statsbuys1m: \"stats.buys1m\",\n statsbuys5m: \"stats.buys5m\",\n statsbuys15m: \"stats.buys15m\",\n statsbuys30m: \"stats.buys30m\",\n statsbuys1h: \"stats.buys1h\",\n statsbuys4h: \"stats.buys4h\",\n statsbuys24h: \"stats.buys24h\",\n statssells1m: \"stats.sells1m\",\n statssells5m: \"stats.sells5m\",\n statssells15m: \"stats.sells15m\",\n statssells30m: \"stats.sells30m\",\n statssells1h: \"stats.sells1h\",\n statssells4h: \"stats.sells4h\",\n statssells24h: \"stats.sells24h\",\n statstrades1m: \"stats.trades1m\",\n statstrades5m: \"stats.trades5m\",\n statstrades1h: \"stats.trades1h\",\n statstrades4h: \"stats.trades4h\",\n statstrades24h: \"stats.trades24h\",\n statstraders1m: \"stats.traders1m\",\n statstraders5m: \"stats.traders5m\",\n statstraders1h: \"stats.traders1h\",\n statstraders4h: \"stats.traders4h\",\n statstraders24h: \"stats.traders24h\",\n statsvolumesInUsd1m: \"stats.volumesInUsd1m\",\n statsvolumesInUsd5m: \"stats.volumesInUsd5m\",\n statsvolumesInUsd1h: \"stats.volumesInUsd1h\",\n statsvolumesInUsd4h: \"stats.volumesInUsd4h\",\n statsvolumesInUsd24h: \"stats.volumesInUsd24h\",\n tokenCreatedAt: \"tokenCreatedAt\",\n} as const;\n\nexport type GetTokensSortDirection =\n (typeof GetTokensSortDirection)[keyof typeof GetTokensSortDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetTokensSortDirection = {\n ASC: \"ASC\",\n DESC: \"DESC\",\n} as const;\n\nexport type GetMetadataMultiParams = {\n /**\n * GLOBAL.TOKENADDRESSES.DESCRIPTION\n */\n tokenAddresses: string;\n};\n\nexport type GetMetadataMulti200 = { [key: string]: TokenMetadata };\n\nexport type GetPoolsParams = {\n /**\n * DTO.PAGE.CURSOR.DESCRIPTION\n */\n cursor?: string;\n /**\n * DTO.PAGE.LIMIT\n */\n limit?: number;\n /**\n * DTO.PAGE.DIRECTION\n */\n direction?: GetPoolsDirection;\n /**\n * DTO.POOL.SORT_BY\n */\n sortBy?: GetPoolsSortBy;\n /**\n * DTO.POOL.SORT_DIRECTION\n */\n sortDirection?: GetPoolsSortDirection;\n /**\n * DTO.POOL.MIN_TVL_IN_SOL\n */\n minTvlInSol?: string;\n /**\n * DTO.POOL.MAX_TVL_IN_SOL\n */\n maxTvlInSol?: string;\n /**\n * DTO.POOL.MIN_TVL_IN_USD\n */\n minTvlInUsd?: string;\n /**\n * DTO.POOL.MAX_TVL_IN_USD\n */\n maxTvlInUsd?: string;\n};\n\nexport type GetPoolsDirection = (typeof GetPoolsDirection)[keyof typeof GetPoolsDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetPoolsDirection = {\n next: \"next\",\n prev: \"prev\",\n} as const;\n\nexport type GetPoolsSortBy = (typeof GetPoolsSortBy)[keyof typeof GetPoolsSortBy];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetPoolsSortBy = {\n tvlInSol: \"tvlInSol\",\n tvlInUsd: \"tvlInUsd\",\n} as const;\n\nexport type GetPoolsSortDirection =\n (typeof GetPoolsSortDirection)[keyof typeof GetPoolsSortDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetPoolsSortDirection = {\n asc: \"asc\",\n desc: \"desc\",\n} as const;\n\nexport type GetStatsMultiParams = {\n /**\n * GLOBAL.TOKENADDRESSES.DESCRIPTION\n */\n tokenAddresses: string;\n};\n\nexport type GetStatsMulti200 = { [key: string]: TokenStat };\n\nexport type GetHoldersParams = {\n /**\n * DTO.PAGE.CURSOR.DESCRIPTION\n */\n cursor?: string;\n /**\n * DTO.PAGE.LIMIT\n */\n limit?: number;\n /**\n * DTO.PAGE.DIRECTION\n */\n direction?: GetHoldersDirection;\n};\n\nexport type GetHoldersDirection = (typeof GetHoldersDirection)[keyof typeof GetHoldersDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetHoldersDirection = {\n next: \"next\",\n prev: \"prev\",\n} as const;\n\nexport type GetHoldersMultiParams = {\n /**\n * GLOBAL.WALLETADDRESSES.DESCRIPTION\n */\n walletAddresses: string;\n};\n\nexport type GetCandlesParams = {\n /**\n * DTO.CANDLE.RESOLUTION\n */\n resolution: Resolution;\n /**\n * DTO.CANDLE.FROM\n */\n from?: number;\n /**\n * DTO.CANDLE.TO\n */\n to?: number;\n /**\n * DTO.CANDLE.LIMIT\n */\n limit?: number;\n};\n\nexport type GetMarketDataMultiParams = {\n /**\n * GLOBAL.TOKENADDRESSES.DESCRIPTION\n */\n tokenAddresses: string;\n};\n\nexport type GetMarketDataMulti200 = { [key: string]: TokenMarketData };\n\nexport type GetPricesParams = {\n /**\n * DTO.PAGE.CURSOR.DESCRIPTION\n */\n cursor?: string;\n /**\n * DTO.PAGE.LIMIT\n */\n limit?: number;\n /**\n * DTO.PAGE.DIRECTION\n */\n direction?: GetPricesDirection;\n};\n\nexport type GetPricesDirection = (typeof GetPricesDirection)[keyof typeof GetPricesDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetPricesDirection = {\n next: \"next\",\n prev: \"prev\",\n} as const;\n\nexport type GetPriceByTimeParams = {\n /**\n * DTO.TOKEN.PRICE.QUERY.TIMESTAMP\n */\n timestamp: number;\n};\n\nexport type GetMintAndBurnParams = {\n /**\n * DTO.PAGE.CURSOR.DESCRIPTION\n */\n cursor?: string;\n /**\n * DTO.PAGE.LIMIT\n */\n limit?: number;\n /**\n * DTO.PAGE.DIRECTION\n */\n direction?: GetMintAndBurnDirection;\n /**\n * DTO.TOKEN.MINT_AND_BURN.TYPE\n */\n type?: GetMintAndBurnType;\n};\n\nexport type GetMintAndBurnDirection =\n (typeof GetMintAndBurnDirection)[keyof typeof GetMintAndBurnDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetMintAndBurnDirection = {\n next: \"next\",\n prev: \"prev\",\n} as const;\n\nexport type GetMintAndBurnType = (typeof GetMintAndBurnType)[keyof typeof GetMintAndBurnType];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetMintAndBurnType = {\n all: \"all\",\n mint: \"mint\",\n burn: \"burn\",\n} as const;\n\nexport type ListTokenParams = {\n /**\n * DTO.PAGE.CURSOR.DESCRIPTION\n */\n cursor?: string;\n /**\n * DTO.PAGE.LIMIT\n */\n limit?: number;\n /**\n * DTO.PAGE.DIRECTION\n */\n direction?: ListTokenDirection;\n /**\n * DTO.TOKEN.SEARCH.SORT_DIRECTION\n */\n sort?: ListTokenSort;\n /**\n * DTO.TOKEN.LIST.QUERY.SORT_BY\n */\n sortBy?: ListTokenSortBy;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H24_VOLUME_IN_USD\n */\n min_h24_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H24_VOLUME_IN_USD\n */\n max_h24_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H24_PRICE_CHANGE_RATIO\n */\n min_h24_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H24_PRICE_CHANGE_RATIO\n */\n max_h24_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H24_BUYS\n */\n min_h24_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H24_BUYS\n */\n max_h24_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H24_SELLS\n */\n min_h24_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H24_SELLS\n */\n max_h24_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H24_TRADES\n */\n min_h24_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H24_TRADES\n */\n max_h24_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H24_BUYERS\n */\n min_h24_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H24_BUYERS\n */\n max_h24_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H24_SELLERS\n */\n min_h24_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H24_SELLERS\n */\n max_h24_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H24_BUY_VOLUME_IN_USD\n */\n min_h24_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H24_BUY_VOLUME_IN_USD\n */\n max_h24_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H24_SELL_VOLUME_IN_USD\n */\n min_h24_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H24_SELL_VOLUME_IN_USD\n */\n max_h24_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H4_VOLUME_IN_USD\n */\n min_h4_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H4_VOLUME_IN_USD\n */\n max_h4_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H4_PRICE_CHANGE_RATIO\n */\n min_h4_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H4_PRICE_CHANGE_RATIO\n */\n max_h4_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H4_BUYS\n */\n min_h4_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H4_BUYS\n */\n max_h4_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H4_SELLS\n */\n min_h4_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H4_SELLS\n */\n max_h4_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H4_TRADES\n */\n min_h4_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H4_TRADES\n */\n max_h4_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H4_BUYERS\n */\n min_h4_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H4_BUYERS\n */\n max_h4_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H4_SELLERS\n */\n min_h4_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H4_SELLERS\n */\n max_h4_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H4_BUY_VOLUME_IN_USD\n */\n min_h4_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H4_BUY_VOLUME_IN_USD\n */\n max_h4_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H4_SELL_VOLUME_IN_USD\n */\n min_h4_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H4_SELL_VOLUME_IN_USD\n */\n max_h4_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H1_VOLUME_IN_USD\n */\n min_h1_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H1_VOLUME_IN_USD\n */\n max_h1_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H1_PRICE_CHANGE_RATIO\n */\n min_h1_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H1_PRICE_CHANGE_RATIO\n */\n max_h1_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H1_BUYS\n */\n min_h1_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H1_BUYS\n */\n max_h1_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H1_SELLS\n */\n min_h1_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H1_SELLS\n */\n max_h1_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H1_TRADES\n */\n min_h1_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H1_TRADES\n */\n max_h1_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H1_BUYERS\n */\n min_h1_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H1_BUYERS\n */\n max_h1_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H1_SELLERS\n */\n min_h1_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H1_SELLERS\n */\n max_h1_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H1_BUY_VOLUME_IN_USD\n */\n min_h1_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H1_BUY_VOLUME_IN_USD\n */\n max_h1_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_H1_SELL_VOLUME_IN_USD\n */\n min_h1_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_H1_SELL_VOLUME_IN_USD\n */\n max_h1_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M30_VOLUME_IN_USD\n */\n min_m30_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M30_VOLUME_IN_USD\n */\n max_m30_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M30_PRICE_CHANGE_RATIO\n */\n min_m30_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M30_PRICE_CHANGE_RATIO\n */\n max_m30_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M30_BUYS\n */\n min_m30_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M30_BUYS\n */\n max_m30_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M30_SELLS\n */\n min_m30_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M30_SELLS\n */\n max_m30_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M30_TRADES\n */\n min_m30_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M30_TRADES\n */\n max_m30_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M30_BUYERS\n */\n min_m30_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M30_BUYERS\n */\n max_m30_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M30_SELLERS\n */\n min_m30_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M30_SELLERS\n */\n max_m30_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M30_BUY_VOLUME_IN_USD\n */\n min_m30_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M30_BUY_VOLUME_IN_USD\n */\n max_m30_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M30_SELL_VOLUME_IN_USD\n */\n min_m30_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M30_SELL_VOLUME_IN_USD\n */\n max_m30_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M15_VOLUME_IN_USD\n */\n min_m15_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M15_VOLUME_IN_USD\n */\n max_m15_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M15_PRICE_CHANGE_RATIO\n */\n min_m15_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M15_PRICE_CHANGE_RATIO\n */\n max_m15_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M15_BUYS\n */\n min_m15_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M15_BUYS\n */\n max_m15_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M15_SELLS\n */\n min_m15_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M15_SELLS\n */\n max_m15_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M15_TRADES\n */\n min_m15_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M15_TRADES\n */\n max_m15_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M15_BUYERS\n */\n min_m15_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M15_BUYERS\n */\n max_m15_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M15_SELLERS\n */\n min_m15_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M15_SELLERS\n */\n max_m15_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M15_BUY_VOLUME_IN_USD\n */\n min_m15_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M15_BUY_VOLUME_IN_USD\n */\n max_m15_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M15_SELL_VOLUME_IN_USD\n */\n min_m15_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M15_SELL_VOLUME_IN_USD\n */\n max_m15_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M5_VOLUME_IN_USD\n */\n min_m5_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M5_VOLUME_IN_USD\n */\n max_m5_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M5_PRICE_CHANGE_RATIO\n */\n min_m5_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M5_PRICE_CHANGE_RATIO\n */\n max_m5_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M5_BUYS\n */\n min_m5_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M5_BUYS\n */\n max_m5_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M5_SELLS\n */\n min_m5_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M5_SELLS\n */\n max_m5_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M5_TRADES\n */\n min_m5_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M5_TRADES\n */\n max_m5_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M5_BUYERS\n */\n min_m5_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M5_BUYERS\n */\n max_m5_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M5_SELLERS\n */\n min_m5_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M5_SELLERS\n */\n max_m5_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M5_BUY_VOLUME_IN_USD\n */\n min_m5_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M5_BUY_VOLUME_IN_USD\n */\n max_m5_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M5_SELL_VOLUME_IN_USD\n */\n min_m5_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M5_SELL_VOLUME_IN_USD\n */\n max_m5_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M1_VOLUME_IN_USD\n */\n min_m1_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M1_VOLUME_IN_USD\n */\n max_m1_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M1_PRICE_CHANGE_RATIO\n */\n min_m1_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M1_PRICE_CHANGE_RATIO\n */\n max_m1_price_change_ratio?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M1_BUYS\n */\n min_m1_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M1_BUYS\n */\n max_m1_buys?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M1_SELLS\n */\n min_m1_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M1_SELLS\n */\n max_m1_sells?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M1_TRADES\n */\n min_m1_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M1_TRADES\n */\n max_m1_trades?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M1_BUYERS\n */\n min_m1_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M1_BUYERS\n */\n max_m1_buyers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M1_SELLERS\n */\n min_m1_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M1_SELLERS\n */\n max_m1_sellers?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M1_BUY_VOLUME_IN_USD\n */\n min_m1_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M1_BUY_VOLUME_IN_USD\n */\n max_m1_buy_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MIN_M1_SELL_VOLUME_IN_USD\n */\n min_m1_sell_volume_in_usd?: string;\n /**\n * DTO.TOKEN.LIST.QUERY.MAX_M1_SELL_VOLUME_IN_USD\n */\n max_m1_sell_volume_in_usd?: string;\n};\n\nexport type ListTokenDirection = (typeof ListTokenDirection)[keyof typeof ListTokenDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ListTokenDirection = {\n next: \"next\",\n prev: \"prev\",\n} as const;\n\nexport type ListTokenSort = (typeof ListTokenSort)[keyof typeof ListTokenSort];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ListTokenSort = {\n asc: \"asc\",\n desc: \"desc\",\n} as const;\n\nexport type ListTokenSortBy = (typeof ListTokenSortBy)[keyof typeof ListTokenSortBy];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ListTokenSortBy = {\n h24VolumeInUsd: \"h24VolumeInUsd\",\n h24PriceChangeRatio: \"h24PriceChangeRatio\",\n h24Buys: \"h24Buys\",\n h24Sells: \"h24Sells\",\n h24Trades: \"h24Trades\",\n h24Buyers: \"h24Buyers\",\n h24Sellers: \"h24Sellers\",\n h24BuyVolumeInUsd: \"h24BuyVolumeInUsd\",\n h24SellVolumeInUsd: \"h24SellVolumeInUsd\",\n h4VolumeInUsd: \"h4VolumeInUsd\",\n h4PriceChangeRatio: \"h4PriceChangeRatio\",\n h4Buys: \"h4Buys\",\n h4Sells: \"h4Sells\",\n h4Trades: \"h4Trades\",\n h4Buyers: \"h4Buyers\",\n h4Sellers: \"h4Sellers\",\n h4BuyVolumeInUsd: \"h4BuyVolumeInUsd\",\n h4SellVolumeInUsd: \"h4SellVolumeInUsd\",\n h1VolumeInUsd: \"h1VolumeInUsd\",\n h1PriceChangeRatio: \"h1PriceChangeRatio\",\n h1Buys: \"h1Buys\",\n h1Sells: \"h1Sells\",\n h1Trades: \"h1Trades\",\n h1Buyers: \"h1Buyers\",\n h1Sellers: \"h1Sellers\",\n h1BuyVolumeInUsd: \"h1BuyVolumeInUsd\",\n h1SellVolumeInUsd: \"h1SellVolumeInUsd\",\n m30VolumeInUsd: \"m30VolumeInUsd\",\n m30PriceChangeRatio: \"m30PriceChangeRatio\",\n m30Buys: \"m30Buys\",\n m30Sells: \"m30Sells\",\n m30Trades: \"m30Trades\",\n m30Buyers: \"m30Buyers\",\n m30Sellers: \"m30Sellers\",\n m30BuyVolumeInUsd: \"m30BuyVolumeInUsd\",\n m30SellVolumeInUsd: \"m30SellVolumeInUsd\",\n m15VolumeInUsd: \"m15VolumeInUsd\",\n m15PriceChangeRatio: \"m15PriceChangeRatio\",\n m15Buys: \"m15Buys\",\n m15Sells: \"m15Sells\",\n m15Trades: \"m15Trades\",\n m15Buyers: \"m15Buyers\",\n m15Sellers: \"m15Sellers\",\n m15BuyVolumeInUsd: \"m15BuyVolumeInUsd\",\n m15SellVolumeInUsd: \"m15SellVolumeInUsd\",\n m5VolumeInUsd: \"m5VolumeInUsd\",\n m5PriceChangeRatio: \"m5PriceChangeRatio\",\n m5Buys: \"m5Buys\",\n m5Sells: \"m5Sells\",\n m5Trades: \"m5Trades\",\n m5Buyers: \"m5Buyers\",\n m5Sellers: \"m5Sellers\",\n m5BuyVolumeInUsd: \"m5BuyVolumeInUsd\",\n m5SellVolumeInUsd: \"m5SellVolumeInUsd\",\n m1VolumeInUsd: \"m1VolumeInUsd\",\n m1PriceChangeRatio: \"m1PriceChangeRatio\",\n m1Buys: \"m1Buys\",\n m1Sells: \"m1Sells\",\n m1Trades: \"m1Trades\",\n m1Buyers: \"m1Buyers\",\n m1Sellers: \"m1Sellers\",\n m1BuyVolumeInUsd: \"m1BuyVolumeInUsd\",\n m1SellVolumeInUsd: \"m1SellVolumeInUsd\",\n} as const;\n\nexport type GetSecurity200 = { [key: string]: unknown };\n\nexport type GetTokenLiquiditySnapshotsParams = {\n /**\n * DTO.TOKEN.LIQUIDITY_SNAPSHOT.TIME\n */\n time?: number;\n /**\n * DTO.PAGE.CURSOR\n */\n cursor?: string;\n /**\n * DTO.PAGE.LIMIT\n */\n limit?: number;\n};\n\nexport type GetDexpoolSnapshotsParams = {\n /**\n * DTO.DEXPOOL.SNAPSHOT.TIME\n */\n time?: number;\n /**\n * DTO.PAGE.CURSOR\n */\n cursor?: string;\n /**\n * DTO.PAGE.LIMIT\n */\n limit?: number;\n};\n\nexport type GetHotTokensParams = {\n /**\n * DTO.TOKEN.REQUEST.SORT_BY\n */\n sortBy?: GetHotTokensSortBy;\n /**\n * DTO.TOKEN.REQUEST.SORT_DIRECTION\n */\n sortDirection?: GetHotTokensSortDirection;\n /**\n * DTO.TOKEN.REQUEST.FILTER_BY\n */\n rangeFilters?: FilterCondition[];\n /**\n * DTO.TOKEN.REQUEST.TAG\n */\n tag?: GetHotTokensTag;\n /**\n * DTO.TOKEN.FILTER.FILTERS\n */\n filters?: string[];\n /**\n * DTO.TOKEN.FILTER.LAUNCHPAD_PLATFORM\n */\n launchpadPlatform?: string[];\n /**\n * DTO.TOKEN.FILTER.SEARCH_KEYWORDS\n */\n searchKeywords?: string[];\n /**\n * DTO.TOKEN.FILTER.EXCLUDE_KEYWORDS\n */\n excludeKeywords?: string[];\n};\n\nexport type GetHotTokensSortBy = (typeof GetHotTokensSortBy)[keyof typeof GetHotTokensSortBy];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetHotTokensSortBy = {\n marketDatapriceInUsd: \"marketData.priceInUsd\",\n statspriceChangeRatioInUsd1m: \"stats.priceChangeRatioInUsd1m\",\n statspriceChangeRatioInUsd5m: \"stats.priceChangeRatioInUsd5m\",\n statspriceChangeRatioInUsd1h: \"stats.priceChangeRatioInUsd1h\",\n statspriceChangeRatioInUsd4h: \"stats.priceChangeRatioInUsd4h\",\n statspriceChangeRatioInUsd24h: \"stats.priceChangeRatioInUsd24h\",\n marketDatamarketCapInUsd: \"marketData.marketCapInUsd\",\n marketDatamaxPoolTvlInUsd: \"marketData.maxPoolTvlInUsd\",\n marketDatatotalTvlInUsd: \"marketData.totalTvlInUsd\",\n marketDatatop10TotalHoldings: \"marketData.top10TotalHoldings\",\n marketDatatop10HoldingsRatio: \"marketData.top10HoldingsRatio\",\n marketDatatop100TotalHoldings: \"marketData.top100TotalHoldings\",\n marketDatatop100HoldingsRatio: \"marketData.top100HoldingsRatio\",\n marketDataholders: \"marketData.holders\",\n marketDatacreatorHoldings: \"marketData.creatorHoldings\",\n marketDatacreatorHoldingsRatio: \"marketData.creatorHoldingsRatio\",\n statsbuys1m: \"stats.buys1m\",\n statsbuys5m: \"stats.buys5m\",\n statsbuys15m: \"stats.buys15m\",\n statsbuys30m: \"stats.buys30m\",\n statsbuys1h: \"stats.buys1h\",\n statsbuys4h: \"stats.buys4h\",\n statsbuys24h: \"stats.buys24h\",\n statssells1m: \"stats.sells1m\",\n statssells5m: \"stats.sells5m\",\n statssells15m: \"stats.sells15m\",\n statssells30m: \"stats.sells30m\",\n statssells1h: \"stats.sells1h\",\n statssells4h: \"stats.sells4h\",\n statssells24h: \"stats.sells24h\",\n statstrades1m: \"stats.trades1m\",\n statstrades5m: \"stats.trades5m\",\n statstrades1h: \"stats.trades1h\",\n statstrades4h: \"stats.trades4h\",\n statstrades24h: \"stats.trades24h\",\n statstraders1m: \"stats.traders1m\",\n statstraders5m: \"stats.traders5m\",\n statstraders1h: \"stats.traders1h\",\n statstraders4h: \"stats.traders4h\",\n statstraders24h: \"stats.traders24h\",\n statsvolumesInUsd1m: \"stats.volumesInUsd1m\",\n statsvolumesInUsd5m: \"stats.volumesInUsd5m\",\n statsvolumesInUsd1h: \"stats.volumesInUsd1h\",\n statsvolumesInUsd4h: \"stats.volumesInUsd4h\",\n statsvolumesInUsd24h: \"stats.volumesInUsd24h\",\n tokenCreatedAt: \"tokenCreatedAt\",\n} as const;\n\nexport type GetHotTokensSortDirection =\n (typeof GetHotTokensSortDirection)[keyof typeof GetHotTokensSortDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetHotTokensSortDirection = {\n ASC: \"ASC\",\n DESC: \"DESC\",\n} as const;\n\nexport type GetHotTokensTag = (typeof GetHotTokensTag)[keyof typeof GetHotTokensTag];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetHotTokensTag = {\n pump_fun: \"pump_fun\",\n raydium_launchpad: \"raydium_launchpad\",\n meteora_dynamic_bounding_curve: \"meteora_dynamic_bounding_curve\",\n bonk_fun: \"bonk_fun\",\n moonit_fun: \"moonit_fun\",\n} as const;\n\nexport type GetNewTokensParams = {\n /**\n * DTO.TOKEN.REQUEST.SORT_BY\n */\n sortBy?: GetNewTokensSortBy;\n /**\n * DTO.TOKEN.REQUEST.SORT_DIRECTION\n */\n sortDirection?: GetNewTokensSortDirection;\n /**\n * DTO.TOKEN.REQUEST.FILTER_BY\n */\n rangeFilters?: FilterCondition[];\n /**\n * DTO.TOKEN.REQUEST.TAG\n */\n tag?: GetNewTokensTag;\n /**\n * DTO.TOKEN.FILTER.FILTERS\n */\n filters?: string[];\n /**\n * DTO.TOKEN.FILTER.LAUNCHPAD_PLATFORM\n */\n launchpadPlatform?: string[];\n /**\n * DTO.TOKEN.FILTER.SEARCH_KEYWORDS\n */\n searchKeywords?: string[];\n /**\n * DTO.TOKEN.FILTER.EXCLUDE_KEYWORDS\n */\n excludeKeywords?: string[];\n};\n\nexport type GetNewTokensSortBy = (typeof GetNewTokensSortBy)[keyof typeof GetNewTokensSortBy];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetNewTokensSortBy = {\n marketDatapriceInUsd: \"marketData.priceInUsd\",\n statspriceChangeRatioInUsd1m: \"stats.priceChangeRatioInUsd1m\",\n statspriceChangeRatioInUsd5m: \"stats.priceChangeRatioInUsd5m\",\n statspriceChangeRatioInUsd1h: \"stats.priceChangeRatioInUsd1h\",\n statspriceChangeRatioInUsd4h: \"stats.priceChangeRatioInUsd4h\",\n statspriceChangeRatioInUsd24h: \"stats.priceChangeRatioInUsd24h\",\n marketDatamarketCapInUsd: \"marketData.marketCapInUsd\",\n marketDatamaxPoolTvlInUsd: \"marketData.maxPoolTvlInUsd\",\n marketDatatotalTvlInUsd: \"marketData.totalTvlInUsd\",\n marketDatatop10TotalHoldings: \"marketData.top10TotalHoldings\",\n marketDatatop10HoldingsRatio: \"marketData.top10HoldingsRatio\",\n marketDatatop100TotalHoldings: \"marketData.top100TotalHoldings\",\n marketDatatop100HoldingsRatio: \"marketData.top100HoldingsRatio\",\n marketDataholders: \"marketData.holders\",\n marketDatacreatorHoldings: \"marketData.creatorHoldings\",\n marketDatacreatorHoldingsRatio: \"marketData.creatorHoldingsRatio\",\n statsbuys1m: \"stats.buys1m\",\n statsbuys5m: \"stats.buys5m\",\n statsbuys15m: \"stats.buys15m\",\n statsbuys30m: \"stats.buys30m\",\n statsbuys1h: \"stats.buys1h\",\n statsbuys4h: \"stats.buys4h\",\n statsbuys24h: \"stats.buys24h\",\n statssells1m: \"stats.sells1m\",\n statssells5m: \"stats.sells5m\",\n statssells15m: \"stats.sells15m\",\n statssells30m: \"stats.sells30m\",\n statssells1h: \"stats.sells1h\",\n statssells4h: \"stats.sells4h\",\n statssells24h: \"stats.sells24h\",\n statstrades1m: \"stats.trades1m\",\n statstrades5m: \"stats.trades5m\",\n statstrades1h: \"stats.trades1h\",\n statstrades4h: \"stats.trades4h\",\n statstrades24h: \"stats.trades24h\",\n statstraders1m: \"stats.traders1m\",\n statstraders5m: \"stats.traders5m\",\n statstraders1h: \"stats.traders1h\",\n statstraders4h: \"stats.traders4h\",\n statstraders24h: \"stats.traders24h\",\n statsvolumesInUsd1m: \"stats.volumesInUsd1m\",\n statsvolumesInUsd5m: \"stats.volumesInUsd5m\",\n statsvolumesInUsd1h: \"stats.volumesInUsd1h\",\n statsvolumesInUsd4h: \"stats.volumesInUsd4h\",\n statsvolumesInUsd24h: \"stats.volumesInUsd24h\",\n tokenCreatedAt: \"tokenCreatedAt\",\n} as const;\n\nexport type GetNewTokensSortDirection =\n (typeof GetNewTokensSortDirection)[keyof typeof GetNewTokensSortDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetNewTokensSortDirection = {\n ASC: \"ASC\",\n DESC: \"DESC\",\n} as const;\n\nexport type GetNewTokensTag = (typeof GetNewTokensTag)[keyof typeof GetNewTokensTag];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetNewTokensTag = {\n pump_fun: \"pump_fun\",\n raydium_launchpad: \"raydium_launchpad\",\n meteora_dynamic_bounding_curve: \"meteora_dynamic_bounding_curve\",\n bonk_fun: \"bonk_fun\",\n moonit_fun: \"moonit_fun\",\n} as const;\n\nexport type GetStocksTokensParams = {\n /**\n * DTO.TOKEN.REQUEST.SORT_BY\n */\n sortBy?: GetStocksTokensSortBy;\n /**\n * DTO.TOKEN.REQUEST.SORT_DIRECTION\n */\n sortDirection?: GetStocksTokensSortDirection;\n /**\n * DTO.TOKEN.REQUEST.FILTER_BY\n */\n rangeFilters?: FilterCondition[];\n /**\n * DTO.TOKEN.REQUEST.TAG\n */\n tag?: GetStocksTokensTag;\n /**\n * DTO.TOKEN.FILTER.FILTERS\n */\n filters?: string[];\n /**\n * DTO.TOKEN.FILTER.LAUNCHPAD_PLATFORM\n */\n launchpadPlatform?: string[];\n /**\n * DTO.TOKEN.FILTER.SEARCH_KEYWORDS\n */\n searchKeywords?: string[];\n /**\n * DTO.TOKEN.FILTER.EXCLUDE_KEYWORDS\n */\n excludeKeywords?: string[];\n};\n\nexport type GetStocksTokensSortBy =\n (typeof GetStocksTokensSortBy)[keyof typeof GetStocksTokensSortBy];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetStocksTokensSortBy = {\n marketDatapriceInUsd: \"marketData.priceInUsd\",\n statspriceChangeRatioInUsd1m: \"stats.priceChangeRatioInUsd1m\",\n statspriceChangeRatioInUsd5m: \"stats.priceChangeRatioInUsd5m\",\n statspriceChangeRatioInUsd1h: \"stats.priceChangeRatioInUsd1h\",\n statspriceChangeRatioInUsd4h: \"stats.priceChangeRatioInUsd4h\",\n statspriceChangeRatioInUsd24h: \"stats.priceChangeRatioInUsd24h\",\n marketDatamarketCapInUsd: \"marketData.marketCapInUsd\",\n marketDatamaxPoolTvlInUsd: \"marketData.maxPoolTvlInUsd\",\n marketDatatotalTvlInUsd: \"marketData.totalTvlInUsd\",\n marketDatatop10TotalHoldings: \"marketData.top10TotalHoldings\",\n marketDatatop10HoldingsRatio: \"marketData.top10HoldingsRatio\",\n marketDatatop100TotalHoldings: \"marketData.top100TotalHoldings\",\n marketDatatop100HoldingsRatio: \"marketData.top100HoldingsRatio\",\n marketDataholders: \"marketData.holders\",\n marketDatacreatorHoldings: \"marketData.creatorHoldings\",\n marketDatacreatorHoldingsRatio: \"marketData.creatorHoldingsRatio\",\n statsbuys1m: \"stats.buys1m\",\n statsbuys5m: \"stats.buys5m\",\n statsbuys15m: \"stats.buys15m\",\n statsbuys30m: \"stats.buys30m\",\n statsbuys1h: \"stats.buys1h\",\n statsbuys4h: \"stats.buys4h\",\n statsbuys24h: \"stats.buys24h\",\n statssells1m: \"stats.sells1m\",\n statssells5m: \"stats.sells5m\",\n statssells15m: \"stats.sells15m\",\n statssells30m: \"stats.sells30m\",\n statssells1h: \"stats.sells1h\",\n statssells4h: \"stats.sells4h\",\n statssells24h: \"stats.sells24h\",\n statstrades1m: \"stats.trades1m\",\n statstrades5m: \"stats.trades5m\",\n statstrades1h: \"stats.trades1h\",\n statstrades4h: \"stats.trades4h\",\n statstrades24h: \"stats.trades24h\",\n statstraders1m: \"stats.traders1m\",\n statstraders5m: \"stats.traders5m\",\n statstraders1h: \"stats.traders1h\",\n statstraders4h: \"stats.traders4h\",\n statstraders24h: \"stats.traders24h\",\n statsvolumesInUsd1m: \"stats.volumesInUsd1m\",\n statsvolumesInUsd5m: \"stats.volumesInUsd5m\",\n statsvolumesInUsd1h: \"stats.volumesInUsd1h\",\n statsvolumesInUsd4h: \"stats.volumesInUsd4h\",\n statsvolumesInUsd24h: \"stats.volumesInUsd24h\",\n tokenCreatedAt: \"tokenCreatedAt\",\n} as const;\n\nexport type GetStocksTokensSortDirection =\n (typeof GetStocksTokensSortDirection)[keyof typeof GetStocksTokensSortDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetStocksTokensSortDirection = {\n ASC: \"ASC\",\n DESC: \"DESC\",\n} as const;\n\nexport type GetStocksTokensTag = (typeof GetStocksTokensTag)[keyof typeof GetStocksTokensTag];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetStocksTokensTag = {\n pump_fun: \"pump_fun\",\n raydium_launchpad: \"raydium_launchpad\",\n meteora_dynamic_bounding_curve: \"meteora_dynamic_bounding_curve\",\n bonk_fun: \"bonk_fun\",\n moonit_fun: \"moonit_fun\",\n} as const;\n\nexport type GetFinalStretchTokensParams = {\n /**\n * DTO.TOKEN.REQUEST.SORT_BY\n */\n sortBy?: GetFinalStretchTokensSortBy;\n /**\n * DTO.TOKEN.REQUEST.SORT_DIRECTION\n */\n sortDirection?: GetFinalStretchTokensSortDirection;\n /**\n * DTO.TOKEN.REQUEST.FILTER_BY\n */\n rangeFilters?: FilterCondition[];\n /**\n * DTO.TOKEN.REQUEST.TAG\n */\n tag?: GetFinalStretchTokensTag;\n /**\n * DTO.TOKEN.FILTER.FILTERS\n */\n filters?: string[];\n /**\n * DTO.TOKEN.FILTER.LAUNCHPAD_PLATFORM\n */\n launchpadPlatform?: string[];\n /**\n * DTO.TOKEN.FILTER.SEARCH_KEYWORDS\n */\n searchKeywords?: string[];\n /**\n * DTO.TOKEN.FILTER.EXCLUDE_KEYWORDS\n */\n excludeKeywords?: string[];\n};\n\nexport type GetFinalStretchTokensSortBy =\n (typeof GetFinalStretchTokensSortBy)[keyof typeof GetFinalStretchTokensSortBy];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetFinalStretchTokensSortBy = {\n marketDatapriceInUsd: \"marketData.priceInUsd\",\n statspriceChangeRatioInUsd1m: \"stats.priceChangeRatioInUsd1m\",\n statspriceChangeRatioInUsd5m: \"stats.priceChangeRatioInUsd5m\",\n statspriceChangeRatioInUsd1h: \"stats.priceChangeRatioInUsd1h\",\n statspriceChangeRatioInUsd4h: \"stats.priceChangeRatioInUsd4h\",\n statspriceChangeRatioInUsd24h: \"stats.priceChangeRatioInUsd24h\",\n marketDatamarketCapInUsd: \"marketData.marketCapInUsd\",\n marketDatamaxPoolTvlInUsd: \"marketData.maxPoolTvlInUsd\",\n marketDatatotalTvlInUsd: \"marketData.totalTvlInUsd\",\n marketDatatop10TotalHoldings: \"marketData.top10TotalHoldings\",\n marketDatatop10HoldingsRatio: \"marketData.top10HoldingsRatio\",\n marketDatatop100TotalHoldings: \"marketData.top100TotalHoldings\",\n marketDatatop100HoldingsRatio: \"marketData.top100HoldingsRatio\",\n marketDataholders: \"marketData.holders\",\n marketDatacreatorHoldings: \"marketData.creatorHoldings\",\n marketDatacreatorHoldingsRatio: \"marketData.creatorHoldingsRatio\",\n statsbuys1m: \"stats.buys1m\",\n statsbuys5m: \"stats.buys5m\",\n statsbuys15m: \"stats.buys15m\",\n statsbuys30m: \"stats.buys30m\",\n statsbuys1h: \"stats.buys1h\",\n statsbuys4h: \"stats.buys4h\",\n statsbuys24h: \"stats.buys24h\",\n statssells1m: \"stats.sells1m\",\n statssells5m: \"stats.sells5m\",\n statssells15m: \"stats.sells15m\",\n statssells30m: \"stats.sells30m\",\n statssells1h: \"stats.sells1h\",\n statssells4h: \"stats.sells4h\",\n statssells24h: \"stats.sells24h\",\n statstrades1m: \"stats.trades1m\",\n statstrades5m: \"stats.trades5m\",\n statstrades1h: \"stats.trades1h\",\n statstrades4h: \"stats.trades4h\",\n statstrades24h: \"stats.trades24h\",\n statstraders1m: \"stats.traders1m\",\n statstraders5m: \"stats.traders5m\",\n statstraders1h: \"stats.traders1h\",\n statstraders4h: \"stats.traders4h\",\n statstraders24h: \"stats.traders24h\",\n statsvolumesInUsd1m: \"stats.volumesInUsd1m\",\n statsvolumesInUsd5m: \"stats.volumesInUsd5m\",\n statsvolumesInUsd1h: \"stats.volumesInUsd1h\",\n statsvolumesInUsd4h: \"stats.volumesInUsd4h\",\n statsvolumesInUsd24h: \"stats.volumesInUsd24h\",\n tokenCreatedAt: \"tokenCreatedAt\",\n} as const;\n\nexport type GetFinalStretchTokensSortDirection =\n (typeof GetFinalStretchTokensSortDirection)[keyof typeof GetFinalStretchTokensSortDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetFinalStretchTokensSortDirection = {\n ASC: \"ASC\",\n DESC: \"DESC\",\n} as const;\n\nexport type GetFinalStretchTokensTag =\n (typeof GetFinalStretchTokensTag)[keyof typeof GetFinalStretchTokensTag];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetFinalStretchTokensTag = {\n pump_fun: \"pump_fun\",\n raydium_launchpad: \"raydium_launchpad\",\n meteora_dynamic_bounding_curve: \"meteora_dynamic_bounding_curve\",\n bonk_fun: \"bonk_fun\",\n moonit_fun: \"moonit_fun\",\n} as const;\n\nexport type GetMigratedTokensParams = {\n /**\n * DTO.TOKEN.REQUEST.SORT_BY\n */\n sortBy?: GetMigratedTokensSortBy;\n /**\n * DTO.TOKEN.REQUEST.SORT_DIRECTION\n */\n sortDirection?: GetMigratedTokensSortDirection;\n /**\n * DTO.TOKEN.REQUEST.FILTER_BY\n */\n rangeFilters?: FilterCondition[];\n /**\n * DTO.TOKEN.REQUEST.TAG\n */\n tag?: GetMigratedTokensTag;\n /**\n * DTO.TOKEN.FILTER.FILTERS\n */\n filters?: string[];\n /**\n * DTO.TOKEN.FILTER.LAUNCHPAD_PLATFORM\n */\n launchpadPlatform?: string[];\n /**\n * DTO.TOKEN.FILTER.SEARCH_KEYWORDS\n */\n searchKeywords?: string[];\n /**\n * DTO.TOKEN.FILTER.EXCLUDE_KEYWORDS\n */\n excludeKeywords?: string[];\n};\n\nexport type GetMigratedTokensSortBy =\n (typeof GetMigratedTokensSortBy)[keyof typeof GetMigratedTokensSortBy];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetMigratedTokensSortBy = {\n marketDatapriceInUsd: \"marketData.priceInUsd\",\n statspriceChangeRatioInUsd1m: \"stats.priceChangeRatioInUsd1m\",\n statspriceChangeRatioInUsd5m: \"stats.priceChangeRatioInUsd5m\",\n statspriceChangeRatioInUsd1h: \"stats.priceChangeRatioInUsd1h\",\n statspriceChangeRatioInUsd4h: \"stats.priceChangeRatioInUsd4h\",\n statspriceChangeRatioInUsd24h: \"stats.priceChangeRatioInUsd24h\",\n marketDatamarketCapInUsd: \"marketData.marketCapInUsd\",\n marketDatamaxPoolTvlInUsd: \"marketData.maxPoolTvlInUsd\",\n marketDatatotalTvlInUsd: \"marketData.totalTvlInUsd\",\n marketDatatop10TotalHoldings: \"marketData.top10TotalHoldings\",\n marketDatatop10HoldingsRatio: \"marketData.top10HoldingsRatio\",\n marketDatatop100TotalHoldings: \"marketData.top100TotalHoldings\",\n marketDatatop100HoldingsRatio: \"marketData.top100HoldingsRatio\",\n marketDataholders: \"marketData.holders\",\n marketDatacreatorHoldings: \"marketData.creatorHoldings\",\n marketDatacreatorHoldingsRatio: \"marketData.creatorHoldingsRatio\",\n statsbuys1m: \"stats.buys1m\",\n statsbuys5m: \"stats.buys5m\",\n statsbuys15m: \"stats.buys15m\",\n statsbuys30m: \"stats.buys30m\",\n statsbuys1h: \"stats.buys1h\",\n statsbuys4h: \"stats.buys4h\",\n statsbuys24h: \"stats.buys24h\",\n statssells1m: \"stats.sells1m\",\n statssells5m: \"stats.sells5m\",\n statssells15m: \"stats.sells15m\",\n statssells30m: \"stats.sells30m\",\n statssells1h: \"stats.sells1h\",\n statssells4h: \"stats.sells4h\",\n statssells24h: \"stats.sells24h\",\n statstrades1m: \"stats.trades1m\",\n statstrades5m: \"stats.trades5m\",\n statstrades1h: \"stats.trades1h\",\n statstrades4h: \"stats.trades4h\",\n statstrades24h: \"stats.trades24h\",\n statstraders1m: \"stats.traders1m\",\n statstraders5m: \"stats.traders5m\",\n statstraders1h: \"stats.traders1h\",\n statstraders4h: \"stats.traders4h\",\n statstraders24h: \"stats.traders24h\",\n statsvolumesInUsd1m: \"stats.volumesInUsd1m\",\n statsvolumesInUsd5m: \"stats.volumesInUsd5m\",\n statsvolumesInUsd1h: \"stats.volumesInUsd1h\",\n statsvolumesInUsd4h: \"stats.volumesInUsd4h\",\n statsvolumesInUsd24h: \"stats.volumesInUsd24h\",\n tokenCreatedAt: \"tokenCreatedAt\",\n} as const;\n\nexport type GetMigratedTokensSortDirection =\n (typeof GetMigratedTokensSortDirection)[keyof typeof GetMigratedTokensSortDirection];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetMigratedTokensSortDirection = {\n ASC: \"ASC\",\n DESC: \"DESC\",\n} as const;\n\nexport type GetMigratedTokensTag = (typeof GetMigratedTokensTag)[keyof typeof GetMigratedTokensTag];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetMigratedTokensTag = {\n pump_fun: \"pump_fun\",\n raydium_launchpad: \"raydium_launchpad\",\n meteora_dynamic_bounding_curve: \"meteora_dynamic_bounding_curve\",\n bonk_fun: \"bonk_fun\",\n moonit_fun: \"moonit_fun\",\n} as const;\n\nexport type GetPnlParams = {\n /**\n * GLOBAL.TOKENADDRESS.DESCRIPTION\n */\n tokenAddress?: string;\n};\n\nexport type GetBalanceParams = {\n /**\n * DTO.WALLET.BALANCE.QUERY.TOKEN_ADDRESS\n */\n tokenAddress?: string;\n};\n\nexport type GetBalanceUpdatesParams = {\n /**\n * DTO.WALLET.BALANCE_UPDATE.QUERY.TOKEN_ADDRESS\n */\n tokenAddress?: string;\n /**\n * DTO.WALLET.BALANCE_UPDATE.QUERY.TIME_FROM\n */\n timeFrom?: number;\n /**\n * DTO.WALLET.BALANCE_UPDATE.QUERY.TIME_TO\n */\n timeTo?: number;\n /**\n * DTO.WALLET.BALANCE_UPDATE.QUERY.TYPE\n */\n type?: BalanceTokenType;\n /**\n * DTO.WALLET.BALANCE_UPDATE.QUERY.CHANGE_TYPE\n */\n changeType?: BalanceChangeType;\n /**\n * DTO.PAGE.CURSOR\n */\n cursor?: string;\n /**\n * DTO.PAGE.LIMIT\n */\n limit?: number;\n};\n\nexport type GetClaimsParams = {\n /**\n * DTO.RED_PACKET.CURSOR\n */\n cursor?: string;\n /**\n * DTO.RED_PACKET.LIMIT\n */\n limit?: number;\n /**\n * DTO.RED_PACKET.DIRECTION\n */\n direction?: string;\n};\n\nexport type GetRedpacketsParams = {\n /**\n * DTO.RED_PACKET.CURSOR\n */\n cursor?: string;\n /**\n * DTO.RED_PACKET.LIMIT\n */\n limit?: number;\n /**\n * DTO.RED_PACKET.DIRECTION\n */\n direction?: string;\n /**\n * DTO.RED_PACKET.CREATOR\n */\n creator?: string;\n /**\n * DTO.RED_PACKET.CHAIN\n */\n chain?: GetRedpacketsChain;\n};\n\nexport type GetRedpacketsChain = (typeof GetRedpacketsChain)[keyof typeof GetRedpacketsChain];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetRedpacketsChain = {\n sol: \"sol\",\n bsc: \"bsc\",\n eth: \"eth\",\n} as const;\n\nexport type GetClaimsByAddressParams = {\n /**\n * DTO.RED_PACKET.CURSOR\n */\n cursor?: string;\n /**\n * DTO.RED_PACKET.LIMIT\n */\n limit?: number;\n /**\n * DTO.RED_PACKET.DIRECTION\n */\n direction?: string;\n};\n\nexport type GetRedpacketsByAddressParams = {\n /**\n * DTO.RED_PACKET.CURSOR\n */\n cursor?: string;\n /**\n * DTO.RED_PACKET.LIMIT\n */\n limit?: number;\n /**\n * DTO.RED_PACKET.DIRECTION\n */\n direction?: string;\n};\n\nexport type ListEndpointsParams = {\n /**\n * DTO.ENDPOINT.LIMIT\n */\n limit?: number;\n /**\n * DTO.ENDPOINT.ITERATOR\n */\n iterator?: string;\n /**\n * DTO.ENDPOINT.ORDER\n */\n order?: ListEndpointsOrder;\n};\n\nexport type ListEndpointsOrder = (typeof ListEndpointsOrder)[keyof typeof ListEndpointsOrder];\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ListEndpointsOrder = {\n ascending: \"ascending\",\n descending: \"descending\",\n} as const;\n"],"mappings":"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","names":["WsTokenActivityType","WsChannelType","WsMetricType","WsRankingType","WsDex"]}
|