@liberfi.io/client 0.1.66 → 0.1.67

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
@@ -47,34 +47,34 @@ const client = new Client("your-access-token", {
47
47
 
48
48
  **REST Methods (IClient):**
49
49
 
50
- | Method | Signature | Description |
51
- | -------------------------------- | ------------------------------------------------------------------ | ------------------------------------------- |
52
- | `getToken` | `(chain, address) => Promise<Token>` | Fetch a single token. |
53
- | `getTokens` | `(chain, addresses) => Promise<Token[]>` | Fetch multiple tokens. |
54
- | `getTokenCandles` | `(chain, address, resolution, options?) => Promise<TokenCandle[]>` | Fetch OHLCV candles. |
55
- | `getTokenSecurity` | `(chain, address) => Promise<TokenSecurity>` | Fetch token security info. |
56
- | `getTokenStats` | `(chain, address) => Promise<TokenStats>` | Fetch token stats by timeframe. |
57
- | `getTokenHolders` | `(chain, address, options?) => Promise<CursorList<TokenHolder>>` | Fetch paginated token holders. |
58
- | `getTokenMarketData` | `(chain, address) => Promise<TokenMarketData>` | Fetch market data (price, TVL, holders). |
59
- | `getNewTokens` | `(chain, options?) => Promise<Token[]>` | Fetch new token listings. |
60
- | `getFinalStretchTokens` | `(chain, options?) => Promise<Token[]>` | Fetch tokens near migration completion. |
61
- | `getMigratedTokens` | `(chain, options?) => Promise<Token[]>` | Fetch migrated tokens. |
62
- | `getTrendingTokens` | `(chain, resolution, options?) => Promise<Token[]>` | Fetch trending tokens by timeframe. |
63
- | `getStockTokens` | `(chain, options?) => Promise<Token[]>` | Fetch stock-like tokens. |
64
- | `searchTokens` | `(options?) => Promise<SearchTokenCursorList>` | Search tokens with filters and pagination. |
65
- | `swapRoute` | `(params) => Promise<SwapRoute>` | Get a swap route with unsigned transaction. |
66
- | `sendTx` | `(params) => Promise<SendTxResult>` | Submit a signed transaction. |
67
- | `checkTxSuccess` | `(chain, txHash, timeout?) => Promise<boolean>` | Poll for transaction success. |
68
- | `getWalletPortfolios` | `(chain, address, options?) => Promise<WalletPortfolios>` | Fetch wallet holdings. |
69
- | `getWalletPnl` | `(chain, address, resolution?) => Promise<WalletPnl>` | Fetch wallet PnL summary. |
70
- | `getWalletPortfolioPnls` | `(chain, address, options?) => Promise<WalletPortfolioPnls>` | Fetch per-token PnL with summary. |
71
- | `getWalletPortfoliosByTokens` | `(chain, address, tokenAddresses) => Promise<Portfolio[]>` | Fetch holdings for specific tokens. |
72
- | `getWalletPortfolioPnlsByTokens` | `(chain, address, tokenAddresses) => Promise<PortfolioPnl[]>` | Fetch PnL for specific tokens. |
73
- | `getWalletTrades` | `(chain, address, options?) => Promise<CursorList<Trade>>` | Fetch wallet trade history. |
74
- | `getTokenTrades` | `(chain, address, options?) => Promise<CursorList<Trade>>` | Fetch token trade history. |
75
- | `getWalletActivities` | `(chain, address, options?) => Promise<CursorList<Activity>>` | Fetch wallet activities. |
76
- | `getTokenActivities` | `(chain, address, options?) => Promise<CursorList<Activity>>` | Fetch token activities. |
77
- | `getPresignedUploadUrl` | `() => Promise<string>` | Get a presigned IPFS upload URL. |
50
+ | Method | Signature | Description |
51
+ | -------------------------------- | ------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
52
+ | `getToken` | `(chain, address) => Promise<Token>` | Fetch a single token. |
53
+ | `getTokens` | `(chain, addresses) => Promise<Token[]>` | Fetch multiple tokens. |
54
+ | `getTokenCandles` | `(chain, address, resolution, options?) => Promise<TokenCandle[]>` | Fetch OHLCV candles. |
55
+ | `getTokenSecurity` | `(chain, address) => Promise<TokenSecurity>` | Fetch token security info. |
56
+ | `getTokenStats` | `(chain, address) => Promise<TokenStats>` | Fetch token stats by timeframe. |
57
+ | `getTokenHolders` | `(chain, address, options?) => Promise<CursorList<TokenHolder>>` | Fetch paginated token holders. |
58
+ | `getTokenMarketData` | `(chain, address) => Promise<TokenMarketData>` | Fetch market data (price, TVL, holders). |
59
+ | `getNewTokens` | `(chain, options?) => Promise<Token[]>` | Fetch new token listings. |
60
+ | `getFinalStretchTokens` | `(chain, options?) => Promise<Token[]>` | Fetch tokens near migration completion. |
61
+ | `getMigratedTokens` | `(chain, options?) => Promise<Token[]>` | Fetch migrated tokens. |
62
+ | `getTrendingTokens` | `(chain, resolution, options?) => Promise<Token[]>` | Fetch trending tokens by timeframe. |
63
+ | `getStockTokens` | `(chain, options?) => Promise<Token[]>` | Fetch stock-like tokens. |
64
+ | `searchTokens` | `(options?) => Promise<SearchTokenCursorList>` | Search tokens with filters and pagination. |
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
+ | `sendTx` | `(params) => Promise<SendTxResult>` | Submit a signed transaction. |
67
+ | `checkTxSuccess` | `(chain, txHash, timeout?) => Promise<boolean>` | Poll for transaction success. |
68
+ | `getWalletPortfolios` | `(chain, address, options?) => Promise<WalletPortfolios>` | Fetch wallet holdings. |
69
+ | `getWalletPnl` | `(chain, address, resolution?) => Promise<WalletPnl>` | Fetch wallet PnL summary. |
70
+ | `getWalletPortfolioPnls` | `(chain, address, options?) => Promise<WalletPortfolioPnls>` | Fetch per-token PnL with summary. |
71
+ | `getWalletPortfoliosByTokens` | `(chain, address, tokenAddresses) => Promise<Portfolio[]>` | Fetch holdings for specific tokens. |
72
+ | `getWalletPortfolioPnlsByTokens` | `(chain, address, tokenAddresses) => Promise<PortfolioPnl[]>` | Fetch PnL for specific tokens. |
73
+ | `getWalletTrades` | `(chain, address, options?) => Promise<CursorList<Trade>>` | Fetch wallet trade history. |
74
+ | `getTokenTrades` | `(chain, address, options?) => Promise<CursorList<Trade>>` | Fetch token trade history. |
75
+ | `getWalletActivities` | `(chain, address, options?) => Promise<CursorList<Activity>>` | Fetch wallet activities. |
76
+ | `getTokenActivities` | `(chain, address, options?) => Promise<CursorList<Activity>>` | Fetch token activities. |
77
+ | `getPresignedUploadUrl` | `() => Promise<string>` | Get a presigned IPFS upload URL. |
78
78
 
79
79
  **WebSocket Methods (ISubscribeClient):**
80
80
 
@@ -113,15 +113,17 @@ const client = new Client("your-access-token", {
113
113
 
114
114
  The following DTO conversion functions are also exported. They are primarily intended for internal use by `Client` but are available for advanced scenarios (e.g. custom data pipelines).
115
115
 
116
- | Function | Signature | Description |
117
- | ------------------------ | ---------------------------------- | ----------------------------------------- |
118
- | `toChainDTO` | `(chain: Chain) => ChainSymbol` | Convert `Chain` to SDK chain symbol. |
119
- | `fromChainDTO` | `(chain: string) => Chain` | Convert SDK chain symbol to `Chain`. |
120
- | `fromTokenDTO` | `(input: TokenDTO) => Token` | Convert SDK token to domain `Token`. |
121
- | `fromTokenStatsDTO` | `(input: TokenStat) => TokenStats` | Convert SDK stats to domain `TokenStats`. |
122
- | `fromTokenMarketDataDTO` | `(input) => TokenMarketData` | Convert SDK market data. |
123
- | `fromTokenCandle` | `(input: Candle) => TokenCandle` | Convert SDK candle. |
124
- | `fromTokenSecurity` | `(input) => TokenSecurity` | Convert SDK security data. |
116
+ | Function | Signature | Description |
117
+ | --------------------------- | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
118
+ | `toChainDTO` | `(chain: Chain) => ChainSymbol` | Convert `Chain` to SDK chain symbol. |
119
+ | `fromChainDTO` | `(chain: string) => Chain` | Convert SDK chain symbol to `Chain`. |
120
+ | `fromTokenDTO` | `(input: TokenDTO) => Token` | Convert SDK token to domain `Token`. |
121
+ | `fromTokenStatsDTO` | `(input: TokenStat) => TokenStats` | Convert SDK stats to domain `TokenStats`. |
122
+ | `fromTokenMarketDataDTO` | `(input) => TokenMarketData` | Convert SDK market data. |
123
+ | `fromTokenCandle` | `(input: Candle) => TokenCandle` | Convert SDK candle. |
124
+ | `fromTokenSecurity` | `(input) => TokenSecurity` | Convert SDK security data. |
125
+ | `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
+ | `KYBERSWAP_NATIVE_SENTINEL` | `"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"` | Sentinel address required by KyberSwap for native token; use with `toMintForRoute` if not using `client.swapRoute`. |
125
127
 
126
128
  See `src/utils.ts` for the full list of conversion functions.
127
129
 
@@ -179,6 +181,31 @@ const client = new Client({
179
181
  });
180
182
  ```
181
183
 
184
+ ### Swap route (方案 A — 唯一支持的获取 route 方式)
185
+
186
+ **所有** swap route 请求必须通过 `client.swapRoute()` 发起,以便 EVM 原生币(如 ETH 的 `0x0`)被正确转换为 KyberSwap 所需格式。不要用自定义 fetch 直接请求 `POST /v2/dex/:chain/route` 并传入原始的 `inputMint`/`outputMint`,否则 EVM 原生会返回 50010。
187
+
188
+ ```typescript
189
+ import { Client } from "@liberfi.io/client";
190
+ import { Chain, API } from "@liberfi.io/types";
191
+
192
+ const client = new Client("your-api-token");
193
+
194
+ // 使用 token 地址即可,包括 EVM 原生 0x0;client 内部会做 DEX 所需转换
195
+ const route = await client.swapRoute({
196
+ chain: Chain.ETHEREUM,
197
+ userAddress: "0xe778D43627387448Ccf2285B6FA1CA60Eb629750",
198
+ input: "0x0000000000000000000000000000000000000000", // ETH native
199
+ output: "0xfF541139c60bB38CE2159A13d656f0f38aA96ff4",
200
+ mode: API.SwapMode.EXACT_IN,
201
+ amount: "100000000000000",
202
+ slippage: 20,
203
+ });
204
+ // route.serializedTx 为未签名交易的 base64
205
+ ```
206
+
207
+ 在 React 中请通过 `@liberfi.io/react` 的 `useSwapRouteQuery` 或 `@liberfi.io/ui-trade` 的 `useSwap` / `useSwapScript` 获取 route,它们内部都调用 `client.swapRoute`。
208
+
182
209
  ## Future Improvements
183
210
 
184
211
  - Narrow the public API surface — only export `Client`, types, and `version`; keep DTO converters internal.
package/dist/index.d.mts CHANGED
@@ -8,7 +8,7 @@ declare global {
8
8
  };
9
9
  }
10
10
  }
11
- declare const _default: "0.1.66";
11
+ declare const _default: "0.1.67";
12
12
 
13
13
  /** Async or sync token provider for authentication. */
14
14
  interface ClientTokenProviderFn {
@@ -92,6 +92,18 @@ declare function fromTokenLiquidityDTO(input: DexPool): TokenLiquidity;
92
92
  declare function fromTokenMarketDataDTO(input: TokenMarketData$1): TokenMarketData;
93
93
  declare function fromTokenCandle(input: TokenCandle$1, resolution: TokenResolution): TokenCandle;
94
94
  declare function fromTokenSecurity(input: Record<string, unknown>): TokenSecurity;
95
+ /**
96
+ * KyberSwap API expects this sentinel for native token (ETH/BNB/etc.),
97
+ * not the zero address. See KyberSwap docs / 400 on route when using 0x0.
98
+ * Exported for use when building route request bodies outside Client.swapRoute.
99
+ */
100
+ declare const KYBERSWAP_NATIVE_SENTINEL = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
101
+ /**
102
+ * Returns the token address to send in route API for the given DEX.
103
+ * Use this when building route request bodies manually (e.g. in a BFF or custom fetch).
104
+ * For KyberSwap, EVM native (0x0) is converted to KYBERSWAP_NATIVE_SENTINEL.
105
+ */
106
+ declare function toMintForRoute(dex: "jupiter" | "kyberswap", address: string): string;
95
107
  declare function toSwapRouteInput(params: API.SwapParams): SwapRouteInput;
96
108
  declare function toSendTxInput(params: API.SendTxParams): SendTxInput;
97
109
  declare function fromTokenHolderPage(input: PageResponseTokenHolder): API.CursorList<TokenHolder>;
@@ -121,4 +133,4 @@ declare function fromWsTokenMarketDataFromHolder(input: WsTokenHolder): Partial<
121
133
  declare function fromWsTradeActivity(chain: Chain, input: WsTradeActivity): Trade;
122
134
  declare function fromWsActivity(chain: Chain, input: WsTradeActivity): Activity;
123
135
 
124
- export { Client, type ClientOptions, type ClientTokenProvider, type ClientTokenProviderFn, 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, toRangeFiltersDTO, toResolutionDTO, toSearchFieldDTO, toSendTxInput, toSortDirectionDTO, toSwapRouteInput, _default as version };
136
+ 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 };
package/dist/index.d.ts CHANGED
@@ -8,7 +8,7 @@ declare global {
8
8
  };
9
9
  }
10
10
  }
11
- declare const _default: "0.1.66";
11
+ declare const _default: "0.1.67";
12
12
 
13
13
  /** Async or sync token provider for authentication. */
14
14
  interface ClientTokenProviderFn {
@@ -92,6 +92,18 @@ declare function fromTokenLiquidityDTO(input: DexPool): TokenLiquidity;
92
92
  declare function fromTokenMarketDataDTO(input: TokenMarketData$1): TokenMarketData;
93
93
  declare function fromTokenCandle(input: TokenCandle$1, resolution: TokenResolution): TokenCandle;
94
94
  declare function fromTokenSecurity(input: Record<string, unknown>): TokenSecurity;
95
+ /**
96
+ * KyberSwap API expects this sentinel for native token (ETH/BNB/etc.),
97
+ * not the zero address. See KyberSwap docs / 400 on route when using 0x0.
98
+ * Exported for use when building route request bodies outside Client.swapRoute.
99
+ */
100
+ declare const KYBERSWAP_NATIVE_SENTINEL = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
101
+ /**
102
+ * Returns the token address to send in route API for the given DEX.
103
+ * Use this when building route request bodies manually (e.g. in a BFF or custom fetch).
104
+ * For KyberSwap, EVM native (0x0) is converted to KYBERSWAP_NATIVE_SENTINEL.
105
+ */
106
+ declare function toMintForRoute(dex: "jupiter" | "kyberswap", address: string): string;
95
107
  declare function toSwapRouteInput(params: API.SwapParams): SwapRouteInput;
96
108
  declare function toSendTxInput(params: API.SendTxParams): SendTxInput;
97
109
  declare function fromTokenHolderPage(input: PageResponseTokenHolder): API.CursorList<TokenHolder>;
@@ -121,4 +133,4 @@ declare function fromWsTokenMarketDataFromHolder(input: WsTokenHolder): Partial<
121
133
  declare function fromWsTradeActivity(chain: Chain, input: WsTradeActivity): Trade;
122
134
  declare function fromWsActivity(chain: Chain, input: WsTradeActivity): Activity;
123
135
 
124
- export { Client, type ClientOptions, type ClientTokenProvider, type ClientTokenProviderFn, 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, toRangeFiltersDTO, toResolutionDTO, toSearchFieldDTO, toSendTxInput, toSortDirectionDTO, toSwapRouteInput, _default as version };
136
+ 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 };
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.66");var fe="0.1.66";function t(e){return e??void 0}function d(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 v(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 he(e){return e}function E(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 R(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 q(e){return e.filter(s=>["gt","gte","lt","lte","between"].indexOf(s.operator)>=0).map(s=>{let r={field:R(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 I(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:I(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?w(e.stats):void 0,marketData:e.marketData?H(e.marketData):void 0,createdAt:e.tokenCreatedAt?new Date(e.tokenCreatedAt):void 0}}function w(e){return {"1m":f(e,"1m"),"5m":f(e,"5m"),"15m":f(e,"15m"),"30m":f(e,"30m"),"1h":f(e,"1h"),"4h":f(e,"4h"),"24h":f(e,"24h")}}function g(e){return e===void 0?void 0:parseInt(e)}function f(e,s){let r=e.periods?.[s];return r?{buys:g(r.buys),sells:g(r.sells),trades:g(r.trades),buyers:g(r.buyers),sellers:g(r.sellers),traders:g(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 Rs(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 H(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 G(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 Ie(e){return e==="1d"?"24h":e}function $(e){return {hasTransferFee:e.hasTransferFee,isTransferFeeUpgradable:e.isTransferFeeUpgradable,isTransferable:e.isTransferable,isFreezable:e.isFreezable,isClosable:e.isClosable}}var Ae=new Set([types.Chain.SOLANA,types.Chain.SOLANA_TESTNET,types.Chain.SOLANA_DEVNET]);function V(e){return e===utils.SOLANA_TOKENS.native.address?utils.SOLANA_TOKENS.wrapped.address:e}function j(e){let s=Ae.has(e.chain),r=s?V(e.input):e.input,o=s?V(e.output):e.output;return {dex:s?"jupiter":"kyberswap",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 K(e){return {signedTx:e.serializedTx}}function J(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 Q(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 X(e){return {serializedTx:e.serializedTx,plans:[],extra:e.routeInfo}}function Y(e){return {txHash:e.signature,extra:{jobId:e.jobId,elapsedTime:e.elapsedTime}}}function Z(e,s){let r=(s.data??[]).map(o=>({chain:I(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 ee(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 se(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 re(e,s){return (s.data??[]).map(r=>({chain:I(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 oe(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 ne(e){return {startCursor:t(e.startCursor),endCursor:t(e.endCursor),hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(Pe)}}function Pe(e){let s=e.type.toLowerCase()==="buy";return {chain:I(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 te(e){return {startCursor:t(e.startCursor),endCursor:t(e.endCursor),hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(Se)}}function Se(e){let s=e.type.toLowerCase().replace(/ /g,"_"),r=s==="buy";return {chain:I(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 ae(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 ie(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 de(e){return {open:e.open,close:e.close,high:e.high,low:e.low,volume:e.volume,resolution:Ie(e.resolution),timestamp:new Date(e.time)}}function Ue(e){let s=["1m","5m","15m","30m","1h","4h","24h"],r=e,o={};for(let n of s){let l=r[`buys${n}`],i=r[`sells${n}`],c=r[`buyers${n}`],S=r[`sellers${n}`],U=r[`buyVolumeInUsd${n}`],C=r[`sellVolumeInUsd${n}`],O=r[`trades${n}`],B=r[`price${n}`],y=r[`openInUsd${n}`],P=r[`closeInUsd${n}`];if(!(l!==void 0||i!==void 0||O!==void 0||B!==void 0))continue;let me=O??(l!==void 0&&i!==void 0?l+i:void 0),Te=c!==void 0&&S!==void 0?c+S:void 0,ke=U!==void 0&&C!==void 0?new utils.SafeBigNumber(U).plus(C).toString():void 0,be=y&&P&&new utils.SafeBigNumber(y).gt(0)?new utils.SafeBigNumber(P).minus(y).div(y).toString():void 0;o[n]={buys:l,sells:i,trades:me,buyers:c,sellers:S,traders:Te,buyVolumesInUsd:U,sellVolumesInUsd:C,volumesInUsd:ke,openPriceInUsd:y,closePriceInUsd:P,priceInUsd:B??P,priceChange:be};}return o}function Ce(e){return {priceInUsd:e.price}}function W(e,s){return {chain:e,address:s.address,stats:Ue(s),marketData:Ce(s)}}function x(e,s,r){return {chain:e,address:s,marketData:{totalSupply:r.supply,marketCapInUsd:r.marketCapInUsd}}}function D(e,s,r){return {chain:e,address:s,marketData:ve(r)}}function p(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,s){return {chain:e,address:s.tokenAddress??"",migrateProgress:s.progressRatio?new utils.SafeBigNumber(s.progressRatio).shiftedBy(2).toString():void 0}}function le(e,s,r){return {chain:e,address:s,liquidities:[{poolAddress:r.poolAddress,tvlInUsd:r.liquidityInUsd,tvl:r.liquidityInNative}]}}function ce(e,s,r){return {chain:e,address:s,marketData:{tvlInUsd:r.liquidityInUsd,tvl:r.liquidityInNative}}}function ve(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 N(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 F(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 ue=class{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(d(s),r);return T(o)}async getTokens(s,r){return (await this._client.token.getTokens(d(s),{tokenAddresses:r.join(",")})).map(T)}async getTokenCandles(s,r,o,n){return (await this._client.token.getCandles(d(s),r,{resolution:v(o),from:n?.after?.getTime(),to:n?.before?.getTime(),limit:n?.limit})).map(i=>G(i,o))}async getTokenSecurity(s,r){let o=await this._client.token.getSecurity(d(s),r);return $(o)}async getTokenStats(s,r){let o=await this._client.token.getStats(d(s),r);return w(o)}async getTokenHolders(s,r,o){let n=await this._client.token.getHolders(d(s),r,{cursor:o?.cursor,limit:o?.limit,direction:o?.direction});return J(n)}async getTokenMarketData(s,r){let o=await this._client.token.getMarketData(d(s),r);return H(o)}async getNewTokens(s,r){return (await this._client.ranking.getNewTokens(d(s),this._buildRankingParams(r))).map(T)}async getFinalStretchTokens(s,r){return (await this._client.ranking.getFinalStretchTokens(d(s),this._buildRankingParams(r))).map(T)}async getMigratedTokens(s,r){return (await this._client.ranking.getMigratedTokens(d(s),this._buildRankingParams(r))).map(T)}async getTrendingTokens(s,r,o){return (await this._client.ranking.getHotTokens(d(s),r,this._buildRankingParams(o))).map(T)}async getStockTokens(s,r){return (await this._client.ranking.getStocksTokens(d(s),this._buildRankingParams(r))).map(T)}async searchTokens(s){let r=await this._client.token.search({chains:s?.chains?.map(d),q:s?.keyword,limit:s?.limit,cursor:s?.cursor,sortBy:s?.sortBy?E(s.sortBy):void 0,sort:s?.sortDirection});return Q(r)}async swapRoute(s){let r=await this._client.dex.route(d(s.chain),j(s));return X(r)}async sendTx(s){let r=await this._client.transaction.send(d(s.chain),K(s));return Y(r)}async checkTxSuccess(s,r,o){let{result:n}=await this._client.waitForJob(r,o);return n.success}async getWalletPortfolios(s,r,o){let n=await this._client.wallet.getNetWorth(d(s),r,{cursor:o?.cursor,limit:o?.limit??100});return Z(s,n)}async getWalletPnl(s,r,o){let n=await this._client.wallet.getPnl(d(s),r,o?{resolution:o}:void 0);return ee(s,r,n)}async getWalletPortfolioPnls(s,r,o){let n=await this._client.wallet.getPnlDetails(d(s),r,{cursor:o?.cursor,limit:o?.limit??100});return se(s,r,n)}async getWalletPortfoliosByTokens(s,r,o){let n=await this._client.wallet.getNetWorthByTokens(d(s),r,{tokenAddresses:o.join(",")});return re(s,n)}async getWalletPortfolioPnlsByTokens(s,r,o){let n=await this._client.wallet.getPnlByToken(d(s),r,{tokenAddresses:o.join(",")});return oe(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=d(s),l=[this._client.stream.subscribeTokenStats({chain:n,tokenAddress:r,callback:i=>o([W(s,i)])}),this._client.stream.subscribeTokenSupply({chain:n,tokenAddress:r,callback:i=>o([x(s,r,i)])}),this._client.stream.subscribeTokenHolders({chain:n,tokenAddress:r,callback:i=>o([D(s,r,i)])}),this._client.stream.subscribeTokenLiquidity({chain:n,tokenAddress:r,callback:i=>o([p(s,r,i)])}),this._client.stream.subscribeTokenMaxLiquidity({chain:n,tokenAddress:r,callback:i=>o([le(s,r,i)])}),this._client.stream.subscribeTokenTotalLiquidity({chain:n,tokenAddress:r,callback:i=>o([ce(s,r,i)])})];return {unsubscribe:()=>l.forEach(i=>i.unsubscribe())}}subscribeTokenCandles(s,r,o,n){return this._client.stream.subscribeTokenCandles({chain:d(s),tokenAddress:r,resolution:v(o),callback:l=>n([de(l)])})}subscribeWalletPnl(s,r,o){return this._client.stream.subscribeWalletPnlList({chain:d(s),walletAddress:r,callback:n=>o(n.map(l=>({chain:s,address:l.walletAddress,buys:l.buys,buyAmountInUsd:l.buyAmountInUsd,sells:l.sells,sellAmountInUsd:l.sellAmountInUsd,wins:l.wins,winRate:l.winRatio,totalProfitInUsd:l.pnlInUsd,totalProfitRatio:l.pnlRatio,avgProfitPerTradeInUsd:l.averagePnlInUsd,tokens:l.tokens,resolution:l.resolution})))})}subscribeWalletPortfolios(s,r,o){return this._client.stream.subscribeWalletBalance({chain:d(s),walletAddress:r,callback:n=>o(n.map(l=>({chain:s,walletAddress:l.walletAddress,tokenAddress:l.tokenAddress,priceInUsd:l.tokenPriceInUsd,amount:l.balance})))})}subscribeWalletPortfolioPnls(s,r,o){return this._client.stream.subscribeWalletPnl({chain:d(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:d(s),walletAddress:r,callback:n=>o([N(s,n)])})}subscribeTokenTrades(s,r,o){return this._client.stream.subscribeTokenTrade({chain:d(s),tokenAddress:r,callback:n=>o([N(s,n)])})}subscribeWalletActivities(s,r,o){return this._client.stream.subscribeWalletTrade({chain:d(s),walletAddress:r,callback:n=>o([F(s,n)])})}subscribeTokenActivities(s,r,o){return this._client.stream.subscribeTokenTrade({chain:d(s),tokenAddress:r,callback:n=>o([F(s,n)])})}subscribeNewTokens(s,r){let o=d(s),n=this._subscribeRankingTokens(s,sdk.WsChannelType.New,r),l=[this._client.stream.subscribeNewToken({chain:o,callback:i=>r([ae(s,i)])}),this._client.stream.subscribeNewTokensMetadata({chain:o,callback:i=>r(i.map(c=>ie(s,c)))}),this._client.stream.subscribeRankingTokensBondingCurve({chain:o,callback:i=>r(i.map(c=>_(s,c)))})];return {unsubscribe:()=>{n.unsubscribe(),l.forEach(i=>i.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=d(s),n=this._subscribeRankingTokens(s,sdk.WsChannelType.FINAL_STRETCH,r),l=this._client.stream.subscribeRankingTokensBondingCurve({chain:o,callback:i=>r(i.map(c=>_(s,c)))});return {unsubscribe:()=>{n.unsubscribe(),l.unsubscribe();}}}subscribeStockTokens(s,r){return this._subscribeRankingTokens(s,sdk.WsChannelType.US_STOCKS,r)}_buildRankingParams(s){return {sortBy:s?.sortBy?R(s.sortBy):void 0,sortDirection:s?.sortDirection?s.sortDirection:void 0,rangeFilters:s?.filters?q(s.filters):void 0,launchpadPlatform:s?.filters?we(s.filters):void 0,searchKeywords:s?.keywords,excludeKeywords:s?.excludeKeywords}}async _getTrades(s,r,o){let n=await this._client.trade.getTrades(d(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 ne(n)}async _getActivities(s,r,o){let n=await this._client.trade.getActivities(d(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 te(n)}_subscribeRankingTokens(s,r,o){let n=d(s),l=[this._client.stream.subscribeRankingTokensStats({chain:n,channelType:r,callback:i=>o(i.map(c=>W(s,c)))}),this._client.stream.subscribeRankingTokensHolders({chain:n,channelType:r,callback:i=>o(i.map(c=>D(s,c.tokenAddress,c)))}),this._client.stream.subscribeRankingTokensSupply({chain:n,channelType:r,callback:i=>o(i.map(c=>x(s,c.tokenAddress,c)))}),this._client.stream.subscribeRankingTokensLiquidity({chain:n,channelType:r,callback:i=>o(i.map(c=>p(s,c.tokenAddress,c)))})];return {unsubscribe:()=>l.forEach(i=>i.unsubscribe())}}};function we(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=ue;exports.fromActivityPage=te;exports.fromChainDTO=I;exports.fromPnlDetailItems=oe;exports.fromPnlDetailsPage=se;exports.fromSendTxResult=Y;exports.fromSwapRoute=X;exports.fromTokenCandle=G;exports.fromTokenCreatorDTO=ye;exports.fromTokenDTO=T;exports.fromTokenHolderPage=J;exports.fromTokenLiquidityDTO=Rs;exports.fromTokenMarketDataDTO=H;exports.fromTokenMetadataSubscribed=ie;exports.fromTokenPage=Q;exports.fromTokenSecurity=$;exports.fromTokenStatsDTO=w;exports.fromTokenSubscribed=ae;exports.fromTradePage=ne;exports.fromWalletNetWorthByTokens=re;exports.fromWalletPnlSummary=ee;exports.fromWalletPortfolios=Z;exports.fromWsActivity=F;exports.fromWsCandle=de;exports.fromWsTokenBondingCurveToSubscribed=_;exports.fromWsTokenDataSubscribed=W;exports.fromWsTokenHolderToSubscribed=D;exports.fromWsTokenLiquidityToSubscribed=p;exports.fromWsTokenMarketDataFromHolder=ve;exports.fromWsTokenMarketDataFromStats=Ce;exports.fromWsTokenMaxLiquidityToSubscribed=le;exports.fromWsTokenStats=Ue;exports.fromWsTokenSupplyToSubscribed=x;exports.fromWsTokenTotalLiquidityToSubscribed=ce;exports.fromWsTradeActivity=N;exports.toChainDTO=d;exports.toFieldDTO=R;exports.toRangeFiltersDTO=q;exports.toResolutionDTO=v;exports.toSearchFieldDTO=E;exports.toSendTxInput=K;exports.toSortDirectionDTO=he;exports.toSwapRouteInput=j;exports.version=fe;//# 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.67");var fe="0.1.67";function t(e){return e??void 0}function d(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 R(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 V(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 w(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 q(e){return e.filter(s=>["gt","gte","lt","lte","between"].indexOf(s.operator)>=0).map(s=>{let r={field:w(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 I(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 he(e){return {address:e.address??void 0,share:e.share??void 0,isVerified:e.isVerified??void 0}}function T(e){return {chain:I(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(he),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?H(e.stats):void 0,marketData:e.marketData?W(e.marketData):void 0,createdAt:e.tokenCreatedAt?new Date(e.tokenCreatedAt):void 0}}function H(e){return {"1m":f(e,"1m"),"5m":f(e,"5m"),"15m":f(e,"15m"),"30m":f(e,"30m"),"1h":f(e,"1h"),"4h":f(e,"4h"),"24h":f(e,"24h")}}function g(e){return e===void 0?void 0:parseInt(e)}function f(e,s){let r=e.periods?.[s];return r?{buys:g(r.buys),sells:g(r.sells),trades:g(r.trades),buyers:g(r.buyers),sellers:g(r.sellers),traders:g(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 W(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 G(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 Ie(e){return e==="1d"?"24h":e}function $(e){return {hasTransferFee:e.hasTransferFee,isTransferFeeUpgradable:e.isTransferFeeUpgradable,isTransferable:e.isTransferable,isFreezable:e.isFreezable,isClosable:e.isClosable}}var Ae=new Set([types.Chain.SOLANA,types.Chain.SOLANA_TESTNET,types.Chain.SOLANA_DEVNET]),Pe="0x0000000000000000000000000000000000000000",Se="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";function Ue(e){return e===utils.SOLANA_TOKENS.native.address?utils.SOLANA_TOKENS.wrapped.address:e}function Ce(e){return e.toLowerCase()===Pe.toLowerCase()?Se:e}function ve(e){return e.dex?e.dex:Ae.has(e.chain)?"jupiter":"kyberswap"}function v(e,s){return e==="jupiter"?Ue(s):e==="kyberswap"?Ce(s):s}function ps(e,s){return v(e,s)}function j(e){let s=ve(e),r=v(s,e.input),o=v(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 K(e){return {signedTx:e.serializedTx}}function J(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 Y(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 Q(e){return {serializedTx:e.serializedTx,plans:[],extra:e.routeInfo}}function X(e){return {txHash:e.signature,extra:{jobId:e.jobId,elapsedTime:e.elapsedTime}}}function Z(e,s){let r=(s.data??[]).map(o=>({chain:I(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 ee(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 se(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 re(e,s){return (s.data??[]).map(r=>({chain:I(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 oe(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 ne(e){return {startCursor:t(e.startCursor),endCursor:t(e.endCursor),hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(Re)}}function Re(e){let s=e.type.toLowerCase()==="buy";return {chain:I(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 te(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:I(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 ae(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 ie(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 de(e){return {open:e.open,close:e.close,high:e.high,low:e.low,volume:e.volume,resolution:Ie(e.resolution),timestamp:new Date(e.time)}}function He(e){let s=["1m","5m","15m","30m","1h","4h","24h"],r=e,o={};for(let n of s){let l=r[`buys${n}`],i=r[`sells${n}`],c=r[`buyers${n}`],S=r[`sellers${n}`],U=r[`buyVolumeInUsd${n}`],C=r[`sellVolumeInUsd${n}`],L=r[`trades${n}`],B=r[`price${n}`],h=r[`openInUsd${n}`],P=r[`closeInUsd${n}`];if(!(l!==void 0||i!==void 0||L!==void 0||B!==void 0))continue;let me=L??(l!==void 0&&i!==void 0?l+i:void 0),Te=c!==void 0&&S!==void 0?c+S:void 0,ke=U!==void 0&&C!==void 0?new utils.SafeBigNumber(U).plus(C).toString():void 0,be=h&&P&&new utils.SafeBigNumber(h).gt(0)?new utils.SafeBigNumber(P).minus(h).div(h).toString():void 0;o[n]={buys:l,sells:i,trades:me,buyers:c,sellers:S,traders:Te,buyVolumesInUsd:U,sellVolumesInUsd:C,volumesInUsd:ke,openPriceInUsd:h,closePriceInUsd:P,priceInUsd:B??P,priceChange:be};}return o}function We(e){return {priceInUsd:e.price}}function x(e,s){return {chain:e,address:s.address,stats:He(s),marketData:We(s)}}function D(e,s,r){return {chain:e,address:s,marketData:{totalSupply:r.supply,marketCapInUsd:r.marketCapInUsd}}}function p(e,s,r){return {chain:e,address:s,marketData:xe(r)}}function _(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 N(e,s){return {chain:e,address:s.tokenAddress??"",migrateProgress:s.progressRatio?new utils.SafeBigNumber(s.progressRatio).shiftedBy(2).toString():void 0}}function le(e,s,r){return {chain:e,address:s,liquidities:[{poolAddress:r.poolAddress,tvlInUsd:r.liquidityInUsd,tvl:r.liquidityInNative}]}}function ce(e,s,r){return {chain:e,address:s,marketData:{tvlInUsd:r.liquidityInUsd,tvl:r.liquidityInNative}}}function xe(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 F(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 O(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 ue=class{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(d(s),r);return T(o)}async getTokens(s,r){return (await this._client.token.getTokens(d(s),{tokenAddresses:r.join(",")})).map(T)}async getTokenCandles(s,r,o,n){return (await this._client.token.getCandles(d(s),r,{resolution:R(o),from:n?.after?.getTime(),to:n?.before?.getTime(),limit:n?.limit})).map(i=>G(i,o))}async getTokenSecurity(s,r){let o=await this._client.token.getSecurity(d(s),r);return $(o)}async getTokenStats(s,r){let o=await this._client.token.getStats(d(s),r);return H(o)}async getTokenHolders(s,r,o){let n=await this._client.token.getHolders(d(s),r,{cursor:o?.cursor,limit:o?.limit,direction:o?.direction});return J(n)}async getTokenMarketData(s,r){let o=await this._client.token.getMarketData(d(s),r);return W(o)}async getNewTokens(s,r){return (await this._client.ranking.getNewTokens(d(s),this._buildRankingParams(r))).map(T)}async getFinalStretchTokens(s,r){return (await this._client.ranking.getFinalStretchTokens(d(s),this._buildRankingParams(r))).map(T)}async getMigratedTokens(s,r){return (await this._client.ranking.getMigratedTokens(d(s),this._buildRankingParams(r))).map(T)}async getTrendingTokens(s,r,o){return (await this._client.ranking.getHotTokens(d(s),r,this._buildRankingParams(o))).map(T)}async getStockTokens(s,r){return (await this._client.ranking.getStocksTokens(d(s),this._buildRankingParams(r))).map(T)}async searchTokens(s){let r=await this._client.token.search({chains:s?.chains?.map(d),q:s?.keyword,limit:s?.limit,cursor:s?.cursor,sortBy:s?.sortBy?V(s.sortBy):void 0,sort:s?.sortDirection});return Y(r)}async swapRoute(s){let r=await this._client.dex.route(d(s.chain),j(s));return Q(r)}async sendTx(s){let r=await this._client.transaction.send(d(s.chain),K(s));return X(r)}async checkTxSuccess(s,r,o){let{result:n}=await this._client.waitForJob(r,o);return n.success}async getWalletPortfolios(s,r,o){let n=await this._client.wallet.getNetWorth(d(s),r,{cursor:o?.cursor,limit:o?.limit??100});return Z(s,n)}async getWalletPnl(s,r,o){let n=await this._client.wallet.getPnl(d(s),r,o?{resolution:o}:void 0);return ee(s,r,n)}async getWalletPortfolioPnls(s,r,o){let n=await this._client.wallet.getPnlDetails(d(s),r,{cursor:o?.cursor,limit:o?.limit??100});return se(s,r,n)}async getWalletPortfoliosByTokens(s,r,o){let n=await this._client.wallet.getNetWorthByTokens(d(s),r,{tokenAddresses:o.join(",")});return re(s,n)}async getWalletPortfolioPnlsByTokens(s,r,o){let n=await this._client.wallet.getPnlByToken(d(s),r,{tokenAddresses:o.join(",")});return oe(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=d(s),l=[this._client.stream.subscribeTokenStats({chain:n,tokenAddress:r,callback:i=>o([x(s,i)])}),this._client.stream.subscribeTokenSupply({chain:n,tokenAddress:r,callback:i=>o([D(s,r,i)])}),this._client.stream.subscribeTokenHolders({chain:n,tokenAddress:r,callback:i=>o([p(s,r,i)])}),this._client.stream.subscribeTokenLiquidity({chain:n,tokenAddress:r,callback:i=>o([_(s,r,i)])}),this._client.stream.subscribeTokenMaxLiquidity({chain:n,tokenAddress:r,callback:i=>o([le(s,r,i)])}),this._client.stream.subscribeTokenTotalLiquidity({chain:n,tokenAddress:r,callback:i=>o([ce(s,r,i)])})];return {unsubscribe:()=>l.forEach(i=>i.unsubscribe())}}subscribeTokenCandles(s,r,o,n){return this._client.stream.subscribeTokenCandles({chain:d(s),tokenAddress:r,resolution:R(o),callback:l=>n([de(l)])})}subscribeWalletPnl(s,r,o){return this._client.stream.subscribeWalletPnlList({chain:d(s),walletAddress:r,callback:n=>o(n.map(l=>({chain:s,address:l.walletAddress,buys:l.buys,buyAmountInUsd:l.buyAmountInUsd,sells:l.sells,sellAmountInUsd:l.sellAmountInUsd,wins:l.wins,winRate:l.winRatio,totalProfitInUsd:l.pnlInUsd,totalProfitRatio:l.pnlRatio,avgProfitPerTradeInUsd:l.averagePnlInUsd,tokens:l.tokens,resolution:l.resolution})))})}subscribeWalletPortfolios(s,r,o){return this._client.stream.subscribeWalletBalance({chain:d(s),walletAddress:r,callback:n=>o(n.map(l=>({chain:s,walletAddress:l.walletAddress,tokenAddress:l.tokenAddress,priceInUsd:l.tokenPriceInUsd,amount:l.balance})))})}subscribeWalletPortfolioPnls(s,r,o){return this._client.stream.subscribeWalletPnl({chain:d(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:d(s),walletAddress:r,callback:n=>o([F(s,n)])})}subscribeTokenTrades(s,r,o){return this._client.stream.subscribeTokenTrade({chain:d(s),tokenAddress:r,callback:n=>o([F(s,n)])})}subscribeWalletActivities(s,r,o){return this._client.stream.subscribeWalletTrade({chain:d(s),walletAddress:r,callback:n=>o([O(s,n)])})}subscribeTokenActivities(s,r,o){return this._client.stream.subscribeTokenTrade({chain:d(s),tokenAddress:r,callback:n=>o([O(s,n)])})}subscribeNewTokens(s,r){let o=d(s),n=this._subscribeRankingTokens(s,sdk.WsChannelType.New,r),l=[this._client.stream.subscribeNewToken({chain:o,callback:i=>r([ae(s,i)])}),this._client.stream.subscribeNewTokensMetadata({chain:o,callback:i=>r(i.map(c=>ie(s,c)))}),this._client.stream.subscribeRankingTokensBondingCurve({chain:o,callback:i=>r(i.map(c=>N(s,c)))})];return {unsubscribe:()=>{n.unsubscribe(),l.forEach(i=>i.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=d(s),n=this._subscribeRankingTokens(s,sdk.WsChannelType.FINAL_STRETCH,r),l=this._client.stream.subscribeRankingTokensBondingCurve({chain:o,callback:i=>r(i.map(c=>N(s,c)))});return {unsubscribe:()=>{n.unsubscribe(),l.unsubscribe();}}}subscribeStockTokens(s,r){return this._subscribeRankingTokens(s,sdk.WsChannelType.US_STOCKS,r)}_buildRankingParams(s){return {sortBy:s?.sortBy?w(s.sortBy):void 0,sortDirection:s?.sortDirection?s.sortDirection:void 0,rangeFilters:s?.filters?q(s.filters):void 0,launchpadPlatform:s?.filters?pe(s.filters):void 0,searchKeywords:s?.keywords,excludeKeywords:s?.excludeKeywords}}async _getTrades(s,r,o){let n=await this._client.trade.getTrades(d(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 ne(n)}async _getActivities(s,r,o){let n=await this._client.trade.getActivities(d(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 te(n)}_subscribeRankingTokens(s,r,o){let n=d(s),l=[this._client.stream.subscribeRankingTokensStats({chain:n,channelType:r,callback:i=>o(i.map(c=>x(s,c)))}),this._client.stream.subscribeRankingTokensHolders({chain:n,channelType:r,callback:i=>o(i.map(c=>p(s,c.tokenAddress,c)))}),this._client.stream.subscribeRankingTokensSupply({chain:n,channelType:r,callback:i=>o(i.map(c=>D(s,c.tokenAddress,c)))}),this._client.stream.subscribeRankingTokensLiquidity({chain:n,channelType:r,callback:i=>o(i.map(c=>_(s,c.tokenAddress,c)))})];return {unsubscribe:()=>l.forEach(i=>i.unsubscribe())}}};function pe(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=ue;exports.KYBERSWAP_NATIVE_SENTINEL=Se;exports.fromActivityPage=te;exports.fromChainDTO=I;exports.fromPnlDetailItems=oe;exports.fromPnlDetailsPage=se;exports.fromSendTxResult=X;exports.fromSwapRoute=Q;exports.fromTokenCandle=G;exports.fromTokenCreatorDTO=he;exports.fromTokenDTO=T;exports.fromTokenHolderPage=J;exports.fromTokenLiquidityDTO=Ds;exports.fromTokenMarketDataDTO=W;exports.fromTokenMetadataSubscribed=ie;exports.fromTokenPage=Y;exports.fromTokenSecurity=$;exports.fromTokenStatsDTO=H;exports.fromTokenSubscribed=ae;exports.fromTradePage=ne;exports.fromWalletNetWorthByTokens=re;exports.fromWalletPnlSummary=ee;exports.fromWalletPortfolios=Z;exports.fromWsActivity=O;exports.fromWsCandle=de;exports.fromWsTokenBondingCurveToSubscribed=N;exports.fromWsTokenDataSubscribed=x;exports.fromWsTokenHolderToSubscribed=p;exports.fromWsTokenLiquidityToSubscribed=_;exports.fromWsTokenMarketDataFromHolder=xe;exports.fromWsTokenMarketDataFromStats=We;exports.fromWsTokenMaxLiquidityToSubscribed=le;exports.fromWsTokenStats=He;exports.fromWsTokenSupplyToSubscribed=D;exports.fromWsTokenTotalLiquidityToSubscribed=ce;exports.fromWsTradeActivity=F;exports.toChainDTO=d;exports.toFieldDTO=w;exports.toMintForRoute=ps;exports.toRangeFiltersDTO=q;exports.toResolutionDTO=R;exports.toSearchFieldDTO=V;exports.toSendTxInput=K;exports.toSortDirectionDTO=ye;exports.toSwapRouteInput=j;exports.version=fe;//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map