@liberfi.io/client 0.3.39 → 0.3.41
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.d.mts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
package/dist/index.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
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 ms(e){return e instanceof Error&&e.code==="NotImplemented"}var Ve="https://api.chainstream.io";async function qe(e){return typeof e=="string"?e:Promise.resolve(e.getToken())}function Ge(e,s,t){if(t!=null){if(t instanceof Date){e.set(s,String(t.getTime()));return}e.set(s,String(t));}}function $e(e,s){let t=e.endsWith("/")?e.slice(0,-1):e,r=s.startsWith("/")?s:`/${s}`;return t+r}async function Z(e,s,t){let r=new URL($e(e.baseUrl,s)),n=new URLSearchParams;for(let[u,m]of Object.entries(t))Ge(n,u,m);let a=n.toString();a&&(r.search=a);let c=await qe(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 ee(e,s){return {baseUrl:s??Ve,accessToken:e}}function se(e,s,t,r){return Z(e,`/v2/token/${encodeURIComponent(s)}/${encodeURIComponent(t)}/holders`,r)}function te(e,s,t,r){return Z(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 F(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 Qe(e){return e}function ae(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 E(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 ie(e){return e.filter(s=>["gt","gte","lt","lte","between"].indexOf(s.operator)>=0).map(s=>{let t={field:E(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 x(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 Ke(e){return {address:e.address??void 0,share:e.share??void 0,isVerified:e.isVerified??void 0}}function g(e){return {chain:x(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(Ke),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?M(e.stats):void 0,marketData:e.marketData?z(e.marketData):void 0,createdAt:e.tokenCreatedAt?new Date(e.tokenCreatedAt):void 0}}function M(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 Bt(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 le(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 de(e){if(e)return {poolAddress:e.poolAddress,tokenAAddress:e.tokenAAddress,tokenALiquidityInUsd:e.tokenALiquidityInUsd,tokenBAddress:e.tokenBAddress,tokenBLiquidityInUsd:e.tokenBLiquidityInUsd}}function ce(e,s){return {chain:e,poolAddress:s.poolAddress,tokenAAddress:s.tokenAAddress,tokenBAddress:s.tokenBAddress,createdAt:s.createdAtMs?new Date(s.createdAtMs):void 0,dex:le(s.dex),token:s.token?g(s.token):void 0,balance:de(s.balance)}}function Je(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 ue(e,s){let t=s.token?Je(G(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:le(s.dex),token:t,balance:de(s.balance)}}function z(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 me(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 Ye(e){return e==="1d"?"24h":e}function ke(e){let s=e;return {hasTransferFee:s.hasTransferFee,isTransferFeeUpgradable:s.isTransferFeeUpgradable,isTransferable:s.isTransferable,isFreezable:s.isFreezable,isClosable:s.isClosable}}var Xe=new Set([Chain.SOLANA,Chain.SOLANA_TESTNET,Chain.SOLANA_DEVNET]),Ze="0x0000000000000000000000000000000000000000",es="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";function ss(e){return e===SOLANA_TOKENS.native.address?SOLANA_TOKENS.wrapped.address:e}function ts(e){return e.toLowerCase()===Ze.toLowerCase()?es:e}function rs(e){return e.dex==="jupiter"?"jupiter":e.dex==="kyberswap"?"kyberswap":Xe.has(e.chain)?"jupiter":"kyberswap"}function L(e,s){return e==="jupiter"?ss(s):e==="kyberswap"?ts(s):s}function Nt(e,s){return L(e,s)}function Te(e){let s=rs(e),t=L(s,e.input),r=L(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 ge(e){return {signedTx:e.serializedTx}}function b(e){return e==null?void 0:new Date(e)}function fe(e){if(e!=null)return new Date(e<1e12?e*1e3:e)}function U(e){if(!(!e||e.length===0))return e}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:b(s.lastActiveAt),startHoldingAt:b(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,ratio:s.percentage,tags:U(s.tags),lastActiveAt:b(s.lastActiveAt),startHoldingAt:b(s.startHoldingAt)}))}}function ye(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:b(s.lastActiveAt),startHoldingAt:b(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 Pe(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(g),extra:o(s.countsByProtocols)}}function Ae(e){return {serializedTx:e.serializedTx,recentBlockhash:o(e.recentBlockhash),lastValidBlockHeight:o(e.lastValidBlockHeight),plans:[],extra:e.routeInfo}}function Ie(e){return {blockhash:e.blockhash,lastValidBlockHeight:e.lastValidBlockHeight}}function Se(e){return {txHash:e.signature,extra:{jobId:e.jobId,elapsedTime:e.elapsedTime}}}function Ue(e,s){let t=(s.data??[]).map(r=>({chain:x(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 Ce(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 ns(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:b(s.firstBuyAt),lastSellAt:b(s.lastSellAt)}}function V(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=>ns(e,n))}}function ve(e,s){return (s.data??[]).map(t=>({chain:x(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:b(t.lastActiveAt),walletTokenTags:U(t.walletTokenTags)}))}function Re(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 we(e){return {startCursor:o(e.startCursor),endCursor:o(e.endCursor),hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(He)}}function He(e){let s=e.type.toLowerCase()==="buy";return {chain:x(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:fe(e.blockTimestamp)??new Date(0),gasFee:e.gasFee!=null?String(e.gasFee):void 0,traderTags:U(e.traderTags)}}function xe(e){return {startCursor:o(e.startCursor),endCursor:o(e.endCursor),hasPrev:e.hasPrev??false,hasNext:e.hasNext??false,data:e.data.map(He)}}function Ot(e){return {startCursor:o(e.startCursor),endCursor:o(e.endCursor),hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(os)}}function os(e){let s=e.type.toLowerCase().replace(/ /g,"_"),t=s==="buy",r=fe(e.blockTimestamp)??new Date(0);return {chain:x(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 q(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 We(e){return {open:e.open,close:e.close,high:e.high,low:e.low,volume:e.volume,resolution:Ye(e.resolution),timestamp:new Date(e.time)}}function as(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 _=v??(a!==void 0&&c!==void 0?a+c:void 0),Ee=i!==void 0&&u!==void 0?i+u:void 0,Me=m!==void 0&&A!==void 0?new SafeBigNumber(m).plus(A).toString():void 0,ze=h&&w&&new SafeBigNumber(h).gt(0)?new SafeBigNumber(w).minus(h).div(h).toString():void 0;r[n]={buys:a,sells:c,trades:_,buyers:i,sellers:u,traders:Ee,buyVolumesInUsd:m,sellVolumesInUsd:A,volumesInUsd:Me,openPriceInUsd:h,closePriceInUsd:w,priceInUsd:R??w,priceChange:ze};}return r}function is(e){return {priceInUsd:e.price}}function D(e,s){return {chain:e,address:s.address,stats:as(s),marketData:is(s)}}function G(e,s){let t=[];return s.metadata&&t.push(q(e,s.metadata)),s.stat&&t.push(D(e,s.stat)),s.holder&&t.push(N(e,s.holder.tokenAddress,s.holder)),s.supply&&t.push(B(e,s.supply.tokenAddress,s.supply)),s.bondingCurve&&t.push(O(e,s.bondingCurve)),t.filter(r=>r.address)}function B(e,s,t){return {chain:e,address:s,marketData:{totalSupply:t.supply,marketCapInUsd:t.marketCapInUsd}}}function N(e,s,t){return {chain:e,address:s,marketData:ls(t)}}function $(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 O(e,s){return {chain:e,address:s.tokenAddress??"",migrateProgress:s.progressRatio?new SafeBigNumber(s.progressRatio).shiftedBy(2).toString():void 0}}function De(e,s,t){return {chain:e,address:s,liquidities:[{poolAddress:t.poolAddress,tvlInUsd:t.liquidityInUsd,tvl:t.liquidityInNative}]}}function Be(e,s,t){return {chain:e,address:s,marketData:{tvlInUsd:t.liquidityInUsd,tvl:t.liquidityInNative}}}function ls(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 j(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,priceInUsd:W(s.sellAmountInUsd,s.sellAmount)},to:{address:s.buyTokenAddress,symbol:s.buyTokenSymbol,name:s.buyTokenName,amount:s.buyAmount,amountInUsd:s.buyAmountInUsd,priceInUsd:W(s.buyAmountInUsd,s.buyAmount)},status:"success",time:new Date(s.timestamp)}}function Q(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,priceInUsd:W(s.sellAmountInUsd,s.sellAmount)},to:{address:s.buyTokenAddress,symbol:s.buyTokenSymbol,name:s.buyTokenName,amount:s.buyAmount,amountInUsd:s.buyAmountInUsd,priceInUsd:W(s.buyAmountInUsd,s.buyAmount)},status:"success",time:new Date(s.timestamp)}}function W(e,s){if(e==null||e===""||s==null||s==="")return;let t=new SafeBigNumber(s);if(t.gt(0))return new SafeBigNumber(e).div(t).toString()}var Fe=class e{constructor(s,t){this.accessToken=s;this.options=t;this._client=new ChainStreamClient(this.accessToken,this.options),this._phase3=ee(this.accessToken,this.options?.serverUrl);}_client;_phase3;async getToken(s,t){let r=await this._client.token.getToken(d(s),t);return g(r)}async getTokens(s,t){return (await this._client.token.getTokens(d(s),{tokenAddresses:t.join(",")})).map(g)}async getTokenCandles(s,t,r,n){return (await this._client.token.getCandles(d(s),t,{resolution:F(r),from:n?.after?.getTime(),to:n?.before?.getTime(),limit:n?.limit})).map(c=>me(c,r))}async getTokenSecurity(s,t){let r=await this._client.token.getSecurity(d(s),t);return ke(r)}async getTokenStats(s,t){let r=await this._client.token.getStats(d(s),t);return M(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 he(a)}let n=await se(this._phase3,d(s),t,{cursor:r?.cursor,limit:r?.limit,direction:r?.direction,sortBy:r?.sortBy});return be(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 ye(n)}async getTokenMarketData(s,t){let r=await this._client.token.getMarketData(d(s),t);return z(r)}async getNewTokens(s,t){return (await this._client.ranking.getNewTokens(d(s),this._buildRankingParams(t))).map(g)}async getNewPools(s,t){return (await this._client.ranking.getRankingPools(d(s),RankingPoolType.NewPool)).map(n=>ce(s,n))}async getFinalStretchTokens(s,t){return (await this._client.ranking.getFinalStretchTokens(d(s),this._buildRankingParams(t))).map(g)}async getMigratedTokens(s,t){return (await this._client.ranking.getMigratedTokens(d(s),this._buildRankingParams(t))).map(g)}async getTrendingTokens(s,t,r){return (await this._client.ranking.getHotTokens(d(s),t,this._buildRankingParams(r))).map(g)}async getStockTokens(s,t){return (await this._client.ranking.getStocksTokens(d(s),this._buildRankingParams(t))).map(g)}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?ae(s.sortBy):void 0,sort:s?.sortDirection});return Pe(t)}async swapRoute(s){let t=await this._client.dex.route(d(s.chain),Te(s));return Ae(t)}async getLatestBlock(s){let t=await this._client.blockchain.getLatestBlock(d(s.chain));return Ie(t)}async sendTx(s){let t=await this._client.transaction.send(d(s.chain),ge(s));return Se(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 Ue(s,a)}async getWalletPnl(s,t,r){let n=await this._client.wallet.getPnl(d(s),t,r?{resolution:r}:void 0);return Ce(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 V(s,t,a)}let n=await te(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 V(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 ve(s,a)}async getWalletPortfolioPnlsByTokens(s,t,r){let n=await this._client.wallet.getPnlByToken(d(s),t,{tokenAddresses:r.join(",")});return Re(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([D(s,u)])}),this._client.stream.subscribeTokenHolders({chain:n,tokenAddress:i,callback:u=>r([N(s,i,u)])}),this._client.stream.subscribeTokenSupply({chain:n,tokenAddress:i,callback:u=>r([B(s,i,u)])}),this._client.stream.subscribeTokenLiquidity({chain:n,tokenAddress:i,callback:u=>r([$(s,i,u)])}),this._client.stream.subscribeTokenMaxLiquidity({chain:n,tokenAddress:i,callback:u=>r([De(s,i,u)])}),this._client.stream.subscribeTokenTotalLiquidity({chain:n,tokenAddress:i,callback:u=>r([Be(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:F(r),callback:a=>n([We(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([j(s,n)])})}subscribeTokenTrades(s,t,r){return this._client.stream.subscribeTokenTrade({chain:d(s),tokenAddress:t,callback:n=>r([j(s,n)])})}subscribeWalletActivities(s,t,r){return this._client.stream.subscribeWalletTrade({chain:d(s),walletAddress:t,callback:n=>r([Q(s,n)])})}subscribeTokenActivities(s,t,r){return this._client.stream.subscribeTokenTrade({chain:d(s),tokenAddress:t,callback:n=>r([Q(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=>q(s,i)))}),this._client.stream.subscribeRankingTokensBondingCurve({chain:r,callback:c=>t(c.map(i=>O(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([ue(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=>O(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,X=(A%R).toString().padStart(v,"0"),_=`${h}.${X}`.replace(/\.?0+$/,"")||"0";return {chain:s,address:m.address,name:"",symbol:"",priceInUsd:"0",priceInNative:"0",amount:_,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?E(s.sortBy):void 0,sortDirection:s?.sortDirection?s.sortDirection:void 0,rangeFilters:s?.filters?ie(s.filters):void 0,launchpadPlatform:s?.filters?us(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 we(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 xe(n)}_subscribeRankingTokens(s,t,r){let n=d(s),a=[this._client.stream.subscribeRankingTokensStats({chain:n,channelType:t,callback:c=>r(c.map(i=>D(s,i)))}),this._client.stream.subscribeRankingTokensHolders({chain:n,channelType:t,callback:c=>r(c.map(i=>N(s,i.tokenAddress,i)))}),this._client.stream.subscribeRankingTokensSupply({chain:n,channelType:t,callback:c=>r(c.map(i=>B(s,i.tokenAddress,i)))}),this._client.stream.subscribeRankingTokensLiquidity({chain:n,channelType:t,callback:c=>r(c.map(i=>$(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=>G(s,c));a.length>0&&r(a);}})}};function us(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{
|
|
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 w=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 cs(e){return e instanceof Error&&e.code==="NotImplemented"}var Ee="https://api.chainstream.io";async function ze(e){return typeof e=="string"?e:Promise.resolve(e.getToken())}function Ve(e,s,t){if(t!=null){if(t instanceof Date){e.set(s,String(t.getTime()));return}e.set(s,String(t));}}function qe(e,s){let t=e.endsWith("/")?e.slice(0,-1):e,n=s.startsWith("/")?s:`/${s}`;return t+n}async function Ge(e,s,t){let n=new URL(qe(e.baseUrl,s)),o=new URLSearchParams;for(let[c,m]of Object.entries(t))Ve(o,c,m);let a=o.toString();a&&(n.search=a);let u=await ze(e.accessToken),i=await fetch(n.toString(),{method:"GET",headers:{Accept:"application/json",Authorization:`Bearer ${u}`}});if(!i.ok){let c=await i.text().catch(()=>"");throw new Error(`[phase3Http] ${i.status} ${i.statusText} ${n.pathname}: ${c}`)}return await i.json()}function se(e,s){return {baseUrl:s??Ee,accessToken:e}}function te(e,s,t,n){return Ge(e,`/v2/wallet/${encodeURIComponent(s)}/${encodeURIComponent(t)}/pnl-details`,n)}function r(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 z(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 ae(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 V(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 ie(e){return e.filter(s=>["gt","gte","lt","lte","between"].indexOf(s.operator)>=0).map(s=>{let t={field:V(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 g(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?q(e.stats):void 0,marketData:e.marketData?G(e.marketData):void 0,createdAt:e.tokenCreatedAt?new Date(e.tokenCreatedAt):void 0}}function q(e){return {"1m":h(e,"1m"),"5m":h(e,"5m"),"15m":h(e,"15m"),"30m":h(e,"30m"),"1h":h(e,"1h"),"4h":h(e,"4h"),"24h":h(e,"24h")}}function I(e){return e===void 0?void 0:parseInt(e)}function h(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 le(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 de(e){if(e)return {poolAddress:e.poolAddress,tokenAAddress:e.tokenAAddress,tokenALiquidityInUsd:e.tokenALiquidityInUsd,tokenBAddress:e.tokenBAddress,tokenBLiquidityInUsd:e.tokenBLiquidityInUsd}}function ue(e,s){return {chain:e,poolAddress:s.poolAddress,tokenAAddress:s.tokenAAddress,tokenBAddress:s.tokenBAddress,createdAt:s.createdAtMs?new Date(s.createdAtMs):void 0,dex:le(s.dex),token:s.token?g(s.token):void 0,balance:de(s.balance)}}function Ke(e){if(e.length!==0)return e.reduce((s,t)=>({...s,...Object.fromEntries(Object.entries(t).filter(([,n])=>n!==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(j(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:le(s.dex),token:t,balance:de(s.balance)}}function G(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 me(e,s){return {open:e.open,close:e.close,high:e.high,low:e.low,volume:e.volume,volumeInTokenAmount:r(e.volumeInTokenAmount),trades:e.trades??void 0,resolution:s,timestamp:new Date(e.timestamp)}}function Je(e){return e==="1d"?"24h":e}function Te(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(e,s){return e==="jupiter"?es(s):e==="kyberswap"?ss(s):s}function Bt(e,s){return E(e,s)}function ke(e){let s=ts(e),t=E(s,e.input),n=E(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:n,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 ge(e){return {signedTx:e.serializedTx}}function H(e){return e==null?void 0:new Date(e)}function P(e){if(e!=null)return new Date(e<1e12?e*1e3:e)}function x(e){if(!(!e||e.length===0))return e}function fe(e){return {accountAddress:r(e.accountAddress),address:e.walletAddress,accuAmount:r(e.accuAmount),accuCost:r(e.accuCost),addrType:r(e.addrType),addressLabel:r(e.addressLabel),amount:e.amount,amountInUsd:e.amountInUsd,ratio:e.percentage,avgBuyPriceUsd:r(e.avgBuyPriceUsd),avgCostUsd:r(e.avgCostUsd),avgSellPriceUsd:r(e.avgSellPriceUsd),buyAmountCur:r(e.buyAmountCur),buyVolumeNative:r(e.buyVolumeNative),buyVolumeUsd:r(e.buyVolumeUsd),createdAt:P(e.createdAt),endHoldingAt:P(e.endHoldingAt),exchange:r(e.exchange),firstBuyTime:P(e.firstBuyTime),historyBoughtCost:r(e.historyBoughtCost),historyBoughtFee:r(e.historyBoughtFee),historySoldFee:r(e.historySoldFee),historySoldIncome:r(e.historySoldIncome),historyTransferInAmount:r(e.historyTransferInAmount),historyTransferInCost:r(e.historyTransferInCost),historyTransferOutAmount:r(e.historyTransferOutAmount),historyTransferOutFee:r(e.historyTransferOutFee),historyTransferOutIncome:r(e.historyTransferOutIncome),isClosed:r(e.isClosed),isNew:r(e.isNew),isTransferIn:r(e.isTransferIn),lastActiveAt:P(e.lastActiveAt),lastBlock:r(e.lastBlock),lossCount:r(e.lossCount),makerTokenTags:r(e.makerTokenTags),nativeBalance:r(e.nativeBalance),netflowAmount:r(e.netflowAmount),netflowAmountUsd:r(e.netflowAmountUsd),netflowUsd:r(e.netflowUsd),positionCostUsd:r(e.positionCostUsd),realizedPnlRatio:r(e.realizedPnlRatio),realizedProfit:r(e.realizedProfit),roi:r(e.roi),sellAmountCur:r(e.sellAmountCur),sellAmountPercentage:r(e.sellAmountPercentage),sellVolumeNative:r(e.sellVolumeNative),sellVolumeUsd:r(e.sellVolumeUsd),startHoldingAt:P(e.startHoldingAt),tags:x(e.tags),tokenTransferIn:r(e.tokenTransferIn),tokenTransferOut:r(e.tokenTransferOut),totalBuyCount:r(e.totalBuyCount),totalCostUsd:r(e.totalCostUsd),totalProfit:r(e.totalProfit),totalSellCount:r(e.totalSellCount),transferInAmount7d:r(e.transferInAmount7d),transferInCount:r(e.transferInCount),transferOutAmount7d:r(e.transferOutAmount7d),transferOutCount:r(e.transferOutCount),unrealizedPnlRatio:r(e.unrealizedPnlRatio),unrealizedProfit:r(e.unrealizedProfit),walletTagV2:r(e.walletTagV2),winCount:r(e.winCount)}}function Nt(e){return {startCursor:r(e.startCursor),endCursor:r(e.endCursor),hasPrev:e.hasPrev??false,hasNext:e.hasNext??false,data:e.data.map(s=>fe(s))}}function be(e){return {startCursor:r(e.startCursor),endCursor:r(e.endCursor),hasPrev:e.hasPrev??false,hasNext:e.hasNext??false,data:e.data.map(s=>fe(s))}}function ye(e){return {startCursor:r(e.startCursor),endCursor:r(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:x(s.tags),lastActiveAt:H(s.lastActiveAt),startHoldingAt:H(s.startHoldingAt),averageBuyPriceInUsd:r(s.averageBuyPriceInUsd),averageSellPriceInUsd:r(s.averageSellPriceInUsd),buyAmountCur:r(s.buyAmountCur),sellAmountCur:r(s.sellAmountCur),totalBuyAmountInUsd:r(s.totalBuyAmountInUsd),totalSellAmountInUsd:r(s.totalSellAmountInUsd),realizedPnl:r(s.realizedPnl),totalRealizedPnlInUsd:r(s.totalRealizedPnlInUsd),unrealizedPnl:r(s.unrealizedPnl),unrealizedPnlInUsd:r(s.unrealizedPnlInUsd),roi:r(s.roi),totalPnlInUsd:r(s.totalPnlInUsd),totalBuyCount:r(s.totalBuyCount),totalSellCount:r(s.totalSellCount),transferIn:r(s.transferIn),transferInCount:r(s.transferInCount),transferOutCount:r(s.transferOutCount)}))}}function he(e){let s=e;return {startCursor:r(e.startCursor),endCursor:r(e.endCursor),hasPrev:e.hasPrev??false,hasNext:e.hasNext??false,data:e.data.map(g),extra:r(s.countsByProtocols)}}function Pe(e){return {serializedTx:e.serializedTx,recentBlockhash:r(e.recentBlockhash),lastValidBlockHeight:r(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 Ce(e,s){let t=(s.data??[]).map(n=>({chain:p(n.chain),address:n.tokenAddress,name:n.name,symbol:n.symbol,image:r(n.logoUri),priceInUsd:n.priceInUsd,priceInNative:n.priceInNative,amount:n.amount,amountInUsd:n.valueInUsd,amountInNative:n.valueInNative,decimals:n.decimals}));return {chain:t[0]?.chain??e,address:s.walletAddress,balanceInUsd:s.totalValueInUsd,balanceInNative:s.totalValueInNative,startCursor:r(s.startCursor),endCursor:r(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:r(t.winRate),buyAmountInUsd:r(t.buyAmountInUsd),sellAmountInUsd:r(t.sellAmountInUsd),totalCostInUsd:r(t.totalCostInUsd),realizedProfitInUsd:r(t.realizedProfitInUsd),realizedProfitRatio:r(t.realizedProfitRatio),unrealizedProfitInUsd:r(t.unrealizedProfitInUsd),unrealizedProfitRatio:r(t.unrealizedProfitRatio),totalProfitInUsd:r(t.totalProfitInUsd),totalProfitRatio:r(t.totalProfitRatio),avgProfitPerTradeInUsd:r(t.avgProfitPerTradeInUsd)}}function ns(e,s){return {chain:e,address:s.tokenAddress,name:s.name??"",symbol:s.symbol??"",image:r(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:H(s.firstBuyAt),lastSellAt:H(s.lastSellAt)}}function $(e,s,t){let n=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:r(t.summary.winRate),buyAmountInUsd:r(t.summary.buyAmountInUsd),sellAmountInUsd:r(t.summary.sellAmountInUsd),totalCostInUsd:t.summary.totalCostInUsd,realizedProfitInUsd:r(t.summary.realizedProfitInUsd),unrealizedProfitInUsd:r(t.summary.unrealizedProfitInUsd),totalProfitInUsd:r(t.summary.totalProfitInUsd),totalProfitRatio:r(n.totalProfitRatio),avgProfitPerTradeInUsd:r(t.summary.avgProfitPerTradeInUsd),startCursor:r(t.startCursor),endCursor:r(t.endCursor),hasPrev:t.hasPrev,hasNext:t.hasNext,portfolios:t.data.map(o=>ns(e,o))}}function Se(e,s){return (s.data??[]).map(t=>({chain:p(t.chain),address:t.tokenAddress,name:t.name,symbol:t.symbol,image:r(t.logoUri),priceInUsd:t.priceInUsd,priceInNative:t.priceInNative,amount:t.amount,amountInUsd:t.valueInUsd,amountInNative:t.valueInNative,decimals:t.decimals,isActive:t.isActive,avgCostUsd:r(t.avgCostUsd),lastActiveAt:H(t.lastActiveAt),walletTokenTags:x(t.walletTokenTags)}))}function ve(e,s){return s.data.map(t=>({chain:e,address:t.tokenAddress,name:t.name??"",symbol:t.symbol??"",image:r(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:r(e.startCursor),endCursor:r(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:r(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:r(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:r(e.dexProgramAddress),protocolFamily:r(e.dexProtocolFamily),image:r(e.dexImage)},poolAddress:r(e.poolAddress),status:e.status??"success",time:P(e.blockTimestamp)??new Date(0),gasFee:e.gasFee!=null?String(e.gasFee):void 0,traderTags:x(e.traderTags)}}function He(e){return {startCursor:r(e.startCursor),endCursor:r(e.endCursor),hasPrev:e.hasPrev??false,hasNext:e.hasNext??false,data:e.data.map(we)}}function Ot(e){return {startCursor:r(e.startCursor),endCursor:r(e.endCursor),hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(rs)}}function rs(e){let s=e.type.toLowerCase().replace(/ /g,"_"),t=s==="buy",n=P(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:r(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:r(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:r(e.dexProgramAddress),protocolFamily:r(e.dexProtocolFamily),image:r(e.dexImage)},poolAddress:r(e.poolAddress),status:e.status??"success",time:n,gasFee:e.gasFee!=null?String(e.gasFee):void 0,traderTags:x(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 N(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,n={};for(let o of s){let a=t[`buys${o}`],u=t[`sells${o}`],i=t[`buyers${o}`],c=t[`sellers${o}`],m=t[`buyVolumeInUsd${o}`],A=t[`sellVolumeInUsd${o}`],S=t[`trades${o}`],v=t[`price${o}`],b=t[`openInUsd${o}`],R=t[`closeInUsd${o}`];if(!(a!==void 0||u!==void 0||S!==void 0||v!==void 0))continue;let M=S??(a!==void 0&&u!==void 0?a+u:void 0),Le=i!==void 0&&c!==void 0?i+c:void 0,Fe=m!==void 0&&A!==void 0?new SafeBigNumber(m).plus(A).toString():void 0,Me=b&&R&&new SafeBigNumber(b).gt(0)?new SafeBigNumber(R).minus(b).div(b).toString():void 0;n[o]={buys:a,sells:u,trades:M,buyers:i,sellers:c,traders:Le,buyVolumesInUsd:m,sellVolumesInUsd:A,volumesInUsd:Fe,openPriceInUsd:b,closePriceInUsd:R,priceInUsd:v??R,priceChange:Me};}return n}function as(e){return {priceInUsd:e.price}}function O(e,s){return {chain:e,address:s.address,stats:os(s),marketData:as(s)}}function j(e,s){let t=[];return s.metadata&&t.push(N(e,s.metadata)),s.stat&&t.push(O(e,s.stat)),s.holder&&t.push(L(e,s.holder.tokenAddress,s.holder)),s.supply&&t.push(_(e,s.supply.tokenAddress,s.supply)),s.bondingCurve&&t.push(F(e,s.bondingCurve)),t.filter(n=>n.address)}function _(e,s,t){return {chain:e,address:s,marketData:{totalSupply:t.supply,marketCapInUsd:t.marketCapInUsd}}}function L(e,s,t){return {chain:e,address:s,marketData:is(t)}}function Q(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 F(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 K(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,priceInUsd:B(s.sellAmountInUsd,s.sellAmount)},to:{address:s.buyTokenAddress,symbol:s.buyTokenSymbol,name:s.buyTokenName,amount:s.buyAmount,amountInUsd:s.buyAmountInUsd,priceInUsd:B(s.buyAmountInUsd,s.buyAmount)},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,priceInUsd:B(s.sellAmountInUsd,s.sellAmount)},to:{address:s.buyTokenAddress,symbol:s.buyTokenSymbol,name:s.buyTokenName,amount:s.buyAmount,amountInUsd:s.buyAmountInUsd,priceInUsd:B(s.buyAmountInUsd,s.buyAmount)},status:"success",time:new Date(s.timestamp)}}function B(e,s){if(e==null||e===""||s==null||s==="")return;let t=new SafeBigNumber(s);if(t.gt(0))return new SafeBigNumber(e).div(t).toString()}var _e=class e{constructor(s,t){this.accessToken=s;this.options=t;this._client=new ChainStreamClient(this.accessToken,this.options),this._phase3=se(this.accessToken,this.options?.serverUrl);}_client;_phase3;async getToken(s,t){let n=await this._client.token.getToken(d(s),t);return g(n)}async getTokens(s,t){return (await this._client.token.getTokens(d(s),{tokenAddresses:t.join(",")})).map(g)}async getTokenCandles(s,t,n,o){return (await this._client.token.getCandles(d(s),t,{resolution:z(n),from:o?.after?.getTime(),to:o?.before?.getTime(),limit:o?.limit})).map(u=>me(u,n))}async getTokenSecurity(s,t){let n=await this._client.token.getSecurity(d(s),t);return Te(n)}async getTokenStats(s,t){let n=await this._client.token.getStats(d(s),t);return q(n)}async getTokenHolders(s,t,n){let o=await this._client.token.getHolders(d(s),t,{cursor:n?.cursor,limit:n?.limit,direction:n?.direction,sortBy:n?.sortBy==="lastActiveAt"?HolderSortBy.lastActiveAt:n?.sortBy==="holdingUsd"?HolderSortBy.holdingUsd:n?.sortBy==="realizedPnl"?HolderSortBy.profit:n?.sortBy==="buyVolume"?HolderSortBy.buyVolume:n?.sortBy==="sellVolume"?HolderSortBy.sellVolume:void 0});return be(o)}async getTokenTopTraders(s,t,n){let o=await this._client.token.getTokenTopTraders(d(s),t,{cursor:n?.cursor,limit:n?.limit,direction:n?.direction,sortBy:n?.sortBy==="buyVolume"?TraderSortBy.buyVolume:n?.sortBy==="sellVolume"?TraderSortBy.sellVolume:n?.sortBy==="lastActiveAt"?TraderSortBy.lastActiveAt:n?.sortBy==="netflowUsd"?TraderSortBy.netflowUsd:n?.sortBy==="profit"?TraderSortBy.profit:void 0,tag:n?.tag});return ye(o)}async getTokenMarketData(s,t){let n=await this._client.token.getMarketData(d(s),t);return G(n)}async getNewTokens(s,t){return (await this._client.ranking.getNewTokens(d(s),this._buildRankingParams(t))).map(g)}async getNewPools(s,t){return (await this._client.ranking.getRankingPools(d(s),RankingPoolType.NewPool)).map(o=>ue(s,o))}async getFinalStretchTokens(s,t){return (await this._client.ranking.getFinalStretchTokens(d(s),this._buildRankingParams(t))).map(g)}async getMigratedTokens(s,t){return (await this._client.ranking.getMigratedTokens(d(s),this._buildRankingParams(t))).map(g)}async getTrendingTokens(s,t,n){return (await this._client.ranking.getHotTokens(d(s),t,this._buildRankingParams(n))).map(g)}async getStockTokens(s,t){return (await this._client.ranking.getStocksTokens(d(s),this._buildRankingParams(t))).map(g)}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?ae(s.sortBy):void 0,sort:s?.sortDirection});return he(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),ge(s));return Ie(t)}async checkTxSuccess(s,t,n){let{success:o}=await this._client.waitForJob(t,n);return o}async getWalletPortfolios(s,t,n){let o=e._CHAIN_TO_BALANCE_PARAM[s];if(o&&this.options?.nativeBalanceApiUrl)return this._getWalletPortfoliosFromBalanceApi(s,o,t);let a=await this._client.wallet.getNetWorth(d(s),t,{cursor:n?.cursor,limit:n?.limit??100});return Ce(s,a)}async getWalletPnl(s,t,n){let o=await this._client.wallet.getPnl(d(s),t,n?{resolution:n}:void 0);return Ue(s,t,o)}async getWalletPortfolioPnls(s,t,n){if(n?.resolution!=="90d"){let a=await this._client.wallet.getPnlDetails(d(s),t,{resolution:n?.resolution==="7d"?PnlResolution["7d"]:PnlResolution["30d"],positionState:n?.positionState==="closed"?PositionState.closed:n?.positionState==="all"?PositionState.all:n?.positionState==="open"?PositionState.open:void 0,sortBy:n?.sortBy==="realizedPnl"?PnlSortBy.realizedPnl:n?.sortBy==="unrealizedPnl"?PnlSortBy.unrealizedPnl:n?.sortBy==="totalPnl"?PnlSortBy.totalPnl:void 0,cursor:n?.cursor,limit:n?.limit??100,direction:n?.direction});return $(s,t,a)}let o=await te(this._phase3,d(s),t,{resolution:n?.resolution??"30d",positionState:n?.positionState,sortBy:n?.sortBy,cursor:n?.cursor,limit:n?.limit??100,direction:n?.direction});return $(s,t,o)}async getWalletPortfoliosByTokens(s,t,n){let o=e._CHAIN_TO_BALANCE_PARAM[s];if(o&&this.options?.nativeBalanceApiUrl)return this._getPortfoliosFromBalanceApi(s,o,t,n);let a=await this._client.wallet.getNetWorthByTokens(d(s),t,{tokenAddresses:n.join(",")});return Se(s,a)}async getWalletPortfolioPnlsByTokens(s,t,n){let o=await this._client.wallet.getPnlByToken(d(s),t,{tokenAddresses:n.join(",")});return ve(s,o)}async getWalletTrades(s,t,n){return this._getTrades(s,{walletAddress:t},n)}async getTokenTrades(s,t,n){return this._getTrades(s,{tokenAddress:t},n)}async getWalletActivities(s,t,n){return this._getActivities(s,{walletAddress:t},n)}async getTokenActivities(s,t,n){return this._getActivities(s,{tokenAddress:t},n)}async getPresignedUploadUrl(){return (await this._client.ipfs.presign()).presignUrl}async getWalletLimitOrders(s,t,n){throw new w("Client.getWalletLimitOrders","no limit-orders endpoint on the backend yet")}async getTokensByCreator(s,t,n){throw new w("Client.getTokensByCreator","no creator-index endpoint on the backend yet")}subscribeToken(s,t,n){return this.subscribeTokens(s,[t],n)}subscribeTokens(s,t,n){let o=d(s),a=Array.from(new Set(t.map(i=>i.trim()).filter(Boolean)));if(a.length===0)return {unsubscribe:()=>{}};let u=this._client.stream.batchSubscribe(()=>a.flatMap(i=>[this._client.stream.subscribeTokenStats({chain:o,tokenAddress:i,callback:c=>n([O(s,c)])}),this._client.stream.subscribeTokenHolders({chain:o,tokenAddress:i,callback:c=>n([L(s,i,c)])}),this._client.stream.subscribeTokenSupply({chain:o,tokenAddress:i,callback:c=>n([_(s,i,c)])}),this._client.stream.subscribeTokenLiquidity({chain:o,tokenAddress:i,callback:c=>n([Q(s,i,c)])}),this._client.stream.subscribeTokenMaxLiquidity({chain:o,tokenAddress:i,callback:c=>n([We(s,i,c)])}),this._client.stream.subscribeTokenTotalLiquidity({chain:o,tokenAddress:i,callback:c=>n([De(s,i,c)])})]));return {unsubscribe:()=>{let i=this._client.stream;if(i.batchUnsubscribe){i.batchUnsubscribe(u);return}u.forEach(c=>c.unsubscribe());}}}subscribeTokenCandles(s,t,n,o){return this._client.stream.subscribeTokenCandles({chain:d(s),tokenAddress:t,resolution:z(n),callback:a=>o([xe(a)])})}subscribeWalletPnl(s,t,n){return this._client.stream.subscribeWalletPnlList({chain:d(s),walletAddress:t,callback:o=>n(o.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,n){return this._client.stream.subscribeWalletBalance({chain:d(s),walletAddress:t,callback:o=>n(o.map(a=>({chain:s,walletAddress:a.walletAddress,tokenAddress:a.tokenAddress,priceInUsd:a.tokenPriceInUsd,amount:a.balance})))})}subscribeWalletPortfolioPnls(s,t,n){return this._client.stream.subscribeWalletPnl({chain:d(s),walletAddress:t,callback:o=>n([{chain:s,walletAddress:o.walletAddress,tokenAddress:o.tokenAddress,openTime:o.opentime?new Date(o.opentime):void 0,closeTime:o.closetime?new Date(o.closetime):void 0,buys:o.buyCount,buyVolumes:o.buyAmount,buyVolumesInUsd:o.buyAmountInUsd,buyAvgPriceInUsd:o.averageBuyPriceInUsd,sells:o.sellCount,sellVolumes:o.sellAmount,sellVolumesInUsd:o.sellAmountInUsd,sellAvgPriceInUsd:o.averageSellPriceInUsd,realizedProfitInUsd:o.realizedProfitInUsd,realizedProfitRatio:o.realizedProfitRatio,unrealizedProfitInUsd:o.unrealizedProfitInUsd,unrealizedProfitRatio:o.unrealizedProfitRatio,totalProfitInUsd:o.totalRealizedProfitInUsd,totalProfitRatio:o.totalRealizedProfitRatio}])})}subscribeWalletTrades(s,t,n){return this._client.stream.subscribeWalletTrade({chain:d(s),walletAddress:t,callback:o=>n([K(s,o)])})}subscribeTokenTrades(s,t,n){return this._client.stream.subscribeTokenTrade({chain:d(s),tokenAddress:t,callback:o=>n([K(s,o)])})}subscribeWalletActivities(s,t,n){return this._client.stream.subscribeWalletTrade({chain:d(s),walletAddress:t,callback:o=>n([J(s,o)])})}subscribeTokenActivities(s,t,n){return this._client.stream.subscribeTokenTrade({chain:d(s),tokenAddress:t,callback:o=>n([J(s,o)])})}subscribeNewTokens(s,t){let n=d(s),o=this._subscribeRankingTokens(s,WsChannelType.New,t),a=[this._client.stream.subscribeNewToken({chain:n,callback:u=>t([pe(s,u)])}),this._client.stream.subscribeNewTokensMetadata({chain:n,callback:u=>t(u.map(i=>N(s,i)))}),this._client.stream.subscribeRankingTokensBondingCurve({chain:n,callback:u=>t(u.map(i=>F(s,i)))})];return {unsubscribe:()=>{o.unsubscribe(),a.forEach(u=>u.unsubscribe());}}}subscribeNewTokensMetadata(s,t){return this._client.stream.subscribeNewTokensMetadata({chain:d(s),callback:n=>t(n.map(o=>N(s,o)))})}subscribeNewPools(s,t){return this._client.stream.subscribeNewPool({chain:d(s),callback:n=>t([ce(s,n)])})}subscribeTrendingTokens(s,t){return this._subscribeRankingTokenList(s,WsRankingType.HOT,t)}subscribeMigratedTokens(s,t){return this._subscribeRankingTokens(s,WsChannelType.MIGRATED,t)}subscribeFinalStretchTokens(s,t){let n=d(s),o=this._subscribeRankingTokens(s,WsChannelType.FINAL_STRETCH,t),a=this._client.stream.subscribeRankingTokensBondingCurve({chain:n,callback:u=>t(u.map(i=>F(s,i)))});return {unsubscribe:()=>{o.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,n,o){let a=this.options.nativeBalanceApiUrl,u=new URLSearchParams({chain:t,address:n});o?.length&&u.set("tokens",o.join(","));let i=await fetch(`${a}?${u.toString()}`);if(!i.ok)throw new Error(`Balance API returned ${i.status}`);return (await i.json()).balances.map(m=>{let A=BigInt(m.balance),S=m.decimals,v=BigInt(10)**BigInt(S),b=A/v,ee=(A%v).toString().padStart(S,"0"),M=`${b}.${ee}`.replace(/\.?0+$/,"")||"0";return {chain:s,address:m.address,name:"",symbol:"",priceInUsd:"0",priceInNative:"0",amount:M,amountInUsd:"0",amountInNative:"0",decimals:m.decimals}})}async _getWalletPortfoliosFromBalanceApi(s,t,n){let o=await this._getPortfoliosFromBalanceApi(s,t,n),a=e._NATIVE_TOKEN_ADDRESS[s],u=a?o.find(i=>i.address===a):void 0;return {chain:s,address:n,balanceInUsd:"0",balanceInNative:u?.amount??"0",portfolios:o,hasPrev:false,hasNext:false}}_buildRankingParams(s){return {sortBy:s?.sortBy?V(s.sortBy):void 0,sortDirection:s?.sortDirection?s.sortDirection:void 0,rangeFilters:s?.filters?ie(s.filters):void 0,launchpadPlatform:s?.filters?us(s.filters):void 0,searchKeywords:s?.keywords,excludeKeywords:s?.excludeKeywords}}async _getTrades(s,t,n){let o=await this._client.trade.getTrades(d(s),{...t,cursor:n?.cursor,limit:n?.limit,direction:n?.direction,beforeTimestamp:n?.before?.getTime(),afterTimestamp:n?.after?.getTime(),beforeBlockHeight:n?.beforeBlockHeight,afterBlockHeight:n?.afterBlockHeight,poolAddress:n?.poolAddress,type:n?.type?n.type.toUpperCase():void 0});return Re(o)}async _getActivities(s,t,n){let o=await this._client.trade.getActivities(d(s),{...t,cursor:n?.cursor,limit:n?.limit,direction:n?.direction,beforeTimestamp:n?.before?.getTime(),afterTimestamp:n?.after?.getTime(),beforeBlockHeight:n?.beforeBlockHeight,afterBlockHeight:n?.afterBlockHeight,poolAddress:n?.poolAddress,type:n?.type?n.type.toUpperCase():void 0,sortBy:n?.sortBy==="totalUsd"?ActivitySortBy.totalUsd:n?.sortBy==="timestamp"?ActivitySortBy.timestamp:void 0});return He(o)}_subscribeRankingTokens(s,t,n){let o=d(s),a=[this._client.stream.subscribeRankingTokensStats({chain:o,channelType:t,callback:u=>n(u.map(i=>O(s,i)))}),this._client.stream.subscribeRankingTokensHolders({chain:o,channelType:t,callback:u=>n(u.map(i=>L(s,i.tokenAddress,i)))}),this._client.stream.subscribeRankingTokensSupply({chain:o,channelType:t,callback:u=>n(u.map(i=>_(s,i.tokenAddress,i)))}),this._client.stream.subscribeRankingTokensLiquidity({chain:o,channelType:t,callback:u=>n(u.map(i=>Q(s,i.tokenAddress,i)))})];return {unsubscribe:()=>a.forEach(u=>u.unsubscribe())}}_subscribeRankingTokenList(s,t,n){return this._client.stream.subscribeRankingTokensList({chain:d(s),ranking_type:t,callback:o=>{let a=o.flatMap(u=>j(s,u));a.length>0&&n(a);}})}};function us(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{_e as Client,Ze as KYBERSWAP_NATIVE_SENTINEL,w as NotImplementedError,Ot as fromActivityPage,p as fromChainDTO,Ae as fromLatestBlock,ve as fromPnlDetailItems,$ as fromPnlDetailsPage,ue as fromRankingPoolDTO,He as fromSdkActivityPage,be as fromSdkTokenHolderPage,ye as fromSdkTokenTopTraderPage,Ie as fromSendTxResult,Pe as fromSwapRoute,me as fromTokenCandle,Qe as fromTokenCreatorDTO,g as fromTokenDTO,Nt as fromTokenHolderPage,Dt as fromTokenLiquidityDTO,G as fromTokenMarketDataDTO,N as fromTokenMetadataSubscribed,he as fromTokenPage,Te as fromTokenSecurity,q as fromTokenStatsDTO,pe as fromTokenSubscribed,Re as fromTradePage,Se as fromWalletNetWorthByTokens,Ue as fromWalletPnlSummary,Ce as fromWalletPortfolios,J as fromWsActivity,xe as fromWsCandle,ce as fromWsRankingPoolToSubscribed,j as fromWsRankingTokenListToSubscribed,F as fromWsTokenBondingCurveToSubscribed,O as fromWsTokenDataSubscribed,L as fromWsTokenHolderToSubscribed,Q as fromWsTokenLiquidityToSubscribed,is as fromWsTokenMarketDataFromHolder,as as fromWsTokenMarketDataFromStats,We as fromWsTokenMaxLiquidityToSubscribed,os as fromWsTokenStats,_ as fromWsTokenSupplyToSubscribed,De as fromWsTokenTotalLiquidityToSubscribed,K as fromWsTradeActivity,cs as isNotImplementedError,d as toChainDTO,V as toFieldDTO,Bt as toMintForRoute,ie as toRangeFiltersDTO,z as toResolutionDTO,ae as toSearchFieldDTO,ge as toSendTxInput,je as toSortDirectionDTO,ke as toSwapRouteInput};//# sourceMappingURL=index.mjs.map
|
|
3
3
|
//# sourceMappingURL=index.mjs.map
|