@liberfi.io/client 0.3.36 → 0.3.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,3 +1,3 @@
1
- import {ChainStreamClient,HolderSortBy,RankingPoolType,PnlSortBy,PositionState,PnlResolution,WsChannelType,WsRankingType,ActivitySortBy,ChainSymbol,Resolution,SearchSortBy,SwapRouteInputSwapMode,WsMetricType,TokenField}from'@chainstream-io/sdk';import {Chain,SwapMode}from'@liberfi.io/types';import {SafeBigNumber,SOLANA_TOKENS}from'@liberfi.io/utils';var w=class extends Error{code="NotImplemented";constructor(s,r){super(r?`${s} is not yet implemented by the backend: ${r}`:`${s} is not yet implemented by the backend`),this.name="NotImplementedError";}};function ds(e){return e instanceof Error&&e.code==="NotImplemented"}var Ee="https://api.chainstream.io";async function Me(e){return typeof e=="string"?e:Promise.resolve(e.getToken())}function ze(e,s,r){if(r!=null){if(r instanceof Date){e.set(s,String(r.getTime()));return}e.set(s,String(r));}}function Ve(e,s){let r=e.endsWith("/")?e.slice(0,-1):e,t=s.startsWith("/")?s:`/${s}`;return r+t}async function Y(e,s,r){let t=new URL(Ve(e.baseUrl,s)),n=new URLSearchParams;for(let[u,m]of Object.entries(r))ze(n,u,m);let a=n.toString();a&&(t.search=a);let c=await Me(e.accessToken),i=await fetch(t.toString(),{method:"GET",headers:{Accept:"application/json",Authorization:`Bearer ${c}`}});if(!i.ok){let u=await i.text().catch(()=>"");throw new Error(`[phase3Http] ${i.status} ${i.statusText} ${t.pathname}: ${u}`)}return await i.json()}function X(e,s){return {baseUrl:s??Ee,accessToken:e}}function Z(e,s,r,t){return Y(e,`/v2/token/${encodeURIComponent(s)}/${encodeURIComponent(r)}/holders`,t)}function ee(e,s,r,t){return Y(e,`/v2/wallet/${encodeURIComponent(s)}/${encodeURIComponent(r)}/pnl-details`,t)}function o(e){return e??void 0}function d(e){switch(e){case Chain.ETHEREUM:return ChainSymbol.eth;case Chain.BINANCE:return ChainSymbol.bsc;case Chain.SOLANA:return ChainSymbol.sol}throw new Error(`Unsupported chain: ${e}`)}function _(e){switch(e){case "1s":return Resolution["1s"];case "15s":return Resolution["15s"];case "30s":return Resolution["30s"];case "1m":return Resolution["1m"];case "5m":return Resolution["5m"];case "15m":return Resolution["15m"];case "30m":case "1h":return Resolution["1h"];case "4h":return Resolution["4h"];case "12h":return Resolution["12h"];case "24h":return Resolution["1d"]}}function Ge(e){return e}function ne(e){switch(e){case "marketCap":return SearchSortBy.marketCapInUsd;case "tvl":return SearchSortBy.liquidityInUsd;case "price":return SearchSortBy.priceInUsd;case "holders":return SearchSortBy.holderCount;case "volumes24h":return SearchSortBy.h24VolumeInUsd;case "trades24h":return SearchSortBy.h24Transactions;case "createdAt":return SearchSortBy.tokenCreatedAt}throw new Error(`Unsupported search field: ${e}`)}function L(e){switch(e){case "price":return TokenField.marketDatapriceInUsd;case "priceChange1m":return TokenField.statspriceChangeRatioInUsd1m;case "priceChange5m":return TokenField.statspriceChangeRatioInUsd5m;case "priceChange1h":return TokenField.statspriceChangeRatioInUsd1h;case "priceChange4h":return TokenField.statspriceChangeRatioInUsd4h;case "priceChange24h":return TokenField.statspriceChangeRatioInUsd24h;case "marketCap":return TokenField.marketDatamarketCapInUsd;case "tvl":return TokenField.marketDatamaxPoolTvlInUsd;case "top10Holdings":return TokenField.marketDatatop10TotalHoldings;case "top10Ratio":return TokenField.marketDatatop10HoldingsRatio;case "top100Holdings":return TokenField.marketDatatop100TotalHoldings;case "top100Ratio":return TokenField.marketDatatop100HoldingsRatio;case "holders":return TokenField.marketDataholders;case "creatorsHoldings":return TokenField.marketDatacreatorHoldings;case "creatorsRatio":return TokenField.marketDatacreatorHoldingsRatio;case "buys1m":return TokenField.statsbuys1m;case "buys5m":return TokenField.statsbuys5m;case "buys15m":return TokenField.statsbuys15m;case "buys30m":return TokenField.statsbuys30m;case "buys1h":return TokenField.statsbuys1h;case "buys4h":return TokenField.statsbuys4h;case "buys24h":return TokenField.statsbuys24h;case "sells1m":return TokenField.statssells1m;case "sells5m":return TokenField.statssells5m;case "sells15m":return TokenField.statssells15m;case "sells30m":return TokenField.statssells30m;case "sells1h":return TokenField.statssells1h;case "sells4h":return TokenField.statssells4h;case "sells24h":return TokenField.statssells24h;case "trades1m":return TokenField.statstrades1m;case "trades5m":return TokenField.statstrades5m;case "trades1h":return TokenField.statstrades1h;case "trades4h":return TokenField.statstrades4h;case "trades24h":return TokenField.statstrades24h;case "traders1m":return TokenField.statstraders1m;case "traders5m":return TokenField.statstraders5m;case "traders1h":return TokenField.statstraders1h;case "traders4h":return TokenField.statstraders4h;case "traders24h":return TokenField.statstraders24h;case "volumes1m":return TokenField.statsvolumesInUsd1m;case "volumes5m":return TokenField.statsvolumesInUsd5m;case "volumes1h":return TokenField.statsvolumesInUsd1h;case "volumes4h":return TokenField.statsvolumesInUsd4h;case "volumes24h":return TokenField.statsvolumesInUsd24h;case "createdAt":return TokenField.tokenCreatedAt}throw new Error(`Unsupported sortBy: ${e}`)}function oe(e){return e.filter(s=>["gt","gte","lt","lte","between"].indexOf(s.operator)>=0).map(s=>{let r={field:L(s.field)};return ["gt","gte","between"].indexOf(s.operator)>=0&&(r.min=typeof s.value=="number"?new SafeBigNumber(s.value).toString():s.value),["lt","lte","between"].indexOf(s.operator)>=0&&(r.max=typeof s.value=="number"?new SafeBigNumber(s.value).toString():s.value),r})}function H(e){switch(e){case ChainSymbol.eth:return Chain.ETHEREUM;case ChainSymbol.bsc:return Chain.BINANCE;case ChainSymbol.sol:case "solana":return Chain.SOLANA}throw new Error(`Unsupported chain: ${e}`)}function $e(e){return {address:e.address??void 0,share:e.share??void 0,isVerified:e.isVerified??void 0}}function T(e){return {chain:H(e.chain),name:e.name,symbol:e.symbol,address:e.address,decimals:e.decimals,image:e.imageUrl??void 0,description:e.description??void 0,creators:e.tokenCreators?.map($e),launchedFrom:{programAddress:e.extra?.launchFromProgramAddress??void 0,protocolFamily:e.extra?.launchFromProtocolFamily??void 0},migrateProgress:e.marketData?.completionRatio?new SafeBigNumber(e.marketData.completionRatio).shiftedBy(2).toString():void 0,migratedTo:{programAddress:e.extra?.migratedToProgramAddress??void 0,protocolFamily:e.extra?.migratedToProtocolFamily??void 0,poolAddress:e.extra?.migratedToPoolAddress??void 0,migratedAt:e.extra?.migratedAt?new Date(e.extra.migratedAt):void 0},socialMedias:e.socialMedias?Object.fromEntries(Object.entries(e.socialMedias).filter(([,s])=>s!=null).map(([s,r])=>[s,r])):void 0,stats:e.stats?F(e.stats):void 0,marketData:e.marketData?E(e.marketData):void 0,createdAt:e.tokenCreatedAt?new Date(e.tokenCreatedAt):void 0}}function F(e){return {"1m":y(e,"1m"),"5m":y(e,"5m"),"15m":y(e,"15m"),"30m":y(e,"30m"),"1h":y(e,"1h"),"4h":y(e,"4h"),"24h":y(e,"24h")}}function I(e){return e===void 0?void 0:parseInt(e)}function y(e,s){let r=e.periods?.[s];return r?{buys:I(r.buys),sells:I(r.sells),trades:I(r.trades),buyers:I(r.buyers),sellers:I(r.sellers),traders:I(r.traders),buyVolumes:r.buyVolume,sellVolumes:r.sellVolume,volumes:r.totalVolumeInNative,buyVolumesInUsd:r.buyVolumeInUsd,sellVolumesInUsd:r.sellVolumeInUsd,volumesInUsd:r.totalVolumeInUsd,openPriceInUsd:r.openInUsd,closePriceInUsd:r.closeInUsd,highPriceInUsd:r.highInUsd,lowPriceInUsd:r.lowInUsd,priceInUsd:r.closeInUsd,priceChange:r.priceChangeRatioInUsd}:{}}function Hr(e){return {poolAddress:e.poolAddress,programAddress:e.programAddress??void 0,protocolFamily:e.protocolFamily??void 0,protocolName:e.protocolName??void 0,tvl:e.tvlInSol??void 0,tvlInUsd:e.tvlInUsd??void 0}}function ae(e){if(e)return {image:"image"in e?e.image??void 0:void 0,programAddress:e.programAddress??void 0,protocolFamily:e.protocolFamily??void 0,protocolName:e.protocolName??void 0}}function ie(e){if(e)return {poolAddress:e.poolAddress,tokenAAddress:e.tokenAAddress,tokenALiquidityInUsd:e.tokenALiquidityInUsd,tokenBAddress:e.tokenBAddress,tokenBLiquidityInUsd:e.tokenBLiquidityInUsd}}function le(e,s){return {chain:e,poolAddress:s.poolAddress,tokenAAddress:s.tokenAAddress,tokenBAddress:s.tokenBAddress,createdAt:s.createdAtMs?new Date(s.createdAtMs):void 0,dex:ae(s.dex),token:s.token?T(s.token):void 0,balance:ie(s.balance)}}function je(e){if(e.length!==0)return e.reduce((s,r)=>({...s,...Object.fromEntries(Object.entries(r).filter(([,t])=>t!==void 0)),stats:r.stats??s.stats,marketData:r.marketData?{...s.marketData,...r.marketData}:s.marketData,socialMedias:r.socialMedias?{...s.socialMedias,...r.socialMedias}:s.socialMedias,launchedFrom:r.launchedFrom?{...s.launchedFrom,...r.launchedFrom}:s.launchedFrom,migratedTo:r.migratedTo?{...s.migratedTo,...r.migratedTo}:s.migratedTo}),e[0])}function de(e,s){let r=s.token?je(V(e,s.token)):void 0;return {chain:e,poolAddress:s.poolAddress,tokenAAddress:s.tokenAAddress,tokenBAddress:s.tokenBAddress,createdAt:s.createdAtMs?new Date(s.createdAtMs):void 0,dex:ae(s.dex),token:r,balance:ie(s.balance)}}function E(e){return {totalSupply:e.totalSupply??void 0,marketCap:e.marketCapInSol??void 0,marketCapInUsd:e.marketCapInUsd??void 0,price:e.priceInNative??e.priceInSol??void 0,priceInUsd:e.priceInUsd??void 0,tvl:e.totalTvlInSol??void 0,tvlInUsd:e.totalTvlInUsd??void 0,holders:e.holders?parseInt(e.holders):void 0,top10Holdings:e.top10TotalHoldings??void 0,top10HoldingsRatio:e.top10HoldingsRatio??void 0,top50Holdings:e.top50TotalHoldings??void 0,top50HoldingsRatio:e.top50HoldingsRatio??void 0,top100Holdings:e.top100TotalHoldings??void 0,top100HoldingsRatio:e.top100HoldingsRatio??void 0,bluechipHolders:e.bluechipTotalHolders?parseInt(e.bluechipTotalHolders):void 0,bluechipHoldings:e.bluechipTotalHoldings??void 0,bluechipHoldingsRatio:e.bluechipHoldingsRatio??void 0,kolHolders:e.kolTotalHolders?parseInt(e.kolTotalHolders):void 0,kolHoldings:e.kolTotalHoldings??void 0,kolHoldingsRatio:e.kolHoldingsRatio??void 0,sniperHolders:e.sniperTotalHolders?parseInt(e.sniperTotalHolders):void 0,sniperHoldings:e.sniperTotalHoldings??void 0,sniperHoldingsRatio:e.sniperHoldingsRatio??void 0,proHolders:e.proTotalHolders?parseInt(e.proTotalHolders):void 0,proHoldings:e.proTotalHoldings??void 0,proHoldingsRatio:e.proHoldingsRatio??void 0,insiderHolders:e.insiderTotalHolders?parseInt(e.insiderTotalHolders):void 0,insiderHoldings:e.insiderTotalHoldings??void 0,insiderHoldingsRatio:e.insiderHoldingsRatio??void 0,sandwichHolders:e.sandwishTotalHolders?parseInt(e.sandwishTotalHolders):void 0,sandwichHoldings:e.sandwishTotalHoldings??void 0,sandwichHoldingsRatio:e.sandwishHoldingsRatio??void 0,freshHolders:e.freshTotalHolders?parseInt(e.freshTotalHolders):void 0,freshHoldings:e.freshTotalHoldings??void 0,freshHoldingsRatio:e.freshHoldingsRatio??void 0,bundleHolders:e.bundleTotalHolders?parseInt(e.bundleTotalHolders):void 0,bundleHoldings:e.bundleTotalHoldings??void 0,bundleHoldingsRatio:e.bundleHoldingsRatio??void 0,devHolders:e.devTotalHolders?parseInt(e.devTotalHolders):void 0,devHoldings:e.devTotalHoldings??void 0,devHoldingsRatio:e.devHoldingsRatio??void 0}}function ce(e,s){return {open:e.open,close:e.close,high:e.high,low:e.low,volume:e.volume,volumeInTokenAmount:o(e.volumeInTokenAmount),trades:e.trades??void 0,resolution:s,timestamp:new Date(e.timestamp)}}function Qe(e){return e==="1d"?"24h":e}function ue(e){let s=e;return {hasTransferFee:s.hasTransferFee,isTransferFeeUpgradable:s.isTransferFeeUpgradable,isTransferable:s.isTransferable,isFreezable:s.isFreezable,isClosable:s.isClosable}}var Ke=new Set([Chain.SOLANA,Chain.SOLANA_TESTNET,Chain.SOLANA_DEVNET]),Je="0x0000000000000000000000000000000000000000",Ye="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";function Xe(e){return e===SOLANA_TOKENS.native.address?SOLANA_TOKENS.wrapped.address:e}function Ze(e){return e.toLowerCase()===Je.toLowerCase()?Ye:e}function es(e){return e.dex==="jupiter"?"jupiter":e.dex==="kyberswap"?"kyberswap":Ke.has(e.chain)?"jupiter":"kyberswap"}function O(e,s){return e==="jupiter"?Xe(s):e==="kyberswap"?Ze(s):s}function xr(e,s){return O(e,s)}function me(e){let s=es(e),r=O(s,e.input),t=O(s,e.output);return {dex:s,userAddress:e.userAddress,amount:e.amount,swapMode:e.mode===SwapMode.EXACT_IN?SwapRouteInputSwapMode.ExactIn:SwapRouteInputSwapMode.ExactOut,slippage:e.slippage??1,inputMint:r,outputMint:t,priorityFee:e.priorityFee,...e.tipFee&&{tipFee:e.tipFee},...e.isAntiMev!=null&&{isAntiMev:e.isAntiMev},...e.permit&&{permit:e.permit},...e.deadline!=null&&{deadline:e.deadline}}}function ke(e){return {signedTx:e.serializedTx}}function P(e){return e==null?void 0:new Date(e)}function Te(e){if(e!=null)return new Date(e<1e12?e*1e3:e)}function x(e){if(!(!e||e.length===0))return e}function ge(e){return {startCursor:o(e.startCursor),endCursor:o(e.endCursor),hasPrev:e.hasPrev??false,hasNext:e.hasNext??false,data:e.data.map(s=>({address:s.walletAddress,amount:s.amount,amountInUsd:s.amountInUsd,ratio:s.percentage,tags:x(s.tags),lastActiveAt:P(s.lastActiveAt),startHoldingAt:P(s.startHoldingAt)}))}}function fe(e){return {startCursor:o(e.startCursor),endCursor:o(e.endCursor),hasPrev:e.hasPrev??false,hasNext:e.hasNext??false,data:e.data.map(s=>({address:s.walletAddress,amount:s.amount,amountInUsd:s.amountInUsd,ratio:s.percentage,tags:x(s.tags),lastActiveAt:P(s.lastActiveAt),startHoldingAt:P(s.startHoldingAt)}))}}function be(e){let s=e;return {startCursor:o(e.startCursor),endCursor:o(e.endCursor),hasPrev:e.hasPrev??false,hasNext:e.hasNext??false,data:e.data.map(T),extra:o(s.countsByProtocols)}}function he(e){return {serializedTx:e.serializedTx,recentBlockhash:o(e.recentBlockhash),lastValidBlockHeight:o(e.lastValidBlockHeight),plans:[],extra:e.routeInfo}}function ye(e){return {blockhash:e.blockhash,lastValidBlockHeight:e.lastValidBlockHeight}}function Pe(e){return {txHash:e.signature,extra:{jobId:e.jobId,elapsedTime:e.elapsedTime}}}function Ae(e,s){let r=(s.data??[]).map(t=>({chain:H(t.chain),address:t.tokenAddress,name:t.name,symbol:t.symbol,image:o(t.logoUri),priceInUsd:t.priceInUsd,priceInNative:t.priceInNative,amount:t.amount,amountInUsd:t.valueInUsd,amountInNative:t.valueInNative,decimals:t.decimals}));return {chain:r[0]?.chain??e,address:s.walletAddress,balanceInUsd:s.totalValueInUsd,balanceInNative:s.totalValueInNative,startCursor:o(s.startCursor),endCursor:o(s.endCursor),hasPrev:s.hasPrev,hasNext:s.hasNext,portfolios:r}}function Ie(e,s,r){return {chain:e,address:s,tokens:r.tokens?Number(r.tokens):void 0,buys:r.buys?Number(r.buys):void 0,sells:r.sells?Number(r.sells):void 0,totalTrades:r.totalTrades?Number(r.totalTrades):void 0,wins:r.wins?Number(r.wins):void 0,losses:r.losses?Number(r.losses):void 0,winRate:o(r.winRate),buyAmountInUsd:o(r.buyAmountInUsd),sellAmountInUsd:o(r.sellAmountInUsd),totalCostInUsd:o(r.totalCostInUsd),realizedProfitInUsd:o(r.realizedProfitInUsd),realizedProfitRatio:o(r.realizedProfitRatio),unrealizedProfitInUsd:o(r.unrealizedProfitInUsd),unrealizedProfitRatio:o(r.unrealizedProfitRatio),totalProfitInUsd:o(r.totalProfitInUsd),totalProfitRatio:o(r.totalProfitRatio),avgProfitPerTradeInUsd:o(r.avgProfitPerTradeInUsd)}}function ss(e,s){return {chain:e,address:s.tokenAddress,name:s.name??"",symbol:s.symbol??"",image:o(s.logoUri),amount:s.balance,amountInUsd:s.currentValue,priceInUsd:s.priceInUsd,decimals:s.decimals??0,totalTrades:s.totalTrades!=null?Number(s.totalTrades):void 0,buys:s.buys!=null?Number(s.buys):void 0,buyVolumes:s.buyAmount,buyVolumesInUsd:s.buyAmountInUsd,buyAvgPriceInUsd:s.avgBuyPriceInUsd,sells:s.sells!=null?Number(s.sells):void 0,sellVolumes:s.sellAmount,sellVolumesInUsd:s.sellAmountInUsd,sellAvgPriceInUsd:s.avgSellPriceInUsd,realizedProfitInUsd:s.realizedProfitInUsd,realizedProfitRatio:s.realizedProfitRatio,unrealizedProfitInUsd:s.unrealizedProfitInUsd,unrealizedProfitRatio:s.unrealizedProfitRatio,totalProfitInUsd:s.totalProfitInUsd,totalProfitRatio:s.totalProfitRatio,isClosed:s.isClosed,firstBuyAt:P(s.firstBuyAt),lastSellAt:P(s.lastSellAt)}}function M(e,s,r){let t=r.summary;return {chain:e,address:s,tokens:r.summary.tokens!=null?Number(r.summary.tokens):void 0,buys:r.summary.buys!=null?Number(r.summary.buys):void 0,sells:r.summary.sells!=null?Number(r.summary.sells):void 0,totalTrades:r.summary.totalTrades!=null?Number(r.summary.totalTrades):void 0,wins:r.summary.wins!=null?Number(r.summary.wins):void 0,losses:r.summary.losses!=null?Number(r.summary.losses):void 0,winRate:o(r.summary.winRate),buyAmountInUsd:o(r.summary.buyAmountInUsd),sellAmountInUsd:o(r.summary.sellAmountInUsd),totalCostInUsd:r.summary.totalCostInUsd,realizedProfitInUsd:o(r.summary.realizedProfitInUsd),unrealizedProfitInUsd:o(r.summary.unrealizedProfitInUsd),totalProfitInUsd:o(r.summary.totalProfitInUsd),totalProfitRatio:o(t.totalProfitRatio),avgProfitPerTradeInUsd:o(r.summary.avgProfitPerTradeInUsd),startCursor:o(r.startCursor),endCursor:o(r.endCursor),hasPrev:r.hasPrev,hasNext:r.hasNext,portfolios:r.data.map(n=>ss(e,n))}}function Se(e,s){return (s.data??[]).map(r=>({chain:H(r.chain),address:r.tokenAddress,name:r.name,symbol:r.symbol,image:o(r.logoUri),priceInUsd:r.priceInUsd,priceInNative:r.priceInNative,amount:r.amount,amountInUsd:r.valueInUsd,amountInNative:r.valueInNative,decimals:r.decimals,isActive:r.isActive,avgCostUsd:o(r.avgCostUsd),lastActiveAt:P(r.lastActiveAt),walletTokenTags:x(r.walletTokenTags)}))}function Ue(e,s){return s.data.map(r=>({chain:e,address:r.tokenAddress,name:r.name??"",symbol:r.symbol??"",image:o(r.logoUri),amount:r.balance,amountInUsd:r.currentValue,priceInUsd:r.priceInUsd,decimals:r.decimals??0,totalTrades:Number(r.totalTrades),buys:Number(r.buys),buyVolumes:r.buyAmount,buyVolumesInUsd:r.buyAmountInUsd,buyAvgPriceInUsd:r.avgBuyPriceInUsd,sells:Number(r.sells),sellVolumes:r.sellAmount,sellVolumesInUsd:r.sellAmountInUsd,sellAvgPriceInUsd:r.avgSellPriceInUsd,realizedProfitInUsd:r.realizedProfitInUsd,realizedProfitRatio:r.realizedProfitRatio,unrealizedProfitInUsd:r.unrealizedProfitInUsd,unrealizedProfitRatio:r.unrealizedProfitRatio,totalProfitInUsd:r.totalProfitInUsd,totalProfitRatio:r.totalProfitRatio}))}function Ce(e){return {startCursor:o(e.startCursor),endCursor:o(e.endCursor),hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(ve)}}function ve(e){let s=e.type.toLowerCase()==="buy";return {chain:H(e.chain),walletAddress:e.accountOwnerAddress,txHash:e.transactionSignature,type:s?"buy":"sell",from:{address:s?e.sideTokenAddress:e.tokenAddress,symbol:s?e.sideTokenSymbol:e.tokenSymbol,name:s?e.sideTokenName:e.tokenName,image:o(s?e.sideTokenImageUrl:e.tokenImageUrl),amount:s?e.sideTokenAmount:e.tokenAmount,amountInUsd:s?e.sideTokenAmountInUsd:e.tokenAmountInUsd,priceInUsd:s?e.sideTokenPriceInUsd:e.tokenPriceInUsd},to:{address:s?e.tokenAddress:e.sideTokenAddress,symbol:s?e.tokenSymbol:e.sideTokenSymbol,name:s?e.tokenName:e.sideTokenName,image:o(s?e.tokenImageUrl:e.sideTokenImageUrl),amount:s?e.tokenAmount:e.sideTokenAmount,amountInUsd:s?e.tokenAmountInUsd:e.sideTokenAmountInUsd,priceInUsd:s?e.tokenPriceInUsd:e.sideTokenPriceInUsd},dex:{programAddress:o(e.dexProgramAddress),protocolFamily:o(e.dexProtocolFamily),image:o(e.dexImage)},poolAddress:o(e.poolAddress),status:e.status??"success",time:Te(e.blockTimestamp)??new Date(0),gasFee:e.gasFee!=null?String(e.gasFee):void 0,traderTags:x(e.traderTags)}}function Re(e){return {startCursor:o(e.startCursor),endCursor:o(e.endCursor),hasPrev:e.hasPrev??false,hasNext:e.hasNext??false,data:e.data.map(ve)}}function pr(e){return {startCursor:o(e.startCursor),endCursor:o(e.endCursor),hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(rs)}}function rs(e){let s=e.type.toLowerCase().replace(/ /g,"_"),r=s==="buy",t=Te(e.blockTimestamp)??new Date(0);return {chain:H(e.chain),walletAddress:e.accountOwnerAddress,txHash:e.transactionSignature,type:s,from:{address:r?e.sideTokenAddress:e.tokenAddress,symbol:r?e.sideTokenSymbol:e.tokenSymbol,name:r?e.sideTokenName:e.tokenName,image:o(r?e.sideTokenImageUrl:e.tokenImageUrl),amount:r?e.sideTokenAmount:e.tokenAmount,amountInUsd:r?e.sideTokenAmountInUsd:e.tokenAmountInUsd,priceInUsd:r?e.sideTokenPriceInUsd:e.tokenPriceInUsd},to:{address:r?e.tokenAddress:e.sideTokenAddress,symbol:r?e.tokenSymbol:e.sideTokenSymbol,name:r?e.tokenName:e.sideTokenName,image:o(r?e.tokenImageUrl:e.sideTokenImageUrl),amount:r?e.tokenAmount:e.sideTokenAmount,amountInUsd:r?e.tokenAmountInUsd:e.sideTokenAmountInUsd,priceInUsd:r?e.tokenPriceInUsd:e.sideTokenPriceInUsd},dex:{programAddress:o(e.dexProgramAddress),protocolFamily:o(e.dexProtocolFamily),image:o(e.dexImage)},poolAddress:o(e.poolAddress),status:e.status??"success",time:t,gasFee:e.gasFee!=null?String(e.gasFee):void 0,traderTags:x(e.traderTags)}}function we(e,s){return {chain:e,address:s.tokenAddress,name:s.name,symbol:s.symbol,decimals:s.decimals,createdAt:s.createdAtMs?new Date(s.createdAtMs):void 0,launchedFrom:s.launchFrom?{programAddress:s.launchFrom.programAddress,protocolFamily:s.launchFrom.protocolFamily}:void 0}}function z(e,s){return {chain:e,address:s.tokenAddress,name:s.name,symbol:s.symbol,decimals:s.decimals,image:s.imageUrl,description:s.description,socialMedias:s.socialMedia?{...s.socialMedia}:void 0,createdAt:s.createdAtMs?new Date(s.createdAtMs):void 0,launchedFrom:s.launchFrom?{programAddress:s.launchFrom.programAddress,protocolFamily:s.launchFrom.protocolFamily}:void 0,migratedTo:s.migratedTo?{programAddress:s.migratedTo.programAddress,protocolFamily:s.migratedTo.protocolFamily}:void 0}}function He(e){return {open:e.open,close:e.close,high:e.high,low:e.low,volume:e.volume,resolution:Qe(e.resolution),timestamp:new Date(e.time)}}function ts(e){let s=["1m","5m","15m","30m","1h","4h","24h"],r=e,t={};for(let n of s){let a=r[`buys${n}`],c=r[`sells${n}`],i=r[`buyers${n}`],u=r[`sellers${n}`],m=r[`buyVolumeInUsd${n}`],A=r[`sellVolumeInUsd${n}`],C=r[`trades${n}`],v=r[`price${n}`],b=r[`openInUsd${n}`],R=r[`closeInUsd${n}`];if(!(a!==void 0||c!==void 0||C!==void 0||v!==void 0))continue;let N=C??(a!==void 0&&c!==void 0?a+c:void 0),_e=i!==void 0&&u!==void 0?i+u:void 0,Le=m!==void 0&&A!==void 0?new SafeBigNumber(m).plus(A).toString():void 0,Fe=b&&R&&new SafeBigNumber(b).gt(0)?new SafeBigNumber(R).minus(b).div(b).toString():void 0;t[n]={buys:a,sells:c,trades:N,buyers:i,sellers:u,traders:_e,buyVolumesInUsd:m,sellVolumesInUsd:A,volumesInUsd:Le,openPriceInUsd:b,closePriceInUsd:R,priceInUsd:v??R,priceChange:Fe};}return t}function ns(e){return {priceInUsd:e.price}}function p(e,s){return {chain:e,address:s.address,stats:ts(s),marketData:ns(s)}}function V(e,s){let r=[];return s.metadata&&r.push(z(e,s.metadata)),s.stat&&r.push(p(e,s.stat)),s.holder&&r.push(D(e,s.holder.tokenAddress,s.holder)),s.supply&&r.push(W(e,s.supply.tokenAddress,s.supply)),s.bondingCurve&&r.push(B(e,s.bondingCurve)),r.filter(t=>t.address)}function W(e,s,r){return {chain:e,address:s,marketData:{totalSupply:r.supply,marketCapInUsd:r.marketCapInUsd}}}function D(e,s,r){return {chain:e,address:s,marketData:os(r)}}function q(e,s,r){return r.metricType===WsMetricType.LIQUIDITY_IN_USD?{chain:e,address:s,marketData:{tvlInUsd:r.value}}:r.metricType===WsMetricType.MIGRATED_RATIO?{chain:e,address:s,migrateProgress:new SafeBigNumber(r.value).shiftedBy(2).toString()}:{chain:e,address:s}}function B(e,s){return {chain:e,address:s.tokenAddress??"",migrateProgress:s.progressRatio?new SafeBigNumber(s.progressRatio).shiftedBy(2).toString():void 0}}function xe(e,s,r){return {chain:e,address:s,liquidities:[{poolAddress:r.poolAddress,tvlInUsd:r.liquidityInUsd,tvl:r.liquidityInNative}]}}function pe(e,s,r){return {chain:e,address:s,marketData:{tvlInUsd:r.liquidityInUsd,tvl:r.liquidityInNative}}}function os(e){return {holders:e.holders,top10Holdings:e.top10HoldersAmount,top10HoldingsRatio:e.top10HoldersRatio,top50Holdings:e.top50HoldersAmount,top50HoldingsRatio:e.top50HoldersRatio,top100Holdings:e.top100HoldersAmount,top100HoldingsRatio:e.top100HoldersRatio,bluechipHolders:e.bluechipHolders===void 0?void 0:e.bluechipHolders,bluechipHoldings:e.bluechipHoldersAmount,bluechipHoldingsRatio:e.bluechipHoldersRatio,kolHolders:e.kolHolders===void 0?void 0:e.kolHolders,kolHoldings:e.kolHoldersAmount,kolHoldingsRatio:e.kolHoldersRatio,proHolders:e.proHolders===void 0?void 0:e.proHolders,proHoldings:e.proHoldersAmount,proHoldingsRatio:e.proHoldersRatio,insiderHolders:e.insiderHolders===void 0?void 0:e.insiderHolders,insiderHoldings:e.insiderHoldersAmount,insiderHoldingsRatio:e.insiderHoldersRatio,devHolders:e.devHolders===void 0?void 0:e.devHolders,devHoldings:e.devHoldersAmount,devHoldingsRatio:e.devHoldersRatio,sniperHolders:e.sniperHolders===void 0?void 0:e.sniperHolders,sniperHoldings:e.sniperHoldersAmount,sniperHoldingsRatio:e.sniperHoldersRatio,freshHolders:e.freshHolders===void 0?void 0:e.freshHolders,freshHoldings:e.freshHoldersAmount,freshHoldingsRatio:e.freshHoldersRatio,bundleHolders:e.bundleHolders===void 0?void 0:e.bundleHolders,bundleHoldings:e.bundleHoldersAmount,bundleHoldingsRatio:e.bundleHoldersRatio,sandwichHolders:e.sandwichHolders===void 0?void 0:e.sandwichHolders,sandwichHoldings:e.sandwichHoldersAmount,sandwichHoldingsRatio:e.sandwichHoldersRatio}}function G(e,s){let r=s.kind.toLowerCase()==="buy";return {chain:e,walletAddress:r?s.buyWalletAddress:s.sellWalletAddress,txHash:s.txHash,type:r?"buy":"sell",from:{address:s.sellTokenAddress,symbol:s.sellTokenSymbol,name:s.sellTokenName,amount:s.sellAmount,amountInUsd:s.sellAmountInUsd},to:{address:s.buyTokenAddress,symbol:s.buyTokenSymbol,name:s.buyTokenName,amount:s.buyAmount,amountInUsd:s.buyAmountInUsd},status:"success",time:new Date(s.timestamp)}}function $(e,s){let r=s.kind.toLowerCase().replace(/ /g,"_");return {chain:e,walletAddress:r==="buy"?s.buyWalletAddress:s.sellWalletAddress,txHash:s.txHash,type:r,from:{address:s.sellTokenAddress,symbol:s.sellTokenSymbol,name:s.sellTokenName,amount:s.sellAmount,amountInUsd:s.sellAmountInUsd},to:{address:s.buyTokenAddress,symbol:s.buyTokenSymbol,name:s.buyTokenName,amount:s.buyAmount,amountInUsd:s.buyAmountInUsd},status:"success",time:new Date(s.timestamp)}}var Oe=class e{constructor(s,r){this.accessToken=s;this.options=r;this._client=new ChainStreamClient(this.accessToken,this.options),this._phase3=X(this.accessToken,this.options?.serverUrl);}_client;_phase3;async getToken(s,r){let t=await this._client.token.getToken(d(s),r);return T(t)}async getTokens(s,r){return (await this._client.token.getTokens(d(s),{tokenAddresses:r.join(",")})).map(T)}async getTokenCandles(s,r,t,n){return (await this._client.token.getCandles(d(s),r,{resolution:_(t),from:n?.after?.getTime(),to:n?.before?.getTime(),limit:n?.limit})).map(c=>ce(c,t))}async getTokenSecurity(s,r){let t=await this._client.token.getSecurity(d(s),r);return ue(t)}async getTokenStats(s,r){let t=await this._client.token.getStats(d(s),r);return F(t)}async getTokenHolders(s,r,t){if(t?.sortBy!=="realizedPnl"){let a=await this._client.token.getHolders(d(s),r,{cursor:t?.cursor,limit:t?.limit,direction:t?.direction,sortBy:t?.sortBy==="lastActiveAt"?HolderSortBy.lastActiveAt:t?.sortBy==="holdingUsd"?HolderSortBy.holdingUsd:void 0});return fe(a)}let n=await Z(this._phase3,d(s),r,{cursor:t?.cursor,limit:t?.limit,direction:t?.direction,sortBy:t?.sortBy});return ge(n)}async getTokenMarketData(s,r){let t=await this._client.token.getMarketData(d(s),r);return E(t)}async getNewTokens(s,r){return (await this._client.ranking.getNewTokens(d(s),this._buildRankingParams(r))).map(T)}async getNewPools(s,r){return (await this._client.ranking.getRankingPools(d(s),RankingPoolType.NewPool)).map(n=>le(s,n))}async getFinalStretchTokens(s,r){return (await this._client.ranking.getFinalStretchTokens(d(s),this._buildRankingParams(r))).map(T)}async getMigratedTokens(s,r){return (await this._client.ranking.getMigratedTokens(d(s),this._buildRankingParams(r))).map(T)}async getTrendingTokens(s,r,t){return (await this._client.ranking.getHotTokens(d(s),r,this._buildRankingParams(t))).map(T)}async getStockTokens(s,r){return (await this._client.ranking.getStocksTokens(d(s),this._buildRankingParams(r))).map(T)}async searchTokens(s){let r=await this._client.token.search({chains:s?.chains?.map(d),q:s?.keyword,limit:s?.limit,cursor:s?.cursor,sortBy:s?.sortBy?ne(s.sortBy):void 0,sort:s?.sortDirection});return be(r)}async swapRoute(s){let r=await this._client.dex.route(d(s.chain),me(s));return he(r)}async getLatestBlock(s){let r=await this._client.blockchain.getLatestBlock(d(s.chain));return ye(r)}async sendTx(s){let r=await this._client.transaction.send(d(s.chain),ke(s));return Pe(r)}async checkTxSuccess(s,r,t){let{success:n}=await this._client.waitForJob(r,t);return n}async getWalletPortfolios(s,r,t){let n=e._CHAIN_TO_BALANCE_PARAM[s];if(n&&this.options?.nativeBalanceApiUrl)return this._getWalletPortfoliosFromBalanceApi(s,n,r);let a=await this._client.wallet.getNetWorth(d(s),r,{cursor:t?.cursor,limit:t?.limit??100});return Ae(s,a)}async getWalletPnl(s,r,t){let n=await this._client.wallet.getPnl(d(s),r,t?{resolution:t}:void 0);return Ie(s,r,n)}async getWalletPortfolioPnls(s,r,t){if(t?.resolution!=="90d"){let a=await this._client.wallet.getPnlDetails(d(s),r,{resolution:t?.resolution==="7d"?PnlResolution["7d"]:PnlResolution["30d"],positionState:t?.positionState==="closed"?PositionState.closed:t?.positionState==="all"?PositionState.all:t?.positionState==="open"?PositionState.open:void 0,sortBy:t?.sortBy==="realizedPnl"?PnlSortBy.realizedPnl:t?.sortBy==="unrealizedPnl"?PnlSortBy.unrealizedPnl:t?.sortBy==="totalPnl"?PnlSortBy.totalPnl:void 0,cursor:t?.cursor,limit:t?.limit??100,direction:t?.direction});return M(s,r,a)}let n=await ee(this._phase3,d(s),r,{resolution:t?.resolution??"30d",positionState:t?.positionState,sortBy:t?.sortBy,cursor:t?.cursor,limit:t?.limit??100,direction:t?.direction});return M(s,r,n)}async getWalletPortfoliosByTokens(s,r,t){let n=e._CHAIN_TO_BALANCE_PARAM[s];if(n&&this.options?.nativeBalanceApiUrl)return this._getPortfoliosFromBalanceApi(s,n,r,t);let a=await this._client.wallet.getNetWorthByTokens(d(s),r,{tokenAddresses:t.join(",")});return Se(s,a)}async getWalletPortfolioPnlsByTokens(s,r,t){let n=await this._client.wallet.getPnlByToken(d(s),r,{tokenAddresses:t.join(",")});return Ue(s,n)}async getWalletTrades(s,r,t){return this._getTrades(s,{walletAddress:r},t)}async getTokenTrades(s,r,t){return this._getTrades(s,{tokenAddress:r},t)}async getWalletActivities(s,r,t){return this._getActivities(s,{walletAddress:r},t)}async getTokenActivities(s,r,t){return this._getActivities(s,{tokenAddress:r},t)}async getPresignedUploadUrl(){return (await this._client.ipfs.presign()).presignUrl}async getWalletLimitOrders(s,r,t){throw new w("Client.getWalletLimitOrders","no limit-orders endpoint on the backend yet")}async getTokensByCreator(s,r,t){throw new w("Client.getTokensByCreator","no creator-index endpoint on the backend yet")}subscribeToken(s,r,t){return this.subscribeTokens(s,[r],t)}subscribeTokens(s,r,t){let n=d(s),a=Array.from(new Set(r.map(i=>i.trim()).filter(Boolean)));if(a.length===0)return {unsubscribe:()=>{}};let c=this._client.stream.batchSubscribe(()=>a.flatMap(i=>[this._client.stream.subscribeTokenStats({chain:n,tokenAddress:i,callback:u=>t([p(s,u)])}),this._client.stream.subscribeTokenHolders({chain:n,tokenAddress:i,callback:u=>t([D(s,i,u)])}),this._client.stream.subscribeTokenSupply({chain:n,tokenAddress:i,callback:u=>t([W(s,i,u)])}),this._client.stream.subscribeTokenLiquidity({chain:n,tokenAddress:i,callback:u=>t([q(s,i,u)])}),this._client.stream.subscribeTokenMaxLiquidity({chain:n,tokenAddress:i,callback:u=>t([xe(s,i,u)])}),this._client.stream.subscribeTokenTotalLiquidity({chain:n,tokenAddress:i,callback:u=>t([pe(s,i,u)])})]));return {unsubscribe:()=>{let i=this._client.stream;if(i.batchUnsubscribe){i.batchUnsubscribe(c);return}c.forEach(u=>u.unsubscribe());}}}subscribeTokenCandles(s,r,t,n){return this._client.stream.subscribeTokenCandles({chain:d(s),tokenAddress:r,resolution:_(t),callback:a=>n([He(a)])})}subscribeWalletPnl(s,r,t){return this._client.stream.subscribeWalletPnlList({chain:d(s),walletAddress:r,callback:n=>t(n.map(a=>({chain:s,address:a.walletAddress,buys:a.buys,buyAmountInUsd:a.buyAmountInUsd,sells:a.sells,sellAmountInUsd:a.sellAmountInUsd,wins:a.wins,winRate:a.winRatio,totalProfitInUsd:a.pnlInUsd,totalProfitRatio:a.pnlRatio,avgProfitPerTradeInUsd:a.averagePnlInUsd,tokens:a.tokens,resolution:a.resolution})))})}subscribeWalletPortfolios(s,r,t){return this._client.stream.subscribeWalletBalance({chain:d(s),walletAddress:r,callback:n=>t(n.map(a=>({chain:s,walletAddress:a.walletAddress,tokenAddress:a.tokenAddress,priceInUsd:a.tokenPriceInUsd,amount:a.balance})))})}subscribeWalletPortfolioPnls(s,r,t){return this._client.stream.subscribeWalletPnl({chain:d(s),walletAddress:r,callback:n=>t([{chain:s,walletAddress:n.walletAddress,tokenAddress:n.tokenAddress,openTime:n.opentime?new Date(n.opentime):void 0,closeTime:n.closetime?new Date(n.closetime):void 0,buys:n.buyCount,buyVolumes:n.buyAmount,buyVolumesInUsd:n.buyAmountInUsd,buyAvgPriceInUsd:n.averageBuyPriceInUsd,sells:n.sellCount,sellVolumes:n.sellAmount,sellVolumesInUsd:n.sellAmountInUsd,sellAvgPriceInUsd:n.averageSellPriceInUsd,realizedProfitInUsd:n.realizedProfitInUsd,realizedProfitRatio:n.realizedProfitRatio,unrealizedProfitInUsd:n.unrealizedProfitInUsd,unrealizedProfitRatio:n.unrealizedProfitRatio,totalProfitInUsd:n.totalRealizedProfitInUsd,totalProfitRatio:n.totalRealizedProfitRatio}])})}subscribeWalletTrades(s,r,t){return this._client.stream.subscribeWalletTrade({chain:d(s),walletAddress:r,callback:n=>t([G(s,n)])})}subscribeTokenTrades(s,r,t){return this._client.stream.subscribeTokenTrade({chain:d(s),tokenAddress:r,callback:n=>t([G(s,n)])})}subscribeWalletActivities(s,r,t){return this._client.stream.subscribeWalletTrade({chain:d(s),walletAddress:r,callback:n=>t([$(s,n)])})}subscribeTokenActivities(s,r,t){return this._client.stream.subscribeTokenTrade({chain:d(s),tokenAddress:r,callback:n=>t([$(s,n)])})}subscribeNewTokens(s,r){let t=d(s),n=this._subscribeRankingTokens(s,WsChannelType.New,r),a=[this._client.stream.subscribeNewToken({chain:t,callback:c=>r([we(s,c)])}),this._client.stream.subscribeNewTokensMetadata({chain:t,callback:c=>r(c.map(i=>z(s,i)))}),this._client.stream.subscribeRankingTokensBondingCurve({chain:t,callback:c=>r(c.map(i=>B(s,i)))})];return {unsubscribe:()=>{n.unsubscribe(),a.forEach(c=>c.unsubscribe());}}}subscribeNewPools(s,r){return this._client.stream.subscribeNewPool({chain:d(s),callback:t=>r([de(s,t)])})}subscribeTrendingTokens(s,r){return this._subscribeRankingTokenList(s,WsRankingType.HOT,r)}subscribeMigratedTokens(s,r){return this._subscribeRankingTokens(s,WsChannelType.MIGRATED,r)}subscribeFinalStretchTokens(s,r){let t=d(s),n=this._subscribeRankingTokens(s,WsChannelType.FINAL_STRETCH,r),a=this._client.stream.subscribeRankingTokensBondingCurve({chain:t,callback:c=>r(c.map(i=>B(s,i)))});return {unsubscribe:()=>{n.unsubscribe(),a.unsubscribe();}}}subscribeStockTokens(s,r){return this._subscribeRankingTokenList(s,WsRankingType.STOCKS,r)}static _CHAIN_TO_BALANCE_PARAM={[Chain.SOLANA]:"sol",[Chain.ETHEREUM]:"eth",[Chain.BINANCE]:"bnb"};static _NATIVE_TOKEN_ADDRESS={[Chain.SOLANA]:"11111111111111111111111111111111",[Chain.ETHEREUM]:"0x0000000000000000000000000000000000000000",[Chain.BINANCE]:"0x0000000000000000000000000000000000000000"};async _getPortfoliosFromBalanceApi(s,r,t,n){let a=this.options.nativeBalanceApiUrl,c=new URLSearchParams({chain:r,address:t});n?.length&&c.set("tokens",n.join(","));let i=await fetch(`${a}?${c.toString()}`);if(!i.ok)throw new Error(`Balance API returned ${i.status}`);return (await i.json()).balances.map(m=>{let A=BigInt(m.balance),C=m.decimals,v=BigInt(10)**BigInt(C),b=A/v,J=(A%v).toString().padStart(C,"0"),N=`${b}.${J}`.replace(/\.?0+$/,"")||"0";return {chain:s,address:m.address,name:"",symbol:"",priceInUsd:"0",priceInNative:"0",amount:N,amountInUsd:"0",amountInNative:"0",decimals:m.decimals}})}async _getWalletPortfoliosFromBalanceApi(s,r,t){let n=await this._getPortfoliosFromBalanceApi(s,r,t),a=e._NATIVE_TOKEN_ADDRESS[s],c=a?n.find(i=>i.address===a):void 0;return {chain:s,address:t,balanceInUsd:"0",balanceInNative:c?.amount??"0",portfolios:n,hasPrev:false,hasNext:false}}_buildRankingParams(s){return {sortBy:s?.sortBy?L(s.sortBy):void 0,sortDirection:s?.sortDirection?s.sortDirection:void 0,rangeFilters:s?.filters?oe(s.filters):void 0,launchpadPlatform:s?.filters?ls(s.filters):void 0,searchKeywords:s?.keywords,excludeKeywords:s?.excludeKeywords}}async _getTrades(s,r,t){let n=await this._client.trade.getTrades(d(s),{...r,cursor:t?.cursor,limit:t?.limit,direction:t?.direction,beforeTimestamp:t?.before?.getTime(),afterTimestamp:t?.after?.getTime(),beforeBlockHeight:t?.beforeBlockHeight,afterBlockHeight:t?.afterBlockHeight,poolAddress:t?.poolAddress,type:t?.type?t.type.toUpperCase():void 0});return Ce(n)}async _getActivities(s,r,t){let n=await this._client.trade.getActivities(d(s),{...r,cursor:t?.cursor,limit:t?.limit,direction:t?.direction,beforeTimestamp:t?.before?.getTime(),afterTimestamp:t?.after?.getTime(),beforeBlockHeight:t?.beforeBlockHeight,afterBlockHeight:t?.afterBlockHeight,poolAddress:t?.poolAddress,type:t?.type?t.type.toUpperCase():void 0,sortBy:t?.sortBy==="totalUsd"?ActivitySortBy.totalUsd:t?.sortBy==="timestamp"?ActivitySortBy.timestamp:void 0});return Re(n)}_subscribeRankingTokens(s,r,t){let n=d(s),a=[this._client.stream.subscribeRankingTokensStats({chain:n,channelType:r,callback:c=>t(c.map(i=>p(s,i)))}),this._client.stream.subscribeRankingTokensHolders({chain:n,channelType:r,callback:c=>t(c.map(i=>D(s,i.tokenAddress,i)))}),this._client.stream.subscribeRankingTokensSupply({chain:n,channelType:r,callback:c=>t(c.map(i=>W(s,i.tokenAddress,i)))}),this._client.stream.subscribeRankingTokensLiquidity({chain:n,channelType:r,callback:c=>t(c.map(i=>q(s,i.tokenAddress,i)))})];return {unsubscribe:()=>a.forEach(c=>c.unsubscribe())}}_subscribeRankingTokenList(s,r,t){return this._client.stream.subscribeRankingTokensList({chain:d(s),ranking_type:r,callback:n=>{let a=n.flatMap(c=>V(s,c));a.length>0&&t(a);}})}};function ls(e){let s=e.find(r=>r.field==="launchedFromProtocolFamily");if(s){if(s.operator==="eq")return [s.value];if(s.operator==="in")return s.value;console.warn("invalid launchedFromProtocolFamily filter",s);}}
2
- export{Oe as Client,Ye as KYBERSWAP_NATIVE_SENTINEL,w as NotImplementedError,pr as fromActivityPage,H as fromChainDTO,ye as fromLatestBlock,Ue as fromPnlDetailItems,M as fromPnlDetailsPage,le as fromRankingPoolDTO,Re as fromSdkActivityPage,fe as fromSdkTokenHolderPage,Pe as fromSendTxResult,he as fromSwapRoute,ce as fromTokenCandle,$e as fromTokenCreatorDTO,T as fromTokenDTO,ge as fromTokenHolderPage,Hr as fromTokenLiquidityDTO,E as fromTokenMarketDataDTO,z as fromTokenMetadataSubscribed,be as fromTokenPage,ue as fromTokenSecurity,F as fromTokenStatsDTO,we as fromTokenSubscribed,Ce as fromTradePage,Se as fromWalletNetWorthByTokens,Ie as fromWalletPnlSummary,Ae as fromWalletPortfolios,$ as fromWsActivity,He as fromWsCandle,de as fromWsRankingPoolToSubscribed,V as fromWsRankingTokenListToSubscribed,B as fromWsTokenBondingCurveToSubscribed,p as fromWsTokenDataSubscribed,D as fromWsTokenHolderToSubscribed,q as fromWsTokenLiquidityToSubscribed,os as fromWsTokenMarketDataFromHolder,ns as fromWsTokenMarketDataFromStats,xe as fromWsTokenMaxLiquidityToSubscribed,ts as fromWsTokenStats,W as fromWsTokenSupplyToSubscribed,pe as fromWsTokenTotalLiquidityToSubscribed,G as fromWsTradeActivity,ds as isNotImplementedError,d as toChainDTO,L as toFieldDTO,xr as toMintForRoute,oe as toRangeFiltersDTO,_ as toResolutionDTO,ne as toSearchFieldDTO,ke as toSendTxInput,Ge as toSortDirectionDTO,me as toSwapRouteInput};//# sourceMappingURL=index.mjs.map
1
+ import {ChainStreamClient,HolderSortBy,TraderSortBy,RankingPoolType,PnlSortBy,PositionState,PnlResolution,WsChannelType,WsRankingType,ActivitySortBy,ChainSymbol,Resolution,SearchSortBy,SwapRouteInputSwapMode,WsMetricType,TokenField}from'@chainstream-io/sdk';import {Chain,SwapMode}from'@liberfi.io/types';import {SafeBigNumber,SOLANA_TOKENS}from'@liberfi.io/utils';var H=class extends Error{code="NotImplemented";constructor(s,t){super(t?`${s} is not yet implemented by the backend: ${t}`:`${s} is not yet implemented by the backend`),this.name="NotImplementedError";}};function us(e){return e instanceof Error&&e.code==="NotImplemented"}var ze="https://api.chainstream.io";async function Ve(e){return typeof e=="string"?e:Promise.resolve(e.getToken())}function qe(e,s,t){if(t!=null){if(t instanceof Date){e.set(s,String(t.getTime()));return}e.set(s,String(t));}}function Ge(e,s){let t=e.endsWith("/")?e.slice(0,-1):e,r=s.startsWith("/")?s:`/${s}`;return t+r}async function X(e,s,t){let r=new URL(Ge(e.baseUrl,s)),n=new URLSearchParams;for(let[u,m]of Object.entries(t))qe(n,u,m);let a=n.toString();a&&(r.search=a);let c=await Ve(e.accessToken),i=await fetch(r.toString(),{method:"GET",headers:{Accept:"application/json",Authorization:`Bearer ${c}`}});if(!i.ok){let u=await i.text().catch(()=>"");throw new Error(`[phase3Http] ${i.status} ${i.statusText} ${r.pathname}: ${u}`)}return await i.json()}function Z(e,s){return {baseUrl:s??ze,accessToken:e}}function ee(e,s,t,r){return X(e,`/v2/token/${encodeURIComponent(s)}/${encodeURIComponent(t)}/holders`,r)}function se(e,s,t,r){return X(e,`/v2/wallet/${encodeURIComponent(s)}/${encodeURIComponent(t)}/pnl-details`,r)}function o(e){return e??void 0}function d(e){switch(e){case Chain.ETHEREUM:return ChainSymbol.eth;case Chain.BINANCE:return ChainSymbol.bsc;case Chain.SOLANA:return ChainSymbol.sol}throw new Error(`Unsupported chain: ${e}`)}function L(e){switch(e){case "1s":return Resolution["1s"];case "15s":return Resolution["15s"];case "30s":return Resolution["30s"];case "1m":return Resolution["1m"];case "5m":return Resolution["5m"];case "15m":return Resolution["15m"];case "30m":case "1h":return Resolution["1h"];case "4h":return Resolution["4h"];case "12h":return Resolution["12h"];case "24h":return Resolution["1d"]}}function je(e){return e}function oe(e){switch(e){case "marketCap":return SearchSortBy.marketCapInUsd;case "tvl":return SearchSortBy.liquidityInUsd;case "price":return SearchSortBy.priceInUsd;case "holders":return SearchSortBy.holderCount;case "volumes24h":return SearchSortBy.h24VolumeInUsd;case "trades24h":return SearchSortBy.h24Transactions;case "createdAt":return SearchSortBy.tokenCreatedAt}throw new Error(`Unsupported search field: ${e}`)}function F(e){switch(e){case "price":return TokenField.marketDatapriceInUsd;case "priceChange1m":return TokenField.statspriceChangeRatioInUsd1m;case "priceChange5m":return TokenField.statspriceChangeRatioInUsd5m;case "priceChange1h":return TokenField.statspriceChangeRatioInUsd1h;case "priceChange4h":return TokenField.statspriceChangeRatioInUsd4h;case "priceChange24h":return TokenField.statspriceChangeRatioInUsd24h;case "marketCap":return TokenField.marketDatamarketCapInUsd;case "tvl":return TokenField.marketDatamaxPoolTvlInUsd;case "top10Holdings":return TokenField.marketDatatop10TotalHoldings;case "top10Ratio":return TokenField.marketDatatop10HoldingsRatio;case "top100Holdings":return TokenField.marketDatatop100TotalHoldings;case "top100Ratio":return TokenField.marketDatatop100HoldingsRatio;case "holders":return TokenField.marketDataholders;case "creatorsHoldings":return TokenField.marketDatacreatorHoldings;case "creatorsRatio":return TokenField.marketDatacreatorHoldingsRatio;case "buys1m":return TokenField.statsbuys1m;case "buys5m":return TokenField.statsbuys5m;case "buys15m":return TokenField.statsbuys15m;case "buys30m":return TokenField.statsbuys30m;case "buys1h":return TokenField.statsbuys1h;case "buys4h":return TokenField.statsbuys4h;case "buys24h":return TokenField.statsbuys24h;case "sells1m":return TokenField.statssells1m;case "sells5m":return TokenField.statssells5m;case "sells15m":return TokenField.statssells15m;case "sells30m":return TokenField.statssells30m;case "sells1h":return TokenField.statssells1h;case "sells4h":return TokenField.statssells4h;case "sells24h":return TokenField.statssells24h;case "trades1m":return TokenField.statstrades1m;case "trades5m":return TokenField.statstrades5m;case "trades1h":return TokenField.statstrades1h;case "trades4h":return TokenField.statstrades4h;case "trades24h":return TokenField.statstrades24h;case "traders1m":return TokenField.statstraders1m;case "traders5m":return TokenField.statstraders5m;case "traders1h":return TokenField.statstraders1h;case "traders4h":return TokenField.statstraders4h;case "traders24h":return TokenField.statstraders24h;case "volumes1m":return TokenField.statsvolumesInUsd1m;case "volumes5m":return TokenField.statsvolumesInUsd5m;case "volumes1h":return TokenField.statsvolumesInUsd1h;case "volumes4h":return TokenField.statsvolumesInUsd4h;case "volumes24h":return TokenField.statsvolumesInUsd24h;case "createdAt":return TokenField.tokenCreatedAt}throw new Error(`Unsupported sortBy: ${e}`)}function ae(e){return e.filter(s=>["gt","gte","lt","lte","between"].indexOf(s.operator)>=0).map(s=>{let t={field:F(s.field)};return ["gt","gte","between"].indexOf(s.operator)>=0&&(t.min=typeof s.value=="number"?new SafeBigNumber(s.value).toString():s.value),["lt","lte","between"].indexOf(s.operator)>=0&&(t.max=typeof s.value=="number"?new SafeBigNumber(s.value).toString():s.value),t})}function p(e){switch(e){case ChainSymbol.eth:return Chain.ETHEREUM;case ChainSymbol.bsc:return Chain.BINANCE;case ChainSymbol.sol:case "solana":return Chain.SOLANA}throw new Error(`Unsupported chain: ${e}`)}function Qe(e){return {address:e.address??void 0,share:e.share??void 0,isVerified:e.isVerified??void 0}}function T(e){return {chain:p(e.chain),name:e.name,symbol:e.symbol,address:e.address,decimals:e.decimals,image:e.imageUrl??void 0,description:e.description??void 0,creators:e.tokenCreators?.map(Qe),launchedFrom:{programAddress:e.extra?.launchFromProgramAddress??void 0,protocolFamily:e.extra?.launchFromProtocolFamily??void 0},migrateProgress:e.marketData?.completionRatio?new SafeBigNumber(e.marketData.completionRatio).shiftedBy(2).toString():void 0,migratedTo:{programAddress:e.extra?.migratedToProgramAddress??void 0,protocolFamily:e.extra?.migratedToProtocolFamily??void 0,poolAddress:e.extra?.migratedToPoolAddress??void 0,migratedAt:e.extra?.migratedAt?new Date(e.extra.migratedAt):void 0},socialMedias:e.socialMedias?Object.fromEntries(Object.entries(e.socialMedias).filter(([,s])=>s!=null).map(([s,t])=>[s,t])):void 0,stats:e.stats?E(e.stats):void 0,marketData:e.marketData?M(e.marketData):void 0,createdAt:e.tokenCreatedAt?new Date(e.tokenCreatedAt):void 0}}function E(e){return {"1m":P(e,"1m"),"5m":P(e,"5m"),"15m":P(e,"15m"),"30m":P(e,"30m"),"1h":P(e,"1h"),"4h":P(e,"4h"),"24h":P(e,"24h")}}function I(e){return e===void 0?void 0:parseInt(e)}function P(e,s){let t=e.periods?.[s];return t?{buys:I(t.buys),sells:I(t.sells),trades:I(t.trades),buyers:I(t.buyers),sellers:I(t.sellers),traders:I(t.traders),buyVolumes:t.buyVolume,sellVolumes:t.sellVolume,volumes:t.totalVolumeInNative,buyVolumesInUsd:t.buyVolumeInUsd,sellVolumesInUsd:t.sellVolumeInUsd,volumesInUsd:t.totalVolumeInUsd,openPriceInUsd:t.openInUsd,closePriceInUsd:t.closeInUsd,highPriceInUsd:t.highInUsd,lowPriceInUsd:t.lowInUsd,priceInUsd:t.closeInUsd,priceChange:t.priceChangeRatioInUsd}:{}}function Dt(e){return {poolAddress:e.poolAddress,programAddress:e.programAddress??void 0,protocolFamily:e.protocolFamily??void 0,protocolName:e.protocolName??void 0,tvl:e.tvlInSol??void 0,tvlInUsd:e.tvlInUsd??void 0}}function ie(e){if(e)return {image:"image"in e?e.image??void 0:void 0,programAddress:e.programAddress??void 0,protocolFamily:e.protocolFamily??void 0,protocolName:e.protocolName??void 0}}function le(e){if(e)return {poolAddress:e.poolAddress,tokenAAddress:e.tokenAAddress,tokenALiquidityInUsd:e.tokenALiquidityInUsd,tokenBAddress:e.tokenBAddress,tokenBLiquidityInUsd:e.tokenBLiquidityInUsd}}function de(e,s){return {chain:e,poolAddress:s.poolAddress,tokenAAddress:s.tokenAAddress,tokenBAddress:s.tokenBAddress,createdAt:s.createdAtMs?new Date(s.createdAtMs):void 0,dex:ie(s.dex),token:s.token?T(s.token):void 0,balance:le(s.balance)}}function Ke(e){if(e.length!==0)return e.reduce((s,t)=>({...s,...Object.fromEntries(Object.entries(t).filter(([,r])=>r!==void 0)),stats:t.stats??s.stats,marketData:t.marketData?{...s.marketData,...t.marketData}:s.marketData,socialMedias:t.socialMedias?{...s.socialMedias,...t.socialMedias}:s.socialMedias,launchedFrom:t.launchedFrom?{...s.launchedFrom,...t.launchedFrom}:s.launchedFrom,migratedTo:t.migratedTo?{...s.migratedTo,...t.migratedTo}:s.migratedTo}),e[0])}function ce(e,s){let t=s.token?Ke(q(e,s.token)):void 0;return {chain:e,poolAddress:s.poolAddress,tokenAAddress:s.tokenAAddress,tokenBAddress:s.tokenBAddress,createdAt:s.createdAtMs?new Date(s.createdAtMs):void 0,dex:ie(s.dex),token:t,balance:le(s.balance)}}function M(e){return {totalSupply:e.totalSupply??void 0,marketCap:e.marketCapInSol??void 0,marketCapInUsd:e.marketCapInUsd??void 0,price:e.priceInNative??e.priceInSol??void 0,priceInUsd:e.priceInUsd??void 0,tvl:e.totalTvlInSol??void 0,tvlInUsd:e.totalTvlInUsd??void 0,holders:e.holders?parseInt(e.holders):void 0,top10Holdings:e.top10TotalHoldings??void 0,top10HoldingsRatio:e.top10HoldingsRatio??void 0,top50Holdings:e.top50TotalHoldings??void 0,top50HoldingsRatio:e.top50HoldingsRatio??void 0,top100Holdings:e.top100TotalHoldings??void 0,top100HoldingsRatio:e.top100HoldingsRatio??void 0,bluechipHolders:e.bluechipTotalHolders?parseInt(e.bluechipTotalHolders):void 0,bluechipHoldings:e.bluechipTotalHoldings??void 0,bluechipHoldingsRatio:e.bluechipHoldingsRatio??void 0,kolHolders:e.kolTotalHolders?parseInt(e.kolTotalHolders):void 0,kolHoldings:e.kolTotalHoldings??void 0,kolHoldingsRatio:e.kolHoldingsRatio??void 0,sniperHolders:e.sniperTotalHolders?parseInt(e.sniperTotalHolders):void 0,sniperHoldings:e.sniperTotalHoldings??void 0,sniperHoldingsRatio:e.sniperHoldingsRatio??void 0,proHolders:e.proTotalHolders?parseInt(e.proTotalHolders):void 0,proHoldings:e.proTotalHoldings??void 0,proHoldingsRatio:e.proHoldingsRatio??void 0,insiderHolders:e.insiderTotalHolders?parseInt(e.insiderTotalHolders):void 0,insiderHoldings:e.insiderTotalHoldings??void 0,insiderHoldingsRatio:e.insiderHoldingsRatio??void 0,sandwichHolders:e.sandwishTotalHolders?parseInt(e.sandwishTotalHolders):void 0,sandwichHoldings:e.sandwishTotalHoldings??void 0,sandwichHoldingsRatio:e.sandwishHoldingsRatio??void 0,freshHolders:e.freshTotalHolders?parseInt(e.freshTotalHolders):void 0,freshHoldings:e.freshTotalHoldings??void 0,freshHoldingsRatio:e.freshHoldingsRatio??void 0,bundleHolders:e.bundleTotalHolders?parseInt(e.bundleTotalHolders):void 0,bundleHoldings:e.bundleTotalHoldings??void 0,bundleHoldingsRatio:e.bundleHoldingsRatio??void 0,devHolders:e.devTotalHolders?parseInt(e.devTotalHolders):void 0,devHoldings:e.devTotalHoldings??void 0,devHoldingsRatio:e.devHoldingsRatio??void 0}}function ue(e,s){return {open:e.open,close:e.close,high:e.high,low:e.low,volume:e.volume,volumeInTokenAmount:o(e.volumeInTokenAmount),trades:e.trades??void 0,resolution:s,timestamp:new Date(e.timestamp)}}function Je(e){return e==="1d"?"24h":e}function me(e){let s=e;return {hasTransferFee:s.hasTransferFee,isTransferFeeUpgradable:s.isTransferFeeUpgradable,isTransferable:s.isTransferable,isFreezable:s.isFreezable,isClosable:s.isClosable}}var Ye=new Set([Chain.SOLANA,Chain.SOLANA_TESTNET,Chain.SOLANA_DEVNET]),Xe="0x0000000000000000000000000000000000000000",Ze="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";function es(e){return e===SOLANA_TOKENS.native.address?SOLANA_TOKENS.wrapped.address:e}function ss(e){return e.toLowerCase()===Xe.toLowerCase()?Ze:e}function ts(e){return e.dex==="jupiter"?"jupiter":e.dex==="kyberswap"?"kyberswap":Ye.has(e.chain)?"jupiter":"kyberswap"}function _(e,s){return e==="jupiter"?es(s):e==="kyberswap"?ss(s):s}function Bt(e,s){return _(e,s)}function ke(e){let s=ts(e),t=_(s,e.input),r=_(s,e.output);return {dex:s,userAddress:e.userAddress,amount:e.amount,swapMode:e.mode===SwapMode.EXACT_IN?SwapRouteInputSwapMode.ExactIn:SwapRouteInputSwapMode.ExactOut,slippage:e.slippage??1,inputMint:t,outputMint:r,priorityFee:e.priorityFee,...e.tipFee&&{tipFee:e.tipFee},...e.isAntiMev!=null&&{isAntiMev:e.isAntiMev},...e.permit&&{permit:e.permit},...e.deadline!=null&&{deadline:e.deadline}}}function Te(e){return {signedTx:e.serializedTx}}function f(e){return e==null?void 0:new Date(e)}function ge(e){if(e!=null)return new Date(e<1e12?e*1e3:e)}function U(e){if(!(!e||e.length===0))return e}function fe(e){return {startCursor:o(e.startCursor),endCursor:o(e.endCursor),hasPrev:e.hasPrev??false,hasNext:e.hasNext??false,data:e.data.map(s=>({address:s.walletAddress,amount:s.amount,amountInUsd:s.amountInUsd,ratio:s.percentage,tags:U(s.tags),lastActiveAt:f(s.lastActiveAt),startHoldingAt:f(s.startHoldingAt)}))}}function be(e){return {startCursor:o(e.startCursor),endCursor:o(e.endCursor),hasPrev:e.hasPrev??false,hasNext:e.hasNext??false,data:e.data.map(s=>({address:s.walletAddress,amount:s.amount,amountInUsd:s.amountInUsd,ratio:s.percentage,tags:U(s.tags),lastActiveAt:f(s.lastActiveAt),startHoldingAt:f(s.startHoldingAt)}))}}function he(e){return {startCursor:o(e.startCursor),endCursor:o(e.endCursor),hasPrev:e.hasPrev??false,hasNext:e.hasNext??false,data:e.data.map(s=>({address:s.walletAddress,amount:s.amount,amountInUsd:s.amountInUsd,tags:U(s.tags),lastActiveAt:f(s.lastActiveAt),startHoldingAt:f(s.startHoldingAt),averageBuyPriceInUsd:o(s.averageBuyPriceInUsd),averageSellPriceInUsd:o(s.averageSellPriceInUsd),buyAmountCur:o(s.buyAmountCur),sellAmountCur:o(s.sellAmountCur),totalBuyAmountInUsd:o(s.totalBuyAmountInUsd),totalSellAmountInUsd:o(s.totalSellAmountInUsd),realizedPnl:o(s.realizedPnl),totalRealizedPnlInUsd:o(s.totalRealizedPnlInUsd),unrealizedPnl:o(s.unrealizedPnl),unrealizedPnlInUsd:o(s.unrealizedPnlInUsd),roi:o(s.roi),totalPnlInUsd:o(s.totalPnlInUsd),totalBuyCount:o(s.totalBuyCount),totalSellCount:o(s.totalSellCount),transferIn:o(s.transferIn),transferInCount:o(s.transferInCount),transferOutCount:o(s.transferOutCount)}))}}function ye(e){let s=e;return {startCursor:o(e.startCursor),endCursor:o(e.endCursor),hasPrev:e.hasPrev??false,hasNext:e.hasNext??false,data:e.data.map(T),extra:o(s.countsByProtocols)}}function Pe(e){return {serializedTx:e.serializedTx,recentBlockhash:o(e.recentBlockhash),lastValidBlockHeight:o(e.lastValidBlockHeight),plans:[],extra:e.routeInfo}}function Ae(e){return {blockhash:e.blockhash,lastValidBlockHeight:e.lastValidBlockHeight}}function Ie(e){return {txHash:e.signature,extra:{jobId:e.jobId,elapsedTime:e.elapsedTime}}}function Se(e,s){let t=(s.data??[]).map(r=>({chain:p(r.chain),address:r.tokenAddress,name:r.name,symbol:r.symbol,image:o(r.logoUri),priceInUsd:r.priceInUsd,priceInNative:r.priceInNative,amount:r.amount,amountInUsd:r.valueInUsd,amountInNative:r.valueInNative,decimals:r.decimals}));return {chain:t[0]?.chain??e,address:s.walletAddress,balanceInUsd:s.totalValueInUsd,balanceInNative:s.totalValueInNative,startCursor:o(s.startCursor),endCursor:o(s.endCursor),hasPrev:s.hasPrev,hasNext:s.hasNext,portfolios:t}}function Ue(e,s,t){return {chain:e,address:s,tokens:t.tokens?Number(t.tokens):void 0,buys:t.buys?Number(t.buys):void 0,sells:t.sells?Number(t.sells):void 0,totalTrades:t.totalTrades?Number(t.totalTrades):void 0,wins:t.wins?Number(t.wins):void 0,losses:t.losses?Number(t.losses):void 0,winRate:o(t.winRate),buyAmountInUsd:o(t.buyAmountInUsd),sellAmountInUsd:o(t.sellAmountInUsd),totalCostInUsd:o(t.totalCostInUsd),realizedProfitInUsd:o(t.realizedProfitInUsd),realizedProfitRatio:o(t.realizedProfitRatio),unrealizedProfitInUsd:o(t.unrealizedProfitInUsd),unrealizedProfitRatio:o(t.unrealizedProfitRatio),totalProfitInUsd:o(t.totalProfitInUsd),totalProfitRatio:o(t.totalProfitRatio),avgProfitPerTradeInUsd:o(t.avgProfitPerTradeInUsd)}}function rs(e,s){return {chain:e,address:s.tokenAddress,name:s.name??"",symbol:s.symbol??"",image:o(s.logoUri),amount:s.balance,amountInUsd:s.currentValue,priceInUsd:s.priceInUsd,decimals:s.decimals??0,totalTrades:s.totalTrades!=null?Number(s.totalTrades):void 0,buys:s.buys!=null?Number(s.buys):void 0,buyVolumes:s.buyAmount,buyVolumesInUsd:s.buyAmountInUsd,buyAvgPriceInUsd:s.avgBuyPriceInUsd,sells:s.sells!=null?Number(s.sells):void 0,sellVolumes:s.sellAmount,sellVolumesInUsd:s.sellAmountInUsd,sellAvgPriceInUsd:s.avgSellPriceInUsd,realizedProfitInUsd:s.realizedProfitInUsd,realizedProfitRatio:s.realizedProfitRatio,unrealizedProfitInUsd:s.unrealizedProfitInUsd,unrealizedProfitRatio:s.unrealizedProfitRatio,totalProfitInUsd:s.totalProfitInUsd,totalProfitRatio:s.totalProfitRatio,isClosed:s.isClosed,firstBuyAt:f(s.firstBuyAt),lastSellAt:f(s.lastSellAt)}}function z(e,s,t){let r=t.summary;return {chain:e,address:s,tokens:t.summary.tokens!=null?Number(t.summary.tokens):void 0,buys:t.summary.buys!=null?Number(t.summary.buys):void 0,sells:t.summary.sells!=null?Number(t.summary.sells):void 0,totalTrades:t.summary.totalTrades!=null?Number(t.summary.totalTrades):void 0,wins:t.summary.wins!=null?Number(t.summary.wins):void 0,losses:t.summary.losses!=null?Number(t.summary.losses):void 0,winRate:o(t.summary.winRate),buyAmountInUsd:o(t.summary.buyAmountInUsd),sellAmountInUsd:o(t.summary.sellAmountInUsd),totalCostInUsd:t.summary.totalCostInUsd,realizedProfitInUsd:o(t.summary.realizedProfitInUsd),unrealizedProfitInUsd:o(t.summary.unrealizedProfitInUsd),totalProfitInUsd:o(t.summary.totalProfitInUsd),totalProfitRatio:o(r.totalProfitRatio),avgProfitPerTradeInUsd:o(t.summary.avgProfitPerTradeInUsd),startCursor:o(t.startCursor),endCursor:o(t.endCursor),hasPrev:t.hasPrev,hasNext:t.hasNext,portfolios:t.data.map(n=>rs(e,n))}}function Ce(e,s){return (s.data??[]).map(t=>({chain:p(t.chain),address:t.tokenAddress,name:t.name,symbol:t.symbol,image:o(t.logoUri),priceInUsd:t.priceInUsd,priceInNative:t.priceInNative,amount:t.amount,amountInUsd:t.valueInUsd,amountInNative:t.valueInNative,decimals:t.decimals,isActive:t.isActive,avgCostUsd:o(t.avgCostUsd),lastActiveAt:f(t.lastActiveAt),walletTokenTags:U(t.walletTokenTags)}))}function ve(e,s){return s.data.map(t=>({chain:e,address:t.tokenAddress,name:t.name??"",symbol:t.symbol??"",image:o(t.logoUri),amount:t.balance,amountInUsd:t.currentValue,priceInUsd:t.priceInUsd,decimals:t.decimals??0,totalTrades:Number(t.totalTrades),buys:Number(t.buys),buyVolumes:t.buyAmount,buyVolumesInUsd:t.buyAmountInUsd,buyAvgPriceInUsd:t.avgBuyPriceInUsd,sells:Number(t.sells),sellVolumes:t.sellAmount,sellVolumesInUsd:t.sellAmountInUsd,sellAvgPriceInUsd:t.avgSellPriceInUsd,realizedProfitInUsd:t.realizedProfitInUsd,realizedProfitRatio:t.realizedProfitRatio,unrealizedProfitInUsd:t.unrealizedProfitInUsd,unrealizedProfitRatio:t.unrealizedProfitRatio,totalProfitInUsd:t.totalProfitInUsd,totalProfitRatio:t.totalProfitRatio}))}function Re(e){return {startCursor:o(e.startCursor),endCursor:o(e.endCursor),hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(we)}}function we(e){let s=e.type.toLowerCase()==="buy";return {chain:p(e.chain),walletAddress:e.accountOwnerAddress,txHash:e.transactionSignature,type:s?"buy":"sell",from:{address:s?e.sideTokenAddress:e.tokenAddress,symbol:s?e.sideTokenSymbol:e.tokenSymbol,name:s?e.sideTokenName:e.tokenName,image:o(s?e.sideTokenImageUrl:e.tokenImageUrl),amount:s?e.sideTokenAmount:e.tokenAmount,amountInUsd:s?e.sideTokenAmountInUsd:e.tokenAmountInUsd,priceInUsd:s?e.sideTokenPriceInUsd:e.tokenPriceInUsd},to:{address:s?e.tokenAddress:e.sideTokenAddress,symbol:s?e.tokenSymbol:e.sideTokenSymbol,name:s?e.tokenName:e.sideTokenName,image:o(s?e.tokenImageUrl:e.sideTokenImageUrl),amount:s?e.tokenAmount:e.sideTokenAmount,amountInUsd:s?e.tokenAmountInUsd:e.sideTokenAmountInUsd,priceInUsd:s?e.tokenPriceInUsd:e.sideTokenPriceInUsd},dex:{programAddress:o(e.dexProgramAddress),protocolFamily:o(e.dexProtocolFamily),image:o(e.dexImage)},poolAddress:o(e.poolAddress),status:e.status??"success",time:ge(e.blockTimestamp)??new Date(0),gasFee:e.gasFee!=null?String(e.gasFee):void 0,traderTags:U(e.traderTags)}}function He(e){return {startCursor:o(e.startCursor),endCursor:o(e.endCursor),hasPrev:e.hasPrev??false,hasNext:e.hasNext??false,data:e.data.map(we)}}function Nt(e){return {startCursor:o(e.startCursor),endCursor:o(e.endCursor),hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(ns)}}function ns(e){let s=e.type.toLowerCase().replace(/ /g,"_"),t=s==="buy",r=ge(e.blockTimestamp)??new Date(0);return {chain:p(e.chain),walletAddress:e.accountOwnerAddress,txHash:e.transactionSignature,type:s,from:{address:t?e.sideTokenAddress:e.tokenAddress,symbol:t?e.sideTokenSymbol:e.tokenSymbol,name:t?e.sideTokenName:e.tokenName,image:o(t?e.sideTokenImageUrl:e.tokenImageUrl),amount:t?e.sideTokenAmount:e.tokenAmount,amountInUsd:t?e.sideTokenAmountInUsd:e.tokenAmountInUsd,priceInUsd:t?e.sideTokenPriceInUsd:e.tokenPriceInUsd},to:{address:t?e.tokenAddress:e.sideTokenAddress,symbol:t?e.tokenSymbol:e.sideTokenSymbol,name:t?e.tokenName:e.sideTokenName,image:o(t?e.tokenImageUrl:e.sideTokenImageUrl),amount:t?e.tokenAmount:e.sideTokenAmount,amountInUsd:t?e.tokenAmountInUsd:e.sideTokenAmountInUsd,priceInUsd:t?e.tokenPriceInUsd:e.sideTokenPriceInUsd},dex:{programAddress:o(e.dexProgramAddress),protocolFamily:o(e.dexProtocolFamily),image:o(e.dexImage)},poolAddress:o(e.poolAddress),status:e.status??"success",time:r,gasFee:e.gasFee!=null?String(e.gasFee):void 0,traderTags:U(e.traderTags)}}function pe(e,s){return {chain:e,address:s.tokenAddress,name:s.name,symbol:s.symbol,decimals:s.decimals,createdAt:s.createdAtMs?new Date(s.createdAtMs):void 0,launchedFrom:s.launchFrom?{programAddress:s.launchFrom.programAddress,protocolFamily:s.launchFrom.protocolFamily}:void 0}}function V(e,s){return {chain:e,address:s.tokenAddress,name:s.name,symbol:s.symbol,decimals:s.decimals,image:s.imageUrl,description:s.description,socialMedias:s.socialMedia?{...s.socialMedia}:void 0,createdAt:s.createdAtMs?new Date(s.createdAtMs):void 0,launchedFrom:s.launchFrom?{programAddress:s.launchFrom.programAddress,protocolFamily:s.launchFrom.protocolFamily}:void 0,migratedTo:s.migratedTo?{programAddress:s.migratedTo.programAddress,protocolFamily:s.migratedTo.protocolFamily}:void 0}}function xe(e){return {open:e.open,close:e.close,high:e.high,low:e.low,volume:e.volume,resolution:Je(e.resolution),timestamp:new Date(e.time)}}function os(e){let s=["1m","5m","15m","30m","1h","4h","24h"],t=e,r={};for(let n of s){let a=t[`buys${n}`],c=t[`sells${n}`],i=t[`buyers${n}`],u=t[`sellers${n}`],m=t[`buyVolumeInUsd${n}`],A=t[`sellVolumeInUsd${n}`],v=t[`trades${n}`],R=t[`price${n}`],h=t[`openInUsd${n}`],w=t[`closeInUsd${n}`];if(!(a!==void 0||c!==void 0||v!==void 0||R!==void 0))continue;let O=v??(a!==void 0&&c!==void 0?a+c:void 0),Fe=i!==void 0&&u!==void 0?i+u:void 0,Ee=m!==void 0&&A!==void 0?new SafeBigNumber(m).plus(A).toString():void 0,Me=h&&w&&new SafeBigNumber(h).gt(0)?new SafeBigNumber(w).minus(h).div(h).toString():void 0;r[n]={buys:a,sells:c,trades:O,buyers:i,sellers:u,traders:Fe,buyVolumesInUsd:m,sellVolumesInUsd:A,volumesInUsd:Ee,openPriceInUsd:h,closePriceInUsd:w,priceInUsd:R??w,priceChange:Me};}return r}function as(e){return {priceInUsd:e.price}}function W(e,s){return {chain:e,address:s.address,stats:os(s),marketData:as(s)}}function q(e,s){let t=[];return s.metadata&&t.push(V(e,s.metadata)),s.stat&&t.push(W(e,s.stat)),s.holder&&t.push(B(e,s.holder.tokenAddress,s.holder)),s.supply&&t.push(D(e,s.supply.tokenAddress,s.supply)),s.bondingCurve&&t.push(N(e,s.bondingCurve)),t.filter(r=>r.address)}function D(e,s,t){return {chain:e,address:s,marketData:{totalSupply:t.supply,marketCapInUsd:t.marketCapInUsd}}}function B(e,s,t){return {chain:e,address:s,marketData:is(t)}}function G(e,s,t){return t.metricType===WsMetricType.LIQUIDITY_IN_USD?{chain:e,address:s,marketData:{tvlInUsd:t.value}}:t.metricType===WsMetricType.MIGRATED_RATIO?{chain:e,address:s,migrateProgress:new SafeBigNumber(t.value).shiftedBy(2).toString()}:{chain:e,address:s}}function N(e,s){return {chain:e,address:s.tokenAddress??"",migrateProgress:s.progressRatio?new SafeBigNumber(s.progressRatio).shiftedBy(2).toString():void 0}}function We(e,s,t){return {chain:e,address:s,liquidities:[{poolAddress:t.poolAddress,tvlInUsd:t.liquidityInUsd,tvl:t.liquidityInNative}]}}function De(e,s,t){return {chain:e,address:s,marketData:{tvlInUsd:t.liquidityInUsd,tvl:t.liquidityInNative}}}function is(e){return {holders:e.holders,top10Holdings:e.top10HoldersAmount,top10HoldingsRatio:e.top10HoldersRatio,top50Holdings:e.top50HoldersAmount,top50HoldingsRatio:e.top50HoldersRatio,top100Holdings:e.top100HoldersAmount,top100HoldingsRatio:e.top100HoldersRatio,bluechipHolders:e.bluechipHolders===void 0?void 0:e.bluechipHolders,bluechipHoldings:e.bluechipHoldersAmount,bluechipHoldingsRatio:e.bluechipHoldersRatio,kolHolders:e.kolHolders===void 0?void 0:e.kolHolders,kolHoldings:e.kolHoldersAmount,kolHoldingsRatio:e.kolHoldersRatio,proHolders:e.proHolders===void 0?void 0:e.proHolders,proHoldings:e.proHoldersAmount,proHoldingsRatio:e.proHoldersRatio,insiderHolders:e.insiderHolders===void 0?void 0:e.insiderHolders,insiderHoldings:e.insiderHoldersAmount,insiderHoldingsRatio:e.insiderHoldersRatio,devHolders:e.devHolders===void 0?void 0:e.devHolders,devHoldings:e.devHoldersAmount,devHoldingsRatio:e.devHoldersRatio,sniperHolders:e.sniperHolders===void 0?void 0:e.sniperHolders,sniperHoldings:e.sniperHoldersAmount,sniperHoldingsRatio:e.sniperHoldersRatio,freshHolders:e.freshHolders===void 0?void 0:e.freshHolders,freshHoldings:e.freshHoldersAmount,freshHoldingsRatio:e.freshHoldersRatio,bundleHolders:e.bundleHolders===void 0?void 0:e.bundleHolders,bundleHoldings:e.bundleHoldersAmount,bundleHoldingsRatio:e.bundleHoldersRatio,sandwichHolders:e.sandwichHolders===void 0?void 0:e.sandwichHolders,sandwichHoldings:e.sandwichHoldersAmount,sandwichHoldingsRatio:e.sandwichHoldersRatio}}function $(e,s){let t=s.kind.toLowerCase()==="buy";return {chain:e,walletAddress:t?s.buyWalletAddress:s.sellWalletAddress,txHash:s.txHash,type:t?"buy":"sell",from:{address:s.sellTokenAddress,symbol:s.sellTokenSymbol,name:s.sellTokenName,amount:s.sellAmount,amountInUsd:s.sellAmountInUsd},to:{address:s.buyTokenAddress,symbol:s.buyTokenSymbol,name:s.buyTokenName,amount:s.buyAmount,amountInUsd:s.buyAmountInUsd},status:"success",time:new Date(s.timestamp)}}function j(e,s){let t=s.kind.toLowerCase().replace(/ /g,"_");return {chain:e,walletAddress:t==="buy"?s.buyWalletAddress:s.sellWalletAddress,txHash:s.txHash,type:t,from:{address:s.sellTokenAddress,symbol:s.sellTokenSymbol,name:s.sellTokenName,amount:s.sellAmount,amountInUsd:s.sellAmountInUsd},to:{address:s.buyTokenAddress,symbol:s.buyTokenSymbol,name:s.buyTokenName,amount:s.buyAmount,amountInUsd:s.buyAmountInUsd},status:"success",time:new Date(s.timestamp)}}var Le=class e{constructor(s,t){this.accessToken=s;this.options=t;this._client=new ChainStreamClient(this.accessToken,this.options),this._phase3=Z(this.accessToken,this.options?.serverUrl);}_client;_phase3;async getToken(s,t){let r=await this._client.token.getToken(d(s),t);return T(r)}async getTokens(s,t){return (await this._client.token.getTokens(d(s),{tokenAddresses:t.join(",")})).map(T)}async getTokenCandles(s,t,r,n){return (await this._client.token.getCandles(d(s),t,{resolution:L(r),from:n?.after?.getTime(),to:n?.before?.getTime(),limit:n?.limit})).map(c=>ue(c,r))}async getTokenSecurity(s,t){let r=await this._client.token.getSecurity(d(s),t);return me(r)}async getTokenStats(s,t){let r=await this._client.token.getStats(d(s),t);return E(r)}async getTokenHolders(s,t,r){if(r?.sortBy!=="realizedPnl"){let a=await this._client.token.getHolders(d(s),t,{cursor:r?.cursor,limit:r?.limit,direction:r?.direction,sortBy:r?.sortBy==="lastActiveAt"?HolderSortBy.lastActiveAt:r?.sortBy==="holdingUsd"?HolderSortBy.holdingUsd:void 0});return be(a)}let n=await ee(this._phase3,d(s),t,{cursor:r?.cursor,limit:r?.limit,direction:r?.direction,sortBy:r?.sortBy});return fe(n)}async getTokenTopTraders(s,t,r){let n=await this._client.token.getTokenTopTraders(d(s),t,{cursor:r?.cursor,limit:r?.limit,direction:r?.direction,sortBy:r?.sortBy==="buyVolume"?TraderSortBy.buyVolume:r?.sortBy==="sellVolume"?TraderSortBy.sellVolume:r?.sortBy==="lastActiveAt"?TraderSortBy.lastActiveAt:r?.sortBy==="netflowUsd"?TraderSortBy.netflowUsd:r?.sortBy==="profit"?TraderSortBy.profit:void 0,tag:r?.tag});return he(n)}async getTokenMarketData(s,t){let r=await this._client.token.getMarketData(d(s),t);return M(r)}async getNewTokens(s,t){return (await this._client.ranking.getNewTokens(d(s),this._buildRankingParams(t))).map(T)}async getNewPools(s,t){return (await this._client.ranking.getRankingPools(d(s),RankingPoolType.NewPool)).map(n=>de(s,n))}async getFinalStretchTokens(s,t){return (await this._client.ranking.getFinalStretchTokens(d(s),this._buildRankingParams(t))).map(T)}async getMigratedTokens(s,t){return (await this._client.ranking.getMigratedTokens(d(s),this._buildRankingParams(t))).map(T)}async getTrendingTokens(s,t,r){return (await this._client.ranking.getHotTokens(d(s),t,this._buildRankingParams(r))).map(T)}async getStockTokens(s,t){return (await this._client.ranking.getStocksTokens(d(s),this._buildRankingParams(t))).map(T)}async searchTokens(s){let t=await this._client.token.search({chains:s?.chains?.map(d),q:s?.keyword,limit:s?.limit,cursor:s?.cursor,sortBy:s?.sortBy?oe(s.sortBy):void 0,sort:s?.sortDirection});return ye(t)}async swapRoute(s){let t=await this._client.dex.route(d(s.chain),ke(s));return Pe(t)}async getLatestBlock(s){let t=await this._client.blockchain.getLatestBlock(d(s.chain));return Ae(t)}async sendTx(s){let t=await this._client.transaction.send(d(s.chain),Te(s));return Ie(t)}async checkTxSuccess(s,t,r){let{success:n}=await this._client.waitForJob(t,r);return n}async getWalletPortfolios(s,t,r){let n=e._CHAIN_TO_BALANCE_PARAM[s];if(n&&this.options?.nativeBalanceApiUrl)return this._getWalletPortfoliosFromBalanceApi(s,n,t);let a=await this._client.wallet.getNetWorth(d(s),t,{cursor:r?.cursor,limit:r?.limit??100});return Se(s,a)}async getWalletPnl(s,t,r){let n=await this._client.wallet.getPnl(d(s),t,r?{resolution:r}:void 0);return Ue(s,t,n)}async getWalletPortfolioPnls(s,t,r){if(r?.resolution!=="90d"){let a=await this._client.wallet.getPnlDetails(d(s),t,{resolution:r?.resolution==="7d"?PnlResolution["7d"]:PnlResolution["30d"],positionState:r?.positionState==="closed"?PositionState.closed:r?.positionState==="all"?PositionState.all:r?.positionState==="open"?PositionState.open:void 0,sortBy:r?.sortBy==="realizedPnl"?PnlSortBy.realizedPnl:r?.sortBy==="unrealizedPnl"?PnlSortBy.unrealizedPnl:r?.sortBy==="totalPnl"?PnlSortBy.totalPnl:void 0,cursor:r?.cursor,limit:r?.limit??100,direction:r?.direction});return z(s,t,a)}let n=await se(this._phase3,d(s),t,{resolution:r?.resolution??"30d",positionState:r?.positionState,sortBy:r?.sortBy,cursor:r?.cursor,limit:r?.limit??100,direction:r?.direction});return z(s,t,n)}async getWalletPortfoliosByTokens(s,t,r){let n=e._CHAIN_TO_BALANCE_PARAM[s];if(n&&this.options?.nativeBalanceApiUrl)return this._getPortfoliosFromBalanceApi(s,n,t,r);let a=await this._client.wallet.getNetWorthByTokens(d(s),t,{tokenAddresses:r.join(",")});return Ce(s,a)}async getWalletPortfolioPnlsByTokens(s,t,r){let n=await this._client.wallet.getPnlByToken(d(s),t,{tokenAddresses:r.join(",")});return ve(s,n)}async getWalletTrades(s,t,r){return this._getTrades(s,{walletAddress:t},r)}async getTokenTrades(s,t,r){return this._getTrades(s,{tokenAddress:t},r)}async getWalletActivities(s,t,r){return this._getActivities(s,{walletAddress:t},r)}async getTokenActivities(s,t,r){return this._getActivities(s,{tokenAddress:t},r)}async getPresignedUploadUrl(){return (await this._client.ipfs.presign()).presignUrl}async getWalletLimitOrders(s,t,r){throw new H("Client.getWalletLimitOrders","no limit-orders endpoint on the backend yet")}async getTokensByCreator(s,t,r){throw new H("Client.getTokensByCreator","no creator-index endpoint on the backend yet")}subscribeToken(s,t,r){return this.subscribeTokens(s,[t],r)}subscribeTokens(s,t,r){let n=d(s),a=Array.from(new Set(t.map(i=>i.trim()).filter(Boolean)));if(a.length===0)return {unsubscribe:()=>{}};let c=this._client.stream.batchSubscribe(()=>a.flatMap(i=>[this._client.stream.subscribeTokenStats({chain:n,tokenAddress:i,callback:u=>r([W(s,u)])}),this._client.stream.subscribeTokenHolders({chain:n,tokenAddress:i,callback:u=>r([B(s,i,u)])}),this._client.stream.subscribeTokenSupply({chain:n,tokenAddress:i,callback:u=>r([D(s,i,u)])}),this._client.stream.subscribeTokenLiquidity({chain:n,tokenAddress:i,callback:u=>r([G(s,i,u)])}),this._client.stream.subscribeTokenMaxLiquidity({chain:n,tokenAddress:i,callback:u=>r([We(s,i,u)])}),this._client.stream.subscribeTokenTotalLiquidity({chain:n,tokenAddress:i,callback:u=>r([De(s,i,u)])})]));return {unsubscribe:()=>{let i=this._client.stream;if(i.batchUnsubscribe){i.batchUnsubscribe(c);return}c.forEach(u=>u.unsubscribe());}}}subscribeTokenCandles(s,t,r,n){return this._client.stream.subscribeTokenCandles({chain:d(s),tokenAddress:t,resolution:L(r),callback:a=>n([xe(a)])})}subscribeWalletPnl(s,t,r){return this._client.stream.subscribeWalletPnlList({chain:d(s),walletAddress:t,callback:n=>r(n.map(a=>({chain:s,address:a.walletAddress,buys:a.buys,buyAmountInUsd:a.buyAmountInUsd,sells:a.sells,sellAmountInUsd:a.sellAmountInUsd,wins:a.wins,winRate:a.winRatio,totalProfitInUsd:a.pnlInUsd,totalProfitRatio:a.pnlRatio,avgProfitPerTradeInUsd:a.averagePnlInUsd,tokens:a.tokens,resolution:a.resolution})))})}subscribeWalletPortfolios(s,t,r){return this._client.stream.subscribeWalletBalance({chain:d(s),walletAddress:t,callback:n=>r(n.map(a=>({chain:s,walletAddress:a.walletAddress,tokenAddress:a.tokenAddress,priceInUsd:a.tokenPriceInUsd,amount:a.balance})))})}subscribeWalletPortfolioPnls(s,t,r){return this._client.stream.subscribeWalletPnl({chain:d(s),walletAddress:t,callback:n=>r([{chain:s,walletAddress:n.walletAddress,tokenAddress:n.tokenAddress,openTime:n.opentime?new Date(n.opentime):void 0,closeTime:n.closetime?new Date(n.closetime):void 0,buys:n.buyCount,buyVolumes:n.buyAmount,buyVolumesInUsd:n.buyAmountInUsd,buyAvgPriceInUsd:n.averageBuyPriceInUsd,sells:n.sellCount,sellVolumes:n.sellAmount,sellVolumesInUsd:n.sellAmountInUsd,sellAvgPriceInUsd:n.averageSellPriceInUsd,realizedProfitInUsd:n.realizedProfitInUsd,realizedProfitRatio:n.realizedProfitRatio,unrealizedProfitInUsd:n.unrealizedProfitInUsd,unrealizedProfitRatio:n.unrealizedProfitRatio,totalProfitInUsd:n.totalRealizedProfitInUsd,totalProfitRatio:n.totalRealizedProfitRatio}])})}subscribeWalletTrades(s,t,r){return this._client.stream.subscribeWalletTrade({chain:d(s),walletAddress:t,callback:n=>r([$(s,n)])})}subscribeTokenTrades(s,t,r){return this._client.stream.subscribeTokenTrade({chain:d(s),tokenAddress:t,callback:n=>r([$(s,n)])})}subscribeWalletActivities(s,t,r){return this._client.stream.subscribeWalletTrade({chain:d(s),walletAddress:t,callback:n=>r([j(s,n)])})}subscribeTokenActivities(s,t,r){return this._client.stream.subscribeTokenTrade({chain:d(s),tokenAddress:t,callback:n=>r([j(s,n)])})}subscribeNewTokens(s,t){let r=d(s),n=this._subscribeRankingTokens(s,WsChannelType.New,t),a=[this._client.stream.subscribeNewToken({chain:r,callback:c=>t([pe(s,c)])}),this._client.stream.subscribeNewTokensMetadata({chain:r,callback:c=>t(c.map(i=>V(s,i)))}),this._client.stream.subscribeRankingTokensBondingCurve({chain:r,callback:c=>t(c.map(i=>N(s,i)))})];return {unsubscribe:()=>{n.unsubscribe(),a.forEach(c=>c.unsubscribe());}}}subscribeNewPools(s,t){return this._client.stream.subscribeNewPool({chain:d(s),callback:r=>t([ce(s,r)])})}subscribeTrendingTokens(s,t){return this._subscribeRankingTokenList(s,WsRankingType.HOT,t)}subscribeMigratedTokens(s,t){return this._subscribeRankingTokens(s,WsChannelType.MIGRATED,t)}subscribeFinalStretchTokens(s,t){let r=d(s),n=this._subscribeRankingTokens(s,WsChannelType.FINAL_STRETCH,t),a=this._client.stream.subscribeRankingTokensBondingCurve({chain:r,callback:c=>t(c.map(i=>N(s,i)))});return {unsubscribe:()=>{n.unsubscribe(),a.unsubscribe();}}}subscribeStockTokens(s,t){return this._subscribeRankingTokenList(s,WsRankingType.STOCKS,t)}static _CHAIN_TO_BALANCE_PARAM={[Chain.SOLANA]:"sol",[Chain.ETHEREUM]:"eth",[Chain.BINANCE]:"bnb"};static _NATIVE_TOKEN_ADDRESS={[Chain.SOLANA]:"11111111111111111111111111111111",[Chain.ETHEREUM]:"0x0000000000000000000000000000000000000000",[Chain.BINANCE]:"0x0000000000000000000000000000000000000000"};async _getPortfoliosFromBalanceApi(s,t,r,n){let a=this.options.nativeBalanceApiUrl,c=new URLSearchParams({chain:t,address:r});n?.length&&c.set("tokens",n.join(","));let i=await fetch(`${a}?${c.toString()}`);if(!i.ok)throw new Error(`Balance API returned ${i.status}`);return (await i.json()).balances.map(m=>{let A=BigInt(m.balance),v=m.decimals,R=BigInt(10)**BigInt(v),h=A/R,Y=(A%R).toString().padStart(v,"0"),O=`${h}.${Y}`.replace(/\.?0+$/,"")||"0";return {chain:s,address:m.address,name:"",symbol:"",priceInUsd:"0",priceInNative:"0",amount:O,amountInUsd:"0",amountInNative:"0",decimals:m.decimals}})}async _getWalletPortfoliosFromBalanceApi(s,t,r){let n=await this._getPortfoliosFromBalanceApi(s,t,r),a=e._NATIVE_TOKEN_ADDRESS[s],c=a?n.find(i=>i.address===a):void 0;return {chain:s,address:r,balanceInUsd:"0",balanceInNative:c?.amount??"0",portfolios:n,hasPrev:false,hasNext:false}}_buildRankingParams(s){return {sortBy:s?.sortBy?F(s.sortBy):void 0,sortDirection:s?.sortDirection?s.sortDirection:void 0,rangeFilters:s?.filters?ae(s.filters):void 0,launchpadPlatform:s?.filters?cs(s.filters):void 0,searchKeywords:s?.keywords,excludeKeywords:s?.excludeKeywords}}async _getTrades(s,t,r){let n=await this._client.trade.getTrades(d(s),{...t,cursor:r?.cursor,limit:r?.limit,direction:r?.direction,beforeTimestamp:r?.before?.getTime(),afterTimestamp:r?.after?.getTime(),beforeBlockHeight:r?.beforeBlockHeight,afterBlockHeight:r?.afterBlockHeight,poolAddress:r?.poolAddress,type:r?.type?r.type.toUpperCase():void 0});return Re(n)}async _getActivities(s,t,r){let n=await this._client.trade.getActivities(d(s),{...t,cursor:r?.cursor,limit:r?.limit,direction:r?.direction,beforeTimestamp:r?.before?.getTime(),afterTimestamp:r?.after?.getTime(),beforeBlockHeight:r?.beforeBlockHeight,afterBlockHeight:r?.afterBlockHeight,poolAddress:r?.poolAddress,type:r?.type?r.type.toUpperCase():void 0,sortBy:r?.sortBy==="totalUsd"?ActivitySortBy.totalUsd:r?.sortBy==="timestamp"?ActivitySortBy.timestamp:void 0});return He(n)}_subscribeRankingTokens(s,t,r){let n=d(s),a=[this._client.stream.subscribeRankingTokensStats({chain:n,channelType:t,callback:c=>r(c.map(i=>W(s,i)))}),this._client.stream.subscribeRankingTokensHolders({chain:n,channelType:t,callback:c=>r(c.map(i=>B(s,i.tokenAddress,i)))}),this._client.stream.subscribeRankingTokensSupply({chain:n,channelType:t,callback:c=>r(c.map(i=>D(s,i.tokenAddress,i)))}),this._client.stream.subscribeRankingTokensLiquidity({chain:n,channelType:t,callback:c=>r(c.map(i=>G(s,i.tokenAddress,i)))})];return {unsubscribe:()=>a.forEach(c=>c.unsubscribe())}}_subscribeRankingTokenList(s,t,r){return this._client.stream.subscribeRankingTokensList({chain:d(s),ranking_type:t,callback:n=>{let a=n.flatMap(c=>q(s,c));a.length>0&&r(a);}})}};function cs(e){let s=e.find(t=>t.field==="launchedFromProtocolFamily");if(s){if(s.operator==="eq")return [s.value];if(s.operator==="in")return s.value;console.warn("invalid launchedFromProtocolFamily filter",s);}}
2
+ export{Le as Client,Ze as KYBERSWAP_NATIVE_SENTINEL,H as NotImplementedError,Nt as fromActivityPage,p as fromChainDTO,Ae as fromLatestBlock,ve as fromPnlDetailItems,z as fromPnlDetailsPage,de as fromRankingPoolDTO,He as fromSdkActivityPage,be as fromSdkTokenHolderPage,he as fromSdkTokenTopTraderPage,Ie as fromSendTxResult,Pe as fromSwapRoute,ue as fromTokenCandle,Qe as fromTokenCreatorDTO,T as fromTokenDTO,fe as fromTokenHolderPage,Dt as fromTokenLiquidityDTO,M as fromTokenMarketDataDTO,V as fromTokenMetadataSubscribed,ye as fromTokenPage,me as fromTokenSecurity,E as fromTokenStatsDTO,pe as fromTokenSubscribed,Re as fromTradePage,Ce as fromWalletNetWorthByTokens,Ue as fromWalletPnlSummary,Se as fromWalletPortfolios,j as fromWsActivity,xe as fromWsCandle,ce as fromWsRankingPoolToSubscribed,q as fromWsRankingTokenListToSubscribed,N as fromWsTokenBondingCurveToSubscribed,W as fromWsTokenDataSubscribed,B as fromWsTokenHolderToSubscribed,G as fromWsTokenLiquidityToSubscribed,is as fromWsTokenMarketDataFromHolder,as as fromWsTokenMarketDataFromStats,We as fromWsTokenMaxLiquidityToSubscribed,os as fromWsTokenStats,D as fromWsTokenSupplyToSubscribed,De as fromWsTokenTotalLiquidityToSubscribed,$ as fromWsTradeActivity,us as isNotImplementedError,d as toChainDTO,F as toFieldDTO,Bt as toMintForRoute,ae as toRangeFiltersDTO,L as toResolutionDTO,oe as toSearchFieldDTO,Te as toSendTxInput,je as toSortDirectionDTO,ke as toSwapRouteInput};//# sourceMappingURL=index.mjs.map
3
3
  //# sourceMappingURL=index.mjs.map