@liberfi.io/client 0.1.36 → 0.1.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,189 @@
1
+ # @liberfi.io/client
2
+
3
+ DEX API client for the Liberfi React SDK. This package wraps `@chainstream-io/sdk` and exposes a clean, domain-typed API that conforms to the `IClient` and `ISubscribeClient` interfaces defined in `@liberfi.io/types`. It handles all DTO conversion between the upstream SDK and the Liberfi domain types, so consumers never interact with raw SDK types.
4
+
5
+ ## Design Philosophy
6
+
7
+ - **Adapter pattern** — `Client` wraps `ChainStreamClient` and translates between upstream DTOs and Liberfi domain types, keeping consumers decoupled from the backend SDK.
8
+ - **Centralized DTO conversion** — All mapping functions live in `utils.ts`, separating data transformation from client orchestration.
9
+ - **Interface conformance** — `Client implements API.IClient, API.ISubscribeClient` ensures compile-time contract enforcement.
10
+ - **Composite subscriptions** — WebSocket methods compose multiple backend channels into a single `ISubscription` with a unified `unsubscribe()`.
11
+
12
+ ## Installation
13
+
14
+ ```bash
15
+ pnpm add @liberfi.io/client
16
+ ```
17
+
18
+ This package depends on:
19
+
20
+ - `@chainstream-io/sdk` (bundled)
21
+ - `@liberfi.io/types` (workspace)
22
+ - `@liberfi.io/utils` (workspace)
23
+
24
+ ## API Reference
25
+
26
+ ### Classes
27
+
28
+ #### `Client`
29
+
30
+ Main API client implementing both `API.IClient` (REST) and `API.ISubscribeClient` (WebSocket).
31
+
32
+ ```typescript
33
+ import { Client } from "@liberfi.io/client";
34
+
35
+ const client = new Client("your-access-token", {
36
+ serverUrl: "https://api.example.com",
37
+ debug: true,
38
+ });
39
+ ```
40
+
41
+ **Constructor:**
42
+
43
+ | Parameter | Type | Description |
44
+ | ------------- | --------------------- | ---------------------------------------------------------- |
45
+ | `accessToken` | `ClientTokenProvider` | Static token string or an object with `getToken()` method. |
46
+ | `options?` | `ClientOptions` | Optional configuration. |
47
+
48
+ **REST Methods (IClient):**
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. |
78
+
79
+ **WebSocket Methods (ISubscribeClient):**
80
+
81
+ | Method | Callback Data | Description |
82
+ | ------------------------------ | -------------------------- | ---------------------------------------------------- |
83
+ | `subscribeToken` | `TokenSubscribed[]` | Real-time token updates (stats, holders, liquidity). |
84
+ | `subscribeTokenCandles` | `TokenCandle[]` | Real-time candle updates. |
85
+ | `subscribeWalletPnl` | `WalletPnlSubscribed[]` | Real-time wallet PnL changes. |
86
+ | `subscribeWalletPortfolios` | `PortfolioSubscribed[]` | Real-time portfolio balance changes. |
87
+ | `subscribeWalletPortfolioPnls` | `PortfolioPnlSubscribed[]` | Real-time per-token PnL changes. |
88
+ | `subscribeWalletTrades` | `Trade[]` | Real-time wallet trades. |
89
+ | `subscribeTokenTrades` | `Trade[]` | Real-time token trades. |
90
+ | `subscribeWalletActivities` | `Activity[]` | Real-time wallet activities. |
91
+ | `subscribeTokenActivities` | `Activity[]` | Real-time token activities. |
92
+ | `subscribeNewTokens` | `TokenSubscribed[]` | Real-time new token listings. |
93
+ | `subscribeTrendingTokens` | `TokenSubscribed[]` | Real-time trending token updates. |
94
+ | `subscribeMigratedTokens` | `TokenSubscribed[]` | Real-time migrated token updates. |
95
+ | `subscribeFinalStretchTokens` | `TokenSubscribed[]` | Real-time final-stretch token updates. |
96
+ | `subscribeStockTokens` | `TokenSubscribed[]` | Real-time stock token updates. |
97
+
98
+ ### Types
99
+
100
+ | Name | Definition | Description |
101
+ | ----------------------- | ----------------------------------------------------------- | ---------------------------------------------------------- |
102
+ | `ClientTokenProvider` | `ClientTokenProviderFn \| string` | Access token: a raw string or an object with `getToken()`. |
103
+ | `ClientTokenProviderFn` | `{ getToken(): Promise<string> \| string }` | Async/sync token provider interface. |
104
+ | `ClientOptions` | `{ debug?, serverUrl?, streamUrl?, autoConnectWebSocket? }` | Client configuration. |
105
+
106
+ ### Constants
107
+
108
+ | Name | Type | Description |
109
+ | --------- | -------- | ------------------------------------- |
110
+ | `version` | `string` | Current package version (`"0.1.37"`). |
111
+
112
+ ### Utility Functions
113
+
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
+
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
+
126
+ See `src/utils.ts` for the full list of conversion functions.
127
+
128
+ ## Usage Examples
129
+
130
+ ### Basic usage
131
+
132
+ ```typescript
133
+ import { Client } from "@liberfi.io/client";
134
+ import { Chain } from "@liberfi.io/types";
135
+
136
+ const client = new Client("your-api-token");
137
+
138
+ // Fetch a token
139
+ const token = await client.getToken(
140
+ Chain.SOLANA,
141
+ "So11111111111111111111111111111111111111112",
142
+ );
143
+ console.log(token.name, token.marketData?.priceInUsd);
144
+
145
+ // Search tokens
146
+ const results = await client.searchTokens({
147
+ chains: [Chain.SOLANA],
148
+ keyword: "bonk",
149
+ limit: 10,
150
+ });
151
+ ```
152
+
153
+ ### WebSocket subscription
154
+
155
+ ```typescript
156
+ const subscription = client.subscribeToken(
157
+ Chain.SOLANA,
158
+ "So11111111111111111111111111111111111111112",
159
+ (updates) => {
160
+ for (const update of updates) {
161
+ console.log("Price:", update.marketData?.priceInUsd);
162
+ }
163
+ },
164
+ );
165
+
166
+ // Later: unsubscribe
167
+ subscription.unsubscribe();
168
+ ```
169
+
170
+ ### Async token provider
171
+
172
+ ```typescript
173
+ const client = new Client({
174
+ getToken: async () => {
175
+ const response = await fetch("/api/auth/token");
176
+ const { accessToken } = await response.json();
177
+ return accessToken;
178
+ },
179
+ });
180
+ ```
181
+
182
+ ## Future Improvements
183
+
184
+ - Narrow the public API surface — only export `Client`, types, and `version`; keep DTO converters internal.
185
+ - Replace `console.warn` in `parseLaunchPlatformFromFilters` with a debug-gated log or thrown error.
186
+ - Add explicit `ClientOptions` to `ChainStreamClient` option mapping in the constructor.
187
+ - Deduplicate `fromTradeDetailDTO` / `fromActivityDetailDTO` logic.
188
+ - Add runtime validation in `fromTokenSecurity` instead of `as` casts.
189
+ - Consolidate `version.ts` global side effect into a shared utility.
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import { ChainStreamClientOptions, TokenProvider, ChainSymbol, Resolution, FilterCondition, TokenCreatorsDTO, Token as Token$1, TokenStat, DexPoolDTO, TokenMarketData as TokenMarketData$1, Candle, SwapRouteInput, SendTxInput, TokenHolderPage, TokenPage, SwapRouteResponse, SendTxResponse, WalletNetWorthPage, WalletPnlSummaryDTO, PnlDetailsPage, WalletNetWorthByTokensResult, TradePage, WsNewToken, WsTokenMetadata, WsCandle, WsTokenStat, WsTokenSupply, WsTokenHolder, WsTokenLiquidity, WsTokenBondingCurve, WsTokenMaxLiquidity, WsTokenTotalLiquidity, WsTradeActivity } from '@chainstream-io/sdk';
2
- import { API, Chain, Token, TokenResolution, TokenCandle, TokenSecurity, TokenStats, TokenHolder, TokenMarketData, WalletPortfolios, WalletPnl, WalletPortfolioPnls, Portfolio, PortfolioPnl, TradeActivity, TokenCreator, TokenLiquidity } from '@liberfi.io/types';
1
+ import { API, Chain, Token, TokenResolution, TokenCandle, TokenSecurity, TokenStats, TokenHolder, TokenMarketData, WalletPortfolios, WalletPnl, WalletPortfolioPnls, Portfolio, PortfolioPnl, Trade, Activity, TokenCreator, TokenLiquidity } from '@liberfi.io/types';
2
+ import { ChainSymbol, Resolution, FilterCondition, TokenCreatorsDTO, Token as Token$1, TokenStat, DexPoolDTO, TokenMarketData as TokenMarketData$1, Candle, SwapRouteInput, SendTxInput, TokenHolderPage, TokenPage, SwapRouteResponse, SendTxResponse, WalletNetWorthPage, WalletPnlSummaryDTO, PnlDetailsPage, WalletNetWorthByTokensResult, TradePage, 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,10 +8,19 @@ declare global {
8
8
  };
9
9
  }
10
10
  }
11
- declare const _default: "0.1.36";
11
+ declare const _default: "0.1.38";
12
12
 
13
- type ClientOptions = ChainStreamClientOptions;
14
- type ClientTokenProvider = TokenProvider | string;
13
+ /** Async or sync token provider for authentication. */
14
+ interface ClientTokenProviderFn {
15
+ getToken(): Promise<string> | string;
16
+ }
17
+ type ClientTokenProvider = ClientTokenProviderFn | string;
18
+ interface ClientOptions {
19
+ debug?: boolean;
20
+ serverUrl?: string;
21
+ streamUrl?: string;
22
+ autoConnectWebSocket?: boolean;
23
+ }
15
24
  declare class Client implements API.IClient, API.ISubscribeClient {
16
25
  private readonly accessToken;
17
26
  private readonly options?;
@@ -44,21 +53,28 @@ declare class Client implements API.IClient, API.ISubscribeClient {
44
53
  }): Promise<WalletPortfolioPnls>;
45
54
  getWalletPortfoliosByTokens(chain: Chain, address: string, tokenAddresses: Array<string>): Promise<Array<Portfolio>>;
46
55
  getWalletPortfolioPnlsByTokens(chain: Chain, address: string, tokenAddresses: Array<string>): Promise<Array<PortfolioPnl>>;
47
- getWalletTradeActivities(chain: Chain, address: string, options?: API.GetTradeActivitiesOptions): Promise<API.CursorList<TradeActivity>>;
48
- getTokenTradeActivities(chain: Chain, address: string, options?: API.GetTradeActivitiesOptions): Promise<API.CursorList<TradeActivity>>;
56
+ getWalletTrades(chain: Chain, address: string, options?: API.GetTradesOptions): Promise<API.CursorList<Trade>>;
57
+ getTokenTrades(chain: Chain, address: string, options?: API.GetTradesOptions): Promise<API.CursorList<Trade>>;
58
+ getWalletActivities(chain: Chain, address: string, options?: API.GetActivitiesOptions): Promise<API.CursorList<Activity>>;
59
+ getTokenActivities(chain: Chain, address: string, options?: API.GetActivitiesOptions): Promise<API.CursorList<Activity>>;
49
60
  getPresignedUploadUrl(): Promise<string>;
50
61
  subscribeToken(chain: Chain, address: string, callback: (data: Array<API.TokenSubscribed>) => void): API.ISubscription;
51
62
  subscribeTokenCandles(chain: Chain, address: string, resolution: TokenResolution, callback: (candles: Array<TokenCandle>) => void): API.ISubscription;
52
63
  subscribeWalletPnl(chain: Chain, address: string, callback: (pnls: Array<API.WalletPnlSubscribed>) => void): API.ISubscription;
53
64
  subscribeWalletPortfolios(chain: Chain, address: string, callback: (portfolios: Array<API.PortfolioSubscribed>) => void): API.ISubscription;
54
65
  subscribeWalletPortfolioPnls(chain: Chain, address: string, callback: (portfolioPnls: Array<API.PortfolioPnlSubscribed>) => void): API.ISubscription;
55
- subscribeWalletTradeActivities(chain: Chain, address: string, callback: (trades: Array<TradeActivity>) => void): API.ISubscription;
56
- subscribeTokenTradeActivities(chain: Chain, address: string, callback: (trades: Array<TradeActivity>) => void): API.ISubscription;
66
+ subscribeWalletTrades(chain: Chain, address: string, callback: (trades: Array<Trade>) => void): API.ISubscription;
67
+ subscribeTokenTrades(chain: Chain, address: string, callback: (trades: Array<Trade>) => void): API.ISubscription;
68
+ subscribeWalletActivities(chain: Chain, address: string, callback: (activities: Array<Activity>) => void): API.ISubscription;
69
+ subscribeTokenActivities(chain: Chain, address: string, callback: (activities: Array<Activity>) => void): API.ISubscription;
57
70
  subscribeNewTokens(chain: Chain, callback: (data: Array<API.TokenSubscribed>) => void): API.ISubscription;
58
71
  subscribeTrendingTokens(chain: Chain, callback: (data: Array<API.TokenSubscribed>) => void): API.ISubscription;
59
72
  subscribeMigratedTokens(chain: Chain, callback: (data: Array<API.TokenSubscribed>) => void): API.ISubscription;
60
73
  subscribeFinalStretchTokens(chain: Chain, callback: (data: Array<API.TokenSubscribed>) => void): API.ISubscription;
61
74
  subscribeStockTokens(chain: Chain, callback: (data: Array<API.TokenSubscribed>) => void): API.ISubscription;
75
+ private _buildRankingParams;
76
+ private _getTrades;
77
+ private _getActivities;
62
78
  private _subscribeRankingTokens;
63
79
  }
64
80
 
@@ -87,7 +103,8 @@ declare function fromWalletPnlSummary(chain: Chain, address: string, input: Wall
87
103
  declare function fromPnlDetailsPage(chain: Chain, address: string, input: PnlDetailsPage): WalletPortfolioPnls;
88
104
  declare function fromWalletNetWorthByTokens(chain: Chain, input: WalletNetWorthByTokensResult): Portfolio[];
89
105
  declare function fromPnlDetailItems(chain: Chain, input: PnlDetailsPage): PortfolioPnl[];
90
- declare function fromTradePage(input: TradePage): API.CursorList<TradeActivity>;
106
+ declare function fromTradePage(input: TradePage): API.CursorList<Trade>;
107
+ declare function fromActivityPage(input: TradePage): API.CursorList<Activity>;
91
108
  declare function fromTokenSubscribed(chain: Chain, input: WsNewToken): API.TokenSubscribed;
92
109
  declare function fromTokenMetadataSubscribed(chain: Chain, input: WsTokenMetadata): API.TokenSubscribed;
93
110
  declare function fromWsCandle(input: WsCandle): TokenCandle;
@@ -101,6 +118,7 @@ declare function fromWsTokenBondingCurveToSubscribed(chain: Chain, input: WsToke
101
118
  declare function fromWsTokenMaxLiquidityToSubscribed(chain: Chain, address: string, input: WsTokenMaxLiquidity): API.TokenSubscribed;
102
119
  declare function fromWsTokenTotalLiquidityToSubscribed(chain: Chain, address: string, input: WsTokenTotalLiquidity): API.TokenSubscribed;
103
120
  declare function fromWsTokenMarketDataFromHolder(input: WsTokenHolder): Partial<TokenMarketData>;
104
- declare function fromWsTradeActivity(chain: Chain, input: WsTradeActivity): TradeActivity;
121
+ declare function fromWsTradeActivity(chain: Chain, input: WsTradeActivity): Trade;
122
+ declare function fromWsActivity(chain: Chain, input: WsTradeActivity): Activity;
105
123
 
106
- export { Client, type ClientOptions, type ClientTokenProvider, fromChainDTO, fromPnlDetailItems, fromPnlDetailsPage, fromSendTxResult, fromSwapRoute, fromTokenCandle, fromTokenCreatorDTO, fromTokenDTO, fromTokenHolderPage, fromTokenLiquidityDTO, fromTokenMarketDataDTO, fromTokenMetadataSubscribed, fromTokenPage, fromTokenSecurity, fromTokenStatsDTO, fromTokenSubscribed, fromTradePage, fromWalletNetWorthByTokens, fromWalletPnlSummary, fromWalletPortfolios, fromWsCandle, fromWsTokenBondingCurveToSubscribed, fromWsTokenDataSubscribed, fromWsTokenHolderToSubscribed, fromWsTokenLiquidityToSubscribed, fromWsTokenMarketDataFromHolder, fromWsTokenMarketDataFromStats, fromWsTokenMaxLiquidityToSubscribed, fromWsTokenStats, fromWsTokenSupplyToSubscribed, fromWsTokenTotalLiquidityToSubscribed, fromWsTradeActivity, toChainDTO, toFieldDTO, toRangeFiltersDTO, toResolutionDTO, toSearchFieldDTO, toSendTxInput, toSortDirectionDTO, toSwapRouteInput, _default as version };
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 };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { ChainStreamClientOptions, TokenProvider, ChainSymbol, Resolution, FilterCondition, TokenCreatorsDTO, Token as Token$1, TokenStat, DexPoolDTO, TokenMarketData as TokenMarketData$1, Candle, SwapRouteInput, SendTxInput, TokenHolderPage, TokenPage, SwapRouteResponse, SendTxResponse, WalletNetWorthPage, WalletPnlSummaryDTO, PnlDetailsPage, WalletNetWorthByTokensResult, TradePage, WsNewToken, WsTokenMetadata, WsCandle, WsTokenStat, WsTokenSupply, WsTokenHolder, WsTokenLiquidity, WsTokenBondingCurve, WsTokenMaxLiquidity, WsTokenTotalLiquidity, WsTradeActivity } from '@chainstream-io/sdk';
2
- import { API, Chain, Token, TokenResolution, TokenCandle, TokenSecurity, TokenStats, TokenHolder, TokenMarketData, WalletPortfolios, WalletPnl, WalletPortfolioPnls, Portfolio, PortfolioPnl, TradeActivity, TokenCreator, TokenLiquidity } from '@liberfi.io/types';
1
+ import { API, Chain, Token, TokenResolution, TokenCandle, TokenSecurity, TokenStats, TokenHolder, TokenMarketData, WalletPortfolios, WalletPnl, WalletPortfolioPnls, Portfolio, PortfolioPnl, Trade, Activity, TokenCreator, TokenLiquidity } from '@liberfi.io/types';
2
+ import { ChainSymbol, Resolution, FilterCondition, TokenCreatorsDTO, Token as Token$1, TokenStat, DexPoolDTO, TokenMarketData as TokenMarketData$1, Candle, SwapRouteInput, SendTxInput, TokenHolderPage, TokenPage, SwapRouteResponse, SendTxResponse, WalletNetWorthPage, WalletPnlSummaryDTO, PnlDetailsPage, WalletNetWorthByTokensResult, TradePage, 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,10 +8,19 @@ declare global {
8
8
  };
9
9
  }
10
10
  }
11
- declare const _default: "0.1.36";
11
+ declare const _default: "0.1.38";
12
12
 
13
- type ClientOptions = ChainStreamClientOptions;
14
- type ClientTokenProvider = TokenProvider | string;
13
+ /** Async or sync token provider for authentication. */
14
+ interface ClientTokenProviderFn {
15
+ getToken(): Promise<string> | string;
16
+ }
17
+ type ClientTokenProvider = ClientTokenProviderFn | string;
18
+ interface ClientOptions {
19
+ debug?: boolean;
20
+ serverUrl?: string;
21
+ streamUrl?: string;
22
+ autoConnectWebSocket?: boolean;
23
+ }
15
24
  declare class Client implements API.IClient, API.ISubscribeClient {
16
25
  private readonly accessToken;
17
26
  private readonly options?;
@@ -44,21 +53,28 @@ declare class Client implements API.IClient, API.ISubscribeClient {
44
53
  }): Promise<WalletPortfolioPnls>;
45
54
  getWalletPortfoliosByTokens(chain: Chain, address: string, tokenAddresses: Array<string>): Promise<Array<Portfolio>>;
46
55
  getWalletPortfolioPnlsByTokens(chain: Chain, address: string, tokenAddresses: Array<string>): Promise<Array<PortfolioPnl>>;
47
- getWalletTradeActivities(chain: Chain, address: string, options?: API.GetTradeActivitiesOptions): Promise<API.CursorList<TradeActivity>>;
48
- getTokenTradeActivities(chain: Chain, address: string, options?: API.GetTradeActivitiesOptions): Promise<API.CursorList<TradeActivity>>;
56
+ getWalletTrades(chain: Chain, address: string, options?: API.GetTradesOptions): Promise<API.CursorList<Trade>>;
57
+ getTokenTrades(chain: Chain, address: string, options?: API.GetTradesOptions): Promise<API.CursorList<Trade>>;
58
+ getWalletActivities(chain: Chain, address: string, options?: API.GetActivitiesOptions): Promise<API.CursorList<Activity>>;
59
+ getTokenActivities(chain: Chain, address: string, options?: API.GetActivitiesOptions): Promise<API.CursorList<Activity>>;
49
60
  getPresignedUploadUrl(): Promise<string>;
50
61
  subscribeToken(chain: Chain, address: string, callback: (data: Array<API.TokenSubscribed>) => void): API.ISubscription;
51
62
  subscribeTokenCandles(chain: Chain, address: string, resolution: TokenResolution, callback: (candles: Array<TokenCandle>) => void): API.ISubscription;
52
63
  subscribeWalletPnl(chain: Chain, address: string, callback: (pnls: Array<API.WalletPnlSubscribed>) => void): API.ISubscription;
53
64
  subscribeWalletPortfolios(chain: Chain, address: string, callback: (portfolios: Array<API.PortfolioSubscribed>) => void): API.ISubscription;
54
65
  subscribeWalletPortfolioPnls(chain: Chain, address: string, callback: (portfolioPnls: Array<API.PortfolioPnlSubscribed>) => void): API.ISubscription;
55
- subscribeWalletTradeActivities(chain: Chain, address: string, callback: (trades: Array<TradeActivity>) => void): API.ISubscription;
56
- subscribeTokenTradeActivities(chain: Chain, address: string, callback: (trades: Array<TradeActivity>) => void): API.ISubscription;
66
+ subscribeWalletTrades(chain: Chain, address: string, callback: (trades: Array<Trade>) => void): API.ISubscription;
67
+ subscribeTokenTrades(chain: Chain, address: string, callback: (trades: Array<Trade>) => void): API.ISubscription;
68
+ subscribeWalletActivities(chain: Chain, address: string, callback: (activities: Array<Activity>) => void): API.ISubscription;
69
+ subscribeTokenActivities(chain: Chain, address: string, callback: (activities: Array<Activity>) => void): API.ISubscription;
57
70
  subscribeNewTokens(chain: Chain, callback: (data: Array<API.TokenSubscribed>) => void): API.ISubscription;
58
71
  subscribeTrendingTokens(chain: Chain, callback: (data: Array<API.TokenSubscribed>) => void): API.ISubscription;
59
72
  subscribeMigratedTokens(chain: Chain, callback: (data: Array<API.TokenSubscribed>) => void): API.ISubscription;
60
73
  subscribeFinalStretchTokens(chain: Chain, callback: (data: Array<API.TokenSubscribed>) => void): API.ISubscription;
61
74
  subscribeStockTokens(chain: Chain, callback: (data: Array<API.TokenSubscribed>) => void): API.ISubscription;
75
+ private _buildRankingParams;
76
+ private _getTrades;
77
+ private _getActivities;
62
78
  private _subscribeRankingTokens;
63
79
  }
64
80
 
@@ -87,7 +103,8 @@ declare function fromWalletPnlSummary(chain: Chain, address: string, input: Wall
87
103
  declare function fromPnlDetailsPage(chain: Chain, address: string, input: PnlDetailsPage): WalletPortfolioPnls;
88
104
  declare function fromWalletNetWorthByTokens(chain: Chain, input: WalletNetWorthByTokensResult): Portfolio[];
89
105
  declare function fromPnlDetailItems(chain: Chain, input: PnlDetailsPage): PortfolioPnl[];
90
- declare function fromTradePage(input: TradePage): API.CursorList<TradeActivity>;
106
+ declare function fromTradePage(input: TradePage): API.CursorList<Trade>;
107
+ declare function fromActivityPage(input: TradePage): API.CursorList<Activity>;
91
108
  declare function fromTokenSubscribed(chain: Chain, input: WsNewToken): API.TokenSubscribed;
92
109
  declare function fromTokenMetadataSubscribed(chain: Chain, input: WsTokenMetadata): API.TokenSubscribed;
93
110
  declare function fromWsCandle(input: WsCandle): TokenCandle;
@@ -101,6 +118,7 @@ declare function fromWsTokenBondingCurveToSubscribed(chain: Chain, input: WsToke
101
118
  declare function fromWsTokenMaxLiquidityToSubscribed(chain: Chain, address: string, input: WsTokenMaxLiquidity): API.TokenSubscribed;
102
119
  declare function fromWsTokenTotalLiquidityToSubscribed(chain: Chain, address: string, input: WsTokenTotalLiquidity): API.TokenSubscribed;
103
120
  declare function fromWsTokenMarketDataFromHolder(input: WsTokenHolder): Partial<TokenMarketData>;
104
- declare function fromWsTradeActivity(chain: Chain, input: WsTradeActivity): TradeActivity;
121
+ declare function fromWsTradeActivity(chain: Chain, input: WsTradeActivity): Trade;
122
+ declare function fromWsActivity(chain: Chain, input: WsTradeActivity): Activity;
105
123
 
106
- export { Client, type ClientOptions, type ClientTokenProvider, fromChainDTO, fromPnlDetailItems, fromPnlDetailsPage, fromSendTxResult, fromSwapRoute, fromTokenCandle, fromTokenCreatorDTO, fromTokenDTO, fromTokenHolderPage, fromTokenLiquidityDTO, fromTokenMarketDataDTO, fromTokenMetadataSubscribed, fromTokenPage, fromTokenSecurity, fromTokenStatsDTO, fromTokenSubscribed, fromTradePage, fromWalletNetWorthByTokens, fromWalletPnlSummary, fromWalletPortfolios, fromWsCandle, fromWsTokenBondingCurveToSubscribed, fromWsTokenDataSubscribed, fromWsTokenHolderToSubscribed, fromWsTokenLiquidityToSubscribed, fromWsTokenMarketDataFromHolder, fromWsTokenMarketDataFromStats, fromWsTokenMaxLiquidityToSubscribed, fromWsTokenStats, fromWsTokenSupplyToSubscribed, fromWsTokenTotalLiquidityToSubscribed, fromWsTradeActivity, toChainDTO, toFieldDTO, toRangeFiltersDTO, toResolutionDTO, toSearchFieldDTO, toSendTxInput, toSortDirectionDTO, toSwapRouteInput, _default as version };
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 };
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.36");var ke="0.1.36";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 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 y(e){switch(e){case "asc":return "ASC";case "desc":return "DESC"}}function q(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 f(e){switch(e){case "price":return sdk.GetNewTokensSortBy.marketDatapriceInUsd;case "priceChange1m":return sdk.GetNewTokensSortBy.statspriceChangeRatioInUsd1m;case "priceChange5m":return sdk.GetNewTokensSortBy.statspriceChangeRatioInUsd5m;case "priceChange1h":return sdk.GetNewTokensSortBy.statspriceChangeRatioInUsd1h;case "priceChange4h":return sdk.GetNewTokensSortBy.statspriceChangeRatioInUsd4h;case "priceChange24h":return sdk.GetNewTokensSortBy.statspriceChangeRatioInUsd24h;case "marketCap":return sdk.GetNewTokensSortBy.marketDatamarketCapInUsd;case "tvl":return sdk.GetNewTokensSortBy.marketDatamaxPoolTvlInUsd;case "top10Holdings":return sdk.GetNewTokensSortBy.marketDatatop10TotalHoldings;case "top10Ratio":return sdk.GetNewTokensSortBy.marketDatatop10HoldingsRatio;case "top100Holdings":return sdk.GetNewTokensSortBy.marketDatatop100TotalHoldings;case "top100Ratio":return sdk.GetNewTokensSortBy.marketDatatop100HoldingsRatio;case "holders":return sdk.GetNewTokensSortBy.marketDataholders;case "creatorsHoldings":return sdk.GetNewTokensSortBy.marketDatacreatorHoldings;case "creatorsRatio":return sdk.GetNewTokensSortBy.marketDatacreatorHoldingsRatio;case "buys1m":return sdk.GetNewTokensSortBy.statsbuys1m;case "buys5m":return sdk.GetNewTokensSortBy.statsbuys5m;case "buys15m":return sdk.GetNewTokensSortBy.statsbuys15m;case "buys30m":return sdk.GetNewTokensSortBy.statsbuys30m;case "buys1h":return sdk.GetNewTokensSortBy.statsbuys1h;case "buys4h":return sdk.GetNewTokensSortBy.statsbuys4h;case "buys24h":return sdk.GetNewTokensSortBy.statsbuys24h;case "sells1m":return sdk.GetNewTokensSortBy.statssells1m;case "sells5m":return sdk.GetNewTokensSortBy.statssells5m;case "sells15m":return sdk.GetNewTokensSortBy.statssells15m;case "sells30m":return sdk.GetNewTokensSortBy.statssells30m;case "sells1h":return sdk.GetNewTokensSortBy.statssells1h;case "sells4h":return sdk.GetNewTokensSortBy.statssells4h;case "sells24h":return sdk.GetNewTokensSortBy.statssells24h;case "trades1m":return sdk.GetNewTokensSortBy.statstrades1m;case "trades5m":return sdk.GetNewTokensSortBy.statstrades5m;case "trades1h":return sdk.GetNewTokensSortBy.statstrades1h;case "trades4h":return sdk.GetNewTokensSortBy.statstrades4h;case "trades24h":return sdk.GetNewTokensSortBy.statstrades24h;case "traders1m":return sdk.GetNewTokensSortBy.statstraders1m;case "traders5m":return sdk.GetNewTokensSortBy.statstraders5m;case "traders1h":return sdk.GetNewTokensSortBy.statstraders1h;case "traders4h":return sdk.GetNewTokensSortBy.statstraders4h;case "traders24h":return sdk.GetNewTokensSortBy.statstraders24h;case "volumes1m":return sdk.GetNewTokensSortBy.statsvolumesInUsd1m;case "volumes5m":return sdk.GetNewTokensSortBy.statsvolumesInUsd5m;case "volumes1h":return sdk.GetNewTokensSortBy.statsvolumesInUsd1h;case "volumes4h":return sdk.GetNewTokensSortBy.statsvolumesInUsd4h;case "volumes24h":return sdk.GetNewTokensSortBy.statsvolumesInUsd24h;case "createdAt":return sdk.GetNewTokensSortBy.tokenCreatedAt}throw new Error(`Unsupported sortBy: ${e}`)}function I(e){return e.filter(r=>["gt","gte","lt","lte","between"].indexOf(r.operator)>=0).map(r=>{let s={field:f(r.field)};return ["gt","gte","between"].indexOf(r.operator)>=0&&(s.min=typeof r.value=="number"?new utils.SafeBigNumber(r.value).toString():r.value),["lt","lte","between"].indexOf(r.operator)>=0&&(s.max=typeof r.value=="number"?new utils.SafeBigNumber(r.value).toString():r.value),s})}function C(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 be(e){return {address:e.address,share:e.share,isVerified:e.isVerified}}function u(e){return {chain:C(e.chain),name:e.name,symbol:e.symbol,address:e.address,decimals:e.decimals,image:e.imageUrl,description:e.description,creators:e.tokenCreators?.map(be),launchedFrom:{programAddress:e.extra?.launchFromProgramAddress,protocolFamily:e.extra?.launchFromProtocolFamily},migrateProgress:e.marketData.completionRatio?new utils.SafeBigNumber(e.marketData.completionRatio).shiftedBy(2).toString():void 0,migratedTo:{programAddress:e.extra?.migratedToProgramAddress,protocolFamily:e.extra?.migratedToProtocolFamily,poolAddress:e.extra?.migratedToPoolAddress,migratedAt:e.extra?.migratedAt?new Date(e.extra.migratedAt):void 0},socialMedias:e.socialMedias?{...e.socialMedias}:void 0,stats:e.stats?W(e.stats):void 0,marketData:e.marketData?D(e.marketData):void 0,liquidities:e.liquidity?.map(ge),createdAt:e.tokenCreatedAt?new Date(e.tokenCreatedAt):void 0}}function W(e){return {"1m":k(e,"1m"),"5m":k(e,"5m"),"15m":k(e,"15m"),"30m":k(e,"30m"),"1h":k(e,"1h"),"4h":k(e,"4h"),"24h":k(e,"24h")}}function b(e){return e===void 0?void 0:parseInt(e)}function k(e,r){let s=e.periods?.[r];return s?{buys:b(s.buys),sells:b(s.sells),trades:b(s.trades),buyers:b(s.buyers),sellers:b(s.sellers),traders:b(s.traders),buyVolumes:s.buyVolume,sellVolumes:s.sellVolume,volumes:s.totalVolumeInNative,buyVolumesInUsd:s.buyVolumeInUsd,sellVolumesInUsd:s.sellVolumeInUsd,volumesInUsd:s.totalVolumeInUsd,openPriceInUsd:s.openInUsd,closePriceInUsd:s.closeInUsd,highPriceInUsd:s.highInUsd,lowPriceInUsd:s.lowInUsd,priceInUsd:s.closeInUsd,priceChange:s.priceChangeRatioInUsd}:{}}function ge(e){return {image:e.image,poolAddress:e.poolAddress,programAddress:e.programAddress,protocolFamily:e.protocolFamily,tvl:e.tvlInSol,tvlInUsd:e.tvlInUsd}}function D(e){return {totalSupply:e.totalSupply,marketCap:e.marketCapInSol,marketCapInUsd:e.marketCapInUsd,price:e.priceInSol,priceInUsd:e.priceInUsd,tvl:e.totalTvlInSol,tvlInUsd:e.totalTvlInUsd,holders:parseInt(e.holders),top10Holdings:e.top10TotalHoldings,top10HoldingsRatio:e.top10HoldingsRatio,top50Holdings:e.top50TotalHoldings,top50HoldingsRatio:e.top50HoldingsRatio,top100Holdings:e.top100TotalHoldings,top100HoldingsRatio:e.top100HoldingsRatio,bluechipHolders:e.bluechipTotalHolders===void 0?void 0:parseInt(e.bluechipTotalHolders),bluechipHoldings:e.bluechipTotalHoldings,bluechipHoldingsRatio:e.bluechipHoldingsRatio,kolHolders:e.kolTotalHolders===void 0?void 0:parseInt(e.kolTotalHolders),kolHoldings:e.kolTotalHoldings,kolHoldingsRatio:e.kolHoldingsRatio,sniperHolders:e.sniperTotalHolders===void 0?void 0:parseInt(e.sniperTotalHolders),sniperHoldings:e.sniperTotalHoldings,sniperHoldingsRatio:e.sniperHoldingsRatio,proHolders:e.proTotalHolders===void 0?void 0:parseInt(e.proTotalHolders),proHoldings:e.proTotalHoldings,proHoldingsRatio:e.proHoldingsRatio,insiderHolders:e.insiderTotalHolders===void 0?void 0:parseInt(e.insiderTotalHolders),insiderHoldings:e.insiderTotalHoldings,insiderHoldingsRatio:e.insiderHoldingsRatio,sandwichHolders:e.sandwishTotalHolders===void 0?void 0:parseInt(e.sandwishTotalHolders),sandwichHoldings:e.sandwishTotalHoldings,sandwichHoldingsRatio:e.sandwishHoldingsRatio,freshHolders:e.freshTotalHolders===void 0?void 0:parseInt(e.freshTotalHolders),freshHoldings:e.freshTotalHoldings,freshHoldingsRatio:e.freshHoldingsRatio,bundleHolders:e.bundleTotalHolders===void 0?void 0:parseInt(e.bundleTotalHolders),bundleHoldings:e.bundleTotalHoldings,bundleHoldingsRatio:e.bundleHoldingsRatio,devHolders:e.devTotalHolders===void 0?void 0:parseInt(e.devTotalHolders),devHoldings:e.devTotalHoldings,devHoldingsRatio:e.devHoldingsRatio}}function G(e){return {open:e.open,close:e.close,high:e.high,low:e.low,volume:e.volume,resolution:E(e.resolution),timestamp:new Date(e.time)}}function E(e){return e==="1d"?"24h":e}function K(e){return {hasTransferFee:e.hasTransferFee,isTransferFeeUpgradable:e.isTransferFeeUpgradable,isTransferable:e.isTransferable,isFreezable:e.isFreezable,isClosable:e.isClosable}}function $(e){return {dex:"jupiter",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:e.input,outputMint:e.output,priorityFee:e.priorityFee}}function j(e){return {signedTx:e.serializedTx}}function J(e){return {startCursor:e.startCursor,endCursor:e.endCursor,hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(r=>({address:r.walletAddress,amount:r.amount,amountInUsd:r.amountInUsd,ratio:r.percentage}))}}function Q(e){return {startCursor:e.startCursor,endCursor:e.endCursor,hasPrev:e.hasPrev,hasNext:e.hasNext,total:e.total,data:e.data.map(u),extra: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,r){let s=(r.data??[]).map(o=>({chain:C(o.chain),address:o.tokenAddress,name:o.name,symbol:o.symbol,image:o.logoUri,priceInUsd:o.priceInUsd,priceInNative:o.priceInNative,amount:o.amount,amountInUsd:o.valueInUsd,amountInNative:o.valueInNative,decimals:o.decimals}));return {chain:s[0]?.chain??e,address:r.walletAddress,balanceInUsd:r.totalValueInUsd,balanceInNative:r.totalValueInNative,startCursor:r.startCursor,endCursor:r.endCursor,hasPrev:r.hasPrev,hasNext:r.hasNext,portfolios:s}}function ee(e,r,s){return {chain:e,address:r,tokens:s.tokens?Number(s.tokens):void 0,buys:s.buys?Number(s.buys):void 0,sells:s.sells?Number(s.sells):void 0,totalTrades:s.totalTrades?Number(s.totalTrades):void 0,wins:s.wins?Number(s.wins):void 0,losses:s.losses?Number(s.losses):void 0,winRate:s.winRate,buyAmountInUsd:s.buyAmountInUsd,sellAmountInUsd:s.sellAmountInUsd,totalCostInUsd:s.totalCostInUsd,realizedProfitInUsd:s.realizedProfitInUsd,realizedProfitRatio:s.realizedProfitRatio,unrealizedProfitInUsd:s.unrealizedProfitInUsd,unrealizedProfitRatio:s.unrealizedProfitRatio,totalProfitInUsd:s.totalProfitInUsd,totalProfitRatio:s.totalProfitRatio,avgProfitPerTradeInUsd:s.avgProfitPerTradeInUsd}}function se(e,r,s){let o=s.data.map(t=>({chain:e,address:t.tokenAddress,name:t.name,symbol:t.symbol,image:t.logoUri,amount:t.balance,amountInUsd:t.currentValue,priceInUsd:t.priceInUsd,decimals:t.decimals,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:r,tokens:Number(s.summary.tokens),buys:Number(s.summary.buys),sells:Number(s.summary.sells),totalTrades:Number(s.summary.totalTrades),wins:Number(s.summary.wins),losses:Number(s.summary.losses),winRate:s.summary.winRate,buyAmountInUsd:s.summary.buyAmountInUsd,sellAmountInUsd:s.summary.sellAmountInUsd,totalCostInUsd:s.summary.totalCostInUsd,realizedProfitInUsd:s.summary.realizedProfitInUsd,realizedProfitRatio:s.summary.realizedProfitRatio,unrealizedProfitInUsd:s.summary.unrealizedProfitInUsd,totalProfitInUsd:s.summary.totalProfitInUsd,startCursor:s.startCursor,endCursor:s.endCursor,hasPrev:s.hasPrev,hasNext:s.hasNext,portfolios:o}}function re(e,r){return (r.data??[]).map(s=>({chain:C(s.chain),address:s.tokenAddress,name:s.name,symbol:s.symbol,image:s.logoUri,priceInUsd:s.priceInUsd,priceInNative:s.priceInNative,amount:s.amount,amountInUsd:s.valueInUsd,amountInNative:s.valueInNative,decimals:s.decimals}))}function oe(e,r){return r.data.map(s=>({chain:e,address:s.tokenAddress,name:s.name,symbol:s.symbol,image:s.logoUri,amount:s.balance,amountInUsd:s.currentValue,priceInUsd:s.priceInUsd,decimals:s.decimals,totalTrades:Number(s.totalTrades),buys:Number(s.buys),buyVolumes:s.buyAmount,buyVolumesInUsd:s.buyAmountInUsd,buyAvgPriceInUsd:s.avgBuyPriceInUsd,sells:Number(s.sells),sellVolumes:s.sellAmount,sellVolumesInUsd:s.sellAmountInUsd,sellAvgPriceInUsd:s.avgSellPriceInUsd,realizedProfitInUsd:s.realizedProfitInUsd,realizedProfitRatio:s.realizedProfitRatio,unrealizedProfitInUsd:s.unrealizedProfitInUsd,unrealizedProfitRatio:s.unrealizedProfitRatio,totalProfitInUsd:s.totalProfitInUsd,totalProfitRatio:s.totalProfitRatio}))}function x(e){return {startCursor:e.startCursor,endCursor:e.endCursor,hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(he)}}function he(e){let r=e.type.toLowerCase()==="buy";return {chain:C(e.chain),walletAddress:e.accountOwnerAddress,txHash:e.transactionSignature,type:r?"buy":"sell",from:{address:r?e.sideTokenAddress:e.tokenAddress,symbol:r?e.sideTokenSymbol:e.tokenSymbol,name:r?e.sideTokenName:e.tokenName,image: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: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:e.dexProgramAddress,protocolFamily:e.dexProtocolFamily,image:e.dexImage},poolAddress:e.poolAddress,status:e.status??"success",time:new Date(e.blockTimestamp*1e3)}}function te(e,r){return {chain:e,address:r.tokenAddress,name:r.name,symbol:r.symbol,decimals:r.decimals,createdAt:r.createdAtMs?new Date(r.createdAtMs):void 0,launchedFrom:r.launchFrom?{programAddress:r.launchFrom.programAddress,protocolFamily:r.launchFrom.protocolFamily}:void 0}}function ne(e,r){return {chain:e,address:r.tokenAddress,name:r.name,symbol:r.symbol,decimals:r.decimals,image:r.imageUrl,description:r.description,socialMedias:r.socialMedia?{...r.socialMedia}:void 0,createdAt:r.createdAtMs?new Date(r.createdAtMs):void 0,launchedFrom:r.launchFrom?{programAddress:r.launchFrom.programAddress,protocolFamily:r.launchFrom.protocolFamily}:void 0,migratedTo:r.migratedTo?{programAddress:r.migratedTo.programAddress,protocolFamily:r.migratedTo.protocolFamily}:void 0}}function ae(e){return {open:e.open,close:e.close,high:e.high,low:e.low,volume:e.volume,resolution:E(e.resolution),timestamp:new Date(e.time)}}function ye(e){let r=["1m","5m","15m","30m","1h","4h","24h"],s=e,o={};for(let t of r){let i=s[`buys${t}`],a=s[`sells${t}`],d=s[`buyers${t}`],w=s[`sellers${t}`],H=s[`buyVolumeInUsd${t}`],R=s[`sellVolumeInUsd${t}`],M=s[`trades${t}`],L=s[`price${t}`],P=s[`openInUsd${t}`],U=s[`closeInUsd${t}`];if(!(i!==void 0||a!==void 0||M!==void 0||L!==void 0))continue;let ce=M??(i!==void 0&&a!==void 0?i+a:void 0),ue=d!==void 0&&w!==void 0?d+w:void 0,me=H!==void 0&&R!==void 0?new utils.SafeBigNumber(H).plus(R).toString():void 0,Te=P&&U&&new utils.SafeBigNumber(P).gt(0)?new utils.SafeBigNumber(U).minus(P).div(P).toString():void 0;o[t]={buys:i,sells:a,trades:ce,buyers:d,sellers:w,traders:ue,buyVolumesInUsd:H,sellVolumesInUsd:R,volumesInUsd:me,openPriceInUsd:P,closePriceInUsd:U,priceInUsd:L??U,priceChange:Te};}return o}function Ie(e){return {priceInUsd:e.price}}function B(e,r){return {chain:e,address:r.address,stats:ye(r),marketData:Ie(r)}}function N(e,r,s){return {chain:e,address:r,marketData:{totalSupply:s.supply,marketCapInUsd:s.marketCapInUsd}}}function p(e,r,s){return {chain:e,address:r,marketData:Pe(s)}}function _(e,r,s){return s.metricType===sdk.WsMetricType.LIQUIDITY_IN_USD?{chain:e,address:r,marketData:{tvlInUsd:s.value}}:s.metricType===sdk.WsMetricType.MIGRATED_RATIO?{chain:e,address:r,migrateProgress:new utils.SafeBigNumber(s.value).shiftedBy(2).toString()}:{chain:e,address:r}}function F(e,r){return {chain:e,address:r.tokenAddress??"",migrateProgress:r.progressRatio?new utils.SafeBigNumber(r.progressRatio).shiftedBy(2).toString():void 0}}function ie(e,r,s){return {chain:e,address:r,liquidities:[{poolAddress:s.poolAddress,tvlInUsd:s.liquidityInUsd,tvl:s.liquidityInNative}]}}function le(e,r,s){return {chain:e,address:r,marketData:{tvlInUsd:s.liquidityInUsd,tvl:s.liquidityInNative}}}function Pe(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 O(e,r){let s=r.kind.toLowerCase()==="buy";return {chain:e,walletAddress:s?r.buyWalletAddress:r.sellWalletAddress,txHash:r.txHash,type:s?"buy":"sell",from:{address:r.sellTokenAddress,symbol:r.sellTokenSymbol,name:r.sellTokenName,amount:r.sellAmount,amountInUsd:r.sellAmountInUsd},to:{address:r.buyTokenAddress,symbol:r.buyTokenSymbol,name:r.buyTokenName,amount:r.buyAmount,amountInUsd:r.buyAmountInUsd},status:"success",time:new Date(r.timestamp)}}var de=class{constructor(r,s){this.accessToken=r;this.options=s;this._client=new sdk.ChainStreamClient(this.accessToken,this.options);}_client;async getToken(r,s){let o=await this._client.token.getToken(l(r),s);return u(o)}async getTokens(r,s){return (await this._client.token.getTokens(l(r),{tokenAddresses:s.join(",")})).map(u)}async getTokenCandles(r,s,o,t){return (await this._client.token.getCandles(l(r),s,{resolution:v(o),from:t?.after?.getTime(),to:t?.before?.getTime(),limit:t?.limit})).map(G)}async getTokenSecurity(r,s){let o=await this._client.token.getSecurity(l(r),s);return K(o)}async getTokenStats(r,s){let o=await this._client.token.getStats(l(r),s);return W(o)}async getTokenHolders(r,s,o){let t=await this._client.token.getHolders(l(r),s,{cursor:o?.cursor,limit:o?.limit,direction:o?.direction});return J(t)}async getTokenMarketData(r,s){let o=await this._client.token.getMarketData(l(r),s);return D(o)}async getNewTokens(r,s){return (await this._client.ranking.getNewTokens(l(r),{sortBy:s?.sortBy?f(s.sortBy):void 0,sortDirection:s?.sortDirection?y(s.sortDirection):void 0,rangeFilters:s?.filters?I(s.filters):void 0,launchpadPlatform:s?.filters?S(s.filters):void 0,searchKeywords:s?.keywords,excludeKeywords:s?.excludeKeywords})).map(u)}async getFinalStretchTokens(r,s){return (await this._client.ranking.getFinalStretchTokens(l(r),{sortBy:s?.sortBy?f(s.sortBy):void 0,sortDirection:s?.sortDirection?y(s.sortDirection):void 0,rangeFilters:s?.filters?I(s.filters):void 0,launchpadPlatform:s?.filters?S(s.filters):void 0,searchKeywords:s?.keywords,excludeKeywords:s?.excludeKeywords})).map(u)}async getMigratedTokens(r,s){return (await this._client.ranking.getMigratedTokens(l(r),{sortBy:s?.sortBy?f(s.sortBy):void 0,sortDirection:s?.sortDirection?y(s.sortDirection):void 0,rangeFilters:s?.filters?I(s.filters):void 0,launchpadPlatform:s?.filters?S(s.filters):void 0,searchKeywords:s?.keywords,excludeKeywords:s?.excludeKeywords})).map(u)}async getTrendingTokens(r,s,o){return (await this._client.ranking.getHotTokens(l(r),s,{sortBy:o?.sortBy?f(o.sortBy):void 0,sortDirection:o?.sortDirection?y(o.sortDirection):void 0,rangeFilters:o?.filters?I(o.filters):void 0,launchpadPlatform:o?.filters?S(o.filters):void 0,searchKeywords:o?.keywords,excludeKeywords:o?.excludeKeywords})).map(u)}async getStockTokens(r,s){return (await this._client.ranking.getStocksTokens(l(r),{sortBy:s?.sortBy?f(s.sortBy):void 0,sortDirection:s?.sortDirection?y(s.sortDirection):void 0,rangeFilters:s?.filters?I(s.filters):void 0,launchpadPlatform:s?.filters?S(s.filters):void 0,searchKeywords:s?.keywords,excludeKeywords:s?.excludeKeywords})).map(u)}async searchTokens(r){let s=await this._client.token.search({chains:r?.chains?.map(l),q:r?.keyword,limit:r?.limit,cursor:r?.cursor,sortBy:r?.sortBy?q(r.sortBy):void 0,sort:r?.sortDirection});return Q(s)}async swapRoute(r){let s=await this._client.dex.route(l(r.chain),$(r));return X(s)}async sendTx(r){let s=await this._client.transaction.send(l(r.chain),j(r));return Y(s)}async checkTxSuccess(r,s,o){let{result:t}=await this._client.waitForJob(s,o);return t.success}async getWalletPortfolios(r,s,o){let t=await this._client.wallet.getNetWorth(l(r),s,{cursor:o?.cursor,limit:o?.limit??100});return Z(r,t)}async getWalletPnl(r,s,o){let t=await this._client.wallet.getPnl(l(r),s,o?{resolution:o}:void 0);return ee(r,s,t)}async getWalletPortfolioPnls(r,s,o){let t=await this._client.wallet.getPnlDetails(l(r),s,{cursor:o?.cursor,limit:o?.limit??100});return se(r,s,t)}async getWalletPortfoliosByTokens(r,s,o){let t=await this._client.wallet.getNetWorthByTokens(l(r),s,{tokenAddresses:o.join(",")});return re(r,t)}async getWalletPortfolioPnlsByTokens(r,s,o){let t=await this._client.wallet.getPnlByToken(l(r),s,{tokenAddresses:o.join(",")});return oe(r,t)}async getWalletTradeActivities(r,s,o){let t=await this._client.trade.getTrades(l(r),{walletAddress:s,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 x(t)}async getTokenTradeActivities(r,s,o){let t=await this._client.trade.getTrades(l(r),{tokenAddress:s,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 x(t)}async getPresignedUploadUrl(){return await this._client.ipfs.presign()}subscribeToken(r,s,o){let t=l(r),i=[this._client.stream.subscribeTokenStats({chain:t,tokenAddress:s,callback:a=>o([B(r,a)])}),this._client.stream.subscribeTokenSupply({chain:t,tokenAddress:s,callback:a=>o([N(r,s,a)])}),this._client.stream.subscribeTokenHolders({chain:t,tokenAddress:s,callback:a=>o([p(r,s,a)])}),this._client.stream.subscribeTokenLiquidity({chain:t,tokenAddress:s,callback:a=>o([_(r,s,a)])}),this._client.stream.subscribeTokenMaxLiquidity({chain:t,tokenAddress:s,callback:a=>o([ie(r,s,a)])}),this._client.stream.subscribeTokenTotalLiquidity({chain:t,tokenAddress:s,callback:a=>o([le(r,s,a)])})];return {unsubscribe:()=>i.forEach(a=>a.unsubscribe())}}subscribeTokenCandles(r,s,o,t){return this._client.stream.subscribeTokenCandles({chain:l(r),tokenAddress:s,resolution:v(o),callback:i=>t([ae(i)])})}subscribeWalletPnl(r,s,o){return this._client.stream.subscribeWalletPnlList({chain:l(r),walletAddress:s,callback:t=>o(t.map(i=>({chain:r,address:i.walletAddress,buys:i.buys,buyAmountInUsd:i.buyAmountInUsd,sells:i.sells,sellAmountInUsd:i.sellAmountInUsd,wins:i.wins,winRate:i.winRatio,totalProfitInUsd:i.pnlInUsd,totalProfitRatio:i.pnlRatio,avgProfitPerTradeInUsd:i.averagePnlInUsd,tokens:i.tokens,resolution:i.resolution})))})}subscribeWalletPortfolios(r,s,o){return this._client.stream.subscribeWalletBalance({chain:l(r),walletAddress:s,callback:t=>o(t.map(i=>({chain:r,walletAddress:i.walletAddress,tokenAddress:i.tokenAddress,priceInUsd:i.tokenPriceInUsd,amount:i.balance})))})}subscribeWalletPortfolioPnls(r,s,o){return this._client.stream.subscribeWalletPnl({chain:l(r),walletAddress:s,callback:t=>o([{chain:r,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}])})}subscribeWalletTradeActivities(r,s,o){return this._client.stream.subscribeWalletTrade({chain:l(r),walletAddress:s,callback:t=>o([O(r,t)])})}subscribeTokenTradeActivities(r,s,o){return this._client.stream.subscribeTokenTrade({chain:l(r),tokenAddress:s,callback:t=>o([O(r,t)])})}subscribeNewTokens(r,s){let o=l(r),t=this._subscribeRankingTokens(r,sdk.WsChannelType.New,s),i=[this._client.stream.subscribeNewToken({chain:o,callback:a=>s([te(r,a)])}),this._client.stream.subscribeNewTokensMetadata({chain:o,callback:a=>s(a.map(d=>ne(r,d)))}),this._client.stream.subscribeRankingTokensBondingCurve({chain:o,callback:a=>s(a.map(d=>F(r,d)))})];return {unsubscribe:()=>{t.unsubscribe(),i.forEach(a=>a.unsubscribe());}}}subscribeTrendingTokens(r,s){return this._subscribeRankingTokens(r,sdk.WsChannelType.HOT,s)}subscribeMigratedTokens(r,s){return this._subscribeRankingTokens(r,sdk.WsChannelType.GRADUATED,s)}subscribeFinalStretchTokens(r,s){let o=l(r),t=this._subscribeRankingTokens(r,sdk.WsChannelType.COMPLETED,s),i=this._client.stream.subscribeRankingTokensBondingCurve({chain:o,callback:a=>s(a.map(d=>F(r,d)))});return {unsubscribe:()=>{t.unsubscribe(),i.unsubscribe();}}}subscribeStockTokens(r,s){return this._subscribeRankingTokens(r,sdk.WsChannelType.US_STOCKS,s)}_subscribeRankingTokens(r,s,o){let t=l(r),i=[this._client.stream.subscribeRankingTokensStats({chain:t,channelType:s,callback:a=>o(a.map(d=>B(r,d)))}),this._client.stream.subscribeRankingTokensHolders({chain:t,channelType:s,callback:a=>o(a.map(d=>p(r,d.tokenAddress,d)))}),this._client.stream.subscribeRankingTokensSupply({chain:t,channelType:s,callback:a=>o(a.map(d=>N(r,d.tokenAddress,d)))}),this._client.stream.subscribeRankingTokensLiquidity({chain:t,channelType:s,callback:a=>o(a.map(d=>_(r,d.tokenAddress,d)))})];return {unsubscribe:()=>i.forEach(a=>a.unsubscribe())}}};function S(e){let r=e.find(s=>s.field==="launchedFromProtocolFamily");if(r){if(r.operator==="eq")return [r.value];if(r.operator==="in")return r.value;console.warn("invalid launchedFromProtocolFamily filter",r);}}exports.Client=de;exports.fromChainDTO=C;exports.fromPnlDetailItems=oe;exports.fromPnlDetailsPage=se;exports.fromSendTxResult=Y;exports.fromSwapRoute=X;exports.fromTokenCandle=G;exports.fromTokenCreatorDTO=be;exports.fromTokenDTO=u;exports.fromTokenHolderPage=J;exports.fromTokenLiquidityDTO=ge;exports.fromTokenMarketDataDTO=D;exports.fromTokenMetadataSubscribed=ne;exports.fromTokenPage=Q;exports.fromTokenSecurity=K;exports.fromTokenStatsDTO=W;exports.fromTokenSubscribed=te;exports.fromTradePage=x;exports.fromWalletNetWorthByTokens=re;exports.fromWalletPnlSummary=ee;exports.fromWalletPortfolios=Z;exports.fromWsCandle=ae;exports.fromWsTokenBondingCurveToSubscribed=F;exports.fromWsTokenDataSubscribed=B;exports.fromWsTokenHolderToSubscribed=p;exports.fromWsTokenLiquidityToSubscribed=_;exports.fromWsTokenMarketDataFromHolder=Pe;exports.fromWsTokenMarketDataFromStats=Ie;exports.fromWsTokenMaxLiquidityToSubscribed=ie;exports.fromWsTokenStats=ye;exports.fromWsTokenSupplyToSubscribed=N;exports.fromWsTokenTotalLiquidityToSubscribed=le;exports.fromWsTradeActivity=O;exports.toChainDTO=l;exports.toFieldDTO=f;exports.toRangeFiltersDTO=I;exports.toResolutionDTO=v;exports.toSearchFieldDTO=q;exports.toSendTxInput=j;exports.toSortDirectionDTO=y;exports.toSwapRouteInput=$;exports.version=ke;//# 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.38");var be="0.1.38";function i(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 C(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 M(e){switch(e){case "asc":return "ASC";case "desc":return "DESC"}}function z(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 v(e){switch(e){case "price":return sdk.GetNewTokensSortBy.marketDatapriceInUsd;case "priceChange1m":return sdk.GetNewTokensSortBy.statspriceChangeRatioInUsd1m;case "priceChange5m":return sdk.GetNewTokensSortBy.statspriceChangeRatioInUsd5m;case "priceChange1h":return sdk.GetNewTokensSortBy.statspriceChangeRatioInUsd1h;case "priceChange4h":return sdk.GetNewTokensSortBy.statspriceChangeRatioInUsd4h;case "priceChange24h":return sdk.GetNewTokensSortBy.statspriceChangeRatioInUsd24h;case "marketCap":return sdk.GetNewTokensSortBy.marketDatamarketCapInUsd;case "tvl":return sdk.GetNewTokensSortBy.marketDatamaxPoolTvlInUsd;case "top10Holdings":return sdk.GetNewTokensSortBy.marketDatatop10TotalHoldings;case "top10Ratio":return sdk.GetNewTokensSortBy.marketDatatop10HoldingsRatio;case "top100Holdings":return sdk.GetNewTokensSortBy.marketDatatop100TotalHoldings;case "top100Ratio":return sdk.GetNewTokensSortBy.marketDatatop100HoldingsRatio;case "holders":return sdk.GetNewTokensSortBy.marketDataholders;case "creatorsHoldings":return sdk.GetNewTokensSortBy.marketDatacreatorHoldings;case "creatorsRatio":return sdk.GetNewTokensSortBy.marketDatacreatorHoldingsRatio;case "buys1m":return sdk.GetNewTokensSortBy.statsbuys1m;case "buys5m":return sdk.GetNewTokensSortBy.statsbuys5m;case "buys15m":return sdk.GetNewTokensSortBy.statsbuys15m;case "buys30m":return sdk.GetNewTokensSortBy.statsbuys30m;case "buys1h":return sdk.GetNewTokensSortBy.statsbuys1h;case "buys4h":return sdk.GetNewTokensSortBy.statsbuys4h;case "buys24h":return sdk.GetNewTokensSortBy.statsbuys24h;case "sells1m":return sdk.GetNewTokensSortBy.statssells1m;case "sells5m":return sdk.GetNewTokensSortBy.statssells5m;case "sells15m":return sdk.GetNewTokensSortBy.statssells15m;case "sells30m":return sdk.GetNewTokensSortBy.statssells30m;case "sells1h":return sdk.GetNewTokensSortBy.statssells1h;case "sells4h":return sdk.GetNewTokensSortBy.statssells4h;case "sells24h":return sdk.GetNewTokensSortBy.statssells24h;case "trades1m":return sdk.GetNewTokensSortBy.statstrades1m;case "trades5m":return sdk.GetNewTokensSortBy.statstrades5m;case "trades1h":return sdk.GetNewTokensSortBy.statstrades1h;case "trades4h":return sdk.GetNewTokensSortBy.statstrades4h;case "trades24h":return sdk.GetNewTokensSortBy.statstrades24h;case "traders1m":return sdk.GetNewTokensSortBy.statstraders1m;case "traders5m":return sdk.GetNewTokensSortBy.statstraders5m;case "traders1h":return sdk.GetNewTokensSortBy.statstraders1h;case "traders4h":return sdk.GetNewTokensSortBy.statstraders4h;case "traders24h":return sdk.GetNewTokensSortBy.statstraders24h;case "volumes1m":return sdk.GetNewTokensSortBy.statsvolumesInUsd1m;case "volumes5m":return sdk.GetNewTokensSortBy.statsvolumesInUsd5m;case "volumes1h":return sdk.GetNewTokensSortBy.statsvolumesInUsd1h;case "volumes4h":return sdk.GetNewTokensSortBy.statsvolumesInUsd4h;case "volumes24h":return sdk.GetNewTokensSortBy.statsvolumesInUsd24h;case "createdAt":return sdk.GetNewTokensSortBy.tokenCreatedAt}throw new Error(`Unsupported sortBy: ${e}`)}function V(e){return e.filter(s=>["gt","gte","lt","lte","between"].indexOf(s.operator)>=0).map(s=>{let r={field:v(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 y(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 fe(e){return {address:e.address,share:e.share,isVerified:e.isVerified}}function u(e){return {chain:y(e.chain),name:e.name,symbol:e.symbol,address:e.address,decimals:e.decimals,image:e.imageUrl,description:e.description,creators:e.tokenCreators?.map(fe),launchedFrom:{programAddress:e.extra?.launchFromProgramAddress,protocolFamily:e.extra?.launchFromProtocolFamily},migrateProgress:e.marketData.completionRatio?new utils.SafeBigNumber(e.marketData.completionRatio).shiftedBy(2).toString():void 0,migratedTo:{programAddress:e.extra?.migratedToProgramAddress,protocolFamily:e.extra?.migratedToProtocolFamily,poolAddress:e.extra?.migratedToPoolAddress,migratedAt:e.extra?.migratedAt?new Date(e.extra.migratedAt):void 0},socialMedias:e.socialMedias?{...e.socialMedias}:void 0,stats:e.stats?w(e.stats):void 0,marketData:e.marketData?R(e.marketData):void 0,liquidities:e.liquidity?.map(he),createdAt:e.tokenCreatedAt?new Date(e.tokenCreatedAt):void 0}}function w(e){return {"1m":k(e,"1m"),"5m":k(e,"5m"),"15m":k(e,"15m"),"30m":k(e,"30m"),"1h":k(e,"1h"),"4h":k(e,"4h"),"24h":k(e,"24h")}}function b(e){return e===void 0?void 0:parseInt(e)}function k(e,s){let r=e.periods?.[s];return r?{buys:b(r.buys),sells:b(r.sells),trades:b(r.trades),buyers:b(r.buyers),sellers:b(r.sellers),traders:b(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 he(e){return {image:e.image,poolAddress:e.poolAddress,programAddress:e.programAddress,protocolFamily:e.protocolFamily,tvl:e.tvlInSol,tvlInUsd:e.tvlInUsd}}function R(e){return {totalSupply:e.totalSupply,marketCap:e.marketCapInSol,marketCapInUsd:e.marketCapInUsd,price:e.priceInSol,priceInUsd:e.priceInUsd,tvl:e.totalTvlInSol,tvlInUsd:e.totalTvlInUsd,holders:parseInt(e.holders),top10Holdings:e.top10TotalHoldings,top10HoldingsRatio:e.top10HoldingsRatio,top50Holdings:e.top50TotalHoldings,top50HoldingsRatio:e.top50HoldingsRatio,top100Holdings:e.top100TotalHoldings,top100HoldingsRatio:e.top100HoldingsRatio,bluechipHolders:e.bluechipTotalHolders===void 0?void 0:parseInt(e.bluechipTotalHolders),bluechipHoldings:e.bluechipTotalHoldings,bluechipHoldingsRatio:e.bluechipHoldingsRatio,kolHolders:e.kolTotalHolders===void 0?void 0:parseInt(e.kolTotalHolders),kolHoldings:e.kolTotalHoldings,kolHoldingsRatio:e.kolHoldingsRatio,sniperHolders:e.sniperTotalHolders===void 0?void 0:parseInt(e.sniperTotalHolders),sniperHoldings:e.sniperTotalHoldings,sniperHoldingsRatio:e.sniperHoldingsRatio,proHolders:e.proTotalHolders===void 0?void 0:parseInt(e.proTotalHolders),proHoldings:e.proTotalHoldings,proHoldingsRatio:e.proHoldingsRatio,insiderHolders:e.insiderTotalHolders===void 0?void 0:parseInt(e.insiderTotalHolders),insiderHoldings:e.insiderTotalHoldings,insiderHoldingsRatio:e.insiderHoldingsRatio,sandwichHolders:e.sandwishTotalHolders===void 0?void 0:parseInt(e.sandwishTotalHolders),sandwichHoldings:e.sandwishTotalHoldings,sandwichHoldingsRatio:e.sandwishHoldingsRatio,freshHolders:e.freshTotalHolders===void 0?void 0:parseInt(e.freshTotalHolders),freshHoldings:e.freshTotalHoldings,freshHoldingsRatio:e.freshHoldingsRatio,bundleHolders:e.bundleTotalHolders===void 0?void 0:parseInt(e.bundleTotalHolders),bundleHoldings:e.bundleTotalHoldings,bundleHoldingsRatio:e.bundleHoldingsRatio,devHolders:e.devTotalHolders===void 0?void 0:parseInt(e.devTotalHolders),devHoldings:e.devTotalHoldings,devHoldingsRatio:e.devHoldingsRatio}}function q(e){return {open:e.open,close:e.close,high:e.high,low:e.low,volume:e.volume,resolution:E(e.resolution),timestamp:new Date(e.time)}}function E(e){return e==="1d"?"24h":e}function G(e){return {hasTransferFee:e.hasTransferFee,isTransferFeeUpgradable:e.isTransferFeeUpgradable,isTransferable:e.isTransferable,isFreezable:e.isFreezable,isClosable:e.isClosable}}function $(e){return {dex:"jupiter",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:e.input,outputMint:e.output,priorityFee:e.priorityFee}}function j(e){return {signedTx:e.serializedTx}}function K(e){return {startCursor:e.startCursor,endCursor: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 J(e){return {startCursor:e.startCursor,endCursor:e.endCursor,hasPrev:e.hasPrev,hasNext:e.hasNext,total:e.total,data:e.data.map(u),extra: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 Y(e,s){let r=(s.data??[]).map(o=>({chain:y(o.chain),address:o.tokenAddress,name:o.name,symbol:o.symbol,image: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:s.startCursor,endCursor:s.endCursor,hasPrev:s.hasPrev,hasNext:s.hasNext,portfolios:r}}function Z(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:r.winRate,buyAmountInUsd:r.buyAmountInUsd,sellAmountInUsd:r.sellAmountInUsd,totalCostInUsd:r.totalCostInUsd,realizedProfitInUsd:r.realizedProfitInUsd,realizedProfitRatio:r.realizedProfitRatio,unrealizedProfitInUsd:r.unrealizedProfitInUsd,unrealizedProfitRatio:r.unrealizedProfitRatio,totalProfitInUsd:r.totalProfitInUsd,totalProfitRatio:r.totalProfitRatio,avgProfitPerTradeInUsd:r.avgProfitPerTradeInUsd}}function ee(e,s,r){let o=r.data.map(t=>({chain:e,address:t.tokenAddress,name:t.name,symbol:t.symbol,image:t.logoUri,amount:t.balance,amountInUsd:t.currentValue,priceInUsd:t.priceInUsd,decimals:t.decimals,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:r.summary.winRate,buyAmountInUsd:r.summary.buyAmountInUsd,sellAmountInUsd:r.summary.sellAmountInUsd,totalCostInUsd:r.summary.totalCostInUsd,realizedProfitInUsd:r.summary.realizedProfitInUsd,realizedProfitRatio:r.summary.realizedProfitRatio,unrealizedProfitInUsd:r.summary.unrealizedProfitInUsd,totalProfitInUsd:r.summary.totalProfitInUsd,startCursor:r.startCursor,endCursor:r.endCursor,hasPrev:r.hasPrev,hasNext:r.hasNext,portfolios:o}}function se(e,s){return (s.data??[]).map(r=>({chain:y(r.chain),address:r.tokenAddress,name:r.name,symbol:r.symbol,image:r.logoUri,priceInUsd:r.priceInUsd,priceInNative:r.priceInNative,amount:r.amount,amountInUsd:r.valueInUsd,amountInNative:r.valueInNative,decimals:r.decimals}))}function re(e,s){return s.data.map(r=>({chain:e,address:r.tokenAddress,name:r.name,symbol:r.symbol,image:r.logoUri,amount:r.balance,amountInUsd:r.currentValue,priceInUsd:r.priceInUsd,decimals:r.decimals,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 oe(e){return {startCursor:e.startCursor,endCursor:e.endCursor,hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(ye)}}function ye(e){let s=e.type.toLowerCase()==="buy";return {chain:y(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: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: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:e.dexProgramAddress,protocolFamily:e.dexProtocolFamily,image:e.dexImage},poolAddress:e.poolAddress,status:e.status??"success",time:new Date(e.blockTimestamp*1e3)}}function te(e){return {startCursor:e.startCursor,endCursor:e.endCursor,hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(Ie)}}function Ie(e){let s=e.type.toLowerCase().replace(/ /g,"_"),r=s==="buy";return {chain:y(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: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: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:e.dexProgramAddress,protocolFamily:e.dexProtocolFamily,image:e.dexImage},poolAddress:e.poolAddress,status:e.status??"success",time:new Date(e.blockTimestamp*1e3)}}function ne(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 ae(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 ie(e){return {open:e.open,close:e.close,high:e.high,low:e.low,volume:e.volume,resolution:E(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}`],l=r[`buyers${t}`],A=r[`sellers${t}`],U=r[`buyVolumeInUsd${t}`],S=r[`sellVolumeInUsd${t}`],O=r[`trades${t}`],F=r[`price${t}`],h=r[`openInUsd${t}`],P=r[`closeInUsd${t}`];if(!(d!==void 0||a!==void 0||O!==void 0||F!==void 0))continue;let ue=O??(d!==void 0&&a!==void 0?d+a:void 0),me=l!==void 0&&A!==void 0?l+A:void 0,Te=U!==void 0&&S!==void 0?new utils.SafeBigNumber(U).plus(S).toString():void 0,ke=h&&P&&new utils.SafeBigNumber(h).gt(0)?new utils.SafeBigNumber(P).minus(h).div(h).toString():void 0;o[t]={buys:d,sells:a,trades:ue,buyers:l,sellers:A,traders:me,buyVolumesInUsd:U,sellVolumesInUsd:S,volumesInUsd:Te,openPriceInUsd:h,closePriceInUsd:P,priceInUsd:F??P,priceChange:ke};}return o}function Ae(e){return {priceInUsd:e.price}}function H(e,s){return {chain:e,address:s.address,stats:Pe(s),marketData:Ae(s)}}function W(e,s,r){return {chain:e,address:s,marketData:{totalSupply:r.supply,marketCapInUsd:r.marketCapInUsd}}}function x(e,s,r){return {chain:e,address:s,marketData:Ue(r)}}function D(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 de(e,s,r){return {chain:e,address:s,liquidities:[{poolAddress:r.poolAddress,tvlInUsd:r.liquidityInUsd,tvl:r.liquidityInNative}]}}function le(e,s,r){return {chain:e,address:s,marketData:{tvlInUsd:r.liquidityInUsd,tvl:r.liquidityInNative}}}function Ue(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 p(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 ce=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(i(s),r);return u(o)}async getTokens(s,r){return (await this._client.token.getTokens(i(s),{tokenAddresses:r.join(",")})).map(u)}async getTokenCandles(s,r,o,t){return (await this._client.token.getCandles(i(s),r,{resolution:C(o),from:t?.after?.getTime(),to:t?.before?.getTime(),limit:t?.limit})).map(q)}async getTokenSecurity(s,r){let o=await this._client.token.getSecurity(i(s),r);return G(o)}async getTokenStats(s,r){let o=await this._client.token.getStats(i(s),r);return w(o)}async getTokenHolders(s,r,o){let t=await this._client.token.getHolders(i(s),r,{cursor:o?.cursor,limit:o?.limit,direction:o?.direction});return K(t)}async getTokenMarketData(s,r){let o=await this._client.token.getMarketData(i(s),r);return R(o)}async getNewTokens(s,r){return (await this._client.ranking.getNewTokens(i(s),this._buildRankingParams(r))).map(u)}async getFinalStretchTokens(s,r){return (await this._client.ranking.getFinalStretchTokens(i(s),this._buildRankingParams(r))).map(u)}async getMigratedTokens(s,r){return (await this._client.ranking.getMigratedTokens(i(s),this._buildRankingParams(r))).map(u)}async getTrendingTokens(s,r,o){return (await this._client.ranking.getHotTokens(i(s),r,this._buildRankingParams(o))).map(u)}async getStockTokens(s,r){return (await this._client.ranking.getStocksTokens(i(s),this._buildRankingParams(r))).map(u)}async searchTokens(s){let r=await this._client.token.search({chains:s?.chains?.map(i),q:s?.keyword,limit:s?.limit,cursor:s?.cursor,sortBy:s?.sortBy?z(s.sortBy):void 0,sort:s?.sortDirection});return J(r)}async swapRoute(s){let r=await this._client.dex.route(i(s.chain),$(s));return Q(r)}async sendTx(s){let r=await this._client.transaction.send(i(s.chain),j(s));return X(r)}async checkTxSuccess(s,r,o){let{result:t}=await this._client.waitForJob(r,o);return t.success}async getWalletPortfolios(s,r,o){let t=await this._client.wallet.getNetWorth(i(s),r,{cursor:o?.cursor,limit:o?.limit??100});return Y(s,t)}async getWalletPnl(s,r,o){let t=await this._client.wallet.getPnl(i(s),r,o?{resolution:o}:void 0);return Z(s,r,t)}async getWalletPortfolioPnls(s,r,o){let t=await this._client.wallet.getPnlDetails(i(s),r,{cursor:o?.cursor,limit:o?.limit??100});return ee(s,r,t)}async getWalletPortfoliosByTokens(s,r,o){let t=await this._client.wallet.getNetWorthByTokens(i(s),r,{tokenAddresses:o.join(",")});return se(s,t)}async getWalletPortfolioPnlsByTokens(s,r,o){let t=await this._client.wallet.getPnlByToken(i(s),r,{tokenAddresses:o.join(",")});return re(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()}subscribeToken(s,r,o){let t=i(s),d=[this._client.stream.subscribeTokenStats({chain:t,tokenAddress:r,callback:a=>o([H(s,a)])}),this._client.stream.subscribeTokenSupply({chain:t,tokenAddress:r,callback:a=>o([W(s,r,a)])}),this._client.stream.subscribeTokenHolders({chain:t,tokenAddress:r,callback:a=>o([x(s,r,a)])}),this._client.stream.subscribeTokenLiquidity({chain:t,tokenAddress:r,callback:a=>o([D(s,r,a)])}),this._client.stream.subscribeTokenMaxLiquidity({chain:t,tokenAddress:r,callback:a=>o([de(s,r,a)])}),this._client.stream.subscribeTokenTotalLiquidity({chain:t,tokenAddress:r,callback:a=>o([le(s,r,a)])})];return {unsubscribe:()=>d.forEach(a=>a.unsubscribe())}}subscribeTokenCandles(s,r,o,t){return this._client.stream.subscribeTokenCandles({chain:i(s),tokenAddress:r,resolution:C(o),callback:d=>t([ie(d)])})}subscribeWalletPnl(s,r,o){return this._client.stream.subscribeWalletPnlList({chain:i(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:i(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:i(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:i(s),walletAddress:r,callback:t=>o([N(s,t)])})}subscribeTokenTrades(s,r,o){return this._client.stream.subscribeTokenTrade({chain:i(s),tokenAddress:r,callback:t=>o([N(s,t)])})}subscribeWalletActivities(s,r,o){return this._client.stream.subscribeWalletTrade({chain:i(s),walletAddress:r,callback:t=>o([p(s,t)])})}subscribeTokenActivities(s,r,o){return this._client.stream.subscribeTokenTrade({chain:i(s),tokenAddress:r,callback:t=>o([p(s,t)])})}subscribeNewTokens(s,r){let o=i(s),t=this._subscribeRankingTokens(s,sdk.WsChannelType.New,r),d=[this._client.stream.subscribeNewToken({chain:o,callback:a=>r([ne(s,a)])}),this._client.stream.subscribeNewTokensMetadata({chain:o,callback:a=>r(a.map(l=>ae(s,l)))}),this._client.stream.subscribeRankingTokensBondingCurve({chain:o,callback:a=>r(a.map(l=>_(s,l)))})];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.GRADUATED,r)}subscribeFinalStretchTokens(s,r){let o=i(s),t=this._subscribeRankingTokens(s,sdk.WsChannelType.COMPLETED,r),d=this._client.stream.subscribeRankingTokensBondingCurve({chain:o,callback:a=>r(a.map(l=>_(s,l)))});return {unsubscribe:()=>{t.unsubscribe(),d.unsubscribe();}}}subscribeStockTokens(s,r){return this._subscribeRankingTokens(s,sdk.WsChannelType.US_STOCKS,r)}_buildRankingParams(s){return {sortBy:s?.sortBy?v(s.sortBy):void 0,sortDirection:s?.sortDirection?M(s.sortDirection):void 0,rangeFilters:s?.filters?V(s.filters):void 0,launchpadPlatform:s?.filters?Ce(s.filters):void 0,searchKeywords:s?.keywords,excludeKeywords:s?.excludeKeywords}}async _getTrades(s,r,o){let t=await this._client.trade.getTrades(i(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 oe(t)}async _getActivities(s,r,o){let t=await this._client.trade.getActivities(i(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(t)}_subscribeRankingTokens(s,r,o){let t=i(s),d=[this._client.stream.subscribeRankingTokensStats({chain:t,channelType:r,callback:a=>o(a.map(l=>H(s,l)))}),this._client.stream.subscribeRankingTokensHolders({chain:t,channelType:r,callback:a=>o(a.map(l=>x(s,l.tokenAddress,l)))}),this._client.stream.subscribeRankingTokensSupply({chain:t,channelType:r,callback:a=>o(a.map(l=>W(s,l.tokenAddress,l)))}),this._client.stream.subscribeRankingTokensLiquidity({chain:t,channelType:r,callback:a=>o(a.map(l=>D(s,l.tokenAddress,l)))})];return {unsubscribe:()=>d.forEach(a=>a.unsubscribe())}}};function Ce(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=ce;exports.fromActivityPage=te;exports.fromChainDTO=y;exports.fromPnlDetailItems=re;exports.fromPnlDetailsPage=ee;exports.fromSendTxResult=X;exports.fromSwapRoute=Q;exports.fromTokenCandle=q;exports.fromTokenCreatorDTO=fe;exports.fromTokenDTO=u;exports.fromTokenHolderPage=K;exports.fromTokenLiquidityDTO=he;exports.fromTokenMarketDataDTO=R;exports.fromTokenMetadataSubscribed=ae;exports.fromTokenPage=J;exports.fromTokenSecurity=G;exports.fromTokenStatsDTO=w;exports.fromTokenSubscribed=ne;exports.fromTradePage=oe;exports.fromWalletNetWorthByTokens=se;exports.fromWalletPnlSummary=Z;exports.fromWalletPortfolios=Y;exports.fromWsActivity=p;exports.fromWsCandle=ie;exports.fromWsTokenBondingCurveToSubscribed=_;exports.fromWsTokenDataSubscribed=H;exports.fromWsTokenHolderToSubscribed=x;exports.fromWsTokenLiquidityToSubscribed=D;exports.fromWsTokenMarketDataFromHolder=Ue;exports.fromWsTokenMarketDataFromStats=Ae;exports.fromWsTokenMaxLiquidityToSubscribed=de;exports.fromWsTokenStats=Pe;exports.fromWsTokenSupplyToSubscribed=W;exports.fromWsTokenTotalLiquidityToSubscribed=le;exports.fromWsTradeActivity=N;exports.toChainDTO=i;exports.toFieldDTO=v;exports.toRangeFiltersDTO=V;exports.toResolutionDTO=C;exports.toSearchFieldDTO=z;exports.toSendTxInput=j;exports.toSortDirectionDTO=M;exports.toSwapRouteInput=$;exports.version=be;//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map