@liberfi.io/client 0.1.182 → 0.1.183

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/version.ts","../src/utils.ts","../src/client.ts"],"names":["version_default","nullToUndefined","value","toChainDTO","chain","Chain","ChainSymbol","toResolutionDTO","resolution","Resolution","toSortDirectionDTO","direction","toSearchFieldDTO","field","SearchSortBy","toFieldDTO","TokenField","toRangeFiltersDTO","filters","it","cond","SafeBigNumber","fromChainDTO","fromTokenCreatorDTO","input","fromTokenDTO","v","k","fromTokenStatsDTO","fromTokenMarketDataDTO","parseTokenStatsByResolution","toOptionalNumber","period","fromTokenLiquidityDTO","fromTokenCandle","fromResolutionDTO","fromTokenSecurity","solanaChains","EVM_NATIVE_ADDRESS","KYBERSWAP_NATIVE_SENTINEL","toJupiterMint","address","SOLANA_TOKENS","toKyberSwapMint","effectiveDex","params","toMintForDex","dex","toMintForRoute","toSwapRouteInput","inputMint","outputMint","API","SwapRouteInputSwapMode","toSendTxInput","fromTokenHolderPage","holder","fromTokenPage","fromSwapRoute","fromSendTxResult","fromWalletPortfolios","portfolios","item","fromWalletPnlSummary","fromPnlDetailsPage","fromWalletNetWorthByTokens","fromPnlDetailItems","fromTradePage","fromTradeDetailDTO","isBuy","fromActivityPage","fromActivityDetailDTO","type","fromTokenSubscribed","fromTokenMetadataSubscribed","fromWsCandle","fromWsTokenStats","timeframes","record","result","tf","buys","sells","buyers","sellers","buyVolumeInUsd","sellVolumeInUsd","trades","price","openInUsd","closeInUsd","totalTrades","totalTraders","totalVolumesInUsd","priceChange","fromWsTokenMarketDataFromStats","fromWsTokenDataSubscribed","fromWsTokenSupplyToSubscribed","fromWsTokenHolderToSubscribed","fromWsTokenMarketDataFromHolder","fromWsTokenLiquidityToSubscribed","WsMetricType","fromWsTokenBondingCurveToSubscribed","fromWsTokenMaxLiquidityToSubscribed","fromWsTokenTotalLiquidityToSubscribed","fromWsTradeActivity","fromWsActivity","Client","_Client","accessToken","options","ChainStreamClient","token","addresses","c","security","stats","holders","marketData","tokenPage","route","txHash","timeout","success","chainParam","netWorth","pnl","detailsPage","tokenAddresses","callback","chainDTO","subs","data","s","rankingSub","WsChannelType","d","bondingSub","walletAddress","base","qs","res","raw","decimals","divisor","whole","fracStr","amount","parseLaunchPlatformFromFilters","target","tradePage","page","channelType","filter"],"mappings":"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","file":"index.mjs","sourcesContent":["declare global {\n interface Window {\n __LIBERFI_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif (typeof window !== \"undefined\") {\n window.__LIBERFI_VERSION__ = window.__LIBERFI_VERSION__ || {};\n window.__LIBERFI_VERSION__[\"@liberfi.io/client\"] = \"0.1.182\";\n}\n\nexport default \"0.1.182\";\n","import {\n Token as TokenDTO,\n Resolution,\n TokenCandle as SdkTokenCandle,\n TokenStats as SdkTokenStats,\n PageResponseTokenHolder,\n TokenMarketData as SdkTokenMarketData,\n TokenField,\n RangeFilterCondition,\n SearchSortBy,\n TokenPage as ChainStreamTokenPage,\n SwapRouteResponse,\n SwapRouteInput,\n SwapRouteInputSwapMode,\n SendTxInput,\n SendTxResponse,\n WalletNetWorthPage,\n PageResponseTradeDetail,\n DexPool,\n ChainSymbol,\n TokenCreator as SdkTokenCreator,\n WsNewToken,\n WsTokenMetadata,\n WsCandle,\n WsTokenStat,\n WsTradeActivity,\n WsTokenHolder as WsTokenHolderDTO,\n WsTokenSupply,\n WsTokenLiquidity,\n WsTokenMaxLiquidity,\n WsTokenTotalLiquidity,\n WsTokenBondingCurve,\n WsMetricType,\n WalletPnlSummary,\n PnlDetailsResult,\n NetWorthByTokensResult,\n} from \"@chainstream-io/sdk\";\nimport {\n API,\n Chain,\n Token,\n TokenCandle,\n TokenCreator,\n TokenHolder,\n TokenLiquidity,\n TokenMarketData,\n TokenResolution,\n TokenSecurity,\n TokenStats,\n TokenStatsByResolution,\n Activity,\n ActivityType,\n Trade,\n Portfolio,\n PortfolioPnl,\n WalletPnl,\n WalletPortfolioPnls,\n WalletPortfolios,\n} from \"@liberfi.io/types\";\nimport { SafeBigNumber, SOLANA_TOKENS } from \"@liberfi.io/utils\";\n\nfunction nullToUndefined<T>(value: T | null | undefined): T | undefined {\n return value ?? undefined;\n}\n\nexport function toChainDTO(chain: Chain): ChainSymbol {\n switch (chain) {\n case Chain.ETHEREUM:\n return ChainSymbol.eth;\n case Chain.BINANCE:\n return ChainSymbol.bsc;\n case Chain.SOLANA:\n return ChainSymbol.sol;\n }\n throw new Error(`Unsupported chain: ${chain}`);\n}\n\nexport function toResolutionDTO(resolution: TokenResolution): Resolution {\n switch (resolution) {\n case \"1s\":\n return Resolution[\"1s\"];\n case \"15s\":\n return Resolution[\"15s\"];\n case \"30s\":\n return Resolution[\"30s\"];\n case \"1m\":\n return Resolution[\"1m\"];\n case \"5m\":\n return Resolution[\"5m\"];\n case \"15m\":\n return Resolution[\"15m\"];\n case \"30m\":\n case \"1h\":\n return Resolution[\"1h\"];\n case \"4h\":\n return Resolution[\"4h\"];\n case \"12h\":\n return Resolution[\"12h\"];\n case \"24h\":\n return Resolution[\"1d\"];\n }\n}\n\nexport function toSortDirectionDTO(direction: \"asc\" | \"desc\"): string {\n return direction;\n}\n\nexport function toSearchFieldDTO(field: API.TokenFieldOption): string {\n switch (field) {\n case \"marketCap\":\n return SearchSortBy.marketCapInUsd;\n case \"tvl\":\n return SearchSortBy.liquidityInUsd;\n case \"price\":\n return SearchSortBy.priceInUsd;\n case \"holders\":\n return SearchSortBy.holderCount;\n case \"volumes24h\":\n return SearchSortBy.h24VolumeInUsd;\n case \"trades24h\":\n return SearchSortBy.h24Transactions;\n case \"createdAt\":\n return SearchSortBy.tokenCreatedAt;\n }\n throw new Error(`Unsupported search field: ${field}`);\n}\n\nexport function toFieldDTO(field: API.TokenFieldOption): string {\n switch (field) {\n case \"price\":\n return TokenField.marketDatapriceInUsd;\n case \"priceChange1m\":\n return TokenField.statspriceChangeRatioInUsd1m;\n case \"priceChange5m\":\n return TokenField.statspriceChangeRatioInUsd5m;\n case \"priceChange1h\":\n return TokenField.statspriceChangeRatioInUsd1h;\n case \"priceChange4h\":\n return TokenField.statspriceChangeRatioInUsd4h;\n case \"priceChange24h\":\n return TokenField.statspriceChangeRatioInUsd24h;\n case \"marketCap\":\n return TokenField.marketDatamarketCapInUsd;\n case \"tvl\":\n return TokenField.marketDatamaxPoolTvlInUsd;\n case \"top10Holdings\":\n return TokenField.marketDatatop10TotalHoldings;\n case \"top10Ratio\":\n return TokenField.marketDatatop10HoldingsRatio;\n case \"top100Holdings\":\n return TokenField.marketDatatop100TotalHoldings;\n case \"top100Ratio\":\n return TokenField.marketDatatop100HoldingsRatio;\n case \"holders\":\n return TokenField.marketDataholders;\n case \"creatorsHoldings\":\n return TokenField.marketDatacreatorHoldings;\n case \"creatorsRatio\":\n return TokenField.marketDatacreatorHoldingsRatio;\n case \"buys1m\":\n return TokenField.statsbuys1m;\n case \"buys5m\":\n return TokenField.statsbuys5m;\n case \"buys15m\":\n return TokenField.statsbuys15m;\n case \"buys30m\":\n return TokenField.statsbuys30m;\n case \"buys1h\":\n return TokenField.statsbuys1h;\n case \"buys4h\":\n return TokenField.statsbuys4h;\n case \"buys24h\":\n return TokenField.statsbuys24h;\n case \"sells1m\":\n return TokenField.statssells1m;\n case \"sells5m\":\n return TokenField.statssells5m;\n case \"sells15m\":\n return TokenField.statssells15m;\n case \"sells30m\":\n return TokenField.statssells30m;\n case \"sells1h\":\n return TokenField.statssells1h;\n case \"sells4h\":\n return TokenField.statssells4h;\n case \"sells24h\":\n return TokenField.statssells24h;\n case \"trades1m\":\n return TokenField.statstrades1m;\n case \"trades5m\":\n return TokenField.statstrades5m;\n case \"trades1h\":\n return TokenField.statstrades1h;\n case \"trades4h\":\n return TokenField.statstrades4h;\n case \"trades24h\":\n return TokenField.statstrades24h;\n case \"traders1m\":\n return TokenField.statstraders1m;\n case \"traders5m\":\n return TokenField.statstraders5m;\n case \"traders1h\":\n return TokenField.statstraders1h;\n case \"traders4h\":\n return TokenField.statstraders4h;\n case \"traders24h\":\n return TokenField.statstraders24h;\n case \"volumes1m\":\n return TokenField.statsvolumesInUsd1m;\n case \"volumes5m\":\n return TokenField.statsvolumesInUsd5m;\n case \"volumes1h\":\n return TokenField.statsvolumesInUsd1h;\n case \"volumes4h\":\n return TokenField.statsvolumesInUsd4h;\n case \"volumes24h\":\n return TokenField.statsvolumesInUsd24h;\n case \"createdAt\":\n return TokenField.tokenCreatedAt;\n }\n throw new Error(`Unsupported sortBy: ${field}`);\n}\n\nexport function toRangeFiltersDTO(\n filters: Array<API.TokenFilterOption>,\n): Array<RangeFilterCondition> {\n return filters\n .filter(\n (it) => [\"gt\", \"gte\", \"lt\", \"lte\", \"between\"].indexOf(it.operator) >= 0,\n )\n .map((it) => {\n const cond = { field: toFieldDTO(it.field) } as RangeFilterCondition;\n if ([\"gt\", \"gte\", \"between\"].indexOf(it.operator) >= 0) {\n cond.min =\n typeof it.value === \"number\"\n ? new SafeBigNumber(it.value).toString()\n : (it.value as string);\n }\n if ([\"lt\", \"lte\", \"between\"].indexOf(it.operator) >= 0) {\n cond.max =\n typeof it.value === \"number\"\n ? new SafeBigNumber(it.value).toString()\n : (it.value as string);\n }\n return cond;\n });\n}\n\nexport function fromChainDTO(chain: string): Chain {\n switch (chain) {\n case ChainSymbol.eth:\n return Chain.ETHEREUM;\n case ChainSymbol.bsc:\n return Chain.BINANCE;\n case ChainSymbol.sol:\n case \"solana\":\n return Chain.SOLANA;\n }\n throw new Error(`Unsupported chain: ${chain}`);\n}\n\nexport function fromTokenCreatorDTO(input: SdkTokenCreator): TokenCreator {\n return {\n address: input.address ?? undefined,\n share: input.share ?? undefined,\n isVerified: input.isVerified ?? undefined,\n };\n}\n\nexport function fromTokenDTO(input: TokenDTO): Token {\n return {\n chain: fromChainDTO(input.chain),\n name: input.name,\n symbol: input.symbol,\n address: input.address,\n decimals: input.decimals,\n image: input.imageUrl ?? undefined,\n description: input.description ?? undefined,\n creators: input.tokenCreators?.map(fromTokenCreatorDTO),\n launchedFrom: {\n programAddress: input.extra?.launchFromProgramAddress ?? undefined,\n protocolFamily: input.extra?.launchFromProtocolFamily ?? undefined,\n },\n migrateProgress: input.marketData?.completionRatio\n ? new SafeBigNumber(input.marketData.completionRatio)\n .shiftedBy(2)\n .toString()\n : undefined,\n migratedTo: {\n programAddress: input.extra?.migratedToProgramAddress ?? undefined,\n protocolFamily: input.extra?.migratedToProtocolFamily ?? undefined,\n poolAddress: input.extra?.migratedToPoolAddress ?? undefined,\n migratedAt: input.extra?.migratedAt\n ? new Date(input.extra.migratedAt)\n : undefined,\n },\n socialMedias: input.socialMedias\n ? Object.fromEntries(\n Object.entries(input.socialMedias)\n .filter(([, v]) => v != null)\n .map(([k, v]) => [k, v as string]),\n )\n : undefined,\n stats: input.stats ? fromTokenStatsDTO(input.stats) : undefined,\n marketData: input.marketData\n ? fromTokenMarketDataDTO(input.marketData)\n : undefined,\n createdAt: input.tokenCreatedAt\n ? new Date(input.tokenCreatedAt)\n : undefined,\n };\n}\n\nexport function fromTokenStatsDTO(input: SdkTokenStats): TokenStats {\n return {\n [\"1m\"]: parseTokenStatsByResolution(input, \"1m\"),\n [\"5m\"]: parseTokenStatsByResolution(input, \"5m\"),\n [\"15m\"]: parseTokenStatsByResolution(input, \"15m\"),\n [\"30m\"]: parseTokenStatsByResolution(input, \"30m\"),\n [\"1h\"]: parseTokenStatsByResolution(input, \"1h\"),\n [\"4h\"]: parseTokenStatsByResolution(input, \"4h\"),\n [\"24h\"]: parseTokenStatsByResolution(input, \"24h\"),\n };\n}\n\nfunction toOptionalNumber(value: string | undefined): number | undefined {\n return value === undefined ? undefined : parseInt(value);\n}\n\nfunction parseTokenStatsByResolution(\n input: SdkTokenStats,\n resolution: TokenResolution,\n): TokenStatsByResolution {\n const period = input.periods?.[resolution];\n if (!period) {\n return {};\n }\n\n return {\n buys: toOptionalNumber(period.buys),\n sells: toOptionalNumber(period.sells),\n trades: toOptionalNumber(period.trades),\n buyers: toOptionalNumber(period.buyers),\n sellers: toOptionalNumber(period.sellers),\n traders: toOptionalNumber(period.traders),\n buyVolumes: period.buyVolume,\n sellVolumes: period.sellVolume,\n volumes: period.totalVolumeInNative,\n buyVolumesInUsd: period.buyVolumeInUsd,\n sellVolumesInUsd: period.sellVolumeInUsd,\n volumesInUsd: period.totalVolumeInUsd,\n openPriceInUsd: period.openInUsd,\n closePriceInUsd: period.closeInUsd,\n highPriceInUsd: period.highInUsd,\n lowPriceInUsd: period.lowInUsd,\n priceInUsd: period.closeInUsd,\n priceChange: period.priceChangeRatioInUsd,\n };\n}\n\nexport function fromTokenLiquidityDTO(input: DexPool): TokenLiquidity {\n return {\n poolAddress: input.poolAddress,\n programAddress: input.programAddress ?? undefined,\n protocolFamily: input.protocolFamily ?? undefined,\n tvl: input.tvlInSol ?? undefined,\n tvlInUsd: input.tvlInUsd ?? undefined,\n };\n}\n\nexport function fromTokenMarketDataDTO(\n input: SdkTokenMarketData,\n): TokenMarketData {\n return {\n totalSupply: input.totalSupply ?? undefined,\n marketCap: input.marketCapInSol ?? undefined,\n marketCapInUsd: input.marketCapInUsd ?? undefined,\n price: input.priceInSol ?? undefined,\n priceInUsd: input.priceInUsd ?? undefined,\n tvl: input.totalTvlInSol ?? undefined,\n tvlInUsd: input.totalTvlInUsd ?? undefined,\n holders: input.holders ? parseInt(input.holders) : undefined,\n top10Holdings: input.top10TotalHoldings ?? undefined,\n top10HoldingsRatio: input.top10HoldingsRatio ?? undefined,\n top50Holdings: input.top50TotalHoldings ?? undefined,\n top50HoldingsRatio: input.top50HoldingsRatio ?? undefined,\n top100Holdings: input.top100TotalHoldings ?? undefined,\n top100HoldingsRatio: input.top100HoldingsRatio ?? undefined,\n bluechipHolders: input.bluechipTotalHolders\n ? parseInt(input.bluechipTotalHolders)\n : undefined,\n bluechipHoldings: input.bluechipTotalHoldings ?? undefined,\n bluechipHoldingsRatio: input.bluechipHoldingsRatio ?? undefined,\n kolHolders: input.kolTotalHolders\n ? parseInt(input.kolTotalHolders)\n : undefined,\n kolHoldings: input.kolTotalHoldings ?? undefined,\n kolHoldingsRatio: input.kolHoldingsRatio ?? undefined,\n sniperHolders: input.sniperTotalHolders\n ? parseInt(input.sniperTotalHolders)\n : undefined,\n sniperHoldings: input.sniperTotalHoldings ?? undefined,\n sniperHoldingsRatio: input.sniperHoldingsRatio ?? undefined,\n proHolders: input.proTotalHolders\n ? parseInt(input.proTotalHolders)\n : undefined,\n proHoldings: input.proTotalHoldings ?? undefined,\n proHoldingsRatio: input.proHoldingsRatio ?? undefined,\n insiderHolders: input.insiderTotalHolders\n ? parseInt(input.insiderTotalHolders)\n : undefined,\n insiderHoldings: input.insiderTotalHoldings ?? undefined,\n insiderHoldingsRatio: input.insiderHoldingsRatio ?? undefined,\n sandwichHolders: input.sandwishTotalHolders\n ? parseInt(input.sandwishTotalHolders)\n : undefined,\n sandwichHoldings: input.sandwishTotalHoldings ?? undefined,\n sandwichHoldingsRatio: input.sandwishHoldingsRatio ?? undefined,\n freshHolders: input.freshTotalHolders\n ? parseInt(input.freshTotalHolders)\n : undefined,\n freshHoldings: input.freshTotalHoldings ?? undefined,\n freshHoldingsRatio: input.freshHoldingsRatio ?? undefined,\n bundleHolders: input.bundleTotalHolders\n ? parseInt(input.bundleTotalHolders)\n : undefined,\n bundleHoldings: input.bundleTotalHoldings ?? undefined,\n bundleHoldingsRatio: input.bundleHoldingsRatio ?? undefined,\n devHolders: input.devTotalHolders\n ? parseInt(input.devTotalHolders)\n : undefined,\n devHoldings: input.devTotalHoldings ?? undefined,\n devHoldingsRatio: input.devHoldingsRatio ?? undefined,\n };\n}\n\nexport function fromTokenCandle(\n input: SdkTokenCandle,\n resolution: TokenResolution,\n): TokenCandle {\n return {\n open: input.open,\n close: input.close,\n high: input.high,\n low: input.low,\n volume: input.volume,\n resolution,\n timestamp: new Date(input.timestamp),\n };\n}\n\nfunction fromResolutionDTO(resolution: string): TokenResolution {\n if (resolution === \"1d\") return \"24h\";\n return resolution as TokenResolution;\n}\n\nexport function fromTokenSecurity(\n input: Record<string, unknown>,\n): TokenSecurity {\n return {\n hasTransferFee: input.hasTransferFee as boolean | undefined,\n isTransferFeeUpgradable: input.isTransferFeeUpgradable as\n | boolean\n | undefined,\n isTransferable: input.isTransferable as boolean | undefined,\n isFreezable: input.isFreezable as boolean | undefined,\n isClosable: input.isClosable as boolean | undefined,\n };\n}\nconst solanaChains: ReadonlySet<Chain> = new Set([\n Chain.SOLANA,\n Chain.SOLANA_TESTNET,\n Chain.SOLANA_DEVNET,\n]);\n\n/** EVM chains use this address to denote the native token (ETH, BNB, etc.). */\nconst EVM_NATIVE_ADDRESS = \"0x0000000000000000000000000000000000000000\";\n\n/**\n * KyberSwap API expects this sentinel for native token (ETH/BNB/etc.),\n * not the zero address. See KyberSwap docs / 400 on route when using 0x0.\n * Exported for use when building route request bodies outside Client.swapRoute.\n */\nexport const KYBERSWAP_NATIVE_SENTINEL =\n \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\";\n\n/**\n * Jupiter does not accept Solana's native SOL address (System Program);\n * it requires the wrapped SOL (WSOL) mint instead.\n */\nfunction toJupiterMint(address: string): string {\n return address === SOLANA_TOKENS.native.address\n ? SOLANA_TOKENS.wrapped.address\n : address;\n}\n\n/**\n * KyberSwap does not accept EVM zero address (0x0) for native token;\n * it requires the native sentinel address 0xEee...\n */\nfunction toKyberSwapMint(address: string): string {\n return address.toLowerCase() === EVM_NATIVE_ADDRESS.toLowerCase()\n ? KYBERSWAP_NATIVE_SENTINEL\n : address;\n}\n\n/**\n * Resolves effective DEX from params: explicit dex or inferred from chain.\n * Mint conversion (native → sentinel) is chosen by this DEX, not by chain alone.\n */\nfunction effectiveDex(params: API.SwapParams): \"jupiter\" | \"kyberswap\" {\n if (params.dex) return params.dex;\n return solanaChains.has(params.chain) ? \"jupiter\" : \"kyberswap\";\n}\n\nfunction toMintForDex(dex: \"jupiter\" | \"kyberswap\", address: string): string {\n return dex === \"jupiter\"\n ? toJupiterMint(address)\n : dex === \"kyberswap\"\n ? toKyberSwapMint(address)\n : address;\n}\n\n/**\n * Returns the token address to send in route API for the given DEX.\n * Use this when building route request bodies manually (e.g. in a BFF or custom fetch).\n * For KyberSwap, EVM native (0x0) is converted to KYBERSWAP_NATIVE_SENTINEL.\n */\nexport function toMintForRoute(\n dex: \"jupiter\" | \"kyberswap\",\n address: string,\n): string {\n return toMintForDex(dex, address);\n}\n\nexport function toSwapRouteInput(params: API.SwapParams): SwapRouteInput {\n const dex = effectiveDex(params);\n const inputMint = toMintForDex(dex, params.input);\n const outputMint = toMintForDex(dex, params.output);\n return {\n dex: dex as SwapRouteInput[\"dex\"],\n userAddress: params.userAddress,\n amount: params.amount,\n swapMode: (params.mode === API.SwapMode.EXACT_IN\n ? SwapRouteInputSwapMode.ExactIn\n : SwapRouteInputSwapMode.ExactOut) as SwapRouteInput[\"swapMode\"],\n slippage: params.slippage ?? 1,\n inputMint,\n outputMint,\n priorityFee: params.priorityFee,\n ...(params.tipFee && { tipFee: params.tipFee }),\n ...(params.isAntiMev != null && { isAntiMev: params.isAntiMev }),\n ...(params.permit && { permit: params.permit }),\n ...(params.deadline != null && { deadline: params.deadline }),\n };\n}\n\nexport function toSendTxInput(params: API.SendTxParams): SendTxInput {\n return {\n signedTx: params.serializedTx,\n };\n}\n\nexport function fromTokenHolderPage(\n input: PageResponseTokenHolder,\n): API.CursorList<TokenHolder> {\n return {\n startCursor: nullToUndefined(input.startCursor),\n endCursor: nullToUndefined(input.endCursor),\n hasPrev: input.hasPrev,\n hasNext: input.hasNext,\n data: input.data.map((holder) => ({\n address: holder.walletAddress,\n amount: holder.amount,\n amountInUsd: holder.amountInUsd,\n ratio: holder.percentage,\n })),\n };\n}\n\nexport function fromTokenPage(\n input: ChainStreamTokenPage,\n): API.SearchTokenCursorList {\n return {\n startCursor: nullToUndefined(input.startCursor),\n endCursor: nullToUndefined(input.endCursor),\n hasPrev: input.hasPrev,\n hasNext: input.hasNext,\n data: input.data.map(fromTokenDTO),\n extra: nullToUndefined(input.countsByProtocols),\n };\n}\n\nexport function fromSwapRoute(input: SwapRouteResponse): API.SwapRoute {\n return {\n serializedTx: input.serializedTx,\n plans: [],\n extra: input.routeInfo,\n };\n}\n\nexport function fromSendTxResult(input: SendTxResponse): API.SendTxResult {\n return {\n txHash: input.signature,\n extra: { jobId: input.jobId, elapsedTime: input.elapsedTime },\n };\n}\n\nexport function fromWalletPortfolios(\n chain: Chain,\n input: WalletNetWorthPage,\n): WalletPortfolios {\n const portfolios: Portfolio[] = (input.data ?? []).map((item) => ({\n chain: fromChainDTO(item.chain),\n address: item.tokenAddress,\n name: item.name,\n symbol: item.symbol,\n image: nullToUndefined(item.logoUri),\n priceInUsd: item.priceInUsd,\n priceInNative: item.priceInNative,\n amount: item.amount,\n amountInUsd: item.valueInUsd,\n amountInNative: item.valueInNative,\n decimals: item.decimals,\n }));\n\n return {\n chain: portfolios[0]?.chain ?? chain,\n address: input.walletAddress,\n balanceInUsd: input.totalValueInUsd,\n balanceInNative: input.totalValueInNative,\n startCursor: nullToUndefined(input.startCursor),\n endCursor: nullToUndefined(input.endCursor),\n hasPrev: input.hasPrev,\n hasNext: input.hasNext,\n portfolios,\n };\n}\n\nexport function fromWalletPnlSummary(\n chain: Chain,\n address: string,\n input: WalletPnlSummary,\n): WalletPnl {\n return {\n chain,\n address,\n tokens: input.tokens ? Number(input.tokens) : undefined,\n buys: input.buys ? Number(input.buys) : undefined,\n sells: input.sells ? Number(input.sells) : undefined,\n totalTrades: input.totalTrades ? Number(input.totalTrades) : undefined,\n wins: input.wins ? Number(input.wins) : undefined,\n losses: input.losses ? Number(input.losses) : undefined,\n winRate: nullToUndefined(input.winRate),\n buyAmountInUsd: nullToUndefined(input.buyAmountInUsd),\n sellAmountInUsd: nullToUndefined(input.sellAmountInUsd),\n totalCostInUsd: nullToUndefined(input.totalCostInUsd),\n realizedProfitInUsd: nullToUndefined(input.realizedProfitInUsd),\n realizedProfitRatio: nullToUndefined(input.realizedProfitRatio),\n unrealizedProfitInUsd: nullToUndefined(input.unrealizedProfitInUsd),\n unrealizedProfitRatio: nullToUndefined(input.unrealizedProfitRatio),\n totalProfitInUsd: nullToUndefined(input.totalProfitInUsd),\n totalProfitRatio: nullToUndefined(input.totalProfitRatio),\n avgProfitPerTradeInUsd: nullToUndefined(input.avgProfitPerTradeInUsd),\n };\n}\n\nexport function fromPnlDetailsPage(\n chain: Chain,\n address: string,\n input: PnlDetailsResult,\n): WalletPortfolioPnls {\n const portfolios: PortfolioPnl[] = input.data.map((item) => ({\n chain,\n address: item.tokenAddress,\n name: item.name ?? \"\",\n symbol: item.symbol ?? \"\",\n image: nullToUndefined(item.logoUri),\n amount: item.balance,\n amountInUsd: item.currentValue,\n priceInUsd: item.priceInUsd,\n decimals: item.decimals ?? 0,\n totalTrades: Number(item.totalTrades),\n buys: Number(item.buys),\n buyVolumes: item.buyAmount,\n buyVolumesInUsd: item.buyAmountInUsd,\n buyAvgPriceInUsd: item.avgBuyPriceInUsd,\n sells: Number(item.sells),\n sellVolumes: item.sellAmount,\n sellVolumesInUsd: item.sellAmountInUsd,\n sellAvgPriceInUsd: item.avgSellPriceInUsd,\n realizedProfitInUsd: item.realizedProfitInUsd,\n realizedProfitRatio: item.realizedProfitRatio,\n unrealizedProfitInUsd: item.unrealizedProfitInUsd,\n unrealizedProfitRatio: item.unrealizedProfitRatio,\n totalProfitInUsd: item.totalProfitInUsd,\n totalProfitRatio: item.totalProfitRatio,\n }));\n\n return {\n chain,\n address,\n tokens: Number(input.summary.tokens),\n buys: Number(input.summary.buys),\n sells: Number(input.summary.sells),\n totalTrades: Number(input.summary.totalTrades),\n wins: Number(input.summary.wins),\n losses: Number(input.summary.losses),\n winRate: nullToUndefined(input.summary.winRate),\n buyAmountInUsd: nullToUndefined(input.summary.buyAmountInUsd),\n sellAmountInUsd: nullToUndefined(input.summary.sellAmountInUsd),\n totalCostInUsd: input.summary.totalCostInUsd,\n realizedProfitInUsd: nullToUndefined(input.summary.realizedProfitInUsd),\n realizedProfitRatio: nullToUndefined(input.summary.realizedProfitRatio),\n unrealizedProfitInUsd: nullToUndefined(input.summary.unrealizedProfitInUsd),\n totalProfitInUsd: nullToUndefined(input.summary.totalProfitInUsd),\n startCursor: nullToUndefined(input.startCursor),\n endCursor: nullToUndefined(input.endCursor),\n hasPrev: input.hasPrev,\n hasNext: input.hasNext,\n portfolios,\n };\n}\n\nexport function fromWalletNetWorthByTokens(\n chain: Chain,\n input: NetWorthByTokensResult,\n): Portfolio[] {\n return (input.data ?? []).map((item) => ({\n chain: fromChainDTO(item.chain),\n address: item.tokenAddress,\n name: item.name,\n symbol: item.symbol,\n image: nullToUndefined(item.logoUri),\n priceInUsd: item.priceInUsd,\n priceInNative: item.priceInNative,\n amount: item.amount,\n amountInUsd: item.valueInUsd,\n amountInNative: item.valueInNative,\n decimals: item.decimals,\n }));\n}\n\nexport function fromPnlDetailItems(\n chain: Chain,\n input: PnlDetailsResult,\n): PortfolioPnl[] {\n return input.data.map((item) => ({\n chain,\n address: item.tokenAddress,\n name: item.name ?? \"\",\n symbol: item.symbol ?? \"\",\n image: nullToUndefined(item.logoUri),\n amount: item.balance,\n amountInUsd: item.currentValue,\n priceInUsd: item.priceInUsd,\n decimals: item.decimals ?? 0,\n totalTrades: Number(item.totalTrades),\n buys: Number(item.buys),\n buyVolumes: item.buyAmount,\n buyVolumesInUsd: item.buyAmountInUsd,\n buyAvgPriceInUsd: item.avgBuyPriceInUsd,\n sells: Number(item.sells),\n sellVolumes: item.sellAmount,\n sellVolumesInUsd: item.sellAmountInUsd,\n sellAvgPriceInUsd: item.avgSellPriceInUsd,\n realizedProfitInUsd: item.realizedProfitInUsd,\n realizedProfitRatio: item.realizedProfitRatio,\n unrealizedProfitInUsd: item.unrealizedProfitInUsd,\n unrealizedProfitRatio: item.unrealizedProfitRatio,\n totalProfitInUsd: item.totalProfitInUsd,\n totalProfitRatio: item.totalProfitRatio,\n }));\n}\n\nexport function fromTradePage(\n input: PageResponseTradeDetail,\n): API.CursorList<Trade> {\n return {\n startCursor: nullToUndefined(input.startCursor),\n endCursor: nullToUndefined(input.endCursor),\n hasPrev: input.hasPrev,\n hasNext: input.hasNext,\n data: input.data.map(fromTradeDetailDTO),\n };\n}\n\nfunction fromTradeDetailDTO(\n input: PageResponseTradeDetail[\"data\"][number],\n): Trade {\n const isBuy = input.type.toLowerCase() === \"buy\";\n return {\n chain: fromChainDTO(input.chain),\n walletAddress: input.accountOwnerAddress,\n txHash: input.transactionSignature,\n type: isBuy ? \"buy\" : \"sell\",\n from: {\n address: isBuy ? input.sideTokenAddress : input.tokenAddress,\n symbol: isBuy ? input.sideTokenSymbol : input.tokenSymbol,\n name: isBuy ? input.sideTokenName : input.tokenName,\n image: nullToUndefined(\n isBuy ? input.sideTokenImageUrl : input.tokenImageUrl,\n ),\n amount: isBuy ? input.sideTokenAmount : input.tokenAmount,\n amountInUsd: isBuy ? input.sideTokenAmountInUsd : input.tokenAmountInUsd,\n priceInUsd: isBuy ? input.sideTokenPriceInUsd : input.tokenPriceInUsd,\n },\n to: {\n address: isBuy ? input.tokenAddress : input.sideTokenAddress,\n symbol: isBuy ? input.tokenSymbol : input.sideTokenSymbol,\n name: isBuy ? input.tokenName : input.sideTokenName,\n image: nullToUndefined(\n isBuy ? input.tokenImageUrl : input.sideTokenImageUrl,\n ),\n amount: isBuy ? input.tokenAmount : input.sideTokenAmount,\n amountInUsd: isBuy ? input.tokenAmountInUsd : input.sideTokenAmountInUsd,\n priceInUsd: isBuy ? input.tokenPriceInUsd : input.sideTokenPriceInUsd,\n },\n dex: {\n programAddress: nullToUndefined(input.dexProgramAddress),\n protocolFamily: nullToUndefined(input.dexProtocolFamily),\n image: nullToUndefined(input.dexImage),\n },\n poolAddress: nullToUndefined(input.poolAddress),\n status: (input.status as Trade[\"status\"]) ?? \"success\",\n time: new Date(input.blockTimestamp * 1000),\n };\n}\n\nexport function fromActivityPage(\n input: PageResponseTradeDetail,\n): API.CursorList<Activity> {\n return {\n startCursor: nullToUndefined(input.startCursor),\n endCursor: nullToUndefined(input.endCursor),\n hasPrev: input.hasPrev,\n hasNext: input.hasNext,\n data: input.data.map(fromActivityDetailDTO),\n };\n}\n\nfunction fromActivityDetailDTO(\n input: PageResponseTradeDetail[\"data\"][number],\n): Activity {\n const type = input.type.toLowerCase().replace(/ /g, \"_\") as ActivityType;\n const isBuy = type === \"buy\";\n return {\n chain: fromChainDTO(input.chain),\n walletAddress: input.accountOwnerAddress,\n txHash: input.transactionSignature,\n type,\n from: {\n address: isBuy ? input.sideTokenAddress : input.tokenAddress,\n symbol: isBuy ? input.sideTokenSymbol : input.tokenSymbol,\n name: isBuy ? input.sideTokenName : input.tokenName,\n image: nullToUndefined(\n isBuy ? input.sideTokenImageUrl : input.tokenImageUrl,\n ),\n amount: isBuy ? input.sideTokenAmount : input.tokenAmount,\n amountInUsd: isBuy ? input.sideTokenAmountInUsd : input.tokenAmountInUsd,\n priceInUsd: isBuy ? input.sideTokenPriceInUsd : input.tokenPriceInUsd,\n },\n to: {\n address: isBuy ? input.tokenAddress : input.sideTokenAddress,\n symbol: isBuy ? input.tokenSymbol : input.sideTokenSymbol,\n name: isBuy ? input.tokenName : input.sideTokenName,\n image: nullToUndefined(\n isBuy ? input.tokenImageUrl : input.sideTokenImageUrl,\n ),\n amount: isBuy ? input.tokenAmount : input.sideTokenAmount,\n amountInUsd: isBuy ? input.tokenAmountInUsd : input.sideTokenAmountInUsd,\n priceInUsd: isBuy ? input.tokenPriceInUsd : input.sideTokenPriceInUsd,\n },\n dex: {\n programAddress: nullToUndefined(input.dexProgramAddress),\n protocolFamily: nullToUndefined(input.dexProtocolFamily),\n image: nullToUndefined(input.dexImage),\n },\n poolAddress: nullToUndefined(input.poolAddress),\n status: (input.status as Activity[\"status\"]) ?? \"success\",\n time: new Date(input.blockTimestamp * 1000),\n };\n}\n\nexport function fromTokenSubscribed(\n chain: Chain,\n input: WsNewToken,\n): API.TokenSubscribed {\n return {\n chain,\n address: input.tokenAddress,\n name: input.name,\n symbol: input.symbol,\n decimals: input.decimals,\n createdAt: input.createdAtMs ? new Date(input.createdAtMs) : undefined,\n launchedFrom: input.launchFrom\n ? {\n programAddress: input.launchFrom.programAddress,\n protocolFamily: input.launchFrom.protocolFamily,\n }\n : undefined,\n };\n}\n\nexport function fromTokenMetadataSubscribed(\n chain: Chain,\n input: WsTokenMetadata,\n): API.TokenSubscribed {\n return {\n chain,\n address: input.tokenAddress,\n name: input.name,\n symbol: input.symbol,\n decimals: input.decimals,\n image: input.imageUrl,\n description: input.description,\n socialMedias: input.socialMedia ? { ...input.socialMedia } : undefined,\n createdAt: input.createdAtMs ? new Date(input.createdAtMs) : undefined,\n launchedFrom: input.launchFrom\n ? {\n programAddress: input.launchFrom.programAddress,\n protocolFamily: input.launchFrom.protocolFamily,\n }\n : undefined,\n migratedTo: input.migratedTo\n ? {\n programAddress: input.migratedTo.programAddress,\n protocolFamily: input.migratedTo.protocolFamily,\n }\n : undefined,\n };\n}\n\n// ====================================\n// WebSocket data conversion functions\n// ====================================\n\nexport function fromWsCandle(input: WsCandle): TokenCandle {\n return {\n open: input.open,\n close: input.close,\n high: input.high,\n low: input.low,\n volume: input.volume,\n resolution: fromResolutionDTO(input.resolution),\n timestamp: new Date(input.time),\n };\n}\n\nexport function fromWsTokenStats(input: WsTokenStat): TokenStats {\n const timeframes = [\"1m\", \"5m\", \"15m\", \"30m\", \"1h\", \"4h\", \"24h\"] as const;\n const record = input as unknown as Record<\n string,\n number | string | undefined\n >;\n const result: TokenStats = {};\n\n for (const tf of timeframes) {\n const buys = record[`buys${tf}`] as number | undefined;\n const sells = record[`sells${tf}`] as number | undefined;\n const buyers = record[`buyers${tf}`] as number | undefined;\n const sellers = record[`sellers${tf}`] as number | undefined;\n const buyVolumeInUsd = record[`buyVolumeInUsd${tf}`] as string | undefined;\n const sellVolumeInUsd = record[`sellVolumeInUsd${tf}`] as\n | string\n | undefined;\n const trades = record[`trades${tf}`] as number | undefined;\n const price = record[`price${tf}`] as string | undefined;\n const openInUsd = record[`openInUsd${tf}`] as string | undefined;\n const closeInUsd = record[`closeInUsd${tf}`] as string | undefined;\n\n const hasData =\n buys !== undefined ||\n sells !== undefined ||\n trades !== undefined ||\n price !== undefined;\n\n if (!hasData) continue;\n\n const totalTrades =\n trades ??\n (buys !== undefined && sells !== undefined ? buys + sells : undefined);\n const totalTraders =\n buyers !== undefined && sellers !== undefined\n ? buyers + sellers\n : undefined;\n const totalVolumesInUsd =\n buyVolumeInUsd !== undefined && sellVolumeInUsd !== undefined\n ? new SafeBigNumber(buyVolumeInUsd).plus(sellVolumeInUsd).toString()\n : undefined;\n const priceChange =\n openInUsd && closeInUsd && new SafeBigNumber(openInUsd).gt(0)\n ? new SafeBigNumber(closeInUsd)\n .minus(openInUsd)\n .div(openInUsd)\n .toString()\n : undefined;\n\n result[tf] = {\n buys,\n sells,\n trades: totalTrades,\n buyers,\n sellers,\n traders: totalTraders,\n buyVolumesInUsd: buyVolumeInUsd,\n sellVolumesInUsd: sellVolumeInUsd,\n volumesInUsd: totalVolumesInUsd,\n openPriceInUsd: openInUsd,\n closePriceInUsd: closeInUsd,\n priceInUsd: price ?? closeInUsd,\n priceChange,\n };\n }\n\n return result;\n}\n\nexport function fromWsTokenMarketDataFromStats(\n input: WsTokenStat,\n): TokenMarketData {\n return {\n priceInUsd: input.price,\n };\n}\n\nexport function fromWsTokenDataSubscribed(\n chain: Chain,\n input: WsTokenStat,\n): API.TokenSubscribed {\n return {\n chain,\n address: input.address,\n stats: fromWsTokenStats(input),\n marketData: fromWsTokenMarketDataFromStats(input),\n };\n}\n\nexport function fromWsTokenSupplyToSubscribed(\n chain: Chain,\n address: string,\n input: WsTokenSupply,\n): API.TokenSubscribed {\n return {\n chain,\n address,\n marketData: {\n totalSupply: input.supply,\n marketCapInUsd: input.marketCapInUsd,\n },\n };\n}\n\nexport function fromWsTokenHolderToSubscribed(\n chain: Chain,\n address: string,\n input: WsTokenHolderDTO,\n): API.TokenSubscribed {\n return {\n chain,\n address,\n marketData: fromWsTokenMarketDataFromHolder(input),\n };\n}\n\nexport function fromWsTokenLiquidityToSubscribed(\n chain: Chain,\n address: string,\n input: WsTokenLiquidity,\n): API.TokenSubscribed {\n if (input.metricType === WsMetricType.LIQUIDITY_IN_USD) {\n return {\n chain,\n address,\n marketData: { tvlInUsd: input.value },\n };\n }\n if (input.metricType === WsMetricType.MIGRATED_RATIO) {\n return {\n chain,\n address,\n migrateProgress: new SafeBigNumber(input.value).shiftedBy(2).toString(),\n };\n }\n return { chain, address };\n}\n\nexport function fromWsTokenBondingCurveToSubscribed(\n chain: Chain,\n input: WsTokenBondingCurve,\n): API.TokenSubscribed {\n return {\n chain,\n address: input.tokenAddress ?? \"\",\n migrateProgress: input.progressRatio\n ? new SafeBigNumber(input.progressRatio).shiftedBy(2).toString()\n : undefined,\n };\n}\n\nexport function fromWsTokenMaxLiquidityToSubscribed(\n chain: Chain,\n address: string,\n input: WsTokenMaxLiquidity,\n): API.TokenSubscribed {\n return {\n chain,\n address,\n liquidities: [\n {\n poolAddress: input.poolAddress,\n tvlInUsd: input.liquidityInUsd,\n tvl: input.liquidityInNative,\n },\n ],\n };\n}\n\nexport function fromWsTokenTotalLiquidityToSubscribed(\n chain: Chain,\n address: string,\n input: WsTokenTotalLiquidity,\n): API.TokenSubscribed {\n return {\n chain,\n address,\n marketData: {\n tvlInUsd: input.liquidityInUsd,\n tvl: input.liquidityInNative,\n },\n };\n}\n\nexport function fromWsTokenMarketDataFromHolder(\n input: WsTokenHolderDTO,\n): Partial<TokenMarketData> {\n return {\n holders: input.holders,\n top10Holdings: input.top10HoldersAmount,\n top10HoldingsRatio: input.top10HoldersRatio,\n top50Holdings: input.top50HoldersAmount,\n top50HoldingsRatio: input.top50HoldersRatio,\n top100Holdings: input.top100HoldersAmount,\n top100HoldingsRatio: input.top100HoldersRatio,\n devHolders:\n input.balanceTagDevHolders === undefined\n ? undefined\n : input.balanceTagDevHolders,\n devHoldings: input.balanceTagDevAmount,\n devHoldingsRatio: input.balanceTagDevRatio,\n sniperHolders:\n input.balanceTagSniperHolders === undefined\n ? undefined\n : input.balanceTagSniperHolders,\n sniperHoldings: input.balanceTagSniperAmount,\n sniperHoldingsRatio: input.balanceTagSniperRatio,\n freshHolders:\n input.balanceTagFreshHolders === undefined\n ? undefined\n : input.balanceTagFreshHolders,\n freshHoldings: input.balanceTagFreshAmount,\n freshHoldingsRatio: input.balanceTagFreshRatio,\n bundleHolders:\n input.balanceTagBundleHolders === undefined\n ? undefined\n : input.balanceTagBundleHolders,\n bundleHoldings: input.balanceTagBundleAmount,\n bundleHoldingsRatio: input.balanceTagBundleRatio,\n sandwichHolders:\n input.balanceTagSandwichHolders === undefined\n ? undefined\n : input.balanceTagSandwichHolders,\n sandwichHoldings: input.balanceTagSandwichAmount,\n sandwichHoldingsRatio: input.balanceTagSandwichRatio,\n };\n}\n\nexport function fromWsTradeActivity(\n chain: Chain,\n input: WsTradeActivity,\n): Trade {\n const isBuy = input.kind.toLowerCase() === \"buy\";\n return {\n chain,\n walletAddress: isBuy ? input.buyWalletAddress : input.sellWalletAddress,\n txHash: input.txHash,\n type: isBuy ? \"buy\" : \"sell\",\n from: {\n address: input.sellTokenAddress,\n symbol: input.sellTokenSymbol,\n name: input.sellTokenName,\n amount: input.sellAmount,\n amountInUsd: input.sellAmountInUsd,\n },\n to: {\n address: input.buyTokenAddress,\n symbol: input.buyTokenSymbol,\n name: input.buyTokenName,\n amount: input.buyAmount,\n amountInUsd: input.buyAmountInUsd,\n },\n status: \"success\",\n time: new Date(input.timestamp),\n };\n}\n\nexport function fromWsActivity(chain: Chain, input: WsTradeActivity): Activity {\n const type = input.kind.toLowerCase().replace(/ /g, \"_\") as ActivityType;\n const isBuy = type === \"buy\";\n return {\n chain,\n walletAddress: isBuy ? input.buyWalletAddress : input.sellWalletAddress,\n txHash: input.txHash,\n type,\n from: {\n address: input.sellTokenAddress,\n symbol: input.sellTokenSymbol,\n name: input.sellTokenName,\n amount: input.sellAmount,\n amountInUsd: input.sellAmountInUsd,\n },\n to: {\n address: input.buyTokenAddress,\n symbol: input.buyTokenSymbol,\n name: input.buyTokenName,\n amount: input.buyAmount,\n amountInUsd: input.buyAmountInUsd,\n },\n status: \"success\",\n time: new Date(input.timestamp),\n };\n}\n","import {\n ChainStreamClient,\n ChainSymbol,\n TokenField,\n SortDirection,\n TradeType,\n ActivityType as SdkActivityType,\n SearchSortBy,\n WsNewToken,\n WsTokenMetadata,\n WsCandle,\n WsTokenStat,\n WsTradeActivity,\n WsWalletBalance,\n WsWalletTokenPnl,\n WsChannelType,\n WsWalletPnl,\n WsTokenSupply,\n WsTokenHolder,\n WsTokenLiquidity,\n WsTokenMaxLiquidity,\n WsTokenTotalLiquidity,\n WsTokenBondingCurve,\n} from \"@chainstream-io/sdk\";\nimport {\n API,\n Chain,\n Token,\n TokenCandle,\n TokenHolder,\n TokenMarketData,\n TokenResolution,\n TokenSecurity,\n TokenStats,\n Activity,\n ActivityType,\n Trade,\n Portfolio,\n PortfolioPnl,\n WalletPnl,\n WalletPortfolioPnls,\n WalletPortfolios,\n} from \"@liberfi.io/types\";\nimport {\n toChainDTO,\n toResolutionDTO,\n fromTokenStatsDTO,\n fromTokenMarketDataDTO,\n toSortDirectionDTO,\n toFieldDTO,\n toRangeFiltersDTO,\n toSearchFieldDTO,\n fromTokenPage,\n fromSwapRoute,\n fromSendTxResult,\n fromWalletPortfolios,\n fromTradePage,\n fromTokenSubscribed,\n fromTokenMetadataSubscribed,\n fromTokenDTO,\n fromTokenCandle,\n fromTokenSecurity,\n fromTokenHolderPage,\n toSendTxInput,\n toSwapRouteInput,\n fromWsCandle,\n fromWsTokenDataSubscribed,\n fromWsTokenSupplyToSubscribed,\n fromWsTokenHolderToSubscribed,\n fromWsTokenLiquidityToSubscribed,\n fromWsTokenMaxLiquidityToSubscribed,\n fromWsTokenTotalLiquidityToSubscribed,\n fromWsTokenBondingCurveToSubscribed,\n fromWsTradeActivity,\n fromActivityPage,\n fromWsActivity,\n fromWalletPnlSummary,\n fromPnlDetailsPage,\n fromWalletNetWorthByTokens,\n fromPnlDetailItems,\n} from \"./utils\";\n\n/** Async or sync token provider for authentication. */\nexport interface ClientTokenProviderFn {\n getToken(): Promise<string> | string;\n}\n\nexport type ClientTokenProvider = ClientTokenProviderFn | string;\n\nexport interface ClientOptions {\n debug?: boolean;\n serverUrl?: string;\n streamUrl?: string;\n autoConnectWebSocket?: boolean;\n /**\n * Temporary fallback: when set, all token balances (native + SPL / ERC-20)\n * are fetched from this URL instead of the upstream wallet API.\n * Expected endpoint: `GET {url}?chain=sol|eth|bnb&address=<wallet>[&tokens=addr1,addr2,...]`\n * Response shape: `{ balances: Array<{ address: string; balance: string; decimals: number }> }`\n * Remove this option once the upstream balance API is fixed.\n */\n nativeBalanceApiUrl?: string;\n}\n\nexport class Client implements API.IClient, API.ISubscribeClient {\n // ChainStream client instance\n private readonly _client: ChainStreamClient;\n\n constructor(\n private readonly accessToken: ClientTokenProvider,\n private readonly options?: ClientOptions,\n ) {\n this._client = new ChainStreamClient(this.accessToken, this.options);\n }\n\n async getToken(chain: Chain, address: string): Promise<Token> {\n const token = await this._client.token.getToken(toChainDTO(chain), address);\n return fromTokenDTO(token);\n }\n\n async getTokens(\n chain: Chain,\n addresses: Array<string>,\n ): Promise<Array<Token>> {\n const tokens = await this._client.token.getTokens(toChainDTO(chain), {\n tokenAddresses: addresses.join(\",\"),\n });\n return tokens.map(fromTokenDTO);\n }\n\n async getTokenCandles(\n chain: Chain,\n address: string,\n resolution: TokenResolution,\n options?: API.GetTokenCandlesOptions,\n ): Promise<Array<TokenCandle>> {\n const candles = await this._client.token.getCandles(\n toChainDTO(chain),\n address,\n {\n resolution: toResolutionDTO(resolution),\n from: options?.after?.getTime(),\n to: options?.before?.getTime(),\n limit: options?.limit,\n },\n );\n return candles.map((c) => fromTokenCandle(c, resolution));\n }\n\n async getTokenSecurity(\n chain: Chain,\n address: string,\n ): Promise<TokenSecurity> {\n const security = await this._client.token.getSecurity(\n toChainDTO(chain),\n address,\n );\n return fromTokenSecurity(security as Record<string, unknown>);\n }\n\n async getTokenStats(chain: Chain, address: string): Promise<TokenStats> {\n const stats = await this._client.token.getStats(toChainDTO(chain), address);\n return fromTokenStatsDTO(stats);\n }\n\n async getTokenHolders(\n chain: Chain,\n address: string,\n options?: API.CursorListOptions,\n ): Promise<API.CursorList<TokenHolder>> {\n const holders = await this._client.token.getHolders(\n toChainDTO(chain),\n address,\n {\n cursor: options?.cursor,\n limit: options?.limit,\n direction: options?.direction,\n },\n );\n return fromTokenHolderPage(holders);\n }\n\n async getTokenMarketData(\n chain: Chain,\n address: string,\n ): Promise<TokenMarketData> {\n const marketData = await this._client.token.getMarketData(\n toChainDTO(chain),\n address,\n );\n return fromTokenMarketDataDTO(marketData);\n }\n\n async getNewTokens(\n chain: Chain,\n options?: API.GetTokenListOptions,\n ): Promise<Array<Token>> {\n const tokens = await this._client.ranking.getNewTokens(\n toChainDTO(chain),\n this._buildRankingParams(options),\n );\n return tokens.map(fromTokenDTO);\n }\n\n async getFinalStretchTokens(\n chain: Chain,\n options?: API.GetTokenListOptions,\n ): Promise<Array<Token>> {\n const tokens = await this._client.ranking.getFinalStretchTokens(\n toChainDTO(chain),\n this._buildRankingParams(options),\n );\n return tokens.map(fromTokenDTO);\n }\n\n async getMigratedTokens(\n chain: Chain,\n options?: API.GetTokenListOptions,\n ): Promise<Array<Token>> {\n const tokens = await this._client.ranking.getMigratedTokens(\n toChainDTO(chain),\n this._buildRankingParams(options),\n );\n return tokens.map(fromTokenDTO);\n }\n\n async getTrendingTokens(\n chain: Chain,\n resolution: \"1m\" | \"5m\" | \"1h\" | \"4h\" | \"24h\",\n options?: API.GetTokenListOptions,\n ): Promise<Array<Token>> {\n const tokens = await this._client.ranking.getHotTokens(\n toChainDTO(chain),\n resolution,\n this._buildRankingParams(options),\n );\n return tokens.map(fromTokenDTO);\n }\n\n async getStockTokens(\n chain: Chain,\n options?: API.GetTokenListOptions,\n ): Promise<Array<Token>> {\n const tokens = await this._client.ranking.getStocksTokens(\n toChainDTO(chain),\n this._buildRankingParams(options),\n );\n return tokens.map(fromTokenDTO);\n }\n\n async searchTokens(\n options?: API.SearchTokensOptions,\n ): Promise<API.SearchTokenCursorList> {\n const tokenPage = await this._client.token.search({\n chains: options?.chains?.map(toChainDTO),\n q: options?.keyword,\n limit: options?.limit,\n cursor: options?.cursor,\n sortBy: options?.sortBy\n ? (toSearchFieldDTO(options.sortBy) as SearchSortBy)\n : undefined,\n sort: options?.sortDirection,\n // TODO protocols\n });\n return fromTokenPage(tokenPage);\n }\n\n async swapRoute(params: API.SwapParams): Promise<API.SwapRoute> {\n const route = await this._client.dex.route(\n toChainDTO(params.chain) as ChainSymbol,\n toSwapRouteInput(params),\n );\n return fromSwapRoute(route);\n }\n\n async sendTx(params: API.SendTxParams): Promise<API.SendTxResult> {\n const result = await this._client.transaction.send(\n toChainDTO(params.chain),\n toSendTxInput(params),\n );\n return fromSendTxResult(result);\n }\n\n async checkTxSuccess(\n chain: Chain,\n txHash: string,\n timeout?: number,\n ): Promise<boolean> {\n const { success } = await this._client.waitForJob<{\n id: string;\n status: string;\n success: boolean;\n }>(txHash, timeout);\n return success;\n }\n\n async getWalletPortfolios(\n chain: Chain,\n address: string,\n options?: { cursor?: string; limit?: number },\n ): Promise<WalletPortfolios> {\n const chainParam = Client._CHAIN_TO_BALANCE_PARAM[chain];\n if (chainParam && this.options?.nativeBalanceApiUrl) {\n return this._getWalletPortfoliosFromBalanceApi(\n chain,\n chainParam,\n address,\n );\n }\n const netWorth = await this._client.wallet.getNetWorth(\n toChainDTO(chain),\n address,\n { cursor: options?.cursor, limit: options?.limit ?? 100 },\n );\n return fromWalletPortfolios(chain, netWorth);\n }\n\n async getWalletPnl(\n chain: Chain,\n address: string,\n resolution?: string,\n ): Promise<WalletPnl> {\n const pnl = await this._client.wallet.getPnl(\n toChainDTO(chain),\n address,\n resolution\n ? { resolution: resolution as \"1d\" | \"7d\" | \"30d\" | \"all\" }\n : undefined,\n );\n return fromWalletPnlSummary(chain, address, pnl);\n }\n\n async getWalletPortfolioPnls(\n chain: Chain,\n address: string,\n options?: { cursor?: string; limit?: number },\n ): Promise<WalletPortfolioPnls> {\n const detailsPage = await this._client.wallet.getPnlDetails(\n toChainDTO(chain),\n address,\n {\n cursor: options?.cursor,\n limit: options?.limit ?? 100,\n },\n );\n return fromPnlDetailsPage(chain, address, detailsPage);\n }\n\n async getWalletPortfoliosByTokens(\n chain: Chain,\n address: string,\n tokenAddresses: Array<string>,\n ): Promise<Array<Portfolio>> {\n const chainParam = Client._CHAIN_TO_BALANCE_PARAM[chain];\n if (chainParam && this.options?.nativeBalanceApiUrl) {\n return this._getPortfoliosFromBalanceApi(\n chain,\n chainParam,\n address,\n tokenAddresses,\n );\n }\n const result = await this._client.wallet.getNetWorthByTokens(\n toChainDTO(chain),\n address,\n { tokenAddresses: tokenAddresses.join(\",\") },\n );\n return fromWalletNetWorthByTokens(chain, result);\n }\n\n async getWalletPortfolioPnlsByTokens(\n chain: Chain,\n address: string,\n tokenAddresses: Array<string>,\n ): Promise<Array<PortfolioPnl>> {\n const detailsPage = await this._client.wallet.getPnlByToken(\n toChainDTO(chain),\n address,\n { tokenAddresses: tokenAddresses.join(\",\") },\n );\n return fromPnlDetailItems(chain, detailsPage);\n }\n\n async getWalletTrades(\n chain: Chain,\n address: string,\n options?: API.GetTradesOptions,\n ): Promise<API.CursorList<Trade>> {\n return this._getTrades(chain, { walletAddress: address }, options);\n }\n\n async getTokenTrades(\n chain: Chain,\n address: string,\n options?: API.GetTradesOptions,\n ): Promise<API.CursorList<Trade>> {\n return this._getTrades(chain, { tokenAddress: address }, options);\n }\n\n async getWalletActivities(\n chain: Chain,\n address: string,\n options?: API.GetActivitiesOptions,\n ): Promise<API.CursorList<Activity>> {\n return this._getActivities(chain, { walletAddress: address }, options);\n }\n\n async getTokenActivities(\n chain: Chain,\n address: string,\n options?: API.GetActivitiesOptions,\n ): Promise<API.CursorList<Activity>> {\n return this._getActivities(chain, { tokenAddress: address }, options);\n }\n\n async getPresignedUploadUrl(): Promise<string> {\n const result = await this._client.ipfs.presign();\n return result.presignUrl;\n }\n\n subscribeToken(\n chain: Chain,\n address: string,\n callback: (data: Array<API.TokenSubscribed>) => void,\n ): API.ISubscription {\n const chainDTO = toChainDTO(chain);\n const subs = [\n this._client.stream.subscribeTokenStats({\n chain: chainDTO,\n tokenAddress: address,\n callback: (data: WsTokenStat) =>\n callback([fromWsTokenDataSubscribed(chain, data)]),\n }),\n this._client.stream.subscribeTokenSupply({\n chain: chainDTO,\n tokenAddress: address,\n callback: (data: WsTokenSupply) =>\n callback([fromWsTokenSupplyToSubscribed(chain, address, data)]),\n }),\n this._client.stream.subscribeTokenHolders({\n chain: chainDTO,\n tokenAddress: address,\n callback: (data: WsTokenHolder) =>\n callback([fromWsTokenHolderToSubscribed(chain, address, data)]),\n }),\n this._client.stream.subscribeTokenLiquidity({\n chain: chainDTO,\n tokenAddress: address,\n callback: (data: WsTokenLiquidity) =>\n callback([fromWsTokenLiquidityToSubscribed(chain, address, data)]),\n }),\n this._client.stream.subscribeTokenMaxLiquidity({\n chain: chainDTO,\n tokenAddress: address,\n callback: (data: WsTokenMaxLiquidity) =>\n callback([fromWsTokenMaxLiquidityToSubscribed(chain, address, data)]),\n }),\n this._client.stream.subscribeTokenTotalLiquidity({\n chain: chainDTO,\n tokenAddress: address,\n callback: (data: WsTokenTotalLiquidity) =>\n callback([\n fromWsTokenTotalLiquidityToSubscribed(chain, address, data),\n ]),\n }),\n ];\n return { unsubscribe: () => subs.forEach((s) => s.unsubscribe()) };\n }\n\n subscribeTokenCandles(\n chain: Chain,\n address: string,\n resolution: TokenResolution,\n callback: (candles: Array<TokenCandle>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeTokenCandles({\n chain: toChainDTO(chain),\n tokenAddress: address,\n resolution: toResolutionDTO(resolution),\n callback: (data: WsCandle) => callback([fromWsCandle(data)]),\n });\n }\n\n subscribeWalletPnl(\n chain: Chain,\n address: string,\n callback: (pnls: Array<API.WalletPnlSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeWalletPnlList({\n chain: toChainDTO(chain),\n walletAddress: address,\n callback: (data: WsWalletPnl[]) =>\n callback(\n data.map((item) => ({\n chain,\n address: item.walletAddress,\n buys: item.buys,\n buyAmountInUsd: item.buyAmountInUsd,\n sells: item.sells,\n sellAmountInUsd: item.sellAmountInUsd,\n wins: item.wins,\n winRate: item.winRatio,\n totalProfitInUsd: item.pnlInUsd,\n totalProfitRatio: item.pnlRatio,\n avgProfitPerTradeInUsd: item.averagePnlInUsd,\n tokens: item.tokens,\n resolution: item.resolution,\n })),\n ),\n });\n }\n\n subscribeWalletPortfolios(\n chain: Chain,\n address: string,\n callback: (portfolios: Array<API.PortfolioSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeWalletBalance({\n chain: toChainDTO(chain),\n walletAddress: address,\n callback: (data: WsWalletBalance[]) =>\n callback(\n data.map(\n (it) =>\n ({\n chain,\n walletAddress: it.walletAddress,\n tokenAddress: it.tokenAddress,\n priceInUsd: it.tokenPriceInUsd,\n amount: it.balance,\n }) as API.PortfolioSubscribed,\n ),\n ),\n });\n }\n\n subscribeWalletPortfolioPnls(\n chain: Chain,\n address: string,\n callback: (portfolioPnls: Array<API.PortfolioPnlSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeWalletPnl({\n chain: toChainDTO(chain),\n walletAddress: address,\n callback: (data: WsWalletTokenPnl) =>\n callback([\n {\n chain,\n walletAddress: data.walletAddress,\n tokenAddress: data.tokenAddress,\n openTime: data.opentime ? new Date(data.opentime) : undefined,\n closeTime: data.closetime ? new Date(data.closetime) : undefined,\n buys: data.buyCount,\n buyVolumes: data.buyAmount,\n buyVolumesInUsd: data.buyAmountInUsd,\n buyAvgPriceInUsd: data.averageBuyPriceInUsd,\n sells: data.sellCount,\n sellVolumes: data.sellAmount,\n sellVolumesInUsd: data.sellAmountInUsd,\n sellAvgPriceInUsd: data.averageSellPriceInUsd,\n realizedProfitInUsd: data.realizedProfitInUsd,\n realizedProfitRatio: data.realizedProfitRatio,\n unrealizedProfitInUsd: data.unrealizedProfitInUsd,\n unrealizedProfitRatio: data.unrealizedProfitRatio,\n totalProfitInUsd: data.totalRealizedProfitInUsd,\n totalProfitRatio: data.totalRealizedProfitRatio,\n } as API.PortfolioPnlSubscribed,\n ]),\n });\n }\n\n subscribeWalletTrades(\n chain: Chain,\n address: string,\n callback: (trades: Array<Trade>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeWalletTrade({\n chain: toChainDTO(chain),\n walletAddress: address,\n callback: (data: WsTradeActivity) =>\n callback([fromWsTradeActivity(chain, data)]),\n });\n }\n\n subscribeTokenTrades(\n chain: Chain,\n address: string,\n callback: (trades: Array<Trade>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeTokenTrade({\n chain: toChainDTO(chain),\n tokenAddress: address,\n callback: (data: WsTradeActivity) =>\n callback([fromWsTradeActivity(chain, data)]),\n });\n }\n\n subscribeWalletActivities(\n chain: Chain,\n address: string,\n callback: (activities: Array<Activity>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeWalletTrade({\n chain: toChainDTO(chain),\n walletAddress: address,\n callback: (data: WsTradeActivity) =>\n callback([fromWsActivity(chain, data)]),\n });\n }\n\n subscribeTokenActivities(\n chain: Chain,\n address: string,\n callback: (activities: Array<Activity>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeTokenTrade({\n chain: toChainDTO(chain),\n tokenAddress: address,\n callback: (data: WsTradeActivity) =>\n callback([fromWsActivity(chain, data)]),\n });\n }\n\n subscribeNewTokens(\n chain: Chain,\n callback: (data: Array<API.TokenSubscribed>) => void,\n ): API.ISubscription {\n const chainDTO = toChainDTO(chain);\n const rankingSub = this._subscribeRankingTokens(\n chain,\n WsChannelType.New,\n callback,\n );\n const subs = [\n this._client.stream.subscribeNewToken({\n chain: chainDTO,\n callback: (data: WsNewToken) =>\n callback([fromTokenSubscribed(chain, data)]),\n }),\n this._client.stream.subscribeNewTokensMetadata({\n chain: chainDTO,\n callback: (data: WsTokenMetadata[]) =>\n callback(data.map((it) => fromTokenMetadataSubscribed(chain, it))),\n }),\n this._client.stream.subscribeRankingTokensBondingCurve({\n chain: chainDTO,\n callback: (data: WsTokenBondingCurve[]) =>\n callback(\n data.map((d) => fromWsTokenBondingCurveToSubscribed(chain, d)),\n ),\n }),\n ];\n return {\n unsubscribe: () => {\n rankingSub.unsubscribe();\n subs.forEach((s) => s.unsubscribe());\n },\n };\n }\n\n subscribeTrendingTokens(\n chain: Chain,\n callback: (data: Array<API.TokenSubscribed>) => void,\n ): API.ISubscription {\n return this._subscribeRankingTokens(chain, WsChannelType.HOT, callback);\n }\n\n subscribeMigratedTokens(\n chain: Chain,\n callback: (data: Array<API.TokenSubscribed>) => void,\n ): API.ISubscription {\n return this._subscribeRankingTokens(\n chain,\n WsChannelType.MIGRATED,\n callback,\n );\n }\n\n subscribeFinalStretchTokens(\n chain: Chain,\n callback: (data: Array<API.TokenSubscribed>) => void,\n ): API.ISubscription {\n const chainDTO = toChainDTO(chain);\n const rankingSub = this._subscribeRankingTokens(\n chain,\n WsChannelType.FINAL_STRETCH,\n callback,\n );\n const bondingSub = this._client.stream.subscribeRankingTokensBondingCurve({\n chain: chainDTO,\n callback: (data: WsTokenBondingCurve[]) =>\n callback(\n data.map((d) => fromWsTokenBondingCurveToSubscribed(chain, d)),\n ),\n });\n return {\n unsubscribe: () => {\n rankingSub.unsubscribe();\n bondingSub.unsubscribe();\n },\n };\n }\n\n subscribeStockTokens(\n chain: Chain,\n callback: (data: Array<API.TokenSubscribed>) => void,\n ): API.ISubscription {\n return this._subscribeRankingTokens(\n chain,\n WsChannelType.US_STOCKS,\n callback,\n );\n }\n\n // ── RPC balance fallback (temporary) ─────────────────────────────────────\n\n private static readonly _CHAIN_TO_BALANCE_PARAM: Partial<\n Record<Chain, string>\n > = {\n [Chain.SOLANA]: \"sol\",\n [Chain.ETHEREUM]: \"eth\",\n [Chain.BINANCE]: \"bnb\",\n };\n\n /**\n * Fetch token balances from the local `/api/balance` RPC proxy and convert\n * the raw `{ address, balance, decimals }` entries into `Portfolio` objects.\n */\n private async _getPortfoliosFromBalanceApi(\n chain: Chain,\n chainParam: string,\n walletAddress: string,\n tokenAddresses?: Array<string>,\n ): Promise<Array<Portfolio>> {\n const base = this.options!.nativeBalanceApiUrl!;\n const qs = new URLSearchParams({\n chain: chainParam,\n address: walletAddress,\n });\n if (tokenAddresses?.length) {\n qs.set(\"tokens\", tokenAddresses.join(\",\"));\n }\n\n const res = await fetch(`${base}?${qs.toString()}`);\n if (!res.ok) {\n throw new Error(`Balance API returned ${res.status}`);\n }\n\n const data = (await res.json()) as {\n balances: Array<{ address: string; balance: string; decimals: number }>;\n };\n\n return data.balances.map((item) => {\n const raw = BigInt(item.balance);\n const decimals = item.decimals;\n const divisor = BigInt(10) ** BigInt(decimals);\n const whole = raw / divisor;\n const frac = raw % divisor;\n const fracStr = frac.toString().padStart(decimals, \"0\");\n const amount = `${whole}.${fracStr}`.replace(/\\.?0+$/, \"\") || \"0\";\n\n return {\n chain,\n address: item.address,\n name: \"\",\n symbol: \"\",\n priceInUsd: \"0\",\n priceInNative: \"0\",\n amount,\n amountInUsd: \"0\",\n amountInNative: \"0\",\n decimals: item.decimals,\n };\n });\n }\n\n /**\n * Fetch all holdings from the balance API and wrap as `WalletPortfolios`.\n */\n private async _getWalletPortfoliosFromBalanceApi(\n chain: Chain,\n chainParam: string,\n walletAddress: string,\n ): Promise<WalletPortfolios> {\n const portfolios = await this._getPortfoliosFromBalanceApi(\n chain,\n chainParam,\n walletAddress,\n );\n return {\n chain,\n address: walletAddress,\n balanceInUsd: \"0\",\n balanceInNative: \"0\",\n portfolios,\n hasPrev: false,\n hasNext: false,\n };\n }\n\n // ── End RPC balance fallback ───────────────────────────────────────────\n\n private _buildRankingParams(options?: API.GetTokenListOptions) {\n return {\n sortBy: options?.sortBy\n ? (toFieldDTO(options.sortBy) as TokenField)\n : undefined,\n sortDirection: options?.sortDirection\n ? (toSortDirectionDTO(options.sortDirection) as SortDirection)\n : undefined,\n rangeFilters: options?.filters\n ? toRangeFiltersDTO(options.filters)\n : undefined,\n launchpadPlatform: options?.filters\n ? parseLaunchPlatformFromFilters(options.filters)\n : undefined,\n searchKeywords: options?.keywords,\n excludeKeywords: options?.excludeKeywords,\n };\n }\n\n private async _getTrades(\n chain: Chain,\n target: { walletAddress?: string; tokenAddress?: string },\n options?: API.GetTradesOptions,\n ): Promise<API.CursorList<Trade>> {\n const tradePage = await this._client.trade.getTrades(toChainDTO(chain), {\n ...target,\n cursor: options?.cursor,\n limit: options?.limit,\n direction: options?.direction,\n beforeTimestamp: options?.before?.getTime(),\n afterTimestamp: options?.after?.getTime(),\n beforeBlockHeight: options?.beforeBlockHeight,\n afterBlockHeight: options?.afterBlockHeight,\n poolAddress: options?.poolAddress,\n type: options?.type\n ? (options.type.toUpperCase() as TradeType)\n : undefined,\n });\n return fromTradePage(tradePage);\n }\n\n private async _getActivities(\n chain: Chain,\n target: { walletAddress?: string; tokenAddress?: string },\n options?: API.GetActivitiesOptions,\n ): Promise<API.CursorList<Activity>> {\n const page = await this._client.trade.getActivities(toChainDTO(chain), {\n ...target,\n cursor: options?.cursor,\n limit: options?.limit,\n direction: options?.direction,\n beforeTimestamp: options?.before?.getTime(),\n afterTimestamp: options?.after?.getTime(),\n beforeBlockHeight: options?.beforeBlockHeight,\n afterBlockHeight: options?.afterBlockHeight,\n poolAddress: options?.poolAddress,\n type: options?.type\n ? (options.type.toUpperCase() as SdkActivityType)\n : undefined,\n });\n return fromActivityPage(page);\n }\n\n private _subscribeRankingTokens(\n chain: Chain,\n channelType: WsChannelType,\n callback: (data: Array<API.TokenSubscribed>) => void,\n ): API.ISubscription {\n const chainDTO = toChainDTO(chain);\n const subs = [\n this._client.stream.subscribeRankingTokensStats({\n chain: chainDTO,\n channelType,\n callback: (data: WsTokenStat[]) =>\n callback(data.map((d) => fromWsTokenDataSubscribed(chain, d))),\n }),\n this._client.stream.subscribeRankingTokensHolders({\n chain: chainDTO,\n channelType,\n callback: (data: WsTokenHolder[]) =>\n callback(\n data.map((d) =>\n fromWsTokenHolderToSubscribed(chain, d.tokenAddress, d),\n ),\n ),\n }),\n this._client.stream.subscribeRankingTokensSupply({\n chain: chainDTO,\n channelType,\n callback: (data: WsTokenSupply[]) =>\n callback(\n data.map((d) =>\n fromWsTokenSupplyToSubscribed(chain, d.tokenAddress, d),\n ),\n ),\n }),\n this._client.stream.subscribeRankingTokensLiquidity({\n chain: chainDTO,\n channelType,\n callback: (data: WsTokenLiquidity[]) =>\n callback(\n data.map((d) =>\n fromWsTokenLiquidityToSubscribed(chain, d.tokenAddress, d),\n ),\n ),\n }),\n ];\n return { unsubscribe: () => subs.forEach((s) => s.unsubscribe()) };\n }\n}\n\nfunction parseLaunchPlatformFromFilters(\n filters: Array<API.TokenFilterOption>,\n): Array<string> | undefined {\n const filter = filters.find(\n (it) => it.field === \"launchedFromProtocolFamily\",\n );\n if (!filter) {\n return undefined;\n }\n if (filter.operator === \"eq\") {\n return [filter.value as string];\n }\n if (filter.operator === \"in\") {\n return filter.value as Array<string>;\n }\n console.warn(\"invalid launchedFromProtocolFamily filter\", filter);\n return undefined;\n}\n"]}
1
+ {"version":3,"sources":["../src/version.ts","../src/utils.ts","../src/client.ts"],"names":["version_default","nullToUndefined","value","toChainDTO","chain","Chain","ChainSymbol","toResolutionDTO","resolution","Resolution","toSortDirectionDTO","direction","toSearchFieldDTO","field","SearchSortBy","toFieldDTO","TokenField","toRangeFiltersDTO","filters","it","cond","SafeBigNumber","fromChainDTO","fromTokenCreatorDTO","input","fromTokenDTO","v","k","fromTokenStatsDTO","fromTokenMarketDataDTO","parseTokenStatsByResolution","toOptionalNumber","period","fromTokenLiquidityDTO","fromTokenCandle","fromResolutionDTO","fromTokenSecurity","solanaChains","EVM_NATIVE_ADDRESS","KYBERSWAP_NATIVE_SENTINEL","toJupiterMint","address","SOLANA_TOKENS","toKyberSwapMint","effectiveDex","params","toMintForDex","dex","toMintForRoute","toSwapRouteInput","inputMint","outputMint","API","SwapRouteInputSwapMode","toSendTxInput","fromTokenHolderPage","holder","fromTokenPage","fromSwapRoute","fromSendTxResult","fromWalletPortfolios","portfolios","item","fromWalletPnlSummary","fromPnlDetailsPage","fromWalletNetWorthByTokens","fromPnlDetailItems","fromTradePage","fromTradeDetailDTO","isBuy","fromActivityPage","fromActivityDetailDTO","type","fromTokenSubscribed","fromTokenMetadataSubscribed","fromWsCandle","fromWsTokenStats","timeframes","record","result","tf","buys","sells","buyers","sellers","buyVolumeInUsd","sellVolumeInUsd","trades","price","openInUsd","closeInUsd","totalTrades","totalTraders","totalVolumesInUsd","priceChange","fromWsTokenMarketDataFromStats","fromWsTokenDataSubscribed","fromWsTokenSupplyToSubscribed","fromWsTokenHolderToSubscribed","fromWsTokenMarketDataFromHolder","fromWsTokenLiquidityToSubscribed","WsMetricType","fromWsTokenBondingCurveToSubscribed","fromWsTokenMaxLiquidityToSubscribed","fromWsTokenTotalLiquidityToSubscribed","fromWsTradeActivity","fromWsActivity","Client","_Client","accessToken","options","ChainStreamClient","token","addresses","c","security","stats","holders","marketData","tokenPage","route","txHash","timeout","success","chainParam","netWorth","pnl","detailsPage","tokenAddresses","callback","chainDTO","subs","data","s","rankingSub","WsChannelType","d","bondingSub","walletAddress","base","qs","res","raw","decimals","divisor","whole","fracStr","amount","nativeAddr","nativePortfolio","p","parseLaunchPlatformFromFilters","target","tradePage","page","channelType","filter"],"mappings":"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","file":"index.mjs","sourcesContent":["declare global {\n interface Window {\n __LIBERFI_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif (typeof window !== \"undefined\") {\n window.__LIBERFI_VERSION__ = window.__LIBERFI_VERSION__ || {};\n window.__LIBERFI_VERSION__[\"@liberfi.io/client\"] = \"0.1.183\";\n}\n\nexport default \"0.1.183\";\n","import {\n Token as TokenDTO,\n Resolution,\n TokenCandle as SdkTokenCandle,\n TokenStats as SdkTokenStats,\n PageResponseTokenHolder,\n TokenMarketData as SdkTokenMarketData,\n TokenField,\n RangeFilterCondition,\n SearchSortBy,\n TokenPage as ChainStreamTokenPage,\n SwapRouteResponse,\n SwapRouteInput,\n SwapRouteInputSwapMode,\n SendTxInput,\n SendTxResponse,\n WalletNetWorthPage,\n PageResponseTradeDetail,\n DexPool,\n ChainSymbol,\n TokenCreator as SdkTokenCreator,\n WsNewToken,\n WsTokenMetadata,\n WsCandle,\n WsTokenStat,\n WsTradeActivity,\n WsTokenHolder as WsTokenHolderDTO,\n WsTokenSupply,\n WsTokenLiquidity,\n WsTokenMaxLiquidity,\n WsTokenTotalLiquidity,\n WsTokenBondingCurve,\n WsMetricType,\n WalletPnlSummary,\n PnlDetailsResult,\n NetWorthByTokensResult,\n} from \"@chainstream-io/sdk\";\nimport {\n API,\n Chain,\n Token,\n TokenCandle,\n TokenCreator,\n TokenHolder,\n TokenLiquidity,\n TokenMarketData,\n TokenResolution,\n TokenSecurity,\n TokenStats,\n TokenStatsByResolution,\n Activity,\n ActivityType,\n Trade,\n Portfolio,\n PortfolioPnl,\n WalletPnl,\n WalletPortfolioPnls,\n WalletPortfolios,\n} from \"@liberfi.io/types\";\nimport { SafeBigNumber, SOLANA_TOKENS } from \"@liberfi.io/utils\";\n\nfunction nullToUndefined<T>(value: T | null | undefined): T | undefined {\n return value ?? undefined;\n}\n\nexport function toChainDTO(chain: Chain): ChainSymbol {\n switch (chain) {\n case Chain.ETHEREUM:\n return ChainSymbol.eth;\n case Chain.BINANCE:\n return ChainSymbol.bsc;\n case Chain.SOLANA:\n return ChainSymbol.sol;\n }\n throw new Error(`Unsupported chain: ${chain}`);\n}\n\nexport function toResolutionDTO(resolution: TokenResolution): Resolution {\n switch (resolution) {\n case \"1s\":\n return Resolution[\"1s\"];\n case \"15s\":\n return Resolution[\"15s\"];\n case \"30s\":\n return Resolution[\"30s\"];\n case \"1m\":\n return Resolution[\"1m\"];\n case \"5m\":\n return Resolution[\"5m\"];\n case \"15m\":\n return Resolution[\"15m\"];\n case \"30m\":\n case \"1h\":\n return Resolution[\"1h\"];\n case \"4h\":\n return Resolution[\"4h\"];\n case \"12h\":\n return Resolution[\"12h\"];\n case \"24h\":\n return Resolution[\"1d\"];\n }\n}\n\nexport function toSortDirectionDTO(direction: \"asc\" | \"desc\"): string {\n return direction;\n}\n\nexport function toSearchFieldDTO(field: API.TokenFieldOption): string {\n switch (field) {\n case \"marketCap\":\n return SearchSortBy.marketCapInUsd;\n case \"tvl\":\n return SearchSortBy.liquidityInUsd;\n case \"price\":\n return SearchSortBy.priceInUsd;\n case \"holders\":\n return SearchSortBy.holderCount;\n case \"volumes24h\":\n return SearchSortBy.h24VolumeInUsd;\n case \"trades24h\":\n return SearchSortBy.h24Transactions;\n case \"createdAt\":\n return SearchSortBy.tokenCreatedAt;\n }\n throw new Error(`Unsupported search field: ${field}`);\n}\n\nexport function toFieldDTO(field: API.TokenFieldOption): string {\n switch (field) {\n case \"price\":\n return TokenField.marketDatapriceInUsd;\n case \"priceChange1m\":\n return TokenField.statspriceChangeRatioInUsd1m;\n case \"priceChange5m\":\n return TokenField.statspriceChangeRatioInUsd5m;\n case \"priceChange1h\":\n return TokenField.statspriceChangeRatioInUsd1h;\n case \"priceChange4h\":\n return TokenField.statspriceChangeRatioInUsd4h;\n case \"priceChange24h\":\n return TokenField.statspriceChangeRatioInUsd24h;\n case \"marketCap\":\n return TokenField.marketDatamarketCapInUsd;\n case \"tvl\":\n return TokenField.marketDatamaxPoolTvlInUsd;\n case \"top10Holdings\":\n return TokenField.marketDatatop10TotalHoldings;\n case \"top10Ratio\":\n return TokenField.marketDatatop10HoldingsRatio;\n case \"top100Holdings\":\n return TokenField.marketDatatop100TotalHoldings;\n case \"top100Ratio\":\n return TokenField.marketDatatop100HoldingsRatio;\n case \"holders\":\n return TokenField.marketDataholders;\n case \"creatorsHoldings\":\n return TokenField.marketDatacreatorHoldings;\n case \"creatorsRatio\":\n return TokenField.marketDatacreatorHoldingsRatio;\n case \"buys1m\":\n return TokenField.statsbuys1m;\n case \"buys5m\":\n return TokenField.statsbuys5m;\n case \"buys15m\":\n return TokenField.statsbuys15m;\n case \"buys30m\":\n return TokenField.statsbuys30m;\n case \"buys1h\":\n return TokenField.statsbuys1h;\n case \"buys4h\":\n return TokenField.statsbuys4h;\n case \"buys24h\":\n return TokenField.statsbuys24h;\n case \"sells1m\":\n return TokenField.statssells1m;\n case \"sells5m\":\n return TokenField.statssells5m;\n case \"sells15m\":\n return TokenField.statssells15m;\n case \"sells30m\":\n return TokenField.statssells30m;\n case \"sells1h\":\n return TokenField.statssells1h;\n case \"sells4h\":\n return TokenField.statssells4h;\n case \"sells24h\":\n return TokenField.statssells24h;\n case \"trades1m\":\n return TokenField.statstrades1m;\n case \"trades5m\":\n return TokenField.statstrades5m;\n case \"trades1h\":\n return TokenField.statstrades1h;\n case \"trades4h\":\n return TokenField.statstrades4h;\n case \"trades24h\":\n return TokenField.statstrades24h;\n case \"traders1m\":\n return TokenField.statstraders1m;\n case \"traders5m\":\n return TokenField.statstraders5m;\n case \"traders1h\":\n return TokenField.statstraders1h;\n case \"traders4h\":\n return TokenField.statstraders4h;\n case \"traders24h\":\n return TokenField.statstraders24h;\n case \"volumes1m\":\n return TokenField.statsvolumesInUsd1m;\n case \"volumes5m\":\n return TokenField.statsvolumesInUsd5m;\n case \"volumes1h\":\n return TokenField.statsvolumesInUsd1h;\n case \"volumes4h\":\n return TokenField.statsvolumesInUsd4h;\n case \"volumes24h\":\n return TokenField.statsvolumesInUsd24h;\n case \"createdAt\":\n return TokenField.tokenCreatedAt;\n }\n throw new Error(`Unsupported sortBy: ${field}`);\n}\n\nexport function toRangeFiltersDTO(\n filters: Array<API.TokenFilterOption>,\n): Array<RangeFilterCondition> {\n return filters\n .filter(\n (it) => [\"gt\", \"gte\", \"lt\", \"lte\", \"between\"].indexOf(it.operator) >= 0,\n )\n .map((it) => {\n const cond = { field: toFieldDTO(it.field) } as RangeFilterCondition;\n if ([\"gt\", \"gte\", \"between\"].indexOf(it.operator) >= 0) {\n cond.min =\n typeof it.value === \"number\"\n ? new SafeBigNumber(it.value).toString()\n : (it.value as string);\n }\n if ([\"lt\", \"lte\", \"between\"].indexOf(it.operator) >= 0) {\n cond.max =\n typeof it.value === \"number\"\n ? new SafeBigNumber(it.value).toString()\n : (it.value as string);\n }\n return cond;\n });\n}\n\nexport function fromChainDTO(chain: string): Chain {\n switch (chain) {\n case ChainSymbol.eth:\n return Chain.ETHEREUM;\n case ChainSymbol.bsc:\n return Chain.BINANCE;\n case ChainSymbol.sol:\n case \"solana\":\n return Chain.SOLANA;\n }\n throw new Error(`Unsupported chain: ${chain}`);\n}\n\nexport function fromTokenCreatorDTO(input: SdkTokenCreator): TokenCreator {\n return {\n address: input.address ?? undefined,\n share: input.share ?? undefined,\n isVerified: input.isVerified ?? undefined,\n };\n}\n\nexport function fromTokenDTO(input: TokenDTO): Token {\n return {\n chain: fromChainDTO(input.chain),\n name: input.name,\n symbol: input.symbol,\n address: input.address,\n decimals: input.decimals,\n image: input.imageUrl ?? undefined,\n description: input.description ?? undefined,\n creators: input.tokenCreators?.map(fromTokenCreatorDTO),\n launchedFrom: {\n programAddress: input.extra?.launchFromProgramAddress ?? undefined,\n protocolFamily: input.extra?.launchFromProtocolFamily ?? undefined,\n },\n migrateProgress: input.marketData?.completionRatio\n ? new SafeBigNumber(input.marketData.completionRatio)\n .shiftedBy(2)\n .toString()\n : undefined,\n migratedTo: {\n programAddress: input.extra?.migratedToProgramAddress ?? undefined,\n protocolFamily: input.extra?.migratedToProtocolFamily ?? undefined,\n poolAddress: input.extra?.migratedToPoolAddress ?? undefined,\n migratedAt: input.extra?.migratedAt\n ? new Date(input.extra.migratedAt)\n : undefined,\n },\n socialMedias: input.socialMedias\n ? Object.fromEntries(\n Object.entries(input.socialMedias)\n .filter(([, v]) => v != null)\n .map(([k, v]) => [k, v as string]),\n )\n : undefined,\n stats: input.stats ? fromTokenStatsDTO(input.stats) : undefined,\n marketData: input.marketData\n ? fromTokenMarketDataDTO(input.marketData)\n : undefined,\n createdAt: input.tokenCreatedAt\n ? new Date(input.tokenCreatedAt)\n : undefined,\n };\n}\n\nexport function fromTokenStatsDTO(input: SdkTokenStats): TokenStats {\n return {\n [\"1m\"]: parseTokenStatsByResolution(input, \"1m\"),\n [\"5m\"]: parseTokenStatsByResolution(input, \"5m\"),\n [\"15m\"]: parseTokenStatsByResolution(input, \"15m\"),\n [\"30m\"]: parseTokenStatsByResolution(input, \"30m\"),\n [\"1h\"]: parseTokenStatsByResolution(input, \"1h\"),\n [\"4h\"]: parseTokenStatsByResolution(input, \"4h\"),\n [\"24h\"]: parseTokenStatsByResolution(input, \"24h\"),\n };\n}\n\nfunction toOptionalNumber(value: string | undefined): number | undefined {\n return value === undefined ? undefined : parseInt(value);\n}\n\nfunction parseTokenStatsByResolution(\n input: SdkTokenStats,\n resolution: TokenResolution,\n): TokenStatsByResolution {\n const period = input.periods?.[resolution];\n if (!period) {\n return {};\n }\n\n return {\n buys: toOptionalNumber(period.buys),\n sells: toOptionalNumber(period.sells),\n trades: toOptionalNumber(period.trades),\n buyers: toOptionalNumber(period.buyers),\n sellers: toOptionalNumber(period.sellers),\n traders: toOptionalNumber(period.traders),\n buyVolumes: period.buyVolume,\n sellVolumes: period.sellVolume,\n volumes: period.totalVolumeInNative,\n buyVolumesInUsd: period.buyVolumeInUsd,\n sellVolumesInUsd: period.sellVolumeInUsd,\n volumesInUsd: period.totalVolumeInUsd,\n openPriceInUsd: period.openInUsd,\n closePriceInUsd: period.closeInUsd,\n highPriceInUsd: period.highInUsd,\n lowPriceInUsd: period.lowInUsd,\n priceInUsd: period.closeInUsd,\n priceChange: period.priceChangeRatioInUsd,\n };\n}\n\nexport function fromTokenLiquidityDTO(input: DexPool): TokenLiquidity {\n return {\n poolAddress: input.poolAddress,\n programAddress: input.programAddress ?? undefined,\n protocolFamily: input.protocolFamily ?? undefined,\n tvl: input.tvlInSol ?? undefined,\n tvlInUsd: input.tvlInUsd ?? undefined,\n };\n}\n\nexport function fromTokenMarketDataDTO(\n input: SdkTokenMarketData,\n): TokenMarketData {\n return {\n totalSupply: input.totalSupply ?? undefined,\n marketCap: input.marketCapInSol ?? undefined,\n marketCapInUsd: input.marketCapInUsd ?? undefined,\n price: input.priceInSol ?? undefined,\n priceInUsd: input.priceInUsd ?? undefined,\n tvl: input.totalTvlInSol ?? undefined,\n tvlInUsd: input.totalTvlInUsd ?? undefined,\n holders: input.holders ? parseInt(input.holders) : undefined,\n top10Holdings: input.top10TotalHoldings ?? undefined,\n top10HoldingsRatio: input.top10HoldingsRatio ?? undefined,\n top50Holdings: input.top50TotalHoldings ?? undefined,\n top50HoldingsRatio: input.top50HoldingsRatio ?? undefined,\n top100Holdings: input.top100TotalHoldings ?? undefined,\n top100HoldingsRatio: input.top100HoldingsRatio ?? undefined,\n bluechipHolders: input.bluechipTotalHolders\n ? parseInt(input.bluechipTotalHolders)\n : undefined,\n bluechipHoldings: input.bluechipTotalHoldings ?? undefined,\n bluechipHoldingsRatio: input.bluechipHoldingsRatio ?? undefined,\n kolHolders: input.kolTotalHolders\n ? parseInt(input.kolTotalHolders)\n : undefined,\n kolHoldings: input.kolTotalHoldings ?? undefined,\n kolHoldingsRatio: input.kolHoldingsRatio ?? undefined,\n sniperHolders: input.sniperTotalHolders\n ? parseInt(input.sniperTotalHolders)\n : undefined,\n sniperHoldings: input.sniperTotalHoldings ?? undefined,\n sniperHoldingsRatio: input.sniperHoldingsRatio ?? undefined,\n proHolders: input.proTotalHolders\n ? parseInt(input.proTotalHolders)\n : undefined,\n proHoldings: input.proTotalHoldings ?? undefined,\n proHoldingsRatio: input.proHoldingsRatio ?? undefined,\n insiderHolders: input.insiderTotalHolders\n ? parseInt(input.insiderTotalHolders)\n : undefined,\n insiderHoldings: input.insiderTotalHoldings ?? undefined,\n insiderHoldingsRatio: input.insiderHoldingsRatio ?? undefined,\n sandwichHolders: input.sandwishTotalHolders\n ? parseInt(input.sandwishTotalHolders)\n : undefined,\n sandwichHoldings: input.sandwishTotalHoldings ?? undefined,\n sandwichHoldingsRatio: input.sandwishHoldingsRatio ?? undefined,\n freshHolders: input.freshTotalHolders\n ? parseInt(input.freshTotalHolders)\n : undefined,\n freshHoldings: input.freshTotalHoldings ?? undefined,\n freshHoldingsRatio: input.freshHoldingsRatio ?? undefined,\n bundleHolders: input.bundleTotalHolders\n ? parseInt(input.bundleTotalHolders)\n : undefined,\n bundleHoldings: input.bundleTotalHoldings ?? undefined,\n bundleHoldingsRatio: input.bundleHoldingsRatio ?? undefined,\n devHolders: input.devTotalHolders\n ? parseInt(input.devTotalHolders)\n : undefined,\n devHoldings: input.devTotalHoldings ?? undefined,\n devHoldingsRatio: input.devHoldingsRatio ?? undefined,\n };\n}\n\nexport function fromTokenCandle(\n input: SdkTokenCandle,\n resolution: TokenResolution,\n): TokenCandle {\n return {\n open: input.open,\n close: input.close,\n high: input.high,\n low: input.low,\n volume: input.volume,\n resolution,\n timestamp: new Date(input.timestamp),\n };\n}\n\nfunction fromResolutionDTO(resolution: string): TokenResolution {\n if (resolution === \"1d\") return \"24h\";\n return resolution as TokenResolution;\n}\n\nexport function fromTokenSecurity(\n input: Record<string, unknown>,\n): TokenSecurity {\n return {\n hasTransferFee: input.hasTransferFee as boolean | undefined,\n isTransferFeeUpgradable: input.isTransferFeeUpgradable as\n | boolean\n | undefined,\n isTransferable: input.isTransferable as boolean | undefined,\n isFreezable: input.isFreezable as boolean | undefined,\n isClosable: input.isClosable as boolean | undefined,\n };\n}\nconst solanaChains: ReadonlySet<Chain> = new Set([\n Chain.SOLANA,\n Chain.SOLANA_TESTNET,\n Chain.SOLANA_DEVNET,\n]);\n\n/** EVM chains use this address to denote the native token (ETH, BNB, etc.). */\nconst EVM_NATIVE_ADDRESS = \"0x0000000000000000000000000000000000000000\";\n\n/**\n * KyberSwap API expects this sentinel for native token (ETH/BNB/etc.),\n * not the zero address. See KyberSwap docs / 400 on route when using 0x0.\n * Exported for use when building route request bodies outside Client.swapRoute.\n */\nexport const KYBERSWAP_NATIVE_SENTINEL =\n \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\";\n\n/**\n * Jupiter does not accept Solana's native SOL address (System Program);\n * it requires the wrapped SOL (WSOL) mint instead.\n */\nfunction toJupiterMint(address: string): string {\n return address === SOLANA_TOKENS.native.address\n ? SOLANA_TOKENS.wrapped.address\n : address;\n}\n\n/**\n * KyberSwap does not accept EVM zero address (0x0) for native token;\n * it requires the native sentinel address 0xEee...\n */\nfunction toKyberSwapMint(address: string): string {\n return address.toLowerCase() === EVM_NATIVE_ADDRESS.toLowerCase()\n ? KYBERSWAP_NATIVE_SENTINEL\n : address;\n}\n\n/**\n * Resolves effective DEX from params: explicit dex or inferred from chain.\n * Mint conversion (native → sentinel) is chosen by this DEX, not by chain alone.\n */\nfunction effectiveDex(params: API.SwapParams): \"jupiter\" | \"kyberswap\" {\n if (params.dex) return params.dex;\n return solanaChains.has(params.chain) ? \"jupiter\" : \"kyberswap\";\n}\n\nfunction toMintForDex(dex: \"jupiter\" | \"kyberswap\", address: string): string {\n return dex === \"jupiter\"\n ? toJupiterMint(address)\n : dex === \"kyberswap\"\n ? toKyberSwapMint(address)\n : address;\n}\n\n/**\n * Returns the token address to send in route API for the given DEX.\n * Use this when building route request bodies manually (e.g. in a BFF or custom fetch).\n * For KyberSwap, EVM native (0x0) is converted to KYBERSWAP_NATIVE_SENTINEL.\n */\nexport function toMintForRoute(\n dex: \"jupiter\" | \"kyberswap\",\n address: string,\n): string {\n return toMintForDex(dex, address);\n}\n\nexport function toSwapRouteInput(params: API.SwapParams): SwapRouteInput {\n const dex = effectiveDex(params);\n const inputMint = toMintForDex(dex, params.input);\n const outputMint = toMintForDex(dex, params.output);\n return {\n dex: dex as SwapRouteInput[\"dex\"],\n userAddress: params.userAddress,\n amount: params.amount,\n swapMode: (params.mode === API.SwapMode.EXACT_IN\n ? SwapRouteInputSwapMode.ExactIn\n : SwapRouteInputSwapMode.ExactOut) as SwapRouteInput[\"swapMode\"],\n slippage: params.slippage ?? 1,\n inputMint,\n outputMint,\n priorityFee: params.priorityFee,\n ...(params.tipFee && { tipFee: params.tipFee }),\n ...(params.isAntiMev != null && { isAntiMev: params.isAntiMev }),\n ...(params.permit && { permit: params.permit }),\n ...(params.deadline != null && { deadline: params.deadline }),\n };\n}\n\nexport function toSendTxInput(params: API.SendTxParams): SendTxInput {\n return {\n signedTx: params.serializedTx,\n };\n}\n\nexport function fromTokenHolderPage(\n input: PageResponseTokenHolder,\n): API.CursorList<TokenHolder> {\n return {\n startCursor: nullToUndefined(input.startCursor),\n endCursor: nullToUndefined(input.endCursor),\n hasPrev: input.hasPrev,\n hasNext: input.hasNext,\n data: input.data.map((holder) => ({\n address: holder.walletAddress,\n amount: holder.amount,\n amountInUsd: holder.amountInUsd,\n ratio: holder.percentage,\n })),\n };\n}\n\nexport function fromTokenPage(\n input: ChainStreamTokenPage,\n): API.SearchTokenCursorList {\n return {\n startCursor: nullToUndefined(input.startCursor),\n endCursor: nullToUndefined(input.endCursor),\n hasPrev: input.hasPrev,\n hasNext: input.hasNext,\n data: input.data.map(fromTokenDTO),\n extra: nullToUndefined(input.countsByProtocols),\n };\n}\n\nexport function fromSwapRoute(input: SwapRouteResponse): API.SwapRoute {\n return {\n serializedTx: input.serializedTx,\n plans: [],\n extra: input.routeInfo,\n };\n}\n\nexport function fromSendTxResult(input: SendTxResponse): API.SendTxResult {\n return {\n txHash: input.signature,\n extra: { jobId: input.jobId, elapsedTime: input.elapsedTime },\n };\n}\n\nexport function fromWalletPortfolios(\n chain: Chain,\n input: WalletNetWorthPage,\n): WalletPortfolios {\n const portfolios: Portfolio[] = (input.data ?? []).map((item) => ({\n chain: fromChainDTO(item.chain),\n address: item.tokenAddress,\n name: item.name,\n symbol: item.symbol,\n image: nullToUndefined(item.logoUri),\n priceInUsd: item.priceInUsd,\n priceInNative: item.priceInNative,\n amount: item.amount,\n amountInUsd: item.valueInUsd,\n amountInNative: item.valueInNative,\n decimals: item.decimals,\n }));\n\n return {\n chain: portfolios[0]?.chain ?? chain,\n address: input.walletAddress,\n balanceInUsd: input.totalValueInUsd,\n balanceInNative: input.totalValueInNative,\n startCursor: nullToUndefined(input.startCursor),\n endCursor: nullToUndefined(input.endCursor),\n hasPrev: input.hasPrev,\n hasNext: input.hasNext,\n portfolios,\n };\n}\n\nexport function fromWalletPnlSummary(\n chain: Chain,\n address: string,\n input: WalletPnlSummary,\n): WalletPnl {\n return {\n chain,\n address,\n tokens: input.tokens ? Number(input.tokens) : undefined,\n buys: input.buys ? Number(input.buys) : undefined,\n sells: input.sells ? Number(input.sells) : undefined,\n totalTrades: input.totalTrades ? Number(input.totalTrades) : undefined,\n wins: input.wins ? Number(input.wins) : undefined,\n losses: input.losses ? Number(input.losses) : undefined,\n winRate: nullToUndefined(input.winRate),\n buyAmountInUsd: nullToUndefined(input.buyAmountInUsd),\n sellAmountInUsd: nullToUndefined(input.sellAmountInUsd),\n totalCostInUsd: nullToUndefined(input.totalCostInUsd),\n realizedProfitInUsd: nullToUndefined(input.realizedProfitInUsd),\n realizedProfitRatio: nullToUndefined(input.realizedProfitRatio),\n unrealizedProfitInUsd: nullToUndefined(input.unrealizedProfitInUsd),\n unrealizedProfitRatio: nullToUndefined(input.unrealizedProfitRatio),\n totalProfitInUsd: nullToUndefined(input.totalProfitInUsd),\n totalProfitRatio: nullToUndefined(input.totalProfitRatio),\n avgProfitPerTradeInUsd: nullToUndefined(input.avgProfitPerTradeInUsd),\n };\n}\n\nexport function fromPnlDetailsPage(\n chain: Chain,\n address: string,\n input: PnlDetailsResult,\n): WalletPortfolioPnls {\n const portfolios: PortfolioPnl[] = input.data.map((item) => ({\n chain,\n address: item.tokenAddress,\n name: item.name ?? \"\",\n symbol: item.symbol ?? \"\",\n image: nullToUndefined(item.logoUri),\n amount: item.balance,\n amountInUsd: item.currentValue,\n priceInUsd: item.priceInUsd,\n decimals: item.decimals ?? 0,\n totalTrades: Number(item.totalTrades),\n buys: Number(item.buys),\n buyVolumes: item.buyAmount,\n buyVolumesInUsd: item.buyAmountInUsd,\n buyAvgPriceInUsd: item.avgBuyPriceInUsd,\n sells: Number(item.sells),\n sellVolumes: item.sellAmount,\n sellVolumesInUsd: item.sellAmountInUsd,\n sellAvgPriceInUsd: item.avgSellPriceInUsd,\n realizedProfitInUsd: item.realizedProfitInUsd,\n realizedProfitRatio: item.realizedProfitRatio,\n unrealizedProfitInUsd: item.unrealizedProfitInUsd,\n unrealizedProfitRatio: item.unrealizedProfitRatio,\n totalProfitInUsd: item.totalProfitInUsd,\n totalProfitRatio: item.totalProfitRatio,\n }));\n\n return {\n chain,\n address,\n tokens: Number(input.summary.tokens),\n buys: Number(input.summary.buys),\n sells: Number(input.summary.sells),\n totalTrades: Number(input.summary.totalTrades),\n wins: Number(input.summary.wins),\n losses: Number(input.summary.losses),\n winRate: nullToUndefined(input.summary.winRate),\n buyAmountInUsd: nullToUndefined(input.summary.buyAmountInUsd),\n sellAmountInUsd: nullToUndefined(input.summary.sellAmountInUsd),\n totalCostInUsd: input.summary.totalCostInUsd,\n realizedProfitInUsd: nullToUndefined(input.summary.realizedProfitInUsd),\n realizedProfitRatio: nullToUndefined(input.summary.realizedProfitRatio),\n unrealizedProfitInUsd: nullToUndefined(input.summary.unrealizedProfitInUsd),\n totalProfitInUsd: nullToUndefined(input.summary.totalProfitInUsd),\n startCursor: nullToUndefined(input.startCursor),\n endCursor: nullToUndefined(input.endCursor),\n hasPrev: input.hasPrev,\n hasNext: input.hasNext,\n portfolios,\n };\n}\n\nexport function fromWalletNetWorthByTokens(\n chain: Chain,\n input: NetWorthByTokensResult,\n): Portfolio[] {\n return (input.data ?? []).map((item) => ({\n chain: fromChainDTO(item.chain),\n address: item.tokenAddress,\n name: item.name,\n symbol: item.symbol,\n image: nullToUndefined(item.logoUri),\n priceInUsd: item.priceInUsd,\n priceInNative: item.priceInNative,\n amount: item.amount,\n amountInUsd: item.valueInUsd,\n amountInNative: item.valueInNative,\n decimals: item.decimals,\n }));\n}\n\nexport function fromPnlDetailItems(\n chain: Chain,\n input: PnlDetailsResult,\n): PortfolioPnl[] {\n return input.data.map((item) => ({\n chain,\n address: item.tokenAddress,\n name: item.name ?? \"\",\n symbol: item.symbol ?? \"\",\n image: nullToUndefined(item.logoUri),\n amount: item.balance,\n amountInUsd: item.currentValue,\n priceInUsd: item.priceInUsd,\n decimals: item.decimals ?? 0,\n totalTrades: Number(item.totalTrades),\n buys: Number(item.buys),\n buyVolumes: item.buyAmount,\n buyVolumesInUsd: item.buyAmountInUsd,\n buyAvgPriceInUsd: item.avgBuyPriceInUsd,\n sells: Number(item.sells),\n sellVolumes: item.sellAmount,\n sellVolumesInUsd: item.sellAmountInUsd,\n sellAvgPriceInUsd: item.avgSellPriceInUsd,\n realizedProfitInUsd: item.realizedProfitInUsd,\n realizedProfitRatio: item.realizedProfitRatio,\n unrealizedProfitInUsd: item.unrealizedProfitInUsd,\n unrealizedProfitRatio: item.unrealizedProfitRatio,\n totalProfitInUsd: item.totalProfitInUsd,\n totalProfitRatio: item.totalProfitRatio,\n }));\n}\n\nexport function fromTradePage(\n input: PageResponseTradeDetail,\n): API.CursorList<Trade> {\n return {\n startCursor: nullToUndefined(input.startCursor),\n endCursor: nullToUndefined(input.endCursor),\n hasPrev: input.hasPrev,\n hasNext: input.hasNext,\n data: input.data.map(fromTradeDetailDTO),\n };\n}\n\nfunction fromTradeDetailDTO(\n input: PageResponseTradeDetail[\"data\"][number],\n): Trade {\n const isBuy = input.type.toLowerCase() === \"buy\";\n return {\n chain: fromChainDTO(input.chain),\n walletAddress: input.accountOwnerAddress,\n txHash: input.transactionSignature,\n type: isBuy ? \"buy\" : \"sell\",\n from: {\n address: isBuy ? input.sideTokenAddress : input.tokenAddress,\n symbol: isBuy ? input.sideTokenSymbol : input.tokenSymbol,\n name: isBuy ? input.sideTokenName : input.tokenName,\n image: nullToUndefined(\n isBuy ? input.sideTokenImageUrl : input.tokenImageUrl,\n ),\n amount: isBuy ? input.sideTokenAmount : input.tokenAmount,\n amountInUsd: isBuy ? input.sideTokenAmountInUsd : input.tokenAmountInUsd,\n priceInUsd: isBuy ? input.sideTokenPriceInUsd : input.tokenPriceInUsd,\n },\n to: {\n address: isBuy ? input.tokenAddress : input.sideTokenAddress,\n symbol: isBuy ? input.tokenSymbol : input.sideTokenSymbol,\n name: isBuy ? input.tokenName : input.sideTokenName,\n image: nullToUndefined(\n isBuy ? input.tokenImageUrl : input.sideTokenImageUrl,\n ),\n amount: isBuy ? input.tokenAmount : input.sideTokenAmount,\n amountInUsd: isBuy ? input.tokenAmountInUsd : input.sideTokenAmountInUsd,\n priceInUsd: isBuy ? input.tokenPriceInUsd : input.sideTokenPriceInUsd,\n },\n dex: {\n programAddress: nullToUndefined(input.dexProgramAddress),\n protocolFamily: nullToUndefined(input.dexProtocolFamily),\n image: nullToUndefined(input.dexImage),\n },\n poolAddress: nullToUndefined(input.poolAddress),\n status: (input.status as Trade[\"status\"]) ?? \"success\",\n time: new Date(input.blockTimestamp * 1000),\n };\n}\n\nexport function fromActivityPage(\n input: PageResponseTradeDetail,\n): API.CursorList<Activity> {\n return {\n startCursor: nullToUndefined(input.startCursor),\n endCursor: nullToUndefined(input.endCursor),\n hasPrev: input.hasPrev,\n hasNext: input.hasNext,\n data: input.data.map(fromActivityDetailDTO),\n };\n}\n\nfunction fromActivityDetailDTO(\n input: PageResponseTradeDetail[\"data\"][number],\n): Activity {\n const type = input.type.toLowerCase().replace(/ /g, \"_\") as ActivityType;\n const isBuy = type === \"buy\";\n return {\n chain: fromChainDTO(input.chain),\n walletAddress: input.accountOwnerAddress,\n txHash: input.transactionSignature,\n type,\n from: {\n address: isBuy ? input.sideTokenAddress : input.tokenAddress,\n symbol: isBuy ? input.sideTokenSymbol : input.tokenSymbol,\n name: isBuy ? input.sideTokenName : input.tokenName,\n image: nullToUndefined(\n isBuy ? input.sideTokenImageUrl : input.tokenImageUrl,\n ),\n amount: isBuy ? input.sideTokenAmount : input.tokenAmount,\n amountInUsd: isBuy ? input.sideTokenAmountInUsd : input.tokenAmountInUsd,\n priceInUsd: isBuy ? input.sideTokenPriceInUsd : input.tokenPriceInUsd,\n },\n to: {\n address: isBuy ? input.tokenAddress : input.sideTokenAddress,\n symbol: isBuy ? input.tokenSymbol : input.sideTokenSymbol,\n name: isBuy ? input.tokenName : input.sideTokenName,\n image: nullToUndefined(\n isBuy ? input.tokenImageUrl : input.sideTokenImageUrl,\n ),\n amount: isBuy ? input.tokenAmount : input.sideTokenAmount,\n amountInUsd: isBuy ? input.tokenAmountInUsd : input.sideTokenAmountInUsd,\n priceInUsd: isBuy ? input.tokenPriceInUsd : input.sideTokenPriceInUsd,\n },\n dex: {\n programAddress: nullToUndefined(input.dexProgramAddress),\n protocolFamily: nullToUndefined(input.dexProtocolFamily),\n image: nullToUndefined(input.dexImage),\n },\n poolAddress: nullToUndefined(input.poolAddress),\n status: (input.status as Activity[\"status\"]) ?? \"success\",\n time: new Date(input.blockTimestamp * 1000),\n };\n}\n\nexport function fromTokenSubscribed(\n chain: Chain,\n input: WsNewToken,\n): API.TokenSubscribed {\n return {\n chain,\n address: input.tokenAddress,\n name: input.name,\n symbol: input.symbol,\n decimals: input.decimals,\n createdAt: input.createdAtMs ? new Date(input.createdAtMs) : undefined,\n launchedFrom: input.launchFrom\n ? {\n programAddress: input.launchFrom.programAddress,\n protocolFamily: input.launchFrom.protocolFamily,\n }\n : undefined,\n };\n}\n\nexport function fromTokenMetadataSubscribed(\n chain: Chain,\n input: WsTokenMetadata,\n): API.TokenSubscribed {\n return {\n chain,\n address: input.tokenAddress,\n name: input.name,\n symbol: input.symbol,\n decimals: input.decimals,\n image: input.imageUrl,\n description: input.description,\n socialMedias: input.socialMedia ? { ...input.socialMedia } : undefined,\n createdAt: input.createdAtMs ? new Date(input.createdAtMs) : undefined,\n launchedFrom: input.launchFrom\n ? {\n programAddress: input.launchFrom.programAddress,\n protocolFamily: input.launchFrom.protocolFamily,\n }\n : undefined,\n migratedTo: input.migratedTo\n ? {\n programAddress: input.migratedTo.programAddress,\n protocolFamily: input.migratedTo.protocolFamily,\n }\n : undefined,\n };\n}\n\n// ====================================\n// WebSocket data conversion functions\n// ====================================\n\nexport function fromWsCandle(input: WsCandle): TokenCandle {\n return {\n open: input.open,\n close: input.close,\n high: input.high,\n low: input.low,\n volume: input.volume,\n resolution: fromResolutionDTO(input.resolution),\n timestamp: new Date(input.time),\n };\n}\n\nexport function fromWsTokenStats(input: WsTokenStat): TokenStats {\n const timeframes = [\"1m\", \"5m\", \"15m\", \"30m\", \"1h\", \"4h\", \"24h\"] as const;\n const record = input as unknown as Record<\n string,\n number | string | undefined\n >;\n const result: TokenStats = {};\n\n for (const tf of timeframes) {\n const buys = record[`buys${tf}`] as number | undefined;\n const sells = record[`sells${tf}`] as number | undefined;\n const buyers = record[`buyers${tf}`] as number | undefined;\n const sellers = record[`sellers${tf}`] as number | undefined;\n const buyVolumeInUsd = record[`buyVolumeInUsd${tf}`] as string | undefined;\n const sellVolumeInUsd = record[`sellVolumeInUsd${tf}`] as\n | string\n | undefined;\n const trades = record[`trades${tf}`] as number | undefined;\n const price = record[`price${tf}`] as string | undefined;\n const openInUsd = record[`openInUsd${tf}`] as string | undefined;\n const closeInUsd = record[`closeInUsd${tf}`] as string | undefined;\n\n const hasData =\n buys !== undefined ||\n sells !== undefined ||\n trades !== undefined ||\n price !== undefined;\n\n if (!hasData) continue;\n\n const totalTrades =\n trades ??\n (buys !== undefined && sells !== undefined ? buys + sells : undefined);\n const totalTraders =\n buyers !== undefined && sellers !== undefined\n ? buyers + sellers\n : undefined;\n const totalVolumesInUsd =\n buyVolumeInUsd !== undefined && sellVolumeInUsd !== undefined\n ? new SafeBigNumber(buyVolumeInUsd).plus(sellVolumeInUsd).toString()\n : undefined;\n const priceChange =\n openInUsd && closeInUsd && new SafeBigNumber(openInUsd).gt(0)\n ? new SafeBigNumber(closeInUsd)\n .minus(openInUsd)\n .div(openInUsd)\n .toString()\n : undefined;\n\n result[tf] = {\n buys,\n sells,\n trades: totalTrades,\n buyers,\n sellers,\n traders: totalTraders,\n buyVolumesInUsd: buyVolumeInUsd,\n sellVolumesInUsd: sellVolumeInUsd,\n volumesInUsd: totalVolumesInUsd,\n openPriceInUsd: openInUsd,\n closePriceInUsd: closeInUsd,\n priceInUsd: price ?? closeInUsd,\n priceChange,\n };\n }\n\n return result;\n}\n\nexport function fromWsTokenMarketDataFromStats(\n input: WsTokenStat,\n): TokenMarketData {\n return {\n priceInUsd: input.price,\n };\n}\n\nexport function fromWsTokenDataSubscribed(\n chain: Chain,\n input: WsTokenStat,\n): API.TokenSubscribed {\n return {\n chain,\n address: input.address,\n stats: fromWsTokenStats(input),\n marketData: fromWsTokenMarketDataFromStats(input),\n };\n}\n\nexport function fromWsTokenSupplyToSubscribed(\n chain: Chain,\n address: string,\n input: WsTokenSupply,\n): API.TokenSubscribed {\n return {\n chain,\n address,\n marketData: {\n totalSupply: input.supply,\n marketCapInUsd: input.marketCapInUsd,\n },\n };\n}\n\nexport function fromWsTokenHolderToSubscribed(\n chain: Chain,\n address: string,\n input: WsTokenHolderDTO,\n): API.TokenSubscribed {\n return {\n chain,\n address,\n marketData: fromWsTokenMarketDataFromHolder(input),\n };\n}\n\nexport function fromWsTokenLiquidityToSubscribed(\n chain: Chain,\n address: string,\n input: WsTokenLiquidity,\n): API.TokenSubscribed {\n if (input.metricType === WsMetricType.LIQUIDITY_IN_USD) {\n return {\n chain,\n address,\n marketData: { tvlInUsd: input.value },\n };\n }\n if (input.metricType === WsMetricType.MIGRATED_RATIO) {\n return {\n chain,\n address,\n migrateProgress: new SafeBigNumber(input.value).shiftedBy(2).toString(),\n };\n }\n return { chain, address };\n}\n\nexport function fromWsTokenBondingCurveToSubscribed(\n chain: Chain,\n input: WsTokenBondingCurve,\n): API.TokenSubscribed {\n return {\n chain,\n address: input.tokenAddress ?? \"\",\n migrateProgress: input.progressRatio\n ? new SafeBigNumber(input.progressRatio).shiftedBy(2).toString()\n : undefined,\n };\n}\n\nexport function fromWsTokenMaxLiquidityToSubscribed(\n chain: Chain,\n address: string,\n input: WsTokenMaxLiquidity,\n): API.TokenSubscribed {\n return {\n chain,\n address,\n liquidities: [\n {\n poolAddress: input.poolAddress,\n tvlInUsd: input.liquidityInUsd,\n tvl: input.liquidityInNative,\n },\n ],\n };\n}\n\nexport function fromWsTokenTotalLiquidityToSubscribed(\n chain: Chain,\n address: string,\n input: WsTokenTotalLiquidity,\n): API.TokenSubscribed {\n return {\n chain,\n address,\n marketData: {\n tvlInUsd: input.liquidityInUsd,\n tvl: input.liquidityInNative,\n },\n };\n}\n\nexport function fromWsTokenMarketDataFromHolder(\n input: WsTokenHolderDTO,\n): Partial<TokenMarketData> {\n return {\n holders: input.holders,\n top10Holdings: input.top10HoldersAmount,\n top10HoldingsRatio: input.top10HoldersRatio,\n top50Holdings: input.top50HoldersAmount,\n top50HoldingsRatio: input.top50HoldersRatio,\n top100Holdings: input.top100HoldersAmount,\n top100HoldingsRatio: input.top100HoldersRatio,\n devHolders:\n input.balanceTagDevHolders === undefined\n ? undefined\n : input.balanceTagDevHolders,\n devHoldings: input.balanceTagDevAmount,\n devHoldingsRatio: input.balanceTagDevRatio,\n sniperHolders:\n input.balanceTagSniperHolders === undefined\n ? undefined\n : input.balanceTagSniperHolders,\n sniperHoldings: input.balanceTagSniperAmount,\n sniperHoldingsRatio: input.balanceTagSniperRatio,\n freshHolders:\n input.balanceTagFreshHolders === undefined\n ? undefined\n : input.balanceTagFreshHolders,\n freshHoldings: input.balanceTagFreshAmount,\n freshHoldingsRatio: input.balanceTagFreshRatio,\n bundleHolders:\n input.balanceTagBundleHolders === undefined\n ? undefined\n : input.balanceTagBundleHolders,\n bundleHoldings: input.balanceTagBundleAmount,\n bundleHoldingsRatio: input.balanceTagBundleRatio,\n sandwichHolders:\n input.balanceTagSandwichHolders === undefined\n ? undefined\n : input.balanceTagSandwichHolders,\n sandwichHoldings: input.balanceTagSandwichAmount,\n sandwichHoldingsRatio: input.balanceTagSandwichRatio,\n };\n}\n\nexport function fromWsTradeActivity(\n chain: Chain,\n input: WsTradeActivity,\n): Trade {\n const isBuy = input.kind.toLowerCase() === \"buy\";\n return {\n chain,\n walletAddress: isBuy ? input.buyWalletAddress : input.sellWalletAddress,\n txHash: input.txHash,\n type: isBuy ? \"buy\" : \"sell\",\n from: {\n address: input.sellTokenAddress,\n symbol: input.sellTokenSymbol,\n name: input.sellTokenName,\n amount: input.sellAmount,\n amountInUsd: input.sellAmountInUsd,\n },\n to: {\n address: input.buyTokenAddress,\n symbol: input.buyTokenSymbol,\n name: input.buyTokenName,\n amount: input.buyAmount,\n amountInUsd: input.buyAmountInUsd,\n },\n status: \"success\",\n time: new Date(input.timestamp),\n };\n}\n\nexport function fromWsActivity(chain: Chain, input: WsTradeActivity): Activity {\n const type = input.kind.toLowerCase().replace(/ /g, \"_\") as ActivityType;\n const isBuy = type === \"buy\";\n return {\n chain,\n walletAddress: isBuy ? input.buyWalletAddress : input.sellWalletAddress,\n txHash: input.txHash,\n type,\n from: {\n address: input.sellTokenAddress,\n symbol: input.sellTokenSymbol,\n name: input.sellTokenName,\n amount: input.sellAmount,\n amountInUsd: input.sellAmountInUsd,\n },\n to: {\n address: input.buyTokenAddress,\n symbol: input.buyTokenSymbol,\n name: input.buyTokenName,\n amount: input.buyAmount,\n amountInUsd: input.buyAmountInUsd,\n },\n status: \"success\",\n time: new Date(input.timestamp),\n };\n}\n","import {\n ChainStreamClient,\n ChainSymbol,\n TokenField,\n SortDirection,\n TradeType,\n ActivityType as SdkActivityType,\n SearchSortBy,\n WsNewToken,\n WsTokenMetadata,\n WsCandle,\n WsTokenStat,\n WsTradeActivity,\n WsWalletBalance,\n WsWalletTokenPnl,\n WsChannelType,\n WsWalletPnl,\n WsTokenSupply,\n WsTokenHolder,\n WsTokenLiquidity,\n WsTokenMaxLiquidity,\n WsTokenTotalLiquidity,\n WsTokenBondingCurve,\n} from \"@chainstream-io/sdk\";\nimport {\n API,\n Chain,\n Token,\n TokenCandle,\n TokenHolder,\n TokenMarketData,\n TokenResolution,\n TokenSecurity,\n TokenStats,\n Activity,\n ActivityType,\n Trade,\n Portfolio,\n PortfolioPnl,\n WalletPnl,\n WalletPortfolioPnls,\n WalletPortfolios,\n} from \"@liberfi.io/types\";\nimport {\n toChainDTO,\n toResolutionDTO,\n fromTokenStatsDTO,\n fromTokenMarketDataDTO,\n toSortDirectionDTO,\n toFieldDTO,\n toRangeFiltersDTO,\n toSearchFieldDTO,\n fromTokenPage,\n fromSwapRoute,\n fromSendTxResult,\n fromWalletPortfolios,\n fromTradePage,\n fromTokenSubscribed,\n fromTokenMetadataSubscribed,\n fromTokenDTO,\n fromTokenCandle,\n fromTokenSecurity,\n fromTokenHolderPage,\n toSendTxInput,\n toSwapRouteInput,\n fromWsCandle,\n fromWsTokenDataSubscribed,\n fromWsTokenSupplyToSubscribed,\n fromWsTokenHolderToSubscribed,\n fromWsTokenLiquidityToSubscribed,\n fromWsTokenMaxLiquidityToSubscribed,\n fromWsTokenTotalLiquidityToSubscribed,\n fromWsTokenBondingCurveToSubscribed,\n fromWsTradeActivity,\n fromActivityPage,\n fromWsActivity,\n fromWalletPnlSummary,\n fromPnlDetailsPage,\n fromWalletNetWorthByTokens,\n fromPnlDetailItems,\n} from \"./utils\";\n\n/** Async or sync token provider for authentication. */\nexport interface ClientTokenProviderFn {\n getToken(): Promise<string> | string;\n}\n\nexport type ClientTokenProvider = ClientTokenProviderFn | string;\n\nexport interface ClientOptions {\n debug?: boolean;\n serverUrl?: string;\n streamUrl?: string;\n autoConnectWebSocket?: boolean;\n /**\n * Temporary fallback: when set, all token balances (native + SPL / ERC-20)\n * are fetched from this URL instead of the upstream wallet API.\n * Expected endpoint: `GET {url}?chain=sol|eth|bnb&address=<wallet>[&tokens=addr1,addr2,...]`\n * Response shape: `{ balances: Array<{ address: string; balance: string; decimals: number }> }`\n * Remove this option once the upstream balance API is fixed.\n */\n nativeBalanceApiUrl?: string;\n}\n\nexport class Client implements API.IClient, API.ISubscribeClient {\n // ChainStream client instance\n private readonly _client: ChainStreamClient;\n\n constructor(\n private readonly accessToken: ClientTokenProvider,\n private readonly options?: ClientOptions,\n ) {\n this._client = new ChainStreamClient(this.accessToken, this.options);\n }\n\n async getToken(chain: Chain, address: string): Promise<Token> {\n const token = await this._client.token.getToken(toChainDTO(chain), address);\n return fromTokenDTO(token);\n }\n\n async getTokens(\n chain: Chain,\n addresses: Array<string>,\n ): Promise<Array<Token>> {\n const tokens = await this._client.token.getTokens(toChainDTO(chain), {\n tokenAddresses: addresses.join(\",\"),\n });\n return tokens.map(fromTokenDTO);\n }\n\n async getTokenCandles(\n chain: Chain,\n address: string,\n resolution: TokenResolution,\n options?: API.GetTokenCandlesOptions,\n ): Promise<Array<TokenCandle>> {\n const candles = await this._client.token.getCandles(\n toChainDTO(chain),\n address,\n {\n resolution: toResolutionDTO(resolution),\n from: options?.after?.getTime(),\n to: options?.before?.getTime(),\n limit: options?.limit,\n },\n );\n return candles.map((c) => fromTokenCandle(c, resolution));\n }\n\n async getTokenSecurity(\n chain: Chain,\n address: string,\n ): Promise<TokenSecurity> {\n const security = await this._client.token.getSecurity(\n toChainDTO(chain),\n address,\n );\n return fromTokenSecurity(security as Record<string, unknown>);\n }\n\n async getTokenStats(chain: Chain, address: string): Promise<TokenStats> {\n const stats = await this._client.token.getStats(toChainDTO(chain), address);\n return fromTokenStatsDTO(stats);\n }\n\n async getTokenHolders(\n chain: Chain,\n address: string,\n options?: API.CursorListOptions,\n ): Promise<API.CursorList<TokenHolder>> {\n const holders = await this._client.token.getHolders(\n toChainDTO(chain),\n address,\n {\n cursor: options?.cursor,\n limit: options?.limit,\n direction: options?.direction,\n },\n );\n return fromTokenHolderPage(holders);\n }\n\n async getTokenMarketData(\n chain: Chain,\n address: string,\n ): Promise<TokenMarketData> {\n const marketData = await this._client.token.getMarketData(\n toChainDTO(chain),\n address,\n );\n return fromTokenMarketDataDTO(marketData);\n }\n\n async getNewTokens(\n chain: Chain,\n options?: API.GetTokenListOptions,\n ): Promise<Array<Token>> {\n const tokens = await this._client.ranking.getNewTokens(\n toChainDTO(chain),\n this._buildRankingParams(options),\n );\n return tokens.map(fromTokenDTO);\n }\n\n async getFinalStretchTokens(\n chain: Chain,\n options?: API.GetTokenListOptions,\n ): Promise<Array<Token>> {\n const tokens = await this._client.ranking.getFinalStretchTokens(\n toChainDTO(chain),\n this._buildRankingParams(options),\n );\n return tokens.map(fromTokenDTO);\n }\n\n async getMigratedTokens(\n chain: Chain,\n options?: API.GetTokenListOptions,\n ): Promise<Array<Token>> {\n const tokens = await this._client.ranking.getMigratedTokens(\n toChainDTO(chain),\n this._buildRankingParams(options),\n );\n return tokens.map(fromTokenDTO);\n }\n\n async getTrendingTokens(\n chain: Chain,\n resolution: \"1m\" | \"5m\" | \"1h\" | \"4h\" | \"24h\",\n options?: API.GetTokenListOptions,\n ): Promise<Array<Token>> {\n const tokens = await this._client.ranking.getHotTokens(\n toChainDTO(chain),\n resolution,\n this._buildRankingParams(options),\n );\n return tokens.map(fromTokenDTO);\n }\n\n async getStockTokens(\n chain: Chain,\n options?: API.GetTokenListOptions,\n ): Promise<Array<Token>> {\n const tokens = await this._client.ranking.getStocksTokens(\n toChainDTO(chain),\n this._buildRankingParams(options),\n );\n return tokens.map(fromTokenDTO);\n }\n\n async searchTokens(\n options?: API.SearchTokensOptions,\n ): Promise<API.SearchTokenCursorList> {\n const tokenPage = await this._client.token.search({\n chains: options?.chains?.map(toChainDTO),\n q: options?.keyword,\n limit: options?.limit,\n cursor: options?.cursor,\n sortBy: options?.sortBy\n ? (toSearchFieldDTO(options.sortBy) as SearchSortBy)\n : undefined,\n sort: options?.sortDirection,\n // TODO protocols\n });\n return fromTokenPage(tokenPage);\n }\n\n async swapRoute(params: API.SwapParams): Promise<API.SwapRoute> {\n const route = await this._client.dex.route(\n toChainDTO(params.chain) as ChainSymbol,\n toSwapRouteInput(params),\n );\n return fromSwapRoute(route);\n }\n\n async sendTx(params: API.SendTxParams): Promise<API.SendTxResult> {\n const result = await this._client.transaction.send(\n toChainDTO(params.chain),\n toSendTxInput(params),\n );\n return fromSendTxResult(result);\n }\n\n async checkTxSuccess(\n chain: Chain,\n txHash: string,\n timeout?: number,\n ): Promise<boolean> {\n const { success } = await this._client.waitForJob<{\n id: string;\n status: string;\n success: boolean;\n }>(txHash, timeout);\n return success;\n }\n\n async getWalletPortfolios(\n chain: Chain,\n address: string,\n options?: { cursor?: string; limit?: number },\n ): Promise<WalletPortfolios> {\n const chainParam = Client._CHAIN_TO_BALANCE_PARAM[chain];\n if (chainParam && this.options?.nativeBalanceApiUrl) {\n return this._getWalletPortfoliosFromBalanceApi(\n chain,\n chainParam,\n address,\n );\n }\n const netWorth = await this._client.wallet.getNetWorth(\n toChainDTO(chain),\n address,\n { cursor: options?.cursor, limit: options?.limit ?? 100 },\n );\n return fromWalletPortfolios(chain, netWorth);\n }\n\n async getWalletPnl(\n chain: Chain,\n address: string,\n resolution?: string,\n ): Promise<WalletPnl> {\n const pnl = await this._client.wallet.getPnl(\n toChainDTO(chain),\n address,\n resolution\n ? { resolution: resolution as \"1d\" | \"7d\" | \"30d\" | \"all\" }\n : undefined,\n );\n return fromWalletPnlSummary(chain, address, pnl);\n }\n\n async getWalletPortfolioPnls(\n chain: Chain,\n address: string,\n options?: { cursor?: string; limit?: number },\n ): Promise<WalletPortfolioPnls> {\n const detailsPage = await this._client.wallet.getPnlDetails(\n toChainDTO(chain),\n address,\n {\n cursor: options?.cursor,\n limit: options?.limit ?? 100,\n },\n );\n return fromPnlDetailsPage(chain, address, detailsPage);\n }\n\n async getWalletPortfoliosByTokens(\n chain: Chain,\n address: string,\n tokenAddresses: Array<string>,\n ): Promise<Array<Portfolio>> {\n const chainParam = Client._CHAIN_TO_BALANCE_PARAM[chain];\n if (chainParam && this.options?.nativeBalanceApiUrl) {\n return this._getPortfoliosFromBalanceApi(\n chain,\n chainParam,\n address,\n tokenAddresses,\n );\n }\n const result = await this._client.wallet.getNetWorthByTokens(\n toChainDTO(chain),\n address,\n { tokenAddresses: tokenAddresses.join(\",\") },\n );\n return fromWalletNetWorthByTokens(chain, result);\n }\n\n async getWalletPortfolioPnlsByTokens(\n chain: Chain,\n address: string,\n tokenAddresses: Array<string>,\n ): Promise<Array<PortfolioPnl>> {\n const detailsPage = await this._client.wallet.getPnlByToken(\n toChainDTO(chain),\n address,\n { tokenAddresses: tokenAddresses.join(\",\") },\n );\n return fromPnlDetailItems(chain, detailsPage);\n }\n\n async getWalletTrades(\n chain: Chain,\n address: string,\n options?: API.GetTradesOptions,\n ): Promise<API.CursorList<Trade>> {\n return this._getTrades(chain, { walletAddress: address }, options);\n }\n\n async getTokenTrades(\n chain: Chain,\n address: string,\n options?: API.GetTradesOptions,\n ): Promise<API.CursorList<Trade>> {\n return this._getTrades(chain, { tokenAddress: address }, options);\n }\n\n async getWalletActivities(\n chain: Chain,\n address: string,\n options?: API.GetActivitiesOptions,\n ): Promise<API.CursorList<Activity>> {\n return this._getActivities(chain, { walletAddress: address }, options);\n }\n\n async getTokenActivities(\n chain: Chain,\n address: string,\n options?: API.GetActivitiesOptions,\n ): Promise<API.CursorList<Activity>> {\n return this._getActivities(chain, { tokenAddress: address }, options);\n }\n\n async getPresignedUploadUrl(): Promise<string> {\n const result = await this._client.ipfs.presign();\n return result.presignUrl;\n }\n\n subscribeToken(\n chain: Chain,\n address: string,\n callback: (data: Array<API.TokenSubscribed>) => void,\n ): API.ISubscription {\n const chainDTO = toChainDTO(chain);\n const subs = [\n this._client.stream.subscribeTokenStats({\n chain: chainDTO,\n tokenAddress: address,\n callback: (data: WsTokenStat) =>\n callback([fromWsTokenDataSubscribed(chain, data)]),\n }),\n this._client.stream.subscribeTokenSupply({\n chain: chainDTO,\n tokenAddress: address,\n callback: (data: WsTokenSupply) =>\n callback([fromWsTokenSupplyToSubscribed(chain, address, data)]),\n }),\n this._client.stream.subscribeTokenHolders({\n chain: chainDTO,\n tokenAddress: address,\n callback: (data: WsTokenHolder) =>\n callback([fromWsTokenHolderToSubscribed(chain, address, data)]),\n }),\n this._client.stream.subscribeTokenLiquidity({\n chain: chainDTO,\n tokenAddress: address,\n callback: (data: WsTokenLiquidity) =>\n callback([fromWsTokenLiquidityToSubscribed(chain, address, data)]),\n }),\n this._client.stream.subscribeTokenMaxLiquidity({\n chain: chainDTO,\n tokenAddress: address,\n callback: (data: WsTokenMaxLiquidity) =>\n callback([fromWsTokenMaxLiquidityToSubscribed(chain, address, data)]),\n }),\n this._client.stream.subscribeTokenTotalLiquidity({\n chain: chainDTO,\n tokenAddress: address,\n callback: (data: WsTokenTotalLiquidity) =>\n callback([\n fromWsTokenTotalLiquidityToSubscribed(chain, address, data),\n ]),\n }),\n ];\n return { unsubscribe: () => subs.forEach((s) => s.unsubscribe()) };\n }\n\n subscribeTokenCandles(\n chain: Chain,\n address: string,\n resolution: TokenResolution,\n callback: (candles: Array<TokenCandle>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeTokenCandles({\n chain: toChainDTO(chain),\n tokenAddress: address,\n resolution: toResolutionDTO(resolution),\n callback: (data: WsCandle) => callback([fromWsCandle(data)]),\n });\n }\n\n subscribeWalletPnl(\n chain: Chain,\n address: string,\n callback: (pnls: Array<API.WalletPnlSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeWalletPnlList({\n chain: toChainDTO(chain),\n walletAddress: address,\n callback: (data: WsWalletPnl[]) =>\n callback(\n data.map((item) => ({\n chain,\n address: item.walletAddress,\n buys: item.buys,\n buyAmountInUsd: item.buyAmountInUsd,\n sells: item.sells,\n sellAmountInUsd: item.sellAmountInUsd,\n wins: item.wins,\n winRate: item.winRatio,\n totalProfitInUsd: item.pnlInUsd,\n totalProfitRatio: item.pnlRatio,\n avgProfitPerTradeInUsd: item.averagePnlInUsd,\n tokens: item.tokens,\n resolution: item.resolution,\n })),\n ),\n });\n }\n\n subscribeWalletPortfolios(\n chain: Chain,\n address: string,\n callback: (portfolios: Array<API.PortfolioSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeWalletBalance({\n chain: toChainDTO(chain),\n walletAddress: address,\n callback: (data: WsWalletBalance[]) =>\n callback(\n data.map(\n (it) =>\n ({\n chain,\n walletAddress: it.walletAddress,\n tokenAddress: it.tokenAddress,\n priceInUsd: it.tokenPriceInUsd,\n amount: it.balance,\n }) as API.PortfolioSubscribed,\n ),\n ),\n });\n }\n\n subscribeWalletPortfolioPnls(\n chain: Chain,\n address: string,\n callback: (portfolioPnls: Array<API.PortfolioPnlSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeWalletPnl({\n chain: toChainDTO(chain),\n walletAddress: address,\n callback: (data: WsWalletTokenPnl) =>\n callback([\n {\n chain,\n walletAddress: data.walletAddress,\n tokenAddress: data.tokenAddress,\n openTime: data.opentime ? new Date(data.opentime) : undefined,\n closeTime: data.closetime ? new Date(data.closetime) : undefined,\n buys: data.buyCount,\n buyVolumes: data.buyAmount,\n buyVolumesInUsd: data.buyAmountInUsd,\n buyAvgPriceInUsd: data.averageBuyPriceInUsd,\n sells: data.sellCount,\n sellVolumes: data.sellAmount,\n sellVolumesInUsd: data.sellAmountInUsd,\n sellAvgPriceInUsd: data.averageSellPriceInUsd,\n realizedProfitInUsd: data.realizedProfitInUsd,\n realizedProfitRatio: data.realizedProfitRatio,\n unrealizedProfitInUsd: data.unrealizedProfitInUsd,\n unrealizedProfitRatio: data.unrealizedProfitRatio,\n totalProfitInUsd: data.totalRealizedProfitInUsd,\n totalProfitRatio: data.totalRealizedProfitRatio,\n } as API.PortfolioPnlSubscribed,\n ]),\n });\n }\n\n subscribeWalletTrades(\n chain: Chain,\n address: string,\n callback: (trades: Array<Trade>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeWalletTrade({\n chain: toChainDTO(chain),\n walletAddress: address,\n callback: (data: WsTradeActivity) =>\n callback([fromWsTradeActivity(chain, data)]),\n });\n }\n\n subscribeTokenTrades(\n chain: Chain,\n address: string,\n callback: (trades: Array<Trade>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeTokenTrade({\n chain: toChainDTO(chain),\n tokenAddress: address,\n callback: (data: WsTradeActivity) =>\n callback([fromWsTradeActivity(chain, data)]),\n });\n }\n\n subscribeWalletActivities(\n chain: Chain,\n address: string,\n callback: (activities: Array<Activity>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeWalletTrade({\n chain: toChainDTO(chain),\n walletAddress: address,\n callback: (data: WsTradeActivity) =>\n callback([fromWsActivity(chain, data)]),\n });\n }\n\n subscribeTokenActivities(\n chain: Chain,\n address: string,\n callback: (activities: Array<Activity>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeTokenTrade({\n chain: toChainDTO(chain),\n tokenAddress: address,\n callback: (data: WsTradeActivity) =>\n callback([fromWsActivity(chain, data)]),\n });\n }\n\n subscribeNewTokens(\n chain: Chain,\n callback: (data: Array<API.TokenSubscribed>) => void,\n ): API.ISubscription {\n const chainDTO = toChainDTO(chain);\n const rankingSub = this._subscribeRankingTokens(\n chain,\n WsChannelType.New,\n callback,\n );\n const subs = [\n this._client.stream.subscribeNewToken({\n chain: chainDTO,\n callback: (data: WsNewToken) =>\n callback([fromTokenSubscribed(chain, data)]),\n }),\n this._client.stream.subscribeNewTokensMetadata({\n chain: chainDTO,\n callback: (data: WsTokenMetadata[]) =>\n callback(data.map((it) => fromTokenMetadataSubscribed(chain, it))),\n }),\n this._client.stream.subscribeRankingTokensBondingCurve({\n chain: chainDTO,\n callback: (data: WsTokenBondingCurve[]) =>\n callback(\n data.map((d) => fromWsTokenBondingCurveToSubscribed(chain, d)),\n ),\n }),\n ];\n return {\n unsubscribe: () => {\n rankingSub.unsubscribe();\n subs.forEach((s) => s.unsubscribe());\n },\n };\n }\n\n subscribeTrendingTokens(\n chain: Chain,\n callback: (data: Array<API.TokenSubscribed>) => void,\n ): API.ISubscription {\n return this._subscribeRankingTokens(chain, WsChannelType.HOT, callback);\n }\n\n subscribeMigratedTokens(\n chain: Chain,\n callback: (data: Array<API.TokenSubscribed>) => void,\n ): API.ISubscription {\n return this._subscribeRankingTokens(\n chain,\n WsChannelType.MIGRATED,\n callback,\n );\n }\n\n subscribeFinalStretchTokens(\n chain: Chain,\n callback: (data: Array<API.TokenSubscribed>) => void,\n ): API.ISubscription {\n const chainDTO = toChainDTO(chain);\n const rankingSub = this._subscribeRankingTokens(\n chain,\n WsChannelType.FINAL_STRETCH,\n callback,\n );\n const bondingSub = this._client.stream.subscribeRankingTokensBondingCurve({\n chain: chainDTO,\n callback: (data: WsTokenBondingCurve[]) =>\n callback(\n data.map((d) => fromWsTokenBondingCurveToSubscribed(chain, d)),\n ),\n });\n return {\n unsubscribe: () => {\n rankingSub.unsubscribe();\n bondingSub.unsubscribe();\n },\n };\n }\n\n subscribeStockTokens(\n chain: Chain,\n callback: (data: Array<API.TokenSubscribed>) => void,\n ): API.ISubscription {\n return this._subscribeRankingTokens(\n chain,\n WsChannelType.US_STOCKS,\n callback,\n );\n }\n\n // ── RPC balance fallback (temporary) ─────────────────────────────────────\n\n private static readonly _CHAIN_TO_BALANCE_PARAM: Partial<\n Record<Chain, string>\n > = {\n [Chain.SOLANA]: \"sol\",\n [Chain.ETHEREUM]: \"eth\",\n [Chain.BINANCE]: \"bnb\",\n };\n\n private static readonly _NATIVE_TOKEN_ADDRESS: Partial<\n Record<Chain, string>\n > = {\n [Chain.SOLANA]: \"11111111111111111111111111111111\",\n [Chain.ETHEREUM]: \"0x0000000000000000000000000000000000000000\",\n [Chain.BINANCE]: \"0x0000000000000000000000000000000000000000\",\n };\n\n /**\n * Fetch token balances from the local `/api/balance` RPC proxy and convert\n * the raw `{ address, balance, decimals }` entries into `Portfolio` objects.\n */\n private async _getPortfoliosFromBalanceApi(\n chain: Chain,\n chainParam: string,\n walletAddress: string,\n tokenAddresses?: Array<string>,\n ): Promise<Array<Portfolio>> {\n const base = this.options!.nativeBalanceApiUrl!;\n const qs = new URLSearchParams({\n chain: chainParam,\n address: walletAddress,\n });\n if (tokenAddresses?.length) {\n qs.set(\"tokens\", tokenAddresses.join(\",\"));\n }\n\n const res = await fetch(`${base}?${qs.toString()}`);\n if (!res.ok) {\n throw new Error(`Balance API returned ${res.status}`);\n }\n\n const data = (await res.json()) as {\n balances: Array<{ address: string; balance: string; decimals: number }>;\n };\n\n return data.balances.map((item) => {\n const raw = BigInt(item.balance);\n const decimals = item.decimals;\n const divisor = BigInt(10) ** BigInt(decimals);\n const whole = raw / divisor;\n const frac = raw % divisor;\n const fracStr = frac.toString().padStart(decimals, \"0\");\n const amount = `${whole}.${fracStr}`.replace(/\\.?0+$/, \"\") || \"0\";\n\n return {\n chain,\n address: item.address,\n name: \"\",\n symbol: \"\",\n priceInUsd: \"0\",\n priceInNative: \"0\",\n amount,\n amountInUsd: \"0\",\n amountInNative: \"0\",\n decimals: item.decimals,\n };\n });\n }\n\n /**\n * Fetch all holdings from the balance API and wrap as `WalletPortfolios`.\n */\n private async _getWalletPortfoliosFromBalanceApi(\n chain: Chain,\n chainParam: string,\n walletAddress: string,\n ): Promise<WalletPortfolios> {\n const portfolios = await this._getPortfoliosFromBalanceApi(\n chain,\n chainParam,\n walletAddress,\n );\n\n const nativeAddr = Client._NATIVE_TOKEN_ADDRESS[chain];\n const nativePortfolio = nativeAddr\n ? portfolios.find((p) => p.address === nativeAddr)\n : undefined;\n\n return {\n chain,\n address: walletAddress,\n balanceInUsd: \"0\",\n balanceInNative: nativePortfolio?.amount ?? \"0\",\n portfolios,\n hasPrev: false,\n hasNext: false,\n };\n }\n\n // ── End RPC balance fallback ───────────────────────────────────────────\n\n private _buildRankingParams(options?: API.GetTokenListOptions) {\n return {\n sortBy: options?.sortBy\n ? (toFieldDTO(options.sortBy) as TokenField)\n : undefined,\n sortDirection: options?.sortDirection\n ? (toSortDirectionDTO(options.sortDirection) as SortDirection)\n : undefined,\n rangeFilters: options?.filters\n ? toRangeFiltersDTO(options.filters)\n : undefined,\n launchpadPlatform: options?.filters\n ? parseLaunchPlatformFromFilters(options.filters)\n : undefined,\n searchKeywords: options?.keywords,\n excludeKeywords: options?.excludeKeywords,\n };\n }\n\n private async _getTrades(\n chain: Chain,\n target: { walletAddress?: string; tokenAddress?: string },\n options?: API.GetTradesOptions,\n ): Promise<API.CursorList<Trade>> {\n const tradePage = await this._client.trade.getTrades(toChainDTO(chain), {\n ...target,\n cursor: options?.cursor,\n limit: options?.limit,\n direction: options?.direction,\n beforeTimestamp: options?.before?.getTime(),\n afterTimestamp: options?.after?.getTime(),\n beforeBlockHeight: options?.beforeBlockHeight,\n afterBlockHeight: options?.afterBlockHeight,\n poolAddress: options?.poolAddress,\n type: options?.type\n ? (options.type.toUpperCase() as TradeType)\n : undefined,\n });\n return fromTradePage(tradePage);\n }\n\n private async _getActivities(\n chain: Chain,\n target: { walletAddress?: string; tokenAddress?: string },\n options?: API.GetActivitiesOptions,\n ): Promise<API.CursorList<Activity>> {\n const page = await this._client.trade.getActivities(toChainDTO(chain), {\n ...target,\n cursor: options?.cursor,\n limit: options?.limit,\n direction: options?.direction,\n beforeTimestamp: options?.before?.getTime(),\n afterTimestamp: options?.after?.getTime(),\n beforeBlockHeight: options?.beforeBlockHeight,\n afterBlockHeight: options?.afterBlockHeight,\n poolAddress: options?.poolAddress,\n type: options?.type\n ? (options.type.toUpperCase() as SdkActivityType)\n : undefined,\n });\n return fromActivityPage(page);\n }\n\n private _subscribeRankingTokens(\n chain: Chain,\n channelType: WsChannelType,\n callback: (data: Array<API.TokenSubscribed>) => void,\n ): API.ISubscription {\n const chainDTO = toChainDTO(chain);\n const subs = [\n this._client.stream.subscribeRankingTokensStats({\n chain: chainDTO,\n channelType,\n callback: (data: WsTokenStat[]) =>\n callback(data.map((d) => fromWsTokenDataSubscribed(chain, d))),\n }),\n this._client.stream.subscribeRankingTokensHolders({\n chain: chainDTO,\n channelType,\n callback: (data: WsTokenHolder[]) =>\n callback(\n data.map((d) =>\n fromWsTokenHolderToSubscribed(chain, d.tokenAddress, d),\n ),\n ),\n }),\n this._client.stream.subscribeRankingTokensSupply({\n chain: chainDTO,\n channelType,\n callback: (data: WsTokenSupply[]) =>\n callback(\n data.map((d) =>\n fromWsTokenSupplyToSubscribed(chain, d.tokenAddress, d),\n ),\n ),\n }),\n this._client.stream.subscribeRankingTokensLiquidity({\n chain: chainDTO,\n channelType,\n callback: (data: WsTokenLiquidity[]) =>\n callback(\n data.map((d) =>\n fromWsTokenLiquidityToSubscribed(chain, d.tokenAddress, d),\n ),\n ),\n }),\n ];\n return { unsubscribe: () => subs.forEach((s) => s.unsubscribe()) };\n }\n}\n\nfunction parseLaunchPlatformFromFilters(\n filters: Array<API.TokenFilterOption>,\n): Array<string> | undefined {\n const filter = filters.find(\n (it) => it.field === \"launchedFromProtocolFamily\",\n );\n if (!filter) {\n return undefined;\n }\n if (filter.operator === \"eq\") {\n return [filter.value as string];\n }\n if (filter.operator === \"in\") {\n return filter.value as Array<string>;\n }\n console.warn(\"invalid launchedFromProtocolFamily filter\", filter);\n return undefined;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@liberfi.io/client",
3
- "version": "0.1.182",
3
+ "version": "0.1.183",
4
4
  "description": "Dex Client for Liberfi React SDK",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -19,8 +19,8 @@
19
19
  "license": "ISC",
20
20
  "dependencies": {
21
21
  "@chainstream-io/sdk": "^2.0.5",
22
- "@liberfi.io/types": "0.1.172",
23
- "@liberfi.io/utils": "0.1.169"
22
+ "@liberfi.io/types": "0.1.173",
23
+ "@liberfi.io/utils": "0.1.170"
24
24
  },
25
25
  "devDependencies": {
26
26
  "@types/jest": "^29.5.3",
@@ -30,7 +30,7 @@
30
30
  "ts-jest": "^29.3.4",
31
31
  "tsup": "^8.5.0",
32
32
  "typescript": "^5.9.2",
33
- "tsconfig": "0.1.160"
33
+ "tsconfig": "0.1.161"
34
34
  },
35
35
  "publishConfig": {
36
36
  "access": "public"