@liberfi.io/types 0.1.27 → 0.1.28

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,288 @@
1
+ # @liberfi.io/types
2
+
3
+ Pure TypeScript type-definition package with zero runtime dependencies. Serves as the **single source of truth** for domain types and API contract interfaces across the entire Liberfi React SDK monorepo. Consumed by `@liberfi.io/client`, `@liberfi.io/react`, and all UI packages.
4
+
5
+ ## Design Philosophy
6
+
7
+ - **Zero runtime dependencies** — contains only TypeScript types and enums; adds no weight to the consumer's bundle beyond what is used.
8
+ - **Domain vs API contract layering** — domain models (`Token`, `Activity`, `Chain`, `Portfolio`, etc.) are cleanly separated from API contract interfaces (`IClient`, `ISubscribeClient`), with one-directional imports from domain → API.
9
+ - **Open literal types** — patterns like `TokenProtocol = SolanaTokenProtocol | (string & {})` provide autocompletion for known values while remaining extensible for future additions.
10
+ - **Interface-based abstraction** — `IClient` and `ISubscribeClient` define the API surface abstractly, enabling different implementations (production client, mocks, stubs) without coupling consumers to a concrete class.
11
+
12
+ ## Installation
13
+
14
+ ```bash
15
+ pnpm add @liberfi.io/types
16
+ ```
17
+
18
+ No peer dependencies required.
19
+
20
+ ## API Reference
21
+
22
+ ### Enums
23
+
24
+ | Enum | Description |
25
+ | --------------------- | ----------------------------------------------------------------------------------------------------------------------- |
26
+ | `Chain` | ~190 blockchain chain IDs (e.g. `Chain.ETHEREUM`, `Chain.SOLANA`, `Chain.BASE`). Values are numeric string identifiers. |
27
+ | `ChainNamespace` | Chain family namespace — `EVM` or `SOL`. |
28
+ | `SolanaTokenProtocol` | Known Solana launch protocols (e.g. `PUMP`, `RAYDIUM`, `METEORA`, `ORCA`). |
29
+ | `SwapMode` | Swap direction — `EXACT_IN` or `EXACT_OUT`. |
30
+
31
+ ### Domain Interfaces — Token
32
+
33
+ | Type | Description |
34
+ | ------------------------ | ------------------------------------------------------------------------------------------------------------------ |
35
+ | `Token` | Core token model with metadata, stats, market data, liquidity, security, and social links. |
36
+ | `TokenCreator` | Token creator info: address, share percentage, verification status. |
37
+ | `TokenLaunchedFrom` | Launch platform details: program address and protocol family. |
38
+ | `TokenMigratedTo` | Migration target: program address, protocol family, pool address, timestamp. |
39
+ | `TokenSocialMedias` | Social media URLs (twitter, telegram, website, discord, github, etc.). |
40
+ | `TokenStats` | Per-resolution (`1m`–`24h`) trading statistics container. |
41
+ | `TokenStatsByResolution` | Single-resolution stats: buys, sells, traders, volumes, OHLC prices, price change. |
42
+ | `TokenMarketData` | Market data: supply, market cap, price, TVL, holder breakdowns by tag (bluechip, KOL, sniper, pro, insider, etc.). |
43
+ | `TokenLiquidity` | Liquidity pool info: pool/pair address, protocol, TVL. |
44
+ | `TokenSecurity` | Security flags: transfer fee, freezable, closable, transferable. |
45
+ | `TokenCandle` | OHLCV candlestick data point with resolution and timestamp. |
46
+ | `TokenHolder` | Single holder: address, amount, USD value, holding ratio. |
47
+
48
+ ### Domain Interfaces — Activity
49
+
50
+ | Type | Description |
51
+ | --------------- | ---------------------------------------------------------------------------------------------------------------------- | -------- |
52
+ | `Activity` | On-chain activity record (trade, liquidity, red packet). Contains `from`/`to` tokens, dex info, status, and timestamp. |
53
+ | `ActivityToken` | Token within an activity: address, symbol, amount, USD values. |
54
+ | `ActivityDex` | DEX where the activity occurred: name, image, protocol family, program address. |
55
+ | `Trade` | Narrowed subset of `Activity` with `type: "buy" | "sell"`. |
56
+
57
+ ### Domain Interfaces — Wallet & Portfolio
58
+
59
+ | Type | Description |
60
+ | --------------------- | -------------------------------------------------------------------------------------------------- |
61
+ | `Portfolio` | Wallet's token holding: price, amount, decimals (in USD and native). |
62
+ | `PortfolioPnl` | Per-token PnL details: buy/sell volumes, avg prices, realized/unrealized profit. |
63
+ | `WalletPnl` | Wallet-level PnL summary: win rate, total trades, profit breakdown. |
64
+ | `WalletPortfolioPnls` | Paginated portfolio PnL list with wallet-level summary (extends `WalletPnl` + `CursorPagination`). |
65
+ | `WalletPortfolios` | Paginated wallet portfolios with total balance (extends `CursorPagination`). |
66
+
67
+ ### API Contract — Pagination
68
+
69
+ | Type | Description |
70
+ | ------------------- | ---------------------------------------------------------------------------------------- |
71
+ | `CursorPagination` | Shared cursor-based pagination fields: `startCursor`, `endCursor`, `hasPrev`, `hasNext`. |
72
+ | `CursorList<T>` | Generic paginated result: `data: T[]` + `CursorPagination`. |
73
+ | `CursorListOptions` | Query options: `cursor`, `limit`, `direction`. |
74
+
75
+ ### API Contract — Query Options
76
+
77
+ | Type | Description |
78
+ | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- |
79
+ | `GetTokenCandlesOptions` | Candle query options: `after`, `before` (Date), `limit`. |
80
+ | `GetTokenListOptions` | Token list options: `sortBy`, `sortDirection`, `filters`, `keywords`, `excludeKeywords`. |
81
+ | `SearchTokensOptions` | Search options (extends `CursorListOptions`): `chains`, `keyword`, `filters`, `sortBy`, `sortDirection`. |
82
+ | `SearchTokenCursorList` | Search result (extends `CursorList<Token>`): adds `total` count and `extra` metadata. |
83
+ | `TokenFilterOption` | Filter descriptor: `field` (TokenFieldOption), `operator` (eq/gt/between/in/…), `value`. |
84
+ | `GetTradesOptions` | Trade query options (extends `CursorListOptions`): `before`, `after`, `beforeBlockHeight`, `afterBlockHeight`, `type`, `poolAddress`. |
85
+ | `GetActivitiesOptions` | Activity query options (extends `CursorListOptions`): same time/block filters plus `type` (ActivityType). |
86
+
87
+ ### API Contract — Swap & Transaction
88
+
89
+ | Type | Description |
90
+ | --------------- | ----------------------------------------------------------------------------- |
91
+ | `SwapParams` | Swap request: chain, addresses, mode, amount, slippage, fees, anti-MEV flag. |
92
+ | `SwapRoute` | Swap response: serialized unsigned transaction + route plans. |
93
+ | `SwapRoutePlan` | Single route plan step: protocol name, input/output tokens and amounts, fees. |
94
+ | `SendTxParams` | Send transaction request: chain, signed serialized transaction, extras. |
95
+ | `SendTxResult` | Send transaction response: `txHash` + extras. |
96
+
97
+ ### API Contract — Client Interfaces
98
+
99
+ #### `IClient`
100
+
101
+ REST API client interface. Key methods:
102
+
103
+ ```typescript
104
+ interface IClient {
105
+ getToken(chain: Chain, address: string): Promise<Token>;
106
+ getTokens(chain: Chain, addresses: string[]): Promise<Token[]>;
107
+ getTokenCandles(chain, address, resolution, options?): Promise<TokenCandle[]>;
108
+ getTokenSecurity(chain, address): Promise<TokenSecurity>;
109
+ getTokenStats(chain, address): Promise<TokenStats>;
110
+ getTokenHolders(chain, address, options?): Promise<CursorList<TokenHolder>>;
111
+ getTokenMarketData(chain, address): Promise<TokenMarketData>;
112
+ getNewTokens(chain, options?): Promise<Token[]>;
113
+ getFinalStretchTokens(chain, options?): Promise<Token[]>;
114
+ getMigratedTokens(chain, options?): Promise<Token[]>;
115
+ getTrendingTokens(chain, resolution, options?): Promise<Token[]>;
116
+ getStockTokens(chain, options?): Promise<Token[]>;
117
+ searchTokens(options?): Promise<SearchTokenCursorList>;
118
+ swapRoute(params: SwapParams): Promise<SwapRoute>;
119
+ sendTx(params: SendTxParams): Promise<SendTxResult>;
120
+ checkTxSuccess(chain, txHash, timeout?): Promise<boolean>;
121
+ getWalletPortfolios(chain, address, options?): Promise<WalletPortfolios>;
122
+ getWalletPnl(chain, address, resolution?): Promise<WalletPnl>;
123
+ getWalletPortfolioPnls(
124
+ chain,
125
+ address,
126
+ options?,
127
+ ): Promise<WalletPortfolioPnls>;
128
+ getWalletPortfoliosByTokens(
129
+ chain,
130
+ address,
131
+ tokenAddresses,
132
+ ): Promise<Portfolio[]>;
133
+ getWalletPortfolioPnlsByTokens(
134
+ chain,
135
+ address,
136
+ tokenAddresses,
137
+ ): Promise<PortfolioPnl[]>;
138
+ getWalletTrades(chain, address, options?): Promise<CursorList<Trade>>;
139
+ getTokenTrades(chain, address, options?): Promise<CursorList<Trade>>;
140
+ getWalletActivities(chain, address, options?): Promise<CursorList<Activity>>;
141
+ getTokenActivities(chain, address, options?): Promise<CursorList<Activity>>;
142
+ getPresignedUploadUrl(): Promise<string>;
143
+ }
144
+ ```
145
+
146
+ #### `ISubscribeClient`
147
+
148
+ WebSocket subscription interface for real-time updates:
149
+
150
+ ```typescript
151
+ interface ISubscribeClient {
152
+ subscribeToken(chain, address, callback): ISubscription;
153
+ subscribeTokenCandles(chain, address, resolution, callback): ISubscription;
154
+ subscribeWalletPnl(chain, address, callback): ISubscription;
155
+ subscribeWalletPortfolios(chain, address, callback): ISubscription;
156
+ subscribeWalletPortfolioPnls(chain, address, callback): ISubscription;
157
+ subscribeWalletTrades(chain, address, callback): ISubscription;
158
+ subscribeTokenTrades(chain, address, callback): ISubscription;
159
+ subscribeWalletActivities(chain, address, callback): ISubscription;
160
+ subscribeTokenActivities(chain, address, callback): ISubscription;
161
+ subscribeNewTokens(chain, callback): ISubscription;
162
+ subscribeTrendingTokens(chain, callback): ISubscription;
163
+ subscribeMigratedTokens(chain, callback): ISubscription;
164
+ subscribeFinalStretchTokens(chain, callback): ISubscription;
165
+ subscribeStockTokens(chain, callback): ISubscription;
166
+ }
167
+ ```
168
+
169
+ #### `ISubscription`
170
+
171
+ ```typescript
172
+ interface ISubscription {
173
+ unsubscribe(): void;
174
+ }
175
+ ```
176
+
177
+ ### Subscription Data Types
178
+
179
+ | Type | Description |
180
+ | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- |
181
+ | `TokenSubscribed` | Incremental token update — `chain` + `address` required, all other `Token` fields optional (`undefined` = not included in this push). |
182
+ | `WalletPnlSubscribed` | `WalletPnl` extended with optional `resolution` field. |
183
+ | `PortfolioSubscribed` | Lightweight portfolio update: chain, wallet address, token address, price, amount. |
184
+ | `PortfolioPnlSubscribed` | Partial `PortfolioPnl` keyed by `walletAddress` + `tokenAddress`. |
185
+
186
+ ### Type Aliases
187
+
188
+ | Type | Definition | Description |
189
+ | -------------------- | --------------------------------------------------------------------- | -------------------------------------------------- |
190
+ | `TokenProtocol` | `SolanaTokenProtocol \| (string & {})` | Open union for token launch protocols. |
191
+ | `ActivityType` | `"buy" \| "sell" \| "liquidity_initialize" \| "liquidity_add" \| ...` | All known on-chain activity types. |
192
+ | `TokenResolution` | `"1s" \| "15s" \| "30s" \| "1m" \| ... \| "24h"` | Candlestick / stats time resolution. |
193
+ | `TrendingResolution` | `Extract<TokenResolution, "1m" \| "5m" \| "1h" \| "4h" \| "24h">` | Subset of resolutions supported by trending lists. |
194
+ | `TokenFieldOption` | 50+ string literals + `(string & {})` | Sortable / filterable token field identifiers. |
195
+
196
+ ### Constants
197
+
198
+ | Name | Type | Description |
199
+ | ------------------------ | ----------------------- | ----------------------------------------------- |
200
+ | `SOLANA_TOKEN_PROTOCOLS` | `SolanaTokenProtocol[]` | Array of all `SolanaTokenProtocol` enum values. |
201
+ | `version` | `string` | Current package version. |
202
+
203
+ ### Namespace
204
+
205
+ | Name | Description |
206
+ | ----- | ------------------------------------------------------------------------------------------------------------ |
207
+ | `API` | Re-exports all types from `./api` as a single namespace for backward-compatible access (e.g. `API.IClient`). |
208
+
209
+ ## Usage Examples
210
+
211
+ ### Import domain types
212
+
213
+ ```typescript
214
+ import { Chain, Token, Activity } from "@liberfi.io/types";
215
+
216
+ function formatToken(token: Token): string {
217
+ return `${token.symbol} on chain ${token.chain}`;
218
+ }
219
+ ```
220
+
221
+ ### Type-safe API client implementation
222
+
223
+ ```typescript
224
+ import {
225
+ IClient,
226
+ Chain,
227
+ Token,
228
+ CursorList,
229
+ TokenHolder,
230
+ } from "@liberfi.io/types";
231
+
232
+ class MyClient implements IClient {
233
+ async getToken(chain: Chain, address: string): Promise<Token> {
234
+ const res = await fetch(`/api/tokens/${chain}/${address}`);
235
+ return res.json();
236
+ }
237
+ // ... implement remaining methods
238
+ }
239
+ ```
240
+
241
+ ### Filter tokens with TokenFilterOption
242
+
243
+ ```typescript
244
+ import type { TokenFilterOption, GetTokenListOptions } from "@liberfi.io/types";
245
+
246
+ const options: GetTokenListOptions = {
247
+ sortBy: "volumes24h",
248
+ sortDirection: "desc",
249
+ filters: [
250
+ { field: "marketCap", operator: "gte", value: "100000" },
251
+ { field: "holders", operator: "gte", value: "50" },
252
+ ],
253
+ };
254
+ ```
255
+
256
+ ### Subscribe to real-time updates
257
+
258
+ ```typescript
259
+ import type {
260
+ ISubscribeClient,
261
+ Chain,
262
+ TokenSubscribed,
263
+ } from "@liberfi.io/types";
264
+
265
+ function watchToken(client: ISubscribeClient, chain: Chain, address: string) {
266
+ const sub = client.subscribeToken(
267
+ chain,
268
+ address,
269
+ (updates: TokenSubscribed[]) => {
270
+ for (const update of updates) {
271
+ if (update.marketData?.priceInUsd) {
272
+ console.log(`Price: $${update.marketData.priceInUsd}`);
273
+ }
274
+ }
275
+ },
276
+ );
277
+ return () => sub.unsubscribe();
278
+ }
279
+ ```
280
+
281
+ ## Future Improvements
282
+
283
+ - Deduplicate `version.ts` global side effect across packages into a shared utility.
284
+ - Extract `HolderTagBreakdown` sub-type from `TokenMarketData` to reduce repeated field triples.
285
+ - Generate `TokenFieldOption` via template literal types instead of maintaining 50+ manual entries.
286
+ - Complete `TokenSecurity` interface (currently has a `TODO` for additional security checks).
287
+ - Consider auto-generating the `Chain` enum from a canonical chain registry.
288
+ - Document or mitigate the `version.ts` multi-instance overwrite concern in SSR environments.
package/dist/index.d.mts CHANGED
@@ -1564,6 +1564,6 @@ declare global {
1564
1564
  };
1565
1565
  }
1566
1566
  }
1567
- declare const _default: "0.1.27";
1567
+ declare const _default: "0.1.28";
1568
1568
 
1569
1569
  export { index as API, type Activity, type ActivityDex, type ActivityToken, type ActivityType, Chain, ChainNamespace, type CursorList, type CursorListOptions, type CursorPagination, type GetActivitiesOptions, type GetTokenCandlesOptions, type GetTokenListOptions, type GetTradesOptions, type IClient, type ISubscribeClient, type ISubscription, type Portfolio, type PortfolioPnl, type PortfolioPnlSubscribed, type PortfolioSubscribed, SOLANA_TOKEN_PROTOCOLS, type SearchTokenCursorList, type SearchTokensOptions, type SendTxParams, type SendTxResult, SolanaTokenProtocol, SwapMode, type SwapParams, type SwapRoute, type SwapRoutePlan, type Token, type TokenCandle, type TokenCreator, type TokenFieldOption, type TokenFilterOption, type TokenHolder, type TokenLaunchedFrom, type TokenLiquidity, type TokenMarketData, type TokenMigratedTo, type TokenProtocol, type TokenResolution, type TokenSecurity, type TokenSocialMedias, type TokenStats, type TokenStatsByResolution, type TokenSubscribed, type Trade, type TrendingResolution, type WalletPnl, type WalletPnlSubscribed, type WalletPortfolioPnls, type WalletPortfolios, _default as version };
package/dist/index.d.ts CHANGED
@@ -1564,6 +1564,6 @@ declare global {
1564
1564
  };
1565
1565
  }
1566
1566
  }
1567
- declare const _default: "0.1.27";
1567
+ declare const _default: "0.1.28";
1568
1568
 
1569
1569
  export { index as API, type Activity, type ActivityDex, type ActivityToken, type ActivityType, Chain, ChainNamespace, type CursorList, type CursorListOptions, type CursorPagination, type GetActivitiesOptions, type GetTokenCandlesOptions, type GetTokenListOptions, type GetTradesOptions, type IClient, type ISubscribeClient, type ISubscription, type Portfolio, type PortfolioPnl, type PortfolioPnlSubscribed, type PortfolioSubscribed, SOLANA_TOKEN_PROTOCOLS, type SearchTokenCursorList, type SearchTokensOptions, type SendTxParams, type SendTxResult, SolanaTokenProtocol, SwapMode, type SwapParams, type SwapRoute, type SwapRoutePlan, type Token, type TokenCandle, type TokenCreator, type TokenFieldOption, type TokenFilterOption, type TokenHolder, type TokenLaunchedFrom, type TokenLiquidity, type TokenMarketData, type TokenMigratedTo, type TokenProtocol, type TokenResolution, type TokenSecurity, type TokenSocialMedias, type TokenStats, type TokenStatsByResolution, type TokenSubscribed, type Trade, type TrendingResolution, type WalletPnl, type WalletPnlSubscribed, type WalletPortfolioPnls, type WalletPortfolios, _default as version };
package/dist/index.js CHANGED
@@ -46,9 +46,9 @@ var SwapMode = /* @__PURE__ */ ((SwapMode2) => {
46
46
  // src/version.ts
47
47
  if (typeof window !== "undefined") {
48
48
  window.__LIBERFI_VERSION__ = window.__LIBERFI_VERSION__ || {};
49
- window.__LIBERFI_VERSION__["@liberfi.io/types"] = "0.1.27";
49
+ window.__LIBERFI_VERSION__["@liberfi.io/types"] = "0.1.28";
50
50
  }
51
- var version_default = "0.1.27";
51
+ var version_default = "0.1.28";
52
52
 
53
53
  // src/chains.ts
54
54
  var Chain = /* @__PURE__ */ ((Chain2) => {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/api/index.ts","../src/api/dex.ts","../src/version.ts","../src/chains.ts","../src/token.ts"],"sourcesContent":["import * as API from \"./api\";\n\nexport { default as version } from \"./version\";\nexport * from \"./api\";\nexport * from \"./activity\";\nexport * from \"./chains\";\nexport * from \"./token\";\nexport * from \"./wallet\";\n\n// Re-export as API namespace for backward compatibility\nexport { API };\n","export * from \"./dex\";\nexport * from \"./pagination\";\n","import { Activity, ActivityType, Trade } from \"../activity\";\nimport { Chain } from \"../chains\";\nimport {\n Token,\n TokenCandle,\n TokenHolder,\n TokenMarketData,\n TokenResolution,\n TokenSecurity,\n TokenStats,\n} from \"../token\";\nimport {\n Portfolio,\n PortfolioPnl,\n WalletPnl,\n WalletPortfolioPnls,\n WalletPortfolios,\n} from \"../wallet\";\nimport { CursorPagination } from \"./pagination\";\n\n/**\n * Cursor list result data\n */\nexport interface CursorList<T> extends CursorPagination {\n data: Array<T>;\n}\n\n/**\n * Cursor list query options\n */\nexport interface CursorListOptions {\n /** query cursor */\n cursor?: string;\n /** return limit */\n limit?: number;\n /** query direction */\n direction?: \"next\" | \"prev\";\n}\n\n/**\n * Options for getting token candles\n */\nexport interface GetTokenCandlesOptions {\n /** query candles after this timestamp */\n after?: Date;\n /** query candles before this timestamp */\n before?: Date;\n /** return limit */\n limit?: number;\n}\n\n/**\n * Token field for filtering\n */\nexport type TokenFieldOption =\n | \"price\"\n | \"priceChange1m\"\n | \"priceChange5m\"\n | \"priceChange15m\"\n | \"priceChange30m\"\n | \"priceChange1h\"\n | \"priceChange4h\"\n | \"priceChange24h\"\n | \"marketCap\"\n | \"tvl\"\n | \"top10Holdings\"\n | \"top10Ratio\"\n | \"top100Holdings\"\n | \"top100Ratio\"\n | \"holders\"\n | \"creatorsHoldings\"\n | \"creatorsRatio\"\n | \"buys1m\"\n | \"buys5m\"\n | \"buys15m\"\n | \"buys30m\"\n | \"buys1h\"\n | \"buys4h\"\n | \"buys24h\"\n | \"sells1m\"\n | \"sells5m\"\n | \"sells15m\"\n | \"sells30m\"\n | \"sells1h\"\n | \"sells4h\"\n | \"sells24h\"\n | \"trades1m\"\n | \"trades5m\"\n | \"trades15m\"\n | \"trades30m\"\n | \"trades1h\"\n | \"trades4h\"\n | \"trades24h\"\n | \"traders1m\"\n | \"traders5m\"\n | \"traders15m\"\n | \"traders30m\"\n | \"traders1h\"\n | \"traders4h\"\n | \"traders24h\"\n | \"volumes1m\"\n | \"volumes5m\"\n | \"volumes15m\"\n | \"volumes30m\"\n | \"volumes1h\"\n | \"volumes4h\"\n | \"volumes24h\"\n | \"launchedFromProtocolFamily\"\n | \"migratedToProtocolFamily\"\n | \"tag\"\n | \"createdAt\"\n | (string & {});\n\n/**\n * Token filter option\n */\nexport interface TokenFilterOption {\n field: TokenFieldOption;\n operator:\n | \"eq\"\n | \"ne\"\n | \"gt\"\n | \"gte\"\n | \"lt\"\n | \"lte\"\n | \"between\"\n | \"in\"\n | \"nin\"\n | \"contains\"\n | \"notContains\"\n | \"startsWith\"\n | \"endsWith\"\n | \"isNotNull\"\n | \"isNull\";\n value?: string | number | boolean | Array<string | number | boolean>;\n}\n\n/**\n * Options for getting token list\n */\nexport interface GetTokenListOptions {\n /** sort field */\n sortBy?: TokenFieldOption;\n /** sort direction */\n sortDirection?: \"asc\" | \"desc\";\n /** filters */\n filters?: Array<TokenFilterOption>;\n /** search keywords */\n keywords?: Array<string>;\n /** exclude keywords */\n excludeKeywords?: Array<string>;\n}\n\n/**\n * Options for searching tokens\n */\nexport interface SearchTokensOptions extends CursorListOptions {\n /** chains */\n chains?: Array<Chain>;\n /** search keyword */\n keyword?: string;\n /** filters */\n filters?: Array<TokenFilterOption>;\n /** sort field */\n sortBy?: TokenFieldOption;\n /** sort direction */\n sortDirection?: \"asc\" | \"desc\";\n}\n\n/**\n * Search token cursor list\n */\nexport interface SearchTokenCursorList extends CursorList<Token> {\n /** total count */\n total?: number;\n /** extra infos by api provider */\n extra?: Record<string, unknown>;\n}\n\nexport enum SwapMode {\n EXACT_IN = \"exact_in\",\n EXACT_OUT = \"exact_out\",\n}\n\nexport interface SwapParams {\n /** chain id */\n chain: Chain;\n /** user wallet address */\n userAddress: string;\n /** input token address */\n input: string;\n /** output token address */\n output: string;\n /** swap mode, e.g. ExactIn, ExactOut */\n mode: SwapMode;\n /** input token amount when mode is ExactIn, output token amount when mode is ExactOut */\n amount: string;\n /** slippage, range is 0-100 */\n slippage?: number;\n /** priority fee */\n priorityFee?: string;\n /** tip fee */\n tipFee?: string;\n /** whether to use anti-MEV */\n isAntiMev?: boolean;\n}\n\nexport interface SwapRoutePlan {\n /** protocol name / dex name etc. */\n name: string;\n /** input token address */\n input: string;\n /** input token amount */\n inputAmount: string;\n /** output token address */\n output: string;\n /** output token amount */\n outputAmount: string;\n /** fee quote token address */\n feeQuote?: string;\n /** fee amount */\n feeAmount?: string;\n /** extra infos by api provider */\n extra?: Record<string, unknown>;\n}\n\nexport interface SwapRoute {\n /** unsigned tx in base64 format */\n serializedTx: string;\n /** swap plans */\n plans: Array<SwapRoutePlan>;\n /** extra infos by api provider */\n extra?: Record<string, unknown>;\n}\n\nexport interface SendTxParams {\n /** chain id */\n chain: Chain;\n /** signed tx in base64 format */\n serializedTx: string;\n /** extra infos needed by api provider */\n extra?: Record<string, unknown>;\n}\n\nexport interface SendTxResult {\n /** tx hash */\n txHash: string;\n /** extra infos by api provider */\n extra?: Record<string, unknown>;\n}\n\n/**\n * Options for getting trades\n */\nexport interface GetTradesOptions extends CursorListOptions {\n /** filter trades before this timestamp */\n before?: Date;\n /** filter trades after this timestamp */\n after?: Date;\n /** filter trades before this block height */\n beforeBlockHeight?: number;\n /** filter trades after this block height */\n afterBlockHeight?: number;\n /** filter trades by type */\n type?: \"buy\" | \"sell\";\n /** filter trades by pool address */\n poolAddress?: string;\n}\n\n/**\n * Options for getting activities\n */\nexport interface GetActivitiesOptions extends CursorListOptions {\n /** filter activities before this timestamp */\n before?: Date;\n /** filter activities after this timestamp */\n after?: Date;\n /** filter activities before this block height */\n beforeBlockHeight?: number;\n /** filter activities after this block height */\n afterBlockHeight?: number;\n /** filter activities by type */\n type?: ActivityType;\n /** filter activities by pool address */\n poolAddress?: string;\n}\n\n/**\n * Resolution subset supported by the trending token list.\n */\nexport type TrendingResolution = Extract<\n TokenResolution,\n \"1m\" | \"5m\" | \"1h\" | \"4h\" | \"24h\"\n>;\n\n/**\n * API client interface\n */\nexport interface IClient {\n /**\n * fetch token info\n * @param chain chain id\n * @param address token address\n * @returns token info\n */\n getToken(chain: Chain, address: string): Promise<Token>;\n\n /**\n * fetch token infos in batch\n * @param chain chain id\n * @param addresses token addresses\n * @returns token infos\n */\n getTokens(chain: Chain, addresses: Array<string>): Promise<Array<Token>>;\n\n /**\n * fetch token candles\n * @param chain chain id\n * @param address token address\n * @param resolution token resolution\n * @param options optional query options\n * @returns token candles\n */\n getTokenCandles(\n chain: Chain,\n address: string,\n resolution: TokenResolution,\n options?: GetTokenCandlesOptions,\n ): Promise<Array<TokenCandle>>;\n\n /**\n * fetch token security\n * @param chain chain id\n * @param address token address\n * @returns token security\n */\n getTokenSecurity(chain: Chain, address: string): Promise<TokenSecurity>;\n\n /**\n * fetch token stats\n * @param chain chain id\n * @param address token address\n * @returns token stats\n */\n getTokenStats(chain: Chain, address: string): Promise<TokenStats>;\n\n /**\n * fetch token holders\n * @param chain chain id\n * @param address token address\n * @param options optional query options\n * @returns token holders\n */\n getTokenHolders(\n chain: Chain,\n address: string,\n options?: CursorListOptions,\n ): Promise<CursorList<TokenHolder>>;\n\n /**\n * fetch token market data\n * @param chain chain id\n * @param address token address\n * @returns token market data\n */\n getTokenMarketData(chain: Chain, address: string): Promise<TokenMarketData>;\n\n /**\n * fetch `New` token list\n * @param chain chain id\n * @param options optional query options\n * @returns `New` token list\n */\n getNewTokens(\n chain: Chain,\n options?: GetTokenListOptions,\n ): Promise<Array<Token>>;\n\n /**\n * fetch `Final Stretch` token list\n * @param chain chain id\n * @param options optional query options\n * @returns `Final Stretch` token list\n */\n getFinalStretchTokens(\n chain: Chain,\n options?: GetTokenListOptions,\n ): Promise<Array<Token>>;\n\n /**\n * fetch `Migrated` token list\n * @param chain chain id\n * @param options optional query options\n * @returns `Migrated` token list\n */\n getMigratedTokens(\n chain: Chain,\n options?: GetTokenListOptions,\n ): Promise<Array<Token>>;\n\n /**\n * fetch `Trending` token list\n * @param chain chain id\n * @param resolution query resolution, e.g. \"1m\", \"5m\", \"1h\", \"4h\", \"24h\"\n * @param options optional query options\n * @returns `Trending` token list\n */\n getTrendingTokens(\n chain: Chain,\n resolution: TrendingResolution,\n options?: GetTokenListOptions,\n ): Promise<Array<Token>>;\n\n /**\n * fetch `Stock` token list\n * @param chain chain id\n * @param options optional query options\n * @returns `Stock` token list\n */\n getStockTokens(\n chain: Chain,\n options?: GetTokenListOptions,\n ): Promise<Array<Token>>;\n\n /**\n * search tokens\n * @param options optional query options\n * @returns search token cursor list\n */\n searchTokens(options?: SearchTokensOptions): Promise<SearchTokenCursorList>;\n\n /**\n * fetch swap route plans\n * @param params swap params\n * @returns swap route plans\n */\n swapRoute(params: SwapParams): Promise<SwapRoute>;\n\n /**\n * send tx\n * @param params send tx params\n * @returns send tx result\n */\n sendTx(params: SendTxParams): Promise<SendTxResult>;\n\n /**\n * check if tx is successful\n * @param chain chain id\n * @param txHash tx hash\n * @param timeout timeout in milliseconds\n * @returns true if tx is successful, false otherwise\n */\n checkTxSuccess(\n chain: Chain,\n txHash: string,\n timeout?: number,\n ): Promise<boolean>;\n\n /**\n * fetch wallet portfolios\n * @param chain chain id\n * @param address wallet address\n * @param options optional pagination options\n * @returns wallet portfolios\n */\n getWalletPortfolios(\n chain: Chain,\n address: string,\n options?: { cursor?: string; limit?: number },\n ): Promise<WalletPortfolios>;\n\n /**\n * fetch wallet PnL summary\n * @param chain chain id\n * @param address wallet address\n * @param resolution pnl resolution (e.g. \"7d\", \"30d\")\n * @returns wallet pnl summary\n */\n getWalletPnl(\n chain: Chain,\n address: string,\n resolution?: string,\n ): Promise<WalletPnl>;\n\n /**\n * fetch wallet portfolio PnL details (per-token)\n * @param chain chain id\n * @param address wallet address\n * @param options optional query options\n * @returns portfolio pnl list with summary\n */\n getWalletPortfolioPnls(\n chain: Chain,\n address: string,\n options?: { cursor?: string; limit?: number },\n ): Promise<WalletPortfolioPnls>;\n\n /**\n * fetch wallet portfolios for specific tokens\n * @param chain chain id\n * @param address wallet address\n * @param tokenAddresses token addresses to query\n * @returns portfolio list for the specified tokens\n */\n getWalletPortfoliosByTokens(\n chain: Chain,\n address: string,\n tokenAddresses: Array<string>,\n ): Promise<Array<Portfolio>>;\n\n /**\n * fetch wallet portfolio PnL for specific tokens\n * @param chain chain id\n * @param address wallet address\n * @param tokenAddresses token addresses to query\n * @returns portfolio pnl list for the specified tokens\n */\n getWalletPortfolioPnlsByTokens(\n chain: Chain,\n address: string,\n tokenAddresses: Array<string>,\n ): Promise<Array<PortfolioPnl>>;\n\n /**\n * fetch wallet's trade activities\n * @param chain chain id\n * @param address wallet address\n * @param options optional query options\n * @returns wallet's trade activities\n */\n getWalletTrades(\n chain: Chain,\n address: string,\n options?: GetTradesOptions,\n ): Promise<CursorList<Trade>>;\n\n /**\n * fetch token's trade activities\n * @param chain chain id\n * @param address token address\n * @param options optional query options\n * @returns token's trade activities\n */\n getTokenTrades(\n chain: Chain,\n address: string,\n options?: GetTradesOptions,\n ): Promise<CursorList<Trade>>;\n\n /**\n * fetch wallet's activities (trades, liquidity, red packets, etc.)\n * @param chain chain id\n * @param address wallet address\n * @param options optional query options\n * @returns wallet's activities\n */\n getWalletActivities(\n chain: Chain,\n address: string,\n options?: GetActivitiesOptions,\n ): Promise<CursorList<Activity>>;\n\n /**\n * fetch token's activities (trades, liquidity, red packets, etc.)\n * @param chain chain id\n * @param address token address\n * @param options optional query options\n * @returns token's activities\n */\n getTokenActivities(\n chain: Chain,\n address: string,\n options?: GetActivitiesOptions,\n ): Promise<CursorList<Activity>>;\n\n /**\n * get presigned upload url\n * @returns presigned upload url\n */\n getPresignedUploadUrl(): Promise<string>;\n}\n\nexport interface ISubscription {\n unsubscribe(): void;\n}\n\n/**\n * Incremental token update from subscriptions.\n * `chain` + `address` identify the token; all other fields are optional —\n * `undefined` means this push did not carry that field.\n */\nexport type TokenSubscribed = Partial<Omit<Token, \"chain\" | \"address\">> &\n Pick<Token, \"chain\" | \"address\">;\n\nexport interface WalletPnlSubscribed extends WalletPnl {\n /** pnl resolution (e.g. \"7d\", \"30d\") */\n resolution?: string;\n}\n\nexport interface PortfolioSubscribed {\n /** chain id */\n chain: Chain;\n /** wallet address */\n walletAddress: string;\n /** token address */\n tokenAddress: string;\n /** token current price in usd */\n priceInUsd?: string;\n /** holding token amount */\n amount?: string;\n}\n\nexport type PortfolioPnlSubscribed = Partial<\n Omit<PortfolioPnl, \"address\" | \"name\" | \"symbol\" | \"image\">\n> & {\n /** wallet address */\n walletAddress: string;\n /** token address */\n tokenAddress: string;\n};\n\n/**\n * Subscribe client interface\n */\nexport interface ISubscribeClient {\n /**\n * Subscribe to a token's real-time data updates (stats, market data,\n * holders, liquidity, etc.). The client internally manages multiple\n * backend channels and delivers incremental updates via `callback`.\n * @param chain chain id\n * @param address token address\n * @param callback receives incremental token updates\n * @returns subscription\n */\n subscribeToken(\n chain: Chain,\n address: string,\n callback: (data: Array<TokenSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe token new candles\n * @param chain chain id\n * @param address token address\n * @param resolution token resolution\n * @param callback callback function\n * @returns subscription\n */\n subscribeTokenCandles(\n chain: Chain,\n address: string,\n resolution: TokenResolution,\n callback: (candles: Array<TokenCandle>) => void,\n ): ISubscription;\n\n /**\n * Subscribe wallet's pnl changes\n * @param chain chain id\n * @param address wallet address\n * @param callback callback function\n * @returns subscription\n */\n subscribeWalletPnl(\n chain: Chain,\n address: string,\n callback: (pnls: Array<WalletPnlSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe wallet's portfolio changes\n * @param chain chain id\n * @param address wallet address\n * @param callback callback function\n * @returns subscription\n */\n subscribeWalletPortfolios(\n chain: Chain,\n address: string,\n callback: (portfolios: Array<PortfolioSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe wallet's portfolio pnl changes\n * @param chain chain id\n * @param address wallet address\n * @param callback callback function\n * @returns subscription\n */\n subscribeWalletPortfolioPnls(\n chain: Chain,\n address: string,\n callback: (portfolioPnls: Array<PortfolioPnlSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe wallet's new trade activities\n * @param chain chain id\n * @param address wallet address\n * @param callback callback function\n * @returns subscription\n */\n subscribeWalletTrades(\n chain: Chain,\n address: string,\n callback: (trades: Array<Trade>) => void,\n ): ISubscription;\n\n /**\n * Subscribe token's new trade activities\n * @param chain chain id\n * @param address token address\n * @param callback callback function\n * @returns subscription\n */\n subscribeTokenTrades(\n chain: Chain,\n address: string,\n callback: (trades: Array<Trade>) => void,\n ): ISubscription;\n\n /**\n * Subscribe wallet's new activities (trades, liquidity, etc.)\n * @param chain chain id\n * @param address wallet address\n * @param callback callback function\n * @returns subscription\n */\n subscribeWalletActivities(\n chain: Chain,\n address: string,\n callback: (activities: Array<Activity>) => void,\n ): ISubscription;\n\n /**\n * Subscribe token's new activities (trades, liquidity, etc.)\n * @param chain chain id\n * @param address token address\n * @param callback callback function\n * @returns subscription\n */\n subscribeTokenActivities(\n chain: Chain,\n address: string,\n callback: (activities: Array<Activity>) => void,\n ): ISubscription;\n\n /**\n * Subscribe to `New` token list real-time updates. The client internally\n * manages multiple backend channels (new token events, metadata, stats,\n * holders, supply, liquidity, bonding curve) and delivers incremental\n * updates via `callback`.\n * @param chain chain id\n * @param callback receives incremental token updates\n * @returns subscription\n */\n subscribeNewTokens(\n chain: Chain,\n callback: (data: Array<TokenSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe to `Trending` token list real-time updates. The client\n * internally manages multiple backend channels (stats, holders, supply,\n * liquidity) and delivers incremental updates via `callback`.\n * @param chain chain id\n * @param callback receives incremental token updates\n * @returns subscription\n */\n subscribeTrendingTokens(\n chain: Chain,\n callback: (data: Array<TokenSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe to `Migrated` token list real-time updates. The client\n * internally manages multiple backend channels (stats, holders, supply,\n * liquidity) and delivers incremental updates via `callback`.\n * @param chain chain id\n * @param callback receives incremental token updates\n * @returns subscription\n */\n subscribeMigratedTokens(\n chain: Chain,\n callback: (data: Array<TokenSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe to `FinalStretch` token list real-time updates. The client\n * internally manages multiple backend channels (stats, holders, supply,\n * liquidity, bonding curve) and delivers incremental updates via `callback`.\n * @param chain chain id\n * @param callback receives incremental token updates\n * @returns subscription\n */\n subscribeFinalStretchTokens(\n chain: Chain,\n callback: (data: Array<TokenSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe to `Stock` token list real-time updates. The client internally\n * manages multiple backend channels (stats, holders, supply, liquidity)\n * and delivers incremental updates via `callback`.\n * @param chain chain id\n * @param callback receives incremental token updates\n * @returns subscription\n */\n subscribeStockTokens(\n chain: Chain,\n callback: (data: Array<TokenSubscribed>) => void,\n ): ISubscription;\n}\n","declare global {\n interface Window {\n __LIBERFI_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif (typeof window !== \"undefined\") {\n window.__LIBERFI_VERSION__ = window.__LIBERFI_VERSION__ || {};\n window.__LIBERFI_VERSION__[\"@liberfi.io/types\"] = \"0.1.27\";\n}\n\nexport default \"0.1.27\";\n","export enum Chain {\n ETHEREUM = \"1\",\n UBIQ = \"8\",\n OPTIMISM = \"10\",\n FLARE = \"14\",\n SONGBIRD = \"19\",\n ELASTOS = \"20\",\n KARDIA = \"24\",\n CRONOS = \"25\",\n RSK = \"30\",\n TELOS = \"40\",\n LUKSO = \"42\",\n CRAB = \"44\",\n DARWINIA = \"46\",\n XDC = \"50\",\n CSC = \"52\",\n ZYX = \"55\",\n BINANCE = \"56\",\n BINANCE_TESTNET = \"97\",\n SYSCOIN = \"57\",\n GOCHAIN = \"60\",\n ETHEREUMCLASSIC = \"61\",\n OKEXCHAIN = \"66\",\n HOO = \"70\",\n METER = \"82\",\n NOVA_NETWORK = \"87\",\n TOMOCHAIN = \"88\",\n BITKUB = \"96\",\n XDAI = \"100\",\n VELAS = \"106\",\n THUNDERCORE = \"108\",\n ENULS = \"119\",\n FUSE = \"122\",\n HECO = \"128\",\n UNICHAIN = \"130\",\n POLYGON = \"137\",\n SONIC = \"146\",\n SHIMMER_EVM = \"148\",\n RBN = \"151\",\n OMNI = \"166\",\n MANTA = \"169\",\n HSK = \"177\",\n WATER = \"181\",\n XLAYER = \"196\",\n XDAIARB = \"200\",\n OP_BNB = \"204\",\n VINUCHAIN = \"207\",\n ENERGYWEB = \"246\",\n OASYS = \"248\",\n FANTOM = \"250\",\n FRAXTAL = \"252\",\n HPB = \"269\",\n BOBA = \"288\",\n OMAX = \"311\",\n FILECOIN = \"314\",\n KUCOIN = \"321\",\n ZKSYNC_ERA = \"324\",\n SHIDEN = \"336\",\n THETA = \"361\",\n PULSE = \"369\",\n CRONOS_ZKEVM = \"388\",\n SX = \"416\",\n AREON = \"463\",\n WC = \"480\",\n CANDLE = \"534\",\n ROLLUX = \"570\",\n ASTAR = \"592\",\n REDSTONE = \"690\",\n MATCHAIN = \"698\",\n CALLISTO = \"820\",\n TARA = \"841\",\n WANCHAIN = \"888\",\n LYRA_CHAIN = \"957\",\n BIFROST = \"996\",\n CONFLUX = \"1030\",\n METIS = \"1088\",\n DYMENSION = \"1100\",\n POLYGON_ZKEVM = \"1101\",\n CORE = \"1116\",\n LISK = \"1135\",\n ULTRON = \"1231\",\n STEP = \"1234\",\n MOONBEAM = \"1284\",\n MOONRIVER = \"1285\",\n SEI = \"1329\",\n LIVING_ASSETS_MAINNET = \"1440\",\n STY = \"1514\",\n TENET = \"1559\",\n GRAVITY = \"1625\",\n REYA_NETWORK = \"1729\",\n SONEIUM = \"1868\",\n SWELLCHAIN = \"1923\",\n ONUS = \"1975\",\n HUBBLENET = \"1992\",\n SANKO = \"1996\",\n DOGECHAIN = \"2000\",\n MILKOMEDA = \"2001\",\n MILKOMEDA_A1 = \"2002\",\n KAVA = \"2222\",\n SOMA = \"2332\",\n KARAK = \"2410\",\n ABSTRACT = \"2741\",\n ABSTRACT_TESTNET = \"11124\",\n MORPH = \"2818\",\n CROSSFI = \"4158\",\n BEAM = \"4337\",\n IOTEX = \"4689\",\n MANTLE = \"5000\",\n XLC = \"5050\",\n NAHMII = \"5551\",\n BOUNCEBIT = \"6001\",\n TOMBCHAIN = \"6969\",\n ZETACHAIN = \"7000\",\n PLANQ = \"7070\",\n BITROCK = \"7171\",\n XSAT = \"7200\",\n CYETH = \"7560\",\n CANTO = \"7700\",\n KLAYTN = \"8217\",\n THAT = \"8428\",\n BASE = \"8453\",\n HELA = \"8668\",\n IOTAEVM = \"8822\",\n JBC = \"8899\",\n EVMOS = \"9001\",\n CARBON = \"9790\",\n SMARTBCH = \"10000\",\n ARTELA = \"11820\",\n IMMUTABLE_ZKEVM = \"13371\",\n LOOP = \"15551\",\n GENESYS = \"16507\",\n EOS_EVM = \"17777\",\n MAP_PROTOCOL = \"22776\",\n SAPPHIRE = \"23294\",\n BITGERT = \"32520\",\n FUSION = \"32659\",\n ZILLIQA = \"32769\",\n APECHAIN = \"33139\",\n EDU_CHAIN = \"41923\",\n ARBITRUM = \"42161\",\n ARBITRUM_TESTNET_GOERLI = \"421613\",\n ARBITRUM_TESTNET_SEPOLIA = \"421614\",\n ARBITRUM_NOVA = \"42170\",\n CELO = \"42220\",\n OASIS = \"42262\",\n ASSETCHAIN = \"42420\",\n ETHERLINK = \"42793\",\n AVALANCHE = \"43114\",\n REI = \"47805\",\n ZIRCUIT = \"48900\",\n SOPHON = \"50104\",\n ETN = \"52014\",\n SUPERPOSITION = \"55244\",\n REICHAIN = \"55555\",\n BOBA_BNB = \"56288\",\n INK = \"57073\",\n LINEA = \"59144\",\n BOB = \"60808\",\n GODWOKEN = \"71402\",\n BERACHAIN = \"80094\",\n BLAST = \"81457\",\n CHILIZ = \"88888\",\n STRATIS = \"105105\",\n REAL = \"111188\",\n ODYSSEY = \"153153\",\n TAIKO = \"167000\",\n BITLAYER = \"200901\",\n HYDRATION = \"222222\",\n PAREX = \"322202\",\n POLIS = \"333999\",\n KEKCHAIN = \"420420\",\n SCROLL = \"534352\",\n ZERO_NETWORK = \"543210\",\n ZKLINK_NOVA = \"810180\",\n VISION = \"888888\",\n SAAKURU = \"7225878\",\n ZORA = \"7777777\",\n CORN = \"21000000\",\n NEON = \"245022934\",\n LUMIA = \"994873017\",\n AURORA = \"1313161554\",\n HARMONY = \"1666600000\",\n PALM = \"11297108109\",\n ZENIQ = \"383414847825\",\n CURIO = \"836542336838601\",\n MODE = \"34443\",\n SOLANA = \"900900900\",\n SOLANA_TESTNET = \"901901901\",\n SOLANA_DEVNET = \"902902902\",\n}\n\nexport enum ChainNamespace {\n EVM = \"EVM\",\n SOLANA = \"SOL\",\n}\n","import { Chain } from \"./chains\";\n\nexport enum SolanaTokenProtocol {\n BAGS = \"bags\",\n BELIEVE = \"believe\",\n BONK = \"bonk\",\n BOOP = \"boop\",\n HEAVEN = \"heaven\",\n JUPSTUDIO = \"jupstudio\",\n LAUNCHLAB = \"launchlab\",\n METEORA = \"meteora\",\n MOONIT = \"moonit\",\n MOONSHOT = \"moonshot\",\n ORCA = \"orca\",\n PUMP = \"pump\",\n RAYDIUM = \"raydium\",\n SUGAR = \"sugar\",\n VIRTUAL_CURVE = \"virtual-curve\",\n PUMP_AMM = \"pump-amm\",\n}\n\nexport type TokenProtocol = SolanaTokenProtocol | (string & {});\n\nexport const SOLANA_TOKEN_PROTOCOLS = Object.values(SolanaTokenProtocol);\n\nexport interface Token {\n /**\n * chain id.\n */\n chain: Chain;\n /**\n * token name, e.g. \"Ethereum\", \"Solana\", etc.\n */\n name: string;\n /**\n * token symbol, e.g. \"ETH\", \"SOL\", etc.\n */\n symbol: string;\n /**\n * token address.\n */\n address: string;\n /**\n * token decimals.\n */\n decimals: number;\n /**\n * token avatar image url.\n */\n image?: string;\n /**\n * token description.\n */\n description?: string;\n /**\n * token creators.\n */\n creators?: Array<TokenCreator>;\n /**\n * token launch info.\n */\n launchedFrom?: TokenLaunchedFrom;\n /**\n * token migrate progress, range is 0-100.\n */\n migrateProgress?: string;\n /**\n * token migrate info.\n */\n migratedTo?: TokenMigratedTo;\n /**\n * token social medias.\n */\n socialMedias?: TokenSocialMedias;\n /**\n * token stats.\n */\n stats?: TokenStats;\n /**\n * token market data.\n */\n marketData?: TokenMarketData;\n /**\n * token liquidity pools\n */\n liquidities?: Array<TokenLiquidity>;\n /**\n * token security.\n */\n security?: TokenSecurity;\n /**\n * token tags.\n */\n tags?: Array<string>;\n /**\n * token create time.\n */\n createdAt?: Date;\n}\n\nexport interface TokenCreator {\n /**\n * token creator's wallet address.\n */\n address?: string;\n /**\n * token creator's share percentage, range is 0-100.\n */\n share?: number;\n /**\n * whether the token creator is verified.\n */\n isVerified?: boolean;\n}\n\nexport interface TokenLaunchedFrom {\n /**\n * token launch program address.\n */\n programAddress?: string;\n /**\n * token launch protocol family.\n */\n protocolFamily?: string;\n}\n\nexport interface TokenMigratedTo {\n /**\n * token migrate program address.\n */\n programAddress?: string;\n /**\n * token migrate protocol family.\n */\n protocolFamily?: string;\n /**\n * token migrate pool address.\n */\n poolAddress?: string;\n /**\n * token migrate time.\n */\n migratedAt?: Date;\n}\n\nexport interface TokenSocialMedias {\n /**\n * token twitter url.\n */\n twitter?: string;\n /**\n * token telegram url.\n */\n telegram?: string;\n /**\n * token website url.\n */\n website?: string;\n /**\n * token tiktok url.\n */\n tiktok?: string;\n /**\n * token discord url.\n */\n discord?: string;\n /**\n * token facebook url.\n */\n facebook?: string;\n /**\n * token github url.\n */\n github?: string;\n /**\n * token instagram url.\n */\n instagram?: string;\n /**\n * token linkedin url.\n */\n linkedin?: string;\n /**\n * token medium url.\n */\n medium?: string;\n /**\n * token reddit url.\n */\n reddit?: string;\n /**\n * token youtube url.\n */\n youtube?: string;\n /**\n * token bitbucket url.\n */\n bitbucket?: string;\n}\n\nexport interface TokenStats {\n /**\n * token stats by 1m timeframe.\n */\n \"1m\"?: TokenStatsByResolution;\n /**\n * token stats by 5m timeframe.\n */\n \"5m\"?: TokenStatsByResolution;\n /**\n * token stats by 15m timeframe.\n */\n \"15m\"?: TokenStatsByResolution;\n /**\n * token stats by 30m timeframe.\n */\n \"30m\"?: TokenStatsByResolution;\n /**\n * token stats by 1h timeframe.\n */\n \"1h\"?: TokenStatsByResolution;\n /**\n * token stats by 4h timeframe.\n */\n \"4h\"?: TokenStatsByResolution;\n /**\n * token stats by 24h timeframe.\n */\n \"24h\"?: TokenStatsByResolution;\n}\n\nexport interface TokenStatsByResolution {\n /**\n * buy txs count\n */\n buys?: number;\n /**\n * sell txs count\n */\n sells?: number;\n /**\n * txs count\n */\n trades?: number;\n /**\n * buy addresses count\n */\n buyers?: number;\n /**\n * sell addresses count\n */\n sellers?: number;\n /**\n * trade addresses count\n */\n traders?: number;\n /**\n * buy volumes in quote token\n */\n buyVolumes?: string;\n /**\n * sell volumes in quote token\n */\n sellVolumes?: string;\n /**\n * total volumes in quote token\n */\n volumes?: string;\n /**\n * buy volumes in usd\n */\n buyVolumesInUsd?: string;\n /**\n * sell volumes in usd\n */\n sellVolumesInUsd?: string;\n /**\n * total volumes in usd\n */\n volumesInUsd?: string;\n /**\n * open price in usd\n */\n openPriceInUsd?: string;\n /**\n * close price in usd\n */\n closePriceInUsd?: string;\n /**\n * high price in usd\n */\n highPriceInUsd?: string;\n /**\n * low price in usd\n */\n lowPriceInUsd?: string;\n /**\n * price in usd\n */\n priceInUsd?: string;\n /**\n * price change %\n */\n priceChange?: string;\n}\n\nexport interface TokenMarketData {\n /**\n * total supply\n */\n totalSupply?: string;\n /**\n * market cap in quote token\n */\n marketCap?: string;\n /**\n * market cap in usd\n */\n marketCapInUsd?: string;\n /**\n * price in quote token\n */\n price?: string;\n /**\n * price in usd\n */\n priceInUsd?: string;\n /**\n * tvl in quote token\n */\n tvl?: string;\n /**\n * tvl in usd\n */\n tvlInUsd?: string;\n /**\n * holders count\n */\n holders?: number;\n /**\n * top 10 total holdings\n */\n top10Holdings?: string;\n /**\n * top 10 holdings ratio\n */\n top10HoldingsRatio?: string;\n /**\n * top 50 total holdings\n */\n top50Holdings?: string;\n /**\n * top 50 holdings ratio\n */\n top50HoldingsRatio?: string;\n /**\n * top 100 total holdings\n */\n top100Holdings?: string;\n /**\n * top 100 holdings ratio\n */\n top100HoldingsRatio?: string;\n /**\n * Bluechip holders count\n */\n bluechipHolders?: number;\n /**\n * Bluechip total holdings\n */\n bluechipHoldings?: string;\n /**\n * Bluechip holdings ratio\n */\n bluechipHoldingsRatio?: string;\n /**\n * KOL holders count\n */\n kolHolders?: number;\n /**\n * KOL total holdings\n */\n kolHoldings?: string;\n /**\n * KOL holdings ratio\n */\n kolHoldingsRatio?: string;\n /**\n * Sniper holders count\n */\n sniperHolders?: number;\n /**\n * Sniper total holdings\n */\n sniperHoldings?: string;\n /**\n * Sniper holdings ratio\n */\n sniperHoldingsRatio?: string;\n /**\n * Pro holders count\n */\n proHolders?: number;\n /**\n * Pro total holdings\n */\n proHoldings?: string;\n /**\n * Pro holdings ratio\n */\n proHoldingsRatio?: string;\n /**\n * Insider holders count\n */\n insiderHolders?: number;\n /**\n * Insider total holdings\n */\n insiderHoldings?: string;\n /**\n * Insider holdings ratio\n */\n insiderHoldingsRatio?: string;\n /**\n * Sandwich holders count\n */\n sandwichHolders?: number;\n /**\n * Sandwich total holdings\n */\n sandwichHoldings?: string;\n /**\n * Sandwich holdings ratio\n */\n sandwichHoldingsRatio?: string;\n /**\n * Fresh holders count\n */\n freshHolders?: number;\n /**\n * Fresh total holdings\n */\n freshHoldings?: string;\n /**\n * Fresh holdings ratio\n */\n freshHoldingsRatio?: string;\n /**\n * Bundle holders count\n */\n bundleHolders?: number;\n /**\n * Bundle total holdings\n */\n bundleHoldings?: string;\n /**\n * Bundle holdings ratio\n */\n bundleHoldingsRatio?: string;\n /**\n * Dev holders count\n */\n devHolders?: number;\n /**\n * Dev total holdings\n */\n devHoldings?: string;\n /**\n * Dev holdings ratio\n */\n devHoldingsRatio?: string;\n}\n\nexport interface TokenLiquidity {\n /**\n * pool avatar image\n */\n image?: string;\n /**\n * pair token address.\n */\n pairAddress?: string;\n /**\n * pool address.\n */\n poolAddress?: string;\n /**\n * program address.\n */\n programAddress?: string;\n /**\n * protocol name.\n */\n protocolName?: string;\n /**\n * protocol family.\n */\n protocolFamily?: string;\n /**\n * tvl in quote token.\n */\n tvl?: string;\n /**\n * tvl in usd.\n */\n tvlInUsd?: string;\n}\n\n/**\n * TODO: more security checks\n */\nexport interface TokenSecurity {\n /**\n * whether the token has transfer fee.\n */\n hasTransferFee?: boolean;\n /**\n * whether the token transfer fee is upgradable.\n */\n isTransferFeeUpgradable?: boolean;\n /**\n * whether the token is transferable.\n */\n isTransferable?: boolean;\n /**\n * whether the token is freezable.\n */\n isFreezable?: boolean;\n /**\n * whether the token is closable.\n */\n isClosable?: boolean;\n}\n\nexport type TokenResolution =\n | \"1s\"\n | \"15s\"\n | \"30s\"\n | \"1m\"\n | \"5m\"\n | \"15m\"\n | \"30m\"\n | \"1h\"\n | \"4h\"\n | \"12h\"\n | \"24h\";\n\nexport interface TokenCandle {\n /**\n * open price in usd\n */\n open: string;\n /**\n * close price in usd\n */\n close: string;\n /**\n * high price in usd\n */\n high: string;\n /**\n * low price in usd\n */\n low: string;\n /**\n * volume in usd\n */\n volume: string;\n /**\n * resolution\n */\n resolution: TokenResolution;\n /**\n * timestamp\n */\n timestamp: Date;\n}\n\nexport interface TokenHolder {\n /**\n * holder wallet address\n */\n address: string;\n /**\n * holdings amount in token\n */\n amount: string;\n /**\n * holdings amount in usd\n */\n amountInUsd: string;\n /**\n * holdings ratio, range is 0-100\n */\n ratio: string;\n}\n"],"mappings":"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","names":["SwapMode","Chain","ChainNamespace","SolanaTokenProtocol"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/api/index.ts","../src/api/dex.ts","../src/version.ts","../src/chains.ts","../src/token.ts"],"sourcesContent":["import * as API from \"./api\";\n\nexport { default as version } from \"./version\";\nexport * from \"./api\";\nexport * from \"./activity\";\nexport * from \"./chains\";\nexport * from \"./token\";\nexport * from \"./wallet\";\n\n// Re-export as API namespace for backward compatibility\nexport { API };\n","export * from \"./dex\";\nexport * from \"./pagination\";\n","import { Activity, ActivityType, Trade } from \"../activity\";\nimport { Chain } from \"../chains\";\nimport {\n Token,\n TokenCandle,\n TokenHolder,\n TokenMarketData,\n TokenResolution,\n TokenSecurity,\n TokenStats,\n} from \"../token\";\nimport {\n Portfolio,\n PortfolioPnl,\n WalletPnl,\n WalletPortfolioPnls,\n WalletPortfolios,\n} from \"../wallet\";\nimport { CursorPagination } from \"./pagination\";\n\n/**\n * Cursor list result data\n */\nexport interface CursorList<T> extends CursorPagination {\n data: Array<T>;\n}\n\n/**\n * Cursor list query options\n */\nexport interface CursorListOptions {\n /** query cursor */\n cursor?: string;\n /** return limit */\n limit?: number;\n /** query direction */\n direction?: \"next\" | \"prev\";\n}\n\n/**\n * Options for getting token candles\n */\nexport interface GetTokenCandlesOptions {\n /** query candles after this timestamp */\n after?: Date;\n /** query candles before this timestamp */\n before?: Date;\n /** return limit */\n limit?: number;\n}\n\n/**\n * Token field for filtering\n */\nexport type TokenFieldOption =\n | \"price\"\n | \"priceChange1m\"\n | \"priceChange5m\"\n | \"priceChange15m\"\n | \"priceChange30m\"\n | \"priceChange1h\"\n | \"priceChange4h\"\n | \"priceChange24h\"\n | \"marketCap\"\n | \"tvl\"\n | \"top10Holdings\"\n | \"top10Ratio\"\n | \"top100Holdings\"\n | \"top100Ratio\"\n | \"holders\"\n | \"creatorsHoldings\"\n | \"creatorsRatio\"\n | \"buys1m\"\n | \"buys5m\"\n | \"buys15m\"\n | \"buys30m\"\n | \"buys1h\"\n | \"buys4h\"\n | \"buys24h\"\n | \"sells1m\"\n | \"sells5m\"\n | \"sells15m\"\n | \"sells30m\"\n | \"sells1h\"\n | \"sells4h\"\n | \"sells24h\"\n | \"trades1m\"\n | \"trades5m\"\n | \"trades15m\"\n | \"trades30m\"\n | \"trades1h\"\n | \"trades4h\"\n | \"trades24h\"\n | \"traders1m\"\n | \"traders5m\"\n | \"traders15m\"\n | \"traders30m\"\n | \"traders1h\"\n | \"traders4h\"\n | \"traders24h\"\n | \"volumes1m\"\n | \"volumes5m\"\n | \"volumes15m\"\n | \"volumes30m\"\n | \"volumes1h\"\n | \"volumes4h\"\n | \"volumes24h\"\n | \"launchedFromProtocolFamily\"\n | \"migratedToProtocolFamily\"\n | \"tag\"\n | \"createdAt\"\n | (string & {});\n\n/**\n * Token filter option\n */\nexport interface TokenFilterOption {\n field: TokenFieldOption;\n operator:\n | \"eq\"\n | \"ne\"\n | \"gt\"\n | \"gte\"\n | \"lt\"\n | \"lte\"\n | \"between\"\n | \"in\"\n | \"nin\"\n | \"contains\"\n | \"notContains\"\n | \"startsWith\"\n | \"endsWith\"\n | \"isNotNull\"\n | \"isNull\";\n value?: string | number | boolean | Array<string | number | boolean>;\n}\n\n/**\n * Options for getting token list\n */\nexport interface GetTokenListOptions {\n /** sort field */\n sortBy?: TokenFieldOption;\n /** sort direction */\n sortDirection?: \"asc\" | \"desc\";\n /** filters */\n filters?: Array<TokenFilterOption>;\n /** search keywords */\n keywords?: Array<string>;\n /** exclude keywords */\n excludeKeywords?: Array<string>;\n}\n\n/**\n * Options for searching tokens\n */\nexport interface SearchTokensOptions extends CursorListOptions {\n /** chains */\n chains?: Array<Chain>;\n /** search keyword */\n keyword?: string;\n /** filters */\n filters?: Array<TokenFilterOption>;\n /** sort field */\n sortBy?: TokenFieldOption;\n /** sort direction */\n sortDirection?: \"asc\" | \"desc\";\n}\n\n/**\n * Search token cursor list\n */\nexport interface SearchTokenCursorList extends CursorList<Token> {\n /** total count */\n total?: number;\n /** extra infos by api provider */\n extra?: Record<string, unknown>;\n}\n\nexport enum SwapMode {\n EXACT_IN = \"exact_in\",\n EXACT_OUT = \"exact_out\",\n}\n\nexport interface SwapParams {\n /** chain id */\n chain: Chain;\n /** user wallet address */\n userAddress: string;\n /** input token address */\n input: string;\n /** output token address */\n output: string;\n /** swap mode, e.g. ExactIn, ExactOut */\n mode: SwapMode;\n /** input token amount when mode is ExactIn, output token amount when mode is ExactOut */\n amount: string;\n /** slippage, range is 0-100 */\n slippage?: number;\n /** priority fee */\n priorityFee?: string;\n /** tip fee */\n tipFee?: string;\n /** whether to use anti-MEV */\n isAntiMev?: boolean;\n}\n\nexport interface SwapRoutePlan {\n /** protocol name / dex name etc. */\n name: string;\n /** input token address */\n input: string;\n /** input token amount */\n inputAmount: string;\n /** output token address */\n output: string;\n /** output token amount */\n outputAmount: string;\n /** fee quote token address */\n feeQuote?: string;\n /** fee amount */\n feeAmount?: string;\n /** extra infos by api provider */\n extra?: Record<string, unknown>;\n}\n\nexport interface SwapRoute {\n /** unsigned tx in base64 format */\n serializedTx: string;\n /** swap plans */\n plans: Array<SwapRoutePlan>;\n /** extra infos by api provider */\n extra?: Record<string, unknown>;\n}\n\nexport interface SendTxParams {\n /** chain id */\n chain: Chain;\n /** signed tx in base64 format */\n serializedTx: string;\n /** extra infos needed by api provider */\n extra?: Record<string, unknown>;\n}\n\nexport interface SendTxResult {\n /** tx hash */\n txHash: string;\n /** extra infos by api provider */\n extra?: Record<string, unknown>;\n}\n\n/**\n * Options for getting trades\n */\nexport interface GetTradesOptions extends CursorListOptions {\n /** filter trades before this timestamp */\n before?: Date;\n /** filter trades after this timestamp */\n after?: Date;\n /** filter trades before this block height */\n beforeBlockHeight?: number;\n /** filter trades after this block height */\n afterBlockHeight?: number;\n /** filter trades by type */\n type?: \"buy\" | \"sell\";\n /** filter trades by pool address */\n poolAddress?: string;\n}\n\n/**\n * Options for getting activities\n */\nexport interface GetActivitiesOptions extends CursorListOptions {\n /** filter activities before this timestamp */\n before?: Date;\n /** filter activities after this timestamp */\n after?: Date;\n /** filter activities before this block height */\n beforeBlockHeight?: number;\n /** filter activities after this block height */\n afterBlockHeight?: number;\n /** filter activities by type */\n type?: ActivityType;\n /** filter activities by pool address */\n poolAddress?: string;\n}\n\n/**\n * Resolution subset supported by the trending token list.\n */\nexport type TrendingResolution = Extract<\n TokenResolution,\n \"1m\" | \"5m\" | \"1h\" | \"4h\" | \"24h\"\n>;\n\n/**\n * API client interface\n */\nexport interface IClient {\n /**\n * fetch token info\n * @param chain chain id\n * @param address token address\n * @returns token info\n */\n getToken(chain: Chain, address: string): Promise<Token>;\n\n /**\n * fetch token infos in batch\n * @param chain chain id\n * @param addresses token addresses\n * @returns token infos\n */\n getTokens(chain: Chain, addresses: Array<string>): Promise<Array<Token>>;\n\n /**\n * fetch token candles\n * @param chain chain id\n * @param address token address\n * @param resolution token resolution\n * @param options optional query options\n * @returns token candles\n */\n getTokenCandles(\n chain: Chain,\n address: string,\n resolution: TokenResolution,\n options?: GetTokenCandlesOptions,\n ): Promise<Array<TokenCandle>>;\n\n /**\n * fetch token security\n * @param chain chain id\n * @param address token address\n * @returns token security\n */\n getTokenSecurity(chain: Chain, address: string): Promise<TokenSecurity>;\n\n /**\n * fetch token stats\n * @param chain chain id\n * @param address token address\n * @returns token stats\n */\n getTokenStats(chain: Chain, address: string): Promise<TokenStats>;\n\n /**\n * fetch token holders\n * @param chain chain id\n * @param address token address\n * @param options optional query options\n * @returns token holders\n */\n getTokenHolders(\n chain: Chain,\n address: string,\n options?: CursorListOptions,\n ): Promise<CursorList<TokenHolder>>;\n\n /**\n * fetch token market data\n * @param chain chain id\n * @param address token address\n * @returns token market data\n */\n getTokenMarketData(chain: Chain, address: string): Promise<TokenMarketData>;\n\n /**\n * fetch `New` token list\n * @param chain chain id\n * @param options optional query options\n * @returns `New` token list\n */\n getNewTokens(\n chain: Chain,\n options?: GetTokenListOptions,\n ): Promise<Array<Token>>;\n\n /**\n * fetch `Final Stretch` token list\n * @param chain chain id\n * @param options optional query options\n * @returns `Final Stretch` token list\n */\n getFinalStretchTokens(\n chain: Chain,\n options?: GetTokenListOptions,\n ): Promise<Array<Token>>;\n\n /**\n * fetch `Migrated` token list\n * @param chain chain id\n * @param options optional query options\n * @returns `Migrated` token list\n */\n getMigratedTokens(\n chain: Chain,\n options?: GetTokenListOptions,\n ): Promise<Array<Token>>;\n\n /**\n * fetch `Trending` token list\n * @param chain chain id\n * @param resolution query resolution, e.g. \"1m\", \"5m\", \"1h\", \"4h\", \"24h\"\n * @param options optional query options\n * @returns `Trending` token list\n */\n getTrendingTokens(\n chain: Chain,\n resolution: TrendingResolution,\n options?: GetTokenListOptions,\n ): Promise<Array<Token>>;\n\n /**\n * fetch `Stock` token list\n * @param chain chain id\n * @param options optional query options\n * @returns `Stock` token list\n */\n getStockTokens(\n chain: Chain,\n options?: GetTokenListOptions,\n ): Promise<Array<Token>>;\n\n /**\n * search tokens\n * @param options optional query options\n * @returns search token cursor list\n */\n searchTokens(options?: SearchTokensOptions): Promise<SearchTokenCursorList>;\n\n /**\n * fetch swap route plans\n * @param params swap params\n * @returns swap route plans\n */\n swapRoute(params: SwapParams): Promise<SwapRoute>;\n\n /**\n * send tx\n * @param params send tx params\n * @returns send tx result\n */\n sendTx(params: SendTxParams): Promise<SendTxResult>;\n\n /**\n * check if tx is successful\n * @param chain chain id\n * @param txHash tx hash\n * @param timeout timeout in milliseconds\n * @returns true if tx is successful, false otherwise\n */\n checkTxSuccess(\n chain: Chain,\n txHash: string,\n timeout?: number,\n ): Promise<boolean>;\n\n /**\n * fetch wallet portfolios\n * @param chain chain id\n * @param address wallet address\n * @param options optional pagination options\n * @returns wallet portfolios\n */\n getWalletPortfolios(\n chain: Chain,\n address: string,\n options?: { cursor?: string; limit?: number },\n ): Promise<WalletPortfolios>;\n\n /**\n * fetch wallet PnL summary\n * @param chain chain id\n * @param address wallet address\n * @param resolution pnl resolution (e.g. \"7d\", \"30d\")\n * @returns wallet pnl summary\n */\n getWalletPnl(\n chain: Chain,\n address: string,\n resolution?: string,\n ): Promise<WalletPnl>;\n\n /**\n * fetch wallet portfolio PnL details (per-token)\n * @param chain chain id\n * @param address wallet address\n * @param options optional query options\n * @returns portfolio pnl list with summary\n */\n getWalletPortfolioPnls(\n chain: Chain,\n address: string,\n options?: { cursor?: string; limit?: number },\n ): Promise<WalletPortfolioPnls>;\n\n /**\n * fetch wallet portfolios for specific tokens\n * @param chain chain id\n * @param address wallet address\n * @param tokenAddresses token addresses to query\n * @returns portfolio list for the specified tokens\n */\n getWalletPortfoliosByTokens(\n chain: Chain,\n address: string,\n tokenAddresses: Array<string>,\n ): Promise<Array<Portfolio>>;\n\n /**\n * fetch wallet portfolio PnL for specific tokens\n * @param chain chain id\n * @param address wallet address\n * @param tokenAddresses token addresses to query\n * @returns portfolio pnl list for the specified tokens\n */\n getWalletPortfolioPnlsByTokens(\n chain: Chain,\n address: string,\n tokenAddresses: Array<string>,\n ): Promise<Array<PortfolioPnl>>;\n\n /**\n * fetch wallet's trade activities\n * @param chain chain id\n * @param address wallet address\n * @param options optional query options\n * @returns wallet's trade activities\n */\n getWalletTrades(\n chain: Chain,\n address: string,\n options?: GetTradesOptions,\n ): Promise<CursorList<Trade>>;\n\n /**\n * fetch token's trade activities\n * @param chain chain id\n * @param address token address\n * @param options optional query options\n * @returns token's trade activities\n */\n getTokenTrades(\n chain: Chain,\n address: string,\n options?: GetTradesOptions,\n ): Promise<CursorList<Trade>>;\n\n /**\n * fetch wallet's activities (trades, liquidity, red packets, etc.)\n * @param chain chain id\n * @param address wallet address\n * @param options optional query options\n * @returns wallet's activities\n */\n getWalletActivities(\n chain: Chain,\n address: string,\n options?: GetActivitiesOptions,\n ): Promise<CursorList<Activity>>;\n\n /**\n * fetch token's activities (trades, liquidity, red packets, etc.)\n * @param chain chain id\n * @param address token address\n * @param options optional query options\n * @returns token's activities\n */\n getTokenActivities(\n chain: Chain,\n address: string,\n options?: GetActivitiesOptions,\n ): Promise<CursorList<Activity>>;\n\n /**\n * get presigned upload url\n * @returns presigned upload url\n */\n getPresignedUploadUrl(): Promise<string>;\n}\n\nexport interface ISubscription {\n unsubscribe(): void;\n}\n\n/**\n * Incremental token update from subscriptions.\n * `chain` + `address` identify the token; all other fields are optional —\n * `undefined` means this push did not carry that field.\n */\nexport type TokenSubscribed = Partial<Omit<Token, \"chain\" | \"address\">> &\n Pick<Token, \"chain\" | \"address\">;\n\nexport interface WalletPnlSubscribed extends WalletPnl {\n /** pnl resolution (e.g. \"7d\", \"30d\") */\n resolution?: string;\n}\n\nexport interface PortfolioSubscribed {\n /** chain id */\n chain: Chain;\n /** wallet address */\n walletAddress: string;\n /** token address */\n tokenAddress: string;\n /** token current price in usd */\n priceInUsd?: string;\n /** holding token amount */\n amount?: string;\n}\n\nexport type PortfolioPnlSubscribed = Partial<\n Omit<PortfolioPnl, \"address\" | \"name\" | \"symbol\" | \"image\">\n> & {\n /** wallet address */\n walletAddress: string;\n /** token address */\n tokenAddress: string;\n};\n\n/**\n * Subscribe client interface\n */\nexport interface ISubscribeClient {\n /**\n * Subscribe to a token's real-time data updates (stats, market data,\n * holders, liquidity, etc.). The client internally manages multiple\n * backend channels and delivers incremental updates via `callback`.\n * @param chain chain id\n * @param address token address\n * @param callback receives incremental token updates\n * @returns subscription\n */\n subscribeToken(\n chain: Chain,\n address: string,\n callback: (data: Array<TokenSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe token new candles\n * @param chain chain id\n * @param address token address\n * @param resolution token resolution\n * @param callback callback function\n * @returns subscription\n */\n subscribeTokenCandles(\n chain: Chain,\n address: string,\n resolution: TokenResolution,\n callback: (candles: Array<TokenCandle>) => void,\n ): ISubscription;\n\n /**\n * Subscribe wallet's pnl changes\n * @param chain chain id\n * @param address wallet address\n * @param callback callback function\n * @returns subscription\n */\n subscribeWalletPnl(\n chain: Chain,\n address: string,\n callback: (pnls: Array<WalletPnlSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe wallet's portfolio changes\n * @param chain chain id\n * @param address wallet address\n * @param callback callback function\n * @returns subscription\n */\n subscribeWalletPortfolios(\n chain: Chain,\n address: string,\n callback: (portfolios: Array<PortfolioSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe wallet's portfolio pnl changes\n * @param chain chain id\n * @param address wallet address\n * @param callback callback function\n * @returns subscription\n */\n subscribeWalletPortfolioPnls(\n chain: Chain,\n address: string,\n callback: (portfolioPnls: Array<PortfolioPnlSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe wallet's new trade activities\n * @param chain chain id\n * @param address wallet address\n * @param callback callback function\n * @returns subscription\n */\n subscribeWalletTrades(\n chain: Chain,\n address: string,\n callback: (trades: Array<Trade>) => void,\n ): ISubscription;\n\n /**\n * Subscribe token's new trade activities\n * @param chain chain id\n * @param address token address\n * @param callback callback function\n * @returns subscription\n */\n subscribeTokenTrades(\n chain: Chain,\n address: string,\n callback: (trades: Array<Trade>) => void,\n ): ISubscription;\n\n /**\n * Subscribe wallet's new activities (trades, liquidity, etc.)\n * @param chain chain id\n * @param address wallet address\n * @param callback callback function\n * @returns subscription\n */\n subscribeWalletActivities(\n chain: Chain,\n address: string,\n callback: (activities: Array<Activity>) => void,\n ): ISubscription;\n\n /**\n * Subscribe token's new activities (trades, liquidity, etc.)\n * @param chain chain id\n * @param address token address\n * @param callback callback function\n * @returns subscription\n */\n subscribeTokenActivities(\n chain: Chain,\n address: string,\n callback: (activities: Array<Activity>) => void,\n ): ISubscription;\n\n /**\n * Subscribe to `New` token list real-time updates. The client internally\n * manages multiple backend channels (new token events, metadata, stats,\n * holders, supply, liquidity, bonding curve) and delivers incremental\n * updates via `callback`.\n * @param chain chain id\n * @param callback receives incremental token updates\n * @returns subscription\n */\n subscribeNewTokens(\n chain: Chain,\n callback: (data: Array<TokenSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe to `Trending` token list real-time updates. The client\n * internally manages multiple backend channels (stats, holders, supply,\n * liquidity) and delivers incremental updates via `callback`.\n * @param chain chain id\n * @param callback receives incremental token updates\n * @returns subscription\n */\n subscribeTrendingTokens(\n chain: Chain,\n callback: (data: Array<TokenSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe to `Migrated` token list real-time updates. The client\n * internally manages multiple backend channels (stats, holders, supply,\n * liquidity) and delivers incremental updates via `callback`.\n * @param chain chain id\n * @param callback receives incremental token updates\n * @returns subscription\n */\n subscribeMigratedTokens(\n chain: Chain,\n callback: (data: Array<TokenSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe to `FinalStretch` token list real-time updates. The client\n * internally manages multiple backend channels (stats, holders, supply,\n * liquidity, bonding curve) and delivers incremental updates via `callback`.\n * @param chain chain id\n * @param callback receives incremental token updates\n * @returns subscription\n */\n subscribeFinalStretchTokens(\n chain: Chain,\n callback: (data: Array<TokenSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe to `Stock` token list real-time updates. The client internally\n * manages multiple backend channels (stats, holders, supply, liquidity)\n * and delivers incremental updates via `callback`.\n * @param chain chain id\n * @param callback receives incremental token updates\n * @returns subscription\n */\n subscribeStockTokens(\n chain: Chain,\n callback: (data: Array<TokenSubscribed>) => void,\n ): ISubscription;\n}\n","declare global {\n interface Window {\n __LIBERFI_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif (typeof window !== \"undefined\") {\n window.__LIBERFI_VERSION__ = window.__LIBERFI_VERSION__ || {};\n window.__LIBERFI_VERSION__[\"@liberfi.io/types\"] = \"0.1.28\";\n}\n\nexport default \"0.1.28\";\n","export enum Chain {\n ETHEREUM = \"1\",\n UBIQ = \"8\",\n OPTIMISM = \"10\",\n FLARE = \"14\",\n SONGBIRD = \"19\",\n ELASTOS = \"20\",\n KARDIA = \"24\",\n CRONOS = \"25\",\n RSK = \"30\",\n TELOS = \"40\",\n LUKSO = \"42\",\n CRAB = \"44\",\n DARWINIA = \"46\",\n XDC = \"50\",\n CSC = \"52\",\n ZYX = \"55\",\n BINANCE = \"56\",\n BINANCE_TESTNET = \"97\",\n SYSCOIN = \"57\",\n GOCHAIN = \"60\",\n ETHEREUMCLASSIC = \"61\",\n OKEXCHAIN = \"66\",\n HOO = \"70\",\n METER = \"82\",\n NOVA_NETWORK = \"87\",\n TOMOCHAIN = \"88\",\n BITKUB = \"96\",\n XDAI = \"100\",\n VELAS = \"106\",\n THUNDERCORE = \"108\",\n ENULS = \"119\",\n FUSE = \"122\",\n HECO = \"128\",\n UNICHAIN = \"130\",\n POLYGON = \"137\",\n SONIC = \"146\",\n SHIMMER_EVM = \"148\",\n RBN = \"151\",\n OMNI = \"166\",\n MANTA = \"169\",\n HSK = \"177\",\n WATER = \"181\",\n XLAYER = \"196\",\n XDAIARB = \"200\",\n OP_BNB = \"204\",\n VINUCHAIN = \"207\",\n ENERGYWEB = \"246\",\n OASYS = \"248\",\n FANTOM = \"250\",\n FRAXTAL = \"252\",\n HPB = \"269\",\n BOBA = \"288\",\n OMAX = \"311\",\n FILECOIN = \"314\",\n KUCOIN = \"321\",\n ZKSYNC_ERA = \"324\",\n SHIDEN = \"336\",\n THETA = \"361\",\n PULSE = \"369\",\n CRONOS_ZKEVM = \"388\",\n SX = \"416\",\n AREON = \"463\",\n WC = \"480\",\n CANDLE = \"534\",\n ROLLUX = \"570\",\n ASTAR = \"592\",\n REDSTONE = \"690\",\n MATCHAIN = \"698\",\n CALLISTO = \"820\",\n TARA = \"841\",\n WANCHAIN = \"888\",\n LYRA_CHAIN = \"957\",\n BIFROST = \"996\",\n CONFLUX = \"1030\",\n METIS = \"1088\",\n DYMENSION = \"1100\",\n POLYGON_ZKEVM = \"1101\",\n CORE = \"1116\",\n LISK = \"1135\",\n ULTRON = \"1231\",\n STEP = \"1234\",\n MOONBEAM = \"1284\",\n MOONRIVER = \"1285\",\n SEI = \"1329\",\n LIVING_ASSETS_MAINNET = \"1440\",\n STY = \"1514\",\n TENET = \"1559\",\n GRAVITY = \"1625\",\n REYA_NETWORK = \"1729\",\n SONEIUM = \"1868\",\n SWELLCHAIN = \"1923\",\n ONUS = \"1975\",\n HUBBLENET = \"1992\",\n SANKO = \"1996\",\n DOGECHAIN = \"2000\",\n MILKOMEDA = \"2001\",\n MILKOMEDA_A1 = \"2002\",\n KAVA = \"2222\",\n SOMA = \"2332\",\n KARAK = \"2410\",\n ABSTRACT = \"2741\",\n ABSTRACT_TESTNET = \"11124\",\n MORPH = \"2818\",\n CROSSFI = \"4158\",\n BEAM = \"4337\",\n IOTEX = \"4689\",\n MANTLE = \"5000\",\n XLC = \"5050\",\n NAHMII = \"5551\",\n BOUNCEBIT = \"6001\",\n TOMBCHAIN = \"6969\",\n ZETACHAIN = \"7000\",\n PLANQ = \"7070\",\n BITROCK = \"7171\",\n XSAT = \"7200\",\n CYETH = \"7560\",\n CANTO = \"7700\",\n KLAYTN = \"8217\",\n THAT = \"8428\",\n BASE = \"8453\",\n HELA = \"8668\",\n IOTAEVM = \"8822\",\n JBC = \"8899\",\n EVMOS = \"9001\",\n CARBON = \"9790\",\n SMARTBCH = \"10000\",\n ARTELA = \"11820\",\n IMMUTABLE_ZKEVM = \"13371\",\n LOOP = \"15551\",\n GENESYS = \"16507\",\n EOS_EVM = \"17777\",\n MAP_PROTOCOL = \"22776\",\n SAPPHIRE = \"23294\",\n BITGERT = \"32520\",\n FUSION = \"32659\",\n ZILLIQA = \"32769\",\n APECHAIN = \"33139\",\n EDU_CHAIN = \"41923\",\n ARBITRUM = \"42161\",\n ARBITRUM_TESTNET_GOERLI = \"421613\",\n ARBITRUM_TESTNET_SEPOLIA = \"421614\",\n ARBITRUM_NOVA = \"42170\",\n CELO = \"42220\",\n OASIS = \"42262\",\n ASSETCHAIN = \"42420\",\n ETHERLINK = \"42793\",\n AVALANCHE = \"43114\",\n REI = \"47805\",\n ZIRCUIT = \"48900\",\n SOPHON = \"50104\",\n ETN = \"52014\",\n SUPERPOSITION = \"55244\",\n REICHAIN = \"55555\",\n BOBA_BNB = \"56288\",\n INK = \"57073\",\n LINEA = \"59144\",\n BOB = \"60808\",\n GODWOKEN = \"71402\",\n BERACHAIN = \"80094\",\n BLAST = \"81457\",\n CHILIZ = \"88888\",\n STRATIS = \"105105\",\n REAL = \"111188\",\n ODYSSEY = \"153153\",\n TAIKO = \"167000\",\n BITLAYER = \"200901\",\n HYDRATION = \"222222\",\n PAREX = \"322202\",\n POLIS = \"333999\",\n KEKCHAIN = \"420420\",\n SCROLL = \"534352\",\n ZERO_NETWORK = \"543210\",\n ZKLINK_NOVA = \"810180\",\n VISION = \"888888\",\n SAAKURU = \"7225878\",\n ZORA = \"7777777\",\n CORN = \"21000000\",\n NEON = \"245022934\",\n LUMIA = \"994873017\",\n AURORA = \"1313161554\",\n HARMONY = \"1666600000\",\n PALM = \"11297108109\",\n ZENIQ = \"383414847825\",\n CURIO = \"836542336838601\",\n MODE = \"34443\",\n SOLANA = \"900900900\",\n SOLANA_TESTNET = \"901901901\",\n SOLANA_DEVNET = \"902902902\",\n}\n\nexport enum ChainNamespace {\n EVM = \"EVM\",\n SOLANA = \"SOL\",\n}\n","import { Chain } from \"./chains\";\n\nexport enum SolanaTokenProtocol {\n BAGS = \"bags\",\n BELIEVE = \"believe\",\n BONK = \"bonk\",\n BOOP = \"boop\",\n HEAVEN = \"heaven\",\n JUPSTUDIO = \"jupstudio\",\n LAUNCHLAB = \"launchlab\",\n METEORA = \"meteora\",\n MOONIT = \"moonit\",\n MOONSHOT = \"moonshot\",\n ORCA = \"orca\",\n PUMP = \"pump\",\n RAYDIUM = \"raydium\",\n SUGAR = \"sugar\",\n VIRTUAL_CURVE = \"virtual-curve\",\n PUMP_AMM = \"pump-amm\",\n}\n\nexport type TokenProtocol = SolanaTokenProtocol | (string & {});\n\nexport const SOLANA_TOKEN_PROTOCOLS = Object.values(SolanaTokenProtocol);\n\nexport interface Token {\n /**\n * chain id.\n */\n chain: Chain;\n /**\n * token name, e.g. \"Ethereum\", \"Solana\", etc.\n */\n name: string;\n /**\n * token symbol, e.g. \"ETH\", \"SOL\", etc.\n */\n symbol: string;\n /**\n * token address.\n */\n address: string;\n /**\n * token decimals.\n */\n decimals: number;\n /**\n * token avatar image url.\n */\n image?: string;\n /**\n * token description.\n */\n description?: string;\n /**\n * token creators.\n */\n creators?: Array<TokenCreator>;\n /**\n * token launch info.\n */\n launchedFrom?: TokenLaunchedFrom;\n /**\n * token migrate progress, range is 0-100.\n */\n migrateProgress?: string;\n /**\n * token migrate info.\n */\n migratedTo?: TokenMigratedTo;\n /**\n * token social medias.\n */\n socialMedias?: TokenSocialMedias;\n /**\n * token stats.\n */\n stats?: TokenStats;\n /**\n * token market data.\n */\n marketData?: TokenMarketData;\n /**\n * token liquidity pools\n */\n liquidities?: Array<TokenLiquidity>;\n /**\n * token security.\n */\n security?: TokenSecurity;\n /**\n * token tags.\n */\n tags?: Array<string>;\n /**\n * token create time.\n */\n createdAt?: Date;\n}\n\nexport interface TokenCreator {\n /**\n * token creator's wallet address.\n */\n address?: string;\n /**\n * token creator's share percentage, range is 0-100.\n */\n share?: number;\n /**\n * whether the token creator is verified.\n */\n isVerified?: boolean;\n}\n\nexport interface TokenLaunchedFrom {\n /**\n * token launch program address.\n */\n programAddress?: string;\n /**\n * token launch protocol family.\n */\n protocolFamily?: string;\n}\n\nexport interface TokenMigratedTo {\n /**\n * token migrate program address.\n */\n programAddress?: string;\n /**\n * token migrate protocol family.\n */\n protocolFamily?: string;\n /**\n * token migrate pool address.\n */\n poolAddress?: string;\n /**\n * token migrate time.\n */\n migratedAt?: Date;\n}\n\nexport interface TokenSocialMedias {\n /**\n * token twitter url.\n */\n twitter?: string;\n /**\n * token telegram url.\n */\n telegram?: string;\n /**\n * token website url.\n */\n website?: string;\n /**\n * token tiktok url.\n */\n tiktok?: string;\n /**\n * token discord url.\n */\n discord?: string;\n /**\n * token facebook url.\n */\n facebook?: string;\n /**\n * token github url.\n */\n github?: string;\n /**\n * token instagram url.\n */\n instagram?: string;\n /**\n * token linkedin url.\n */\n linkedin?: string;\n /**\n * token medium url.\n */\n medium?: string;\n /**\n * token reddit url.\n */\n reddit?: string;\n /**\n * token youtube url.\n */\n youtube?: string;\n /**\n * token bitbucket url.\n */\n bitbucket?: string;\n}\n\nexport interface TokenStats {\n /**\n * token stats by 1m timeframe.\n */\n \"1m\"?: TokenStatsByResolution;\n /**\n * token stats by 5m timeframe.\n */\n \"5m\"?: TokenStatsByResolution;\n /**\n * token stats by 15m timeframe.\n */\n \"15m\"?: TokenStatsByResolution;\n /**\n * token stats by 30m timeframe.\n */\n \"30m\"?: TokenStatsByResolution;\n /**\n * token stats by 1h timeframe.\n */\n \"1h\"?: TokenStatsByResolution;\n /**\n * token stats by 4h timeframe.\n */\n \"4h\"?: TokenStatsByResolution;\n /**\n * token stats by 24h timeframe.\n */\n \"24h\"?: TokenStatsByResolution;\n}\n\nexport interface TokenStatsByResolution {\n /**\n * buy txs count\n */\n buys?: number;\n /**\n * sell txs count\n */\n sells?: number;\n /**\n * txs count\n */\n trades?: number;\n /**\n * buy addresses count\n */\n buyers?: number;\n /**\n * sell addresses count\n */\n sellers?: number;\n /**\n * trade addresses count\n */\n traders?: number;\n /**\n * buy volumes in quote token\n */\n buyVolumes?: string;\n /**\n * sell volumes in quote token\n */\n sellVolumes?: string;\n /**\n * total volumes in quote token\n */\n volumes?: string;\n /**\n * buy volumes in usd\n */\n buyVolumesInUsd?: string;\n /**\n * sell volumes in usd\n */\n sellVolumesInUsd?: string;\n /**\n * total volumes in usd\n */\n volumesInUsd?: string;\n /**\n * open price in usd\n */\n openPriceInUsd?: string;\n /**\n * close price in usd\n */\n closePriceInUsd?: string;\n /**\n * high price in usd\n */\n highPriceInUsd?: string;\n /**\n * low price in usd\n */\n lowPriceInUsd?: string;\n /**\n * price in usd\n */\n priceInUsd?: string;\n /**\n * price change %\n */\n priceChange?: string;\n}\n\nexport interface TokenMarketData {\n /**\n * total supply\n */\n totalSupply?: string;\n /**\n * market cap in quote token\n */\n marketCap?: string;\n /**\n * market cap in usd\n */\n marketCapInUsd?: string;\n /**\n * price in quote token\n */\n price?: string;\n /**\n * price in usd\n */\n priceInUsd?: string;\n /**\n * tvl in quote token\n */\n tvl?: string;\n /**\n * tvl in usd\n */\n tvlInUsd?: string;\n /**\n * holders count\n */\n holders?: number;\n /**\n * top 10 total holdings\n */\n top10Holdings?: string;\n /**\n * top 10 holdings ratio\n */\n top10HoldingsRatio?: string;\n /**\n * top 50 total holdings\n */\n top50Holdings?: string;\n /**\n * top 50 holdings ratio\n */\n top50HoldingsRatio?: string;\n /**\n * top 100 total holdings\n */\n top100Holdings?: string;\n /**\n * top 100 holdings ratio\n */\n top100HoldingsRatio?: string;\n /**\n * Bluechip holders count\n */\n bluechipHolders?: number;\n /**\n * Bluechip total holdings\n */\n bluechipHoldings?: string;\n /**\n * Bluechip holdings ratio\n */\n bluechipHoldingsRatio?: string;\n /**\n * KOL holders count\n */\n kolHolders?: number;\n /**\n * KOL total holdings\n */\n kolHoldings?: string;\n /**\n * KOL holdings ratio\n */\n kolHoldingsRatio?: string;\n /**\n * Sniper holders count\n */\n sniperHolders?: number;\n /**\n * Sniper total holdings\n */\n sniperHoldings?: string;\n /**\n * Sniper holdings ratio\n */\n sniperHoldingsRatio?: string;\n /**\n * Pro holders count\n */\n proHolders?: number;\n /**\n * Pro total holdings\n */\n proHoldings?: string;\n /**\n * Pro holdings ratio\n */\n proHoldingsRatio?: string;\n /**\n * Insider holders count\n */\n insiderHolders?: number;\n /**\n * Insider total holdings\n */\n insiderHoldings?: string;\n /**\n * Insider holdings ratio\n */\n insiderHoldingsRatio?: string;\n /**\n * Sandwich holders count\n */\n sandwichHolders?: number;\n /**\n * Sandwich total holdings\n */\n sandwichHoldings?: string;\n /**\n * Sandwich holdings ratio\n */\n sandwichHoldingsRatio?: string;\n /**\n * Fresh holders count\n */\n freshHolders?: number;\n /**\n * Fresh total holdings\n */\n freshHoldings?: string;\n /**\n * Fresh holdings ratio\n */\n freshHoldingsRatio?: string;\n /**\n * Bundle holders count\n */\n bundleHolders?: number;\n /**\n * Bundle total holdings\n */\n bundleHoldings?: string;\n /**\n * Bundle holdings ratio\n */\n bundleHoldingsRatio?: string;\n /**\n * Dev holders count\n */\n devHolders?: number;\n /**\n * Dev total holdings\n */\n devHoldings?: string;\n /**\n * Dev holdings ratio\n */\n devHoldingsRatio?: string;\n}\n\nexport interface TokenLiquidity {\n /**\n * pool avatar image\n */\n image?: string;\n /**\n * pair token address.\n */\n pairAddress?: string;\n /**\n * pool address.\n */\n poolAddress?: string;\n /**\n * program address.\n */\n programAddress?: string;\n /**\n * protocol name.\n */\n protocolName?: string;\n /**\n * protocol family.\n */\n protocolFamily?: string;\n /**\n * tvl in quote token.\n */\n tvl?: string;\n /**\n * tvl in usd.\n */\n tvlInUsd?: string;\n}\n\n/**\n * TODO: more security checks\n */\nexport interface TokenSecurity {\n /**\n * whether the token has transfer fee.\n */\n hasTransferFee?: boolean;\n /**\n * whether the token transfer fee is upgradable.\n */\n isTransferFeeUpgradable?: boolean;\n /**\n * whether the token is transferable.\n */\n isTransferable?: boolean;\n /**\n * whether the token is freezable.\n */\n isFreezable?: boolean;\n /**\n * whether the token is closable.\n */\n isClosable?: boolean;\n}\n\nexport type TokenResolution =\n | \"1s\"\n | \"15s\"\n | \"30s\"\n | \"1m\"\n | \"5m\"\n | \"15m\"\n | \"30m\"\n | \"1h\"\n | \"4h\"\n | \"12h\"\n | \"24h\";\n\nexport interface TokenCandle {\n /**\n * open price in usd\n */\n open: string;\n /**\n * close price in usd\n */\n close: string;\n /**\n * high price in usd\n */\n high: string;\n /**\n * low price in usd\n */\n low: string;\n /**\n * volume in usd\n */\n volume: string;\n /**\n * resolution\n */\n resolution: TokenResolution;\n /**\n * timestamp\n */\n timestamp: Date;\n}\n\nexport interface TokenHolder {\n /**\n * holder wallet address\n */\n address: string;\n /**\n * holdings amount in token\n */\n amount: string;\n /**\n * holdings amount in usd\n */\n amountInUsd: string;\n /**\n * holdings ratio, range is 0-100\n */\n ratio: string;\n}\n"],"mappings":"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","names":["SwapMode","Chain","ChainNamespace","SolanaTokenProtocol"]}
package/dist/index.mjs CHANGED
@@ -20,9 +20,9 @@ var SwapMode = /* @__PURE__ */ ((SwapMode2) => {
20
20
  // src/version.ts
21
21
  if (typeof window !== "undefined") {
22
22
  window.__LIBERFI_VERSION__ = window.__LIBERFI_VERSION__ || {};
23
- window.__LIBERFI_VERSION__["@liberfi.io/types"] = "0.1.27";
23
+ window.__LIBERFI_VERSION__["@liberfi.io/types"] = "0.1.28";
24
24
  }
25
- var version_default = "0.1.27";
25
+ var version_default = "0.1.28";
26
26
 
27
27
  // src/chains.ts
28
28
  var Chain = /* @__PURE__ */ ((Chain2) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/api/index.ts","../src/api/dex.ts","../src/version.ts","../src/chains.ts","../src/token.ts"],"sourcesContent":["export * from \"./dex\";\nexport * from \"./pagination\";\n","import { Activity, ActivityType, Trade } from \"../activity\";\nimport { Chain } from \"../chains\";\nimport {\n Token,\n TokenCandle,\n TokenHolder,\n TokenMarketData,\n TokenResolution,\n TokenSecurity,\n TokenStats,\n} from \"../token\";\nimport {\n Portfolio,\n PortfolioPnl,\n WalletPnl,\n WalletPortfolioPnls,\n WalletPortfolios,\n} from \"../wallet\";\nimport { CursorPagination } from \"./pagination\";\n\n/**\n * Cursor list result data\n */\nexport interface CursorList<T> extends CursorPagination {\n data: Array<T>;\n}\n\n/**\n * Cursor list query options\n */\nexport interface CursorListOptions {\n /** query cursor */\n cursor?: string;\n /** return limit */\n limit?: number;\n /** query direction */\n direction?: \"next\" | \"prev\";\n}\n\n/**\n * Options for getting token candles\n */\nexport interface GetTokenCandlesOptions {\n /** query candles after this timestamp */\n after?: Date;\n /** query candles before this timestamp */\n before?: Date;\n /** return limit */\n limit?: number;\n}\n\n/**\n * Token field for filtering\n */\nexport type TokenFieldOption =\n | \"price\"\n | \"priceChange1m\"\n | \"priceChange5m\"\n | \"priceChange15m\"\n | \"priceChange30m\"\n | \"priceChange1h\"\n | \"priceChange4h\"\n | \"priceChange24h\"\n | \"marketCap\"\n | \"tvl\"\n | \"top10Holdings\"\n | \"top10Ratio\"\n | \"top100Holdings\"\n | \"top100Ratio\"\n | \"holders\"\n | \"creatorsHoldings\"\n | \"creatorsRatio\"\n | \"buys1m\"\n | \"buys5m\"\n | \"buys15m\"\n | \"buys30m\"\n | \"buys1h\"\n | \"buys4h\"\n | \"buys24h\"\n | \"sells1m\"\n | \"sells5m\"\n | \"sells15m\"\n | \"sells30m\"\n | \"sells1h\"\n | \"sells4h\"\n | \"sells24h\"\n | \"trades1m\"\n | \"trades5m\"\n | \"trades15m\"\n | \"trades30m\"\n | \"trades1h\"\n | \"trades4h\"\n | \"trades24h\"\n | \"traders1m\"\n | \"traders5m\"\n | \"traders15m\"\n | \"traders30m\"\n | \"traders1h\"\n | \"traders4h\"\n | \"traders24h\"\n | \"volumes1m\"\n | \"volumes5m\"\n | \"volumes15m\"\n | \"volumes30m\"\n | \"volumes1h\"\n | \"volumes4h\"\n | \"volumes24h\"\n | \"launchedFromProtocolFamily\"\n | \"migratedToProtocolFamily\"\n | \"tag\"\n | \"createdAt\"\n | (string & {});\n\n/**\n * Token filter option\n */\nexport interface TokenFilterOption {\n field: TokenFieldOption;\n operator:\n | \"eq\"\n | \"ne\"\n | \"gt\"\n | \"gte\"\n | \"lt\"\n | \"lte\"\n | \"between\"\n | \"in\"\n | \"nin\"\n | \"contains\"\n | \"notContains\"\n | \"startsWith\"\n | \"endsWith\"\n | \"isNotNull\"\n | \"isNull\";\n value?: string | number | boolean | Array<string | number | boolean>;\n}\n\n/**\n * Options for getting token list\n */\nexport interface GetTokenListOptions {\n /** sort field */\n sortBy?: TokenFieldOption;\n /** sort direction */\n sortDirection?: \"asc\" | \"desc\";\n /** filters */\n filters?: Array<TokenFilterOption>;\n /** search keywords */\n keywords?: Array<string>;\n /** exclude keywords */\n excludeKeywords?: Array<string>;\n}\n\n/**\n * Options for searching tokens\n */\nexport interface SearchTokensOptions extends CursorListOptions {\n /** chains */\n chains?: Array<Chain>;\n /** search keyword */\n keyword?: string;\n /** filters */\n filters?: Array<TokenFilterOption>;\n /** sort field */\n sortBy?: TokenFieldOption;\n /** sort direction */\n sortDirection?: \"asc\" | \"desc\";\n}\n\n/**\n * Search token cursor list\n */\nexport interface SearchTokenCursorList extends CursorList<Token> {\n /** total count */\n total?: number;\n /** extra infos by api provider */\n extra?: Record<string, unknown>;\n}\n\nexport enum SwapMode {\n EXACT_IN = \"exact_in\",\n EXACT_OUT = \"exact_out\",\n}\n\nexport interface SwapParams {\n /** chain id */\n chain: Chain;\n /** user wallet address */\n userAddress: string;\n /** input token address */\n input: string;\n /** output token address */\n output: string;\n /** swap mode, e.g. ExactIn, ExactOut */\n mode: SwapMode;\n /** input token amount when mode is ExactIn, output token amount when mode is ExactOut */\n amount: string;\n /** slippage, range is 0-100 */\n slippage?: number;\n /** priority fee */\n priorityFee?: string;\n /** tip fee */\n tipFee?: string;\n /** whether to use anti-MEV */\n isAntiMev?: boolean;\n}\n\nexport interface SwapRoutePlan {\n /** protocol name / dex name etc. */\n name: string;\n /** input token address */\n input: string;\n /** input token amount */\n inputAmount: string;\n /** output token address */\n output: string;\n /** output token amount */\n outputAmount: string;\n /** fee quote token address */\n feeQuote?: string;\n /** fee amount */\n feeAmount?: string;\n /** extra infos by api provider */\n extra?: Record<string, unknown>;\n}\n\nexport interface SwapRoute {\n /** unsigned tx in base64 format */\n serializedTx: string;\n /** swap plans */\n plans: Array<SwapRoutePlan>;\n /** extra infos by api provider */\n extra?: Record<string, unknown>;\n}\n\nexport interface SendTxParams {\n /** chain id */\n chain: Chain;\n /** signed tx in base64 format */\n serializedTx: string;\n /** extra infos needed by api provider */\n extra?: Record<string, unknown>;\n}\n\nexport interface SendTxResult {\n /** tx hash */\n txHash: string;\n /** extra infos by api provider */\n extra?: Record<string, unknown>;\n}\n\n/**\n * Options for getting trades\n */\nexport interface GetTradesOptions extends CursorListOptions {\n /** filter trades before this timestamp */\n before?: Date;\n /** filter trades after this timestamp */\n after?: Date;\n /** filter trades before this block height */\n beforeBlockHeight?: number;\n /** filter trades after this block height */\n afterBlockHeight?: number;\n /** filter trades by type */\n type?: \"buy\" | \"sell\";\n /** filter trades by pool address */\n poolAddress?: string;\n}\n\n/**\n * Options for getting activities\n */\nexport interface GetActivitiesOptions extends CursorListOptions {\n /** filter activities before this timestamp */\n before?: Date;\n /** filter activities after this timestamp */\n after?: Date;\n /** filter activities before this block height */\n beforeBlockHeight?: number;\n /** filter activities after this block height */\n afterBlockHeight?: number;\n /** filter activities by type */\n type?: ActivityType;\n /** filter activities by pool address */\n poolAddress?: string;\n}\n\n/**\n * Resolution subset supported by the trending token list.\n */\nexport type TrendingResolution = Extract<\n TokenResolution,\n \"1m\" | \"5m\" | \"1h\" | \"4h\" | \"24h\"\n>;\n\n/**\n * API client interface\n */\nexport interface IClient {\n /**\n * fetch token info\n * @param chain chain id\n * @param address token address\n * @returns token info\n */\n getToken(chain: Chain, address: string): Promise<Token>;\n\n /**\n * fetch token infos in batch\n * @param chain chain id\n * @param addresses token addresses\n * @returns token infos\n */\n getTokens(chain: Chain, addresses: Array<string>): Promise<Array<Token>>;\n\n /**\n * fetch token candles\n * @param chain chain id\n * @param address token address\n * @param resolution token resolution\n * @param options optional query options\n * @returns token candles\n */\n getTokenCandles(\n chain: Chain,\n address: string,\n resolution: TokenResolution,\n options?: GetTokenCandlesOptions,\n ): Promise<Array<TokenCandle>>;\n\n /**\n * fetch token security\n * @param chain chain id\n * @param address token address\n * @returns token security\n */\n getTokenSecurity(chain: Chain, address: string): Promise<TokenSecurity>;\n\n /**\n * fetch token stats\n * @param chain chain id\n * @param address token address\n * @returns token stats\n */\n getTokenStats(chain: Chain, address: string): Promise<TokenStats>;\n\n /**\n * fetch token holders\n * @param chain chain id\n * @param address token address\n * @param options optional query options\n * @returns token holders\n */\n getTokenHolders(\n chain: Chain,\n address: string,\n options?: CursorListOptions,\n ): Promise<CursorList<TokenHolder>>;\n\n /**\n * fetch token market data\n * @param chain chain id\n * @param address token address\n * @returns token market data\n */\n getTokenMarketData(chain: Chain, address: string): Promise<TokenMarketData>;\n\n /**\n * fetch `New` token list\n * @param chain chain id\n * @param options optional query options\n * @returns `New` token list\n */\n getNewTokens(\n chain: Chain,\n options?: GetTokenListOptions,\n ): Promise<Array<Token>>;\n\n /**\n * fetch `Final Stretch` token list\n * @param chain chain id\n * @param options optional query options\n * @returns `Final Stretch` token list\n */\n getFinalStretchTokens(\n chain: Chain,\n options?: GetTokenListOptions,\n ): Promise<Array<Token>>;\n\n /**\n * fetch `Migrated` token list\n * @param chain chain id\n * @param options optional query options\n * @returns `Migrated` token list\n */\n getMigratedTokens(\n chain: Chain,\n options?: GetTokenListOptions,\n ): Promise<Array<Token>>;\n\n /**\n * fetch `Trending` token list\n * @param chain chain id\n * @param resolution query resolution, e.g. \"1m\", \"5m\", \"1h\", \"4h\", \"24h\"\n * @param options optional query options\n * @returns `Trending` token list\n */\n getTrendingTokens(\n chain: Chain,\n resolution: TrendingResolution,\n options?: GetTokenListOptions,\n ): Promise<Array<Token>>;\n\n /**\n * fetch `Stock` token list\n * @param chain chain id\n * @param options optional query options\n * @returns `Stock` token list\n */\n getStockTokens(\n chain: Chain,\n options?: GetTokenListOptions,\n ): Promise<Array<Token>>;\n\n /**\n * search tokens\n * @param options optional query options\n * @returns search token cursor list\n */\n searchTokens(options?: SearchTokensOptions): Promise<SearchTokenCursorList>;\n\n /**\n * fetch swap route plans\n * @param params swap params\n * @returns swap route plans\n */\n swapRoute(params: SwapParams): Promise<SwapRoute>;\n\n /**\n * send tx\n * @param params send tx params\n * @returns send tx result\n */\n sendTx(params: SendTxParams): Promise<SendTxResult>;\n\n /**\n * check if tx is successful\n * @param chain chain id\n * @param txHash tx hash\n * @param timeout timeout in milliseconds\n * @returns true if tx is successful, false otherwise\n */\n checkTxSuccess(\n chain: Chain,\n txHash: string,\n timeout?: number,\n ): Promise<boolean>;\n\n /**\n * fetch wallet portfolios\n * @param chain chain id\n * @param address wallet address\n * @param options optional pagination options\n * @returns wallet portfolios\n */\n getWalletPortfolios(\n chain: Chain,\n address: string,\n options?: { cursor?: string; limit?: number },\n ): Promise<WalletPortfolios>;\n\n /**\n * fetch wallet PnL summary\n * @param chain chain id\n * @param address wallet address\n * @param resolution pnl resolution (e.g. \"7d\", \"30d\")\n * @returns wallet pnl summary\n */\n getWalletPnl(\n chain: Chain,\n address: string,\n resolution?: string,\n ): Promise<WalletPnl>;\n\n /**\n * fetch wallet portfolio PnL details (per-token)\n * @param chain chain id\n * @param address wallet address\n * @param options optional query options\n * @returns portfolio pnl list with summary\n */\n getWalletPortfolioPnls(\n chain: Chain,\n address: string,\n options?: { cursor?: string; limit?: number },\n ): Promise<WalletPortfolioPnls>;\n\n /**\n * fetch wallet portfolios for specific tokens\n * @param chain chain id\n * @param address wallet address\n * @param tokenAddresses token addresses to query\n * @returns portfolio list for the specified tokens\n */\n getWalletPortfoliosByTokens(\n chain: Chain,\n address: string,\n tokenAddresses: Array<string>,\n ): Promise<Array<Portfolio>>;\n\n /**\n * fetch wallet portfolio PnL for specific tokens\n * @param chain chain id\n * @param address wallet address\n * @param tokenAddresses token addresses to query\n * @returns portfolio pnl list for the specified tokens\n */\n getWalletPortfolioPnlsByTokens(\n chain: Chain,\n address: string,\n tokenAddresses: Array<string>,\n ): Promise<Array<PortfolioPnl>>;\n\n /**\n * fetch wallet's trade activities\n * @param chain chain id\n * @param address wallet address\n * @param options optional query options\n * @returns wallet's trade activities\n */\n getWalletTrades(\n chain: Chain,\n address: string,\n options?: GetTradesOptions,\n ): Promise<CursorList<Trade>>;\n\n /**\n * fetch token's trade activities\n * @param chain chain id\n * @param address token address\n * @param options optional query options\n * @returns token's trade activities\n */\n getTokenTrades(\n chain: Chain,\n address: string,\n options?: GetTradesOptions,\n ): Promise<CursorList<Trade>>;\n\n /**\n * fetch wallet's activities (trades, liquidity, red packets, etc.)\n * @param chain chain id\n * @param address wallet address\n * @param options optional query options\n * @returns wallet's activities\n */\n getWalletActivities(\n chain: Chain,\n address: string,\n options?: GetActivitiesOptions,\n ): Promise<CursorList<Activity>>;\n\n /**\n * fetch token's activities (trades, liquidity, red packets, etc.)\n * @param chain chain id\n * @param address token address\n * @param options optional query options\n * @returns token's activities\n */\n getTokenActivities(\n chain: Chain,\n address: string,\n options?: GetActivitiesOptions,\n ): Promise<CursorList<Activity>>;\n\n /**\n * get presigned upload url\n * @returns presigned upload url\n */\n getPresignedUploadUrl(): Promise<string>;\n}\n\nexport interface ISubscription {\n unsubscribe(): void;\n}\n\n/**\n * Incremental token update from subscriptions.\n * `chain` + `address` identify the token; all other fields are optional —\n * `undefined` means this push did not carry that field.\n */\nexport type TokenSubscribed = Partial<Omit<Token, \"chain\" | \"address\">> &\n Pick<Token, \"chain\" | \"address\">;\n\nexport interface WalletPnlSubscribed extends WalletPnl {\n /** pnl resolution (e.g. \"7d\", \"30d\") */\n resolution?: string;\n}\n\nexport interface PortfolioSubscribed {\n /** chain id */\n chain: Chain;\n /** wallet address */\n walletAddress: string;\n /** token address */\n tokenAddress: string;\n /** token current price in usd */\n priceInUsd?: string;\n /** holding token amount */\n amount?: string;\n}\n\nexport type PortfolioPnlSubscribed = Partial<\n Omit<PortfolioPnl, \"address\" | \"name\" | \"symbol\" | \"image\">\n> & {\n /** wallet address */\n walletAddress: string;\n /** token address */\n tokenAddress: string;\n};\n\n/**\n * Subscribe client interface\n */\nexport interface ISubscribeClient {\n /**\n * Subscribe to a token's real-time data updates (stats, market data,\n * holders, liquidity, etc.). The client internally manages multiple\n * backend channels and delivers incremental updates via `callback`.\n * @param chain chain id\n * @param address token address\n * @param callback receives incremental token updates\n * @returns subscription\n */\n subscribeToken(\n chain: Chain,\n address: string,\n callback: (data: Array<TokenSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe token new candles\n * @param chain chain id\n * @param address token address\n * @param resolution token resolution\n * @param callback callback function\n * @returns subscription\n */\n subscribeTokenCandles(\n chain: Chain,\n address: string,\n resolution: TokenResolution,\n callback: (candles: Array<TokenCandle>) => void,\n ): ISubscription;\n\n /**\n * Subscribe wallet's pnl changes\n * @param chain chain id\n * @param address wallet address\n * @param callback callback function\n * @returns subscription\n */\n subscribeWalletPnl(\n chain: Chain,\n address: string,\n callback: (pnls: Array<WalletPnlSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe wallet's portfolio changes\n * @param chain chain id\n * @param address wallet address\n * @param callback callback function\n * @returns subscription\n */\n subscribeWalletPortfolios(\n chain: Chain,\n address: string,\n callback: (portfolios: Array<PortfolioSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe wallet's portfolio pnl changes\n * @param chain chain id\n * @param address wallet address\n * @param callback callback function\n * @returns subscription\n */\n subscribeWalletPortfolioPnls(\n chain: Chain,\n address: string,\n callback: (portfolioPnls: Array<PortfolioPnlSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe wallet's new trade activities\n * @param chain chain id\n * @param address wallet address\n * @param callback callback function\n * @returns subscription\n */\n subscribeWalletTrades(\n chain: Chain,\n address: string,\n callback: (trades: Array<Trade>) => void,\n ): ISubscription;\n\n /**\n * Subscribe token's new trade activities\n * @param chain chain id\n * @param address token address\n * @param callback callback function\n * @returns subscription\n */\n subscribeTokenTrades(\n chain: Chain,\n address: string,\n callback: (trades: Array<Trade>) => void,\n ): ISubscription;\n\n /**\n * Subscribe wallet's new activities (trades, liquidity, etc.)\n * @param chain chain id\n * @param address wallet address\n * @param callback callback function\n * @returns subscription\n */\n subscribeWalletActivities(\n chain: Chain,\n address: string,\n callback: (activities: Array<Activity>) => void,\n ): ISubscription;\n\n /**\n * Subscribe token's new activities (trades, liquidity, etc.)\n * @param chain chain id\n * @param address token address\n * @param callback callback function\n * @returns subscription\n */\n subscribeTokenActivities(\n chain: Chain,\n address: string,\n callback: (activities: Array<Activity>) => void,\n ): ISubscription;\n\n /**\n * Subscribe to `New` token list real-time updates. The client internally\n * manages multiple backend channels (new token events, metadata, stats,\n * holders, supply, liquidity, bonding curve) and delivers incremental\n * updates via `callback`.\n * @param chain chain id\n * @param callback receives incremental token updates\n * @returns subscription\n */\n subscribeNewTokens(\n chain: Chain,\n callback: (data: Array<TokenSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe to `Trending` token list real-time updates. The client\n * internally manages multiple backend channels (stats, holders, supply,\n * liquidity) and delivers incremental updates via `callback`.\n * @param chain chain id\n * @param callback receives incremental token updates\n * @returns subscription\n */\n subscribeTrendingTokens(\n chain: Chain,\n callback: (data: Array<TokenSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe to `Migrated` token list real-time updates. The client\n * internally manages multiple backend channels (stats, holders, supply,\n * liquidity) and delivers incremental updates via `callback`.\n * @param chain chain id\n * @param callback receives incremental token updates\n * @returns subscription\n */\n subscribeMigratedTokens(\n chain: Chain,\n callback: (data: Array<TokenSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe to `FinalStretch` token list real-time updates. The client\n * internally manages multiple backend channels (stats, holders, supply,\n * liquidity, bonding curve) and delivers incremental updates via `callback`.\n * @param chain chain id\n * @param callback receives incremental token updates\n * @returns subscription\n */\n subscribeFinalStretchTokens(\n chain: Chain,\n callback: (data: Array<TokenSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe to `Stock` token list real-time updates. The client internally\n * manages multiple backend channels (stats, holders, supply, liquidity)\n * and delivers incremental updates via `callback`.\n * @param chain chain id\n * @param callback receives incremental token updates\n * @returns subscription\n */\n subscribeStockTokens(\n chain: Chain,\n callback: (data: Array<TokenSubscribed>) => void,\n ): ISubscription;\n}\n","declare global {\n interface Window {\n __LIBERFI_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif (typeof window !== \"undefined\") {\n window.__LIBERFI_VERSION__ = window.__LIBERFI_VERSION__ || {};\n window.__LIBERFI_VERSION__[\"@liberfi.io/types\"] = \"0.1.27\";\n}\n\nexport default \"0.1.27\";\n","export enum Chain {\n ETHEREUM = \"1\",\n UBIQ = \"8\",\n OPTIMISM = \"10\",\n FLARE = \"14\",\n SONGBIRD = \"19\",\n ELASTOS = \"20\",\n KARDIA = \"24\",\n CRONOS = \"25\",\n RSK = \"30\",\n TELOS = \"40\",\n LUKSO = \"42\",\n CRAB = \"44\",\n DARWINIA = \"46\",\n XDC = \"50\",\n CSC = \"52\",\n ZYX = \"55\",\n BINANCE = \"56\",\n BINANCE_TESTNET = \"97\",\n SYSCOIN = \"57\",\n GOCHAIN = \"60\",\n ETHEREUMCLASSIC = \"61\",\n OKEXCHAIN = \"66\",\n HOO = \"70\",\n METER = \"82\",\n NOVA_NETWORK = \"87\",\n TOMOCHAIN = \"88\",\n BITKUB = \"96\",\n XDAI = \"100\",\n VELAS = \"106\",\n THUNDERCORE = \"108\",\n ENULS = \"119\",\n FUSE = \"122\",\n HECO = \"128\",\n UNICHAIN = \"130\",\n POLYGON = \"137\",\n SONIC = \"146\",\n SHIMMER_EVM = \"148\",\n RBN = \"151\",\n OMNI = \"166\",\n MANTA = \"169\",\n HSK = \"177\",\n WATER = \"181\",\n XLAYER = \"196\",\n XDAIARB = \"200\",\n OP_BNB = \"204\",\n VINUCHAIN = \"207\",\n ENERGYWEB = \"246\",\n OASYS = \"248\",\n FANTOM = \"250\",\n FRAXTAL = \"252\",\n HPB = \"269\",\n BOBA = \"288\",\n OMAX = \"311\",\n FILECOIN = \"314\",\n KUCOIN = \"321\",\n ZKSYNC_ERA = \"324\",\n SHIDEN = \"336\",\n THETA = \"361\",\n PULSE = \"369\",\n CRONOS_ZKEVM = \"388\",\n SX = \"416\",\n AREON = \"463\",\n WC = \"480\",\n CANDLE = \"534\",\n ROLLUX = \"570\",\n ASTAR = \"592\",\n REDSTONE = \"690\",\n MATCHAIN = \"698\",\n CALLISTO = \"820\",\n TARA = \"841\",\n WANCHAIN = \"888\",\n LYRA_CHAIN = \"957\",\n BIFROST = \"996\",\n CONFLUX = \"1030\",\n METIS = \"1088\",\n DYMENSION = \"1100\",\n POLYGON_ZKEVM = \"1101\",\n CORE = \"1116\",\n LISK = \"1135\",\n ULTRON = \"1231\",\n STEP = \"1234\",\n MOONBEAM = \"1284\",\n MOONRIVER = \"1285\",\n SEI = \"1329\",\n LIVING_ASSETS_MAINNET = \"1440\",\n STY = \"1514\",\n TENET = \"1559\",\n GRAVITY = \"1625\",\n REYA_NETWORK = \"1729\",\n SONEIUM = \"1868\",\n SWELLCHAIN = \"1923\",\n ONUS = \"1975\",\n HUBBLENET = \"1992\",\n SANKO = \"1996\",\n DOGECHAIN = \"2000\",\n MILKOMEDA = \"2001\",\n MILKOMEDA_A1 = \"2002\",\n KAVA = \"2222\",\n SOMA = \"2332\",\n KARAK = \"2410\",\n ABSTRACT = \"2741\",\n ABSTRACT_TESTNET = \"11124\",\n MORPH = \"2818\",\n CROSSFI = \"4158\",\n BEAM = \"4337\",\n IOTEX = \"4689\",\n MANTLE = \"5000\",\n XLC = \"5050\",\n NAHMII = \"5551\",\n BOUNCEBIT = \"6001\",\n TOMBCHAIN = \"6969\",\n ZETACHAIN = \"7000\",\n PLANQ = \"7070\",\n BITROCK = \"7171\",\n XSAT = \"7200\",\n CYETH = \"7560\",\n CANTO = \"7700\",\n KLAYTN = \"8217\",\n THAT = \"8428\",\n BASE = \"8453\",\n HELA = \"8668\",\n IOTAEVM = \"8822\",\n JBC = \"8899\",\n EVMOS = \"9001\",\n CARBON = \"9790\",\n SMARTBCH = \"10000\",\n ARTELA = \"11820\",\n IMMUTABLE_ZKEVM = \"13371\",\n LOOP = \"15551\",\n GENESYS = \"16507\",\n EOS_EVM = \"17777\",\n MAP_PROTOCOL = \"22776\",\n SAPPHIRE = \"23294\",\n BITGERT = \"32520\",\n FUSION = \"32659\",\n ZILLIQA = \"32769\",\n APECHAIN = \"33139\",\n EDU_CHAIN = \"41923\",\n ARBITRUM = \"42161\",\n ARBITRUM_TESTNET_GOERLI = \"421613\",\n ARBITRUM_TESTNET_SEPOLIA = \"421614\",\n ARBITRUM_NOVA = \"42170\",\n CELO = \"42220\",\n OASIS = \"42262\",\n ASSETCHAIN = \"42420\",\n ETHERLINK = \"42793\",\n AVALANCHE = \"43114\",\n REI = \"47805\",\n ZIRCUIT = \"48900\",\n SOPHON = \"50104\",\n ETN = \"52014\",\n SUPERPOSITION = \"55244\",\n REICHAIN = \"55555\",\n BOBA_BNB = \"56288\",\n INK = \"57073\",\n LINEA = \"59144\",\n BOB = \"60808\",\n GODWOKEN = \"71402\",\n BERACHAIN = \"80094\",\n BLAST = \"81457\",\n CHILIZ = \"88888\",\n STRATIS = \"105105\",\n REAL = \"111188\",\n ODYSSEY = \"153153\",\n TAIKO = \"167000\",\n BITLAYER = \"200901\",\n HYDRATION = \"222222\",\n PAREX = \"322202\",\n POLIS = \"333999\",\n KEKCHAIN = \"420420\",\n SCROLL = \"534352\",\n ZERO_NETWORK = \"543210\",\n ZKLINK_NOVA = \"810180\",\n VISION = \"888888\",\n SAAKURU = \"7225878\",\n ZORA = \"7777777\",\n CORN = \"21000000\",\n NEON = \"245022934\",\n LUMIA = \"994873017\",\n AURORA = \"1313161554\",\n HARMONY = \"1666600000\",\n PALM = \"11297108109\",\n ZENIQ = \"383414847825\",\n CURIO = \"836542336838601\",\n MODE = \"34443\",\n SOLANA = \"900900900\",\n SOLANA_TESTNET = \"901901901\",\n SOLANA_DEVNET = \"902902902\",\n}\n\nexport enum ChainNamespace {\n EVM = \"EVM\",\n SOLANA = \"SOL\",\n}\n","import { Chain } from \"./chains\";\n\nexport enum SolanaTokenProtocol {\n BAGS = \"bags\",\n BELIEVE = \"believe\",\n BONK = \"bonk\",\n BOOP = \"boop\",\n HEAVEN = \"heaven\",\n JUPSTUDIO = \"jupstudio\",\n LAUNCHLAB = \"launchlab\",\n METEORA = \"meteora\",\n MOONIT = \"moonit\",\n MOONSHOT = \"moonshot\",\n ORCA = \"orca\",\n PUMP = \"pump\",\n RAYDIUM = \"raydium\",\n SUGAR = \"sugar\",\n VIRTUAL_CURVE = \"virtual-curve\",\n PUMP_AMM = \"pump-amm\",\n}\n\nexport type TokenProtocol = SolanaTokenProtocol | (string & {});\n\nexport const SOLANA_TOKEN_PROTOCOLS = Object.values(SolanaTokenProtocol);\n\nexport interface Token {\n /**\n * chain id.\n */\n chain: Chain;\n /**\n * token name, e.g. \"Ethereum\", \"Solana\", etc.\n */\n name: string;\n /**\n * token symbol, e.g. \"ETH\", \"SOL\", etc.\n */\n symbol: string;\n /**\n * token address.\n */\n address: string;\n /**\n * token decimals.\n */\n decimals: number;\n /**\n * token avatar image url.\n */\n image?: string;\n /**\n * token description.\n */\n description?: string;\n /**\n * token creators.\n */\n creators?: Array<TokenCreator>;\n /**\n * token launch info.\n */\n launchedFrom?: TokenLaunchedFrom;\n /**\n * token migrate progress, range is 0-100.\n */\n migrateProgress?: string;\n /**\n * token migrate info.\n */\n migratedTo?: TokenMigratedTo;\n /**\n * token social medias.\n */\n socialMedias?: TokenSocialMedias;\n /**\n * token stats.\n */\n stats?: TokenStats;\n /**\n * token market data.\n */\n marketData?: TokenMarketData;\n /**\n * token liquidity pools\n */\n liquidities?: Array<TokenLiquidity>;\n /**\n * token security.\n */\n security?: TokenSecurity;\n /**\n * token tags.\n */\n tags?: Array<string>;\n /**\n * token create time.\n */\n createdAt?: Date;\n}\n\nexport interface TokenCreator {\n /**\n * token creator's wallet address.\n */\n address?: string;\n /**\n * token creator's share percentage, range is 0-100.\n */\n share?: number;\n /**\n * whether the token creator is verified.\n */\n isVerified?: boolean;\n}\n\nexport interface TokenLaunchedFrom {\n /**\n * token launch program address.\n */\n programAddress?: string;\n /**\n * token launch protocol family.\n */\n protocolFamily?: string;\n}\n\nexport interface TokenMigratedTo {\n /**\n * token migrate program address.\n */\n programAddress?: string;\n /**\n * token migrate protocol family.\n */\n protocolFamily?: string;\n /**\n * token migrate pool address.\n */\n poolAddress?: string;\n /**\n * token migrate time.\n */\n migratedAt?: Date;\n}\n\nexport interface TokenSocialMedias {\n /**\n * token twitter url.\n */\n twitter?: string;\n /**\n * token telegram url.\n */\n telegram?: string;\n /**\n * token website url.\n */\n website?: string;\n /**\n * token tiktok url.\n */\n tiktok?: string;\n /**\n * token discord url.\n */\n discord?: string;\n /**\n * token facebook url.\n */\n facebook?: string;\n /**\n * token github url.\n */\n github?: string;\n /**\n * token instagram url.\n */\n instagram?: string;\n /**\n * token linkedin url.\n */\n linkedin?: string;\n /**\n * token medium url.\n */\n medium?: string;\n /**\n * token reddit url.\n */\n reddit?: string;\n /**\n * token youtube url.\n */\n youtube?: string;\n /**\n * token bitbucket url.\n */\n bitbucket?: string;\n}\n\nexport interface TokenStats {\n /**\n * token stats by 1m timeframe.\n */\n \"1m\"?: TokenStatsByResolution;\n /**\n * token stats by 5m timeframe.\n */\n \"5m\"?: TokenStatsByResolution;\n /**\n * token stats by 15m timeframe.\n */\n \"15m\"?: TokenStatsByResolution;\n /**\n * token stats by 30m timeframe.\n */\n \"30m\"?: TokenStatsByResolution;\n /**\n * token stats by 1h timeframe.\n */\n \"1h\"?: TokenStatsByResolution;\n /**\n * token stats by 4h timeframe.\n */\n \"4h\"?: TokenStatsByResolution;\n /**\n * token stats by 24h timeframe.\n */\n \"24h\"?: TokenStatsByResolution;\n}\n\nexport interface TokenStatsByResolution {\n /**\n * buy txs count\n */\n buys?: number;\n /**\n * sell txs count\n */\n sells?: number;\n /**\n * txs count\n */\n trades?: number;\n /**\n * buy addresses count\n */\n buyers?: number;\n /**\n * sell addresses count\n */\n sellers?: number;\n /**\n * trade addresses count\n */\n traders?: number;\n /**\n * buy volumes in quote token\n */\n buyVolumes?: string;\n /**\n * sell volumes in quote token\n */\n sellVolumes?: string;\n /**\n * total volumes in quote token\n */\n volumes?: string;\n /**\n * buy volumes in usd\n */\n buyVolumesInUsd?: string;\n /**\n * sell volumes in usd\n */\n sellVolumesInUsd?: string;\n /**\n * total volumes in usd\n */\n volumesInUsd?: string;\n /**\n * open price in usd\n */\n openPriceInUsd?: string;\n /**\n * close price in usd\n */\n closePriceInUsd?: string;\n /**\n * high price in usd\n */\n highPriceInUsd?: string;\n /**\n * low price in usd\n */\n lowPriceInUsd?: string;\n /**\n * price in usd\n */\n priceInUsd?: string;\n /**\n * price change %\n */\n priceChange?: string;\n}\n\nexport interface TokenMarketData {\n /**\n * total supply\n */\n totalSupply?: string;\n /**\n * market cap in quote token\n */\n marketCap?: string;\n /**\n * market cap in usd\n */\n marketCapInUsd?: string;\n /**\n * price in quote token\n */\n price?: string;\n /**\n * price in usd\n */\n priceInUsd?: string;\n /**\n * tvl in quote token\n */\n tvl?: string;\n /**\n * tvl in usd\n */\n tvlInUsd?: string;\n /**\n * holders count\n */\n holders?: number;\n /**\n * top 10 total holdings\n */\n top10Holdings?: string;\n /**\n * top 10 holdings ratio\n */\n top10HoldingsRatio?: string;\n /**\n * top 50 total holdings\n */\n top50Holdings?: string;\n /**\n * top 50 holdings ratio\n */\n top50HoldingsRatio?: string;\n /**\n * top 100 total holdings\n */\n top100Holdings?: string;\n /**\n * top 100 holdings ratio\n */\n top100HoldingsRatio?: string;\n /**\n * Bluechip holders count\n */\n bluechipHolders?: number;\n /**\n * Bluechip total holdings\n */\n bluechipHoldings?: string;\n /**\n * Bluechip holdings ratio\n */\n bluechipHoldingsRatio?: string;\n /**\n * KOL holders count\n */\n kolHolders?: number;\n /**\n * KOL total holdings\n */\n kolHoldings?: string;\n /**\n * KOL holdings ratio\n */\n kolHoldingsRatio?: string;\n /**\n * Sniper holders count\n */\n sniperHolders?: number;\n /**\n * Sniper total holdings\n */\n sniperHoldings?: string;\n /**\n * Sniper holdings ratio\n */\n sniperHoldingsRatio?: string;\n /**\n * Pro holders count\n */\n proHolders?: number;\n /**\n * Pro total holdings\n */\n proHoldings?: string;\n /**\n * Pro holdings ratio\n */\n proHoldingsRatio?: string;\n /**\n * Insider holders count\n */\n insiderHolders?: number;\n /**\n * Insider total holdings\n */\n insiderHoldings?: string;\n /**\n * Insider holdings ratio\n */\n insiderHoldingsRatio?: string;\n /**\n * Sandwich holders count\n */\n sandwichHolders?: number;\n /**\n * Sandwich total holdings\n */\n sandwichHoldings?: string;\n /**\n * Sandwich holdings ratio\n */\n sandwichHoldingsRatio?: string;\n /**\n * Fresh holders count\n */\n freshHolders?: number;\n /**\n * Fresh total holdings\n */\n freshHoldings?: string;\n /**\n * Fresh holdings ratio\n */\n freshHoldingsRatio?: string;\n /**\n * Bundle holders count\n */\n bundleHolders?: number;\n /**\n * Bundle total holdings\n */\n bundleHoldings?: string;\n /**\n * Bundle holdings ratio\n */\n bundleHoldingsRatio?: string;\n /**\n * Dev holders count\n */\n devHolders?: number;\n /**\n * Dev total holdings\n */\n devHoldings?: string;\n /**\n * Dev holdings ratio\n */\n devHoldingsRatio?: string;\n}\n\nexport interface TokenLiquidity {\n /**\n * pool avatar image\n */\n image?: string;\n /**\n * pair token address.\n */\n pairAddress?: string;\n /**\n * pool address.\n */\n poolAddress?: string;\n /**\n * program address.\n */\n programAddress?: string;\n /**\n * protocol name.\n */\n protocolName?: string;\n /**\n * protocol family.\n */\n protocolFamily?: string;\n /**\n * tvl in quote token.\n */\n tvl?: string;\n /**\n * tvl in usd.\n */\n tvlInUsd?: string;\n}\n\n/**\n * TODO: more security checks\n */\nexport interface TokenSecurity {\n /**\n * whether the token has transfer fee.\n */\n hasTransferFee?: boolean;\n /**\n * whether the token transfer fee is upgradable.\n */\n isTransferFeeUpgradable?: boolean;\n /**\n * whether the token is transferable.\n */\n isTransferable?: boolean;\n /**\n * whether the token is freezable.\n */\n isFreezable?: boolean;\n /**\n * whether the token is closable.\n */\n isClosable?: boolean;\n}\n\nexport type TokenResolution =\n | \"1s\"\n | \"15s\"\n | \"30s\"\n | \"1m\"\n | \"5m\"\n | \"15m\"\n | \"30m\"\n | \"1h\"\n | \"4h\"\n | \"12h\"\n | \"24h\";\n\nexport interface TokenCandle {\n /**\n * open price in usd\n */\n open: string;\n /**\n * close price in usd\n */\n close: string;\n /**\n * high price in usd\n */\n high: string;\n /**\n * low price in usd\n */\n low: string;\n /**\n * volume in usd\n */\n volume: string;\n /**\n * resolution\n */\n resolution: TokenResolution;\n /**\n * timestamp\n */\n timestamp: Date;\n}\n\nexport interface TokenHolder {\n /**\n * holder wallet address\n */\n address: string;\n /**\n * holdings amount in token\n */\n amount: string;\n /**\n * holdings amount in usd\n */\n amountInUsd: string;\n /**\n * holdings ratio, range is 0-100\n */\n ratio: string;\n}\n"],"mappings":"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","names":["SwapMode","Chain","ChainNamespace","SolanaTokenProtocol"]}
1
+ {"version":3,"sources":["../src/api/index.ts","../src/api/dex.ts","../src/version.ts","../src/chains.ts","../src/token.ts"],"sourcesContent":["export * from \"./dex\";\nexport * from \"./pagination\";\n","import { Activity, ActivityType, Trade } from \"../activity\";\nimport { Chain } from \"../chains\";\nimport {\n Token,\n TokenCandle,\n TokenHolder,\n TokenMarketData,\n TokenResolution,\n TokenSecurity,\n TokenStats,\n} from \"../token\";\nimport {\n Portfolio,\n PortfolioPnl,\n WalletPnl,\n WalletPortfolioPnls,\n WalletPortfolios,\n} from \"../wallet\";\nimport { CursorPagination } from \"./pagination\";\n\n/**\n * Cursor list result data\n */\nexport interface CursorList<T> extends CursorPagination {\n data: Array<T>;\n}\n\n/**\n * Cursor list query options\n */\nexport interface CursorListOptions {\n /** query cursor */\n cursor?: string;\n /** return limit */\n limit?: number;\n /** query direction */\n direction?: \"next\" | \"prev\";\n}\n\n/**\n * Options for getting token candles\n */\nexport interface GetTokenCandlesOptions {\n /** query candles after this timestamp */\n after?: Date;\n /** query candles before this timestamp */\n before?: Date;\n /** return limit */\n limit?: number;\n}\n\n/**\n * Token field for filtering\n */\nexport type TokenFieldOption =\n | \"price\"\n | \"priceChange1m\"\n | \"priceChange5m\"\n | \"priceChange15m\"\n | \"priceChange30m\"\n | \"priceChange1h\"\n | \"priceChange4h\"\n | \"priceChange24h\"\n | \"marketCap\"\n | \"tvl\"\n | \"top10Holdings\"\n | \"top10Ratio\"\n | \"top100Holdings\"\n | \"top100Ratio\"\n | \"holders\"\n | \"creatorsHoldings\"\n | \"creatorsRatio\"\n | \"buys1m\"\n | \"buys5m\"\n | \"buys15m\"\n | \"buys30m\"\n | \"buys1h\"\n | \"buys4h\"\n | \"buys24h\"\n | \"sells1m\"\n | \"sells5m\"\n | \"sells15m\"\n | \"sells30m\"\n | \"sells1h\"\n | \"sells4h\"\n | \"sells24h\"\n | \"trades1m\"\n | \"trades5m\"\n | \"trades15m\"\n | \"trades30m\"\n | \"trades1h\"\n | \"trades4h\"\n | \"trades24h\"\n | \"traders1m\"\n | \"traders5m\"\n | \"traders15m\"\n | \"traders30m\"\n | \"traders1h\"\n | \"traders4h\"\n | \"traders24h\"\n | \"volumes1m\"\n | \"volumes5m\"\n | \"volumes15m\"\n | \"volumes30m\"\n | \"volumes1h\"\n | \"volumes4h\"\n | \"volumes24h\"\n | \"launchedFromProtocolFamily\"\n | \"migratedToProtocolFamily\"\n | \"tag\"\n | \"createdAt\"\n | (string & {});\n\n/**\n * Token filter option\n */\nexport interface TokenFilterOption {\n field: TokenFieldOption;\n operator:\n | \"eq\"\n | \"ne\"\n | \"gt\"\n | \"gte\"\n | \"lt\"\n | \"lte\"\n | \"between\"\n | \"in\"\n | \"nin\"\n | \"contains\"\n | \"notContains\"\n | \"startsWith\"\n | \"endsWith\"\n | \"isNotNull\"\n | \"isNull\";\n value?: string | number | boolean | Array<string | number | boolean>;\n}\n\n/**\n * Options for getting token list\n */\nexport interface GetTokenListOptions {\n /** sort field */\n sortBy?: TokenFieldOption;\n /** sort direction */\n sortDirection?: \"asc\" | \"desc\";\n /** filters */\n filters?: Array<TokenFilterOption>;\n /** search keywords */\n keywords?: Array<string>;\n /** exclude keywords */\n excludeKeywords?: Array<string>;\n}\n\n/**\n * Options for searching tokens\n */\nexport interface SearchTokensOptions extends CursorListOptions {\n /** chains */\n chains?: Array<Chain>;\n /** search keyword */\n keyword?: string;\n /** filters */\n filters?: Array<TokenFilterOption>;\n /** sort field */\n sortBy?: TokenFieldOption;\n /** sort direction */\n sortDirection?: \"asc\" | \"desc\";\n}\n\n/**\n * Search token cursor list\n */\nexport interface SearchTokenCursorList extends CursorList<Token> {\n /** total count */\n total?: number;\n /** extra infos by api provider */\n extra?: Record<string, unknown>;\n}\n\nexport enum SwapMode {\n EXACT_IN = \"exact_in\",\n EXACT_OUT = \"exact_out\",\n}\n\nexport interface SwapParams {\n /** chain id */\n chain: Chain;\n /** user wallet address */\n userAddress: string;\n /** input token address */\n input: string;\n /** output token address */\n output: string;\n /** swap mode, e.g. ExactIn, ExactOut */\n mode: SwapMode;\n /** input token amount when mode is ExactIn, output token amount when mode is ExactOut */\n amount: string;\n /** slippage, range is 0-100 */\n slippage?: number;\n /** priority fee */\n priorityFee?: string;\n /** tip fee */\n tipFee?: string;\n /** whether to use anti-MEV */\n isAntiMev?: boolean;\n}\n\nexport interface SwapRoutePlan {\n /** protocol name / dex name etc. */\n name: string;\n /** input token address */\n input: string;\n /** input token amount */\n inputAmount: string;\n /** output token address */\n output: string;\n /** output token amount */\n outputAmount: string;\n /** fee quote token address */\n feeQuote?: string;\n /** fee amount */\n feeAmount?: string;\n /** extra infos by api provider */\n extra?: Record<string, unknown>;\n}\n\nexport interface SwapRoute {\n /** unsigned tx in base64 format */\n serializedTx: string;\n /** swap plans */\n plans: Array<SwapRoutePlan>;\n /** extra infos by api provider */\n extra?: Record<string, unknown>;\n}\n\nexport interface SendTxParams {\n /** chain id */\n chain: Chain;\n /** signed tx in base64 format */\n serializedTx: string;\n /** extra infos needed by api provider */\n extra?: Record<string, unknown>;\n}\n\nexport interface SendTxResult {\n /** tx hash */\n txHash: string;\n /** extra infos by api provider */\n extra?: Record<string, unknown>;\n}\n\n/**\n * Options for getting trades\n */\nexport interface GetTradesOptions extends CursorListOptions {\n /** filter trades before this timestamp */\n before?: Date;\n /** filter trades after this timestamp */\n after?: Date;\n /** filter trades before this block height */\n beforeBlockHeight?: number;\n /** filter trades after this block height */\n afterBlockHeight?: number;\n /** filter trades by type */\n type?: \"buy\" | \"sell\";\n /** filter trades by pool address */\n poolAddress?: string;\n}\n\n/**\n * Options for getting activities\n */\nexport interface GetActivitiesOptions extends CursorListOptions {\n /** filter activities before this timestamp */\n before?: Date;\n /** filter activities after this timestamp */\n after?: Date;\n /** filter activities before this block height */\n beforeBlockHeight?: number;\n /** filter activities after this block height */\n afterBlockHeight?: number;\n /** filter activities by type */\n type?: ActivityType;\n /** filter activities by pool address */\n poolAddress?: string;\n}\n\n/**\n * Resolution subset supported by the trending token list.\n */\nexport type TrendingResolution = Extract<\n TokenResolution,\n \"1m\" | \"5m\" | \"1h\" | \"4h\" | \"24h\"\n>;\n\n/**\n * API client interface\n */\nexport interface IClient {\n /**\n * fetch token info\n * @param chain chain id\n * @param address token address\n * @returns token info\n */\n getToken(chain: Chain, address: string): Promise<Token>;\n\n /**\n * fetch token infos in batch\n * @param chain chain id\n * @param addresses token addresses\n * @returns token infos\n */\n getTokens(chain: Chain, addresses: Array<string>): Promise<Array<Token>>;\n\n /**\n * fetch token candles\n * @param chain chain id\n * @param address token address\n * @param resolution token resolution\n * @param options optional query options\n * @returns token candles\n */\n getTokenCandles(\n chain: Chain,\n address: string,\n resolution: TokenResolution,\n options?: GetTokenCandlesOptions,\n ): Promise<Array<TokenCandle>>;\n\n /**\n * fetch token security\n * @param chain chain id\n * @param address token address\n * @returns token security\n */\n getTokenSecurity(chain: Chain, address: string): Promise<TokenSecurity>;\n\n /**\n * fetch token stats\n * @param chain chain id\n * @param address token address\n * @returns token stats\n */\n getTokenStats(chain: Chain, address: string): Promise<TokenStats>;\n\n /**\n * fetch token holders\n * @param chain chain id\n * @param address token address\n * @param options optional query options\n * @returns token holders\n */\n getTokenHolders(\n chain: Chain,\n address: string,\n options?: CursorListOptions,\n ): Promise<CursorList<TokenHolder>>;\n\n /**\n * fetch token market data\n * @param chain chain id\n * @param address token address\n * @returns token market data\n */\n getTokenMarketData(chain: Chain, address: string): Promise<TokenMarketData>;\n\n /**\n * fetch `New` token list\n * @param chain chain id\n * @param options optional query options\n * @returns `New` token list\n */\n getNewTokens(\n chain: Chain,\n options?: GetTokenListOptions,\n ): Promise<Array<Token>>;\n\n /**\n * fetch `Final Stretch` token list\n * @param chain chain id\n * @param options optional query options\n * @returns `Final Stretch` token list\n */\n getFinalStretchTokens(\n chain: Chain,\n options?: GetTokenListOptions,\n ): Promise<Array<Token>>;\n\n /**\n * fetch `Migrated` token list\n * @param chain chain id\n * @param options optional query options\n * @returns `Migrated` token list\n */\n getMigratedTokens(\n chain: Chain,\n options?: GetTokenListOptions,\n ): Promise<Array<Token>>;\n\n /**\n * fetch `Trending` token list\n * @param chain chain id\n * @param resolution query resolution, e.g. \"1m\", \"5m\", \"1h\", \"4h\", \"24h\"\n * @param options optional query options\n * @returns `Trending` token list\n */\n getTrendingTokens(\n chain: Chain,\n resolution: TrendingResolution,\n options?: GetTokenListOptions,\n ): Promise<Array<Token>>;\n\n /**\n * fetch `Stock` token list\n * @param chain chain id\n * @param options optional query options\n * @returns `Stock` token list\n */\n getStockTokens(\n chain: Chain,\n options?: GetTokenListOptions,\n ): Promise<Array<Token>>;\n\n /**\n * search tokens\n * @param options optional query options\n * @returns search token cursor list\n */\n searchTokens(options?: SearchTokensOptions): Promise<SearchTokenCursorList>;\n\n /**\n * fetch swap route plans\n * @param params swap params\n * @returns swap route plans\n */\n swapRoute(params: SwapParams): Promise<SwapRoute>;\n\n /**\n * send tx\n * @param params send tx params\n * @returns send tx result\n */\n sendTx(params: SendTxParams): Promise<SendTxResult>;\n\n /**\n * check if tx is successful\n * @param chain chain id\n * @param txHash tx hash\n * @param timeout timeout in milliseconds\n * @returns true if tx is successful, false otherwise\n */\n checkTxSuccess(\n chain: Chain,\n txHash: string,\n timeout?: number,\n ): Promise<boolean>;\n\n /**\n * fetch wallet portfolios\n * @param chain chain id\n * @param address wallet address\n * @param options optional pagination options\n * @returns wallet portfolios\n */\n getWalletPortfolios(\n chain: Chain,\n address: string,\n options?: { cursor?: string; limit?: number },\n ): Promise<WalletPortfolios>;\n\n /**\n * fetch wallet PnL summary\n * @param chain chain id\n * @param address wallet address\n * @param resolution pnl resolution (e.g. \"7d\", \"30d\")\n * @returns wallet pnl summary\n */\n getWalletPnl(\n chain: Chain,\n address: string,\n resolution?: string,\n ): Promise<WalletPnl>;\n\n /**\n * fetch wallet portfolio PnL details (per-token)\n * @param chain chain id\n * @param address wallet address\n * @param options optional query options\n * @returns portfolio pnl list with summary\n */\n getWalletPortfolioPnls(\n chain: Chain,\n address: string,\n options?: { cursor?: string; limit?: number },\n ): Promise<WalletPortfolioPnls>;\n\n /**\n * fetch wallet portfolios for specific tokens\n * @param chain chain id\n * @param address wallet address\n * @param tokenAddresses token addresses to query\n * @returns portfolio list for the specified tokens\n */\n getWalletPortfoliosByTokens(\n chain: Chain,\n address: string,\n tokenAddresses: Array<string>,\n ): Promise<Array<Portfolio>>;\n\n /**\n * fetch wallet portfolio PnL for specific tokens\n * @param chain chain id\n * @param address wallet address\n * @param tokenAddresses token addresses to query\n * @returns portfolio pnl list for the specified tokens\n */\n getWalletPortfolioPnlsByTokens(\n chain: Chain,\n address: string,\n tokenAddresses: Array<string>,\n ): Promise<Array<PortfolioPnl>>;\n\n /**\n * fetch wallet's trade activities\n * @param chain chain id\n * @param address wallet address\n * @param options optional query options\n * @returns wallet's trade activities\n */\n getWalletTrades(\n chain: Chain,\n address: string,\n options?: GetTradesOptions,\n ): Promise<CursorList<Trade>>;\n\n /**\n * fetch token's trade activities\n * @param chain chain id\n * @param address token address\n * @param options optional query options\n * @returns token's trade activities\n */\n getTokenTrades(\n chain: Chain,\n address: string,\n options?: GetTradesOptions,\n ): Promise<CursorList<Trade>>;\n\n /**\n * fetch wallet's activities (trades, liquidity, red packets, etc.)\n * @param chain chain id\n * @param address wallet address\n * @param options optional query options\n * @returns wallet's activities\n */\n getWalletActivities(\n chain: Chain,\n address: string,\n options?: GetActivitiesOptions,\n ): Promise<CursorList<Activity>>;\n\n /**\n * fetch token's activities (trades, liquidity, red packets, etc.)\n * @param chain chain id\n * @param address token address\n * @param options optional query options\n * @returns token's activities\n */\n getTokenActivities(\n chain: Chain,\n address: string,\n options?: GetActivitiesOptions,\n ): Promise<CursorList<Activity>>;\n\n /**\n * get presigned upload url\n * @returns presigned upload url\n */\n getPresignedUploadUrl(): Promise<string>;\n}\n\nexport interface ISubscription {\n unsubscribe(): void;\n}\n\n/**\n * Incremental token update from subscriptions.\n * `chain` + `address` identify the token; all other fields are optional —\n * `undefined` means this push did not carry that field.\n */\nexport type TokenSubscribed = Partial<Omit<Token, \"chain\" | \"address\">> &\n Pick<Token, \"chain\" | \"address\">;\n\nexport interface WalletPnlSubscribed extends WalletPnl {\n /** pnl resolution (e.g. \"7d\", \"30d\") */\n resolution?: string;\n}\n\nexport interface PortfolioSubscribed {\n /** chain id */\n chain: Chain;\n /** wallet address */\n walletAddress: string;\n /** token address */\n tokenAddress: string;\n /** token current price in usd */\n priceInUsd?: string;\n /** holding token amount */\n amount?: string;\n}\n\nexport type PortfolioPnlSubscribed = Partial<\n Omit<PortfolioPnl, \"address\" | \"name\" | \"symbol\" | \"image\">\n> & {\n /** wallet address */\n walletAddress: string;\n /** token address */\n tokenAddress: string;\n};\n\n/**\n * Subscribe client interface\n */\nexport interface ISubscribeClient {\n /**\n * Subscribe to a token's real-time data updates (stats, market data,\n * holders, liquidity, etc.). The client internally manages multiple\n * backend channels and delivers incremental updates via `callback`.\n * @param chain chain id\n * @param address token address\n * @param callback receives incremental token updates\n * @returns subscription\n */\n subscribeToken(\n chain: Chain,\n address: string,\n callback: (data: Array<TokenSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe token new candles\n * @param chain chain id\n * @param address token address\n * @param resolution token resolution\n * @param callback callback function\n * @returns subscription\n */\n subscribeTokenCandles(\n chain: Chain,\n address: string,\n resolution: TokenResolution,\n callback: (candles: Array<TokenCandle>) => void,\n ): ISubscription;\n\n /**\n * Subscribe wallet's pnl changes\n * @param chain chain id\n * @param address wallet address\n * @param callback callback function\n * @returns subscription\n */\n subscribeWalletPnl(\n chain: Chain,\n address: string,\n callback: (pnls: Array<WalletPnlSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe wallet's portfolio changes\n * @param chain chain id\n * @param address wallet address\n * @param callback callback function\n * @returns subscription\n */\n subscribeWalletPortfolios(\n chain: Chain,\n address: string,\n callback: (portfolios: Array<PortfolioSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe wallet's portfolio pnl changes\n * @param chain chain id\n * @param address wallet address\n * @param callback callback function\n * @returns subscription\n */\n subscribeWalletPortfolioPnls(\n chain: Chain,\n address: string,\n callback: (portfolioPnls: Array<PortfolioPnlSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe wallet's new trade activities\n * @param chain chain id\n * @param address wallet address\n * @param callback callback function\n * @returns subscription\n */\n subscribeWalletTrades(\n chain: Chain,\n address: string,\n callback: (trades: Array<Trade>) => void,\n ): ISubscription;\n\n /**\n * Subscribe token's new trade activities\n * @param chain chain id\n * @param address token address\n * @param callback callback function\n * @returns subscription\n */\n subscribeTokenTrades(\n chain: Chain,\n address: string,\n callback: (trades: Array<Trade>) => void,\n ): ISubscription;\n\n /**\n * Subscribe wallet's new activities (trades, liquidity, etc.)\n * @param chain chain id\n * @param address wallet address\n * @param callback callback function\n * @returns subscription\n */\n subscribeWalletActivities(\n chain: Chain,\n address: string,\n callback: (activities: Array<Activity>) => void,\n ): ISubscription;\n\n /**\n * Subscribe token's new activities (trades, liquidity, etc.)\n * @param chain chain id\n * @param address token address\n * @param callback callback function\n * @returns subscription\n */\n subscribeTokenActivities(\n chain: Chain,\n address: string,\n callback: (activities: Array<Activity>) => void,\n ): ISubscription;\n\n /**\n * Subscribe to `New` token list real-time updates. The client internally\n * manages multiple backend channels (new token events, metadata, stats,\n * holders, supply, liquidity, bonding curve) and delivers incremental\n * updates via `callback`.\n * @param chain chain id\n * @param callback receives incremental token updates\n * @returns subscription\n */\n subscribeNewTokens(\n chain: Chain,\n callback: (data: Array<TokenSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe to `Trending` token list real-time updates. The client\n * internally manages multiple backend channels (stats, holders, supply,\n * liquidity) and delivers incremental updates via `callback`.\n * @param chain chain id\n * @param callback receives incremental token updates\n * @returns subscription\n */\n subscribeTrendingTokens(\n chain: Chain,\n callback: (data: Array<TokenSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe to `Migrated` token list real-time updates. The client\n * internally manages multiple backend channels (stats, holders, supply,\n * liquidity) and delivers incremental updates via `callback`.\n * @param chain chain id\n * @param callback receives incremental token updates\n * @returns subscription\n */\n subscribeMigratedTokens(\n chain: Chain,\n callback: (data: Array<TokenSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe to `FinalStretch` token list real-time updates. The client\n * internally manages multiple backend channels (stats, holders, supply,\n * liquidity, bonding curve) and delivers incremental updates via `callback`.\n * @param chain chain id\n * @param callback receives incremental token updates\n * @returns subscription\n */\n subscribeFinalStretchTokens(\n chain: Chain,\n callback: (data: Array<TokenSubscribed>) => void,\n ): ISubscription;\n\n /**\n * Subscribe to `Stock` token list real-time updates. The client internally\n * manages multiple backend channels (stats, holders, supply, liquidity)\n * and delivers incremental updates via `callback`.\n * @param chain chain id\n * @param callback receives incremental token updates\n * @returns subscription\n */\n subscribeStockTokens(\n chain: Chain,\n callback: (data: Array<TokenSubscribed>) => void,\n ): ISubscription;\n}\n","declare global {\n interface Window {\n __LIBERFI_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif (typeof window !== \"undefined\") {\n window.__LIBERFI_VERSION__ = window.__LIBERFI_VERSION__ || {};\n window.__LIBERFI_VERSION__[\"@liberfi.io/types\"] = \"0.1.28\";\n}\n\nexport default \"0.1.28\";\n","export enum Chain {\n ETHEREUM = \"1\",\n UBIQ = \"8\",\n OPTIMISM = \"10\",\n FLARE = \"14\",\n SONGBIRD = \"19\",\n ELASTOS = \"20\",\n KARDIA = \"24\",\n CRONOS = \"25\",\n RSK = \"30\",\n TELOS = \"40\",\n LUKSO = \"42\",\n CRAB = \"44\",\n DARWINIA = \"46\",\n XDC = \"50\",\n CSC = \"52\",\n ZYX = \"55\",\n BINANCE = \"56\",\n BINANCE_TESTNET = \"97\",\n SYSCOIN = \"57\",\n GOCHAIN = \"60\",\n ETHEREUMCLASSIC = \"61\",\n OKEXCHAIN = \"66\",\n HOO = \"70\",\n METER = \"82\",\n NOVA_NETWORK = \"87\",\n TOMOCHAIN = \"88\",\n BITKUB = \"96\",\n XDAI = \"100\",\n VELAS = \"106\",\n THUNDERCORE = \"108\",\n ENULS = \"119\",\n FUSE = \"122\",\n HECO = \"128\",\n UNICHAIN = \"130\",\n POLYGON = \"137\",\n SONIC = \"146\",\n SHIMMER_EVM = \"148\",\n RBN = \"151\",\n OMNI = \"166\",\n MANTA = \"169\",\n HSK = \"177\",\n WATER = \"181\",\n XLAYER = \"196\",\n XDAIARB = \"200\",\n OP_BNB = \"204\",\n VINUCHAIN = \"207\",\n ENERGYWEB = \"246\",\n OASYS = \"248\",\n FANTOM = \"250\",\n FRAXTAL = \"252\",\n HPB = \"269\",\n BOBA = \"288\",\n OMAX = \"311\",\n FILECOIN = \"314\",\n KUCOIN = \"321\",\n ZKSYNC_ERA = \"324\",\n SHIDEN = \"336\",\n THETA = \"361\",\n PULSE = \"369\",\n CRONOS_ZKEVM = \"388\",\n SX = \"416\",\n AREON = \"463\",\n WC = \"480\",\n CANDLE = \"534\",\n ROLLUX = \"570\",\n ASTAR = \"592\",\n REDSTONE = \"690\",\n MATCHAIN = \"698\",\n CALLISTO = \"820\",\n TARA = \"841\",\n WANCHAIN = \"888\",\n LYRA_CHAIN = \"957\",\n BIFROST = \"996\",\n CONFLUX = \"1030\",\n METIS = \"1088\",\n DYMENSION = \"1100\",\n POLYGON_ZKEVM = \"1101\",\n CORE = \"1116\",\n LISK = \"1135\",\n ULTRON = \"1231\",\n STEP = \"1234\",\n MOONBEAM = \"1284\",\n MOONRIVER = \"1285\",\n SEI = \"1329\",\n LIVING_ASSETS_MAINNET = \"1440\",\n STY = \"1514\",\n TENET = \"1559\",\n GRAVITY = \"1625\",\n REYA_NETWORK = \"1729\",\n SONEIUM = \"1868\",\n SWELLCHAIN = \"1923\",\n ONUS = \"1975\",\n HUBBLENET = \"1992\",\n SANKO = \"1996\",\n DOGECHAIN = \"2000\",\n MILKOMEDA = \"2001\",\n MILKOMEDA_A1 = \"2002\",\n KAVA = \"2222\",\n SOMA = \"2332\",\n KARAK = \"2410\",\n ABSTRACT = \"2741\",\n ABSTRACT_TESTNET = \"11124\",\n MORPH = \"2818\",\n CROSSFI = \"4158\",\n BEAM = \"4337\",\n IOTEX = \"4689\",\n MANTLE = \"5000\",\n XLC = \"5050\",\n NAHMII = \"5551\",\n BOUNCEBIT = \"6001\",\n TOMBCHAIN = \"6969\",\n ZETACHAIN = \"7000\",\n PLANQ = \"7070\",\n BITROCK = \"7171\",\n XSAT = \"7200\",\n CYETH = \"7560\",\n CANTO = \"7700\",\n KLAYTN = \"8217\",\n THAT = \"8428\",\n BASE = \"8453\",\n HELA = \"8668\",\n IOTAEVM = \"8822\",\n JBC = \"8899\",\n EVMOS = \"9001\",\n CARBON = \"9790\",\n SMARTBCH = \"10000\",\n ARTELA = \"11820\",\n IMMUTABLE_ZKEVM = \"13371\",\n LOOP = \"15551\",\n GENESYS = \"16507\",\n EOS_EVM = \"17777\",\n MAP_PROTOCOL = \"22776\",\n SAPPHIRE = \"23294\",\n BITGERT = \"32520\",\n FUSION = \"32659\",\n ZILLIQA = \"32769\",\n APECHAIN = \"33139\",\n EDU_CHAIN = \"41923\",\n ARBITRUM = \"42161\",\n ARBITRUM_TESTNET_GOERLI = \"421613\",\n ARBITRUM_TESTNET_SEPOLIA = \"421614\",\n ARBITRUM_NOVA = \"42170\",\n CELO = \"42220\",\n OASIS = \"42262\",\n ASSETCHAIN = \"42420\",\n ETHERLINK = \"42793\",\n AVALANCHE = \"43114\",\n REI = \"47805\",\n ZIRCUIT = \"48900\",\n SOPHON = \"50104\",\n ETN = \"52014\",\n SUPERPOSITION = \"55244\",\n REICHAIN = \"55555\",\n BOBA_BNB = \"56288\",\n INK = \"57073\",\n LINEA = \"59144\",\n BOB = \"60808\",\n GODWOKEN = \"71402\",\n BERACHAIN = \"80094\",\n BLAST = \"81457\",\n CHILIZ = \"88888\",\n STRATIS = \"105105\",\n REAL = \"111188\",\n ODYSSEY = \"153153\",\n TAIKO = \"167000\",\n BITLAYER = \"200901\",\n HYDRATION = \"222222\",\n PAREX = \"322202\",\n POLIS = \"333999\",\n KEKCHAIN = \"420420\",\n SCROLL = \"534352\",\n ZERO_NETWORK = \"543210\",\n ZKLINK_NOVA = \"810180\",\n VISION = \"888888\",\n SAAKURU = \"7225878\",\n ZORA = \"7777777\",\n CORN = \"21000000\",\n NEON = \"245022934\",\n LUMIA = \"994873017\",\n AURORA = \"1313161554\",\n HARMONY = \"1666600000\",\n PALM = \"11297108109\",\n ZENIQ = \"383414847825\",\n CURIO = \"836542336838601\",\n MODE = \"34443\",\n SOLANA = \"900900900\",\n SOLANA_TESTNET = \"901901901\",\n SOLANA_DEVNET = \"902902902\",\n}\n\nexport enum ChainNamespace {\n EVM = \"EVM\",\n SOLANA = \"SOL\",\n}\n","import { Chain } from \"./chains\";\n\nexport enum SolanaTokenProtocol {\n BAGS = \"bags\",\n BELIEVE = \"believe\",\n BONK = \"bonk\",\n BOOP = \"boop\",\n HEAVEN = \"heaven\",\n JUPSTUDIO = \"jupstudio\",\n LAUNCHLAB = \"launchlab\",\n METEORA = \"meteora\",\n MOONIT = \"moonit\",\n MOONSHOT = \"moonshot\",\n ORCA = \"orca\",\n PUMP = \"pump\",\n RAYDIUM = \"raydium\",\n SUGAR = \"sugar\",\n VIRTUAL_CURVE = \"virtual-curve\",\n PUMP_AMM = \"pump-amm\",\n}\n\nexport type TokenProtocol = SolanaTokenProtocol | (string & {});\n\nexport const SOLANA_TOKEN_PROTOCOLS = Object.values(SolanaTokenProtocol);\n\nexport interface Token {\n /**\n * chain id.\n */\n chain: Chain;\n /**\n * token name, e.g. \"Ethereum\", \"Solana\", etc.\n */\n name: string;\n /**\n * token symbol, e.g. \"ETH\", \"SOL\", etc.\n */\n symbol: string;\n /**\n * token address.\n */\n address: string;\n /**\n * token decimals.\n */\n decimals: number;\n /**\n * token avatar image url.\n */\n image?: string;\n /**\n * token description.\n */\n description?: string;\n /**\n * token creators.\n */\n creators?: Array<TokenCreator>;\n /**\n * token launch info.\n */\n launchedFrom?: TokenLaunchedFrom;\n /**\n * token migrate progress, range is 0-100.\n */\n migrateProgress?: string;\n /**\n * token migrate info.\n */\n migratedTo?: TokenMigratedTo;\n /**\n * token social medias.\n */\n socialMedias?: TokenSocialMedias;\n /**\n * token stats.\n */\n stats?: TokenStats;\n /**\n * token market data.\n */\n marketData?: TokenMarketData;\n /**\n * token liquidity pools\n */\n liquidities?: Array<TokenLiquidity>;\n /**\n * token security.\n */\n security?: TokenSecurity;\n /**\n * token tags.\n */\n tags?: Array<string>;\n /**\n * token create time.\n */\n createdAt?: Date;\n}\n\nexport interface TokenCreator {\n /**\n * token creator's wallet address.\n */\n address?: string;\n /**\n * token creator's share percentage, range is 0-100.\n */\n share?: number;\n /**\n * whether the token creator is verified.\n */\n isVerified?: boolean;\n}\n\nexport interface TokenLaunchedFrom {\n /**\n * token launch program address.\n */\n programAddress?: string;\n /**\n * token launch protocol family.\n */\n protocolFamily?: string;\n}\n\nexport interface TokenMigratedTo {\n /**\n * token migrate program address.\n */\n programAddress?: string;\n /**\n * token migrate protocol family.\n */\n protocolFamily?: string;\n /**\n * token migrate pool address.\n */\n poolAddress?: string;\n /**\n * token migrate time.\n */\n migratedAt?: Date;\n}\n\nexport interface TokenSocialMedias {\n /**\n * token twitter url.\n */\n twitter?: string;\n /**\n * token telegram url.\n */\n telegram?: string;\n /**\n * token website url.\n */\n website?: string;\n /**\n * token tiktok url.\n */\n tiktok?: string;\n /**\n * token discord url.\n */\n discord?: string;\n /**\n * token facebook url.\n */\n facebook?: string;\n /**\n * token github url.\n */\n github?: string;\n /**\n * token instagram url.\n */\n instagram?: string;\n /**\n * token linkedin url.\n */\n linkedin?: string;\n /**\n * token medium url.\n */\n medium?: string;\n /**\n * token reddit url.\n */\n reddit?: string;\n /**\n * token youtube url.\n */\n youtube?: string;\n /**\n * token bitbucket url.\n */\n bitbucket?: string;\n}\n\nexport interface TokenStats {\n /**\n * token stats by 1m timeframe.\n */\n \"1m\"?: TokenStatsByResolution;\n /**\n * token stats by 5m timeframe.\n */\n \"5m\"?: TokenStatsByResolution;\n /**\n * token stats by 15m timeframe.\n */\n \"15m\"?: TokenStatsByResolution;\n /**\n * token stats by 30m timeframe.\n */\n \"30m\"?: TokenStatsByResolution;\n /**\n * token stats by 1h timeframe.\n */\n \"1h\"?: TokenStatsByResolution;\n /**\n * token stats by 4h timeframe.\n */\n \"4h\"?: TokenStatsByResolution;\n /**\n * token stats by 24h timeframe.\n */\n \"24h\"?: TokenStatsByResolution;\n}\n\nexport interface TokenStatsByResolution {\n /**\n * buy txs count\n */\n buys?: number;\n /**\n * sell txs count\n */\n sells?: number;\n /**\n * txs count\n */\n trades?: number;\n /**\n * buy addresses count\n */\n buyers?: number;\n /**\n * sell addresses count\n */\n sellers?: number;\n /**\n * trade addresses count\n */\n traders?: number;\n /**\n * buy volumes in quote token\n */\n buyVolumes?: string;\n /**\n * sell volumes in quote token\n */\n sellVolumes?: string;\n /**\n * total volumes in quote token\n */\n volumes?: string;\n /**\n * buy volumes in usd\n */\n buyVolumesInUsd?: string;\n /**\n * sell volumes in usd\n */\n sellVolumesInUsd?: string;\n /**\n * total volumes in usd\n */\n volumesInUsd?: string;\n /**\n * open price in usd\n */\n openPriceInUsd?: string;\n /**\n * close price in usd\n */\n closePriceInUsd?: string;\n /**\n * high price in usd\n */\n highPriceInUsd?: string;\n /**\n * low price in usd\n */\n lowPriceInUsd?: string;\n /**\n * price in usd\n */\n priceInUsd?: string;\n /**\n * price change %\n */\n priceChange?: string;\n}\n\nexport interface TokenMarketData {\n /**\n * total supply\n */\n totalSupply?: string;\n /**\n * market cap in quote token\n */\n marketCap?: string;\n /**\n * market cap in usd\n */\n marketCapInUsd?: string;\n /**\n * price in quote token\n */\n price?: string;\n /**\n * price in usd\n */\n priceInUsd?: string;\n /**\n * tvl in quote token\n */\n tvl?: string;\n /**\n * tvl in usd\n */\n tvlInUsd?: string;\n /**\n * holders count\n */\n holders?: number;\n /**\n * top 10 total holdings\n */\n top10Holdings?: string;\n /**\n * top 10 holdings ratio\n */\n top10HoldingsRatio?: string;\n /**\n * top 50 total holdings\n */\n top50Holdings?: string;\n /**\n * top 50 holdings ratio\n */\n top50HoldingsRatio?: string;\n /**\n * top 100 total holdings\n */\n top100Holdings?: string;\n /**\n * top 100 holdings ratio\n */\n top100HoldingsRatio?: string;\n /**\n * Bluechip holders count\n */\n bluechipHolders?: number;\n /**\n * Bluechip total holdings\n */\n bluechipHoldings?: string;\n /**\n * Bluechip holdings ratio\n */\n bluechipHoldingsRatio?: string;\n /**\n * KOL holders count\n */\n kolHolders?: number;\n /**\n * KOL total holdings\n */\n kolHoldings?: string;\n /**\n * KOL holdings ratio\n */\n kolHoldingsRatio?: string;\n /**\n * Sniper holders count\n */\n sniperHolders?: number;\n /**\n * Sniper total holdings\n */\n sniperHoldings?: string;\n /**\n * Sniper holdings ratio\n */\n sniperHoldingsRatio?: string;\n /**\n * Pro holders count\n */\n proHolders?: number;\n /**\n * Pro total holdings\n */\n proHoldings?: string;\n /**\n * Pro holdings ratio\n */\n proHoldingsRatio?: string;\n /**\n * Insider holders count\n */\n insiderHolders?: number;\n /**\n * Insider total holdings\n */\n insiderHoldings?: string;\n /**\n * Insider holdings ratio\n */\n insiderHoldingsRatio?: string;\n /**\n * Sandwich holders count\n */\n sandwichHolders?: number;\n /**\n * Sandwich total holdings\n */\n sandwichHoldings?: string;\n /**\n * Sandwich holdings ratio\n */\n sandwichHoldingsRatio?: string;\n /**\n * Fresh holders count\n */\n freshHolders?: number;\n /**\n * Fresh total holdings\n */\n freshHoldings?: string;\n /**\n * Fresh holdings ratio\n */\n freshHoldingsRatio?: string;\n /**\n * Bundle holders count\n */\n bundleHolders?: number;\n /**\n * Bundle total holdings\n */\n bundleHoldings?: string;\n /**\n * Bundle holdings ratio\n */\n bundleHoldingsRatio?: string;\n /**\n * Dev holders count\n */\n devHolders?: number;\n /**\n * Dev total holdings\n */\n devHoldings?: string;\n /**\n * Dev holdings ratio\n */\n devHoldingsRatio?: string;\n}\n\nexport interface TokenLiquidity {\n /**\n * pool avatar image\n */\n image?: string;\n /**\n * pair token address.\n */\n pairAddress?: string;\n /**\n * pool address.\n */\n poolAddress?: string;\n /**\n * program address.\n */\n programAddress?: string;\n /**\n * protocol name.\n */\n protocolName?: string;\n /**\n * protocol family.\n */\n protocolFamily?: string;\n /**\n * tvl in quote token.\n */\n tvl?: string;\n /**\n * tvl in usd.\n */\n tvlInUsd?: string;\n}\n\n/**\n * TODO: more security checks\n */\nexport interface TokenSecurity {\n /**\n * whether the token has transfer fee.\n */\n hasTransferFee?: boolean;\n /**\n * whether the token transfer fee is upgradable.\n */\n isTransferFeeUpgradable?: boolean;\n /**\n * whether the token is transferable.\n */\n isTransferable?: boolean;\n /**\n * whether the token is freezable.\n */\n isFreezable?: boolean;\n /**\n * whether the token is closable.\n */\n isClosable?: boolean;\n}\n\nexport type TokenResolution =\n | \"1s\"\n | \"15s\"\n | \"30s\"\n | \"1m\"\n | \"5m\"\n | \"15m\"\n | \"30m\"\n | \"1h\"\n | \"4h\"\n | \"12h\"\n | \"24h\";\n\nexport interface TokenCandle {\n /**\n * open price in usd\n */\n open: string;\n /**\n * close price in usd\n */\n close: string;\n /**\n * high price in usd\n */\n high: string;\n /**\n * low price in usd\n */\n low: string;\n /**\n * volume in usd\n */\n volume: string;\n /**\n * resolution\n */\n resolution: TokenResolution;\n /**\n * timestamp\n */\n timestamp: Date;\n}\n\nexport interface TokenHolder {\n /**\n * holder wallet address\n */\n address: string;\n /**\n * holdings amount in token\n */\n amount: string;\n /**\n * holdings amount in usd\n */\n amountInUsd: string;\n /**\n * holdings ratio, range is 0-100\n */\n ratio: string;\n}\n"],"mappings":"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","names":["SwapMode","Chain","ChainNamespace","SolanaTokenProtocol"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@liberfi.io/types",
3
- "version": "0.1.27",
3
+ "version": "0.1.28",
4
4
  "description": "Liberfi React SDK types",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -17,15 +17,9 @@
17
17
  "dist"
18
18
  ],
19
19
  "devDependencies": {
20
- "@babel/core": "^7.22.9",
21
- "@babel/preset-env": "^7.22.9",
22
- "@babel/preset-typescript": "^7.22.5",
23
- "@types/jest": "^29.5.3",
24
- "babel-jest": "^29.6.1",
25
- "jest": "^29.6.1",
26
20
  "tsup": "^8.5.0",
27
21
  "typedoc": "^0.28.12",
28
- "tsconfig": "0.1.15"
22
+ "tsconfig": "0.1.16"
29
23
  },
30
24
  "publishConfig": {
31
25
  "access": "public"
@@ -33,7 +27,6 @@
33
27
  "scripts": {
34
28
  "dev": "tsup --watch",
35
29
  "build": "tsup",
36
- "docs": "typedoc",
37
- "test": "jest"
30
+ "docs": "typedoc"
38
31
  }
39
32
  }