@liberfi.io/client 0.3.22 → 0.3.24
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/dist/index.d.mts +7 -29
- package/dist/index.d.ts +7 -29
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -5
package/dist/index.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as _liberfi_io_types from '@liberfi.io/types';
|
|
2
2
|
import { IClient, ISubscribeClient, Chain, Token, TokenResolution, GetTokenCandlesOptions, TokenCandle, TokenSecurity, TokenStats, GetTokenHoldersOptions, CursorList, TokenHolder, TokenMarketData, GetTokenListOptions, SearchTokensOptions, SearchTokenCursorList, SwapParams, SwapRoute, LatestBlockParams, BlockchainLatestBlock, SendTxParams, SendTxResult, WalletPortfolios, WalletPnlResolution, WalletPnl, GetWalletPortfolioPnlsOptions, WalletPortfolioPnls, Portfolio, PortfolioPnl, GetTradesOptions, Trade, GetActivitiesOptions, Activity, GetWalletLimitOrdersOptions, GetTokensByCreatorOptions, TokenSubscribed, ISubscription, WalletPnlSubscribed, PortfolioSubscribed, PortfolioPnlSubscribed, TokenFieldOption, TokenFilterOption, TokenCreator as TokenCreator$1, TokenLiquidity } from '@liberfi.io/types';
|
|
3
|
-
import { ChainSymbol, Resolution, RangeFilterCondition, TokenCreator, Token as Token$1, TokenStats as TokenStats$1, DexPool, TokenMarketData as TokenMarketData$1, TokenCandle as TokenCandle$1, SwapRouteInput, SendTxInput, TokenPage, SwapRouteResponse, BlockchainLatestBlock as BlockchainLatestBlock$1, SendTxResponse, WalletNetWorthPage, WalletPnlSummary, PnlDetailsResult, PageResponseTradeDetail, WsNewToken, WsTokenMetadata, WsCandle, WsTokenStat, WsTokenSupply, WsTokenHolder, WsTokenLiquidity, WsTokenBondingCurve, WsTokenMaxLiquidity, WsTokenTotalLiquidity, WsTradeActivity } from '@chainstream-io/sdk';
|
|
3
|
+
import { ChainSymbol, Resolution, RangeFilterCondition, TokenCreator, Token as Token$1, TokenStats as TokenStats$1, DexPool, TokenMarketData as TokenMarketData$1, TokenCandle as TokenCandle$1, TokenSecurityResponse, SwapRouteInput, SendTxInput, PageResponseTokenHolder, TokenPage, SwapRouteResponse, BlockchainLatestBlock as BlockchainLatestBlock$1, SendTxResponse, WalletNetWorthPage, WalletPnlSummary, PnlDetailsResult, NetWorthByTokensResult, PageResponseTradeDetail, WsNewToken, WsTokenMetadata, WsCandle, WsTokenStat, WsTokenSupply, WsTokenHolder, WsTokenLiquidity, WsTokenBondingCurve, WsTokenMaxLiquidity, WsTokenTotalLiquidity, WsTradeActivity } from '@chainstream-io/sdk';
|
|
4
4
|
|
|
5
5
|
/** Async or sync token provider for authentication. */
|
|
6
6
|
interface ClientTokenProviderFn {
|
|
@@ -171,30 +171,6 @@ interface Phase3ActivityDTO {
|
|
|
171
171
|
dexImage?: string | null;
|
|
172
172
|
status?: string;
|
|
173
173
|
}
|
|
174
|
-
interface Phase3NetWorthTokenDTO {
|
|
175
|
-
chain: string;
|
|
176
|
-
tokenAddress: string;
|
|
177
|
-
name: string;
|
|
178
|
-
symbol: string;
|
|
179
|
-
decimals: number;
|
|
180
|
-
logoUri?: string | null;
|
|
181
|
-
amount: string;
|
|
182
|
-
priceInUsd: string;
|
|
183
|
-
priceInNative: string;
|
|
184
|
-
valueInUsd: string;
|
|
185
|
-
valueInNative: string;
|
|
186
|
-
isActive?: boolean;
|
|
187
|
-
avgCostUsd?: string | null;
|
|
188
|
-
lastActiveAt?: number | null;
|
|
189
|
-
walletTokenTags?: Array<string>;
|
|
190
|
-
}
|
|
191
|
-
interface Phase3NetWorthByTokensDTO {
|
|
192
|
-
walletAddress: string;
|
|
193
|
-
totalValueInUsd: string;
|
|
194
|
-
totalValueInNative: string;
|
|
195
|
-
currentTimestamp?: number;
|
|
196
|
-
data: Array<Phase3NetWorthTokenDTO>;
|
|
197
|
-
}
|
|
198
174
|
interface Phase3PnlSummaryDTO {
|
|
199
175
|
tokens?: number | string;
|
|
200
176
|
totalTrades?: number | string;
|
|
@@ -264,7 +240,7 @@ declare function fromTokenStatsDTO(input: TokenStats$1): TokenStats;
|
|
|
264
240
|
declare function fromTokenLiquidityDTO(input: DexPool): TokenLiquidity;
|
|
265
241
|
declare function fromTokenMarketDataDTO(input: TokenMarketData$1): TokenMarketData;
|
|
266
242
|
declare function fromTokenCandle(input: TokenCandle$1, resolution: TokenResolution): TokenCandle;
|
|
267
|
-
declare function fromTokenSecurity(input: Record<string, unknown>): TokenSecurity;
|
|
243
|
+
declare function fromTokenSecurity(input: TokenSecurityResponse | Record<string, unknown>): TokenSecurity;
|
|
268
244
|
/**
|
|
269
245
|
* KyberSwap API expects this sentinel for native token (ETH/BNB/etc.),
|
|
270
246
|
* not the zero address. See KyberSwap docs / 400 on route when using 0x0.
|
|
@@ -280,16 +256,18 @@ declare function toMintForRoute(dex: "jupiter" | "kyberswap", address: string):
|
|
|
280
256
|
declare function toSwapRouteInput(params: SwapParams): SwapRouteInput;
|
|
281
257
|
declare function toSendTxInput(params: SendTxParams): SendTxInput;
|
|
282
258
|
declare function fromTokenHolderPage(input: CursorPageDTO<Phase3TokenHolderDTO>): CursorList<TokenHolder>;
|
|
259
|
+
declare function fromSdkTokenHolderPage(input: PageResponseTokenHolder): CursorList<TokenHolder>;
|
|
283
260
|
declare function fromTokenPage(input: TokenPage): SearchTokenCursorList;
|
|
284
261
|
declare function fromSwapRoute(input: SwapRouteResponse): SwapRoute;
|
|
285
262
|
declare function fromLatestBlock(input: BlockchainLatestBlock$1): BlockchainLatestBlock;
|
|
286
263
|
declare function fromSendTxResult(input: SendTxResponse): SendTxResult;
|
|
287
264
|
declare function fromWalletPortfolios(chain: Chain, input: WalletNetWorthPage): WalletPortfolios;
|
|
288
265
|
declare function fromWalletPnlSummary(chain: Chain, address: string, input: WalletPnlSummary): WalletPnl;
|
|
289
|
-
declare function fromPnlDetailsPage(chain: Chain, address: string, input: Phase3PnlDetailsDTO): WalletPortfolioPnls;
|
|
290
|
-
declare function fromWalletNetWorthByTokens(chain: Chain, input:
|
|
266
|
+
declare function fromPnlDetailsPage(chain: Chain, address: string, input: Phase3PnlDetailsDTO | PnlDetailsResult): WalletPortfolioPnls;
|
|
267
|
+
declare function fromWalletNetWorthByTokens(chain: Chain, input: NetWorthByTokensResult): Portfolio[];
|
|
291
268
|
declare function fromPnlDetailItems(chain: Chain, input: PnlDetailsResult): PortfolioPnl[];
|
|
292
269
|
declare function fromTradePage(input: PageResponseTradeDetail): CursorList<Trade>;
|
|
270
|
+
declare function fromSdkActivityPage(input: PageResponseTradeDetail): CursorList<Activity>;
|
|
293
271
|
declare function fromActivityPage(input: CursorPageDTO<Phase3ActivityDTO>): CursorList<Activity>;
|
|
294
272
|
declare function fromTokenSubscribed(chain: Chain, input: WsNewToken): TokenSubscribed;
|
|
295
273
|
declare function fromTokenMetadataSubscribed(chain: Chain, input: WsTokenMetadata): TokenSubscribed;
|
|
@@ -307,4 +285,4 @@ declare function fromWsTokenMarketDataFromHolder(input: WsTokenHolder): Partial<
|
|
|
307
285
|
declare function fromWsTradeActivity(chain: Chain, input: WsTradeActivity): Trade;
|
|
308
286
|
declare function fromWsActivity(chain: Chain, input: WsTradeActivity): Activity;
|
|
309
287
|
|
|
310
|
-
export { Client, type ClientOptions, type ClientTokenProvider, type ClientTokenProviderFn, KYBERSWAP_NATIVE_SENTINEL, NotImplementedError, fromActivityPage, fromChainDTO, fromLatestBlock, fromPnlDetailItems, fromPnlDetailsPage, fromSendTxResult, fromSwapRoute, fromTokenCandle, fromTokenCreatorDTO, fromTokenDTO, fromTokenHolderPage, fromTokenLiquidityDTO, fromTokenMarketDataDTO, fromTokenMetadataSubscribed, fromTokenPage, fromTokenSecurity, fromTokenStatsDTO, fromTokenSubscribed, fromTradePage, fromWalletNetWorthByTokens, fromWalletPnlSummary, fromWalletPortfolios, fromWsActivity, fromWsCandle, fromWsTokenBondingCurveToSubscribed, fromWsTokenDataSubscribed, fromWsTokenHolderToSubscribed, fromWsTokenLiquidityToSubscribed, fromWsTokenMarketDataFromHolder, fromWsTokenMarketDataFromStats, fromWsTokenMaxLiquidityToSubscribed, fromWsTokenStats, fromWsTokenSupplyToSubscribed, fromWsTokenTotalLiquidityToSubscribed, fromWsTradeActivity, isNotImplementedError, toChainDTO, toFieldDTO, toMintForRoute, toRangeFiltersDTO, toResolutionDTO, toSearchFieldDTO, toSendTxInput, toSortDirectionDTO, toSwapRouteInput };
|
|
288
|
+
export { Client, type ClientOptions, type ClientTokenProvider, type ClientTokenProviderFn, KYBERSWAP_NATIVE_SENTINEL, NotImplementedError, fromActivityPage, fromChainDTO, fromLatestBlock, fromPnlDetailItems, fromPnlDetailsPage, fromSdkActivityPage, fromSdkTokenHolderPage, fromSendTxResult, fromSwapRoute, fromTokenCandle, fromTokenCreatorDTO, fromTokenDTO, fromTokenHolderPage, fromTokenLiquidityDTO, fromTokenMarketDataDTO, fromTokenMetadataSubscribed, fromTokenPage, fromTokenSecurity, fromTokenStatsDTO, fromTokenSubscribed, fromTradePage, fromWalletNetWorthByTokens, fromWalletPnlSummary, fromWalletPortfolios, fromWsActivity, fromWsCandle, fromWsTokenBondingCurveToSubscribed, fromWsTokenDataSubscribed, fromWsTokenHolderToSubscribed, fromWsTokenLiquidityToSubscribed, fromWsTokenMarketDataFromHolder, fromWsTokenMarketDataFromStats, fromWsTokenMaxLiquidityToSubscribed, fromWsTokenStats, fromWsTokenSupplyToSubscribed, fromWsTokenTotalLiquidityToSubscribed, fromWsTradeActivity, isNotImplementedError, toChainDTO, toFieldDTO, toMintForRoute, toRangeFiltersDTO, toResolutionDTO, toSearchFieldDTO, toSendTxInput, toSortDirectionDTO, toSwapRouteInput };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as _liberfi_io_types from '@liberfi.io/types';
|
|
2
2
|
import { IClient, ISubscribeClient, Chain, Token, TokenResolution, GetTokenCandlesOptions, TokenCandle, TokenSecurity, TokenStats, GetTokenHoldersOptions, CursorList, TokenHolder, TokenMarketData, GetTokenListOptions, SearchTokensOptions, SearchTokenCursorList, SwapParams, SwapRoute, LatestBlockParams, BlockchainLatestBlock, SendTxParams, SendTxResult, WalletPortfolios, WalletPnlResolution, WalletPnl, GetWalletPortfolioPnlsOptions, WalletPortfolioPnls, Portfolio, PortfolioPnl, GetTradesOptions, Trade, GetActivitiesOptions, Activity, GetWalletLimitOrdersOptions, GetTokensByCreatorOptions, TokenSubscribed, ISubscription, WalletPnlSubscribed, PortfolioSubscribed, PortfolioPnlSubscribed, TokenFieldOption, TokenFilterOption, TokenCreator as TokenCreator$1, TokenLiquidity } from '@liberfi.io/types';
|
|
3
|
-
import { ChainSymbol, Resolution, RangeFilterCondition, TokenCreator, Token as Token$1, TokenStats as TokenStats$1, DexPool, TokenMarketData as TokenMarketData$1, TokenCandle as TokenCandle$1, SwapRouteInput, SendTxInput, TokenPage, SwapRouteResponse, BlockchainLatestBlock as BlockchainLatestBlock$1, SendTxResponse, WalletNetWorthPage, WalletPnlSummary, PnlDetailsResult, PageResponseTradeDetail, WsNewToken, WsTokenMetadata, WsCandle, WsTokenStat, WsTokenSupply, WsTokenHolder, WsTokenLiquidity, WsTokenBondingCurve, WsTokenMaxLiquidity, WsTokenTotalLiquidity, WsTradeActivity } from '@chainstream-io/sdk';
|
|
3
|
+
import { ChainSymbol, Resolution, RangeFilterCondition, TokenCreator, Token as Token$1, TokenStats as TokenStats$1, DexPool, TokenMarketData as TokenMarketData$1, TokenCandle as TokenCandle$1, TokenSecurityResponse, SwapRouteInput, SendTxInput, PageResponseTokenHolder, TokenPage, SwapRouteResponse, BlockchainLatestBlock as BlockchainLatestBlock$1, SendTxResponse, WalletNetWorthPage, WalletPnlSummary, PnlDetailsResult, NetWorthByTokensResult, PageResponseTradeDetail, WsNewToken, WsTokenMetadata, WsCandle, WsTokenStat, WsTokenSupply, WsTokenHolder, WsTokenLiquidity, WsTokenBondingCurve, WsTokenMaxLiquidity, WsTokenTotalLiquidity, WsTradeActivity } from '@chainstream-io/sdk';
|
|
4
4
|
|
|
5
5
|
/** Async or sync token provider for authentication. */
|
|
6
6
|
interface ClientTokenProviderFn {
|
|
@@ -171,30 +171,6 @@ interface Phase3ActivityDTO {
|
|
|
171
171
|
dexImage?: string | null;
|
|
172
172
|
status?: string;
|
|
173
173
|
}
|
|
174
|
-
interface Phase3NetWorthTokenDTO {
|
|
175
|
-
chain: string;
|
|
176
|
-
tokenAddress: string;
|
|
177
|
-
name: string;
|
|
178
|
-
symbol: string;
|
|
179
|
-
decimals: number;
|
|
180
|
-
logoUri?: string | null;
|
|
181
|
-
amount: string;
|
|
182
|
-
priceInUsd: string;
|
|
183
|
-
priceInNative: string;
|
|
184
|
-
valueInUsd: string;
|
|
185
|
-
valueInNative: string;
|
|
186
|
-
isActive?: boolean;
|
|
187
|
-
avgCostUsd?: string | null;
|
|
188
|
-
lastActiveAt?: number | null;
|
|
189
|
-
walletTokenTags?: Array<string>;
|
|
190
|
-
}
|
|
191
|
-
interface Phase3NetWorthByTokensDTO {
|
|
192
|
-
walletAddress: string;
|
|
193
|
-
totalValueInUsd: string;
|
|
194
|
-
totalValueInNative: string;
|
|
195
|
-
currentTimestamp?: number;
|
|
196
|
-
data: Array<Phase3NetWorthTokenDTO>;
|
|
197
|
-
}
|
|
198
174
|
interface Phase3PnlSummaryDTO {
|
|
199
175
|
tokens?: number | string;
|
|
200
176
|
totalTrades?: number | string;
|
|
@@ -264,7 +240,7 @@ declare function fromTokenStatsDTO(input: TokenStats$1): TokenStats;
|
|
|
264
240
|
declare function fromTokenLiquidityDTO(input: DexPool): TokenLiquidity;
|
|
265
241
|
declare function fromTokenMarketDataDTO(input: TokenMarketData$1): TokenMarketData;
|
|
266
242
|
declare function fromTokenCandle(input: TokenCandle$1, resolution: TokenResolution): TokenCandle;
|
|
267
|
-
declare function fromTokenSecurity(input: Record<string, unknown>): TokenSecurity;
|
|
243
|
+
declare function fromTokenSecurity(input: TokenSecurityResponse | Record<string, unknown>): TokenSecurity;
|
|
268
244
|
/**
|
|
269
245
|
* KyberSwap API expects this sentinel for native token (ETH/BNB/etc.),
|
|
270
246
|
* not the zero address. See KyberSwap docs / 400 on route when using 0x0.
|
|
@@ -280,16 +256,18 @@ declare function toMintForRoute(dex: "jupiter" | "kyberswap", address: string):
|
|
|
280
256
|
declare function toSwapRouteInput(params: SwapParams): SwapRouteInput;
|
|
281
257
|
declare function toSendTxInput(params: SendTxParams): SendTxInput;
|
|
282
258
|
declare function fromTokenHolderPage(input: CursorPageDTO<Phase3TokenHolderDTO>): CursorList<TokenHolder>;
|
|
259
|
+
declare function fromSdkTokenHolderPage(input: PageResponseTokenHolder): CursorList<TokenHolder>;
|
|
283
260
|
declare function fromTokenPage(input: TokenPage): SearchTokenCursorList;
|
|
284
261
|
declare function fromSwapRoute(input: SwapRouteResponse): SwapRoute;
|
|
285
262
|
declare function fromLatestBlock(input: BlockchainLatestBlock$1): BlockchainLatestBlock;
|
|
286
263
|
declare function fromSendTxResult(input: SendTxResponse): SendTxResult;
|
|
287
264
|
declare function fromWalletPortfolios(chain: Chain, input: WalletNetWorthPage): WalletPortfolios;
|
|
288
265
|
declare function fromWalletPnlSummary(chain: Chain, address: string, input: WalletPnlSummary): WalletPnl;
|
|
289
|
-
declare function fromPnlDetailsPage(chain: Chain, address: string, input: Phase3PnlDetailsDTO): WalletPortfolioPnls;
|
|
290
|
-
declare function fromWalletNetWorthByTokens(chain: Chain, input:
|
|
266
|
+
declare function fromPnlDetailsPage(chain: Chain, address: string, input: Phase3PnlDetailsDTO | PnlDetailsResult): WalletPortfolioPnls;
|
|
267
|
+
declare function fromWalletNetWorthByTokens(chain: Chain, input: NetWorthByTokensResult): Portfolio[];
|
|
291
268
|
declare function fromPnlDetailItems(chain: Chain, input: PnlDetailsResult): PortfolioPnl[];
|
|
292
269
|
declare function fromTradePage(input: PageResponseTradeDetail): CursorList<Trade>;
|
|
270
|
+
declare function fromSdkActivityPage(input: PageResponseTradeDetail): CursorList<Activity>;
|
|
293
271
|
declare function fromActivityPage(input: CursorPageDTO<Phase3ActivityDTO>): CursorList<Activity>;
|
|
294
272
|
declare function fromTokenSubscribed(chain: Chain, input: WsNewToken): TokenSubscribed;
|
|
295
273
|
declare function fromTokenMetadataSubscribed(chain: Chain, input: WsTokenMetadata): TokenSubscribed;
|
|
@@ -307,4 +285,4 @@ declare function fromWsTokenMarketDataFromHolder(input: WsTokenHolder): Partial<
|
|
|
307
285
|
declare function fromWsTradeActivity(chain: Chain, input: WsTradeActivity): Trade;
|
|
308
286
|
declare function fromWsActivity(chain: Chain, input: WsTradeActivity): Activity;
|
|
309
287
|
|
|
310
|
-
export { Client, type ClientOptions, type ClientTokenProvider, type ClientTokenProviderFn, KYBERSWAP_NATIVE_SENTINEL, NotImplementedError, fromActivityPage, fromChainDTO, fromLatestBlock, fromPnlDetailItems, fromPnlDetailsPage, fromSendTxResult, fromSwapRoute, fromTokenCandle, fromTokenCreatorDTO, fromTokenDTO, fromTokenHolderPage, fromTokenLiquidityDTO, fromTokenMarketDataDTO, fromTokenMetadataSubscribed, fromTokenPage, fromTokenSecurity, fromTokenStatsDTO, fromTokenSubscribed, fromTradePage, fromWalletNetWorthByTokens, fromWalletPnlSummary, fromWalletPortfolios, fromWsActivity, fromWsCandle, fromWsTokenBondingCurveToSubscribed, fromWsTokenDataSubscribed, fromWsTokenHolderToSubscribed, fromWsTokenLiquidityToSubscribed, fromWsTokenMarketDataFromHolder, fromWsTokenMarketDataFromStats, fromWsTokenMaxLiquidityToSubscribed, fromWsTokenStats, fromWsTokenSupplyToSubscribed, fromWsTokenTotalLiquidityToSubscribed, fromWsTradeActivity, isNotImplementedError, toChainDTO, toFieldDTO, toMintForRoute, toRangeFiltersDTO, toResolutionDTO, toSearchFieldDTO, toSendTxInput, toSortDirectionDTO, toSwapRouteInput };
|
|
288
|
+
export { Client, type ClientOptions, type ClientTokenProvider, type ClientTokenProviderFn, KYBERSWAP_NATIVE_SENTINEL, NotImplementedError, fromActivityPage, fromChainDTO, fromLatestBlock, fromPnlDetailItems, fromPnlDetailsPage, fromSdkActivityPage, fromSdkTokenHolderPage, fromSendTxResult, fromSwapRoute, fromTokenCandle, fromTokenCreatorDTO, fromTokenDTO, fromTokenHolderPage, fromTokenLiquidityDTO, fromTokenMarketDataDTO, fromTokenMetadataSubscribed, fromTokenPage, fromTokenSecurity, fromTokenStatsDTO, fromTokenSubscribed, fromTradePage, fromWalletNetWorthByTokens, fromWalletPnlSummary, fromWalletPortfolios, fromWsActivity, fromWsCandle, fromWsTokenBondingCurveToSubscribed, fromWsTokenDataSubscribed, fromWsTokenHolderToSubscribed, fromWsTokenLiquidityToSubscribed, fromWsTokenMarketDataFromHolder, fromWsTokenMarketDataFromStats, fromWsTokenMaxLiquidityToSubscribed, fromWsTokenStats, fromWsTokenSupplyToSubscribed, fromWsTokenTotalLiquidityToSubscribed, fromWsTradeActivity, isNotImplementedError, toChainDTO, toFieldDTO, toMintForRoute, toRangeFiltersDTO, toResolutionDTO, toSearchFieldDTO, toSendTxInput, toSortDirectionDTO, toSwapRouteInput };
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
'use strict';var sdk=require('@chainstream-io/sdk'),types=require('@liberfi.io/types'),utils=require('@liberfi.io/utils');var w=class extends Error{code="NotImplemented";constructor(s,t){super(t?`${s} is not yet implemented by the backend: ${t}`:`${s} is not yet implemented by the backend`),this.name="NotImplementedError";}};function Je(e){return e instanceof Error&&e.code==="NotImplemented"}var Re="https://api.chainstream.io";async function pe(e){return typeof e=="string"?e:Promise.resolve(e.getToken())}function He(e,s,t){if(t!=null){if(t instanceof Date){e.set(s,String(t.getTime()));return}e.set(s,String(t));}}function xe(e,s){let t=e.endsWith("/")?e.slice(0,-1):e,r=s.startsWith("/")?s:`/${s}`;return t+r}async function x(e,s,t){let r=new URL(xe(e.baseUrl,s)),n=new URLSearchParams;for(let[k,u]of Object.entries(t))He(n,k,u);let i=n.toString();i&&(r.search=i);let a=await pe(e.accessToken),c=await fetch(r.toString(),{method:"GET",headers:{Accept:"application/json",Authorization:`Bearer ${a}`}});if(!c.ok){let k=await c.text().catch(()=>"");throw new Error(`[phase3Http] ${c.status} ${c.statusText} ${r.pathname}: ${k}`)}return await c.json()}function j(e,s){return {baseUrl:s??Re,accessToken:e}}function Q(e,s,t,r){return x(e,`/v2/token/${encodeURIComponent(s)}/${encodeURIComponent(t)}/holders`,r)}function K(e,s,t){return x(e,`/v2/trade/${encodeURIComponent(s)}/activities`,t)}function J(e,s,t,r){return x(e,`/v2/wallet/${encodeURIComponent(s)}/${encodeURIComponent(t)}/net-worth/tokens`,r)}function Y(e,s,t,r){return x(e,`/v2/wallet/${encodeURIComponent(s)}/${encodeURIComponent(t)}/pnl-details`,r)}function o(e){return e??void 0}function d(e){switch(e){case types.Chain.ETHEREUM:return sdk.ChainSymbol.eth;case types.Chain.BINANCE:return sdk.ChainSymbol.bsc;case types.Chain.SOLANA:return sdk.ChainSymbol.sol}throw new Error(`Unsupported chain: ${e}`)}function N(e){switch(e){case "1s":return sdk.Resolution["1s"];case "15s":return sdk.Resolution["15s"];case "30s":return sdk.Resolution["30s"];case "1m":return sdk.Resolution["1m"];case "5m":return sdk.Resolution["5m"];case "15m":return sdk.Resolution["15m"];case "30m":case "1h":return sdk.Resolution["1h"];case "4h":return sdk.Resolution["4h"];case "12h":return sdk.Resolution["12h"];case "24h":return sdk.Resolution["1d"]}}function De(e){return e}function se(e){switch(e){case "marketCap":return sdk.SearchSortBy.marketCapInUsd;case "tvl":return sdk.SearchSortBy.liquidityInUsd;case "price":return sdk.SearchSortBy.priceInUsd;case "holders":return sdk.SearchSortBy.holderCount;case "volumes24h":return sdk.SearchSortBy.h24VolumeInUsd;case "trades24h":return sdk.SearchSortBy.h24Transactions;case "createdAt":return sdk.SearchSortBy.tokenCreatedAt}throw new Error(`Unsupported search field: ${e}`)}function B(e){switch(e){case "price":return sdk.TokenField.marketDatapriceInUsd;case "priceChange1m":return sdk.TokenField.statspriceChangeRatioInUsd1m;case "priceChange5m":return sdk.TokenField.statspriceChangeRatioInUsd5m;case "priceChange1h":return sdk.TokenField.statspriceChangeRatioInUsd1h;case "priceChange4h":return sdk.TokenField.statspriceChangeRatioInUsd4h;case "priceChange24h":return sdk.TokenField.statspriceChangeRatioInUsd24h;case "marketCap":return sdk.TokenField.marketDatamarketCapInUsd;case "tvl":return sdk.TokenField.marketDatamaxPoolTvlInUsd;case "top10Holdings":return sdk.TokenField.marketDatatop10TotalHoldings;case "top10Ratio":return sdk.TokenField.marketDatatop10HoldingsRatio;case "top100Holdings":return sdk.TokenField.marketDatatop100TotalHoldings;case "top100Ratio":return sdk.TokenField.marketDatatop100HoldingsRatio;case "holders":return sdk.TokenField.marketDataholders;case "creatorsHoldings":return sdk.TokenField.marketDatacreatorHoldings;case "creatorsRatio":return sdk.TokenField.marketDatacreatorHoldingsRatio;case "buys1m":return sdk.TokenField.statsbuys1m;case "buys5m":return sdk.TokenField.statsbuys5m;case "buys15m":return sdk.TokenField.statsbuys15m;case "buys30m":return sdk.TokenField.statsbuys30m;case "buys1h":return sdk.TokenField.statsbuys1h;case "buys4h":return sdk.TokenField.statsbuys4h;case "buys24h":return sdk.TokenField.statsbuys24h;case "sells1m":return sdk.TokenField.statssells1m;case "sells5m":return sdk.TokenField.statssells5m;case "sells15m":return sdk.TokenField.statssells15m;case "sells30m":return sdk.TokenField.statssells30m;case "sells1h":return sdk.TokenField.statssells1h;case "sells4h":return sdk.TokenField.statssells4h;case "sells24h":return sdk.TokenField.statssells24h;case "trades1m":return sdk.TokenField.statstrades1m;case "trades5m":return sdk.TokenField.statstrades5m;case "trades1h":return sdk.TokenField.statstrades1h;case "trades4h":return sdk.TokenField.statstrades4h;case "trades24h":return sdk.TokenField.statstrades24h;case "traders1m":return sdk.TokenField.statstraders1m;case "traders5m":return sdk.TokenField.statstraders5m;case "traders1h":return sdk.TokenField.statstraders1h;case "traders4h":return sdk.TokenField.statstraders4h;case "traders24h":return sdk.TokenField.statstraders24h;case "volumes1m":return sdk.TokenField.statsvolumesInUsd1m;case "volumes5m":return sdk.TokenField.statsvolumesInUsd5m;case "volumes1h":return sdk.TokenField.statsvolumesInUsd1h;case "volumes4h":return sdk.TokenField.statsvolumesInUsd4h;case "volumes24h":return sdk.TokenField.statsvolumesInUsd24h;case "createdAt":return sdk.TokenField.tokenCreatedAt}throw new Error(`Unsupported sortBy: ${e}`)}function te(e){return e.filter(s=>["gt","gte","lt","lte","between"].indexOf(s.operator)>=0).map(s=>{let t={field:B(s.field)};return ["gt","gte","between"].indexOf(s.operator)>=0&&(t.min=typeof s.value=="number"?new utils.SafeBigNumber(s.value).toString():s.value),["lt","lte","between"].indexOf(s.operator)>=0&&(t.max=typeof s.value=="number"?new utils.SafeBigNumber(s.value).toString():s.value),t})}function p(e){switch(e){case sdk.ChainSymbol.eth:return types.Chain.ETHEREUM;case sdk.ChainSymbol.bsc:return types.Chain.BINANCE;case sdk.ChainSymbol.sol:case "solana":return types.Chain.SOLANA}throw new Error(`Unsupported chain: ${e}`)}function Ne(e){return {address:e.address??void 0,share:e.share??void 0,isVerified:e.isVerified??void 0}}function g(e){return {chain:p(e.chain),name:e.name,symbol:e.symbol,address:e.address,decimals:e.decimals,image:e.imageUrl??void 0,description:e.description??void 0,creators:e.tokenCreators?.map(Ne),launchedFrom:{programAddress:e.extra?.launchFromProgramAddress??void 0,protocolFamily:e.extra?.launchFromProtocolFamily??void 0},migrateProgress:e.marketData?.completionRatio?new utils.SafeBigNumber(e.marketData.completionRatio).shiftedBy(2).toString():void 0,migratedTo:{programAddress:e.extra?.migratedToProgramAddress??void 0,protocolFamily:e.extra?.migratedToProtocolFamily??void 0,poolAddress:e.extra?.migratedToPoolAddress??void 0,migratedAt:e.extra?.migratedAt?new Date(e.extra.migratedAt):void 0},socialMedias:e.socialMedias?Object.fromEntries(Object.entries(e.socialMedias).filter(([,s])=>s!=null).map(([s,t])=>[s,t])):void 0,stats:e.stats?O(e.stats):void 0,marketData:e.marketData?_(e.marketData):void 0,createdAt:e.tokenCreatedAt?new Date(e.tokenCreatedAt):void 0}}function O(e){return {"1m":y(e,"1m"),"5m":y(e,"5m"),"15m":y(e,"15m"),"30m":y(e,"30m"),"1h":y(e,"1h"),"4h":y(e,"4h"),"24h":y(e,"24h")}}function A(e){return e===void 0?void 0:parseInt(e)}function y(e,s){let t=e.periods?.[s];return t?{buys:A(t.buys),sells:A(t.sells),trades:A(t.trades),buyers:A(t.buyers),sellers:A(t.sellers),traders:A(t.traders),buyVolumes:t.buyVolume,sellVolumes:t.sellVolume,volumes:t.totalVolumeInNative,buyVolumesInUsd:t.buyVolumeInUsd,sellVolumesInUsd:t.sellVolumeInUsd,volumesInUsd:t.totalVolumeInUsd,openPriceInUsd:t.openInUsd,closePriceInUsd:t.closeInUsd,highPriceInUsd:t.highInUsd,lowPriceInUsd:t.lowInUsd,priceInUsd:t.closeInUsd,priceChange:t.priceChangeRatioInUsd}:{}}function at(e){return {poolAddress:e.poolAddress,programAddress:e.programAddress??void 0,protocolFamily:e.protocolFamily??void 0,tvl:e.tvlInSol??void 0,tvlInUsd:e.tvlInUsd??void 0}}function _(e){return {totalSupply:e.totalSupply??void 0,marketCap:e.marketCapInSol??void 0,marketCapInUsd:e.marketCapInUsd??void 0,price:e.priceInSol??void 0,priceInUsd:e.priceInUsd??void 0,tvl:e.totalTvlInSol??void 0,tvlInUsd:e.totalTvlInUsd??void 0,holders:e.holders?parseInt(e.holders):void 0,top10Holdings:e.top10TotalHoldings??void 0,top10HoldingsRatio:e.top10HoldingsRatio??void 0,top50Holdings:e.top50TotalHoldings??void 0,top50HoldingsRatio:e.top50HoldingsRatio??void 0,top100Holdings:e.top100TotalHoldings??void 0,top100HoldingsRatio:e.top100HoldingsRatio??void 0,bluechipHolders:e.bluechipTotalHolders?parseInt(e.bluechipTotalHolders):void 0,bluechipHoldings:e.bluechipTotalHoldings??void 0,bluechipHoldingsRatio:e.bluechipHoldingsRatio??void 0,kolHolders:e.kolTotalHolders?parseInt(e.kolTotalHolders):void 0,kolHoldings:e.kolTotalHoldings??void 0,kolHoldingsRatio:e.kolHoldingsRatio??void 0,sniperHolders:e.sniperTotalHolders?parseInt(e.sniperTotalHolders):void 0,sniperHoldings:e.sniperTotalHoldings??void 0,sniperHoldingsRatio:e.sniperHoldingsRatio??void 0,proHolders:e.proTotalHolders?parseInt(e.proTotalHolders):void 0,proHoldings:e.proTotalHoldings??void 0,proHoldingsRatio:e.proHoldingsRatio??void 0,insiderHolders:e.insiderTotalHolders?parseInt(e.insiderTotalHolders):void 0,insiderHoldings:e.insiderTotalHoldings??void 0,insiderHoldingsRatio:e.insiderHoldingsRatio??void 0,sandwichHolders:e.sandwishTotalHolders?parseInt(e.sandwishTotalHolders):void 0,sandwichHoldings:e.sandwishTotalHoldings??void 0,sandwichHoldingsRatio:e.sandwishHoldingsRatio??void 0,freshHolders:e.freshTotalHolders?parseInt(e.freshTotalHolders):void 0,freshHoldings:e.freshTotalHoldings??void 0,freshHoldingsRatio:e.freshHoldingsRatio??void 0,bundleHolders:e.bundleTotalHolders?parseInt(e.bundleTotalHolders):void 0,bundleHoldings:e.bundleTotalHoldings??void 0,bundleHoldingsRatio:e.bundleHoldingsRatio??void 0,devHolders:e.devTotalHolders?parseInt(e.devTotalHolders):void 0,devHoldings:e.devTotalHoldings??void 0,devHoldingsRatio:e.devHoldingsRatio??void 0}}function re(e,s){return {open:e.open,close:e.close,high:e.high,low:e.low,volume:e.volume,resolution:s,timestamp:new Date(e.timestamp)}}function Be(e){return e==="1d"?"24h":e}function ne(e){return {hasTransferFee:e.hasTransferFee,isTransferFeeUpgradable:e.isTransferFeeUpgradable,isTransferable:e.isTransferable,isFreezable:e.isFreezable,isClosable:e.isClosable}}var Oe=new Set([types.Chain.SOLANA,types.Chain.SOLANA_TESTNET,types.Chain.SOLANA_DEVNET]),_e="0x0000000000000000000000000000000000000000",Le="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";function Fe(e){return e===utils.SOLANA_TOKENS.native.address?utils.SOLANA_TOKENS.wrapped.address:e}function Ee(e){return e.toLowerCase()===_e.toLowerCase()?Le:e}function Me(e){return e.dex==="jupiter"?"jupiter":e.dex==="kyberswap"?"kyberswap":Oe.has(e.chain)?"jupiter":"kyberswap"}function D(e,s){return e==="jupiter"?Fe(s):e==="kyberswap"?Ee(s):s}function it(e,s){return D(e,s)}function oe(e){let s=Me(e),t=D(s,e.input),r=D(s,e.output);return {dex:s,userAddress:e.userAddress,amount:e.amount,swapMode:e.mode===types.SwapMode.EXACT_IN?sdk.SwapRouteInputSwapMode.ExactIn:sdk.SwapRouteInputSwapMode.ExactOut,slippage:e.slippage??1,inputMint:t,outputMint:r,priorityFee:e.priorityFee,...e.tipFee&&{tipFee:e.tipFee},...e.isAntiMev!=null&&{isAntiMev:e.isAntiMev},...e.permit&&{permit:e.permit},...e.deadline!=null&&{deadline:e.deadline}}}function ae(e){return {signedTx:e.serializedTx}}function R(e){return e==null?void 0:new Date(e)}function L(e){if(!(!e||e.length===0))return e}function ie(e){return {startCursor:o(e.startCursor),endCursor:o(e.endCursor),hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(s=>({address:s.walletAddress,amount:s.amount,amountInUsd:s.amountInUsd,ratio:s.percentage,tags:L(s.tags),lastActiveAt:R(s.lastActiveAt),startHoldingAt:R(s.startHoldingAt)}))}}function le(e){let s=e;return {startCursor:o(e.startCursor),endCursor:o(e.endCursor),hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(g),extra:o(s.countsByProtocols)}}function de(e){return {serializedTx:e.serializedTx,recentBlockhash:o(e.recentBlockhash),lastValidBlockHeight:o(e.lastValidBlockHeight),plans:[],extra:e.routeInfo}}function ce(e){return {blockhash:e.blockhash,lastValidBlockHeight:e.lastValidBlockHeight}}function ue(e){return {txHash:e.signature,extra:{jobId:e.jobId,elapsedTime:e.elapsedTime}}}function me(e,s){let t=(s.data??[]).map(r=>({chain:p(r.chain),address:r.tokenAddress,name:r.name,symbol:r.symbol,image:o(r.logoUri),priceInUsd:r.priceInUsd,priceInNative:r.priceInNative,amount:r.amount,amountInUsd:r.valueInUsd,amountInNative:r.valueInNative,decimals:r.decimals}));return {chain:t[0]?.chain??e,address:s.walletAddress,balanceInUsd:s.totalValueInUsd,balanceInNative:s.totalValueInNative,startCursor:o(s.startCursor),endCursor:o(s.endCursor),hasPrev:s.hasPrev,hasNext:s.hasNext,portfolios:t}}function Te(e,s,t){return {chain:e,address:s,tokens:t.tokens?Number(t.tokens):void 0,buys:t.buys?Number(t.buys):void 0,sells:t.sells?Number(t.sells):void 0,totalTrades:t.totalTrades?Number(t.totalTrades):void 0,wins:t.wins?Number(t.wins):void 0,losses:t.losses?Number(t.losses):void 0,winRate:o(t.winRate),buyAmountInUsd:o(t.buyAmountInUsd),sellAmountInUsd:o(t.sellAmountInUsd),totalCostInUsd:o(t.totalCostInUsd),realizedProfitInUsd:o(t.realizedProfitInUsd),realizedProfitRatio:o(t.realizedProfitRatio),unrealizedProfitInUsd:o(t.unrealizedProfitInUsd),unrealizedProfitRatio:o(t.unrealizedProfitRatio),totalProfitInUsd:o(t.totalProfitInUsd),totalProfitRatio:o(t.totalProfitRatio),avgProfitPerTradeInUsd:o(t.avgProfitPerTradeInUsd)}}function ze(e,s){return {chain:e,address:s.tokenAddress,name:s.name??"",symbol:s.symbol??"",image:o(s.logoUri),amount:s.balance,amountInUsd:s.currentValue,priceInUsd:s.priceInUsd,decimals:s.decimals??0,totalTrades:s.totalTrades!=null?Number(s.totalTrades):void 0,buys:s.buys!=null?Number(s.buys):void 0,buyVolumes:s.buyAmount,buyVolumesInUsd:s.buyAmountInUsd,buyAvgPriceInUsd:s.avgBuyPriceInUsd,sells:s.sells!=null?Number(s.sells):void 0,sellVolumes:s.sellAmount,sellVolumesInUsd:s.sellAmountInUsd,sellAvgPriceInUsd:s.avgSellPriceInUsd,realizedProfitInUsd:s.realizedProfitInUsd,realizedProfitRatio:s.realizedProfitRatio,unrealizedProfitInUsd:s.unrealizedProfitInUsd,unrealizedProfitRatio:s.unrealizedProfitRatio,totalProfitInUsd:s.totalProfitInUsd,totalProfitRatio:s.totalProfitRatio,isClosed:s.isClosed,firstBuyAt:R(s.firstBuyAt),lastSellAt:R(s.lastSellAt)}}function ge(e,s,t){return {chain:e,address:s,tokens:t.summary.tokens!=null?Number(t.summary.tokens):void 0,buys:t.summary.buys!=null?Number(t.summary.buys):void 0,sells:t.summary.sells!=null?Number(t.summary.sells):void 0,totalTrades:t.summary.totalTrades!=null?Number(t.summary.totalTrades):void 0,wins:t.summary.wins!=null?Number(t.summary.wins):void 0,losses:t.summary.losses!=null?Number(t.summary.losses):void 0,winRate:o(t.summary.winRate),buyAmountInUsd:o(t.summary.buyAmountInUsd),sellAmountInUsd:o(t.summary.sellAmountInUsd),totalCostInUsd:t.summary.totalCostInUsd,realizedProfitInUsd:o(t.summary.realizedProfitInUsd),unrealizedProfitInUsd:o(t.summary.unrealizedProfitInUsd),totalProfitInUsd:o(t.summary.totalProfitInUsd),totalProfitRatio:o(t.summary.totalProfitRatio),avgProfitPerTradeInUsd:o(t.summary.avgProfitPerTradeInUsd),startCursor:o(t.startCursor),endCursor:o(t.endCursor),hasPrev:t.hasPrev,hasNext:t.hasNext,portfolios:t.data.map(r=>ze(e,r))}}function ke(e,s){return (s.data??[]).map(t=>({chain:p(t.chain),address:t.tokenAddress,name:t.name,symbol:t.symbol,image:o(t.logoUri),priceInUsd:t.priceInUsd,priceInNative:t.priceInNative,amount:t.amount,amountInUsd:t.valueInUsd,amountInNative:t.valueInNative,decimals:t.decimals,isActive:t.isActive,avgCostUsd:o(t.avgCostUsd),lastActiveAt:R(t.lastActiveAt),walletTokenTags:L(t.walletTokenTags)}))}function fe(e,s){return s.data.map(t=>({chain:e,address:t.tokenAddress,name:t.name??"",symbol:t.symbol??"",image:o(t.logoUri),amount:t.balance,amountInUsd:t.currentValue,priceInUsd:t.priceInUsd,decimals:t.decimals??0,totalTrades:Number(t.totalTrades),buys:Number(t.buys),buyVolumes:t.buyAmount,buyVolumesInUsd:t.buyAmountInUsd,buyAvgPriceInUsd:t.avgBuyPriceInUsd,sells:Number(t.sells),sellVolumes:t.sellAmount,sellVolumesInUsd:t.sellAmountInUsd,sellAvgPriceInUsd:t.avgSellPriceInUsd,realizedProfitInUsd:t.realizedProfitInUsd,realizedProfitRatio:t.realizedProfitRatio,unrealizedProfitInUsd:t.unrealizedProfitInUsd,unrealizedProfitRatio:t.unrealizedProfitRatio,totalProfitInUsd:t.totalProfitInUsd,totalProfitRatio:t.totalProfitRatio}))}function be(e){return {startCursor:o(e.startCursor),endCursor:o(e.endCursor),hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(Ve)}}function Ve(e){let s=e.type.toLowerCase()==="buy";return {chain:p(e.chain),walletAddress:e.accountOwnerAddress,txHash:e.transactionSignature,type:s?"buy":"sell",from:{address:s?e.sideTokenAddress:e.tokenAddress,symbol:s?e.sideTokenSymbol:e.tokenSymbol,name:s?e.sideTokenName:e.tokenName,image:o(s?e.sideTokenImageUrl:e.tokenImageUrl),amount:s?e.sideTokenAmount:e.tokenAmount,amountInUsd:s?e.sideTokenAmountInUsd:e.tokenAmountInUsd,priceInUsd:s?e.sideTokenPriceInUsd:e.tokenPriceInUsd},to:{address:s?e.tokenAddress:e.sideTokenAddress,symbol:s?e.tokenSymbol:e.sideTokenSymbol,name:s?e.tokenName:e.sideTokenName,image:o(s?e.tokenImageUrl:e.sideTokenImageUrl),amount:s?e.tokenAmount:e.sideTokenAmount,amountInUsd:s?e.tokenAmountInUsd:e.sideTokenAmountInUsd,priceInUsd:s?e.tokenPriceInUsd:e.sideTokenPriceInUsd},dex:{programAddress:o(e.dexProgramAddress),protocolFamily:o(e.dexProtocolFamily),image:o(e.dexImage)},poolAddress:o(e.poolAddress),status:e.status??"success",time:new Date(e.blockTimestamp*1e3)}}function he(e){return {startCursor:o(e.startCursor),endCursor:o(e.endCursor),hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(qe)}}function qe(e){let s=e.type.toLowerCase().replace(/ /g,"_"),t=s==="buy",r=e.blockTimestamp<1e12?e.blockTimestamp*1e3:e.blockTimestamp;return {chain:p(e.chain),walletAddress:e.accountOwnerAddress,txHash:e.transactionSignature,type:s,from:{address:t?e.sideTokenAddress:e.tokenAddress,symbol:t?e.sideTokenSymbol:e.tokenSymbol,name:t?e.sideTokenName:e.tokenName,image:o(t?e.sideTokenImageUrl:e.tokenImageUrl),amount:t?e.sideTokenAmount:e.tokenAmount,amountInUsd:t?e.sideTokenAmountInUsd:e.tokenAmountInUsd,priceInUsd:t?e.sideTokenPriceInUsd:e.tokenPriceInUsd},to:{address:t?e.tokenAddress:e.sideTokenAddress,symbol:t?e.tokenSymbol:e.sideTokenSymbol,name:t?e.tokenName:e.sideTokenName,image:o(t?e.tokenImageUrl:e.sideTokenImageUrl),amount:t?e.tokenAmount:e.sideTokenAmount,amountInUsd:t?e.tokenAmountInUsd:e.sideTokenAmountInUsd,priceInUsd:t?e.tokenPriceInUsd:e.sideTokenPriceInUsd},dex:{programAddress:o(e.dexProgramAddress),protocolFamily:o(e.dexProtocolFamily),image:o(e.dexImage)},poolAddress:o(e.poolAddress),status:e.status??"success",time:new Date(r),gasFee:e.gasFee!=null?String(e.gasFee):void 0,traderTags:L(e.traderTags)}}function ye(e,s){return {chain:e,address:s.tokenAddress,name:s.name,symbol:s.symbol,decimals:s.decimals,createdAt:s.createdAtMs?new Date(s.createdAtMs):void 0,launchedFrom:s.launchFrom?{programAddress:s.launchFrom.programAddress,protocolFamily:s.launchFrom.protocolFamily}:void 0}}function Pe(e,s){return {chain:e,address:s.tokenAddress,name:s.name,symbol:s.symbol,decimals:s.decimals,image:s.imageUrl,description:s.description,socialMedias:s.socialMedia?{...s.socialMedia}:void 0,createdAt:s.createdAtMs?new Date(s.createdAtMs):void 0,launchedFrom:s.launchFrom?{programAddress:s.launchFrom.programAddress,protocolFamily:s.launchFrom.protocolFamily}:void 0,migratedTo:s.migratedTo?{programAddress:s.migratedTo.programAddress,protocolFamily:s.migratedTo.protocolFamily}:void 0}}function Ae(e){return {open:e.open,close:e.close,high:e.high,low:e.low,volume:e.volume,resolution:Be(e.resolution),timestamp:new Date(e.time)}}function Ge(e){let s=["1m","5m","15m","30m","1h","4h","24h"],t=e,r={};for(let n of s){let i=t[`buys${n}`],a=t[`sells${n}`],c=t[`buyers${n}`],k=t[`sellers${n}`],u=t[`buyVolumeInUsd${n}`],P=t[`sellVolumeInUsd${n}`],U=t[`trades${n}`],C=t[`price${n}`],b=t[`openInUsd${n}`],v=t[`closeInUsd${n}`];if(!(i!==void 0||a!==void 0||U!==void 0||C!==void 0))continue;let W=U??(i!==void 0&&a!==void 0?i+a:void 0),Ce=c!==void 0&&k!==void 0?c+k:void 0,ve=u!==void 0&&P!==void 0?new utils.SafeBigNumber(u).plus(P).toString():void 0,we=b&&v&&new utils.SafeBigNumber(b).gt(0)?new utils.SafeBigNumber(v).minus(b).div(b).toString():void 0;r[n]={buys:i,sells:a,trades:W,buyers:c,sellers:k,traders:Ce,buyVolumesInUsd:u,sellVolumesInUsd:P,volumesInUsd:ve,openPriceInUsd:b,closePriceInUsd:v,priceInUsd:C??v,priceChange:we};}return r}function $e(e){return {priceInUsd:e.price}}function F(e,s){return {chain:e,address:s.address,stats:Ge(s),marketData:$e(s)}}function E(e,s,t){return {chain:e,address:s,marketData:{totalSupply:t.supply,marketCapInUsd:t.marketCapInUsd}}}function M(e,s,t){return {chain:e,address:s,marketData:je(t)}}function z(e,s,t){return t.metricType===sdk.WsMetricType.LIQUIDITY_IN_USD?{chain:e,address:s,marketData:{tvlInUsd:t.value}}:t.metricType===sdk.WsMetricType.MIGRATED_RATIO?{chain:e,address:s,migrateProgress:new utils.SafeBigNumber(t.value).shiftedBy(2).toString()}:{chain:e,address:s}}function V(e,s){return {chain:e,address:s.tokenAddress??"",migrateProgress:s.progressRatio?new utils.SafeBigNumber(s.progressRatio).shiftedBy(2).toString():void 0}}function Ie(e,s,t){return {chain:e,address:s,liquidities:[{poolAddress:t.poolAddress,tvlInUsd:t.liquidityInUsd,tvl:t.liquidityInNative}]}}function Se(e,s,t){return {chain:e,address:s,marketData:{tvlInUsd:t.liquidityInUsd,tvl:t.liquidityInNative}}}function je(e){return {holders:e.holders,top10Holdings:e.top10HoldersAmount,top10HoldingsRatio:e.top10HoldersRatio,top50Holdings:e.top50HoldersAmount,top50HoldingsRatio:e.top50HoldersRatio,top100Holdings:e.top100HoldersAmount,top100HoldingsRatio:e.top100HoldersRatio,devHolders:e.balanceTagDevHolders===void 0?void 0:e.balanceTagDevHolders,devHoldings:e.balanceTagDevAmount,devHoldingsRatio:e.balanceTagDevRatio,sniperHolders:e.balanceTagSniperHolders===void 0?void 0:e.balanceTagSniperHolders,sniperHoldings:e.balanceTagSniperAmount,sniperHoldingsRatio:e.balanceTagSniperRatio,freshHolders:e.balanceTagFreshHolders===void 0?void 0:e.balanceTagFreshHolders,freshHoldings:e.balanceTagFreshAmount,freshHoldingsRatio:e.balanceTagFreshRatio,bundleHolders:e.balanceTagBundleHolders===void 0?void 0:e.balanceTagBundleHolders,bundleHoldings:e.balanceTagBundleAmount,bundleHoldingsRatio:e.balanceTagBundleRatio,sandwichHolders:e.balanceTagSandwichHolders===void 0?void 0:e.balanceTagSandwichHolders,sandwichHoldings:e.balanceTagSandwichAmount,sandwichHoldingsRatio:e.balanceTagSandwichRatio}}function q(e,s){let t=s.kind.toLowerCase()==="buy";return {chain:e,walletAddress:t?s.buyWalletAddress:s.sellWalletAddress,txHash:s.txHash,type:t?"buy":"sell",from:{address:s.sellTokenAddress,symbol:s.sellTokenSymbol,name:s.sellTokenName,amount:s.sellAmount,amountInUsd:s.sellAmountInUsd},to:{address:s.buyTokenAddress,symbol:s.buyTokenSymbol,name:s.buyTokenName,amount:s.buyAmount,amountInUsd:s.buyAmountInUsd},status:"success",time:new Date(s.timestamp)}}function G(e,s){let t=s.kind.toLowerCase().replace(/ /g,"_");return {chain:e,walletAddress:t==="buy"?s.buyWalletAddress:s.sellWalletAddress,txHash:s.txHash,type:t,from:{address:s.sellTokenAddress,symbol:s.sellTokenSymbol,name:s.sellTokenName,amount:s.sellAmount,amountInUsd:s.sellAmountInUsd},to:{address:s.buyTokenAddress,symbol:s.buyTokenSymbol,name:s.buyTokenName,amount:s.buyAmount,amountInUsd:s.buyAmountInUsd},status:"success",time:new Date(s.timestamp)}}var Ue=class e{constructor(s,t){this.accessToken=s;this.options=t;this._client=new sdk.ChainStreamClient(this.accessToken,this.options),this._phase3=j(this.accessToken,this.options?.serverUrl);}_client;_phase3;async getToken(s,t){let r=await this._client.token.getToken(d(s),t);return g(r)}async getTokens(s,t){return (await this._client.token.getTokens(d(s),{tokenAddresses:t.join(",")})).map(g)}async getTokenCandles(s,t,r,n){return (await this._client.token.getCandles(d(s),t,{resolution:N(r),from:n?.after?.getTime(),to:n?.before?.getTime(),limit:n?.limit})).map(a=>re(a,r))}async getTokenSecurity(s,t){let r=await this._client.token.getSecurity(d(s),t);return ne(r)}async getTokenStats(s,t){let r=await this._client.token.getStats(d(s),t);return O(r)}async getTokenHolders(s,t,r){let n=await Q(this._phase3,d(s),t,{cursor:r?.cursor,limit:r?.limit,direction:r?.direction,sortBy:r?.sortBy});return ie(n)}async getTokenMarketData(s,t){let r=await this._client.token.getMarketData(d(s),t);return _(r)}async getNewTokens(s,t){return (await this._client.ranking.getNewTokens(d(s),this._buildRankingParams(t))).map(g)}async getFinalStretchTokens(s,t){return (await this._client.ranking.getFinalStretchTokens(d(s),this._buildRankingParams(t))).map(g)}async getMigratedTokens(s,t){return (await this._client.ranking.getMigratedTokens(d(s),this._buildRankingParams(t))).map(g)}async getTrendingTokens(s,t,r){return (await this._client.ranking.getHotTokens(d(s),t,this._buildRankingParams(r))).map(g)}async getStockTokens(s,t){return (await this._client.ranking.getStocksTokens(d(s),this._buildRankingParams(t))).map(g)}async searchTokens(s){let t=await this._client.token.search({chains:s?.chains?.map(d),q:s?.keyword,limit:s?.limit,cursor:s?.cursor,sortBy:s?.sortBy?se(s.sortBy):void 0,sort:s?.sortDirection});return le(t)}async swapRoute(s){let t=await this._client.dex.route(d(s.chain),oe(s));return de(t)}async getLatestBlock(s){let t=await this._client.blockchain.getLatestBlock(d(s.chain));return ce(t)}async sendTx(s){let t=await this._client.transaction.send(d(s.chain),ae(s));return ue(t)}async checkTxSuccess(s,t,r){let{success:n}=await this._client.waitForJob(t,r);return n}async getWalletPortfolios(s,t,r){let n=e._CHAIN_TO_BALANCE_PARAM[s];if(n&&this.options?.nativeBalanceApiUrl)return this._getWalletPortfoliosFromBalanceApi(s,n,t);let i=await this._client.wallet.getNetWorth(d(s),t,{cursor:r?.cursor,limit:r?.limit??100});return me(s,i)}async getWalletPnl(s,t,r){let n=await this._client.wallet.getPnl(d(s),t,r?{resolution:r}:void 0);return Te(s,t,n)}async getWalletPortfolioPnls(s,t,r){let n=await Y(this._phase3,d(s),t,{resolution:r?.resolution??"30d",positionState:r?.positionState,sortBy:r?.sortBy,cursor:r?.cursor,limit:r?.limit??100,direction:r?.direction});return ge(s,t,n)}async getWalletPortfoliosByTokens(s,t,r){let n=e._CHAIN_TO_BALANCE_PARAM[s];if(n&&this.options?.nativeBalanceApiUrl)return this._getPortfoliosFromBalanceApi(s,n,t,r);let i=await J(this._phase3,d(s),t,{tokenAddresses:r.join(",")});return ke(s,i)}async getWalletPortfolioPnlsByTokens(s,t,r){let n=await this._client.wallet.getPnlByToken(d(s),t,{tokenAddresses:r.join(",")});return fe(s,n)}async getWalletTrades(s,t,r){return this._getTrades(s,{walletAddress:t},r)}async getTokenTrades(s,t,r){return this._getTrades(s,{tokenAddress:t},r)}async getWalletActivities(s,t,r){return this._getActivities(s,{walletAddress:t},r)}async getTokenActivities(s,t,r){return this._getActivities(s,{tokenAddress:t},r)}async getPresignedUploadUrl(){return (await this._client.ipfs.presign()).presignUrl}async getWalletLimitOrders(s,t,r){throw new w("Client.getWalletLimitOrders","no limit-orders endpoint on the backend yet")}async getTokensByCreator(s,t,r){throw new w("Client.getTokensByCreator","no creator-index endpoint on the backend yet")}subscribeToken(s,t,r){let n=d(s),i=[this._client.stream.subscribeTokenStats({chain:n,tokenAddress:t,callback:a=>r([F(s,a)])}),this._client.stream.subscribeTokenSupply({chain:n,tokenAddress:t,callback:a=>r([E(s,t,a)])}),this._client.stream.subscribeTokenHolders({chain:n,tokenAddress:t,callback:a=>r([M(s,t,a)])}),this._client.stream.subscribeTokenLiquidity({chain:n,tokenAddress:t,callback:a=>r([z(s,t,a)])}),this._client.stream.subscribeTokenMaxLiquidity({chain:n,tokenAddress:t,callback:a=>r([Ie(s,t,a)])}),this._client.stream.subscribeTokenTotalLiquidity({chain:n,tokenAddress:t,callback:a=>r([Se(s,t,a)])})];return {unsubscribe:()=>i.forEach(a=>a.unsubscribe())}}subscribeTokenCandles(s,t,r,n){return this._client.stream.subscribeTokenCandles({chain:d(s),tokenAddress:t,resolution:N(r),callback:i=>n([Ae(i)])})}subscribeWalletPnl(s,t,r){return this._client.stream.subscribeWalletPnlList({chain:d(s),walletAddress:t,callback:n=>r(n.map(i=>({chain:s,address:i.walletAddress,buys:i.buys,buyAmountInUsd:i.buyAmountInUsd,sells:i.sells,sellAmountInUsd:i.sellAmountInUsd,wins:i.wins,winRate:i.winRatio,totalProfitInUsd:i.pnlInUsd,totalProfitRatio:i.pnlRatio,avgProfitPerTradeInUsd:i.averagePnlInUsd,tokens:i.tokens,resolution:i.resolution})))})}subscribeWalletPortfolios(s,t,r){return this._client.stream.subscribeWalletBalance({chain:d(s),walletAddress:t,callback:n=>r(n.map(i=>({chain:s,walletAddress:i.walletAddress,tokenAddress:i.tokenAddress,priceInUsd:i.tokenPriceInUsd,amount:i.balance})))})}subscribeWalletPortfolioPnls(s,t,r){return this._client.stream.subscribeWalletPnl({chain:d(s),walletAddress:t,callback:n=>r([{chain:s,walletAddress:n.walletAddress,tokenAddress:n.tokenAddress,openTime:n.opentime?new Date(n.opentime):void 0,closeTime:n.closetime?new Date(n.closetime):void 0,buys:n.buyCount,buyVolumes:n.buyAmount,buyVolumesInUsd:n.buyAmountInUsd,buyAvgPriceInUsd:n.averageBuyPriceInUsd,sells:n.sellCount,sellVolumes:n.sellAmount,sellVolumesInUsd:n.sellAmountInUsd,sellAvgPriceInUsd:n.averageSellPriceInUsd,realizedProfitInUsd:n.realizedProfitInUsd,realizedProfitRatio:n.realizedProfitRatio,unrealizedProfitInUsd:n.unrealizedProfitInUsd,unrealizedProfitRatio:n.unrealizedProfitRatio,totalProfitInUsd:n.totalRealizedProfitInUsd,totalProfitRatio:n.totalRealizedProfitRatio}])})}subscribeWalletTrades(s,t,r){return this._client.stream.subscribeWalletTrade({chain:d(s),walletAddress:t,callback:n=>r([q(s,n)])})}subscribeTokenTrades(s,t,r){return this._client.stream.subscribeTokenTrade({chain:d(s),tokenAddress:t,callback:n=>r([q(s,n)])})}subscribeWalletActivities(s,t,r){return this._client.stream.subscribeWalletTrade({chain:d(s),walletAddress:t,callback:n=>r([G(s,n)])})}subscribeTokenActivities(s,t,r){return this._client.stream.subscribeTokenTrade({chain:d(s),tokenAddress:t,callback:n=>r([G(s,n)])})}subscribeNewTokens(s,t){let r=d(s),n=this._subscribeRankingTokens(s,sdk.WsChannelType.New,t),i=[this._client.stream.subscribeNewToken({chain:r,callback:a=>t([ye(s,a)])}),this._client.stream.subscribeNewTokensMetadata({chain:r,callback:a=>t(a.map(c=>Pe(s,c)))}),this._client.stream.subscribeRankingTokensBondingCurve({chain:r,callback:a=>t(a.map(c=>V(s,c)))})];return {unsubscribe:()=>{n.unsubscribe(),i.forEach(a=>a.unsubscribe());}}}subscribeTrendingTokens(s,t){return this._subscribeRankingTokens(s,sdk.WsChannelType.HOT,t)}subscribeMigratedTokens(s,t){return this._subscribeRankingTokens(s,sdk.WsChannelType.MIGRATED,t)}subscribeFinalStretchTokens(s,t){let r=d(s),n=this._subscribeRankingTokens(s,sdk.WsChannelType.FINAL_STRETCH,t),i=this._client.stream.subscribeRankingTokensBondingCurve({chain:r,callback:a=>t(a.map(c=>V(s,c)))});return {unsubscribe:()=>{n.unsubscribe(),i.unsubscribe();}}}subscribeStockTokens(s,t){return this._subscribeRankingTokens(s,sdk.WsChannelType.US_STOCKS,t)}static _CHAIN_TO_BALANCE_PARAM={[types.Chain.SOLANA]:"sol",[types.Chain.ETHEREUM]:"eth",[types.Chain.BINANCE]:"bnb"};static _NATIVE_TOKEN_ADDRESS={[types.Chain.SOLANA]:"11111111111111111111111111111111",[types.Chain.ETHEREUM]:"0x0000000000000000000000000000000000000000",[types.Chain.BINANCE]:"0x0000000000000000000000000000000000000000"};async _getPortfoliosFromBalanceApi(s,t,r,n){let i=this.options.nativeBalanceApiUrl,a=new URLSearchParams({chain:t,address:r});n?.length&&a.set("tokens",n.join(","));let c=await fetch(`${i}?${a.toString()}`);if(!c.ok)throw new Error(`Balance API returned ${c.status}`);return (await c.json()).balances.map(u=>{let P=BigInt(u.balance),U=u.decimals,C=BigInt(10)**BigInt(U),b=P/C,$=(P%C).toString().padStart(U,"0"),W=`${b}.${$}`.replace(/\.?0+$/,"")||"0";return {chain:s,address:u.address,name:"",symbol:"",priceInUsd:"0",priceInNative:"0",amount:W,amountInUsd:"0",amountInNative:"0",decimals:u.decimals}})}async _getWalletPortfoliosFromBalanceApi(s,t,r){let n=await this._getPortfoliosFromBalanceApi(s,t,r),i=e._NATIVE_TOKEN_ADDRESS[s],a=i?n.find(c=>c.address===i):void 0;return {chain:s,address:r,balanceInUsd:"0",balanceInNative:a?.amount??"0",portfolios:n,hasPrev:false,hasNext:false}}_buildRankingParams(s){return {sortBy:s?.sortBy?B(s.sortBy):void 0,sortDirection:s?.sortDirection?s.sortDirection:void 0,rangeFilters:s?.filters?te(s.filters):void 0,launchpadPlatform:s?.filters?Ke(s.filters):void 0,searchKeywords:s?.keywords,excludeKeywords:s?.excludeKeywords}}async _getTrades(s,t,r){let n=await this._client.trade.getTrades(d(s),{...t,cursor:r?.cursor,limit:r?.limit,direction:r?.direction,beforeTimestamp:r?.before?.getTime(),afterTimestamp:r?.after?.getTime(),beforeBlockHeight:r?.beforeBlockHeight,afterBlockHeight:r?.afterBlockHeight,poolAddress:r?.poolAddress,type:r?.type?r.type.toUpperCase():void 0});return be(n)}async _getActivities(s,t,r){let n=await K(this._phase3,d(s),{...t,cursor:r?.cursor,limit:r?.limit,direction:r?.direction,beforeTimestamp:r?.before?.getTime(),afterTimestamp:r?.after?.getTime(),beforeBlockHeight:r?.beforeBlockHeight,afterBlockHeight:r?.afterBlockHeight,poolAddress:r?.poolAddress,type:r?.type?r.type.toUpperCase():void 0,sortBy:r?.sortBy});return he(n)}_subscribeRankingTokens(s,t,r){let n=d(s),i=[this._client.stream.subscribeRankingTokensStats({chain:n,channelType:t,callback:a=>r(a.map(c=>F(s,c)))}),this._client.stream.subscribeRankingTokensHolders({chain:n,channelType:t,callback:a=>r(a.map(c=>M(s,c.tokenAddress,c)))}),this._client.stream.subscribeRankingTokensSupply({chain:n,channelType:t,callback:a=>r(a.map(c=>E(s,c.tokenAddress,c)))}),this._client.stream.subscribeRankingTokensLiquidity({chain:n,channelType:t,callback:a=>r(a.map(c=>z(s,c.tokenAddress,c)))})];return {unsubscribe:()=>i.forEach(a=>a.unsubscribe())}}};function Ke(e){let s=e.find(t=>t.field==="launchedFromProtocolFamily");if(s){if(s.operator==="eq")return [s.value];if(s.operator==="in")return s.value;console.warn("invalid launchedFromProtocolFamily filter",s);}}
|
|
2
|
-
exports.Client=
|
|
1
|
+
'use strict';var sdk=require('@chainstream-io/sdk'),types=require('@liberfi.io/types'),utils=require('@liberfi.io/utils');var R=class extends Error{code="NotImplemented";constructor(s,t){super(t?`${s} is not yet implemented by the backend: ${t}`:`${s} is not yet implemented by the backend`),this.name="NotImplementedError";}};function ss(e){return e instanceof Error&&e.code==="NotImplemented"}var Be="https://api.chainstream.io";async function Ne(e){return typeof e=="string"?e:Promise.resolve(e.getToken())}function Oe(e,s,t){if(t!=null){if(t instanceof Date){e.set(s,String(t.getTime()));return}e.set(s,String(t));}}function _e(e,s){let t=e.endsWith("/")?e.slice(0,-1):e,r=s.startsWith("/")?s:`/${s}`;return t+r}async function K(e,s,t){let r=new URL(_e(e.baseUrl,s)),n=new URLSearchParams;for(let[k,u]of Object.entries(t))Oe(n,k,u);let a=n.toString();a&&(r.search=a);let i=await Ne(e.accessToken),c=await fetch(r.toString(),{method:"GET",headers:{Accept:"application/json",Authorization:`Bearer ${i}`}});if(!c.ok){let k=await c.text().catch(()=>"");throw new Error(`[phase3Http] ${c.status} ${c.statusText} ${r.pathname}: ${k}`)}return await c.json()}function J(e,s){return {baseUrl:s??Be,accessToken:e}}function Y(e,s,t,r){return K(e,`/v2/token/${encodeURIComponent(s)}/${encodeURIComponent(t)}/holders`,r)}function X(e,s,t,r){return K(e,`/v2/wallet/${encodeURIComponent(s)}/${encodeURIComponent(t)}/pnl-details`,r)}function o(e){return e??void 0}function d(e){switch(e){case types.Chain.ETHEREUM:return sdk.ChainSymbol.eth;case types.Chain.BINANCE:return sdk.ChainSymbol.bsc;case types.Chain.SOLANA:return sdk.ChainSymbol.sol}throw new Error(`Unsupported chain: ${e}`)}function B(e){switch(e){case "1s":return sdk.Resolution["1s"];case "15s":return sdk.Resolution["15s"];case "30s":return sdk.Resolution["30s"];case "1m":return sdk.Resolution["1m"];case "5m":return sdk.Resolution["5m"];case "15m":return sdk.Resolution["15m"];case "30m":case "1h":return sdk.Resolution["1h"];case "4h":return sdk.Resolution["4h"];case "12h":return sdk.Resolution["12h"];case "24h":return sdk.Resolution["1d"]}}function Fe(e){return e}function te(e){switch(e){case "marketCap":return sdk.SearchSortBy.marketCapInUsd;case "tvl":return sdk.SearchSortBy.liquidityInUsd;case "price":return sdk.SearchSortBy.priceInUsd;case "holders":return sdk.SearchSortBy.holderCount;case "volumes24h":return sdk.SearchSortBy.h24VolumeInUsd;case "trades24h":return sdk.SearchSortBy.h24Transactions;case "createdAt":return sdk.SearchSortBy.tokenCreatedAt}throw new Error(`Unsupported search field: ${e}`)}function N(e){switch(e){case "price":return sdk.TokenField.marketDatapriceInUsd;case "priceChange1m":return sdk.TokenField.statspriceChangeRatioInUsd1m;case "priceChange5m":return sdk.TokenField.statspriceChangeRatioInUsd5m;case "priceChange1h":return sdk.TokenField.statspriceChangeRatioInUsd1h;case "priceChange4h":return sdk.TokenField.statspriceChangeRatioInUsd4h;case "priceChange24h":return sdk.TokenField.statspriceChangeRatioInUsd24h;case "marketCap":return sdk.TokenField.marketDatamarketCapInUsd;case "tvl":return sdk.TokenField.marketDatamaxPoolTvlInUsd;case "top10Holdings":return sdk.TokenField.marketDatatop10TotalHoldings;case "top10Ratio":return sdk.TokenField.marketDatatop10HoldingsRatio;case "top100Holdings":return sdk.TokenField.marketDatatop100TotalHoldings;case "top100Ratio":return sdk.TokenField.marketDatatop100HoldingsRatio;case "holders":return sdk.TokenField.marketDataholders;case "creatorsHoldings":return sdk.TokenField.marketDatacreatorHoldings;case "creatorsRatio":return sdk.TokenField.marketDatacreatorHoldingsRatio;case "buys1m":return sdk.TokenField.statsbuys1m;case "buys5m":return sdk.TokenField.statsbuys5m;case "buys15m":return sdk.TokenField.statsbuys15m;case "buys30m":return sdk.TokenField.statsbuys30m;case "buys1h":return sdk.TokenField.statsbuys1h;case "buys4h":return sdk.TokenField.statsbuys4h;case "buys24h":return sdk.TokenField.statsbuys24h;case "sells1m":return sdk.TokenField.statssells1m;case "sells5m":return sdk.TokenField.statssells5m;case "sells15m":return sdk.TokenField.statssells15m;case "sells30m":return sdk.TokenField.statssells30m;case "sells1h":return sdk.TokenField.statssells1h;case "sells4h":return sdk.TokenField.statssells4h;case "sells24h":return sdk.TokenField.statssells24h;case "trades1m":return sdk.TokenField.statstrades1m;case "trades5m":return sdk.TokenField.statstrades5m;case "trades1h":return sdk.TokenField.statstrades1h;case "trades4h":return sdk.TokenField.statstrades4h;case "trades24h":return sdk.TokenField.statstrades24h;case "traders1m":return sdk.TokenField.statstraders1m;case "traders5m":return sdk.TokenField.statstraders5m;case "traders1h":return sdk.TokenField.statstraders1h;case "traders4h":return sdk.TokenField.statstraders4h;case "traders24h":return sdk.TokenField.statstraders24h;case "volumes1m":return sdk.TokenField.statsvolumesInUsd1m;case "volumes5m":return sdk.TokenField.statsvolumesInUsd5m;case "volumes1h":return sdk.TokenField.statsvolumesInUsd1h;case "volumes4h":return sdk.TokenField.statsvolumesInUsd4h;case "volumes24h":return sdk.TokenField.statsvolumesInUsd24h;case "createdAt":return sdk.TokenField.tokenCreatedAt}throw new Error(`Unsupported sortBy: ${e}`)}function re(e){return e.filter(s=>["gt","gte","lt","lte","between"].indexOf(s.operator)>=0).map(s=>{let t={field:N(s.field)};return ["gt","gte","between"].indexOf(s.operator)>=0&&(t.min=typeof s.value=="number"?new utils.SafeBigNumber(s.value).toString():s.value),["lt","lte","between"].indexOf(s.operator)>=0&&(t.max=typeof s.value=="number"?new utils.SafeBigNumber(s.value).toString():s.value),t})}function p(e){switch(e){case sdk.ChainSymbol.eth:return types.Chain.ETHEREUM;case sdk.ChainSymbol.bsc:return types.Chain.BINANCE;case sdk.ChainSymbol.sol:case "solana":return types.Chain.SOLANA}throw new Error(`Unsupported chain: ${e}`)}function Ee(e){return {address:e.address??void 0,share:e.share??void 0,isVerified:e.isVerified??void 0}}function g(e){return {chain:p(e.chain),name:e.name,symbol:e.symbol,address:e.address,decimals:e.decimals,image:e.imageUrl??void 0,description:e.description??void 0,creators:e.tokenCreators?.map(Ee),launchedFrom:{programAddress:e.extra?.launchFromProgramAddress??void 0,protocolFamily:e.extra?.launchFromProtocolFamily??void 0},migrateProgress:e.marketData?.completionRatio?new utils.SafeBigNumber(e.marketData.completionRatio).shiftedBy(2).toString():void 0,migratedTo:{programAddress:e.extra?.migratedToProgramAddress??void 0,protocolFamily:e.extra?.migratedToProtocolFamily??void 0,poolAddress:e.extra?.migratedToPoolAddress??void 0,migratedAt:e.extra?.migratedAt?new Date(e.extra.migratedAt):void 0},socialMedias:e.socialMedias?Object.fromEntries(Object.entries(e.socialMedias).filter(([,s])=>s!=null).map(([s,t])=>[s,t])):void 0,stats:e.stats?O(e.stats):void 0,marketData:e.marketData?_(e.marketData):void 0,createdAt:e.tokenCreatedAt?new Date(e.tokenCreatedAt):void 0}}function O(e){return {"1m":y(e,"1m"),"5m":y(e,"5m"),"15m":y(e,"15m"),"30m":y(e,"30m"),"1h":y(e,"1h"),"4h":y(e,"4h"),"24h":y(e,"24h")}}function I(e){return e===void 0?void 0:parseInt(e)}function y(e,s){let t=e.periods?.[s];return t?{buys:I(t.buys),sells:I(t.sells),trades:I(t.trades),buyers:I(t.buyers),sellers:I(t.sellers),traders:I(t.traders),buyVolumes:t.buyVolume,sellVolumes:t.sellVolume,volumes:t.totalVolumeInNative,buyVolumesInUsd:t.buyVolumeInUsd,sellVolumesInUsd:t.sellVolumeInUsd,volumesInUsd:t.totalVolumeInUsd,openPriceInUsd:t.openInUsd,closePriceInUsd:t.closeInUsd,highPriceInUsd:t.highInUsd,lowPriceInUsd:t.lowInUsd,priceInUsd:t.closeInUsd,priceChange:t.priceChangeRatioInUsd}:{}}function gt(e){return {poolAddress:e.poolAddress,programAddress:e.programAddress??void 0,protocolFamily:e.protocolFamily??void 0,tvl:e.tvlInSol??void 0,tvlInUsd:e.tvlInUsd??void 0}}function _(e){return {totalSupply:e.totalSupply??void 0,marketCap:e.marketCapInSol??void 0,marketCapInUsd:e.marketCapInUsd??void 0,price:e.priceInNative??e.priceInSol??void 0,priceInUsd:e.priceInUsd??void 0,tvl:e.totalTvlInSol??void 0,tvlInUsd:e.totalTvlInUsd??void 0,holders:e.holders?parseInt(e.holders):void 0,top10Holdings:e.top10TotalHoldings??void 0,top10HoldingsRatio:e.top10HoldingsRatio??void 0,top50Holdings:e.top50TotalHoldings??void 0,top50HoldingsRatio:e.top50HoldingsRatio??void 0,top100Holdings:e.top100TotalHoldings??void 0,top100HoldingsRatio:e.top100HoldingsRatio??void 0,bluechipHolders:e.bluechipTotalHolders?parseInt(e.bluechipTotalHolders):void 0,bluechipHoldings:e.bluechipTotalHoldings??void 0,bluechipHoldingsRatio:e.bluechipHoldingsRatio??void 0,kolHolders:e.kolTotalHolders?parseInt(e.kolTotalHolders):void 0,kolHoldings:e.kolTotalHoldings??void 0,kolHoldingsRatio:e.kolHoldingsRatio??void 0,sniperHolders:e.sniperTotalHolders?parseInt(e.sniperTotalHolders):void 0,sniperHoldings:e.sniperTotalHoldings??void 0,sniperHoldingsRatio:e.sniperHoldingsRatio??void 0,proHolders:e.proTotalHolders?parseInt(e.proTotalHolders):void 0,proHoldings:e.proTotalHoldings??void 0,proHoldingsRatio:e.proHoldingsRatio??void 0,insiderHolders:e.insiderTotalHolders?parseInt(e.insiderTotalHolders):void 0,insiderHoldings:e.insiderTotalHoldings??void 0,insiderHoldingsRatio:e.insiderHoldingsRatio??void 0,sandwichHolders:e.sandwishTotalHolders?parseInt(e.sandwishTotalHolders):void 0,sandwichHoldings:e.sandwishTotalHoldings??void 0,sandwichHoldingsRatio:e.sandwishHoldingsRatio??void 0,freshHolders:e.freshTotalHolders?parseInt(e.freshTotalHolders):void 0,freshHoldings:e.freshTotalHoldings??void 0,freshHoldingsRatio:e.freshHoldingsRatio??void 0,bundleHolders:e.bundleTotalHolders?parseInt(e.bundleTotalHolders):void 0,bundleHoldings:e.bundleTotalHoldings??void 0,bundleHoldingsRatio:e.bundleHoldingsRatio??void 0,devHolders:e.devTotalHolders?parseInt(e.devTotalHolders):void 0,devHoldings:e.devTotalHoldings??void 0,devHoldingsRatio:e.devHoldingsRatio??void 0}}function ne(e,s){return {open:e.open,close:e.close,high:e.high,low:e.low,volume:e.volume,volumeInTokenAmount:o(e.volumeInTokenAmount),trades:e.trades??void 0,resolution:s,timestamp:new Date(e.timestamp)}}function Me(e){return e==="1d"?"24h":e}function oe(e){let s=e;return {hasTransferFee:s.hasTransferFee,isTransferFeeUpgradable:s.isTransferFeeUpgradable,isTransferable:s.isTransferable,isFreezable:s.isFreezable,isClosable:s.isClosable}}var ze=new Set([types.Chain.SOLANA,types.Chain.SOLANA_TESTNET,types.Chain.SOLANA_DEVNET]),Ve="0x0000000000000000000000000000000000000000",qe="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";function Ge(e){return e===utils.SOLANA_TOKENS.native.address?utils.SOLANA_TOKENS.wrapped.address:e}function $e(e){return e.toLowerCase()===Ve.toLowerCase()?qe:e}function je(e){return e.dex==="jupiter"?"jupiter":e.dex==="kyberswap"?"kyberswap":ze.has(e.chain)?"jupiter":"kyberswap"}function D(e,s){return e==="jupiter"?Ge(s):e==="kyberswap"?$e(s):s}function kt(e,s){return D(e,s)}function ae(e){let s=je(e),t=D(s,e.input),r=D(s,e.output);return {dex:s,userAddress:e.userAddress,amount:e.amount,swapMode:e.mode===types.SwapMode.EXACT_IN?sdk.SwapRouteInputSwapMode.ExactIn:sdk.SwapRouteInputSwapMode.ExactOut,slippage:e.slippage??1,inputMint:t,outputMint:r,priorityFee:e.priorityFee,...e.tipFee&&{tipFee:e.tipFee},...e.isAntiMev!=null&&{isAntiMev:e.isAntiMev},...e.permit&&{permit:e.permit},...e.deadline!=null&&{deadline:e.deadline}}}function ie(e){return {signedTx:e.serializedTx}}function P(e){return e==null?void 0:new Date(e)}function le(e){if(e!=null)return new Date(e<1e12?e*1e3:e)}function H(e){if(!(!e||e.length===0))return e}function de(e){return {startCursor:o(e.startCursor),endCursor:o(e.endCursor),hasPrev:e.hasPrev??false,hasNext:e.hasNext??false,data:e.data.map(s=>({address:s.walletAddress,amount:s.amount,amountInUsd:s.amountInUsd,ratio:s.percentage,tags:H(s.tags),lastActiveAt:P(s.lastActiveAt),startHoldingAt:P(s.startHoldingAt)}))}}function ce(e){return {startCursor:o(e.startCursor),endCursor:o(e.endCursor),hasPrev:e.hasPrev??false,hasNext:e.hasNext??false,data:e.data.map(s=>({address:s.walletAddress,amount:s.amount,amountInUsd:s.amountInUsd,ratio:s.percentage,tags:H(s.tags),lastActiveAt:P(s.lastActiveAt),startHoldingAt:P(s.startHoldingAt)}))}}function ue(e){let s=e;return {startCursor:o(e.startCursor),endCursor:o(e.endCursor),hasPrev:e.hasPrev??false,hasNext:e.hasNext??false,data:e.data.map(g),extra:o(s.countsByProtocols)}}function me(e){return {serializedTx:e.serializedTx,recentBlockhash:o(e.recentBlockhash),lastValidBlockHeight:o(e.lastValidBlockHeight),plans:[],extra:e.routeInfo}}function Te(e){return {blockhash:e.blockhash,lastValidBlockHeight:e.lastValidBlockHeight}}function ge(e){return {txHash:e.signature,extra:{jobId:e.jobId,elapsedTime:e.elapsedTime}}}function ke(e,s){let t=(s.data??[]).map(r=>({chain:p(r.chain),address:r.tokenAddress,name:r.name,symbol:r.symbol,image:o(r.logoUri),priceInUsd:r.priceInUsd,priceInNative:r.priceInNative,amount:r.amount,amountInUsd:r.valueInUsd,amountInNative:r.valueInNative,decimals:r.decimals}));return {chain:t[0]?.chain??e,address:s.walletAddress,balanceInUsd:s.totalValueInUsd,balanceInNative:s.totalValueInNative,startCursor:o(s.startCursor),endCursor:o(s.endCursor),hasPrev:s.hasPrev,hasNext:s.hasNext,portfolios:t}}function fe(e,s,t){return {chain:e,address:s,tokens:t.tokens?Number(t.tokens):void 0,buys:t.buys?Number(t.buys):void 0,sells:t.sells?Number(t.sells):void 0,totalTrades:t.totalTrades?Number(t.totalTrades):void 0,wins:t.wins?Number(t.wins):void 0,losses:t.losses?Number(t.losses):void 0,winRate:o(t.winRate),buyAmountInUsd:o(t.buyAmountInUsd),sellAmountInUsd:o(t.sellAmountInUsd),totalCostInUsd:o(t.totalCostInUsd),realizedProfitInUsd:o(t.realizedProfitInUsd),realizedProfitRatio:o(t.realizedProfitRatio),unrealizedProfitInUsd:o(t.unrealizedProfitInUsd),unrealizedProfitRatio:o(t.unrealizedProfitRatio),totalProfitInUsd:o(t.totalProfitInUsd),totalProfitRatio:o(t.totalProfitRatio),avgProfitPerTradeInUsd:o(t.avgProfitPerTradeInUsd)}}function Qe(e,s){return {chain:e,address:s.tokenAddress,name:s.name??"",symbol:s.symbol??"",image:o(s.logoUri),amount:s.balance,amountInUsd:s.currentValue,priceInUsd:s.priceInUsd,decimals:s.decimals??0,totalTrades:s.totalTrades!=null?Number(s.totalTrades):void 0,buys:s.buys!=null?Number(s.buys):void 0,buyVolumes:s.buyAmount,buyVolumesInUsd:s.buyAmountInUsd,buyAvgPriceInUsd:s.avgBuyPriceInUsd,sells:s.sells!=null?Number(s.sells):void 0,sellVolumes:s.sellAmount,sellVolumesInUsd:s.sellAmountInUsd,sellAvgPriceInUsd:s.avgSellPriceInUsd,realizedProfitInUsd:s.realizedProfitInUsd,realizedProfitRatio:s.realizedProfitRatio,unrealizedProfitInUsd:s.unrealizedProfitInUsd,unrealizedProfitRatio:s.unrealizedProfitRatio,totalProfitInUsd:s.totalProfitInUsd,totalProfitRatio:s.totalProfitRatio,isClosed:s.isClosed,firstBuyAt:P(s.firstBuyAt),lastSellAt:P(s.lastSellAt)}}function L(e,s,t){let r=t.summary;return {chain:e,address:s,tokens:t.summary.tokens!=null?Number(t.summary.tokens):void 0,buys:t.summary.buys!=null?Number(t.summary.buys):void 0,sells:t.summary.sells!=null?Number(t.summary.sells):void 0,totalTrades:t.summary.totalTrades!=null?Number(t.summary.totalTrades):void 0,wins:t.summary.wins!=null?Number(t.summary.wins):void 0,losses:t.summary.losses!=null?Number(t.summary.losses):void 0,winRate:o(t.summary.winRate),buyAmountInUsd:o(t.summary.buyAmountInUsd),sellAmountInUsd:o(t.summary.sellAmountInUsd),totalCostInUsd:t.summary.totalCostInUsd,realizedProfitInUsd:o(t.summary.realizedProfitInUsd),unrealizedProfitInUsd:o(t.summary.unrealizedProfitInUsd),totalProfitInUsd:o(t.summary.totalProfitInUsd),totalProfitRatio:o(r.totalProfitRatio),avgProfitPerTradeInUsd:o(t.summary.avgProfitPerTradeInUsd),startCursor:o(t.startCursor),endCursor:o(t.endCursor),hasPrev:t.hasPrev,hasNext:t.hasNext,portfolios:t.data.map(n=>Qe(e,n))}}function be(e,s){return (s.data??[]).map(t=>({chain:p(t.chain),address:t.tokenAddress,name:t.name,symbol:t.symbol,image:o(t.logoUri),priceInUsd:t.priceInUsd,priceInNative:t.priceInNative,amount:t.amount,amountInUsd:t.valueInUsd,amountInNative:t.valueInNative,decimals:t.decimals,isActive:t.isActive,avgCostUsd:o(t.avgCostUsd),lastActiveAt:P(t.lastActiveAt),walletTokenTags:H(t.walletTokenTags)}))}function he(e,s){return s.data.map(t=>({chain:e,address:t.tokenAddress,name:t.name??"",symbol:t.symbol??"",image:o(t.logoUri),amount:t.balance,amountInUsd:t.currentValue,priceInUsd:t.priceInUsd,decimals:t.decimals??0,totalTrades:Number(t.totalTrades),buys:Number(t.buys),buyVolumes:t.buyAmount,buyVolumesInUsd:t.buyAmountInUsd,buyAvgPriceInUsd:t.avgBuyPriceInUsd,sells:Number(t.sells),sellVolumes:t.sellAmount,sellVolumesInUsd:t.sellAmountInUsd,sellAvgPriceInUsd:t.avgSellPriceInUsd,realizedProfitInUsd:t.realizedProfitInUsd,realizedProfitRatio:t.realizedProfitRatio,unrealizedProfitInUsd:t.unrealizedProfitInUsd,unrealizedProfitRatio:t.unrealizedProfitRatio,totalProfitInUsd:t.totalProfitInUsd,totalProfitRatio:t.totalProfitRatio}))}function ye(e){return {startCursor:o(e.startCursor),endCursor:o(e.endCursor),hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(Pe)}}function Pe(e){let s=e.type.toLowerCase()==="buy";return {chain:p(e.chain),walletAddress:e.accountOwnerAddress,txHash:e.transactionSignature,type:s?"buy":"sell",from:{address:s?e.sideTokenAddress:e.tokenAddress,symbol:s?e.sideTokenSymbol:e.tokenSymbol,name:s?e.sideTokenName:e.tokenName,image:o(s?e.sideTokenImageUrl:e.tokenImageUrl),amount:s?e.sideTokenAmount:e.tokenAmount,amountInUsd:s?e.sideTokenAmountInUsd:e.tokenAmountInUsd,priceInUsd:s?e.sideTokenPriceInUsd:e.tokenPriceInUsd},to:{address:s?e.tokenAddress:e.sideTokenAddress,symbol:s?e.tokenSymbol:e.sideTokenSymbol,name:s?e.tokenName:e.sideTokenName,image:o(s?e.tokenImageUrl:e.sideTokenImageUrl),amount:s?e.tokenAmount:e.sideTokenAmount,amountInUsd:s?e.tokenAmountInUsd:e.sideTokenAmountInUsd,priceInUsd:s?e.tokenPriceInUsd:e.sideTokenPriceInUsd},dex:{programAddress:o(e.dexProgramAddress),protocolFamily:o(e.dexProtocolFamily),image:o(e.dexImage)},poolAddress:o(e.poolAddress),status:e.status??"success",time:le(e.blockTimestamp)??new Date(0),gasFee:e.gasFee!=null?String(e.gasFee):void 0,traderTags:H(e.traderTags)}}function Ae(e){return {startCursor:o(e.startCursor),endCursor:o(e.endCursor),hasPrev:e.hasPrev??false,hasNext:e.hasNext??false,data:e.data.map(Pe)}}function ft(e){return {startCursor:o(e.startCursor),endCursor:o(e.endCursor),hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(Ke)}}function Ke(e){let s=e.type.toLowerCase().replace(/ /g,"_"),t=s==="buy",r=le(e.blockTimestamp)??new Date(0);return {chain:p(e.chain),walletAddress:e.accountOwnerAddress,txHash:e.transactionSignature,type:s,from:{address:t?e.sideTokenAddress:e.tokenAddress,symbol:t?e.sideTokenSymbol:e.tokenSymbol,name:t?e.sideTokenName:e.tokenName,image:o(t?e.sideTokenImageUrl:e.tokenImageUrl),amount:t?e.sideTokenAmount:e.tokenAmount,amountInUsd:t?e.sideTokenAmountInUsd:e.tokenAmountInUsd,priceInUsd:t?e.sideTokenPriceInUsd:e.tokenPriceInUsd},to:{address:t?e.tokenAddress:e.sideTokenAddress,symbol:t?e.tokenSymbol:e.sideTokenSymbol,name:t?e.tokenName:e.sideTokenName,image:o(t?e.tokenImageUrl:e.sideTokenImageUrl),amount:t?e.tokenAmount:e.sideTokenAmount,amountInUsd:t?e.tokenAmountInUsd:e.sideTokenAmountInUsd,priceInUsd:t?e.tokenPriceInUsd:e.sideTokenPriceInUsd},dex:{programAddress:o(e.dexProgramAddress),protocolFamily:o(e.dexProtocolFamily),image:o(e.dexImage)},poolAddress:o(e.poolAddress),status:e.status??"success",time:r,gasFee:e.gasFee!=null?String(e.gasFee):void 0,traderTags:H(e.traderTags)}}function Ie(e,s){return {chain:e,address:s.tokenAddress,name:s.name,symbol:s.symbol,decimals:s.decimals,createdAt:s.createdAtMs?new Date(s.createdAtMs):void 0,launchedFrom:s.launchFrom?{programAddress:s.launchFrom.programAddress,protocolFamily:s.launchFrom.protocolFamily}:void 0}}function Se(e,s){return {chain:e,address:s.tokenAddress,name:s.name,symbol:s.symbol,decimals:s.decimals,image:s.imageUrl,description:s.description,socialMedias:s.socialMedia?{...s.socialMedia}:void 0,createdAt:s.createdAtMs?new Date(s.createdAtMs):void 0,launchedFrom:s.launchFrom?{programAddress:s.launchFrom.programAddress,protocolFamily:s.launchFrom.protocolFamily}:void 0,migratedTo:s.migratedTo?{programAddress:s.migratedTo.programAddress,protocolFamily:s.migratedTo.protocolFamily}:void 0}}function Ue(e){return {open:e.open,close:e.close,high:e.high,low:e.low,volume:e.volume,resolution:Me(e.resolution),timestamp:new Date(e.time)}}function Je(e){let s=["1m","5m","15m","30m","1h","4h","24h"],t=e,r={};for(let n of s){let a=t[`buys${n}`],i=t[`sells${n}`],c=t[`buyers${n}`],k=t[`sellers${n}`],u=t[`buyVolumeInUsd${n}`],A=t[`sellVolumeInUsd${n}`],C=t[`trades${n}`],v=t[`price${n}`],b=t[`openInUsd${n}`],w=t[`closeInUsd${n}`];if(!(a!==void 0||i!==void 0||C!==void 0||v!==void 0))continue;let W=C??(a!==void 0&&i!==void 0?a+i:void 0),xe=c!==void 0&&k!==void 0?c+k:void 0,We=u!==void 0&&A!==void 0?new utils.SafeBigNumber(u).plus(A).toString():void 0,De=b&&w&&new utils.SafeBigNumber(b).gt(0)?new utils.SafeBigNumber(w).minus(b).div(b).toString():void 0;r[n]={buys:a,sells:i,trades:W,buyers:c,sellers:k,traders:xe,buyVolumesInUsd:u,sellVolumesInUsd:A,volumesInUsd:We,openPriceInUsd:b,closePriceInUsd:w,priceInUsd:v??w,priceChange:De};}return r}function Ye(e){return {priceInUsd:e.price}}function F(e,s){return {chain:e,address:s.address,stats:Je(s),marketData:Ye(s)}}function E(e,s,t){return {chain:e,address:s,marketData:{totalSupply:t.supply,marketCapInUsd:t.marketCapInUsd}}}function M(e,s,t){return {chain:e,address:s,marketData:Xe(t)}}function z(e,s,t){return t.metricType===sdk.WsMetricType.LIQUIDITY_IN_USD?{chain:e,address:s,marketData:{tvlInUsd:t.value}}:t.metricType===sdk.WsMetricType.MIGRATED_RATIO?{chain:e,address:s,migrateProgress:new utils.SafeBigNumber(t.value).shiftedBy(2).toString()}:{chain:e,address:s}}function V(e,s){return {chain:e,address:s.tokenAddress??"",migrateProgress:s.progressRatio?new utils.SafeBigNumber(s.progressRatio).shiftedBy(2).toString():void 0}}function Ce(e,s,t){return {chain:e,address:s,liquidities:[{poolAddress:t.poolAddress,tvlInUsd:t.liquidityInUsd,tvl:t.liquidityInNative}]}}function ve(e,s,t){return {chain:e,address:s,marketData:{tvlInUsd:t.liquidityInUsd,tvl:t.liquidityInNative}}}function Xe(e){return {holders:e.holders,top10Holdings:e.top10HoldersAmount,top10HoldingsRatio:e.top10HoldersRatio,top50Holdings:e.top50HoldersAmount,top50HoldingsRatio:e.top50HoldersRatio,top100Holdings:e.top100HoldersAmount,top100HoldingsRatio:e.top100HoldersRatio,devHolders:e.balanceTagDevHolders===void 0?void 0:e.balanceTagDevHolders,devHoldings:e.balanceTagDevAmount,devHoldingsRatio:e.balanceTagDevRatio,sniperHolders:e.balanceTagSniperHolders===void 0?void 0:e.balanceTagSniperHolders,sniperHoldings:e.balanceTagSniperAmount,sniperHoldingsRatio:e.balanceTagSniperRatio,freshHolders:e.balanceTagFreshHolders===void 0?void 0:e.balanceTagFreshHolders,freshHoldings:e.balanceTagFreshAmount,freshHoldingsRatio:e.balanceTagFreshRatio,bundleHolders:e.balanceTagBundleHolders===void 0?void 0:e.balanceTagBundleHolders,bundleHoldings:e.balanceTagBundleAmount,bundleHoldingsRatio:e.balanceTagBundleRatio,sandwichHolders:e.balanceTagSandwichHolders===void 0?void 0:e.balanceTagSandwichHolders,sandwichHoldings:e.balanceTagSandwichAmount,sandwichHoldingsRatio:e.balanceTagSandwichRatio}}function q(e,s){let t=s.kind.toLowerCase()==="buy";return {chain:e,walletAddress:t?s.buyWalletAddress:s.sellWalletAddress,txHash:s.txHash,type:t?"buy":"sell",from:{address:s.sellTokenAddress,symbol:s.sellTokenSymbol,name:s.sellTokenName,amount:s.sellAmount,amountInUsd:s.sellAmountInUsd},to:{address:s.buyTokenAddress,symbol:s.buyTokenSymbol,name:s.buyTokenName,amount:s.buyAmount,amountInUsd:s.buyAmountInUsd},status:"success",time:new Date(s.timestamp)}}function G(e,s){let t=s.kind.toLowerCase().replace(/ /g,"_");return {chain:e,walletAddress:t==="buy"?s.buyWalletAddress:s.sellWalletAddress,txHash:s.txHash,type:t,from:{address:s.sellTokenAddress,symbol:s.sellTokenSymbol,name:s.sellTokenName,amount:s.sellAmount,amountInUsd:s.sellAmountInUsd},to:{address:s.buyTokenAddress,symbol:s.buyTokenSymbol,name:s.buyTokenName,amount:s.buyAmount,amountInUsd:s.buyAmountInUsd},status:"success",time:new Date(s.timestamp)}}var He=class e{constructor(s,t){this.accessToken=s;this.options=t;this._client=new sdk.ChainStreamClient(this.accessToken,this.options),this._phase3=J(this.accessToken,this.options?.serverUrl);}_client;_phase3;async getToken(s,t){let r=await this._client.token.getToken(d(s),t);return g(r)}async getTokens(s,t){return (await this._client.token.getTokens(d(s),{tokenAddresses:t.join(",")})).map(g)}async getTokenCandles(s,t,r,n){return (await this._client.token.getCandles(d(s),t,{resolution:B(r),from:n?.after?.getTime(),to:n?.before?.getTime(),limit:n?.limit})).map(i=>ne(i,r))}async getTokenSecurity(s,t){let r=await this._client.token.getSecurity(d(s),t);return oe(r)}async getTokenStats(s,t){let r=await this._client.token.getStats(d(s),t);return O(r)}async getTokenHolders(s,t,r){if(r?.sortBy!=="realizedPnl"){let a=await this._client.token.getHolders(d(s),t,{cursor:r?.cursor,limit:r?.limit,direction:r?.direction,sortBy:r?.sortBy==="lastActiveAt"?sdk.HolderSortBy.lastActiveAt:r?.sortBy==="holdingUsd"?sdk.HolderSortBy.holdingUsd:void 0});return ce(a)}let n=await Y(this._phase3,d(s),t,{cursor:r?.cursor,limit:r?.limit,direction:r?.direction,sortBy:r?.sortBy});return de(n)}async getTokenMarketData(s,t){let r=await this._client.token.getMarketData(d(s),t);return _(r)}async getNewTokens(s,t){return (await this._client.ranking.getNewTokens(d(s),this._buildRankingParams(t))).map(g)}async getFinalStretchTokens(s,t){return (await this._client.ranking.getFinalStretchTokens(d(s),this._buildRankingParams(t))).map(g)}async getMigratedTokens(s,t){return (await this._client.ranking.getMigratedTokens(d(s),this._buildRankingParams(t))).map(g)}async getTrendingTokens(s,t,r){return (await this._client.ranking.getHotTokens(d(s),t,this._buildRankingParams(r))).map(g)}async getStockTokens(s,t){return (await this._client.ranking.getStocksTokens(d(s),this._buildRankingParams(t))).map(g)}async searchTokens(s){let t=await this._client.token.search({chains:s?.chains?.map(d),q:s?.keyword,limit:s?.limit,cursor:s?.cursor,sortBy:s?.sortBy?te(s.sortBy):void 0,sort:s?.sortDirection});return ue(t)}async swapRoute(s){let t=await this._client.dex.route(d(s.chain),ae(s));return me(t)}async getLatestBlock(s){let t=await this._client.blockchain.getLatestBlock(d(s.chain));return Te(t)}async sendTx(s){let t=await this._client.transaction.send(d(s.chain),ie(s));return ge(t)}async checkTxSuccess(s,t,r){let{success:n}=await this._client.waitForJob(t,r);return n}async getWalletPortfolios(s,t,r){let n=e._CHAIN_TO_BALANCE_PARAM[s];if(n&&this.options?.nativeBalanceApiUrl)return this._getWalletPortfoliosFromBalanceApi(s,n,t);let a=await this._client.wallet.getNetWorth(d(s),t,{cursor:r?.cursor,limit:r?.limit??100});return ke(s,a)}async getWalletPnl(s,t,r){let n=await this._client.wallet.getPnl(d(s),t,r?{resolution:r}:void 0);return fe(s,t,n)}async getWalletPortfolioPnls(s,t,r){if(r?.resolution!=="90d"){let a=await this._client.wallet.getPnlDetails(d(s),t,{resolution:r?.resolution==="7d"?sdk.PnlResolution["7d"]:sdk.PnlResolution["30d"],positionState:r?.positionState==="closed"?sdk.PositionState.closed:r?.positionState==="all"?sdk.PositionState.all:r?.positionState==="open"?sdk.PositionState.open:void 0,sortBy:r?.sortBy==="realizedPnl"?sdk.PnlSortBy.realizedPnl:r?.sortBy==="unrealizedPnl"?sdk.PnlSortBy.unrealizedPnl:r?.sortBy==="totalPnl"?sdk.PnlSortBy.totalPnl:void 0,cursor:r?.cursor,limit:r?.limit??100,direction:r?.direction});return L(s,t,a)}let n=await X(this._phase3,d(s),t,{resolution:r?.resolution??"30d",positionState:r?.positionState,sortBy:r?.sortBy,cursor:r?.cursor,limit:r?.limit??100,direction:r?.direction});return L(s,t,n)}async getWalletPortfoliosByTokens(s,t,r){let n=e._CHAIN_TO_BALANCE_PARAM[s];if(n&&this.options?.nativeBalanceApiUrl)return this._getPortfoliosFromBalanceApi(s,n,t,r);let a=await this._client.wallet.getNetWorthByTokens(d(s),t,{tokenAddresses:r.join(",")});return be(s,a)}async getWalletPortfolioPnlsByTokens(s,t,r){let n=await this._client.wallet.getPnlByToken(d(s),t,{tokenAddresses:r.join(",")});return he(s,n)}async getWalletTrades(s,t,r){return this._getTrades(s,{walletAddress:t},r)}async getTokenTrades(s,t,r){return this._getTrades(s,{tokenAddress:t},r)}async getWalletActivities(s,t,r){return this._getActivities(s,{walletAddress:t},r)}async getTokenActivities(s,t,r){return this._getActivities(s,{tokenAddress:t},r)}async getPresignedUploadUrl(){return (await this._client.ipfs.presign()).presignUrl}async getWalletLimitOrders(s,t,r){throw new R("Client.getWalletLimitOrders","no limit-orders endpoint on the backend yet")}async getTokensByCreator(s,t,r){throw new R("Client.getTokensByCreator","no creator-index endpoint on the backend yet")}subscribeToken(s,t,r){let n=d(s),a=[this._client.stream.subscribeTokenStats({chain:n,tokenAddress:t,callback:i=>r([F(s,i)])}),this._client.stream.subscribeTokenSupply({chain:n,tokenAddress:t,callback:i=>r([E(s,t,i)])}),this._client.stream.subscribeTokenHolders({chain:n,tokenAddress:t,callback:i=>r([M(s,t,i)])}),this._client.stream.subscribeTokenLiquidity({chain:n,tokenAddress:t,callback:i=>r([z(s,t,i)])}),this._client.stream.subscribeTokenMaxLiquidity({chain:n,tokenAddress:t,callback:i=>r([Ce(s,t,i)])}),this._client.stream.subscribeTokenTotalLiquidity({chain:n,tokenAddress:t,callback:i=>r([ve(s,t,i)])})];return {unsubscribe:()=>a.forEach(i=>i.unsubscribe())}}subscribeTokenCandles(s,t,r,n){return this._client.stream.subscribeTokenCandles({chain:d(s),tokenAddress:t,resolution:B(r),callback:a=>n([Ue(a)])})}subscribeWalletPnl(s,t,r){return this._client.stream.subscribeWalletPnlList({chain:d(s),walletAddress:t,callback:n=>r(n.map(a=>({chain:s,address:a.walletAddress,buys:a.buys,buyAmountInUsd:a.buyAmountInUsd,sells:a.sells,sellAmountInUsd:a.sellAmountInUsd,wins:a.wins,winRate:a.winRatio,totalProfitInUsd:a.pnlInUsd,totalProfitRatio:a.pnlRatio,avgProfitPerTradeInUsd:a.averagePnlInUsd,tokens:a.tokens,resolution:a.resolution})))})}subscribeWalletPortfolios(s,t,r){return this._client.stream.subscribeWalletBalance({chain:d(s),walletAddress:t,callback:n=>r(n.map(a=>({chain:s,walletAddress:a.walletAddress,tokenAddress:a.tokenAddress,priceInUsd:a.tokenPriceInUsd,amount:a.balance})))})}subscribeWalletPortfolioPnls(s,t,r){return this._client.stream.subscribeWalletPnl({chain:d(s),walletAddress:t,callback:n=>r([{chain:s,walletAddress:n.walletAddress,tokenAddress:n.tokenAddress,openTime:n.opentime?new Date(n.opentime):void 0,closeTime:n.closetime?new Date(n.closetime):void 0,buys:n.buyCount,buyVolumes:n.buyAmount,buyVolumesInUsd:n.buyAmountInUsd,buyAvgPriceInUsd:n.averageBuyPriceInUsd,sells:n.sellCount,sellVolumes:n.sellAmount,sellVolumesInUsd:n.sellAmountInUsd,sellAvgPriceInUsd:n.averageSellPriceInUsd,realizedProfitInUsd:n.realizedProfitInUsd,realizedProfitRatio:n.realizedProfitRatio,unrealizedProfitInUsd:n.unrealizedProfitInUsd,unrealizedProfitRatio:n.unrealizedProfitRatio,totalProfitInUsd:n.totalRealizedProfitInUsd,totalProfitRatio:n.totalRealizedProfitRatio}])})}subscribeWalletTrades(s,t,r){return this._client.stream.subscribeWalletTrade({chain:d(s),walletAddress:t,callback:n=>r([q(s,n)])})}subscribeTokenTrades(s,t,r){return this._client.stream.subscribeTokenTrade({chain:d(s),tokenAddress:t,callback:n=>r([q(s,n)])})}subscribeWalletActivities(s,t,r){return this._client.stream.subscribeWalletTrade({chain:d(s),walletAddress:t,callback:n=>r([G(s,n)])})}subscribeTokenActivities(s,t,r){return this._client.stream.subscribeTokenTrade({chain:d(s),tokenAddress:t,callback:n=>r([G(s,n)])})}subscribeNewTokens(s,t){let r=d(s),n=this._subscribeRankingTokens(s,sdk.WsChannelType.New,t),a=[this._client.stream.subscribeNewToken({chain:r,callback:i=>t([Ie(s,i)])}),this._client.stream.subscribeNewTokensMetadata({chain:r,callback:i=>t(i.map(c=>Se(s,c)))}),this._client.stream.subscribeRankingTokensBondingCurve({chain:r,callback:i=>t(i.map(c=>V(s,c)))})];return {unsubscribe:()=>{n.unsubscribe(),a.forEach(i=>i.unsubscribe());}}}subscribeTrendingTokens(s,t){return this._subscribeRankingTokens(s,sdk.WsChannelType.HOT,t)}subscribeMigratedTokens(s,t){return this._subscribeRankingTokens(s,sdk.WsChannelType.MIGRATED,t)}subscribeFinalStretchTokens(s,t){let r=d(s),n=this._subscribeRankingTokens(s,sdk.WsChannelType.FINAL_STRETCH,t),a=this._client.stream.subscribeRankingTokensBondingCurve({chain:r,callback:i=>t(i.map(c=>V(s,c)))});return {unsubscribe:()=>{n.unsubscribe(),a.unsubscribe();}}}subscribeStockTokens(s,t){return this._subscribeRankingTokens(s,sdk.WsChannelType.US_STOCKS,t)}static _CHAIN_TO_BALANCE_PARAM={[types.Chain.SOLANA]:"sol",[types.Chain.ETHEREUM]:"eth",[types.Chain.BINANCE]:"bnb"};static _NATIVE_TOKEN_ADDRESS={[types.Chain.SOLANA]:"11111111111111111111111111111111",[types.Chain.ETHEREUM]:"0x0000000000000000000000000000000000000000",[types.Chain.BINANCE]:"0x0000000000000000000000000000000000000000"};async _getPortfoliosFromBalanceApi(s,t,r,n){let a=this.options.nativeBalanceApiUrl,i=new URLSearchParams({chain:t,address:r});n?.length&&i.set("tokens",n.join(","));let c=await fetch(`${a}?${i.toString()}`);if(!c.ok)throw new Error(`Balance API returned ${c.status}`);return (await c.json()).balances.map(u=>{let A=BigInt(u.balance),C=u.decimals,v=BigInt(10)**BigInt(C),b=A/v,Q=(A%v).toString().padStart(C,"0"),W=`${b}.${Q}`.replace(/\.?0+$/,"")||"0";return {chain:s,address:u.address,name:"",symbol:"",priceInUsd:"0",priceInNative:"0",amount:W,amountInUsd:"0",amountInNative:"0",decimals:u.decimals}})}async _getWalletPortfoliosFromBalanceApi(s,t,r){let n=await this._getPortfoliosFromBalanceApi(s,t,r),a=e._NATIVE_TOKEN_ADDRESS[s],i=a?n.find(c=>c.address===a):void 0;return {chain:s,address:r,balanceInUsd:"0",balanceInNative:i?.amount??"0",portfolios:n,hasPrev:false,hasNext:false}}_buildRankingParams(s){return {sortBy:s?.sortBy?N(s.sortBy):void 0,sortDirection:s?.sortDirection?s.sortDirection:void 0,rangeFilters:s?.filters?re(s.filters):void 0,launchpadPlatform:s?.filters?es(s.filters):void 0,searchKeywords:s?.keywords,excludeKeywords:s?.excludeKeywords}}async _getTrades(s,t,r){let n=await this._client.trade.getTrades(d(s),{...t,cursor:r?.cursor,limit:r?.limit,direction:r?.direction,beforeTimestamp:r?.before?.getTime(),afterTimestamp:r?.after?.getTime(),beforeBlockHeight:r?.beforeBlockHeight,afterBlockHeight:r?.afterBlockHeight,poolAddress:r?.poolAddress,type:r?.type?r.type.toUpperCase():void 0});return ye(n)}async _getActivities(s,t,r){let n=await this._client.trade.getActivities(d(s),{...t,cursor:r?.cursor,limit:r?.limit,direction:r?.direction,beforeTimestamp:r?.before?.getTime(),afterTimestamp:r?.after?.getTime(),beforeBlockHeight:r?.beforeBlockHeight,afterBlockHeight:r?.afterBlockHeight,poolAddress:r?.poolAddress,type:r?.type?r.type.toUpperCase():void 0,sortBy:r?.sortBy==="totalUsd"?sdk.ActivitySortBy.totalUsd:r?.sortBy==="timestamp"?sdk.ActivitySortBy.timestamp:void 0});return Ae(n)}_subscribeRankingTokens(s,t,r){let n=d(s),a=[this._client.stream.subscribeRankingTokensStats({chain:n,channelType:t,callback:i=>r(i.map(c=>F(s,c)))}),this._client.stream.subscribeRankingTokensHolders({chain:n,channelType:t,callback:i=>r(i.map(c=>M(s,c.tokenAddress,c)))}),this._client.stream.subscribeRankingTokensSupply({chain:n,channelType:t,callback:i=>r(i.map(c=>E(s,c.tokenAddress,c)))}),this._client.stream.subscribeRankingTokensLiquidity({chain:n,channelType:t,callback:i=>r(i.map(c=>z(s,c.tokenAddress,c)))})];return {unsubscribe:()=>a.forEach(i=>i.unsubscribe())}}};function es(e){let s=e.find(t=>t.field==="launchedFromProtocolFamily");if(s){if(s.operator==="eq")return [s.value];if(s.operator==="in")return s.value;console.warn("invalid launchedFromProtocolFamily filter",s);}}
|
|
2
|
+
exports.Client=He;exports.KYBERSWAP_NATIVE_SENTINEL=qe;exports.NotImplementedError=R;exports.fromActivityPage=ft;exports.fromChainDTO=p;exports.fromLatestBlock=Te;exports.fromPnlDetailItems=he;exports.fromPnlDetailsPage=L;exports.fromSdkActivityPage=Ae;exports.fromSdkTokenHolderPage=ce;exports.fromSendTxResult=ge;exports.fromSwapRoute=me;exports.fromTokenCandle=ne;exports.fromTokenCreatorDTO=Ee;exports.fromTokenDTO=g;exports.fromTokenHolderPage=de;exports.fromTokenLiquidityDTO=gt;exports.fromTokenMarketDataDTO=_;exports.fromTokenMetadataSubscribed=Se;exports.fromTokenPage=ue;exports.fromTokenSecurity=oe;exports.fromTokenStatsDTO=O;exports.fromTokenSubscribed=Ie;exports.fromTradePage=ye;exports.fromWalletNetWorthByTokens=be;exports.fromWalletPnlSummary=fe;exports.fromWalletPortfolios=ke;exports.fromWsActivity=G;exports.fromWsCandle=Ue;exports.fromWsTokenBondingCurveToSubscribed=V;exports.fromWsTokenDataSubscribed=F;exports.fromWsTokenHolderToSubscribed=M;exports.fromWsTokenLiquidityToSubscribed=z;exports.fromWsTokenMarketDataFromHolder=Xe;exports.fromWsTokenMarketDataFromStats=Ye;exports.fromWsTokenMaxLiquidityToSubscribed=Ce;exports.fromWsTokenStats=Je;exports.fromWsTokenSupplyToSubscribed=E;exports.fromWsTokenTotalLiquidityToSubscribed=ve;exports.fromWsTradeActivity=q;exports.isNotImplementedError=ss;exports.toChainDTO=d;exports.toFieldDTO=N;exports.toMintForRoute=kt;exports.toRangeFiltersDTO=re;exports.toResolutionDTO=B;exports.toSearchFieldDTO=te;exports.toSendTxInput=ie;exports.toSortDirectionDTO=Fe;exports.toSwapRouteInput=ae;//# sourceMappingURL=index.js.map
|
|
3
3
|
//# sourceMappingURL=index.js.map
|