@liberfi.io/client 0.3.44 → 0.3.45
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 +5 -3
- package/dist/index.d.ts +5 -3
- 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 +4 -4
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, GetTokenTopTradersOptions, TokenTopTrader, TokenMarketData, GetTokenListOptions, Pool, 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, PoolSubscribed, 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, RankingPool, WsRankingPool, TokenMarketData as TokenMarketData$1, TokenCandle as TokenCandle$1, TokenSecurityResponse, SwapRouteInput, SendTxInput, PageResponseTokenHolder, PageResponseTokenTopTrader, TokenPage, SwapRouteResponse, BlockchainLatestBlock as BlockchainLatestBlock$1, SendTxResponse, WalletNetWorthPage, WalletPnlSummary, PnlDetailsResult, NetWorthByTokensResult, PageResponseTradeDetail, WsNewToken, WsTokenMetadata, WsCandle, WsTokenStat, WsRankingTokenList, WsTokenSupply, WsTokenHolder, WsTokenLiquidity, WsTokenBondingCurve, WsTokenMaxLiquidity, WsTokenTotalLiquidity, WsTradeActivity } from '@chainstream-io/sdk';
|
|
3
|
+
import { ChainSymbol, Resolution, RangeFilterCondition, TokenCreator, Token as Token$1, DevToken, TokenStats as TokenStats$1, DexPool, RankingPool, WsRankingPool, TokenMarketData as TokenMarketData$1, TokenCandle as TokenCandle$1, TokenSecurityResponse, SwapRouteInput, SendTxInput, PageResponseTokenHolder, PageResponseTokenTopTrader, PageResponseDevToken, TokenPage, SwapRouteResponse, BlockchainLatestBlock as BlockchainLatestBlock$1, SendTxResponse, WalletNetWorthPage, WalletPnlSummary, PnlDetailsResult, NetWorthByTokensResult, PageResponseTradeDetail, WsNewToken, WsTokenMetadata, WsCandle, WsTokenStat, WsRankingTokenList, 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 {
|
|
@@ -60,7 +60,7 @@ declare class Client implements IClient, ISubscribeClient {
|
|
|
60
60
|
getTokenActivities(chain: Chain, address: string, options?: GetActivitiesOptions): Promise<CursorList<Activity>>;
|
|
61
61
|
getPresignedUploadUrl(): Promise<string>;
|
|
62
62
|
getWalletLimitOrders(_chain: Chain, _address: string, _options?: GetWalletLimitOrdersOptions): Promise<CursorList<_liberfi_io_types.LimitOrder>>;
|
|
63
|
-
getTokensByCreator(
|
|
63
|
+
getTokensByCreator(chain: Chain, creator: string, options?: GetTokensByCreatorOptions): Promise<CursorList<Token>>;
|
|
64
64
|
subscribeToken(chain: Chain, address: string, callback: (data: Array<TokenSubscribed>) => void): ISubscription;
|
|
65
65
|
subscribeTokens(chain: Chain, addresses: Array<string>, callback: (data: Array<TokenSubscribed>) => void): ISubscription;
|
|
66
66
|
subscribeTokenCandles(chain: Chain, address: string, resolution: TokenResolution, callback: (candles: Array<TokenCandle>) => void): ISubscription;
|
|
@@ -250,6 +250,7 @@ declare function toRangeFiltersDTO(filters: Array<TokenFilterOption>): Array<Ran
|
|
|
250
250
|
declare function fromChainDTO(chain: string): Chain;
|
|
251
251
|
declare function fromTokenCreatorDTO(input: TokenCreator): TokenCreator$1;
|
|
252
252
|
declare function fromTokenDTO(input: Token$1): Token;
|
|
253
|
+
declare function fromSdkDevTokenDTO(chain: Chain, input: DevToken): Token;
|
|
253
254
|
declare function fromTokenStatsDTO(input: TokenStats$1): TokenStats;
|
|
254
255
|
declare function fromTokenLiquidityDTO(input: DexPool): TokenLiquidity;
|
|
255
256
|
declare function fromRankingPoolDTO(chain: Chain, input: RankingPool): Pool;
|
|
@@ -274,6 +275,7 @@ declare function toSendTxInput(params: SendTxParams): SendTxInput;
|
|
|
274
275
|
declare function fromTokenHolderPage(input: CursorPageDTO<Phase3TokenHolderDTO>): CursorList<TokenHolder>;
|
|
275
276
|
declare function fromSdkTokenHolderPage(input: PageResponseTokenHolder): CursorList<TokenHolder>;
|
|
276
277
|
declare function fromSdkTokenTopTraderPage(input: PageResponseTokenTopTrader): CursorList<TokenTopTrader>;
|
|
278
|
+
declare function fromSdkDevTokenPage(chain: Chain, input: PageResponseDevToken): CursorList<Token>;
|
|
277
279
|
declare function fromTokenPage(input: TokenPage): SearchTokenCursorList;
|
|
278
280
|
declare function fromSwapRoute(input: SwapRouteResponse): SwapRoute;
|
|
279
281
|
declare function fromLatestBlock(input: BlockchainLatestBlock$1): BlockchainLatestBlock;
|
|
@@ -303,4 +305,4 @@ declare function fromWsTokenMarketDataFromHolder(input: WsTokenHolder): Partial<
|
|
|
303
305
|
declare function fromWsTradeActivity(chain: Chain, input: WsTradeActivity): Trade;
|
|
304
306
|
declare function fromWsActivity(chain: Chain, input: WsTradeActivity): Activity;
|
|
305
307
|
|
|
306
|
-
export { Client, type ClientOptions, type ClientTokenProvider, type ClientTokenProviderFn, KYBERSWAP_NATIVE_SENTINEL, NotImplementedError, fromActivityPage, fromChainDTO, fromLatestBlock, fromPnlDetailItems, fromPnlDetailsPage, fromRankingPoolDTO, fromSdkActivityPage, fromSdkTokenHolderPage, fromSdkTokenTopTraderPage, fromSendTxResult, fromSwapRoute, fromTokenCandle, fromTokenCreatorDTO, fromTokenDTO, fromTokenHolderPage, fromTokenLiquidityDTO, fromTokenMarketDataDTO, fromTokenMetadataSubscribed, fromTokenPage, fromTokenSecurity, fromTokenStatsDTO, fromTokenSubscribed, fromTradePage, fromWalletNetWorthByTokens, fromWalletPnlSummary, fromWalletPortfolios, fromWsActivity, fromWsCandle, fromWsRankingPoolToSubscribed, fromWsRankingTokenListToSubscribed, fromWsTokenBondingCurveToSubscribed, fromWsTokenDataSubscribed, fromWsTokenHolderToSubscribed, fromWsTokenLiquidityToSubscribed, fromWsTokenMarketDataFromHolder, fromWsTokenMarketDataFromStats, fromWsTokenMaxLiquidityToSubscribed, fromWsTokenStats, fromWsTokenSupplyToSubscribed, fromWsTokenTotalLiquidityToSubscribed, fromWsTradeActivity, isNotImplementedError, toChainDTO, toFieldDTO, toMintForRoute, toRangeFiltersDTO, toResolutionDTO, toSearchFieldDTO, toSendTxInput, toSortDirectionDTO, toSwapRouteInput };
|
|
308
|
+
export { Client, type ClientOptions, type ClientTokenProvider, type ClientTokenProviderFn, KYBERSWAP_NATIVE_SENTINEL, NotImplementedError, fromActivityPage, fromChainDTO, fromLatestBlock, fromPnlDetailItems, fromPnlDetailsPage, fromRankingPoolDTO, fromSdkActivityPage, fromSdkDevTokenDTO, fromSdkDevTokenPage, fromSdkTokenHolderPage, fromSdkTokenTopTraderPage, fromSendTxResult, fromSwapRoute, fromTokenCandle, fromTokenCreatorDTO, fromTokenDTO, fromTokenHolderPage, fromTokenLiquidityDTO, fromTokenMarketDataDTO, fromTokenMetadataSubscribed, fromTokenPage, fromTokenSecurity, fromTokenStatsDTO, fromTokenSubscribed, fromTradePage, fromWalletNetWorthByTokens, fromWalletPnlSummary, fromWalletPortfolios, fromWsActivity, fromWsCandle, fromWsRankingPoolToSubscribed, fromWsRankingTokenListToSubscribed, 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, GetTokenTopTradersOptions, TokenTopTrader, TokenMarketData, GetTokenListOptions, Pool, 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, PoolSubscribed, 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, RankingPool, WsRankingPool, TokenMarketData as TokenMarketData$1, TokenCandle as TokenCandle$1, TokenSecurityResponse, SwapRouteInput, SendTxInput, PageResponseTokenHolder, PageResponseTokenTopTrader, TokenPage, SwapRouteResponse, BlockchainLatestBlock as BlockchainLatestBlock$1, SendTxResponse, WalletNetWorthPage, WalletPnlSummary, PnlDetailsResult, NetWorthByTokensResult, PageResponseTradeDetail, WsNewToken, WsTokenMetadata, WsCandle, WsTokenStat, WsRankingTokenList, WsTokenSupply, WsTokenHolder, WsTokenLiquidity, WsTokenBondingCurve, WsTokenMaxLiquidity, WsTokenTotalLiquidity, WsTradeActivity } from '@chainstream-io/sdk';
|
|
3
|
+
import { ChainSymbol, Resolution, RangeFilterCondition, TokenCreator, Token as Token$1, DevToken, TokenStats as TokenStats$1, DexPool, RankingPool, WsRankingPool, TokenMarketData as TokenMarketData$1, TokenCandle as TokenCandle$1, TokenSecurityResponse, SwapRouteInput, SendTxInput, PageResponseTokenHolder, PageResponseTokenTopTrader, PageResponseDevToken, TokenPage, SwapRouteResponse, BlockchainLatestBlock as BlockchainLatestBlock$1, SendTxResponse, WalletNetWorthPage, WalletPnlSummary, PnlDetailsResult, NetWorthByTokensResult, PageResponseTradeDetail, WsNewToken, WsTokenMetadata, WsCandle, WsTokenStat, WsRankingTokenList, 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 {
|
|
@@ -60,7 +60,7 @@ declare class Client implements IClient, ISubscribeClient {
|
|
|
60
60
|
getTokenActivities(chain: Chain, address: string, options?: GetActivitiesOptions): Promise<CursorList<Activity>>;
|
|
61
61
|
getPresignedUploadUrl(): Promise<string>;
|
|
62
62
|
getWalletLimitOrders(_chain: Chain, _address: string, _options?: GetWalletLimitOrdersOptions): Promise<CursorList<_liberfi_io_types.LimitOrder>>;
|
|
63
|
-
getTokensByCreator(
|
|
63
|
+
getTokensByCreator(chain: Chain, creator: string, options?: GetTokensByCreatorOptions): Promise<CursorList<Token>>;
|
|
64
64
|
subscribeToken(chain: Chain, address: string, callback: (data: Array<TokenSubscribed>) => void): ISubscription;
|
|
65
65
|
subscribeTokens(chain: Chain, addresses: Array<string>, callback: (data: Array<TokenSubscribed>) => void): ISubscription;
|
|
66
66
|
subscribeTokenCandles(chain: Chain, address: string, resolution: TokenResolution, callback: (candles: Array<TokenCandle>) => void): ISubscription;
|
|
@@ -250,6 +250,7 @@ declare function toRangeFiltersDTO(filters: Array<TokenFilterOption>): Array<Ran
|
|
|
250
250
|
declare function fromChainDTO(chain: string): Chain;
|
|
251
251
|
declare function fromTokenCreatorDTO(input: TokenCreator): TokenCreator$1;
|
|
252
252
|
declare function fromTokenDTO(input: Token$1): Token;
|
|
253
|
+
declare function fromSdkDevTokenDTO(chain: Chain, input: DevToken): Token;
|
|
253
254
|
declare function fromTokenStatsDTO(input: TokenStats$1): TokenStats;
|
|
254
255
|
declare function fromTokenLiquidityDTO(input: DexPool): TokenLiquidity;
|
|
255
256
|
declare function fromRankingPoolDTO(chain: Chain, input: RankingPool): Pool;
|
|
@@ -274,6 +275,7 @@ declare function toSendTxInput(params: SendTxParams): SendTxInput;
|
|
|
274
275
|
declare function fromTokenHolderPage(input: CursorPageDTO<Phase3TokenHolderDTO>): CursorList<TokenHolder>;
|
|
275
276
|
declare function fromSdkTokenHolderPage(input: PageResponseTokenHolder): CursorList<TokenHolder>;
|
|
276
277
|
declare function fromSdkTokenTopTraderPage(input: PageResponseTokenTopTrader): CursorList<TokenTopTrader>;
|
|
278
|
+
declare function fromSdkDevTokenPage(chain: Chain, input: PageResponseDevToken): CursorList<Token>;
|
|
277
279
|
declare function fromTokenPage(input: TokenPage): SearchTokenCursorList;
|
|
278
280
|
declare function fromSwapRoute(input: SwapRouteResponse): SwapRoute;
|
|
279
281
|
declare function fromLatestBlock(input: BlockchainLatestBlock$1): BlockchainLatestBlock;
|
|
@@ -303,4 +305,4 @@ declare function fromWsTokenMarketDataFromHolder(input: WsTokenHolder): Partial<
|
|
|
303
305
|
declare function fromWsTradeActivity(chain: Chain, input: WsTradeActivity): Trade;
|
|
304
306
|
declare function fromWsActivity(chain: Chain, input: WsTradeActivity): Activity;
|
|
305
307
|
|
|
306
|
-
export { Client, type ClientOptions, type ClientTokenProvider, type ClientTokenProviderFn, KYBERSWAP_NATIVE_SENTINEL, NotImplementedError, fromActivityPage, fromChainDTO, fromLatestBlock, fromPnlDetailItems, fromPnlDetailsPage, fromRankingPoolDTO, fromSdkActivityPage, fromSdkTokenHolderPage, fromSdkTokenTopTraderPage, fromSendTxResult, fromSwapRoute, fromTokenCandle, fromTokenCreatorDTO, fromTokenDTO, fromTokenHolderPage, fromTokenLiquidityDTO, fromTokenMarketDataDTO, fromTokenMetadataSubscribed, fromTokenPage, fromTokenSecurity, fromTokenStatsDTO, fromTokenSubscribed, fromTradePage, fromWalletNetWorthByTokens, fromWalletPnlSummary, fromWalletPortfolios, fromWsActivity, fromWsCandle, fromWsRankingPoolToSubscribed, fromWsRankingTokenListToSubscribed, fromWsTokenBondingCurveToSubscribed, fromWsTokenDataSubscribed, fromWsTokenHolderToSubscribed, fromWsTokenLiquidityToSubscribed, fromWsTokenMarketDataFromHolder, fromWsTokenMarketDataFromStats, fromWsTokenMaxLiquidityToSubscribed, fromWsTokenStats, fromWsTokenSupplyToSubscribed, fromWsTokenTotalLiquidityToSubscribed, fromWsTradeActivity, isNotImplementedError, toChainDTO, toFieldDTO, toMintForRoute, toRangeFiltersDTO, toResolutionDTO, toSearchFieldDTO, toSendTxInput, toSortDirectionDTO, toSwapRouteInput };
|
|
308
|
+
export { Client, type ClientOptions, type ClientTokenProvider, type ClientTokenProviderFn, KYBERSWAP_NATIVE_SENTINEL, NotImplementedError, fromActivityPage, fromChainDTO, fromLatestBlock, fromPnlDetailItems, fromPnlDetailsPage, fromRankingPoolDTO, fromSdkActivityPage, fromSdkDevTokenDTO, fromSdkDevTokenPage, fromSdkTokenHolderPage, fromSdkTokenTopTraderPage, fromSendTxResult, fromSwapRoute, fromTokenCandle, fromTokenCreatorDTO, fromTokenDTO, fromTokenHolderPage, fromTokenLiquidityDTO, fromTokenMarketDataDTO, fromTokenMetadataSubscribed, fromTokenPage, fromTokenSecurity, fromTokenStatsDTO, fromTokenSubscribed, fromTradePage, fromWalletNetWorthByTokens, fromWalletPnlSummary, fromWalletPortfolios, fromWsActivity, fromWsCandle, fromWsRankingPoolToSubscribed, fromWsRankingTokenListToSubscribed, 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 p=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 ks(e){return e instanceof Error&&e.code==="NotImplemented"}var ze="https://api.chainstream.io";async function Ve(e){return typeof e=="string"?e:Promise.resolve(e.getToken())}function qe(e,s,t){if(t!=null){if(t instanceof Date){e.set(s,String(t.getTime()));return}e.set(s,String(t));}}function Ge(e,s){let t=e.endsWith("/")?e.slice(0,-1):e,n=s.startsWith("/")?s:`/${s}`;return t+n}async function $e(e,s,t){let n=new URL(Ge(e.baseUrl,s)),o=new URLSearchParams;for(let[c,T]of Object.entries(t))qe(o,c,T);let a=o.toString();a&&(n.search=a);let u=await Ve(e.accessToken),i=await fetch(n.toString(),{method:"GET",headers:{Accept:"application/json",Authorization:`Bearer ${u}`}});if(!i.ok){let c=await i.text().catch(()=>"");throw new Error(`[phase3Http] ${i.status} ${i.statusText} ${n.pathname}: ${c}`)}return await i.json()}function te(e,s){return {baseUrl:s??ze,accessToken:e}}function ne(e,s,t,n){return $e(e,`/v2/wallet/${encodeURIComponent(s)}/${encodeURIComponent(t)}/pnl-details`,n)}function r(e){return e??void 0}function d(e){switch(e){case types.Chain.ETHEREUM:return sdk.ChainSymbol.eth;case types.Chain.BINANCE:return sdk.ChainSymbol.bsc;case types.Chain.SOLANA:return sdk.ChainSymbol.sol}throw new Error(`Unsupported chain: ${e}`)}function V(e){switch(e){case "1s":return sdk.Resolution["1s"];case "15s":return sdk.Resolution["15s"];case "30s":return sdk.Resolution["30s"];case "1m":return sdk.Resolution["1m"];case "5m":return sdk.Resolution["5m"];case "15m":return sdk.Resolution["15m"];case "30m":case "1h":return sdk.Resolution["1h"];case "4h":return sdk.Resolution["4h"];case "12h":return sdk.Resolution["12h"];case "24h":return sdk.Resolution["1d"]}}function Qe(e){return e}function ie(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 q(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 le(e){return e.filter(s=>["gt","gte","lt","lte","between"].indexOf(s.operator)>=0).map(s=>{let t={field:q(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 D(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 Ke(e){return {address:e.address??void 0,share:e.share??void 0,isVerified:e.isVerified??void 0}}function f(e){return {chain:D(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(Ke),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?G(e.stats):void 0,marketData:e.marketData?$(e.marketData):void 0,createdAt:e.tokenCreatedAt?new Date(e.tokenCreatedAt):void 0}}function G(e){return {"1m":P(e,"1m"),"5m":P(e,"5m"),"15m":P(e,"15m"),"30m":P(e,"30m"),"1h":P(e,"1h"),"4h":P(e,"4h"),"24h":P(e,"24h")}}function S(e){return e===void 0?void 0:parseInt(e)}function P(e,s){let t=e.periods?.[s];return t?{buys:S(t.buys),sells:S(t.sells),trades:S(t.trades),buyers:S(t.buyers),sellers:S(t.sellers),traders:S(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 Nt(e){return {poolAddress:e.poolAddress,programAddress:e.programAddress??void 0,protocolFamily:e.protocolFamily??void 0,protocolName:e.protocolName??void 0,tvl:e.tvlInSol??void 0,tvlInUsd:e.tvlInUsd??void 0}}function de(e){if(e)return {image:"image"in e?e.image??void 0:void 0,programAddress:e.programAddress??void 0,protocolFamily:e.protocolFamily??void 0,protocolName:e.protocolName??void 0}}function ue(e){if(e)return {poolAddress:e.poolAddress,tokenAAddress:e.tokenAAddress,tokenALiquidityInUsd:e.tokenALiquidityInUsd,tokenBAddress:e.tokenBAddress,tokenBLiquidityInUsd:e.tokenBLiquidityInUsd}}function ce(e,s){return {chain:e,poolAddress:s.poolAddress,tokenAAddress:s.tokenAAddress,tokenBAddress:s.tokenBAddress,createdAt:s.createdAtMs?new Date(s.createdAtMs):void 0,dex:de(s.dex),token:s.token?f(s.token):void 0,balance:ue(s.balance)}}function Je(e){if(e.length!==0)return e.reduce((s,t)=>({...s,...Object.fromEntries(Object.entries(t).filter(([,n])=>n!==void 0)),stats:t.stats??s.stats,marketData:t.marketData?{...s.marketData,...t.marketData}:s.marketData,socialMedias:t.socialMedias?{...s.socialMedias,...t.socialMedias}:s.socialMedias,launchedFrom:t.launchedFrom?{...s.launchedFrom,...t.launchedFrom}:s.launchedFrom,migratedTo:t.migratedTo?{...s.migratedTo,...t.migratedTo}:s.migratedTo}),e[0])}function me(e,s){let t=s.token?Je(Q(e,s.token)):void 0;return {chain:e,poolAddress:s.poolAddress,tokenAAddress:s.tokenAAddress,tokenBAddress:s.tokenBAddress,createdAt:s.createdAtMs?new Date(s.createdAtMs):void 0,dex:de(s.dex),token:t,balance:ue(s.balance)}}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 Te(e,s){return {open:e.open,close:e.close,high:e.high,low:e.low,volume:e.volume,volumeInTokenAmount:r(e.volumeInTokenAmount),trades:e.trades??void 0,resolution:s,timestamp:new Date(e.timestamp)}}function Ye(e){return e==="1d"?"24h":e}function ke(e){let s=e;return {hasTransferFee:s.hasTransferFee,isTransferFeeUpgradable:s.isTransferFeeUpgradable,isTransferable:s.isTransferable,isFreezable:s.isFreezable,isClosable:s.isClosable}}var Xe=new Set([types.Chain.SOLANA,types.Chain.SOLANA_TESTNET,types.Chain.SOLANA_DEVNET]),Ze="0x0000000000000000000000000000000000000000",es="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";function ss(e){return e===utils.SOLANA_TOKENS.native.address?utils.SOLANA_TOKENS.wrapped.address:e}function ts(e){return e.toLowerCase()===Ze.toLowerCase()?es:e}function ns(e){return e.dex==="jupiter"?"jupiter":e.dex==="kyberswap"?"kyberswap":Xe.has(e.chain)?"jupiter":"kyberswap"}function z(e,s){return e==="jupiter"?ss(s):e==="kyberswap"?ts(s):s}function _t(e,s){return z(e,s)}function ge(e){let s=ns(e),t=z(s,e.input),n=z(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:n,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 fe(e){return {signedTx:e.serializedTx}}function x(e){return e==null?void 0:new Date(e)}function I(e){if(e!=null)return new Date(e<1e12?e*1e3:e)}function W(e){if(!(!e||e.length===0))return e}function be(e){return {accountAddress:r(e.accountAddress),address:e.walletAddress,accuAmount:r(e.accuAmount),accuCost:r(e.accuCost),addrType:r(e.addrType),addressLabel:r(e.addressLabel),amount:e.amount,amountInUsd:e.amountInUsd,amountInNative:r(e.amountInNative),ratio:e.percentage,avgBuyPriceUsd:r(e.avgBuyPriceUsd),avgCostUsd:r(e.avgCostUsd),avgSellPriceUsd:r(e.avgSellPriceUsd),buyAmountCur:r(e.buyAmountCur),buyVolumeNative:r(e.buyVolumeNative),buyVolumeUsd:r(e.buyVolumeUsd),createdAt:I(e.createdAt),endHoldingAt:I(e.endHoldingAt),exchange:r(e.exchange),firstBuyTime:I(e.firstBuyTime),historyBoughtCost:r(e.historyBoughtCost),historyBoughtFee:r(e.historyBoughtFee),historySoldFee:r(e.historySoldFee),historySoldIncome:r(e.historySoldIncome),historyTransferInAmount:r(e.historyTransferInAmount),historyTransferInCost:r(e.historyTransferInCost),historyTransferOutAmount:r(e.historyTransferOutAmount),historyTransferOutFee:r(e.historyTransferOutFee),historyTransferOutIncome:r(e.historyTransferOutIncome),isClosed:r(e.isClosed),isNew:r(e.isNew),isTransferIn:r(e.isTransferIn),lastActiveAt:I(e.lastActiveAt),lastBlock:r(e.lastBlock),lossCount:r(e.lossCount),makerTokenTags:r(e.makerTokenTags),nativeBalance:r(e.nativeBalance),netflowAmount:r(e.netflowAmount),netflowAmountUsd:r(e.netflowAmountUsd),netflowUsd:r(e.netflowUsd),positionCostUsd:r(e.positionCostUsd),realizedPnlRatio:r(e.realizedPnlRatio),realizedProfit:r(e.realizedProfit),roi:r(e.roi),sellAmountCur:r(e.sellAmountCur),sellAmountPercentage:r(e.sellAmountPercentage),sellVolumeNative:r(e.sellVolumeNative),sellVolumeUsd:r(e.sellVolumeUsd),startHoldingAt:I(e.startHoldingAt),tags:W(e.tags),tokenTransferIn:r(e.tokenTransferIn),tokenTransferOut:r(e.tokenTransferOut),totalBuyCount:r(e.totalBuyCount),totalCostUsd:r(e.totalCostUsd),totalProfit:r(e.totalProfit),totalSellCount:r(e.totalSellCount),transferInAmount7d:r(e.transferInAmount7d),transferInCount:r(e.transferInCount),transferOutAmount7d:r(e.transferOutAmount7d),transferOutCount:r(e.transferOutCount),unrealizedPnlRatio:r(e.unrealizedPnlRatio),unrealizedProfit:r(e.unrealizedProfit),walletTagV2:r(e.walletTagV2),winCount:r(e.winCount)}}function Lt(e){return {startCursor:r(e.startCursor),endCursor:r(e.endCursor),hasPrev:e.hasPrev??false,hasNext:e.hasNext??false,data:e.data.map(s=>be(s))}}function ye(e){return {startCursor:r(e.startCursor),endCursor:r(e.endCursor),hasPrev:e.hasPrev??false,hasNext:e.hasNext??false,data:e.data.map(s=>be(s))}}function he(e){return {startCursor:r(e.startCursor),endCursor:r(e.endCursor),hasPrev:e.hasPrev??false,hasNext:e.hasNext??false,data:e.data.map(s=>({address:s.walletAddress,amount:s.amount,amountInUsd:s.amountInUsd,tags:W(s.tags),lastActiveAt:x(s.lastActiveAt),startHoldingAt:x(s.startHoldingAt),averageBuyPriceInUsd:r(s.averageBuyPriceInUsd),averageSellPriceInUsd:r(s.averageSellPriceInUsd),buyAmountCur:r(s.buyAmountCur),sellAmountCur:r(s.sellAmountCur),totalBuyAmountInUsd:r(s.totalBuyAmountInUsd),totalSellAmountInUsd:r(s.totalSellAmountInUsd),realizedPnl:r(s.realizedPnl),totalRealizedPnlInUsd:r(s.totalRealizedPnlInUsd),unrealizedPnl:r(s.unrealizedPnl),unrealizedPnlInUsd:r(s.unrealizedPnlInUsd),roi:r(s.roi),totalPnlInUsd:r(s.totalPnlInUsd),totalBuyCount:r(s.totalBuyCount),totalSellCount:r(s.totalSellCount),transferIn:r(s.transferIn),transferInCount:r(s.transferInCount),transferOutCount:r(s.transferOutCount)}))}}function Ae(e){let s=e;return {startCursor:r(e.startCursor),endCursor:r(e.endCursor),hasPrev:e.hasPrev??false,hasNext:e.hasNext??false,data:e.data.map(f),extra:r(s.countsByProtocols)}}function Pe(e){return {serializedTx:e.serializedTx,recentBlockhash:r(e.recentBlockhash),lastValidBlockHeight:r(e.lastValidBlockHeight),plans:[],extra:e.routeInfo}}function Ie(e){return {blockhash:e.blockhash,lastValidBlockHeight:e.lastValidBlockHeight}}function Ce(e){return {txHash:e.signature,extra:{jobId:e.jobId,elapsedTime:e.elapsedTime}}}function Se(e,s){let t=(s.data??[]).map(n=>({chain:D(n.chain),address:n.tokenAddress,name:n.name,symbol:n.symbol,image:r(n.logoUri),priceInUsd:n.priceInUsd,priceInNative:n.priceInNative,amount:n.amount,amountInUsd:n.valueInUsd,amountInNative:n.valueInNative,decimals:n.decimals}));return {chain:t[0]?.chain??e,address:s.walletAddress,balanceInUsd:s.totalValueInUsd,balanceInNative:s.totalValueInNative,startCursor:r(s.startCursor),endCursor:r(s.endCursor),hasPrev:s.hasPrev,hasNext:s.hasNext,portfolios:t}}function Ue(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:r(t.winRate),buyAmountInUsd:r(t.buyAmountInUsd),sellAmountInUsd:r(t.sellAmountInUsd),totalCostInUsd:r(t.totalCostInUsd),realizedProfitInUsd:r(t.realizedProfitInUsd),realizedProfitRatio:r(t.realizedProfitRatio),unrealizedProfitInUsd:r(t.unrealizedProfitInUsd),unrealizedProfitRatio:r(t.unrealizedProfitRatio),totalProfitInUsd:r(t.totalProfitInUsd),totalProfitRatio:r(t.totalProfitRatio),avgProfitPerTradeInUsd:r(t.avgProfitPerTradeInUsd)}}function ve(e,s){return {chain:e,address:s.tokenAddress,name:s.name??"",symbol:s.symbol??"",image:r(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,transferInAmountInUsd:r(s.transferInAmountInUsd),transferInCount:s.transferInCount!=null?Number(s.transferInCount):void 0,transferOutAmountInUsd:r(s.transferOutAmountInUsd),transferOutCount:s.transferOutCount!=null?Number(s.transferOutCount):void 0,isClosed:s.isClosed,firstBuyAt:x(s.firstBuyAt),lastSellAt:x(s.lastSellAt)}}function j(e,s,t){let n=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:r(t.summary.winRate),buyAmountInUsd:r(t.summary.buyAmountInUsd),sellAmountInUsd:r(t.summary.sellAmountInUsd),totalCostInUsd:t.summary.totalCostInUsd,realizedProfitInUsd:r(t.summary.realizedProfitInUsd),unrealizedProfitInUsd:r(t.summary.unrealizedProfitInUsd),totalProfitInUsd:r(t.summary.totalProfitInUsd),totalProfitRatio:r(n.totalProfitRatio),avgProfitPerTradeInUsd:r(t.summary.avgProfitPerTradeInUsd),transferInAmountInUsd:r(t.summary.transferInAmountInUsd),transferInCount:t.summary.transferInCount!=null?Number(t.summary.transferInCount):void 0,transferOutAmountInUsd:r(t.summary.transferOutAmountInUsd),transferOutCount:t.summary.transferOutCount!=null?Number(t.summary.transferOutCount):void 0,startCursor:r(t.startCursor),endCursor:r(t.endCursor),hasPrev:t.hasPrev,hasNext:t.hasNext,portfolios:t.data.map(o=>ve(e,o))}}function Re(e,s){return (s.data??[]).map(t=>({chain:D(t.chain),address:t.tokenAddress,name:t.name,symbol:t.symbol,image:r(t.logoUri),priceInUsd:t.priceInUsd,priceInNative:t.priceInNative,amount:t.amount,amountInUsd:t.valueInUsd,amountInNative:t.valueInNative,decimals:t.decimals,isActive:t.isActive,avgCostUsd:r(t.avgCostUsd),lastActiveAt:x(t.lastActiveAt),walletTokenTags:W(t.walletTokenTags)}))}function we(e,s){return s.data.map(t=>ve(e,t))}function He(e){return {startCursor:r(e.startCursor),endCursor:r(e.endCursor),hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(pe)}}function pe(e){let s=e.type.toLowerCase()==="buy";return {chain:D(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:r(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:r(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:r(e.dexProgramAddress),protocolFamily:r(e.dexProtocolFamily),image:r(e.dexImage)},poolAddress:r(e.poolAddress),status:e.status??"success",time:I(e.blockTimestamp)??new Date(0),gasFee:e.gasFee!=null?String(e.gasFee):void 0,traderTags:W(e.traderTags)}}function xe(e){return {startCursor:r(e.startCursor),endCursor:r(e.endCursor),hasPrev:e.hasPrev??false,hasNext:e.hasNext??false,data:e.data.map(pe)}}function Ft(e){return {startCursor:r(e.startCursor),endCursor:r(e.endCursor),hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(rs)}}function rs(e){let s=e.type.toLowerCase().replace(/ /g,"_"),t=s==="buy",n=I(e.blockTimestamp)??new Date(0);return {chain:D(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:r(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:r(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:r(e.dexProgramAddress),protocolFamily:r(e.dexProtocolFamily),image:r(e.dexImage)},poolAddress:r(e.poolAddress),status:e.status??"success",time:n,gasFee:e.gasFee!=null?String(e.gasFee):void 0,traderTags:W(e.traderTags)}}function De(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 O(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 We(e){return {open:e.open,close:e.close,high:e.high,low:e.low,volume:e.volume,resolution:Ye(e.resolution),timestamp:new Date(e.time)}}function os(e){let s=["1m","5m","15m","30m","1h","4h","24h"],t=e,n={};for(let o of s){let a=t[`buys${o}`],u=t[`sells${o}`],i=t[`buyers${o}`],c=t[`sellers${o}`],T=t[`buyVolumeInUsd${o}`],C=t[`sellVolumeInUsd${o}`],R=t[`trades${o}`],w=t[`price${o}`],h=t[`openInUsd${o}`],H=t[`closeInUsd${o}`];if(!(a!==void 0||u!==void 0||R!==void 0||w!==void 0))continue;let E=R??(a!==void 0&&u!==void 0?a+u:void 0),Fe=i!==void 0&&c!==void 0?i+c:void 0,Me=T!==void 0&&C!==void 0?new utils.SafeBigNumber(T).plus(C).toString():void 0,Ee=h&&H&&new utils.SafeBigNumber(h).gt(0)?new utils.SafeBigNumber(H).minus(h).div(h).toString():void 0;n[o]={buys:a,sells:u,trades:E,buyers:i,sellers:c,traders:Fe,buyVolumesInUsd:T,sellVolumesInUsd:C,volumesInUsd:Me,openPriceInUsd:h,closePriceInUsd:H,priceInUsd:w??H,priceChange:Ee};}return n}function as(e){return {priceInUsd:e.price}}function N(e,s){return {chain:e,address:s.address,stats:os(s),marketData:as(s)}}function Q(e,s){let t=[];return s.metadata&&t.push(O(e,s.metadata)),s.stat&&t.push(N(e,s.stat)),s.holder&&t.push(L(e,s.holder.tokenAddress,s.holder)),s.supply&&t.push(_(e,s.supply.tokenAddress,s.supply)),s.bondingCurve&&t.push(F(e,s.bondingCurve)),t.filter(n=>n.address)}function _(e,s,t){return {chain:e,address:s,marketData:{totalSupply:t.supply,marketCapInUsd:t.marketCapInUsd}}}function L(e,s,t){return {chain:e,address:s,marketData:is(t)}}function K(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 F(e,s){return {chain:e,address:s.tokenAddress??"",migrateProgress:s.progressRatio?new utils.SafeBigNumber(s.progressRatio).shiftedBy(2).toString():void 0}}function Be(e,s,t){return {chain:e,address:s,liquidities:[{poolAddress:t.poolAddress,tvlInUsd:t.liquidityInUsd,tvl:t.liquidityInNative}]}}function Oe(e,s,t){return {chain:e,address:s,marketData:{tvlInUsd:t.liquidityInUsd,tvl:t.liquidityInNative}}}function is(e){return {holders:e.holders,top10Holdings:e.top10HoldersAmount,top10HoldingsRatio:e.top10HoldersRatio,top50Holdings:e.top50HoldersAmount,top50HoldingsRatio:e.top50HoldersRatio,top100Holdings:e.top100HoldersAmount,top100HoldingsRatio:e.top100HoldersRatio,bluechipHolders:e.bluechipHolders===void 0?void 0:e.bluechipHolders,bluechipHoldings:e.bluechipHoldersAmount,bluechipHoldingsRatio:e.bluechipHoldersRatio,kolHolders:e.kolHolders===void 0?void 0:e.kolHolders,kolHoldings:e.kolHoldersAmount,kolHoldingsRatio:e.kolHoldersRatio,proHolders:e.proHolders===void 0?void 0:e.proHolders,proHoldings:e.proHoldersAmount,proHoldingsRatio:e.proHoldersRatio,insiderHolders:e.insiderHolders===void 0?void 0:e.insiderHolders,insiderHoldings:e.insiderHoldersAmount,insiderHoldingsRatio:e.insiderHoldersRatio,devHolders:e.devHolders===void 0?void 0:e.devHolders,devHoldings:e.devHoldersAmount,devHoldingsRatio:e.devHoldersRatio,sniperHolders:e.sniperHolders===void 0?void 0:e.sniperHolders,sniperHoldings:e.sniperHoldersAmount,sniperHoldingsRatio:e.sniperHoldersRatio,freshHolders:e.freshHolders===void 0?void 0:e.freshHolders,freshHoldings:e.freshHoldersAmount,freshHoldingsRatio:e.freshHoldersRatio,bundleHolders:e.bundleHolders===void 0?void 0:e.bundleHolders,bundleHoldings:e.bundleHoldersAmount,bundleHoldingsRatio:e.bundleHoldersRatio,sandwichHolders:e.sandwichHolders===void 0?void 0:e.sandwichHolders,sandwichHoldings:e.sandwichHoldersAmount,sandwichHoldingsRatio:e.sandwichHoldersRatio}}function J(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,priceInUsd:B(s.sellAmountInUsd,s.sellAmount)},to:{address:s.buyTokenAddress,symbol:s.buyTokenSymbol,name:s.buyTokenName,amount:s.buyAmount,amountInUsd:s.buyAmountInUsd,priceInUsd:B(s.buyAmountInUsd,s.buyAmount)},status:"success",time:new Date(s.timestamp)}}function Y(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,priceInUsd:B(s.sellAmountInUsd,s.sellAmount)},to:{address:s.buyTokenAddress,symbol:s.buyTokenSymbol,name:s.buyTokenName,amount:s.buyAmount,amountInUsd:s.buyAmountInUsd,priceInUsd:B(s.buyAmountInUsd,s.buyAmount)},status:"success",time:new Date(s.timestamp)}}function B(e,s){if(e==null||e===""||s==null||s==="")return;let t=new utils.SafeBigNumber(s);if(t.gt(0))return new utils.SafeBigNumber(e).div(t).toString()}function us(e,s="desc"){if(e)return e==="totalUsd"?s==="asc"?sdk.ActivitySortBy.totalUsdAsc:sdk.ActivitySortBy.totalUsdDesc:s==="asc"?sdk.ActivitySortBy.timestampAsc:sdk.ActivitySortBy.timestampDesc}function cs(e){switch(e){case "amountPercentage":return sdk.HolderSortBy.amountPercentage;case "holdingUsd":return sdk.HolderSortBy.holdingUsd;case "usdValue":return sdk.HolderSortBy.usdValue;case "totalPnl":return sdk.HolderSortBy.totalPnl;case "lastActiveAt":return sdk.HolderSortBy.lastActiveAt;case "realizedPnl":return sdk.HolderSortBy.realizedPnl;case "unrealizedPnl":return sdk.HolderSortBy.unrealizedPnl;case "buyVolume":return sdk.HolderSortBy.buyVolume;case "sellVolume":return sdk.HolderSortBy.sellVolume;case "netflowUsd":return sdk.HolderSortBy.netflowUsd;case "createdAt":return sdk.HolderSortBy.createdAt;default:return}}function ms(e){return e?e:void 0}var Le=class e{constructor(s,t){this.accessToken=s;this.options=t;this._client=new sdk.ChainStreamClient(this.accessToken,this.options),this._phase3=te(this.accessToken,this.options?.serverUrl);}_client;_phase3;async getToken(s,t){let n=await this._client.token.getToken(d(s),t);return f(n)}async getTokens(s,t){return (await this._client.token.getTokens(d(s),{tokenAddresses:t.join(",")})).map(f)}async getTokenCandles(s,t,n,o){return (await this._client.token.getCandles(d(s),t,{resolution:V(n),from:o?.after?.getTime(),to:o?.before?.getTime(),limit:o?.limit})).map(u=>Te(u,n))}async getTokenSecurity(s,t){let n=await this._client.token.getSecurity(d(s),t);return ke(n)}async getTokenStats(s,t){let n=await this._client.token.getStats(d(s),t);return G(n)}async getTokenHolders(s,t,n){let o=await this._client.token.getHolders(d(s),t,{cursor:n?.cursor,limit:n?.limit,direction:n?.direction,sortBy:cs(n?.sortBy),sortDirection:ms(n?.sortDirection)});return ye(o)}async getTokenTopTraders(s,t,n){let o=await this._client.token.getTokenTopTraders(d(s),t,{cursor:n?.cursor,limit:n?.limit,direction:n?.direction,sortBy:n?.sortBy==="totalPnl"||n?.sortBy==="profit"?sdk.TraderSortBy.totalPnl:n?.sortBy==="realizedPnl"?sdk.TraderSortBy.realizedPnl:n?.sortBy==="unrealizedPnl"?sdk.TraderSortBy.unrealizedPnl:n?.sortBy==="buyVolume"?sdk.TraderSortBy.buyVolume:n?.sortBy==="sellVolume"?sdk.TraderSortBy.sellVolume:n?.sortBy==="lastActiveAt"?sdk.TraderSortBy.lastActiveAt:n?.sortBy==="netflowUsd"?sdk.TraderSortBy.netflowUsd:n?.sortBy==="createdAt"?sdk.TraderSortBy.createdAt:void 0,sortDirection:n?.sortDirection?n.sortDirection:void 0,tag:n?.tag});return he(o)}async getTokenMarketData(s,t){let n=await this._client.token.getMarketData(d(s),t);return $(n)}async getNewTokens(s,t){return (await this._client.ranking.getNewTokens(d(s),this._buildRankingParams(t))).map(f)}async getNewPools(s,t){return (await this._client.ranking.getRankingPools(d(s),sdk.RankingPoolType["new-pool"])).map(o=>ce(s,o))}async getFinalStretchTokens(s,t){return (await this._client.ranking.getFinalStretchTokens(d(s),this._buildRankingParams(t))).map(f)}async getMigratedTokens(s,t){return (await this._client.ranking.getMigratedTokens(d(s),this._buildRankingParams(t))).map(f)}async getTrendingTokens(s,t,n){return (await this._client.ranking.getHotTokens(d(s),t,this._buildRankingParams(n))).map(f)}async getStockTokens(s,t){return (await this._client.ranking.getStocksTokens(d(s),this._buildRankingParams(t))).map(f)}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?ie(s.sortBy):void 0,sort:s?.sortDirection});return Ae(t)}async swapRoute(s){let t=await this._client.dex.route(d(s.chain),ge(s));return Pe(t)}async getLatestBlock(s){let t=await this._client.blockchain.getLatestBlock(d(s.chain));return Ie(t)}async sendTx(s){let t=await this._client.transaction.send(d(s.chain),fe(s));return Ce(t)}async checkTxSuccess(s,t,n){let{success:o}=await this._client.waitForJob(t,n);return o}async getWalletPortfolios(s,t,n){let o=e._CHAIN_TO_BALANCE_PARAM[s];if(o&&this.options?.nativeBalanceApiUrl)return this._getWalletPortfoliosFromBalanceApi(s,o,t);let a=await this._client.wallet.getNetWorth(d(s),t,{cursor:n?.cursor,limit:n?.limit??100});return Se(s,a)}async getWalletPnl(s,t,n){let o=await this._client.wallet.getPnl(d(s),t,n?{resolution:n}:void 0);return Ue(s,t,o)}async getWalletPortfolioPnls(s,t,n){if(n?.resolution!=="90d"){let a=await this._client.wallet.getPnlDetails(d(s),t,{resolution:n?.resolution==="7d"?sdk.PnlResolution["7d"]:sdk.PnlResolution["30d"],positionState:n?.positionState==="closed"?sdk.PositionState.closed:n?.positionState==="all"?sdk.PositionState.all:n?.positionState==="open"?sdk.PositionState.open:void 0,sortBy:n?.sortBy==="realizedPnl"?sdk.PnlSortBy.realizedPnl:n?.sortBy==="unrealizedPnl"?sdk.PnlSortBy.unrealizedPnl:n?.sortBy==="totalPnl"?sdk.PnlSortBy.totalPnl:void 0,cursor:n?.cursor,limit:n?.limit??100,direction:n?.direction});return j(s,t,a)}let o=await ne(this._phase3,d(s),t,{resolution:n?.resolution??"30d",positionState:n?.positionState,sortBy:n?.sortBy,cursor:n?.cursor,limit:n?.limit??100,direction:n?.direction});return j(s,t,o)}async getWalletPortfoliosByTokens(s,t,n){let o=e._CHAIN_TO_BALANCE_PARAM[s];if(o&&this.options?.nativeBalanceApiUrl)return this._getPortfoliosFromBalanceApi(s,o,t,n);let a=await this._client.wallet.getNetWorthByTokens(d(s),t,{tokenAddresses:n.join(",")});return Re(s,a)}async getWalletPortfolioPnlsByTokens(s,t,n){let o=await this._client.wallet.getPnlByToken(d(s),t,{tokenAddresses:n.join(",")});return we(s,o)}async getWalletTrades(s,t,n){return this._getTrades(s,{walletAddress:t},n)}async getTokenTrades(s,t,n){return this._getTrades(s,{tokenAddress:t},n)}async getWalletActivities(s,t,n){return this._getActivities(s,{walletAddress:t},n)}async getTokenActivities(s,t,n){return this._getActivities(s,{tokenAddress:t},n)}async getPresignedUploadUrl(){return (await this._client.ipfs.presign()).presignUrl}async getWalletLimitOrders(s,t,n){throw new p("Client.getWalletLimitOrders","no limit-orders endpoint on the backend yet")}async getTokensByCreator(s,t,n){throw new p("Client.getTokensByCreator","no creator-index endpoint on the backend yet")}subscribeToken(s,t,n){return this.subscribeTokens(s,[t],n)}subscribeTokens(s,t,n){let o=d(s),a=Array.from(new Set(t.map(i=>i.trim()).filter(Boolean)));if(a.length===0)return {unsubscribe:()=>{}};let u=this._client.stream.batchSubscribe(()=>a.flatMap(i=>[this._client.stream.subscribeTokenStats({chain:o,tokenAddress:i,callback:c=>n([N(s,c)])}),this._client.stream.subscribeTokenHolders({chain:o,tokenAddress:i,callback:c=>n([L(s,i,c)])}),this._client.stream.subscribeTokenSupply({chain:o,tokenAddress:i,callback:c=>n([_(s,i,c)])}),this._client.stream.subscribeTokenLiquidity({chain:o,tokenAddress:i,callback:c=>n([K(s,i,c)])}),this._client.stream.subscribeTokenMaxLiquidity({chain:o,tokenAddress:i,callback:c=>n([Be(s,i,c)])}),this._client.stream.subscribeTokenTotalLiquidity({chain:o,tokenAddress:i,callback:c=>n([Oe(s,i,c)])})]));return {unsubscribe:()=>{let i=this._client.stream;if(i.batchUnsubscribe){i.batchUnsubscribe(u);return}u.forEach(c=>c.unsubscribe());}}}subscribeTokenCandles(s,t,n,o){return this._client.stream.subscribeTokenCandles({chain:d(s),tokenAddress:t,resolution:V(n),callback:a=>o([We(a)])})}subscribeWalletPnl(s,t,n){return this._client.stream.subscribeWalletPnlList({chain:d(s),walletAddress:t,callback:o=>n(o.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,n){return this._client.stream.subscribeWalletBalance({chain:d(s),walletAddress:t,callback:o=>n(o.map(a=>({chain:s,walletAddress:a.walletAddress,tokenAddress:a.tokenAddress,priceInUsd:a.tokenPriceInUsd,amount:a.balance})))})}subscribeWalletPortfolioPnls(s,t,n){return this._client.stream.subscribeWalletPnl({chain:d(s),walletAddress:t,callback:o=>n([{chain:s,walletAddress:o.walletAddress,tokenAddress:o.tokenAddress,openTime:o.opentime?new Date(o.opentime):void 0,closeTime:o.closetime?new Date(o.closetime):void 0,buys:o.buyCount,buyVolumes:o.buyAmount,buyVolumesInUsd:o.buyAmountInUsd,buyAvgPriceInUsd:o.averageBuyPriceInUsd,sells:o.sellCount,sellVolumes:o.sellAmount,sellVolumesInUsd:o.sellAmountInUsd,sellAvgPriceInUsd:o.averageSellPriceInUsd,realizedProfitInUsd:o.realizedProfitInUsd,realizedProfitRatio:o.realizedProfitRatio,unrealizedProfitInUsd:o.unrealizedProfitInUsd,unrealizedProfitRatio:o.unrealizedProfitRatio,totalProfitInUsd:o.totalRealizedProfitInUsd,totalProfitRatio:o.totalRealizedProfitRatio}])})}subscribeWalletTrades(s,t,n){return this._client.stream.subscribeWalletTrade({chain:d(s),walletAddress:t,callback:o=>n([J(s,o)])})}subscribeTokenTrades(s,t,n){return this._client.stream.subscribeTokenTrade({chain:d(s),tokenAddress:t,callback:o=>n([J(s,o)])})}subscribeWalletActivities(s,t,n){return this._client.stream.subscribeWalletTrade({chain:d(s),walletAddress:t,callback:o=>n([Y(s,o)])})}subscribeTokenActivities(s,t,n){return this._client.stream.subscribeTokenTrade({chain:d(s),tokenAddress:t,callback:o=>n([Y(s,o)])})}subscribeNewTokens(s,t){let n=d(s),o=this._subscribeRankingTokens(s,sdk.WsChannelType.New,t),a=[this._client.stream.subscribeNewToken({chain:n,callback:u=>t([De(s,u)])}),this._client.stream.subscribeNewTokensMetadata({chain:n,callback:u=>t(u.map(i=>O(s,i)))}),this._client.stream.subscribeRankingTokensBondingCurve({chain:n,callback:u=>t(u.map(i=>F(s,i)))})];return {unsubscribe:()=>{o.unsubscribe(),a.forEach(u=>u.unsubscribe());}}}subscribeNewTokensMetadata(s,t){return this._client.stream.subscribeNewTokensMetadata({chain:d(s),callback:n=>t(n.map(o=>O(s,o)))})}subscribeNewPools(s,t){return this._client.stream.subscribeNewPool({chain:d(s),callback:n=>t([me(s,n)])})}subscribeTrendingTokens(s,t){return this._subscribeRankingTokenList(s,sdk.WsRankingType.HOT,t)}subscribeMigratedTokens(s,t){return this._subscribeRankingTokens(s,sdk.WsChannelType.MIGRATED,t)}subscribeFinalStretchTokens(s,t){let n=d(s),o=this._subscribeRankingTokens(s,sdk.WsChannelType.FINAL_STRETCH,t),a=this._client.stream.subscribeRankingTokensBondingCurve({chain:n,callback:u=>t(u.map(i=>F(s,i)))});return {unsubscribe:()=>{o.unsubscribe(),a.unsubscribe();}}}subscribeStockTokens(s,t){return this._subscribeRankingTokenList(s,sdk.WsRankingType.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,n,o){let a=this.options.nativeBalanceApiUrl,u=new URLSearchParams({chain:t,address:n});o?.length&&u.set("tokens",o.join(","));let i=await fetch(`${a}?${u.toString()}`);if(!i.ok)throw new Error(`Balance API returned ${i.status}`);return (await i.json()).balances.map(T=>{let C=BigInt(T.balance),R=T.decimals,w=BigInt(10)**BigInt(R),h=C/w,se=(C%w).toString().padStart(R,"0"),E=`${h}.${se}`.replace(/\.?0+$/,"")||"0";return {chain:s,address:T.address,name:"",symbol:"",priceInUsd:"0",priceInNative:"0",amount:E,amountInUsd:"0",amountInNative:"0",decimals:T.decimals}})}async _getWalletPortfoliosFromBalanceApi(s,t,n){let o=await this._getPortfoliosFromBalanceApi(s,t,n),a=e._NATIVE_TOKEN_ADDRESS[s],u=a?o.find(i=>i.address===a):void 0;return {chain:s,address:n,balanceInUsd:"0",balanceInNative:u?.amount??"0",portfolios:o,hasPrev:false,hasNext:false}}_buildRankingParams(s){return {sortBy:s?.sortBy?q(s.sortBy):void 0,sortDirection:s?.sortDirection?s.sortDirection:void 0,rangeFilters:s?.filters?le(s.filters):void 0,launchpadPlatform:s?.filters?Ts(s.filters):void 0,searchKeywords:s?.keywords,excludeKeywords:s?.excludeKeywords}}async _getTrades(s,t,n){let o=await this._client.trade.getTrades(d(s),{...t,cursor:n?.cursor,limit:n?.limit,direction:n?.direction,beforeTimestamp:n?.before?.getTime(),afterTimestamp:n?.after?.getTime(),beforeBlockHeight:n?.beforeBlockHeight,afterBlockHeight:n?.afterBlockHeight,poolAddress:n?.poolAddress,type:n?.type?n.type.toUpperCase():void 0});return He(o)}async _getActivities(s,t,n){let o=await this._client.trade.getActivities(d(s),{...t,cursor:n?.cursor,limit:n?.limit,direction:n?.direction,beforeTimestamp:n?.before?.getTime(),afterTimestamp:n?.after?.getTime(),beforeBlockHeight:n?.beforeBlockHeight,afterBlockHeight:n?.afterBlockHeight,poolAddress:n?.poolAddress,type:n?.type?n.type.toUpperCase():void 0,sortBy:us(n?.sortBy,n?.sortDirection)});return xe(o)}_subscribeRankingTokens(s,t,n){let o=d(s),a=[this._client.stream.subscribeRankingTokensStats({chain:o,channelType:t,callback:u=>n(u.map(i=>N(s,i)))}),this._client.stream.subscribeRankingTokensHolders({chain:o,channelType:t,callback:u=>n(u.map(i=>L(s,i.tokenAddress,i)))}),this._client.stream.subscribeRankingTokensSupply({chain:o,channelType:t,callback:u=>n(u.map(i=>_(s,i.tokenAddress,i)))}),this._client.stream.subscribeRankingTokensLiquidity({chain:o,channelType:t,callback:u=>n(u.map(i=>K(s,i.tokenAddress,i)))})];return {unsubscribe:()=>a.forEach(u=>u.unsubscribe())}}_subscribeRankingTokenList(s,t,n){return this._client.stream.subscribeRankingTokensList({chain:d(s),ranking_type:t,callback:o=>{let a=o.flatMap(u=>Q(s,u));a.length>0&&n(a);}})}};function Ts(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 E=class extends Error{code="NotImplemented";constructor(n,s){super(s?`${n} is not yet implemented by the backend: ${s}`:`${n} is not yet implemented by the backend`),this.name="NotImplementedError";}};function Mn(e){return e instanceof Error&&e.code==="NotImplemented"}var nn="https://api.chainstream.io";async function sn(e){return typeof e=="string"?e:Promise.resolve(e.getToken())}function tn(e,n,s){if(s!=null){if(s instanceof Date){e.set(n,String(s.getTime()));return}e.set(n,String(s));}}function rn(e,n){let s=e.endsWith("/")?e.slice(0,-1):e,t=n.startsWith("/")?n:`/${n}`;return s+t}async function on(e,n,s){let t=new URL(rn(e.baseUrl,n)),o=new URLSearchParams;for(let[m,g]of Object.entries(s))tn(o,m,g);let a=o.toString();a&&(t.search=a);let l=await sn(e.accessToken),i=await fetch(t.toString(),{method:"GET",headers:{Accept:"application/json",Authorization:`Bearer ${l}`}});if(!i.ok){let m=await i.text().catch(()=>"");throw new Error(`[phase3Http] ${i.status} ${i.statusText} ${t.pathname}: ${m}`)}return await i.json()}function ue(e,n){return {baseUrl:n??nn,accessToken:e}}function ce(e,n,s,t){return on(e,`/v2/wallet/${encodeURIComponent(n)}/${encodeURIComponent(s)}/pnl-details`,t)}function r(e){return e??void 0}function X(e,...n){if(e)for(let s of n){let t=e[s];if(typeof t=="string"&&t.length>0)return t}}function Te(e){if(!e||typeof e!="object")return;let n=e,s=n.extra,t=n.extension;return X(n,"developerAddress","devAddress","creatorAddress","creator","deployerAddress","deployer","mintAuthority","updateAuthority")??X(s&&typeof s=="object"?s:void 0,"developerAddress","devAddress","creatorAddress","creator","deployerAddress","deployer")??X(t&&typeof t=="object"?t:void 0,"developerAddress","devAddress","creatorAddress","creator","deployerAddress","deployer")}function u(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 ee(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 dn(e){return e}function ge(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 ne(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 be(e){return e.filter(n=>["gt","gte","lt","lte","between"].indexOf(n.operator)>=0).map(n=>{let s={field:ne(n.field)};return ["gt","gte","between"].indexOf(n.operator)>=0&&(s.min=typeof n.value=="number"?new utils.SafeBigNumber(n.value).toString():n.value),["lt","lte","between"].indexOf(n.operator)>=0&&(s.max=typeof n.value=="number"?new utils.SafeBigNumber(n.value).toString():n.value),s})}function _(e){switch(e){case sdk.ChainSymbol.eth:return types.Chain.ETHEREUM;case sdk.ChainSymbol.bsc:return types.Chain.BINANCE;case sdk.ChainSymbol.sol:case "solana":return types.Chain.SOLANA}throw new Error(`Unsupported chain: ${e}`)}function ye(e){return {address:e.address??void 0,share:e.share??void 0,isVerified:e.isVerified??void 0}}function h(e){return {chain:_(e.chain),name:e.name,symbol:e.symbol,address:e.address,decimals:e.decimals,image:e.imageUrl??void 0,description:e.description??void 0,creators:e.tokenCreators?.map(ye),developerAddress:Te(e),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(([,n])=>n!=null).map(([n,s])=>[n,s])):void 0,stats:e.stats?G(e.stats):void 0,marketData:e.marketData?q(e.marketData):void 0,createdAt:e.tokenCreatedAt?new Date(e.tokenCreatedAt):void 0}}function ln(e,n){let s=n.metadata,t=s.extra;return {chain:e,name:s.name||n.address,symbol:s.symbol||n.address,address:n.address,decimals:s.decimals?parseInt(s.decimals):0,image:s.imageUrl??void 0,description:s.description??void 0,creators:s.tokenCreators?.map(ye),developerAddress:Te(s),launchedFrom:{programAddress:t?.launchFromProgramAddress??void 0,protocolFamily:t?.launchFromProtocolFamily??void 0},migrateProgress:n.marketData?.completionRatio?new utils.SafeBigNumber(n.marketData.completionRatio).shiftedBy(2).toString():void 0,migratedTo:{programAddress:t?.migratedToProgramAddress??void 0,protocolFamily:t?.migratedToProtocolFamily??void 0,poolAddress:t?.migratedToPoolAddress??void 0,migratedAt:t?.migratedAt?new Date(t.migratedAt):void 0},socialMedias:s.socialMedias?Object.fromEntries(Object.entries(s.socialMedias).filter(([,o])=>o!=null).map(([o,a])=>[o,a])):void 0,stats:n.stats?G(n.stats):void 0,marketData:n.marketData?q(n.marketData):void 0,createdAt:s.tokenCreatedAt?new Date(s.tokenCreatedAt):void 0}}function G(e){return {"1m":w(e,"1m"),"5m":w(e,"5m"),"15m":w(e,"15m"),"30m":w(e,"30m"),"1h":w(e,"1h"),"4h":w(e,"4h"),"24h":w(e,"24h")}}function p(e){return e===void 0?void 0:parseInt(e)}function w(e,n){let s=e.periods?.[n];return s?{buys:p(s.buys),sells:p(s.sells),trades:p(s.trades),buyers:p(s.buyers),sellers:p(s.sellers),traders:p(s.traders),buyVolumes:s.buyVolume,sellVolumes:s.sellVolume,volumes:s.totalVolumeInNative,buyVolumesInUsd:s.buyVolumeInUsd,sellVolumesInUsd:s.sellVolumeInUsd,volumesInUsd:s.totalVolumeInUsd,openPriceInUsd:s.openInUsd,closePriceInUsd:s.closeInUsd,highPriceInUsd:s.highInUsd,lowPriceInUsd:s.lowInUsd,priceInUsd:s.closeInUsd,priceChange:s.priceChangeRatioInUsd}:{}}function At(e){return {poolAddress:e.poolAddress,programAddress:e.programAddress??void 0,protocolFamily:e.protocolFamily??void 0,protocolName:e.protocolName??void 0,tvl:e.tvlInSol??void 0,tvlInUsd:e.tvlInUsd??void 0}}function he(e){if(e)return {image:"image"in e?e.image??void 0:void 0,programAddress:e.programAddress??void 0,protocolFamily:e.protocolFamily??void 0,protocolName:e.protocolName??void 0}}function Ae(e){if(e)return {poolAddress:e.poolAddress,tokenAAddress:e.tokenAAddress,tokenALiquidityInUsd:e.tokenALiquidityInUsd,tokenBAddress:e.tokenBAddress,tokenBLiquidityInUsd:e.tokenBLiquidityInUsd}}function Pe(e,n){return {chain:e,poolAddress:n.poolAddress,tokenAAddress:n.tokenAAddress,tokenBAddress:n.tokenBAddress,createdAt:n.createdAtMs?new Date(n.createdAtMs):void 0,dex:he(n.dex),token:n.token?h(n.token):void 0,balance:Ae(n.balance)}}function un(e){if(e.length!==0)return e.reduce((n,s)=>({...n,...Object.fromEntries(Object.entries(s).filter(([,t])=>t!==void 0)),stats:s.stats??n.stats,marketData:s.marketData?{...n.marketData,...s.marketData}:n.marketData,socialMedias:s.socialMedias?{...n.socialMedias,...s.socialMedias}:n.socialMedias,launchedFrom:s.launchedFrom?{...n.launchedFrom,...s.launchedFrom}:n.launchedFrom,migratedTo:s.migratedTo?{...n.migratedTo,...s.migratedTo}:n.migratedTo}),e[0])}function Ie(e,n){let s=n.token?un(te(e,n.token)):void 0;return {chain:e,poolAddress:n.poolAddress,tokenAAddress:n.tokenAAddress,tokenBAddress:n.tokenBAddress,createdAt:n.createdAtMs?new Date(n.createdAtMs):void 0,dex:he(n.dex),token:s,balance:Ae(n.balance)}}function q(e){return {totalSupply:e.totalSupply??void 0,marketCap:e.marketCapInSol??void 0,marketCapInUsd:e.marketCapInUsd??void 0,athMarketCapInUsd:e.athMarketCapInUsd??void 0,price:e.priceInNative??e.priceInSol??void 0,priceInUsd:e.priceInUsd??void 0,tvl:e.totalTvlInSol??void 0,tvlInUsd:e.totalTvlInUsd??void 0,maxPoolTvl:e.maxPoolTvlInSol??void 0,maxPoolTvlInUsd:e.maxPoolTvlInUsd??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 Se(e,n){return {open:e.open,close:e.close,high:e.high,low:e.low,volume:e.volume,volumeInTokenAmount:r(e.volumeInTokenAmount),trades:e.trades??void 0,resolution:n,timestamp:new Date(e.timestamp)}}function cn(e){return e==="1d"?"24h":e}function c(e){return e??void 0}function f(e){return e??void 0}function N(e){return e??void 0}function k(...e){return e.find(n=>n!==void 0)}function W(e){if(typeof e=="boolean")return e;if(typeof e=="number"){if(e===1)return true;if(e===0)return false}if(typeof e=="string"){if(e==="1"||e.toLowerCase()==="true")return true;if(e==="0"||e.toLowerCase()==="false")return false}}function Ce(e){if(e!==void 0)return new utils.SafeBigNumber(e).gt(0)}function F(e){if(!(!e||typeof e!="object"||Array.isArray(e)))return e}function Re(e){return Array.isArray(e)?e:void 0}function x(e){let s=F(e)?.status;if(s==="1"||s===1||s===true)return true;if(s==="0"||s===0||s===false)return false}function mn(e){let n=F(e);if(n)return Object.keys(n).length>0}function fn(e){if(e==="0"||e===0||e===false)return true;if(e==="1"||e===1||e===true)return false}function kn(e){let n=Re(e.dex);if(!n)return;let s;for(let t of n){let o=F(t)?.burn_percent;if(o==null||typeof o!="number"&&typeof o!="string")continue;let a=new utils.SafeBigNumber(o).div(100);(!s||a.gt(s))&&(s=a);}return s?.toString()}function Tn(e){let n=Re(e.holders);if(!n)return;let s=n.slice(0,10);if(s.length===0)return;let t=new utils.SafeBigNumber(0);for(let o of s){let a=F(o)?.percent;typeof a!="string"&&typeof a!="number"||(t=t.plus(a));}return t.toString()}function gn(e){return x(e.metadata_mutable)}function bn(e){try{let n=F(e);if(!n)return;let s=x(n.mintable),t=x(n.freezable),o=x(n.closable),a=mn(n.transfer_fee),l=kn(n);return {hasTransferFee:a,isTransferFeeUpgradable:x(n.transfer_fee_upgradable),isTransferable:fn(n.non_transferable),isFreezable:t,isClosable:o,isBalanceMutableAuthorityActive:x(n.balance_mutable_authority),isMetadataMutable:gn(n),isMintable:s,isMintAuthorityRenounced:s===void 0?void 0:!s,isLpBurned:Ce(l),lpBurnRatio:l,top10HoldersRatio:Tn(n)}}catch{return}}function yn(e){if(e)return {available:e.available,buyTaxRatio:c(e.buyTax),sellTaxRatio:c(e.sellTax),chainSupported:f(e.chainSupported),holderCount:c(e.holderCount),hasBlacklist:f(e.isBlacklisted),isFreezable:f(e.isFreezable),isHoneypot:f(e.isHoneypot),isMintable:f(e.isMintable),isOpenSource:f(e.isOpenSource),isProxy:f(e.isProxy),isRenounced:f(e.isRenounced),lastRefreshedAt:c(e.lastRefreshedAt),lpHolderCount:c(e.lpHolderCount),ownerAddress:c(e.ownerAddress),raw:e.raw,totalSupply:c(e.totalSupply)}}function hn(e){if(e)return {available:e.available,averageTaxRatio:c(e.averageTax),buyTaxRatio:c(e.buyTax),canNotSell:N(e.canNotSell),canSell:N(e.canSell),chainSupported:f(e.chainSupported),highTaxRatio:c(e.highTax),honeypotResult:c(e.honeypotResult),isHoneypot:f(e.isHoneypot),isOpenSource:f(e.isOpenSource),isRenounced:f(e.isRenounced),lastRefreshedAt:c(e.lastRefreshedAt),raw:e.raw,sellTaxRatio:c(e.sellTax)}}function An(e){if(e)return {available:e.available,chainSupported:f(e.chainSupported),isOpenSource:f(e.isOpenSource),isProxy:f(e.isProxy),isRenounced:f(e.isRenounced),isSafe:f(e.isSafe),lastRefreshedAt:c(e.lastRefreshedAt),launchpadName:c(e.launchpadName),ownerAddress:c(e.ownerAddress),raw:e.raw,sourceType:c(e.sourceType),vulnCount:N(e.vulnCount),vulnCriticalCount:N(e.vulnCriticalCount),vulnMitigatedCount:N(e.vulnMitigatedCount)}}function Pn(e){if(e)return {isLocked:f(e.isLocked),leftLockPercentRatio:c(e.leftLockPercent),lockDetail:c(e.lockDetail),lockPercentRatio:c(e.lockPercent),lockTags:e.lockTags}}function In(e){return {address:c(e.address),isRenounced:f(e.isRenounced),name:c(e.name)}}function Sn(e){return e?.find(n=>n.name?.toLowerCase().includes("mint"))}function Ue(e){let n=e,s=e,t=yn(n.goplus),o=hn(n.honeypot),a=An(n.serialized),l=Pn(n.lockInfo),i=bn(n.goplus?.raw),m=n.privileges?.map(In)??void 0,g=Sn(m),A=k(c(n.devTokenBurnRatio),i?.lpBurnRatio),C=k(t?.hasBlacklist),R=k(o?.isHoneypot,t?.isHoneypot),P=k(a?.isOpenSource,o?.isOpenSource,t?.isOpenSource),U=k(a?.isRenounced,o?.isRenounced,t?.isRenounced),z=k(o?.buyTaxRatio,t?.buyTaxRatio),O=k(o?.sellTaxRatio,t?.sellTaxRatio);return {address:c(n.address),chain:c(n.chain),sourcesAvailable:n.sourcesAvailable??void 0,goplus:t,honeypot:o,serialized:a,lockInfo:l,privileges:m,devTokenBurnAmount:c(n.devTokenBurnAmount),devTokenBurnRatio:A,lpBurnRatio:i?.lpBurnRatio,top10HoldersRatio:i?.top10HoldersRatio,isShowAlert:f(n.isShowAlert),hasTransferFee:k(W(s.hasTransferFee),i?.hasTransferFee),isTransferFeeUpgradable:k(W(s.isTransferFeeUpgradable),i?.isTransferFeeUpgradable),isTransferable:k(W(s.isTransferable),i?.isTransferable),isFreezable:k(f(n.isFreezable),t?.isFreezable,W(s.isFreezable),i?.isFreezable),isClosable:k(W(s.isClosable),i?.isClosable),isBalanceMutableAuthorityActive:i?.isBalanceMutableAuthorityActive,isMetadataMutable:i?.isMetadataMutable,isMintable:k(f(n.isMintable),t?.isMintable,i?.isMintable),isMintAuthorityRenounced:k(g?.isRenounced,i?.isMintAuthorityRenounced),hasBlacklist:C,isLpBurned:k(i?.isLpBurned,Ce(A)),isOpenSource:P,isHoneypot:R,isOwnershipRenounced:U,isLpLocked:l?.isLocked,buyTaxRatio:z,sellTaxRatio:O,averageTaxRatio:o?.averageTaxRatio,maxTaxRatio:o?.highTaxRatio,isSerializedSafe:a?.isSafe,serializedVulnCount:a?.vulnCount,serializedCriticalVulnCount:a?.vulnCriticalCount}}var Cn=new Set([types.Chain.SOLANA,types.Chain.SOLANA_TESTNET,types.Chain.SOLANA_DEVNET]),Rn="0x0000000000000000000000000000000000000000",Un="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";function vn(e){return e===utils.SOLANA_TOKENS.native.address?utils.SOLANA_TOKENS.wrapped.address:e}function wn(e){return e.toLowerCase()===Rn.toLowerCase()?Un:e}function Hn(e){return e.dex==="jupiter"?"jupiter":e.dex==="kyberswap"?"kyberswap":Cn.has(e.chain)?"jupiter":"kyberswap"}function Z(e,n){return e==="jupiter"?vn(n):e==="kyberswap"?wn(n):n}function Pt(e,n){return Z(e,n)}function ve(e){let n=Hn(e),s=Z(n,e.input),t=Z(n,e.output);return {dex:n,userAddress:e.userAddress,amount:e.amount,swapMode:e.mode===types.SwapMode.EXACT_IN?sdk.SwapRouteInputSwapMode.ExactIn:sdk.SwapRouteInputSwapMode.ExactOut,slippage:e.slippage??1,inputMint:s,outputMint:t,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 we(e){return {signedTx:e.serializedTx}}function L(e){return e==null?void 0:new Date(e)}function H(e){if(e!=null)return new Date(e<1e12?e*1e3:e)}function M(e){if(!(!e||e.length===0))return e}function He(e){return {accountAddress:r(e.accountAddress),address:e.walletAddress,accuAmount:r(e.accuAmount),accuCost:r(e.accuCost),addrType:r(e.addrType),addressLabel:r(e.addressLabel),amount:e.amount,amountInUsd:e.amountInUsd,amountInNative:r(e.amountInNative),ratio:e.percentage,avgBuyPriceUsd:r(e.avgBuyPriceUsd),avgCostUsd:r(e.avgCostUsd),avgSellPriceUsd:r(e.avgSellPriceUsd),buyAmountCur:r(e.buyAmountCur),buyVolumeNative:r(e.buyVolumeNative),buyVolumeUsd:r(e.buyVolumeUsd),createdAt:H(e.createdAt),endHoldingAt:H(e.endHoldingAt),exchange:r(e.exchange),firstBuyTime:H(e.firstBuyTime),historyBoughtCost:r(e.historyBoughtCost),historyBoughtFee:r(e.historyBoughtFee),historySoldFee:r(e.historySoldFee),historySoldIncome:r(e.historySoldIncome),historyTransferInAmount:r(e.historyTransferInAmount),historyTransferInCost:r(e.historyTransferInCost),historyTransferOutAmount:r(e.historyTransferOutAmount),historyTransferOutFee:r(e.historyTransferOutFee),historyTransferOutIncome:r(e.historyTransferOutIncome),isClosed:r(e.isClosed),isNew:r(e.isNew),isTransferIn:r(e.isTransferIn),lastActiveAt:H(e.lastActiveAt),lastBlock:r(e.lastBlock),lossCount:r(e.lossCount),makerTokenTags:r(e.makerTokenTags),nativeBalance:r(e.nativeBalance),netflowAmount:r(e.netflowAmount),netflowAmountUsd:r(e.netflowAmountUsd),netflowUsd:r(e.netflowUsd),positionCostUsd:r(e.positionCostUsd),realizedPnlRatio:r(e.realizedPnlRatio),realizedProfit:r(e.realizedProfit),roi:r(e.roi),sellAmountCur:r(e.sellAmountCur),sellAmountPercentage:r(e.sellAmountPercentage),sellVolumeNative:r(e.sellVolumeNative),sellVolumeUsd:r(e.sellVolumeUsd),startHoldingAt:H(e.startHoldingAt),tags:M(e.tags),tokenTransferIn:r(e.tokenTransferIn),tokenTransferOut:r(e.tokenTransferOut),totalBuyCount:r(e.totalBuyCount),totalCostUsd:r(e.totalCostUsd),totalProfit:r(e.totalProfit),totalSellCount:r(e.totalSellCount),transferInAmount7d:r(e.transferInAmount7d),transferInCount:r(e.transferInCount),transferOutAmount7d:r(e.transferOutAmount7d),transferOutCount:r(e.transferOutCount),unrealizedPnlRatio:r(e.unrealizedPnlRatio),unrealizedProfit:r(e.unrealizedProfit),walletTagV2:r(e.walletTagV2),winCount:r(e.winCount)}}function It(e){return {startCursor:r(e.startCursor),endCursor:r(e.endCursor),hasPrev:e.hasPrev??false,hasNext:e.hasNext??false,data:e.data.map(n=>He(n))}}function pe(e){return {startCursor:r(e.startCursor),endCursor:r(e.endCursor),hasPrev:e.hasPrev??false,hasNext:e.hasNext??false,data:e.data.map(n=>He(n))}}function xe(e){return {startCursor:r(e.startCursor),endCursor:r(e.endCursor),hasPrev:e.hasPrev??false,hasNext:e.hasNext??false,data:e.data.map(n=>({address:n.walletAddress,amount:n.amount,amountInUsd:n.amountInUsd,tags:M(n.tags),lastActiveAt:L(n.lastActiveAt),startHoldingAt:L(n.startHoldingAt),averageBuyPriceInUsd:r(n.averageBuyPriceInUsd),averageSellPriceInUsd:r(n.averageSellPriceInUsd),buyAmountCur:r(n.buyAmountCur),sellAmountCur:r(n.sellAmountCur),totalBuyAmountInUsd:r(n.totalBuyAmountInUsd),totalSellAmountInUsd:r(n.totalSellAmountInUsd),realizedPnl:r(n.realizedPnl),totalRealizedPnlInUsd:r(n.totalRealizedPnlInUsd),unrealizedPnl:r(n.unrealizedPnl),unrealizedPnlInUsd:r(n.unrealizedPnlInUsd),roi:r(n.roi),totalPnlInUsd:r(n.totalPnlInUsd),totalBuyCount:r(n.totalBuyCount),totalSellCount:r(n.totalSellCount),transferIn:r(n.transferIn),transferInCount:r(n.transferInCount),transferOutCount:r(n.transferOutCount)}))}}function De(e,n){return {startCursor:r(n.startCursor),endCursor:r(n.endCursor),hasPrev:n.hasPrev??false,hasNext:n.hasNext??false,data:n.data.map(s=>ln(e,s))}}function Be(e){let n=e;return {startCursor:r(e.startCursor),endCursor:r(e.endCursor),hasPrev:e.hasPrev??false,hasNext:e.hasNext??false,data:e.data.map(h),extra:r(n.countsByProtocols)}}function Oe(e){return {serializedTx:e.serializedTx,recentBlockhash:r(e.recentBlockhash),lastValidBlockHeight:r(e.lastValidBlockHeight),plans:[],extra:e.routeInfo}}function We(e){return {blockhash:e.blockhash,lastValidBlockHeight:e.lastValidBlockHeight}}function Ne(e){return {txHash:e.signature,extra:{jobId:e.jobId,elapsedTime:e.elapsedTime}}}function Le(e,n){let s=(n.data??[]).map(t=>({chain:_(t.chain),address:t.tokenAddress,name:t.name,symbol:t.symbol,image:r(t.logoUri),priceInUsd:t.priceInUsd,priceInNative:t.priceInNative,amount:t.amount,amountInUsd:t.valueInUsd,amountInNative:t.valueInNative,decimals:t.decimals}));return {chain:s[0]?.chain??e,address:n.walletAddress,balanceInUsd:n.totalValueInUsd,balanceInNative:n.totalValueInNative,startCursor:r(n.startCursor),endCursor:r(n.endCursor),hasPrev:n.hasPrev,hasNext:n.hasNext,portfolios:s}}function _e(e,n,s){return {chain:e,address:n,tokens:s.tokens?Number(s.tokens):void 0,buys:s.buys?Number(s.buys):void 0,sells:s.sells?Number(s.sells):void 0,totalTrades:s.totalTrades?Number(s.totalTrades):void 0,wins:s.wins?Number(s.wins):void 0,losses:s.losses?Number(s.losses):void 0,winRate:r(s.winRate),buyAmountInUsd:r(s.buyAmountInUsd),sellAmountInUsd:r(s.sellAmountInUsd),totalCostInUsd:r(s.totalCostInUsd),realizedProfitInUsd:r(s.realizedProfitInUsd),realizedProfitRatio:r(s.realizedProfitRatio),unrealizedProfitInUsd:r(s.unrealizedProfitInUsd),unrealizedProfitRatio:r(s.unrealizedProfitRatio),totalProfitInUsd:r(s.totalProfitInUsd),totalProfitRatio:r(s.totalProfitRatio),avgProfitPerTradeInUsd:r(s.avgProfitPerTradeInUsd)}}function Fe(e,n){return {chain:e,address:n.tokenAddress,name:n.name??"",symbol:n.symbol??"",image:r(n.logoUri),amount:n.balance,amountInUsd:n.currentValue,priceInUsd:n.priceInUsd,decimals:n.decimals??0,totalTrades:n.totalTrades!=null?Number(n.totalTrades):void 0,buys:n.buys!=null?Number(n.buys):void 0,buyVolumes:n.buyAmount,buyVolumesInUsd:n.buyAmountInUsd,buyAvgPriceInUsd:n.avgBuyPriceInUsd,sells:n.sells!=null?Number(n.sells):void 0,sellVolumes:n.sellAmount,sellVolumesInUsd:n.sellAmountInUsd,sellAvgPriceInUsd:n.avgSellPriceInUsd,realizedProfitInUsd:n.realizedProfitInUsd,realizedProfitRatio:n.realizedProfitRatio,unrealizedProfitInUsd:n.unrealizedProfitInUsd,unrealizedProfitRatio:n.unrealizedProfitRatio,totalProfitInUsd:n.totalProfitInUsd,totalProfitRatio:n.totalProfitRatio,transferInAmountInUsd:r(n.transferInAmountInUsd),transferInCount:n.transferInCount!=null?Number(n.transferInCount):void 0,transferOutAmountInUsd:r(n.transferOutAmountInUsd),transferOutCount:n.transferOutCount!=null?Number(n.transferOutCount):void 0,isClosed:n.isClosed,firstBuyAt:L(n.firstBuyAt),lastSellAt:L(n.lastSellAt)}}function se(e,n,s){let t=s.summary;return {chain:e,address:n,tokens:s.summary.tokens!=null?Number(s.summary.tokens):void 0,buys:s.summary.buys!=null?Number(s.summary.buys):void 0,sells:s.summary.sells!=null?Number(s.summary.sells):void 0,totalTrades:s.summary.totalTrades!=null?Number(s.summary.totalTrades):void 0,wins:s.summary.wins!=null?Number(s.summary.wins):void 0,losses:s.summary.losses!=null?Number(s.summary.losses):void 0,winRate:r(s.summary.winRate),buyAmountInUsd:r(s.summary.buyAmountInUsd),sellAmountInUsd:r(s.summary.sellAmountInUsd),totalCostInUsd:s.summary.totalCostInUsd,realizedProfitInUsd:r(s.summary.realizedProfitInUsd),unrealizedProfitInUsd:r(s.summary.unrealizedProfitInUsd),totalProfitInUsd:r(s.summary.totalProfitInUsd),totalProfitRatio:r(t.totalProfitRatio),avgProfitPerTradeInUsd:r(s.summary.avgProfitPerTradeInUsd),transferInAmountInUsd:r(s.summary.transferInAmountInUsd),transferInCount:s.summary.transferInCount!=null?Number(s.summary.transferInCount):void 0,transferOutAmountInUsd:r(s.summary.transferOutAmountInUsd),transferOutCount:s.summary.transferOutCount!=null?Number(s.summary.transferOutCount):void 0,startCursor:r(s.startCursor),endCursor:r(s.endCursor),hasPrev:s.hasPrev,hasNext:s.hasNext,portfolios:s.data.map(o=>Fe(e,o))}}function Me(e,n){return (n.data??[]).map(s=>({chain:_(s.chain),address:s.tokenAddress,name:s.name,symbol:s.symbol,image:r(s.logoUri),priceInUsd:s.priceInUsd,priceInNative:s.priceInNative,amount:s.amount,amountInUsd:s.valueInUsd,amountInNative:s.valueInNative,decimals:s.decimals,isActive:s.isActive,avgCostUsd:r(s.avgCostUsd),lastActiveAt:L(s.lastActiveAt),walletTokenTags:M(s.walletTokenTags)}))}function ze(e,n){return n.data.map(s=>Fe(e,s))}function Ee(e){return {startCursor:r(e.startCursor),endCursor:r(e.endCursor),hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(Ve)}}function Ve(e){let n=e.type.toLowerCase()==="buy";return {chain:_(e.chain),walletAddress:e.accountOwnerAddress,txHash:e.transactionSignature,type:n?"buy":"sell",from:{address:n?e.sideTokenAddress:e.tokenAddress,symbol:n?e.sideTokenSymbol:e.tokenSymbol,name:n?e.sideTokenName:e.tokenName,image:r(n?e.sideTokenImageUrl:e.tokenImageUrl),amount:n?e.sideTokenAmount:e.tokenAmount,amountInUsd:n?e.sideTokenAmountInUsd:e.tokenAmountInUsd,priceInUsd:n?e.sideTokenPriceInUsd:e.tokenPriceInUsd},to:{address:n?e.tokenAddress:e.sideTokenAddress,symbol:n?e.tokenSymbol:e.sideTokenSymbol,name:n?e.tokenName:e.sideTokenName,image:r(n?e.tokenImageUrl:e.sideTokenImageUrl),amount:n?e.tokenAmount:e.sideTokenAmount,amountInUsd:n?e.tokenAmountInUsd:e.sideTokenAmountInUsd,priceInUsd:n?e.tokenPriceInUsd:e.sideTokenPriceInUsd},dex:{programAddress:r(e.dexProgramAddress),protocolFamily:r(e.dexProtocolFamily),image:r(e.dexImage)},poolAddress:r(e.poolAddress),status:e.status??"success",time:H(e.blockTimestamp)??new Date(0),gasFee:e.gasFee!=null?String(e.gasFee):void 0,traderTags:M(e.traderTags)}}function Ge(e){return {startCursor:r(e.startCursor),endCursor:r(e.endCursor),hasPrev:e.hasPrev??false,hasNext:e.hasNext??false,data:e.data.map(Ve)}}function St(e){return {startCursor:r(e.startCursor),endCursor:r(e.endCursor),hasPrev:e.hasPrev,hasNext:e.hasNext,data:e.data.map(pn)}}function pn(e){let n=e.type.toLowerCase().replace(/ /g,"_"),s=n==="buy",t=H(e.blockTimestamp)??new Date(0);return {chain:_(e.chain),walletAddress:e.accountOwnerAddress,txHash:e.transactionSignature,type:n,from:{address:s?e.sideTokenAddress:e.tokenAddress,symbol:s?e.sideTokenSymbol:e.tokenSymbol,name:s?e.sideTokenName:e.tokenName,image:r(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:r(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:r(e.dexProgramAddress),protocolFamily:r(e.dexProtocolFamily),image:r(e.dexImage)},poolAddress:r(e.poolAddress),status:e.status??"success",time:t,gasFee:e.gasFee!=null?String(e.gasFee):void 0,traderTags:M(e.traderTags)}}function qe(e,n){return {chain:e,address:n.tokenAddress,name:n.name,symbol:n.symbol,decimals:n.decimals,createdAt:n.createdAtMs?new Date(n.createdAtMs):void 0,launchedFrom:n.launchFrom?{programAddress:n.launchFrom.programAddress,protocolFamily:n.launchFrom.protocolFamily}:void 0}}function $(e,n){return {chain:e,address:n.tokenAddress,name:n.name,symbol:n.symbol,decimals:n.decimals,image:n.imageUrl,description:n.description,socialMedias:n.socialMedia?{...n.socialMedia}:void 0,createdAt:n.createdAtMs?new Date(n.createdAtMs):void 0,launchedFrom:n.launchFrom?{programAddress:n.launchFrom.programAddress,protocolFamily:n.launchFrom.protocolFamily}:void 0,migratedTo:n.migratedTo?{programAddress:n.migratedTo.programAddress,protocolFamily:n.migratedTo.protocolFamily}:void 0}}function $e(e){return {open:e.open,close:e.close,high:e.high,low:e.low,volume:e.volume,resolution:cn(e.resolution),timestamp:new Date(e.time)}}function xn(e){let n=["1m","5m","15m","30m","1h","4h","24h"],s=e,t={};for(let o of n){let a=s[`buys${o}`],l=s[`sells${o}`],i=s[`buyers${o}`],m=s[`sellers${o}`],g=s[`buyVolumeInUsd${o}`],A=s[`sellVolumeInUsd${o}`],C=s[`trades${o}`],R=s[`price${o}`],P=s[`openInUsd${o}`],U=s[`closeInUsd${o}`];if(!(a!==void 0||l!==void 0||C!==void 0||R!==void 0))continue;let O=C??(a!==void 0&&l!==void 0?a+l:void 0),Xe=i!==void 0&&m!==void 0?i+m:void 0,Ze=g!==void 0&&A!==void 0?new utils.SafeBigNumber(g).plus(A).toString():void 0,en=P&&U&&new utils.SafeBigNumber(P).gt(0)?new utils.SafeBigNumber(U).minus(P).div(P).toString():void 0;t[o]={buys:a,sells:l,trades:O,buyers:i,sellers:m,traders:Xe,buyVolumesInUsd:g,sellVolumesInUsd:A,volumesInUsd:Ze,openPriceInUsd:P,closePriceInUsd:U,priceInUsd:R??U,priceChange:en};}return t}function Dn(e){return {priceInUsd:e.price}}function j(e,n){return {chain:e,address:n.address,stats:xn(n),marketData:Dn(n)}}function te(e,n){let s=[];return n.metadata&&s.push($(e,n.metadata)),n.stat&&s.push(j(e,n.stat)),n.holder&&s.push(K(e,n.holder.tokenAddress,n.holder)),n.supply&&s.push(Q(e,n.supply.tokenAddress,n.supply)),n.bondingCurve&&s.push(J(e,n.bondingCurve)),s.filter(t=>t.address)}function Q(e,n,s){return {chain:e,address:n,marketData:{totalSupply:s.supply,marketCapInUsd:s.marketCapInUsd}}}function K(e,n,s){return {chain:e,address:n,marketData:Bn(s)}}function re(e,n,s){return s.metricType===sdk.WsMetricType.LIQUIDITY_IN_USD?{chain:e,address:n,marketData:{tvlInUsd:s.value}}:s.metricType===sdk.WsMetricType.MIGRATED_RATIO?{chain:e,address:n,migrateProgress:new utils.SafeBigNumber(s.value).shiftedBy(2).toString()}:{chain:e,address:n}}function J(e,n){return {chain:e,address:n.tokenAddress??"",migrateProgress:n.progressRatio?new utils.SafeBigNumber(n.progressRatio).shiftedBy(2).toString():void 0}}function je(e,n,s){return {chain:e,address:n,liquidities:[{poolAddress:s.poolAddress,tvlInUsd:s.liquidityInUsd,tvl:s.liquidityInNative}]}}function Qe(e,n,s){return {chain:e,address:n,marketData:{tvlInUsd:s.liquidityInUsd,tvl:s.liquidityInNative}}}function Bn(e){return {holders:e.holders,top10Holdings:e.top10HoldersAmount,top10HoldingsRatio:e.top10HoldersRatio,top50Holdings:e.top50HoldersAmount,top50HoldingsRatio:e.top50HoldersRatio,top100Holdings:e.top100HoldersAmount,top100HoldingsRatio:e.top100HoldersRatio,bluechipHolders:e.bluechipHolders===void 0?void 0:e.bluechipHolders,bluechipHoldings:e.bluechipHoldersAmount,bluechipHoldingsRatio:e.bluechipHoldersRatio,kolHolders:e.kolHolders===void 0?void 0:e.kolHolders,kolHoldings:e.kolHoldersAmount,kolHoldingsRatio:e.kolHoldersRatio,proHolders:e.proHolders===void 0?void 0:e.proHolders,proHoldings:e.proHoldersAmount,proHoldingsRatio:e.proHoldersRatio,insiderHolders:e.insiderHolders===void 0?void 0:e.insiderHolders,insiderHoldings:e.insiderHoldersAmount,insiderHoldingsRatio:e.insiderHoldersRatio,devHolders:e.devHolders===void 0?void 0:e.devHolders,devHoldings:e.devHoldersAmount,devHoldingsRatio:e.devHoldersRatio,sniperHolders:e.sniperHolders===void 0?void 0:e.sniperHolders,sniperHoldings:e.sniperHoldersAmount,sniperHoldingsRatio:e.sniperHoldersRatio,freshHolders:e.freshHolders===void 0?void 0:e.freshHolders,freshHoldings:e.freshHoldersAmount,freshHoldingsRatio:e.freshHoldersRatio,bundleHolders:e.bundleHolders===void 0?void 0:e.bundleHolders,bundleHoldings:e.bundleHoldersAmount,bundleHoldingsRatio:e.bundleHoldersRatio,sandwichHolders:e.sandwichHolders===void 0?void 0:e.sandwichHolders,sandwichHoldings:e.sandwichHoldersAmount,sandwichHoldingsRatio:e.sandwichHoldersRatio}}function oe(e,n){let s=n.kind.toLowerCase()==="buy";return {chain:e,walletAddress:s?n.buyWalletAddress:n.sellWalletAddress,txHash:n.txHash,type:s?"buy":"sell",from:{address:n.sellTokenAddress,symbol:n.sellTokenSymbol,name:n.sellTokenName,amount:n.sellAmount,amountInUsd:n.sellAmountInUsd,priceInUsd:V(n.sellAmountInUsd,n.sellAmount)},to:{address:n.buyTokenAddress,symbol:n.buyTokenSymbol,name:n.buyTokenName,amount:n.buyAmount,amountInUsd:n.buyAmountInUsd,priceInUsd:V(n.buyAmountInUsd,n.buyAmount)},status:"success",time:new Date(n.timestamp)}}function ae(e,n){let s=n.kind.toLowerCase().replace(/ /g,"_");return {chain:e,walletAddress:s==="buy"?n.buyWalletAddress:n.sellWalletAddress,txHash:n.txHash,type:s,from:{address:n.sellTokenAddress,symbol:n.sellTokenSymbol,name:n.sellTokenName,amount:n.sellAmount,amountInUsd:n.sellAmountInUsd,priceInUsd:V(n.sellAmountInUsd,n.sellAmount)},to:{address:n.buyTokenAddress,symbol:n.buyTokenSymbol,name:n.buyTokenName,amount:n.buyAmount,amountInUsd:n.buyAmountInUsd,priceInUsd:V(n.buyAmountInUsd,n.buyAmount)},status:"success",time:new Date(n.timestamp)}}function V(e,n){if(e==null||e===""||n==null||n==="")return;let s=new utils.SafeBigNumber(n);if(s.gt(0))return new utils.SafeBigNumber(e).div(s).toString()}function Nn(e,n="desc"){if(e)return e==="totalUsd"?n==="asc"?sdk.ActivitySortBy.totalUsdAsc:sdk.ActivitySortBy.totalUsdDesc:n==="asc"?sdk.ActivitySortBy.timestampAsc:sdk.ActivitySortBy.timestampDesc}function Ln(e){switch(e){case "amountPercentage":return sdk.HolderSortBy.amountPercentage;case "holdingUsd":return sdk.HolderSortBy.holdingUsd;case "usdValue":return sdk.HolderSortBy.usdValue;case "totalPnl":return sdk.HolderSortBy.totalPnl;case "lastActiveAt":return sdk.HolderSortBy.lastActiveAt;case "realizedPnl":return sdk.HolderSortBy.realizedPnl;case "unrealizedPnl":return sdk.HolderSortBy.unrealizedPnl;case "buyVolume":return sdk.HolderSortBy.buyVolume;case "sellVolume":return sdk.HolderSortBy.sellVolume;case "netflowUsd":return sdk.HolderSortBy.netflowUsd;case "createdAt":return sdk.HolderSortBy.createdAt;default:return}}function _n(e){return e?e:void 0}var Ye=class e{constructor(n,s){this.accessToken=n;this.options=s;this._client=new sdk.ChainStreamClient(this.accessToken,this.options),this._phase3=ue(this.accessToken,this.options?.serverUrl);}_client;_phase3;async getToken(n,s){let t=await this._client.token.getToken(u(n),s);return h(t)}async getTokens(n,s){return (await this._client.token.getTokens(u(n),{tokenAddresses:s.join(",")})).map(h)}async getTokenCandles(n,s,t,o){return (await this._client.token.getCandles(u(n),s,{resolution:ee(t),from:o?.after?.getTime(),to:o?.before?.getTime(),limit:o?.limit})).map(l=>Se(l,t))}async getTokenSecurity(n,s){let t=await this._client.token.getSecurity(u(n),s);return Ue(t)}async getTokenStats(n,s){let t=await this._client.token.getStats(u(n),s);return G(t)}async getTokenHolders(n,s,t){let o=await this._client.token.getHolders(u(n),s,{cursor:t?.cursor,limit:t?.limit,direction:t?.direction,sortBy:Ln(t?.sortBy),sortDirection:_n(t?.sortDirection)});return pe(o)}async getTokenTopTraders(n,s,t){let o=await this._client.token.getTokenTopTraders(u(n),s,{cursor:t?.cursor,limit:t?.limit,direction:t?.direction,sortBy:t?.sortBy==="totalPnl"||t?.sortBy==="profit"?sdk.TraderSortBy.totalPnl:t?.sortBy==="realizedPnl"?sdk.TraderSortBy.realizedPnl:t?.sortBy==="unrealizedPnl"?sdk.TraderSortBy.unrealizedPnl:t?.sortBy==="buyVolume"?sdk.TraderSortBy.buyVolume:t?.sortBy==="sellVolume"?sdk.TraderSortBy.sellVolume:t?.sortBy==="lastActiveAt"?sdk.TraderSortBy.lastActiveAt:t?.sortBy==="netflowUsd"?sdk.TraderSortBy.netflowUsd:t?.sortBy==="createdAt"?sdk.TraderSortBy.createdAt:void 0,sortDirection:t?.sortDirection?t.sortDirection:void 0,tag:t?.tag});return xe(o)}async getTokenMarketData(n,s){let t=await this._client.token.getMarketData(u(n),s);return q(t)}async getNewTokens(n,s){return (await this._client.ranking.getNewTokens(u(n),this._buildRankingParams(s))).map(h)}async getNewPools(n,s){return (await this._client.ranking.getRankingPools(u(n),sdk.RankingPoolType["new-pool"])).map(o=>Pe(n,o))}async getFinalStretchTokens(n,s){return (await this._client.ranking.getFinalStretchTokens(u(n),this._buildRankingParams(s))).map(h)}async getMigratedTokens(n,s){return (await this._client.ranking.getMigratedTokens(u(n),this._buildRankingParams(s))).map(h)}async getTrendingTokens(n,s,t){return (await this._client.ranking.getHotTokens(u(n),s,this._buildRankingParams(t))).map(h)}async getStockTokens(n,s){return (await this._client.ranking.getStocksTokens(u(n),this._buildRankingParams(s))).map(h)}async searchTokens(n){let s=await this._client.token.search({chains:n?.chains?.map(u),q:n?.keyword,limit:n?.limit,cursor:n?.cursor,sortBy:n?.sortBy?ge(n.sortBy):void 0,sort:n?.sortDirection});return Be(s)}async swapRoute(n){let s=await this._client.dex.route(u(n.chain),ve(n));return Oe(s)}async getLatestBlock(n){let s=await this._client.blockchain.getLatestBlock(u(n.chain));return We(s)}async sendTx(n){let s=await this._client.transaction.send(u(n.chain),we(n));return Ne(s)}async checkTxSuccess(n,s,t){let{success:o}=await this._client.waitForJob(s,t);return o}async getWalletPortfolios(n,s,t){let o=e._CHAIN_TO_BALANCE_PARAM[n];if(o&&this.options?.nativeBalanceApiUrl)return this._getWalletPortfoliosFromBalanceApi(n,o,s);let a=await this._client.wallet.getNetWorth(u(n),s,{cursor:t?.cursor,limit:t?.limit??100});return Le(n,a)}async getWalletPnl(n,s,t){let o=await this._client.wallet.getPnl(u(n),s,t?{resolution:t}:void 0);return _e(n,s,o)}async getWalletPortfolioPnls(n,s,t){if(t?.resolution!=="90d"){let a=await this._client.wallet.getPnlDetails(u(n),s,{resolution:t?.resolution==="7d"?sdk.PnlResolution["7d"]:sdk.PnlResolution["30d"],positionState:t?.positionState==="closed"?sdk.PositionState.closed:t?.positionState==="all"?sdk.PositionState.all:t?.positionState==="open"?sdk.PositionState.open:void 0,sortBy:t?.sortBy==="realizedPnl"?sdk.PnlSortBy.realizedPnl:t?.sortBy==="unrealizedPnl"?sdk.PnlSortBy.unrealizedPnl:t?.sortBy==="totalPnl"?sdk.PnlSortBy.totalPnl:void 0,cursor:t?.cursor,limit:t?.limit??100,direction:t?.direction});return se(n,s,a)}let o=await ce(this._phase3,u(n),s,{resolution:t?.resolution??"30d",positionState:t?.positionState,sortBy:t?.sortBy,cursor:t?.cursor,limit:t?.limit??100,direction:t?.direction});return se(n,s,o)}async getWalletPortfoliosByTokens(n,s,t){let o=e._CHAIN_TO_BALANCE_PARAM[n];if(o&&this.options?.nativeBalanceApiUrl)return this._getPortfoliosFromBalanceApi(n,o,s,t);let a=await this._client.wallet.getNetWorthByTokens(u(n),s,{tokenAddresses:t.join(",")});return Me(n,a)}async getWalletPortfolioPnlsByTokens(n,s,t){let o=await this._client.wallet.getPnlByToken(u(n),s,{tokenAddresses:t.join(",")});return ze(n,o)}async getWalletTrades(n,s,t){return this._getTrades(n,{walletAddress:s},t)}async getTokenTrades(n,s,t){return this._getTrades(n,{tokenAddress:s},t)}async getWalletActivities(n,s,t){return this._getActivities(n,{walletAddress:s},t)}async getTokenActivities(n,s,t){return this._getActivities(n,{tokenAddress:s},t)}async getPresignedUploadUrl(){return (await this._client.ipfs.presign()).presignUrl}async getWalletLimitOrders(n,s,t){throw new E("Client.getWalletLimitOrders","no limit-orders endpoint on the backend yet")}async getTokensByCreator(n,s,t){let o=await this._client.token.getDevTokens(u(n),s,{cursor:t?.cursor,limit:t?.limit,direction:t?.direction});return De(n,o)}subscribeToken(n,s,t){return this.subscribeTokens(n,[s],t)}subscribeTokens(n,s,t){let o=u(n),a=Array.from(new Set(s.map(i=>i.trim()).filter(Boolean)));if(a.length===0)return {unsubscribe:()=>{}};let l=this._client.stream.batchSubscribe(()=>a.flatMap(i=>[this._client.stream.subscribeTokenStats({chain:o,tokenAddress:i,callback:m=>t([j(n,m)])}),this._client.stream.subscribeTokenHolders({chain:o,tokenAddress:i,callback:m=>t([K(n,i,m)])}),this._client.stream.subscribeTokenSupply({chain:o,tokenAddress:i,callback:m=>t([Q(n,i,m)])}),this._client.stream.subscribeTokenLiquidity({chain:o,tokenAddress:i,callback:m=>t([re(n,i,m)])}),this._client.stream.subscribeTokenMaxLiquidity({chain:o,tokenAddress:i,callback:m=>t([je(n,i,m)])}),this._client.stream.subscribeTokenTotalLiquidity({chain:o,tokenAddress:i,callback:m=>t([Qe(n,i,m)])})]));return {unsubscribe:()=>{let i=this._client.stream;if(i.batchUnsubscribe){i.batchUnsubscribe(l);return}l.forEach(m=>m.unsubscribe());}}}subscribeTokenCandles(n,s,t,o){return this._client.stream.subscribeTokenCandles({chain:u(n),tokenAddress:s,resolution:ee(t),callback:a=>o([$e(a)])})}subscribeWalletPnl(n,s,t){return this._client.stream.subscribeWalletPnlList({chain:u(n),walletAddress:s,callback:o=>t(o.map(a=>({chain:n,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(n,s,t){return this._client.stream.subscribeWalletBalance({chain:u(n),walletAddress:s,callback:o=>t(o.map(a=>({chain:n,walletAddress:a.walletAddress,tokenAddress:a.tokenAddress,priceInUsd:a.tokenPriceInUsd,amount:a.balance})))})}subscribeWalletPortfolioPnls(n,s,t){return this._client.stream.subscribeWalletPnl({chain:u(n),walletAddress:s,callback:o=>t([{chain:n,walletAddress:o.walletAddress,tokenAddress:o.tokenAddress,openTime:o.opentime?new Date(o.opentime):void 0,closeTime:o.closetime?new Date(o.closetime):void 0,buys:o.buyCount,buyVolumes:o.buyAmount,buyVolumesInUsd:o.buyAmountInUsd,buyAvgPriceInUsd:o.averageBuyPriceInUsd,sells:o.sellCount,sellVolumes:o.sellAmount,sellVolumesInUsd:o.sellAmountInUsd,sellAvgPriceInUsd:o.averageSellPriceInUsd,realizedProfitInUsd:o.realizedProfitInUsd,realizedProfitRatio:o.realizedProfitRatio,unrealizedProfitInUsd:o.unrealizedProfitInUsd,unrealizedProfitRatio:o.unrealizedProfitRatio,totalProfitInUsd:o.totalRealizedProfitInUsd,totalProfitRatio:o.totalRealizedProfitRatio}])})}subscribeWalletTrades(n,s,t){return this._client.stream.subscribeWalletTrade({chain:u(n),walletAddress:s,callback:o=>t([oe(n,o)])})}subscribeTokenTrades(n,s,t){return this._client.stream.subscribeTokenTrade({chain:u(n),tokenAddress:s,callback:o=>t([oe(n,o)])})}subscribeWalletActivities(n,s,t){return this._client.stream.subscribeWalletTrade({chain:u(n),walletAddress:s,callback:o=>t([ae(n,o)])})}subscribeTokenActivities(n,s,t){return this._client.stream.subscribeTokenTrade({chain:u(n),tokenAddress:s,callback:o=>t([ae(n,o)])})}subscribeNewTokens(n,s){let t=u(n),o=this._subscribeRankingTokens(n,sdk.WsChannelType.New,s),a=[this._client.stream.subscribeNewToken({chain:t,callback:l=>s([qe(n,l)])}),this._client.stream.subscribeNewTokensMetadata({chain:t,callback:l=>s(l.map(i=>$(n,i)))}),this._client.stream.subscribeRankingTokensBondingCurve({chain:t,callback:l=>s(l.map(i=>J(n,i)))})];return {unsubscribe:()=>{o.unsubscribe(),a.forEach(l=>l.unsubscribe());}}}subscribeNewTokensMetadata(n,s){return this._client.stream.subscribeNewTokensMetadata({chain:u(n),callback:t=>s(t.map(o=>$(n,o)))})}subscribeNewPools(n,s){return this._client.stream.subscribeNewPool({chain:u(n),callback:t=>s([Ie(n,t)])})}subscribeTrendingTokens(n,s){return this._subscribeRankingTokenList(n,sdk.WsRankingType.HOT,s)}subscribeMigratedTokens(n,s){return this._subscribeRankingTokens(n,sdk.WsChannelType.MIGRATED,s)}subscribeFinalStretchTokens(n,s){let t=u(n),o=this._subscribeRankingTokens(n,sdk.WsChannelType.FINAL_STRETCH,s),a=this._client.stream.subscribeRankingTokensBondingCurve({chain:t,callback:l=>s(l.map(i=>J(n,i)))});return {unsubscribe:()=>{o.unsubscribe(),a.unsubscribe();}}}subscribeStockTokens(n,s){return this._subscribeRankingTokenList(n,sdk.WsRankingType.STOCKS,s)}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(n,s,t,o){let a=this.options.nativeBalanceApiUrl,l=new URLSearchParams({chain:s,address:t});o?.length&&l.set("tokens",o.join(","));let i=await fetch(`${a}?${l.toString()}`);if(!i.ok)throw new Error(`Balance API returned ${i.status}`);return (await i.json()).balances.map(g=>{let A=BigInt(g.balance),C=g.decimals,R=BigInt(10)**BigInt(C),P=A/R,z=(A%R).toString().padStart(C,"0"),O=`${P}.${z}`.replace(/\.?0+$/,"")||"0";return {chain:n,address:g.address,name:"",symbol:"",priceInUsd:"0",priceInNative:"0",amount:O,amountInUsd:"0",amountInNative:"0",decimals:g.decimals}})}async _getWalletPortfoliosFromBalanceApi(n,s,t){let o=await this._getPortfoliosFromBalanceApi(n,s,t),a=e._NATIVE_TOKEN_ADDRESS[n],l=a?o.find(i=>i.address===a):void 0;return {chain:n,address:t,balanceInUsd:"0",balanceInNative:l?.amount??"0",portfolios:o,hasPrev:false,hasNext:false}}_buildRankingParams(n){return {sortBy:n?.sortBy?ne(n.sortBy):void 0,sortDirection:n?.sortDirection?n.sortDirection:void 0,rangeFilters:n?.filters?be(n.filters):void 0,launchpadPlatform:n?.filters?Fn(n.filters):void 0,searchKeywords:n?.keywords,excludeKeywords:n?.excludeKeywords}}async _getTrades(n,s,t){let o=await this._client.trade.getTrades(u(n),{...s,cursor:t?.cursor,limit:t?.limit,direction:t?.direction,beforeTimestamp:t?.before?.getTime(),afterTimestamp:t?.after?.getTime(),beforeBlockHeight:t?.beforeBlockHeight,afterBlockHeight:t?.afterBlockHeight,poolAddress:t?.poolAddress,type:t?.type?t.type.toUpperCase():void 0});return Ee(o)}async _getActivities(n,s,t){let o=await this._client.trade.getActivities(u(n),{...s,cursor:t?.cursor,limit:t?.limit,direction:t?.direction,beforeTimestamp:t?.before?.getTime(),afterTimestamp:t?.after?.getTime(),beforeBlockHeight:t?.beforeBlockHeight,afterBlockHeight:t?.afterBlockHeight,poolAddress:t?.poolAddress,type:t?.type?t.type.toUpperCase():void 0,sortBy:Nn(t?.sortBy,t?.sortDirection)});return Ge(o)}_subscribeRankingTokens(n,s,t){let o=u(n),a=[this._client.stream.subscribeRankingTokensStats({chain:o,channelType:s,callback:l=>t(l.map(i=>j(n,i)))}),this._client.stream.subscribeRankingTokensHolders({chain:o,channelType:s,callback:l=>t(l.map(i=>K(n,i.tokenAddress,i)))}),this._client.stream.subscribeRankingTokensSupply({chain:o,channelType:s,callback:l=>t(l.map(i=>Q(n,i.tokenAddress,i)))}),this._client.stream.subscribeRankingTokensLiquidity({chain:o,channelType:s,callback:l=>t(l.map(i=>re(n,i.tokenAddress,i)))})];return {unsubscribe:()=>a.forEach(l=>l.unsubscribe())}}_subscribeRankingTokenList(n,s,t){return this._client.stream.subscribeRankingTokensList({chain:u(n),ranking_type:s,callback:o=>{let a=o.flatMap(l=>te(n,l));a.length>0&&t(a);}})}};function Fn(e){let n=e.find(s=>s.field==="launchedFromProtocolFamily");if(n){if(n.operator==="eq")return [n.value];if(n.operator==="in")return n.value;console.warn("invalid launchedFromProtocolFamily filter",n);}}
|
|
2
|
+
exports.Client=Ye;exports.KYBERSWAP_NATIVE_SENTINEL=Un;exports.NotImplementedError=E;exports.fromActivityPage=St;exports.fromChainDTO=_;exports.fromLatestBlock=We;exports.fromPnlDetailItems=ze;exports.fromPnlDetailsPage=se;exports.fromRankingPoolDTO=Pe;exports.fromSdkActivityPage=Ge;exports.fromSdkDevTokenDTO=ln;exports.fromSdkDevTokenPage=De;exports.fromSdkTokenHolderPage=pe;exports.fromSdkTokenTopTraderPage=xe;exports.fromSendTxResult=Ne;exports.fromSwapRoute=Oe;exports.fromTokenCandle=Se;exports.fromTokenCreatorDTO=ye;exports.fromTokenDTO=h;exports.fromTokenHolderPage=It;exports.fromTokenLiquidityDTO=At;exports.fromTokenMarketDataDTO=q;exports.fromTokenMetadataSubscribed=$;exports.fromTokenPage=Be;exports.fromTokenSecurity=Ue;exports.fromTokenStatsDTO=G;exports.fromTokenSubscribed=qe;exports.fromTradePage=Ee;exports.fromWalletNetWorthByTokens=Me;exports.fromWalletPnlSummary=_e;exports.fromWalletPortfolios=Le;exports.fromWsActivity=ae;exports.fromWsCandle=$e;exports.fromWsRankingPoolToSubscribed=Ie;exports.fromWsRankingTokenListToSubscribed=te;exports.fromWsTokenBondingCurveToSubscribed=J;exports.fromWsTokenDataSubscribed=j;exports.fromWsTokenHolderToSubscribed=K;exports.fromWsTokenLiquidityToSubscribed=re;exports.fromWsTokenMarketDataFromHolder=Bn;exports.fromWsTokenMarketDataFromStats=Dn;exports.fromWsTokenMaxLiquidityToSubscribed=je;exports.fromWsTokenStats=xn;exports.fromWsTokenSupplyToSubscribed=Q;exports.fromWsTokenTotalLiquidityToSubscribed=Qe;exports.fromWsTradeActivity=oe;exports.isNotImplementedError=Mn;exports.toChainDTO=u;exports.toFieldDTO=ne;exports.toMintForRoute=Pt;exports.toRangeFiltersDTO=be;exports.toResolutionDTO=ee;exports.toSearchFieldDTO=ge;exports.toSendTxInput=we;exports.toSortDirectionDTO=dn;exports.toSwapRouteInput=ve;//# sourceMappingURL=index.js.map
|
|
3
3
|
//# sourceMappingURL=index.js.map
|