@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 +189 -0
- package/dist/index.d.mts +30 -12
- package/dist/index.d.ts +30 -12
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -4
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 {
|
|
2
|
-
import {
|
|
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.
|
|
11
|
+
declare const _default: "0.1.38";
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
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
|
-
|
|
48
|
-
|
|
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
|
-
|
|
56
|
-
|
|
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<
|
|
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):
|
|
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 {
|
|
2
|
-
import {
|
|
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.
|
|
11
|
+
declare const _default: "0.1.38";
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
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
|
-
|
|
48
|
-
|
|
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
|
-
|
|
56
|
-
|
|
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<
|
|
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):
|
|
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
|