@liberfi.io/client 0.1.187 → 0.1.189

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/README.md CHANGED
@@ -63,6 +63,7 @@ const client = new Client("your-access-token", {
63
63
  | `getStockTokens` | `(chain, options?) => Promise<Token[]>` | Fetch stock-like tokens. |
64
64
  | `searchTokens` | `(options?) => Promise<SearchTokenCursorList>` | Search tokens with filters and pagination. |
65
65
  | `swapRoute` | `(params) => Promise<SwapRoute>` | Get a swap route with unsigned transaction. **Use this for all route requests** so EVM native (e.g. ETH `0x0`) is converted to the format required by KyberSwap; do not call the route API directly with raw token addresses. |
66
+ | `getLatestBlock` | `(params) => Promise<BlockchainLatestBlock>` | Fetch latest blockhash metadata, including `lastValidBlockHeight`. |
66
67
  | `sendTx` | `(params) => Promise<SendTxResult>` | Submit a signed transaction. |
67
68
  | `checkTxSuccess` | `(chain, txHash, timeout?) => Promise<boolean>` | Poll for transaction success. |
68
69
  | `getWalletPortfolios` | `(chain, address, options?) => Promise<WalletPortfolios>` | Fetch wallet holdings. |
@@ -122,6 +123,7 @@ The following DTO conversion functions are also exported. They are primarily int
122
123
  | `fromTokenMarketDataDTO` | `(input) => TokenMarketData` | Convert SDK market data. |
123
124
  | `fromTokenCandle` | `(input: Candle) => TokenCandle` | Convert SDK candle. |
124
125
  | `fromTokenSecurity` | `(input) => TokenSecurity` | Convert SDK security data. |
126
+ | `fromLatestBlock` | `(input) => BlockchainLatestBlock` | Convert SDK latest block metadata. |
125
127
  | `toMintForRoute` | `(dex, address) => string` | Convert token address to the value to send in route API (e.g. EVM native `0x0` → KyberSwap sentinel). Use only when building the route request body outside `client.swapRoute`. |
126
128
  | `KYBERSWAP_NATIVE_SENTINEL` | `"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"` | Sentinel address required by KyberSwap for native token; use with `toMintForRoute` if not using `client.swapRoute`. |
127
129
 
@@ -202,6 +204,7 @@ const route = await client.swapRoute({
202
204
  slippage: 20,
203
205
  });
204
206
  // route.serializedTx 为未签名交易的 base64
207
+ // route.lastValidBlockHeight can be used to reject stale Solana swaps before send.
205
208
  ```
206
209
 
207
210
  在 React 中请通过 `@liberfi.io/react` 的 `useSwapRouteQuery` 或 `@liberfi.io/ui-trade` 的 `useSwap` / `useSwapScript` 获取 route,它们内部都调用 `client.swapRoute`。
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { API, Chain, Token, TokenResolution, TokenCandle, TokenSecurity, TokenStats, TokenHolder, TokenMarketData, WalletPortfolios, WalletPnl, WalletPortfolioPnls, Portfolio, PortfolioPnl, Trade, Activity, TokenCreator as TokenCreator$1, TokenLiquidity } from '@liberfi.io/types';
2
- import { ChainSymbol, Resolution, RangeFilterCondition, TokenCreator, Token as Token$1, TokenStats as TokenStats$1, DexPool, TokenMarketData as TokenMarketData$1, TokenCandle as TokenCandle$1, SwapRouteInput, SendTxInput, PageResponseTokenHolder, TokenPage, SwapRouteResponse, SendTxResponse, WalletNetWorthPage, WalletPnlSummary, PnlDetailsResult, NetWorthByTokensResult, PageResponseTradeDetail, WsNewToken, WsTokenMetadata, WsCandle, WsTokenStat, WsTokenSupply, WsTokenHolder, WsTokenLiquidity, WsTokenBondingCurve, WsTokenMaxLiquidity, WsTokenTotalLiquidity, WsTradeActivity } from '@chainstream-io/sdk';
2
+ import { ChainSymbol, Resolution, RangeFilterCondition, TokenCreator, Token as Token$1, TokenStats as TokenStats$1, DexPool, TokenMarketData as TokenMarketData$1, TokenCandle as TokenCandle$1, SwapRouteInput, SendTxInput, PageResponseTokenHolder, TokenPage, SwapRouteResponse, BlockchainLatestBlock, SendTxResponse, WalletNetWorthPage, WalletPnlSummary, PnlDetailsResult, NetWorthByTokensResult, PageResponseTradeDetail, WsNewToken, WsTokenMetadata, WsCandle, WsTokenStat, WsTokenSupply, WsTokenHolder, WsTokenLiquidity, WsTokenBondingCurve, WsTokenMaxLiquidity, WsTokenTotalLiquidity, WsTradeActivity } from '@chainstream-io/sdk';
3
3
 
4
4
  declare global {
5
5
  interface Window {
@@ -8,7 +8,7 @@ declare global {
8
8
  };
9
9
  }
10
10
  }
11
- declare const _default: "0.1.187";
11
+ declare const _default: "0.1.189";
12
12
 
13
13
  /** Async or sync token provider for authentication. */
14
14
  interface ClientTokenProviderFn {
@@ -48,6 +48,7 @@ declare class Client implements API.IClient, API.ISubscribeClient {
48
48
  getStockTokens(chain: Chain, options?: API.GetTokenListOptions): Promise<Array<Token>>;
49
49
  searchTokens(options?: API.SearchTokensOptions): Promise<API.SearchTokenCursorList>;
50
50
  swapRoute(params: API.SwapParams): Promise<API.SwapRoute>;
51
+ getLatestBlock(params: API.LatestBlockParams): Promise<API.BlockchainLatestBlock>;
51
52
  sendTx(params: API.SendTxParams): Promise<API.SendTxResult>;
52
53
  checkTxSuccess(chain: Chain, txHash: string, timeout?: number): Promise<boolean>;
53
54
  getWalletPortfolios(chain: Chain, address: string, options?: {
@@ -128,6 +129,7 @@ declare function toSendTxInput(params: API.SendTxParams): SendTxInput;
128
129
  declare function fromTokenHolderPage(input: PageResponseTokenHolder): API.CursorList<TokenHolder>;
129
130
  declare function fromTokenPage(input: TokenPage): API.SearchTokenCursorList;
130
131
  declare function fromSwapRoute(input: SwapRouteResponse): API.SwapRoute;
132
+ declare function fromLatestBlock(input: BlockchainLatestBlock): API.BlockchainLatestBlock;
131
133
  declare function fromSendTxResult(input: SendTxResponse): API.SendTxResult;
132
134
  declare function fromWalletPortfolios(chain: Chain, input: WalletNetWorthPage): WalletPortfolios;
133
135
  declare function fromWalletPnlSummary(chain: Chain, address: string, input: WalletPnlSummary): WalletPnl;
@@ -152,4 +154,4 @@ declare function fromWsTokenMarketDataFromHolder(input: WsTokenHolder): Partial<
152
154
  declare function fromWsTradeActivity(chain: Chain, input: WsTradeActivity): Trade;
153
155
  declare function fromWsActivity(chain: Chain, input: WsTradeActivity): Activity;
154
156
 
155
- export { Client, type ClientOptions, type ClientTokenProvider, type ClientTokenProviderFn, KYBERSWAP_NATIVE_SENTINEL, fromActivityPage, fromChainDTO, fromPnlDetailItems, fromPnlDetailsPage, fromSendTxResult, fromSwapRoute, fromTokenCandle, fromTokenCreatorDTO, fromTokenDTO, fromTokenHolderPage, fromTokenLiquidityDTO, fromTokenMarketDataDTO, fromTokenMetadataSubscribed, fromTokenPage, fromTokenSecurity, fromTokenStatsDTO, fromTokenSubscribed, fromTradePage, fromWalletNetWorthByTokens, fromWalletPnlSummary, fromWalletPortfolios, fromWsActivity, fromWsCandle, fromWsTokenBondingCurveToSubscribed, fromWsTokenDataSubscribed, fromWsTokenHolderToSubscribed, fromWsTokenLiquidityToSubscribed, fromWsTokenMarketDataFromHolder, fromWsTokenMarketDataFromStats, fromWsTokenMaxLiquidityToSubscribed, fromWsTokenStats, fromWsTokenSupplyToSubscribed, fromWsTokenTotalLiquidityToSubscribed, fromWsTradeActivity, toChainDTO, toFieldDTO, toMintForRoute, toRangeFiltersDTO, toResolutionDTO, toSearchFieldDTO, toSendTxInput, toSortDirectionDTO, toSwapRouteInput, _default as version };
157
+ export { Client, type ClientOptions, type ClientTokenProvider, type ClientTokenProviderFn, KYBERSWAP_NATIVE_SENTINEL, fromActivityPage, fromChainDTO, fromLatestBlock, fromPnlDetailItems, fromPnlDetailsPage, fromSendTxResult, fromSwapRoute, fromTokenCandle, fromTokenCreatorDTO, fromTokenDTO, fromTokenHolderPage, fromTokenLiquidityDTO, fromTokenMarketDataDTO, fromTokenMetadataSubscribed, fromTokenPage, fromTokenSecurity, fromTokenStatsDTO, fromTokenSubscribed, fromTradePage, fromWalletNetWorthByTokens, fromWalletPnlSummary, fromWalletPortfolios, fromWsActivity, fromWsCandle, fromWsTokenBondingCurveToSubscribed, fromWsTokenDataSubscribed, fromWsTokenHolderToSubscribed, fromWsTokenLiquidityToSubscribed, fromWsTokenMarketDataFromHolder, fromWsTokenMarketDataFromStats, fromWsTokenMaxLiquidityToSubscribed, fromWsTokenStats, fromWsTokenSupplyToSubscribed, fromWsTokenTotalLiquidityToSubscribed, fromWsTradeActivity, toChainDTO, toFieldDTO, toMintForRoute, toRangeFiltersDTO, toResolutionDTO, toSearchFieldDTO, toSendTxInput, toSortDirectionDTO, toSwapRouteInput, _default as version };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { API, Chain, Token, TokenResolution, TokenCandle, TokenSecurity, TokenStats, TokenHolder, TokenMarketData, WalletPortfolios, WalletPnl, WalletPortfolioPnls, Portfolio, PortfolioPnl, Trade, Activity, TokenCreator as TokenCreator$1, TokenLiquidity } from '@liberfi.io/types';
2
- import { ChainSymbol, Resolution, RangeFilterCondition, TokenCreator, Token as Token$1, TokenStats as TokenStats$1, DexPool, TokenMarketData as TokenMarketData$1, TokenCandle as TokenCandle$1, SwapRouteInput, SendTxInput, PageResponseTokenHolder, TokenPage, SwapRouteResponse, SendTxResponse, WalletNetWorthPage, WalletPnlSummary, PnlDetailsResult, NetWorthByTokensResult, PageResponseTradeDetail, WsNewToken, WsTokenMetadata, WsCandle, WsTokenStat, WsTokenSupply, WsTokenHolder, WsTokenLiquidity, WsTokenBondingCurve, WsTokenMaxLiquidity, WsTokenTotalLiquidity, WsTradeActivity } from '@chainstream-io/sdk';
2
+ import { ChainSymbol, Resolution, RangeFilterCondition, TokenCreator, Token as Token$1, TokenStats as TokenStats$1, DexPool, TokenMarketData as TokenMarketData$1, TokenCandle as TokenCandle$1, SwapRouteInput, SendTxInput, PageResponseTokenHolder, TokenPage, SwapRouteResponse, BlockchainLatestBlock, SendTxResponse, WalletNetWorthPage, WalletPnlSummary, PnlDetailsResult, NetWorthByTokensResult, PageResponseTradeDetail, WsNewToken, WsTokenMetadata, WsCandle, WsTokenStat, WsTokenSupply, WsTokenHolder, WsTokenLiquidity, WsTokenBondingCurve, WsTokenMaxLiquidity, WsTokenTotalLiquidity, WsTradeActivity } from '@chainstream-io/sdk';
3
3
 
4
4
  declare global {
5
5
  interface Window {
@@ -8,7 +8,7 @@ declare global {
8
8
  };
9
9
  }
10
10
  }
11
- declare const _default: "0.1.187";
11
+ declare const _default: "0.1.189";
12
12
 
13
13
  /** Async or sync token provider for authentication. */
14
14
  interface ClientTokenProviderFn {
@@ -48,6 +48,7 @@ declare class Client implements API.IClient, API.ISubscribeClient {
48
48
  getStockTokens(chain: Chain, options?: API.GetTokenListOptions): Promise<Array<Token>>;
49
49
  searchTokens(options?: API.SearchTokensOptions): Promise<API.SearchTokenCursorList>;
50
50
  swapRoute(params: API.SwapParams): Promise<API.SwapRoute>;
51
+ getLatestBlock(params: API.LatestBlockParams): Promise<API.BlockchainLatestBlock>;
51
52
  sendTx(params: API.SendTxParams): Promise<API.SendTxResult>;
52
53
  checkTxSuccess(chain: Chain, txHash: string, timeout?: number): Promise<boolean>;
53
54
  getWalletPortfolios(chain: Chain, address: string, options?: {
@@ -128,6 +129,7 @@ declare function toSendTxInput(params: API.SendTxParams): SendTxInput;
128
129
  declare function fromTokenHolderPage(input: PageResponseTokenHolder): API.CursorList<TokenHolder>;
129
130
  declare function fromTokenPage(input: TokenPage): API.SearchTokenCursorList;
130
131
  declare function fromSwapRoute(input: SwapRouteResponse): API.SwapRoute;
132
+ declare function fromLatestBlock(input: BlockchainLatestBlock): API.BlockchainLatestBlock;
131
133
  declare function fromSendTxResult(input: SendTxResponse): API.SendTxResult;
132
134
  declare function fromWalletPortfolios(chain: Chain, input: WalletNetWorthPage): WalletPortfolios;
133
135
  declare function fromWalletPnlSummary(chain: Chain, address: string, input: WalletPnlSummary): WalletPnl;
@@ -152,4 +154,4 @@ declare function fromWsTokenMarketDataFromHolder(input: WsTokenHolder): Partial<
152
154
  declare function fromWsTradeActivity(chain: Chain, input: WsTradeActivity): Trade;
153
155
  declare function fromWsActivity(chain: Chain, input: WsTradeActivity): Activity;
154
156
 
155
- export { Client, type ClientOptions, type ClientTokenProvider, type ClientTokenProviderFn, KYBERSWAP_NATIVE_SENTINEL, fromActivityPage, fromChainDTO, fromPnlDetailItems, fromPnlDetailsPage, fromSendTxResult, fromSwapRoute, fromTokenCandle, fromTokenCreatorDTO, fromTokenDTO, fromTokenHolderPage, fromTokenLiquidityDTO, fromTokenMarketDataDTO, fromTokenMetadataSubscribed, fromTokenPage, fromTokenSecurity, fromTokenStatsDTO, fromTokenSubscribed, fromTradePage, fromWalletNetWorthByTokens, fromWalletPnlSummary, fromWalletPortfolios, fromWsActivity, fromWsCandle, fromWsTokenBondingCurveToSubscribed, fromWsTokenDataSubscribed, fromWsTokenHolderToSubscribed, fromWsTokenLiquidityToSubscribed, fromWsTokenMarketDataFromHolder, fromWsTokenMarketDataFromStats, fromWsTokenMaxLiquidityToSubscribed, fromWsTokenStats, fromWsTokenSupplyToSubscribed, fromWsTokenTotalLiquidityToSubscribed, fromWsTradeActivity, toChainDTO, toFieldDTO, toMintForRoute, toRangeFiltersDTO, toResolutionDTO, toSearchFieldDTO, toSendTxInput, toSortDirectionDTO, toSwapRouteInput, _default as version };
157
+ export { Client, type ClientOptions, type ClientTokenProvider, type ClientTokenProviderFn, KYBERSWAP_NATIVE_SENTINEL, fromActivityPage, fromChainDTO, fromLatestBlock, fromPnlDetailItems, fromPnlDetailsPage, fromSendTxResult, fromSwapRoute, fromTokenCandle, fromTokenCreatorDTO, fromTokenDTO, fromTokenHolderPage, fromTokenLiquidityDTO, fromTokenMarketDataDTO, fromTokenMetadataSubscribed, fromTokenPage, fromTokenSecurity, fromTokenStatsDTO, fromTokenSubscribed, fromTradePage, fromWalletNetWorthByTokens, fromWalletPnlSummary, fromWalletPortfolios, fromWsActivity, fromWsCandle, fromWsTokenBondingCurveToSubscribed, fromWsTokenDataSubscribed, fromWsTokenHolderToSubscribed, fromWsTokenLiquidityToSubscribed, fromWsTokenMarketDataFromHolder, fromWsTokenMarketDataFromStats, fromWsTokenMaxLiquidityToSubscribed, fromWsTokenStats, fromWsTokenSupplyToSubscribed, fromWsTokenTotalLiquidityToSubscribed, fromWsTradeActivity, toChainDTO, toFieldDTO, toMintForRoute, toRangeFiltersDTO, toResolutionDTO, toSearchFieldDTO, toSendTxInput, toSortDirectionDTO, toSwapRouteInput, _default as version };
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- 'use strict';var sdk=require('@chainstream-io/sdk'),types=require('@liberfi.io/types'),utils=require('@liberfi.io/utils');typeof window<"u"&&(window.__LIBERFI_VERSION__=window.__LIBERFI_VERSION__||{},window.__LIBERFI_VERSION__["@liberfi.io/client"]="0.1.187");var Ae="0.1.187";function t(e){return e??void 0}function l(e){switch(e){case types.Chain.ETHEREUM:return sdk.ChainSymbol.eth;case types.Chain.BINANCE:return sdk.ChainSymbol.bsc;case types.Chain.SOLANA:return sdk.ChainSymbol.sol}throw new Error(`Unsupported chain: ${e}`)}function x(e){switch(e){case "1s":return sdk.Resolution["1s"];case "15s":return sdk.Resolution["15s"];case "30s":return sdk.Resolution["30s"];case "1m":return sdk.Resolution["1m"];case "5m":return sdk.Resolution["5m"];case "15m":return sdk.Resolution["15m"];case "30m":case "1h":return sdk.Resolution["1h"];case "4h":return sdk.Resolution["4h"];case "12h":return sdk.Resolution["12h"];case "24h":return sdk.Resolution["1d"]}}function Ie(e){return e}function G(e){switch(e){case "marketCap":return sdk.SearchSortBy.marketCapInUsd;case "tvl":return sdk.SearchSortBy.liquidityInUsd;case "price":return sdk.SearchSortBy.priceInUsd;case "holders":return sdk.SearchSortBy.holderCount;case "volumes24h":return sdk.SearchSortBy.h24VolumeInUsd;case "trades24h":return sdk.SearchSortBy.h24Transactions;case "createdAt":return sdk.SearchSortBy.tokenCreatedAt}throw new Error(`Unsupported search field: ${e}`)}function p(e){switch(e){case "price":return sdk.TokenField.marketDatapriceInUsd;case "priceChange1m":return sdk.TokenField.statspriceChangeRatioInUsd1m;case "priceChange5m":return sdk.TokenField.statspriceChangeRatioInUsd5m;case "priceChange1h":return sdk.TokenField.statspriceChangeRatioInUsd1h;case "priceChange4h":return sdk.TokenField.statspriceChangeRatioInUsd4h;case "priceChange24h":return sdk.TokenField.statspriceChangeRatioInUsd24h;case "marketCap":return sdk.TokenField.marketDatamarketCapInUsd;case "tvl":return sdk.TokenField.marketDatamaxPoolTvlInUsd;case "top10Holdings":return sdk.TokenField.marketDatatop10TotalHoldings;case "top10Ratio":return sdk.TokenField.marketDatatop10HoldingsRatio;case "top100Holdings":return sdk.TokenField.marketDatatop100TotalHoldings;case "top100Ratio":return sdk.TokenField.marketDatatop100HoldingsRatio;case "holders":return sdk.TokenField.marketDataholders;case "creatorsHoldings":return sdk.TokenField.marketDatacreatorHoldings;case "creatorsRatio":return sdk.TokenField.marketDatacreatorHoldingsRatio;case "buys1m":return sdk.TokenField.statsbuys1m;case "buys5m":return sdk.TokenField.statsbuys5m;case "buys15m":return sdk.TokenField.statsbuys15m;case "buys30m":return sdk.TokenField.statsbuys30m;case "buys1h":return sdk.TokenField.statsbuys1h;case "buys4h":return sdk.TokenField.statsbuys4h;case "buys24h":return sdk.TokenField.statsbuys24h;case "sells1m":return sdk.TokenField.statssells1m;case "sells5m":return sdk.TokenField.statssells5m;case "sells15m":return sdk.TokenField.statssells15m;case "sells30m":return sdk.TokenField.statssells30m;case "sells1h":return sdk.TokenField.statssells1h;case "sells4h":return sdk.TokenField.statssells4h;case "sells24h":return sdk.TokenField.statssells24h;case "trades1m":return sdk.TokenField.statstrades1m;case "trades5m":return sdk.TokenField.statstrades5m;case "trades1h":return sdk.TokenField.statstrades1h;case "trades4h":return sdk.TokenField.statstrades4h;case "trades24h":return sdk.TokenField.statstrades24h;case "traders1m":return sdk.TokenField.statstraders1m;case "traders5m":return sdk.TokenField.statstraders5m;case "traders1h":return sdk.TokenField.statstraders1h;case "traders4h":return sdk.TokenField.statstraders4h;case "traders24h":return sdk.TokenField.statstraders24h;case "volumes1m":return sdk.TokenField.statsvolumesInUsd1m;case "volumes5m":return sdk.TokenField.statsvolumesInUsd5m;case "volumes1h":return sdk.TokenField.statsvolumesInUsd1h;case "volumes4h":return sdk.TokenField.statsvolumesInUsd4h;case "volumes24h":return sdk.TokenField.statsvolumesInUsd24h;case "createdAt":return sdk.TokenField.tokenCreatedAt}throw new Error(`Unsupported sortBy: ${e}`)}function j(e){return e.filter(s=>["gt","gte","lt","lte","between"].indexOf(s.operator)>=0).map(s=>{let r={field:p(s.field)};return ["gt","gte","between"].indexOf(s.operator)>=0&&(r.min=typeof s.value=="number"?new utils.SafeBigNumber(s.value).toString():s.value),["lt","lte","between"].indexOf(s.operator)>=0&&(r.max=typeof s.value=="number"?new utils.SafeBigNumber(s.value).toString():s.value),r})}function v(e){switch(e){case sdk.ChainSymbol.eth:return types.Chain.ETHEREUM;case sdk.ChainSymbol.bsc:return types.Chain.BINANCE;case sdk.ChainSymbol.sol:case "solana":return types.Chain.SOLANA}throw new Error(`Unsupported chain: ${e}`)}function ye(e){return {address:e.address??void 0,share:e.share??void 0,isVerified:e.isVerified??void 0}}function T(e){return {chain:v(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(ye),launchedFrom:{programAddress:e.extra?.launchFromProgramAddress??void 0,protocolFamily:e.extra?.launchFromProtocolFamily??void 0},migrateProgress:e.marketData?.completionRatio?new utils.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?D(e.stats):void 0,marketData:e.marketData?_(e.marketData):void 0,createdAt:e.tokenCreatedAt?new Date(e.tokenCreatedAt):void 0}}function D(e){return {"1m":A(e,"1m"),"5m":A(e,"5m"),"15m":A(e,"15m"),"30m":A(e,"30m"),"1h":A(e,"1h"),"4h":A(e,"4h"),"24h":A(e,"24h")}}function I(e){return e===void 0?void 0:parseInt(e)}function A(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 Ds(e){return {poolAddress:e.poolAddress,programAddress:e.programAddress??void 0,protocolFamily:e.protocolFamily??void 0,tvl:e.tvlInSol??void 0,tvlInUsd:e.tvlInUsd??void 0}}function _(e){return {totalSupply:e.totalSupply??void 0,marketCap:e.marketCapInSol??void 0,marketCapInUsd:e.marketCapInUsd??void 0,price: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 K(e,s){return {open:e.open,close:e.close,high:e.high,low:e.low,volume:e.volume,resolution:s,timestamp:new Date(e.timestamp)}}function Pe(e){return e==="1d"?"24h":e}function J(e){return {hasTransferFee:e.hasTransferFee,isTransferFeeUpgradable:e.isTransferFeeUpgradable,isTransferable:e.isTransferable,isFreezable:e.isFreezable,isClosable:e.isClosable}}var Se=new Set([types.Chain.SOLANA,types.Chain.SOLANA_TESTNET,types.Chain.SOLANA_DEVNET]),Ue="0x0000000000000000000000000000000000000000",Ce="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";function ve(e){return e===utils.SOLANA_TOKENS.native.address?utils.SOLANA_TOKENS.wrapped.address:e}function Re(e){return e.toLowerCase()===Ue.toLowerCase()?Ce:e}function we(e){return e.dex?e.dex:Se.has(e.chain)?"jupiter":"kyberswap"}function W(e,s){return e==="jupiter"?ve(s):e==="kyberswap"?Re(s):s}function _s(e,s){return W(e,s)}function Y(e){let s=we(e),r=W(s,e.input),o=W(s,e.output);return {dex:s,userAddress:e.userAddress,amount:e.amount,swapMode:e.mode===types.API.SwapMode.EXACT_IN?sdk.SwapRouteInputSwapMode.ExactIn:sdk.SwapRouteInputSwapMode.ExactOut,slippage:e.slippage??1,inputMint:r,outputMint:o,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 Q(e){return {signedTx:e.serializedTx}}function X(e){return {startCursor:t(e.startCursor),endCursor:t(e.endCursor),hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(s=>({address:s.walletAddress,amount:s.amount,amountInUsd:s.amountInUsd,ratio:s.percentage}))}}function Z(e){return {startCursor:t(e.startCursor),endCursor:t(e.endCursor),hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(T),extra:t(e.countsByProtocols)}}function ee(e){return {serializedTx:e.serializedTx,plans:[],extra:e.routeInfo}}function se(e){return {txHash:e.signature,extra:{jobId:e.jobId,elapsedTime:e.elapsedTime}}}function re(e,s){let r=(s.data??[]).map(o=>({chain:v(o.chain),address:o.tokenAddress,name:o.name,symbol:o.symbol,image:t(o.logoUri),priceInUsd:o.priceInUsd,priceInNative:o.priceInNative,amount:o.amount,amountInUsd:o.valueInUsd,amountInNative:o.valueInNative,decimals:o.decimals}));return {chain:r[0]?.chain??e,address:s.walletAddress,balanceInUsd:s.totalValueInUsd,balanceInNative:s.totalValueInNative,startCursor:t(s.startCursor),endCursor:t(s.endCursor),hasPrev:s.hasPrev,hasNext:s.hasNext,portfolios:r}}function oe(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:t(r.winRate),buyAmountInUsd:t(r.buyAmountInUsd),sellAmountInUsd:t(r.sellAmountInUsd),totalCostInUsd:t(r.totalCostInUsd),realizedProfitInUsd:t(r.realizedProfitInUsd),realizedProfitRatio:t(r.realizedProfitRatio),unrealizedProfitInUsd:t(r.unrealizedProfitInUsd),unrealizedProfitRatio:t(r.unrealizedProfitRatio),totalProfitInUsd:t(r.totalProfitInUsd),totalProfitRatio:t(r.totalProfitRatio),avgProfitPerTradeInUsd:t(r.avgProfitPerTradeInUsd)}}function ne(e,s,r){let o=r.data.map(n=>({chain:e,address:n.tokenAddress,name:n.name??"",symbol:n.symbol??"",image:t(n.logoUri),amount:n.balance,amountInUsd:n.currentValue,priceInUsd:n.priceInUsd,decimals:n.decimals??0,totalTrades:Number(n.totalTrades),buys:Number(n.buys),buyVolumes:n.buyAmount,buyVolumesInUsd:n.buyAmountInUsd,buyAvgPriceInUsd:n.avgBuyPriceInUsd,sells:Number(n.sells),sellVolumes:n.sellAmount,sellVolumesInUsd:n.sellAmountInUsd,sellAvgPriceInUsd:n.avgSellPriceInUsd,realizedProfitInUsd:n.realizedProfitInUsd,realizedProfitRatio:n.realizedProfitRatio,unrealizedProfitInUsd:n.unrealizedProfitInUsd,unrealizedProfitRatio:n.unrealizedProfitRatio,totalProfitInUsd:n.totalProfitInUsd,totalProfitRatio:n.totalProfitRatio}));return {chain:e,address:s,tokens:Number(r.summary.tokens),buys:Number(r.summary.buys),sells:Number(r.summary.sells),totalTrades:Number(r.summary.totalTrades),wins:Number(r.summary.wins),losses:Number(r.summary.losses),winRate:t(r.summary.winRate),buyAmountInUsd:t(r.summary.buyAmountInUsd),sellAmountInUsd:t(r.summary.sellAmountInUsd),totalCostInUsd:r.summary.totalCostInUsd,realizedProfitInUsd:t(r.summary.realizedProfitInUsd),realizedProfitRatio:t(r.summary.realizedProfitRatio),unrealizedProfitInUsd:t(r.summary.unrealizedProfitInUsd),totalProfitInUsd:t(r.summary.totalProfitInUsd),startCursor:t(r.startCursor),endCursor:t(r.endCursor),hasPrev:r.hasPrev,hasNext:r.hasNext,portfolios:o}}function te(e,s){return (s.data??[]).map(r=>({chain:v(r.chain),address:r.tokenAddress,name:r.name,symbol:r.symbol,image:t(r.logoUri),priceInUsd:r.priceInUsd,priceInNative:r.priceInNative,amount:r.amount,amountInUsd:r.valueInUsd,amountInNative:r.valueInNative,decimals:r.decimals}))}function ae(e,s){return s.data.map(r=>({chain:e,address:r.tokenAddress,name:r.name??"",symbol:r.symbol??"",image:t(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 ie(e){return {startCursor:t(e.startCursor),endCursor:t(e.endCursor),hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(He)}}function He(e){let s=e.type.toLowerCase()==="buy";return {chain:v(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:t(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:t(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:t(e.dexProgramAddress),protocolFamily:t(e.dexProtocolFamily),image:t(e.dexImage)},poolAddress:t(e.poolAddress),status:e.status??"success",time:new Date(e.blockTimestamp*1e3)}}function de(e){return {startCursor:t(e.startCursor),endCursor:t(e.endCursor),hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(We)}}function We(e){let s=e.type.toLowerCase().replace(/ /g,"_"),r=s==="buy";return {chain:v(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:t(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:t(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:t(e.dexProgramAddress),protocolFamily:t(e.dexProtocolFamily),image:t(e.dexImage)},poolAddress:t(e.poolAddress),status:e.status??"success",time:new Date(e.blockTimestamp*1e3)}}function le(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 ce(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 ue(e){return {open:e.open,close:e.close,high:e.high,low:e.low,volume:e.volume,resolution:Pe(e.resolution),timestamp:new Date(e.time)}}function xe(e){let s=["1m","5m","15m","30m","1h","4h","24h"],r=e,o={};for(let n of s){let d=r[`buys${n}`],a=r[`sells${n}`],c=r[`buyers${n}`],w=r[`sellers${n}`],k=r[`buyVolumeInUsd${n}`],h=r[`sellVolumeInUsd${n}`],S=r[`trades${n}`],U=r[`price${n}`],f=r[`openInUsd${n}`],C=r[`closeInUsd${n}`];if(!(d!==void 0||a!==void 0||S!==void 0||U!==void 0))continue;let H=S??(d!==void 0&&a!==void 0?d+a:void 0),be=c!==void 0&&w!==void 0?c+w:void 0,fe=k!==void 0&&h!==void 0?new utils.SafeBigNumber(k).plus(h).toString():void 0,ge=f&&C&&new utils.SafeBigNumber(f).gt(0)?new utils.SafeBigNumber(C).minus(f).div(f).toString():void 0;o[n]={buys:d,sells:a,trades:H,buyers:c,sellers:w,traders:be,buyVolumesInUsd:k,sellVolumesInUsd:h,volumesInUsd:fe,openPriceInUsd:f,closePriceInUsd:C,priceInUsd:U??C,priceChange:ge};}return o}function pe(e){return {priceInUsd:e.price}}function N(e,s){return {chain:e,address:s.address,stats:xe(s),marketData:pe(s)}}function F(e,s,r){return {chain:e,address:s,marketData:{totalSupply:r.supply,marketCapInUsd:r.marketCapInUsd}}}function O(e,s,r){return {chain:e,address:s,marketData:De(r)}}function B(e,s,r){return r.metricType===sdk.WsMetricType.LIQUIDITY_IN_USD?{chain:e,address:s,marketData:{tvlInUsd:r.value}}:r.metricType===sdk.WsMetricType.MIGRATED_RATIO?{chain:e,address:s,migrateProgress:new utils.SafeBigNumber(r.value).shiftedBy(2).toString()}:{chain:e,address:s}}function E(e,s){return {chain:e,address:s.tokenAddress??"",migrateProgress:s.progressRatio?new utils.SafeBigNumber(s.progressRatio).shiftedBy(2).toString():void 0}}function me(e,s,r){return {chain:e,address:s,liquidities:[{poolAddress:r.poolAddress,tvlInUsd:r.liquidityInUsd,tvl:r.liquidityInNative}]}}function Te(e,s,r){return {chain:e,address:s,marketData:{tvlInUsd:r.liquidityInUsd,tvl:r.liquidityInNative}}}function De(e){return {holders:e.holders,top10Holdings:e.top10HoldersAmount,top10HoldingsRatio:e.top10HoldersRatio,top50Holdings:e.top50HoldersAmount,top50HoldingsRatio:e.top50HoldersRatio,top100Holdings:e.top100HoldersAmount,top100HoldingsRatio:e.top100HoldersRatio,devHolders:e.balanceTagDevHolders===void 0?void 0:e.balanceTagDevHolders,devHoldings:e.balanceTagDevAmount,devHoldingsRatio:e.balanceTagDevRatio,sniperHolders:e.balanceTagSniperHolders===void 0?void 0:e.balanceTagSniperHolders,sniperHoldings:e.balanceTagSniperAmount,sniperHoldingsRatio:e.balanceTagSniperRatio,freshHolders:e.balanceTagFreshHolders===void 0?void 0:e.balanceTagFreshHolders,freshHoldings:e.balanceTagFreshAmount,freshHoldingsRatio:e.balanceTagFreshRatio,bundleHolders:e.balanceTagBundleHolders===void 0?void 0:e.balanceTagBundleHolders,bundleHoldings:e.balanceTagBundleAmount,bundleHoldingsRatio:e.balanceTagBundleRatio,sandwichHolders:e.balanceTagSandwichHolders===void 0?void 0:e.balanceTagSandwichHolders,sandwichHoldings:e.balanceTagSandwichAmount,sandwichHoldingsRatio:e.balanceTagSandwichRatio}}function L(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 M(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 ke=class e{constructor(s,r){this.accessToken=s;this.options=r;this._client=new sdk.ChainStreamClient(this.accessToken,this.options);}_client;async getToken(s,r){let o=await this._client.token.getToken(l(s),r);return T(o)}async getTokens(s,r){return (await this._client.token.getTokens(l(s),{tokenAddresses:r.join(",")})).map(T)}async getTokenCandles(s,r,o,n){return (await this._client.token.getCandles(l(s),r,{resolution:x(o),from:n?.after?.getTime(),to:n?.before?.getTime(),limit:n?.limit})).map(a=>K(a,o))}async getTokenSecurity(s,r){let o=await this._client.token.getSecurity(l(s),r);return J(o)}async getTokenStats(s,r){let o=await this._client.token.getStats(l(s),r);return D(o)}async getTokenHolders(s,r,o){let n=await this._client.token.getHolders(l(s),r,{cursor:o?.cursor,limit:o?.limit,direction:o?.direction});return X(n)}async getTokenMarketData(s,r){let o=await this._client.token.getMarketData(l(s),r);return _(o)}async getNewTokens(s,r){return (await this._client.ranking.getNewTokens(l(s),this._buildRankingParams(r))).map(T)}async getFinalStretchTokens(s,r){return (await this._client.ranking.getFinalStretchTokens(l(s),this._buildRankingParams(r))).map(T)}async getMigratedTokens(s,r){return (await this._client.ranking.getMigratedTokens(l(s),this._buildRankingParams(r))).map(T)}async getTrendingTokens(s,r,o){return (await this._client.ranking.getHotTokens(l(s),r,this._buildRankingParams(o))).map(T)}async getStockTokens(s,r){return (await this._client.ranking.getStocksTokens(l(s),this._buildRankingParams(r))).map(T)}async searchTokens(s){let r=await this._client.token.search({chains:s?.chains?.map(l),q:s?.keyword,limit:s?.limit,cursor:s?.cursor,sortBy:s?.sortBy?G(s.sortBy):void 0,sort:s?.sortDirection});return Z(r)}async swapRoute(s){let r=await this._client.dex.route(l(s.chain),Y(s));return ee(r)}async sendTx(s){let r=await this._client.transaction.send(l(s.chain),Q(s));return se(r)}async checkTxSuccess(s,r,o){let{success:n}=await this._client.waitForJob(r,o);return n}async getWalletPortfolios(s,r,o){let n=e._CHAIN_TO_BALANCE_PARAM[s];if(n&&this.options?.nativeBalanceApiUrl)return this._getWalletPortfoliosFromBalanceApi(s,n,r);let d=await this._client.wallet.getNetWorth(l(s),r,{cursor:o?.cursor,limit:o?.limit??100});return re(s,d)}async getWalletPnl(s,r,o){let n=await this._client.wallet.getPnl(l(s),r,o?{resolution:o}:void 0);return oe(s,r,n)}async getWalletPortfolioPnls(s,r,o){let n=await this._client.wallet.getPnlDetails(l(s),r,{cursor:o?.cursor,limit:o?.limit??100});return ne(s,r,n)}async getWalletPortfoliosByTokens(s,r,o){let n=e._CHAIN_TO_BALANCE_PARAM[s];if(n&&this.options?.nativeBalanceApiUrl)return this._getPortfoliosFromBalanceApi(s,n,r,o);let d=await this._client.wallet.getNetWorthByTokens(l(s),r,{tokenAddresses:o.join(",")});return te(s,d)}async getWalletPortfolioPnlsByTokens(s,r,o){let n=await this._client.wallet.getPnlByToken(l(s),r,{tokenAddresses:o.join(",")});return ae(s,n)}async getWalletTrades(s,r,o){return this._getTrades(s,{walletAddress:r},o)}async getTokenTrades(s,r,o){return this._getTrades(s,{tokenAddress:r},o)}async getWalletActivities(s,r,o){return this._getActivities(s,{walletAddress:r},o)}async getTokenActivities(s,r,o){return this._getActivities(s,{tokenAddress:r},o)}async getPresignedUploadUrl(){return (await this._client.ipfs.presign()).presignUrl}subscribeToken(s,r,o){let n=l(s),d=[this._client.stream.subscribeTokenStats({chain:n,tokenAddress:r,callback:a=>o([N(s,a)])}),this._client.stream.subscribeTokenSupply({chain:n,tokenAddress:r,callback:a=>o([F(s,r,a)])}),this._client.stream.subscribeTokenHolders({chain:n,tokenAddress:r,callback:a=>o([O(s,r,a)])}),this._client.stream.subscribeTokenLiquidity({chain:n,tokenAddress:r,callback:a=>o([B(s,r,a)])}),this._client.stream.subscribeTokenMaxLiquidity({chain:n,tokenAddress:r,callback:a=>o([me(s,r,a)])}),this._client.stream.subscribeTokenTotalLiquidity({chain:n,tokenAddress:r,callback:a=>o([Te(s,r,a)])})];return {unsubscribe:()=>d.forEach(a=>a.unsubscribe())}}subscribeTokenCandles(s,r,o,n){return this._client.stream.subscribeTokenCandles({chain:l(s),tokenAddress:r,resolution:x(o),callback:d=>n([ue(d)])})}subscribeWalletPnl(s,r,o){return this._client.stream.subscribeWalletPnlList({chain:l(s),walletAddress:r,callback:n=>o(n.map(d=>({chain:s,address:d.walletAddress,buys:d.buys,buyAmountInUsd:d.buyAmountInUsd,sells:d.sells,sellAmountInUsd:d.sellAmountInUsd,wins:d.wins,winRate:d.winRatio,totalProfitInUsd:d.pnlInUsd,totalProfitRatio:d.pnlRatio,avgProfitPerTradeInUsd:d.averagePnlInUsd,tokens:d.tokens,resolution:d.resolution})))})}subscribeWalletPortfolios(s,r,o){return this._client.stream.subscribeWalletBalance({chain:l(s),walletAddress:r,callback:n=>o(n.map(d=>({chain:s,walletAddress:d.walletAddress,tokenAddress:d.tokenAddress,priceInUsd:d.tokenPriceInUsd,amount:d.balance})))})}subscribeWalletPortfolioPnls(s,r,o){return this._client.stream.subscribeWalletPnl({chain:l(s),walletAddress:r,callback:n=>o([{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,o){return this._client.stream.subscribeWalletTrade({chain:l(s),walletAddress:r,callback:n=>o([L(s,n)])})}subscribeTokenTrades(s,r,o){return this._client.stream.subscribeTokenTrade({chain:l(s),tokenAddress:r,callback:n=>o([L(s,n)])})}subscribeWalletActivities(s,r,o){return this._client.stream.subscribeWalletTrade({chain:l(s),walletAddress:r,callback:n=>o([M(s,n)])})}subscribeTokenActivities(s,r,o){return this._client.stream.subscribeTokenTrade({chain:l(s),tokenAddress:r,callback:n=>o([M(s,n)])})}subscribeNewTokens(s,r){let o=l(s),n=this._subscribeRankingTokens(s,sdk.WsChannelType.New,r),d=[this._client.stream.subscribeNewToken({chain:o,callback:a=>r([le(s,a)])}),this._client.stream.subscribeNewTokensMetadata({chain:o,callback:a=>r(a.map(c=>ce(s,c)))}),this._client.stream.subscribeRankingTokensBondingCurve({chain:o,callback:a=>r(a.map(c=>E(s,c)))})];return {unsubscribe:()=>{n.unsubscribe(),d.forEach(a=>a.unsubscribe());}}}subscribeTrendingTokens(s,r){return this._subscribeRankingTokens(s,sdk.WsChannelType.HOT,r)}subscribeMigratedTokens(s,r){return this._subscribeRankingTokens(s,sdk.WsChannelType.MIGRATED,r)}subscribeFinalStretchTokens(s,r){let o=l(s),n=this._subscribeRankingTokens(s,sdk.WsChannelType.FINAL_STRETCH,r),d=this._client.stream.subscribeRankingTokensBondingCurve({chain:o,callback:a=>r(a.map(c=>E(s,c)))});return {unsubscribe:()=>{n.unsubscribe(),d.unsubscribe();}}}subscribeStockTokens(s,r){return this._subscribeRankingTokens(s,sdk.WsChannelType.US_STOCKS,r)}static _CHAIN_TO_BALANCE_PARAM={[types.Chain.SOLANA]:"sol",[types.Chain.ETHEREUM]:"eth",[types.Chain.BINANCE]:"bnb"};static _NATIVE_TOKEN_ADDRESS={[types.Chain.SOLANA]:"11111111111111111111111111111111",[types.Chain.ETHEREUM]:"0x0000000000000000000000000000000000000000",[types.Chain.BINANCE]:"0x0000000000000000000000000000000000000000"};async _getPortfoliosFromBalanceApi(s,r,o,n){let d=this.options.nativeBalanceApiUrl,a=new URLSearchParams({chain:r,address:o});n?.length&&a.set("tokens",n.join(","));let c=await fetch(`${d}?${a.toString()}`);if(!c.ok)throw new Error(`Balance API returned ${c.status}`);return (await c.json()).balances.map(k=>{let h=BigInt(k.balance),S=k.decimals,U=BigInt(10)**BigInt(S),f=h/U,V=(h%U).toString().padStart(S,"0"),H=`${f}.${V}`.replace(/\.?0+$/,"")||"0";return {chain:s,address:k.address,name:"",symbol:"",priceInUsd:"0",priceInNative:"0",amount:H,amountInUsd:"0",amountInNative:"0",decimals:k.decimals}})}async _getWalletPortfoliosFromBalanceApi(s,r,o){let n=await this._getPortfoliosFromBalanceApi(s,r,o),d=e._NATIVE_TOKEN_ADDRESS[s],a=d?n.find(c=>c.address===d):void 0;return {chain:s,address:o,balanceInUsd:"0",balanceInNative:a?.amount??"0",portfolios:n,hasPrev:false,hasNext:false}}_buildRankingParams(s){return {sortBy:s?.sortBy?p(s.sortBy):void 0,sortDirection:s?.sortDirection?s.sortDirection:void 0,rangeFilters:s?.filters?j(s.filters):void 0,launchpadPlatform:s?.filters?Ne(s.filters):void 0,searchKeywords:s?.keywords,excludeKeywords:s?.excludeKeywords}}async _getTrades(s,r,o){let n=await this._client.trade.getTrades(l(s),{...r,cursor:o?.cursor,limit:o?.limit,direction:o?.direction,beforeTimestamp:o?.before?.getTime(),afterTimestamp:o?.after?.getTime(),beforeBlockHeight:o?.beforeBlockHeight,afterBlockHeight:o?.afterBlockHeight,poolAddress:o?.poolAddress,type:o?.type?o.type.toUpperCase():void 0});return ie(n)}async _getActivities(s,r,o){let n=await this._client.trade.getActivities(l(s),{...r,cursor:o?.cursor,limit:o?.limit,direction:o?.direction,beforeTimestamp:o?.before?.getTime(),afterTimestamp:o?.after?.getTime(),beforeBlockHeight:o?.beforeBlockHeight,afterBlockHeight:o?.afterBlockHeight,poolAddress:o?.poolAddress,type:o?.type?o.type.toUpperCase():void 0});return de(n)}_subscribeRankingTokens(s,r,o){let n=l(s),d=[this._client.stream.subscribeRankingTokensStats({chain:n,channelType:r,callback:a=>o(a.map(c=>N(s,c)))}),this._client.stream.subscribeRankingTokensHolders({chain:n,channelType:r,callback:a=>o(a.map(c=>O(s,c.tokenAddress,c)))}),this._client.stream.subscribeRankingTokensSupply({chain:n,channelType:r,callback:a=>o(a.map(c=>F(s,c.tokenAddress,c)))}),this._client.stream.subscribeRankingTokensLiquidity({chain:n,channelType:r,callback:a=>o(a.map(c=>B(s,c.tokenAddress,c)))})];return {unsubscribe:()=>d.forEach(a=>a.unsubscribe())}}};function Ne(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);}}exports.Client=ke;exports.KYBERSWAP_NATIVE_SENTINEL=Ce;exports.fromActivityPage=de;exports.fromChainDTO=v;exports.fromPnlDetailItems=ae;exports.fromPnlDetailsPage=ne;exports.fromSendTxResult=se;exports.fromSwapRoute=ee;exports.fromTokenCandle=K;exports.fromTokenCreatorDTO=ye;exports.fromTokenDTO=T;exports.fromTokenHolderPage=X;exports.fromTokenLiquidityDTO=Ds;exports.fromTokenMarketDataDTO=_;exports.fromTokenMetadataSubscribed=ce;exports.fromTokenPage=Z;exports.fromTokenSecurity=J;exports.fromTokenStatsDTO=D;exports.fromTokenSubscribed=le;exports.fromTradePage=ie;exports.fromWalletNetWorthByTokens=te;exports.fromWalletPnlSummary=oe;exports.fromWalletPortfolios=re;exports.fromWsActivity=M;exports.fromWsCandle=ue;exports.fromWsTokenBondingCurveToSubscribed=E;exports.fromWsTokenDataSubscribed=N;exports.fromWsTokenHolderToSubscribed=O;exports.fromWsTokenLiquidityToSubscribed=B;exports.fromWsTokenMarketDataFromHolder=De;exports.fromWsTokenMarketDataFromStats=pe;exports.fromWsTokenMaxLiquidityToSubscribed=me;exports.fromWsTokenStats=xe;exports.fromWsTokenSupplyToSubscribed=F;exports.fromWsTokenTotalLiquidityToSubscribed=Te;exports.fromWsTradeActivity=L;exports.toChainDTO=l;exports.toFieldDTO=p;exports.toMintForRoute=_s;exports.toRangeFiltersDTO=j;exports.toResolutionDTO=x;exports.toSearchFieldDTO=G;exports.toSendTxInput=Q;exports.toSortDirectionDTO=Ie;exports.toSwapRouteInput=Y;exports.version=Ae;//# sourceMappingURL=index.js.map
1
+ 'use strict';var sdk=require('@chainstream-io/sdk'),types=require('@liberfi.io/types'),utils=require('@liberfi.io/utils');typeof window<"u"&&(window.__LIBERFI_VERSION__=window.__LIBERFI_VERSION__||{},window.__LIBERFI_VERSION__["@liberfi.io/client"]="0.1.189");var Ae="0.1.189";function n(e){return e??void 0}function l(e){switch(e){case types.Chain.ETHEREUM:return sdk.ChainSymbol.eth;case types.Chain.BINANCE:return sdk.ChainSymbol.bsc;case types.Chain.SOLANA:return sdk.ChainSymbol.sol}throw new Error(`Unsupported chain: ${e}`)}function x(e){switch(e){case "1s":return sdk.Resolution["1s"];case "15s":return sdk.Resolution["15s"];case "30s":return sdk.Resolution["30s"];case "1m":return sdk.Resolution["1m"];case "5m":return sdk.Resolution["5m"];case "15m":return sdk.Resolution["15m"];case "30m":case "1h":return sdk.Resolution["1h"];case "4h":return sdk.Resolution["4h"];case "12h":return sdk.Resolution["12h"];case "24h":return sdk.Resolution["1d"]}}function ye(e){return e}function G(e){switch(e){case "marketCap":return sdk.SearchSortBy.marketCapInUsd;case "tvl":return sdk.SearchSortBy.liquidityInUsd;case "price":return sdk.SearchSortBy.priceInUsd;case "holders":return sdk.SearchSortBy.holderCount;case "volumes24h":return sdk.SearchSortBy.h24VolumeInUsd;case "trades24h":return sdk.SearchSortBy.h24Transactions;case "createdAt":return sdk.SearchSortBy.tokenCreatedAt}throw new Error(`Unsupported search field: ${e}`)}function p(e){switch(e){case "price":return sdk.TokenField.marketDatapriceInUsd;case "priceChange1m":return sdk.TokenField.statspriceChangeRatioInUsd1m;case "priceChange5m":return sdk.TokenField.statspriceChangeRatioInUsd5m;case "priceChange1h":return sdk.TokenField.statspriceChangeRatioInUsd1h;case "priceChange4h":return sdk.TokenField.statspriceChangeRatioInUsd4h;case "priceChange24h":return sdk.TokenField.statspriceChangeRatioInUsd24h;case "marketCap":return sdk.TokenField.marketDatamarketCapInUsd;case "tvl":return sdk.TokenField.marketDatamaxPoolTvlInUsd;case "top10Holdings":return sdk.TokenField.marketDatatop10TotalHoldings;case "top10Ratio":return sdk.TokenField.marketDatatop10HoldingsRatio;case "top100Holdings":return sdk.TokenField.marketDatatop100TotalHoldings;case "top100Ratio":return sdk.TokenField.marketDatatop100HoldingsRatio;case "holders":return sdk.TokenField.marketDataholders;case "creatorsHoldings":return sdk.TokenField.marketDatacreatorHoldings;case "creatorsRatio":return sdk.TokenField.marketDatacreatorHoldingsRatio;case "buys1m":return sdk.TokenField.statsbuys1m;case "buys5m":return sdk.TokenField.statsbuys5m;case "buys15m":return sdk.TokenField.statsbuys15m;case "buys30m":return sdk.TokenField.statsbuys30m;case "buys1h":return sdk.TokenField.statsbuys1h;case "buys4h":return sdk.TokenField.statsbuys4h;case "buys24h":return sdk.TokenField.statsbuys24h;case "sells1m":return sdk.TokenField.statssells1m;case "sells5m":return sdk.TokenField.statssells5m;case "sells15m":return sdk.TokenField.statssells15m;case "sells30m":return sdk.TokenField.statssells30m;case "sells1h":return sdk.TokenField.statssells1h;case "sells4h":return sdk.TokenField.statssells4h;case "sells24h":return sdk.TokenField.statssells24h;case "trades1m":return sdk.TokenField.statstrades1m;case "trades5m":return sdk.TokenField.statstrades5m;case "trades1h":return sdk.TokenField.statstrades1h;case "trades4h":return sdk.TokenField.statstrades4h;case "trades24h":return sdk.TokenField.statstrades24h;case "traders1m":return sdk.TokenField.statstraders1m;case "traders5m":return sdk.TokenField.statstraders5m;case "traders1h":return sdk.TokenField.statstraders1h;case "traders4h":return sdk.TokenField.statstraders4h;case "traders24h":return sdk.TokenField.statstraders24h;case "volumes1m":return sdk.TokenField.statsvolumesInUsd1m;case "volumes5m":return sdk.TokenField.statsvolumesInUsd5m;case "volumes1h":return sdk.TokenField.statsvolumesInUsd1h;case "volumes4h":return sdk.TokenField.statsvolumesInUsd4h;case "volumes24h":return sdk.TokenField.statsvolumesInUsd24h;case "createdAt":return sdk.TokenField.tokenCreatedAt}throw new Error(`Unsupported sortBy: ${e}`)}function j(e){return e.filter(s=>["gt","gte","lt","lte","between"].indexOf(s.operator)>=0).map(s=>{let r={field:p(s.field)};return ["gt","gte","between"].indexOf(s.operator)>=0&&(r.min=typeof s.value=="number"?new utils.SafeBigNumber(s.value).toString():s.value),["lt","lte","between"].indexOf(s.operator)>=0&&(r.max=typeof s.value=="number"?new utils.SafeBigNumber(s.value).toString():s.value),r})}function v(e){switch(e){case sdk.ChainSymbol.eth:return types.Chain.ETHEREUM;case sdk.ChainSymbol.bsc:return types.Chain.BINANCE;case sdk.ChainSymbol.sol:case "solana":return types.Chain.SOLANA}throw new Error(`Unsupported chain: ${e}`)}function Pe(e){return {address:e.address??void 0,share:e.share??void 0,isVerified:e.isVerified??void 0}}function T(e){return {chain:v(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(Pe),launchedFrom:{programAddress:e.extra?.launchFromProgramAddress??void 0,protocolFamily:e.extra?.launchFromProtocolFamily??void 0},migrateProgress:e.marketData?.completionRatio?new utils.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?D(e.stats):void 0,marketData:e.marketData?_(e.marketData):void 0,createdAt:e.tokenCreatedAt?new Date(e.tokenCreatedAt):void 0}}function D(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 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 Ns(e){return {poolAddress:e.poolAddress,programAddress:e.programAddress??void 0,protocolFamily:e.protocolFamily??void 0,tvl:e.tvlInSol??void 0,tvlInUsd:e.tvlInUsd??void 0}}function _(e){return {totalSupply:e.totalSupply??void 0,marketCap:e.marketCapInSol??void 0,marketCapInUsd:e.marketCapInUsd??void 0,price: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 K(e,s){return {open:e.open,close:e.close,high:e.high,low:e.low,volume:e.volume,resolution:s,timestamp:new Date(e.timestamp)}}function Se(e){return e==="1d"?"24h":e}function J(e){return {hasTransferFee:e.hasTransferFee,isTransferFeeUpgradable:e.isTransferFeeUpgradable,isTransferable:e.isTransferable,isFreezable:e.isFreezable,isClosable:e.isClosable}}var Ue=new Set([types.Chain.SOLANA,types.Chain.SOLANA_TESTNET,types.Chain.SOLANA_DEVNET]),Ce="0x0000000000000000000000000000000000000000",ve="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";function Re(e){return e===utils.SOLANA_TOKENS.native.address?utils.SOLANA_TOKENS.wrapped.address:e}function we(e){return e.toLowerCase()===Ce.toLowerCase()?ve:e}function He(e){return e.dex?e.dex:Ue.has(e.chain)?"jupiter":"kyberswap"}function W(e,s){return e==="jupiter"?Re(s):e==="kyberswap"?we(s):s}function Bs(e,s){return W(e,s)}function Y(e){let s=He(e),r=W(s,e.input),o=W(s,e.output);return {dex:s,userAddress:e.userAddress,amount:e.amount,swapMode:e.mode===types.API.SwapMode.EXACT_IN?sdk.SwapRouteInputSwapMode.ExactIn:sdk.SwapRouteInputSwapMode.ExactOut,slippage:e.slippage??1,inputMint:r,outputMint:o,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 Q(e){return {signedTx:e.serializedTx}}function X(e){return {startCursor:n(e.startCursor),endCursor:n(e.endCursor),hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(s=>({address:s.walletAddress,amount:s.amount,amountInUsd:s.amountInUsd,ratio:s.percentage}))}}function Z(e){let s=e;return {startCursor:n(e.startCursor),endCursor:n(e.endCursor),hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(T),extra:n(s.countsByProtocols)}}function ee(e){return {serializedTx:e.serializedTx,recentBlockhash:n(e.recentBlockhash),lastValidBlockHeight:n(e.lastValidBlockHeight),plans:[],extra:e.routeInfo}}function se(e){return {blockhash:e.blockhash,lastValidBlockHeight:e.lastValidBlockHeight}}function re(e){return {txHash:e.signature,extra:{jobId:e.jobId,elapsedTime:e.elapsedTime}}}function oe(e,s){let r=(s.data??[]).map(o=>({chain:v(o.chain),address:o.tokenAddress,name:o.name,symbol:o.symbol,image:n(o.logoUri),priceInUsd:o.priceInUsd,priceInNative:o.priceInNative,amount:o.amount,amountInUsd:o.valueInUsd,amountInNative:o.valueInNative,decimals:o.decimals}));return {chain:r[0]?.chain??e,address:s.walletAddress,balanceInUsd:s.totalValueInUsd,balanceInNative:s.totalValueInNative,startCursor:n(s.startCursor),endCursor:n(s.endCursor),hasPrev:s.hasPrev,hasNext:s.hasNext,portfolios:r}}function te(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:n(r.winRate),buyAmountInUsd:n(r.buyAmountInUsd),sellAmountInUsd:n(r.sellAmountInUsd),totalCostInUsd:n(r.totalCostInUsd),realizedProfitInUsd:n(r.realizedProfitInUsd),realizedProfitRatio:n(r.realizedProfitRatio),unrealizedProfitInUsd:n(r.unrealizedProfitInUsd),unrealizedProfitRatio:n(r.unrealizedProfitRatio),totalProfitInUsd:n(r.totalProfitInUsd),totalProfitRatio:n(r.totalProfitRatio),avgProfitPerTradeInUsd:n(r.avgProfitPerTradeInUsd)}}function ne(e,s,r){let o=r.data.map(t=>({chain:e,address:t.tokenAddress,name:t.name??"",symbol:t.symbol??"",image:n(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}));return {chain:e,address:s,tokens:Number(r.summary.tokens),buys:Number(r.summary.buys),sells:Number(r.summary.sells),totalTrades:Number(r.summary.totalTrades),wins:Number(r.summary.wins),losses:Number(r.summary.losses),winRate:n(r.summary.winRate),buyAmountInUsd:n(r.summary.buyAmountInUsd),sellAmountInUsd:n(r.summary.sellAmountInUsd),totalCostInUsd:r.summary.totalCostInUsd,realizedProfitInUsd:n(r.summary.realizedProfitInUsd),realizedProfitRatio:n(r.summary.realizedProfitRatio),unrealizedProfitInUsd:n(r.summary.unrealizedProfitInUsd),totalProfitInUsd:n(r.summary.totalProfitInUsd),startCursor:n(r.startCursor),endCursor:n(r.endCursor),hasPrev:r.hasPrev,hasNext:r.hasNext,portfolios:o}}function ae(e,s){return (s.data??[]).map(r=>({chain:v(r.chain),address:r.tokenAddress,name:r.name,symbol:r.symbol,image:n(r.logoUri),priceInUsd:r.priceInUsd,priceInNative:r.priceInNative,amount:r.amount,amountInUsd:r.valueInUsd,amountInNative:r.valueInNative,decimals:r.decimals}))}function ie(e,s){return s.data.map(r=>({chain:e,address:r.tokenAddress,name:r.name??"",symbol:r.symbol??"",image:n(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 de(e){return {startCursor:n(e.startCursor),endCursor:n(e.endCursor),hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(We)}}function We(e){let s=e.type.toLowerCase()==="buy";return {chain:v(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:n(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:n(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:n(e.dexProgramAddress),protocolFamily:n(e.dexProtocolFamily),image:n(e.dexImage)},poolAddress:n(e.poolAddress),status:e.status??"success",time:new Date(e.blockTimestamp*1e3)}}function le(e){return {startCursor:n(e.startCursor),endCursor:n(e.endCursor),hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(xe)}}function xe(e){let s=e.type.toLowerCase().replace(/ /g,"_"),r=s==="buy";return {chain:v(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:n(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:n(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:n(e.dexProgramAddress),protocolFamily:n(e.dexProtocolFamily),image:n(e.dexImage)},poolAddress:n(e.poolAddress),status:e.status??"success",time:new Date(e.blockTimestamp*1e3)}}function ce(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 ue(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 me(e){return {open:e.open,close:e.close,high:e.high,low:e.low,volume:e.volume,resolution:Se(e.resolution),timestamp:new Date(e.time)}}function pe(e){let s=["1m","5m","15m","30m","1h","4h","24h"],r=e,o={};for(let t of s){let d=r[`buys${t}`],a=r[`sells${t}`],c=r[`buyers${t}`],w=r[`sellers${t}`],k=r[`buyVolumeInUsd${t}`],A=r[`sellVolumeInUsd${t}`],S=r[`trades${t}`],U=r[`price${t}`],f=r[`openInUsd${t}`],C=r[`closeInUsd${t}`];if(!(d!==void 0||a!==void 0||S!==void 0||U!==void 0))continue;let H=S??(d!==void 0&&a!==void 0?d+a:void 0),fe=c!==void 0&&w!==void 0?c+w:void 0,ge=k!==void 0&&A!==void 0?new utils.SafeBigNumber(k).plus(A).toString():void 0,he=f&&C&&new utils.SafeBigNumber(f).gt(0)?new utils.SafeBigNumber(C).minus(f).div(f).toString():void 0;o[t]={buys:d,sells:a,trades:H,buyers:c,sellers:w,traders:fe,buyVolumesInUsd:k,sellVolumesInUsd:A,volumesInUsd:ge,openPriceInUsd:f,closePriceInUsd:C,priceInUsd:U??C,priceChange:he};}return o}function De(e){return {priceInUsd:e.price}}function N(e,s){return {chain:e,address:s.address,stats:pe(s),marketData:De(s)}}function B(e,s,r){return {chain:e,address:s,marketData:{totalSupply:r.supply,marketCapInUsd:r.marketCapInUsd}}}function F(e,s,r){return {chain:e,address:s,marketData:_e(r)}}function O(e,s,r){return r.metricType===sdk.WsMetricType.LIQUIDITY_IN_USD?{chain:e,address:s,marketData:{tvlInUsd:r.value}}:r.metricType===sdk.WsMetricType.MIGRATED_RATIO?{chain:e,address:s,migrateProgress:new utils.SafeBigNumber(r.value).shiftedBy(2).toString()}:{chain:e,address:s}}function L(e,s){return {chain:e,address:s.tokenAddress??"",migrateProgress:s.progressRatio?new utils.SafeBigNumber(s.progressRatio).shiftedBy(2).toString():void 0}}function Te(e,s,r){return {chain:e,address:s,liquidities:[{poolAddress:r.poolAddress,tvlInUsd:r.liquidityInUsd,tvl:r.liquidityInNative}]}}function ke(e,s,r){return {chain:e,address:s,marketData:{tvlInUsd:r.liquidityInUsd,tvl:r.liquidityInNative}}}function _e(e){return {holders:e.holders,top10Holdings:e.top10HoldersAmount,top10HoldingsRatio:e.top10HoldersRatio,top50Holdings:e.top50HoldersAmount,top50HoldingsRatio:e.top50HoldersRatio,top100Holdings:e.top100HoldersAmount,top100HoldingsRatio:e.top100HoldersRatio,devHolders:e.balanceTagDevHolders===void 0?void 0:e.balanceTagDevHolders,devHoldings:e.balanceTagDevAmount,devHoldingsRatio:e.balanceTagDevRatio,sniperHolders:e.balanceTagSniperHolders===void 0?void 0:e.balanceTagSniperHolders,sniperHoldings:e.balanceTagSniperAmount,sniperHoldingsRatio:e.balanceTagSniperRatio,freshHolders:e.balanceTagFreshHolders===void 0?void 0:e.balanceTagFreshHolders,freshHoldings:e.balanceTagFreshAmount,freshHoldingsRatio:e.balanceTagFreshRatio,bundleHolders:e.balanceTagBundleHolders===void 0?void 0:e.balanceTagBundleHolders,bundleHoldings:e.balanceTagBundleAmount,bundleHoldingsRatio:e.balanceTagBundleRatio,sandwichHolders:e.balanceTagSandwichHolders===void 0?void 0:e.balanceTagSandwichHolders,sandwichHoldings:e.balanceTagSandwichAmount,sandwichHoldingsRatio:e.balanceTagSandwichRatio}}function E(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 M(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 be=class e{constructor(s,r){this.accessToken=s;this.options=r;this._client=new sdk.ChainStreamClient(this.accessToken,this.options);}_client;async getToken(s,r){let o=await this._client.token.getToken(l(s),r);return T(o)}async getTokens(s,r){return (await this._client.token.getTokens(l(s),{tokenAddresses:r.join(",")})).map(T)}async getTokenCandles(s,r,o,t){return (await this._client.token.getCandles(l(s),r,{resolution:x(o),from:t?.after?.getTime(),to:t?.before?.getTime(),limit:t?.limit})).map(a=>K(a,o))}async getTokenSecurity(s,r){let o=await this._client.token.getSecurity(l(s),r);return J(o)}async getTokenStats(s,r){let o=await this._client.token.getStats(l(s),r);return D(o)}async getTokenHolders(s,r,o){let t=await this._client.token.getHolders(l(s),r,{cursor:o?.cursor,limit:o?.limit,direction:o?.direction});return X(t)}async getTokenMarketData(s,r){let o=await this._client.token.getMarketData(l(s),r);return _(o)}async getNewTokens(s,r){return (await this._client.ranking.getNewTokens(l(s),this._buildRankingParams(r))).map(T)}async getFinalStretchTokens(s,r){return (await this._client.ranking.getFinalStretchTokens(l(s),this._buildRankingParams(r))).map(T)}async getMigratedTokens(s,r){return (await this._client.ranking.getMigratedTokens(l(s),this._buildRankingParams(r))).map(T)}async getTrendingTokens(s,r,o){return (await this._client.ranking.getHotTokens(l(s),r,this._buildRankingParams(o))).map(T)}async getStockTokens(s,r){return (await this._client.ranking.getStocksTokens(l(s),this._buildRankingParams(r))).map(T)}async searchTokens(s){let r=await this._client.token.search({chains:s?.chains?.map(l),q:s?.keyword,limit:s?.limit,cursor:s?.cursor,sortBy:s?.sortBy?G(s.sortBy):void 0,sort:s?.sortDirection});return Z(r)}async swapRoute(s){let r=await this._client.dex.route(l(s.chain),Y(s));return ee(r)}async getLatestBlock(s){let r=await this._client.blockchain.getLatestBlock(l(s.chain));return se(r)}async sendTx(s){let r=await this._client.transaction.send(l(s.chain),Q(s));return re(r)}async checkTxSuccess(s,r,o){let{success:t}=await this._client.waitForJob(r,o);return t}async getWalletPortfolios(s,r,o){let t=e._CHAIN_TO_BALANCE_PARAM[s];if(t&&this.options?.nativeBalanceApiUrl)return this._getWalletPortfoliosFromBalanceApi(s,t,r);let d=await this._client.wallet.getNetWorth(l(s),r,{cursor:o?.cursor,limit:o?.limit??100});return oe(s,d)}async getWalletPnl(s,r,o){let t=await this._client.wallet.getPnl(l(s),r,o?{resolution:o}:void 0);return te(s,r,t)}async getWalletPortfolioPnls(s,r,o){let t=await this._client.wallet.getPnlDetails(l(s),r,{cursor:o?.cursor,limit:o?.limit??100});return ne(s,r,t)}async getWalletPortfoliosByTokens(s,r,o){let t=e._CHAIN_TO_BALANCE_PARAM[s];if(t&&this.options?.nativeBalanceApiUrl)return this._getPortfoliosFromBalanceApi(s,t,r,o);let d=await this._client.wallet.getNetWorthByTokens(l(s),r,{tokenAddresses:o.join(",")});return ae(s,d)}async getWalletPortfolioPnlsByTokens(s,r,o){let t=await this._client.wallet.getPnlByToken(l(s),r,{tokenAddresses:o.join(",")});return ie(s,t)}async getWalletTrades(s,r,o){return this._getTrades(s,{walletAddress:r},o)}async getTokenTrades(s,r,o){return this._getTrades(s,{tokenAddress:r},o)}async getWalletActivities(s,r,o){return this._getActivities(s,{walletAddress:r},o)}async getTokenActivities(s,r,o){return this._getActivities(s,{tokenAddress:r},o)}async getPresignedUploadUrl(){return (await this._client.ipfs.presign()).presignUrl}subscribeToken(s,r,o){let t=l(s),d=[this._client.stream.subscribeTokenStats({chain:t,tokenAddress:r,callback:a=>o([N(s,a)])}),this._client.stream.subscribeTokenSupply({chain:t,tokenAddress:r,callback:a=>o([B(s,r,a)])}),this._client.stream.subscribeTokenHolders({chain:t,tokenAddress:r,callback:a=>o([F(s,r,a)])}),this._client.stream.subscribeTokenLiquidity({chain:t,tokenAddress:r,callback:a=>o([O(s,r,a)])}),this._client.stream.subscribeTokenMaxLiquidity({chain:t,tokenAddress:r,callback:a=>o([Te(s,r,a)])}),this._client.stream.subscribeTokenTotalLiquidity({chain:t,tokenAddress:r,callback:a=>o([ke(s,r,a)])})];return {unsubscribe:()=>d.forEach(a=>a.unsubscribe())}}subscribeTokenCandles(s,r,o,t){return this._client.stream.subscribeTokenCandles({chain:l(s),tokenAddress:r,resolution:x(o),callback:d=>t([me(d)])})}subscribeWalletPnl(s,r,o){return this._client.stream.subscribeWalletPnlList({chain:l(s),walletAddress:r,callback:t=>o(t.map(d=>({chain:s,address:d.walletAddress,buys:d.buys,buyAmountInUsd:d.buyAmountInUsd,sells:d.sells,sellAmountInUsd:d.sellAmountInUsd,wins:d.wins,winRate:d.winRatio,totalProfitInUsd:d.pnlInUsd,totalProfitRatio:d.pnlRatio,avgProfitPerTradeInUsd:d.averagePnlInUsd,tokens:d.tokens,resolution:d.resolution})))})}subscribeWalletPortfolios(s,r,o){return this._client.stream.subscribeWalletBalance({chain:l(s),walletAddress:r,callback:t=>o(t.map(d=>({chain:s,walletAddress:d.walletAddress,tokenAddress:d.tokenAddress,priceInUsd:d.tokenPriceInUsd,amount:d.balance})))})}subscribeWalletPortfolioPnls(s,r,o){return this._client.stream.subscribeWalletPnl({chain:l(s),walletAddress:r,callback:t=>o([{chain:s,walletAddress:t.walletAddress,tokenAddress:t.tokenAddress,openTime:t.opentime?new Date(t.opentime):void 0,closeTime:t.closetime?new Date(t.closetime):void 0,buys:t.buyCount,buyVolumes:t.buyAmount,buyVolumesInUsd:t.buyAmountInUsd,buyAvgPriceInUsd:t.averageBuyPriceInUsd,sells:t.sellCount,sellVolumes:t.sellAmount,sellVolumesInUsd:t.sellAmountInUsd,sellAvgPriceInUsd:t.averageSellPriceInUsd,realizedProfitInUsd:t.realizedProfitInUsd,realizedProfitRatio:t.realizedProfitRatio,unrealizedProfitInUsd:t.unrealizedProfitInUsd,unrealizedProfitRatio:t.unrealizedProfitRatio,totalProfitInUsd:t.totalRealizedProfitInUsd,totalProfitRatio:t.totalRealizedProfitRatio}])})}subscribeWalletTrades(s,r,o){return this._client.stream.subscribeWalletTrade({chain:l(s),walletAddress:r,callback:t=>o([E(s,t)])})}subscribeTokenTrades(s,r,o){return this._client.stream.subscribeTokenTrade({chain:l(s),tokenAddress:r,callback:t=>o([E(s,t)])})}subscribeWalletActivities(s,r,o){return this._client.stream.subscribeWalletTrade({chain:l(s),walletAddress:r,callback:t=>o([M(s,t)])})}subscribeTokenActivities(s,r,o){return this._client.stream.subscribeTokenTrade({chain:l(s),tokenAddress:r,callback:t=>o([M(s,t)])})}subscribeNewTokens(s,r){let o=l(s),t=this._subscribeRankingTokens(s,sdk.WsChannelType.New,r),d=[this._client.stream.subscribeNewToken({chain:o,callback:a=>r([ce(s,a)])}),this._client.stream.subscribeNewTokensMetadata({chain:o,callback:a=>r(a.map(c=>ue(s,c)))}),this._client.stream.subscribeRankingTokensBondingCurve({chain:o,callback:a=>r(a.map(c=>L(s,c)))})];return {unsubscribe:()=>{t.unsubscribe(),d.forEach(a=>a.unsubscribe());}}}subscribeTrendingTokens(s,r){return this._subscribeRankingTokens(s,sdk.WsChannelType.HOT,r)}subscribeMigratedTokens(s,r){return this._subscribeRankingTokens(s,sdk.WsChannelType.MIGRATED,r)}subscribeFinalStretchTokens(s,r){let o=l(s),t=this._subscribeRankingTokens(s,sdk.WsChannelType.FINAL_STRETCH,r),d=this._client.stream.subscribeRankingTokensBondingCurve({chain:o,callback:a=>r(a.map(c=>L(s,c)))});return {unsubscribe:()=>{t.unsubscribe(),d.unsubscribe();}}}subscribeStockTokens(s,r){return this._subscribeRankingTokens(s,sdk.WsChannelType.US_STOCKS,r)}static _CHAIN_TO_BALANCE_PARAM={[types.Chain.SOLANA]:"sol",[types.Chain.ETHEREUM]:"eth",[types.Chain.BINANCE]:"bnb"};static _NATIVE_TOKEN_ADDRESS={[types.Chain.SOLANA]:"11111111111111111111111111111111",[types.Chain.ETHEREUM]:"0x0000000000000000000000000000000000000000",[types.Chain.BINANCE]:"0x0000000000000000000000000000000000000000"};async _getPortfoliosFromBalanceApi(s,r,o,t){let d=this.options.nativeBalanceApiUrl,a=new URLSearchParams({chain:r,address:o});t?.length&&a.set("tokens",t.join(","));let c=await fetch(`${d}?${a.toString()}`);if(!c.ok)throw new Error(`Balance API returned ${c.status}`);return (await c.json()).balances.map(k=>{let A=BigInt(k.balance),S=k.decimals,U=BigInt(10)**BigInt(S),f=A/U,V=(A%U).toString().padStart(S,"0"),H=`${f}.${V}`.replace(/\.?0+$/,"")||"0";return {chain:s,address:k.address,name:"",symbol:"",priceInUsd:"0",priceInNative:"0",amount:H,amountInUsd:"0",amountInNative:"0",decimals:k.decimals}})}async _getWalletPortfoliosFromBalanceApi(s,r,o){let t=await this._getPortfoliosFromBalanceApi(s,r,o),d=e._NATIVE_TOKEN_ADDRESS[s],a=d?t.find(c=>c.address===d):void 0;return {chain:s,address:o,balanceInUsd:"0",balanceInNative:a?.amount??"0",portfolios:t,hasPrev:false,hasNext:false}}_buildRankingParams(s){return {sortBy:s?.sortBy?p(s.sortBy):void 0,sortDirection:s?.sortDirection?s.sortDirection:void 0,rangeFilters:s?.filters?j(s.filters):void 0,launchpadPlatform:s?.filters?Be(s.filters):void 0,searchKeywords:s?.keywords,excludeKeywords:s?.excludeKeywords}}async _getTrades(s,r,o){let t=await this._client.trade.getTrades(l(s),{...r,cursor:o?.cursor,limit:o?.limit,direction:o?.direction,beforeTimestamp:o?.before?.getTime(),afterTimestamp:o?.after?.getTime(),beforeBlockHeight:o?.beforeBlockHeight,afterBlockHeight:o?.afterBlockHeight,poolAddress:o?.poolAddress,type:o?.type?o.type.toUpperCase():void 0});return de(t)}async _getActivities(s,r,o){let t=await this._client.trade.getActivities(l(s),{...r,cursor:o?.cursor,limit:o?.limit,direction:o?.direction,beforeTimestamp:o?.before?.getTime(),afterTimestamp:o?.after?.getTime(),beforeBlockHeight:o?.beforeBlockHeight,afterBlockHeight:o?.afterBlockHeight,poolAddress:o?.poolAddress,type:o?.type?o.type.toUpperCase():void 0});return le(t)}_subscribeRankingTokens(s,r,o){let t=l(s),d=[this._client.stream.subscribeRankingTokensStats({chain:t,channelType:r,callback:a=>o(a.map(c=>N(s,c)))}),this._client.stream.subscribeRankingTokensHolders({chain:t,channelType:r,callback:a=>o(a.map(c=>F(s,c.tokenAddress,c)))}),this._client.stream.subscribeRankingTokensSupply({chain:t,channelType:r,callback:a=>o(a.map(c=>B(s,c.tokenAddress,c)))}),this._client.stream.subscribeRankingTokensLiquidity({chain:t,channelType:r,callback:a=>o(a.map(c=>O(s,c.tokenAddress,c)))})];return {unsubscribe:()=>d.forEach(a=>a.unsubscribe())}}};function Be(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);}}exports.Client=be;exports.KYBERSWAP_NATIVE_SENTINEL=ve;exports.fromActivityPage=le;exports.fromChainDTO=v;exports.fromLatestBlock=se;exports.fromPnlDetailItems=ie;exports.fromPnlDetailsPage=ne;exports.fromSendTxResult=re;exports.fromSwapRoute=ee;exports.fromTokenCandle=K;exports.fromTokenCreatorDTO=Pe;exports.fromTokenDTO=T;exports.fromTokenHolderPage=X;exports.fromTokenLiquidityDTO=Ns;exports.fromTokenMarketDataDTO=_;exports.fromTokenMetadataSubscribed=ue;exports.fromTokenPage=Z;exports.fromTokenSecurity=J;exports.fromTokenStatsDTO=D;exports.fromTokenSubscribed=ce;exports.fromTradePage=de;exports.fromWalletNetWorthByTokens=ae;exports.fromWalletPnlSummary=te;exports.fromWalletPortfolios=oe;exports.fromWsActivity=M;exports.fromWsCandle=me;exports.fromWsTokenBondingCurveToSubscribed=L;exports.fromWsTokenDataSubscribed=N;exports.fromWsTokenHolderToSubscribed=F;exports.fromWsTokenLiquidityToSubscribed=O;exports.fromWsTokenMarketDataFromHolder=_e;exports.fromWsTokenMarketDataFromStats=De;exports.fromWsTokenMaxLiquidityToSubscribed=Te;exports.fromWsTokenStats=pe;exports.fromWsTokenSupplyToSubscribed=B;exports.fromWsTokenTotalLiquidityToSubscribed=ke;exports.fromWsTradeActivity=E;exports.toChainDTO=l;exports.toFieldDTO=p;exports.toMintForRoute=Bs;exports.toRangeFiltersDTO=j;exports.toResolutionDTO=x;exports.toSearchFieldDTO=G;exports.toSendTxInput=Q;exports.toSortDirectionDTO=ye;exports.toSwapRouteInput=Y;exports.version=Ae;//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map