@liberfi.io/client 0.1.22 → 0.1.25

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.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/version.ts","../src/DexClientContext.ts","../src/hooks/useDexClient.ts","../src/hooks/useFinalStretchTokensQuery.ts","../src/hooks/useMigratedTokensQuery.ts","../src/hooks/useNewTokensQuery.ts","../src/hooks/usePresignedUploadUrlQuery.ts","../src/hooks/useSearchTokensQuery.ts","../src/hooks/useSendTxMutation.ts","../src/hooks/useStockTokensQuery.ts","../src/hooks/useSwapRouteQuery.ts","../src/hooks/useTokenCandlesQuery.ts","../src/hooks/useTokenHoldersQuery.ts","../src/hooks/useTokenMarketDataQuery.ts","../src/hooks/useTokenQuery.ts","../src/hooks/useTokenSecurityQuery.ts","../src/hooks/useTokensQuery.ts","../src/hooks/useTokenStatsQuery.ts","../src/hooks/useTokenTradeActivitiesQuery.ts","../src/hooks/useTrendingTokensQuery.ts","../src/hooks/useTxSuccessQuery.ts","../src/hooks/useWalletPortfoliosQuery.ts","../src/hooks/useWalletTradeActivitiesQuery.ts","../src/utils.ts","../src/client.ts","../src/DexClientProvider.tsx"],"names":["version_default","DexClientContext","createContext","useDexClient","context","useContext","finalStretchTokensQueryKey","params","fetchFinalStretchTokens","client","chain","options","useFinalStretchTokensQuery","useQuery","migratedTokensQueryKey","fetchMigratedTokens","useMigratedTokensQuery","newTokensQueryKey","fetchNewTokens","useNewTokensQuery","fetchPresignedUploadUrl","usePresignedUploadUrlQuery","searchTokensQueryKey","fetchSearchTokens","useSearchTokensQuery","sendTx","useSendTxMutation","useMutation","stockTokensQueryKey","fetchStockTokens","useStockTokensQuery","swapRouteQueryKey","fetchSwapRoute","useSwapRouteQuery","tokenCandlesQueryKey","fetchTokenCandles","address","resolution","useTokenCandlesQuery","tokenHoldersQueryKey","fetchTokenHolders","useTokenHoldersQuery","tokenMarketDataQueryKey","fetchTokenMarketData","useTokenMarketDataQuery","tokenQueryKey","fetchToken","useTokenQuery","tokenSecurityQueryKey","fetchTokenSecurity","useTokenSecurityQuery","tokensQueryKey","fetchTokens","addresses","useTokensQuery","tokenStatsQueryKey","fetchTokenStats","useTokenStatsQuery","tokenTradeActivitiesQueryKey","fetchTokenTradeActivities","useTokenTradeActivitiesQuery","trendingTokensQueryKey","fetchTrendingTokens","useTrendingTokensQuery","txSuccessQueryKey","fetchTxSuccess","txHash","timeout","useTxSuccessQuery","walletPortfoliosQueryKey","fetchWalletPortfolios","useWalletPortfoliosQuery","walletTradeActivitiesQueryKey","fetchWalletTradeActivities","useWalletTradeActivitiesQuery","toChainDTO","Chain","ChainSymbol","toResolutionDTO","Resolution","toSortDirectionDTO","direction","toSearchFieldDTO","field","SearchSortBy","toFieldDTO","GetNewTokensSortBy","toRangeFiltersDTO","filters","it","cond","SafeBigNumber","fromChainDTO","fromTokenCreatorDTO","input","fromTokenDTO","fromTokenStatsDTO","fromTokenMarketDataDTO","fromTokenLiquidityDTO","parseTokenStatsByResolution","toOptionalNumber","value","period","fromTokenCandle","_in","fromTokenSecurity","toSwapRouteInput","toSendTxInput","fromTokenHolderPage","fromTokenPage","fromSwapRoute","fromSendTxResult","fromWalletPortfolios","fromTradePage","fromTokenSubscribed","_chain","fromTokenMetadataSubscribed","Client","accessToken","ChainStreamClient","token","stats","marketData","parseLaunchPlatformFromFilters","result","callback","data","filter","DexClientProvider","subscribeClient","children","jsx"],"mappings":"qOAOI,OAAO,MAAA,CAAW,GAAA,GACpB,MAAA,CAAO,mBAAA,CAAsB,MAAA,CAAO,mBAAA,EAAuB,EAAC,CAC5D,MAAA,CAAO,mBAAA,CAAoB,oBAAoB,CAAA,CAAI,QAAA,CAAA,KAG9CA,CAAAA,CAAQ,SCJR,IAAMC,CAAAA,CAAmBC,mBAAAA,CAC9B,EACF,ECPO,SAASC,CAAAA,EAAsC,CACpD,IAAMC,CAAAA,CAAUC,gBAAAA,CAAWJ,CAAgB,CAAA,CAC3C,GAAI,CAACG,CAAAA,CACH,MAAM,IAAI,MAAM,uDAAuD,CAAA,CAEzE,OAAOA,CACT,CCAO,SAASE,CAAAA,CACdC,CAAAA,CACU,CACV,OAAO,CACL,oBAAA,CACAA,CAAAA,CAAO,KAAA,CACPA,CAAAA,CAAO,MAAA,EAAU,EAAA,CACjBA,CAAAA,CAAO,aAAA,EAAiB,EAAA,CACxB,IAAA,CAAK,SAAA,CAAA,CAAWA,CAAAA,CAAO,QAAA,EAAY,IAAI,IAAA,EAAM,CAAA,CAC7C,IAAA,CAAK,SAAA,CAAA,CAAWA,CAAAA,CAAO,eAAA,EAAmB,EAAC,EAAG,IAAA,EAAM,CAAA,CACpD,IAAA,CAAK,SAAA,CAAUA,EAAO,OAAA,EAAW,EAAE,CACrC,CACF,CAEA,eAAsBC,CAAAA,CACpBC,CAAAA,CACA,CAAE,KAAA,CAAAC,CAAAA,CAAO,GAAGC,CAAQ,CAAA,CACpB,CACA,OAAO,MAAMF,CAAAA,CAAO,qBAAA,CAAsBC,CAAAA,CAAOC,CAAO,CAC1D,CAEO,SAASC,EAAAA,CACdL,CAAAA,CACAI,CAAAA,CAGI,EAAC,CACL,CACA,GAAM,CAAE,MAAA,CAAAF,CAAO,CAAA,CAAIN,CAAAA,EAAa,CAChC,OAAOU,mBAAAA,CAAS,CACd,QAAA,CAAUP,CAAAA,CAA2BC,CAAM,CAAA,CAC3C,QAAS,SAAYC,CAAAA,CAAwBC,CAAAA,CAAQF,CAAM,CAAA,CAC3D,GAAGI,CACL,CAAC,CACH,CCnCO,SAASG,CAAAA,CACdP,CAAAA,CACU,CACV,OAAO,CACL,gBAAA,CACAA,CAAAA,CAAO,KAAA,CACPA,CAAAA,CAAO,MAAA,EAAU,EAAA,CACjBA,CAAAA,CAAO,aAAA,EAAiB,EAAA,CACxB,KAAK,SAAA,CAAA,CAAWA,CAAAA,CAAO,QAAA,EAAY,EAAC,EAAG,IAAA,EAAM,CAAA,CAC7C,IAAA,CAAK,SAAA,CAAA,CAAWA,CAAAA,CAAO,eAAA,EAAmB,EAAC,EAAG,MAAM,CAAA,CACpD,IAAA,CAAK,SAAA,CAAUA,CAAAA,CAAO,OAAA,EAAW,EAAE,CACrC,CACF,CAEA,eAAsBQ,CAAAA,CACpBN,CAAAA,CACA,CAAE,KAAA,CAAAC,CAAAA,CAAO,GAAGC,CAAQ,CAAA,CACpB,CACA,OAAO,MAAMF,CAAAA,CAAO,iBAAA,CAAkBC,CAAAA,CAAOC,CAAO,CACtD,CAEO,SAASK,EAAAA,CACdT,CAAAA,CACAI,CAAAA,CAGI,EAAC,CACL,CACA,GAAM,CAAE,MAAA,CAAAF,CAAO,CAAA,CAAIN,CAAAA,EAAa,CAChC,OAAOU,mBAAAA,CAAS,CACd,QAAA,CAAUC,CAAAA,CAAuBP,CAAM,CAAA,CACvC,OAAA,CAAS,SAAYQ,CAAAA,CAAoBN,CAAAA,CAAQF,CAAM,CAAA,CACvD,GAAGI,CACL,CAAC,CACH,CClCO,SAASM,CAAAA,CAAkBV,CAAAA,CAA2C,CAC3E,OAAO,CACL,WAAA,CACAA,CAAAA,CAAO,KAAA,CACPA,CAAAA,CAAO,QAAU,EAAA,CACjBA,CAAAA,CAAO,aAAA,EAAiB,EAAA,CACxB,IAAA,CAAK,SAAA,CAAA,CAAWA,CAAAA,CAAO,QAAA,EAAY,EAAC,EAAG,IAAA,EAAM,CAAA,CAC7C,IAAA,CAAK,WAAWA,CAAAA,CAAO,eAAA,EAAmB,EAAC,EAAG,IAAA,EAAM,CAAA,CACpD,IAAA,CAAK,SAAA,CAAUA,CAAAA,CAAO,OAAA,EAAW,EAAE,CACrC,CACF,CAEA,eAAsBW,CAAAA,CACpBT,CAAAA,CACA,CAAE,KAAA,CAAAC,CAAAA,CAAO,GAAGC,CAAQ,CAAA,CACpB,CACA,OAAO,MAAMF,CAAAA,CAAO,aAAaC,CAAAA,CAAOC,CAAO,CACjD,CAEO,SAASQ,EAAAA,CACdZ,CAAAA,CACAI,CAAAA,CAGI,EAAC,CACL,CACA,GAAM,CAAE,MAAA,CAAAF,CAAO,CAAA,CAAIN,CAAAA,EAAa,CAChC,OAAOU,mBAAAA,CAAS,CACd,QAAA,CAAUI,CAAAA,CAAkBV,CAAM,CAAA,CAClC,OAAA,CAAS,SAAYW,CAAAA,CAAeT,CAAAA,CAAQF,CAAM,CAAA,CAClD,GAAGI,CACL,CAAC,CACH,CCpCA,eAAsBS,CAAAA,CAAwBX,CAAAA,CAAqB,CACjE,OAAO,MAAMA,CAAAA,CAAO,qBAAA,EACtB,CAEO,SAASY,EAAAA,CACdV,CAAAA,CAGI,EAAC,CACL,CACA,GAAM,CAAE,MAAA,CAAAF,CAAO,EAAIN,CAAAA,EAAa,CAChC,OAAOU,mBAAAA,CAAS,CACd,QAAA,CAAU,CAAC,oBAAoB,CAAA,CAC/B,OAAA,CAAS,SAAYO,CAAAA,CAAwBX,CAAM,CAAA,CACnD,GAAGE,CACL,CAAC,CACH,CCdO,SAASW,CAAAA,CACdf,CAAAA,CACU,CACV,OAAO,CACL,eACAA,CAAAA,CAAO,MAAA,EAAU,EAAA,CACjBA,CAAAA,CAAO,KAAA,CAAQ,CAAA,EAAGA,CAAAA,CAAO,KAAK,CAAA,CAAA,CAAK,EAAA,CACnCA,CAAAA,CAAO,SAAA,EAAa,EAAA,CACpB,IAAA,CAAK,WAAWA,CAAAA,CAAO,MAAA,EAAU,EAAC,EAAG,IAAA,EAAM,CAAA,CAC3CA,CAAAA,CAAO,OAAA,EAAW,EAAA,CAClB,IAAA,CAAK,SAAA,CAAUA,CAAAA,CAAO,OAAA,EAAW,EAAE,CAAA,CACnCA,CAAAA,CAAO,MAAA,EAAU,EAAA,CACjBA,CAAAA,CAAO,aAAA,EAAiB,EAC1B,CACF,CAEA,eAAsBgB,EAAAA,CACpBd,CAAAA,CACAF,CAAAA,CACA,CACA,OAAO,MAAME,CAAAA,CAAO,YAAA,CAAaF,CAAM,CACzC,CAEO,SAASiB,EAAAA,CACdjB,CAAAA,CACAI,CAAAA,CAQI,EAAC,CACL,CACA,GAAM,CAAE,MAAA,CAAAF,CAAO,CAAA,CAAIN,CAAAA,EAAa,CAChC,OAAOU,mBAAAA,CAAS,CACd,QAAA,CAAUS,CAAAA,CAAqBf,CAAM,CAAA,CACrC,OAAA,CAAS,SAAYgB,EAAAA,CAAkBd,CAAAA,CAAQF,CAAM,CAAA,CACrD,GAAGI,CACL,CAAC,CACH,CCzCA,eAAsBc,EAAAA,CACpBhB,EACAF,CAAAA,CACA,CACA,OAAO,MAAME,CAAAA,CAAO,MAAA,CAAOF,CAAM,CACnC,CAEO,SAASmB,EAAAA,CACdf,CAAAA,CAGI,EAAC,CACL,CACA,GAAM,CAAE,MAAA,CAAAF,CAAO,CAAA,CAAIN,CAAAA,EAAa,CAChC,OAAOwB,sBAAAA,CAAY,CACjB,UAAA,CAAY,MAAOpB,CAAAA,EACjBkB,EAAAA,CAAOhB,EAAQF,CAAM,CAAA,CACvB,GAAGI,CACL,CAAC,CACH,CCjBO,SAASiB,EAAAA,CACdrB,CAAAA,CACU,CACV,OAAO,CACL,aAAA,CACAA,CAAAA,CAAO,KAAA,CACPA,CAAAA,CAAO,MAAA,EAAU,EAAA,CACjBA,CAAAA,CAAO,aAAA,EAAiB,EAAA,CACxB,IAAA,CAAK,SAAA,CAAA,CAAWA,CAAAA,CAAO,UAAY,EAAC,EAAG,IAAA,EAAM,CAAA,CAC7C,IAAA,CAAK,SAAA,CAAA,CAAWA,CAAAA,CAAO,eAAA,EAAmB,EAAC,EAAG,IAAA,EAAM,CAAA,CACpD,KAAK,SAAA,CAAUA,CAAAA,CAAO,OAAA,EAAW,EAAE,CACrC,CACF,CAEA,eAAsBsB,EAAAA,CACpBpB,CAAAA,CACA,CAAE,KAAA,CAAAC,CAAAA,CAAO,GAAGC,CAAQ,CAAA,CACpB,CACA,OAAO,MAAMF,CAAAA,CAAO,cAAA,CAAeC,CAAAA,CAAOC,CAAO,CACnD,CAEO,SAASmB,EAAAA,CACdvB,CAAAA,CACAI,CAAAA,CAGI,EAAC,CACL,CACA,GAAM,CAAE,MAAA,CAAAF,CAAO,CAAA,CAAIN,CAAAA,EAAa,CAChC,OAAOU,mBAAAA,CAAS,CACd,QAAA,CAAUe,EAAAA,CAAoBrB,CAAM,CAAA,CACpC,OAAA,CAAS,SAAYsB,EAAAA,CAAiBpB,CAAAA,CAAQF,CAAM,CAAA,CACpD,GAAGI,CACL,CAAC,CACH,CCpCO,SAASoB,EAAAA,CAAkBxB,CAAAA,CAA2C,CAC3E,OAAO,CACL,WAAA,CACAA,CAAAA,CAAO,KAAA,CACPA,CAAAA,CAAO,WAAA,CACPA,CAAAA,CAAO,KAAA,CACPA,EAAO,MAAA,CACPA,CAAAA,CAAO,IAAA,CACPA,CAAAA,CAAO,MAAA,CACPA,CAAAA,CAAO,QAAA,CAAW,CAAA,EAAGA,CAAAA,CAAO,QAAQ,CAAA,CAAA,CAAK,EAAA,CACzCA,CAAAA,CAAO,WAAA,EAAe,GACtBA,CAAAA,CAAO,MAAA,EAAU,EAAA,CACjBA,CAAAA,CAAO,SAAA,GAAc,MAAA,CAAY,CAAA,EAAGA,CAAAA,CAAO,SAAS,CAAA,CAAA,CAAK,EAC3D,CACF,CAEA,eAAsByB,GACpBvB,CAAAA,CACAF,CAAAA,CACA,CACA,OAAO,MAAME,CAAAA,CAAO,SAAA,CAAUF,CAAM,CACtC,CAEO,SAAS0B,EAAAA,CACd1B,CAAAA,CACAI,CAAAA,CAGI,EAAC,CACL,CACA,GAAM,CAAE,MAAA,CAAAF,CAAO,CAAA,CAAIN,CAAAA,EAAa,CAChC,OAAOU,mBAAAA,CAAS,CACd,QAAA,CAAUkB,EAAAA,CAAkBxB,CAAM,CAAA,CAClC,OAAA,CAAS,SAAYyB,EAAAA,CAAevB,CAAAA,CAAQF,CAAM,CAAA,CAClD,GAAGI,CACL,CAAC,CACH,CChCO,SAASuB,EAAAA,CACd3B,CAAAA,CACU,CACV,OAAO,CACL,cAAA,CACAA,CAAAA,CAAO,KAAA,CACPA,CAAAA,CAAO,OAAA,CACPA,CAAAA,CAAO,UAAA,CACPA,CAAAA,CAAO,OAAO,QAAA,EAAS,EAAK,EAAA,CAC5BA,CAAAA,CAAO,MAAA,EAAQ,QAAA,EAAS,EAAK,EAAA,CAC7BA,CAAAA,CAAO,KAAA,CAAQ,CAAA,EAAGA,CAAAA,CAAO,KAAK,CAAA,CAAA,CAAK,EACrC,CACF,CAEA,eAAsB4B,EAAAA,CACpB1B,CAAAA,CACA,CAAE,KAAA,CAAAC,CAAAA,CAAO,OAAA,CAAA0B,CAAAA,CAAS,UAAA,CAAAC,CAAAA,CAAY,GAAG1B,CAAQ,EACzC,CACA,OAAO,MAAMF,CAAAA,CAAO,eAAA,CAAgBC,CAAAA,CAAO0B,CAAAA,CAASC,CAAAA,CAAY1B,CAAO,CACzE,CAEO,SAAS2B,EAAAA,CACd/B,CAAAA,CACAI,EAGI,EAAC,CACL,CACA,GAAM,CAAE,MAAA,CAAAF,CAAO,CAAA,CAAIN,CAAAA,EAAa,CAChC,OAAOU,mBAAAA,CAAS,CACd,QAAA,CAAUqB,GAAqB3B,CAAM,CAAA,CACrC,OAAA,CAAS,SAAY4B,EAAAA,CAAkB1B,CAAAA,CAAQF,CAAM,CAAA,CACrD,GAAGI,CACL,CAAC,CACH,CCnCO,SAAS4B,EAAAA,CACdhC,CAAAA,CACU,CACV,OAAO,CACL,cAAA,CACAA,CAAAA,CAAO,KAAA,CACPA,CAAAA,CAAO,OAAA,CACPA,CAAAA,CAAO,QAAU,EAAA,CACjBA,CAAAA,CAAO,KAAA,CAAQ,CAAA,EAAGA,CAAAA,CAAO,KAAK,CAAA,CAAA,CAAK,EAAA,CACnCA,CAAAA,CAAO,SAAA,EAAa,EACtB,CACF,CAEA,eAAsBiC,EAAAA,CACpB/B,CAAAA,CACA,CAAE,KAAA,CAAAC,CAAAA,CAAO,OAAA,CAAA0B,CAAAA,CAAS,GAAGzB,CAAQ,CAAA,CAC7B,CACA,OAAO,MAAMF,CAAAA,CAAO,eAAA,CAAgBC,CAAAA,CAAO0B,EAASzB,CAAO,CAC7D,CAEO,SAAS8B,EAAAA,CACdlC,CAAAA,CACAI,CAAAA,CAQI,EAAC,CACL,CACA,GAAM,CAAE,MAAA,CAAAF,CAAO,EAAIN,CAAAA,EAAa,CAChC,OAAOU,mBAAAA,CAAS,CACd,QAAA,CAAU0B,EAAAA,CAAqBhC,CAAM,CAAA,CACrC,OAAA,CAAS,SAAYiC,EAAAA,CAAkB/B,CAAAA,CAAQF,CAAM,EACrD,GAAGI,CACL,CAAC,CACH,CCtCO,SAAS+B,EAAAA,CACdnC,CAAAA,CACU,CACV,OAAO,CAAC,iBAAA,CAAmBA,CAAAA,CAAO,KAAA,CAAOA,CAAAA,CAAO,OAAO,CACzD,CAEA,eAAsBoC,EAAAA,CACpBlC,CAAAA,CACA,CAAE,KAAA,CAAAC,CAAAA,CAAO,OAAA,CAAA0B,CAAQ,CAAA,CACjB,CACA,OAAO,MAAM3B,CAAAA,CAAO,kBAAA,CAAmBC,CAAAA,CAAO0B,CAAO,CACvD,CAEO,SAASQ,EAAAA,CACdrC,CAAAA,CACAI,CAAAA,CAGI,EAAC,CACL,CACA,GAAM,CAAE,MAAA,CAAAF,CAAO,CAAA,CAAIN,CAAAA,EAAa,CAChC,OAAOU,mBAAAA,CAAS,CACd,QAAA,CAAU6B,EAAAA,CAAwBnC,CAAM,CAAA,CACxC,OAAA,CAAS,SAAYoC,EAAAA,CAAqBlC,CAAAA,CAAQF,CAAM,CAAA,CACxD,GAAGI,CACL,CAAC,CACH,CC1BO,SAASkC,EAAAA,CAActC,CAAAA,CAAuC,CACnE,OAAO,CAAC,OAAA,CAASA,CAAAA,CAAO,KAAA,CAAOA,CAAAA,CAAO,OAAO,CAC/C,CAEA,eAAsBuC,GACpBrC,CAAAA,CACA,CAAE,KAAA,CAAAC,CAAAA,CAAO,OAAA,CAAA0B,CAAQ,CAAA,CACjB,CACA,OAAO,MAAM3B,CAAAA,CAAO,QAAA,CAASC,CAAAA,CAAO0B,CAAO,CAC7C,CAEO,SAASW,EAAAA,CACdxC,CAAAA,CACAI,CAAAA,CAGI,EAAC,CACL,CACA,GAAM,CAAE,MAAA,CAAAF,CAAO,CAAA,CAAIN,CAAAA,GACnB,OAAOU,mBAAAA,CAAS,CACd,QAAA,CAAUgC,EAAAA,CAActC,CAAM,CAAA,CAC9B,OAAA,CAAS,SAAYuC,EAAAA,CAAWrC,CAAAA,CAAQF,CAAM,CAAA,CAC9C,GAAGI,CACL,CAAC,CACH,CCxBO,SAASqC,EAAAA,CACdzC,CAAAA,CACU,CACV,OAAO,CAAC,eAAA,CAAiBA,EAAO,KAAA,CAAOA,CAAAA,CAAO,OAAO,CACvD,CAEA,eAAsB0C,EAAAA,CACpBxC,CAAAA,CACA,CAAE,KAAA,CAAAC,CAAAA,CAAO,OAAA,CAAA0B,CAAQ,CAAA,CACjB,CACA,OAAO,MAAM3B,CAAAA,CAAO,gBAAA,CAAiBC,CAAAA,CAAO0B,CAAO,CACrD,CAEO,SAASc,EAAAA,CACd3C,CAAAA,CACAI,CAAAA,CAGI,EAAC,CACL,CACA,GAAM,CAAE,MAAA,CAAAF,CAAO,CAAA,CAAIN,CAAAA,EAAa,CAChC,OAAOU,mBAAAA,CAAS,CACd,QAAA,CAAUmC,EAAAA,CAAsBzC,CAAM,CAAA,CACtC,OAAA,CAAS,SAAY0C,EAAAA,CAAmBxC,CAAAA,CAAQF,CAAM,CAAA,CACtD,GAAGI,CACL,CAAC,CACH,CC1BO,SAASwC,GAAe5C,CAAAA,CAAwC,CACrE,OAAO,CAAC,QAAA,CAAUA,CAAAA,CAAO,KAAA,CAAOA,CAAAA,CAAO,SAAA,CAAU,IAAA,EAAK,CAAE,IAAA,CAAK,GAAG,CAAC,CACnE,CAEA,eAAsB6C,EAAAA,CACpB3C,CAAAA,CACA,CAAE,KAAA,CAAAC,CAAAA,CAAO,SAAA,CAAA2C,CAAU,CAAA,CACnB,CACA,OAAO,MAAM5C,CAAAA,CAAO,UAAUC,CAAAA,CAAO2C,CAAS,CAChD,CAEO,SAASC,EAAAA,CACd/C,CAAAA,CACAI,CAAAA,CAGI,EAAC,CACL,CACA,GAAM,CAAE,MAAA,CAAAF,CAAO,CAAA,CAAIN,CAAAA,EAAa,CAChC,OAAOU,mBAAAA,CAAS,CACd,QAAA,CAAUsC,EAAAA,CAAe5C,CAAM,CAAA,CAC/B,OAAA,CAAS,SAAY6C,EAAAA,CAAY3C,CAAAA,CAAQF,CAAM,CAAA,CAC/C,GAAGI,CACL,CAAC,CACH,CCxBO,SAAS4C,EAAAA,CAAmBhD,CAAAA,CAA4C,CAC7E,OAAO,CAAC,YAAA,CAAcA,CAAAA,CAAO,KAAA,CAAOA,CAAAA,CAAO,OAAO,CACpD,CAEA,eAAsBiD,EAAAA,CACpB/C,CAAAA,CACA,CAAE,KAAA,CAAAC,CAAAA,CAAO,QAAA0B,CAAQ,CAAA,CACjB,CACA,OAAO,MAAM3B,CAAAA,CAAO,aAAA,CAAcC,CAAAA,CAAO0B,CAAO,CAClD,CAEO,SAASqB,EAAAA,CACdlD,CAAAA,CACAI,CAAAA,CAGI,EAAC,CACL,CACA,GAAM,CAAE,MAAA,CAAAF,CAAO,CAAA,CAAIN,CAAAA,EAAa,CAChC,OAAOU,mBAAAA,CAAS,CACd,QAAA,CAAU0C,EAAAA,CAAmBhD,CAAM,CAAA,CACnC,OAAA,CAAS,SAAYiD,EAAAA,CAAgB/C,CAAAA,CAAQF,CAAM,CAAA,CACnD,GAAGI,CACL,CAAC,CACH,CCvBO,SAAS+C,EAAAA,CACdnD,CAAAA,CACU,CACV,OAAO,CACL,sBAAA,CACAA,CAAAA,CAAO,KAAA,CACPA,CAAAA,CAAO,OAAA,CACPA,CAAAA,CAAO,MAAA,EAAQ,UAAS,EAAK,EAAA,CAC7BA,CAAAA,CAAO,KAAA,EAAO,QAAA,EAAS,EAAK,EAAA,CAC5BA,CAAAA,CAAO,iBAAA,CAAoB,CAAA,EAAGA,CAAAA,CAAO,iBAAiB,CAAA,CAAA,CAAK,EAAA,CAC3DA,EAAO,gBAAA,CAAmB,CAAA,EAAGA,CAAAA,CAAO,gBAAgB,CAAA,CAAA,CAAK,EAAA,CACzDA,CAAAA,CAAO,IAAA,EAAQ,EAAA,CACfA,CAAAA,CAAO,WAAA,EAAe,EACxB,CACF,CAEA,eAAsBoD,EAAAA,CACpBlD,CAAAA,CACA,CAAE,KAAA,CAAAC,CAAAA,CAAO,OAAA,CAAA0B,CAAAA,CAAS,GAAGzB,CAAQ,CAAA,CAC7B,CACA,OAAO,MAAMF,CAAAA,CAAO,wBAAwBC,CAAAA,CAAO0B,CAAAA,CAASzB,CAAO,CACrE,CAEO,SAASiD,EAAAA,CACdrD,CAAAA,CACAI,CAAAA,CAQI,EAAC,CACL,CACA,GAAM,CAAE,OAAAF,CAAO,CAAA,CAAIN,CAAAA,EAAa,CAChC,OAAOU,mBAAAA,CAAS,CACd,QAAA,CAAU6C,EAAAA,CAA6BnD,CAAM,CAAA,CAC7C,OAAA,CAAS,SAAYoD,EAAAA,CAA0BlD,CAAAA,CAAQF,CAAM,CAAA,CAC7D,GAAGI,CACL,CAAC,CACH,CC1CO,SAASkD,EAAAA,CACdtD,CAAAA,CACU,CACV,OAAO,CACL,gBAAA,CACAA,CAAAA,CAAO,KAAA,CACPA,CAAAA,CAAO,UAAA,CACPA,CAAAA,CAAO,MAAA,EAAU,EAAA,CACjBA,CAAAA,CAAO,aAAA,EAAiB,EAAA,CACxB,IAAA,CAAK,SAAA,CAAA,CAAWA,EAAO,QAAA,EAAY,EAAC,EAAG,IAAA,EAAM,CAAA,CAC7C,IAAA,CAAK,SAAA,CAAA,CAAWA,CAAAA,CAAO,eAAA,EAAmB,EAAC,EAAG,IAAA,EAAM,EACpD,IAAA,CAAK,SAAA,CAAUA,CAAAA,CAAO,OAAA,EAAW,EAAE,CACrC,CACF,CAEA,eAAsBuD,EAAAA,CACpBrD,CAAAA,CACA,CAAE,KAAA,CAAAC,EAAO,UAAA,CAAA2B,CAAAA,CAAY,GAAG1B,CAAQ,CAAA,CAChC,CACA,OAAO,MAAMF,CAAAA,CAAO,iBAAA,CAAkBC,CAAAA,CAAO2B,CAAAA,CAAY1B,CAAO,CAClE,CAEO,SAASoD,EAAAA,CACdxD,CAAAA,CACAI,CAAAA,CAGI,EAAC,CACL,CACA,GAAM,CAAE,MAAA,CAAAF,CAAO,CAAA,CAAIN,CAAAA,EAAa,CAChC,OAAOU,mBAAAA,CAAS,CACd,QAAA,CAAUgD,EAAAA,CAAuBtD,CAAM,CAAA,CACvC,OAAA,CAAS,SAAYuD,EAAAA,CAAoBrD,CAAAA,CAAQF,CAAM,CAAA,CACvD,GAAGI,CACL,CAAC,CACH,CClCO,SAASqD,EAAAA,CAAkBzD,CAAAA,CAA2C,CAC3E,OAAO,CACL,WAAA,CACAA,CAAAA,CAAO,KAAA,CACPA,CAAAA,CAAO,MAAA,CACPA,CAAAA,CAAO,OAAA,CAAU,CAAA,EAAGA,CAAAA,CAAO,OAAO,CAAA,CAAA,CAAK,EACzC,CACF,CAEA,eAAsB0D,EAAAA,CACpBxD,CAAAA,CACA,CAAE,MAAAC,CAAAA,CAAO,MAAA,CAAAwD,CAAAA,CAAQ,OAAA,CAAAC,CAAQ,CAAA,CACzB,CACA,OAAO,MAAM1D,CAAAA,CAAO,cAAA,CAAeC,CAAAA,CAAOwD,CAAAA,CAAQC,CAAO,CAC3D,CAEO,SAASC,EAAAA,CACd7D,CAAAA,CACAI,CAAAA,CAGI,EAAC,CACL,CACA,GAAM,CAAE,MAAA,CAAAF,CAAO,CAAA,CAAIN,CAAAA,GACnB,OAAOU,mBAAAA,CAAS,CACd,QAAA,CAAUmD,EAAAA,CAAkBzD,CAAM,CAAA,CAClC,OAAA,CAAS,SAAY0D,EAAAA,CAAexD,CAAAA,CAAQF,CAAM,CAAA,CAClD,GAAGI,CACL,CAAC,CACH,CC9BO,SAAS0D,EAAAA,CACd9D,CAAAA,CACU,CACV,OAAO,CAAC,kBAAA,CAAoBA,EAAO,KAAA,CAAOA,CAAAA,CAAO,OAAO,CAC1D,CAEA,eAAsB+D,EAAAA,CACpB7D,CAAAA,CACA,CAAE,KAAA,CAAAC,CAAAA,CAAO,OAAA,CAAA0B,CAAQ,CAAA,CACjB,CACA,OAAO,MAAM3B,CAAAA,CAAO,mBAAA,CAAoBC,CAAAA,CAAO0B,CAAO,CACxD,CAEO,SAASmC,EAAAA,CACdhE,CAAAA,CACAI,CAAAA,CAGI,EAAC,CACL,CACA,GAAM,CAAE,MAAA,CAAAF,CAAO,CAAA,CAAIN,CAAAA,EAAa,CAChC,OAAOU,mBAAAA,CAAS,CACd,QAAA,CAAUwD,EAAAA,CAAyB9D,CAAM,CAAA,CACzC,OAAA,CAAS,SAAY+D,EAAAA,CAAsB7D,CAAAA,CAAQF,CAAM,CAAA,CACzD,GAAGI,CACL,CAAC,CACH,CCzBO,SAAS6D,GACdjE,CAAAA,CACU,CACV,OAAO,CACL,uBAAA,CACAA,CAAAA,CAAO,KAAA,CACPA,CAAAA,CAAO,OAAA,CACPA,CAAAA,CAAO,MAAA,EAAQ,QAAA,EAAS,EAAK,EAAA,CAC7BA,EAAO,KAAA,EAAO,QAAA,EAAS,EAAK,EAAA,CAC5BA,CAAAA,CAAO,iBAAA,CAAoB,CAAA,EAAGA,CAAAA,CAAO,iBAAiB,CAAA,CAAA,CAAK,EAAA,CAC3DA,CAAAA,CAAO,gBAAA,CAAmB,CAAA,EAAGA,EAAO,gBAAgB,CAAA,CAAA,CAAK,EAAA,CACzDA,CAAAA,CAAO,IAAA,EAAQ,EAAA,CACfA,CAAAA,CAAO,WAAA,EAAe,EACxB,CACF,CAEA,eAAsBkE,EAAAA,CACpBhE,CAAAA,CACA,CAAE,KAAA,CAAAC,CAAAA,CAAO,OAAA,CAAA0B,CAAAA,CAAS,GAAGzB,CAAQ,CAAA,CAC7B,CACA,OAAO,MAAMF,CAAAA,CAAO,wBAAA,CAAyBC,CAAAA,CAAO0B,CAAAA,CAASzB,CAAO,CACtE,CAEO,SAAS+D,EAAAA,CACdnE,CAAAA,CACAI,CAAAA,CAQI,EAAC,CACL,CACA,GAAM,CAAE,MAAA,CAAAF,CAAO,CAAA,CAAIN,GAAa,CAChC,OAAOU,mBAAAA,CAAS,CACd,QAAA,CAAU2D,EAAAA,CAA8BjE,CAAM,CAAA,CAC9C,OAAA,CAAS,SAAYkE,EAAAA,CAA2BhE,CAAAA,CAAQF,CAAM,CAAA,CAC9D,GAAGI,CACL,CAAC,CACH,CCVO,SAASgE,CAAAA,CAAWjE,CAAAA,CAA2B,CACpD,OAAQA,CAAAA,EACN,KAAKkE,WAAAA,CAAM,QAAA,CACT,OAAOC,eAAAA,CAAY,GAAA,CACrB,KAAKD,WAAAA,CAAM,OAAA,CACT,OAAOC,eAAAA,CAAY,GAAA,CACrB,KAAKD,WAAAA,CAAM,MAAA,CACT,OAAOC,eAAAA,CAAY,GACvB,CACA,MAAM,IAAI,KAAA,CAAM,CAAA,mBAAA,EAAsBnE,CAAK,CAAA,CAAE,CAC/C,CAEO,SAASoE,CAAAA,CAAgBzC,CAAAA,CAAyC,CACvE,OAAQA,CAAAA,EACN,KAAK,IAAA,CACH,OAAO0C,cAAAA,CAAW,IAAI,CAAA,CACxB,KAAK,KAAA,CACH,OAAOA,cAAAA,CAAW,KAAK,CAAA,CACzB,KAAK,KAAA,CACH,OAAOA,cAAAA,CAAW,KAAK,CAAA,CACzB,KAAK,IAAA,CACH,OAAOA,cAAAA,CAAW,IAAI,EACxB,KAAK,IAAA,CACH,OAAOA,cAAAA,CAAW,IAAI,CAAA,CACxB,KAAK,KAAA,CACH,OAAOA,cAAAA,CAAW,KAAK,CAAA,CACzB,KAAK,KAAA,CACL,KAAK,IAAA,CACH,OAAOA,cAAAA,CAAW,IAAI,CAAA,CACxB,KAAK,IAAA,CACH,OAAOA,cAAAA,CAAW,IAAI,CAAA,CACxB,KAAK,KAAA,CACH,OAAOA,eAAW,KAAK,CAAA,CACzB,KAAK,KAAA,CACH,OAAOA,cAAAA,CAAW,IAAI,CAC1B,CACF,CAEO,SAASC,CAAAA,CAAmBC,CAAAA,CAAmC,CACpE,OAAQA,CAAAA,EACN,KAAK,KAAA,CACH,OAAO,KAAA,CACT,KAAK,MAAA,CACH,OAAO,MACX,CACF,CAEO,SAASC,CAAAA,CAAiBC,CAAAA,CAAqC,CACpE,OAAQA,CAAAA,EACN,KAAK,WAAA,CACH,OAAOC,gBAAAA,CAAa,cAAA,CACtB,KAAK,KAAA,CACH,OAAOA,gBAAAA,CAAa,cAAA,CACtB,KAAK,QACH,OAAOA,gBAAAA,CAAa,UAAA,CACtB,KAAK,SAAA,CACH,OAAOA,gBAAAA,CAAa,WAAA,CACtB,KAAK,YAAA,CACH,OAAOA,gBAAAA,CAAa,cAAA,CACtB,KAAK,YACH,OAAOA,gBAAAA,CAAa,eAAA,CACtB,KAAK,WAAA,CACH,OAAOA,gBAAAA,CAAa,cACxB,CACA,MAAM,IAAI,KAAA,CAAM,CAAA,0BAAA,EAA6BD,CAAK,CAAA,CAAE,CACtD,CAEO,SAASE,CAAAA,CAAWF,CAAAA,CAAqC,CAC9D,OAAQA,CAAAA,EACN,KAAK,OAAA,CACH,OAAOG,sBAAAA,CAAmB,oBAAA,CAC5B,KAAK,gBACH,OAAOA,sBAAAA,CAAmB,4BAAA,CAC5B,KAAK,eAAA,CACH,OAAOA,sBAAAA,CAAmB,4BAAA,CAC5B,KAAK,eAAA,CACH,OAAOA,sBAAAA,CAAmB,4BAAA,CAC5B,KAAK,gBACH,OAAOA,sBAAAA,CAAmB,4BAAA,CAC5B,KAAK,gBAAA,CACH,OAAOA,sBAAAA,CAAmB,6BAAA,CAC5B,KAAK,WAAA,CACH,OAAOA,sBAAAA,CAAmB,wBAAA,CAC5B,KAAK,MACH,OAAOA,sBAAAA,CAAmB,yBAAA,CAC5B,KAAK,eAAA,CACH,OAAOA,sBAAAA,CAAmB,4BAAA,CAC5B,KAAK,YAAA,CACH,OAAOA,sBAAAA,CAAmB,4BAAA,CAC5B,KAAK,gBAAA,CACH,OAAOA,sBAAAA,CAAmB,6BAAA,CAC5B,KAAK,aAAA,CACH,OAAOA,sBAAAA,CAAmB,6BAAA,CAC5B,KAAK,SAAA,CACH,OAAOA,sBAAAA,CAAmB,iBAAA,CAC5B,KAAK,kBAAA,CACH,OAAOA,sBAAAA,CAAmB,yBAAA,CAC5B,KAAK,eAAA,CACH,OAAOA,sBAAAA,CAAmB,8BAAA,CAC5B,KAAK,QAAA,CACH,OAAOA,sBAAAA,CAAmB,WAAA,CAC5B,KAAK,QAAA,CACH,OAAOA,sBAAAA,CAAmB,WAAA,CAC5B,KAAK,SAAA,CACH,OAAOA,sBAAAA,CAAmB,YAAA,CAC5B,KAAK,SAAA,CACH,OAAOA,sBAAAA,CAAmB,YAAA,CAC5B,KAAK,QAAA,CACH,OAAOA,sBAAAA,CAAmB,WAAA,CAC5B,KAAK,QAAA,CACH,OAAOA,sBAAAA,CAAmB,WAAA,CAC5B,KAAK,SAAA,CACH,OAAOA,sBAAAA,CAAmB,YAAA,CAC5B,KAAK,SAAA,CACH,OAAOA,sBAAAA,CAAmB,YAAA,CAC5B,KAAK,SAAA,CACH,OAAOA,sBAAAA,CAAmB,YAAA,CAC5B,KAAK,UAAA,CACH,OAAOA,sBAAAA,CAAmB,aAAA,CAC5B,KAAK,UAAA,CACH,OAAOA,sBAAAA,CAAmB,aAAA,CAC5B,KAAK,SAAA,CACH,OAAOA,sBAAAA,CAAmB,YAAA,CAC5B,KAAK,SAAA,CACH,OAAOA,sBAAAA,CAAmB,YAAA,CAC5B,KAAK,UAAA,CACH,OAAOA,sBAAAA,CAAmB,aAAA,CAC5B,KAAK,UAAA,CACH,OAAOA,sBAAAA,CAAmB,aAAA,CAC5B,KAAK,UAAA,CACH,OAAOA,sBAAAA,CAAmB,aAAA,CAC5B,KAAK,UAAA,CACH,OAAOA,sBAAAA,CAAmB,aAAA,CAC5B,KAAK,UAAA,CACH,OAAOA,sBAAAA,CAAmB,aAAA,CAC5B,KAAK,WAAA,CACH,OAAOA,sBAAAA,CAAmB,cAAA,CAC5B,KAAK,WAAA,CACH,OAAOA,sBAAAA,CAAmB,cAAA,CAC5B,KAAK,WAAA,CACH,OAAOA,sBAAAA,CAAmB,cAAA,CAC5B,KAAK,WAAA,CACH,OAAOA,sBAAAA,CAAmB,cAAA,CAC5B,KAAK,WAAA,CACH,OAAOA,uBAAmB,cAAA,CAC5B,KAAK,YAAA,CACH,OAAOA,sBAAAA,CAAmB,eAAA,CAC5B,KAAK,WAAA,CACH,OAAOA,sBAAAA,CAAmB,mBAAA,CAC5B,KAAK,WAAA,CACH,OAAOA,uBAAmB,mBAAA,CAC5B,KAAK,WAAA,CACH,OAAOA,sBAAAA,CAAmB,mBAAA,CAC5B,KAAK,WAAA,CACH,OAAOA,sBAAAA,CAAmB,mBAAA,CAC5B,KAAK,YAAA,CACH,OAAOA,uBAAmB,oBAAA,CAC5B,KAAK,WAAA,CACH,OAAOA,sBAAAA,CAAmB,cAC9B,CACA,MAAM,IAAI,KAAA,CAAM,CAAA,oBAAA,EAAuBH,CAAK,CAAA,CAAE,CAChD,CAEO,SAASI,CAAAA,CACdC,CAAAA,CACwB,CACxB,OAAOA,CAAAA,CACJ,MAAA,CACEC,CAAAA,EAAO,CAAC,IAAA,CAAM,KAAA,CAAO,IAAA,CAAM,KAAA,CAAO,SAAS,EAAE,OAAA,CAAQA,CAAAA,CAAG,QAAQ,CAAA,EAAK,CACxE,CAAA,CACC,GAAA,CAAKA,CAAAA,EAAO,CACX,IAAMC,CAAAA,CAAO,CAAE,KAAA,CAAOL,CAAAA,CAAWI,EAAG,KAAK,CAAE,CAAA,CAC3C,OAAI,CAAC,IAAA,CAAM,KAAA,CAAO,SAAS,CAAA,CAAE,OAAA,CAAQA,CAAAA,CAAG,QAAQ,CAAA,EAAK,CAAA,GACnDC,EAAK,GAAA,CACH,OAAOD,CAAAA,CAAG,KAAA,EAAU,QAAA,CAChB,IAAIE,mBAAAA,CAAcF,CAAAA,CAAG,KAAK,CAAA,CAAE,QAAA,EAAS,CACpCA,CAAAA,CAAG,KAAA,CAAA,CAER,CAAC,IAAA,CAAM,KAAA,CAAO,SAAS,CAAA,CAAE,OAAA,CAAQA,CAAAA,CAAG,QAAQ,CAAA,EAAK,CAAA,GACnDC,CAAAA,CAAK,GAAA,CACH,OAAOD,CAAAA,CAAG,KAAA,EAAU,QAAA,CAChB,IAAIE,mBAAAA,CAAcF,CAAAA,CAAG,KAAK,CAAA,CAAE,QAAA,EAAS,CACpCA,CAAAA,CAAG,KAAA,CAAA,CAELC,CACT,CAAC,CACL,CAEO,SAASE,EAAAA,CAAalF,EAAsB,CACjD,OAAQA,CAAAA,EACN,KAAKmE,eAAAA,CAAY,GAAA,CACf,OAAOD,WAAAA,CAAM,QAAA,CACf,KAAKC,eAAAA,CAAY,GAAA,CACf,OAAOD,YAAM,OAAA,CACf,KAAKC,eAAAA,CAAY,GAAA,CACjB,KAAK,QAAA,CACH,OAAOD,WAAAA,CAAM,MACjB,CACA,MAAM,IAAI,KAAA,CAAM,CAAA,mBAAA,EAAsBlE,CAAK,CAAA,CAAE,CAC/C,CAEO,SAASmF,EAAAA,CAAoBC,CAAAA,CAAuC,CACzE,OAAO,CACL,OAAA,CAASA,CAAAA,CAAM,OAAA,CACf,KAAA,CAAOA,CAAAA,CAAM,MACb,UAAA,CAAYA,CAAAA,CAAM,UACpB,CACF,CAEO,SAASC,CAAAA,CAAaD,CAAAA,CAAwB,CACnD,OAAO,CACL,KAAA,CAAOF,EAAAA,CAAaE,CAAAA,CAAM,KAAK,CAAA,CAC/B,IAAA,CAAMA,CAAAA,CAAM,IAAA,CACZ,MAAA,CAAQA,CAAAA,CAAM,MAAA,CACd,OAAA,CAASA,CAAAA,CAAM,OAAA,CACf,QAAA,CAAUA,CAAAA,CAAM,QAAA,CAChB,KAAA,CAAOA,EAAM,QAAA,CACb,WAAA,CAAaA,CAAAA,CAAM,WAAA,CACnB,QAAA,CAAUA,CAAAA,CAAM,aAAA,EAAe,GAAA,CAAID,EAAmB,CAAA,CACtD,YAAA,CAAc,CACZ,cAAA,CAAgBC,CAAAA,CAAM,KAAA,EAAO,wBAAA,CAC7B,cAAA,CAAgBA,CAAAA,CAAM,KAAA,EAAO,wBAC/B,CAAA,CACA,eAAA,CAAiBA,CAAAA,CAAM,UAAA,CAAW,eAAA,CAC9B,IAAIH,mBAAAA,CAAcG,CAAAA,CAAM,UAAA,CAAW,eAAe,EAC/C,SAAA,CAAU,CAAC,CAAA,CACX,QAAA,EAAS,CACZ,MAAA,CACJ,UAAA,CAAY,CACV,cAAA,CAAgBA,CAAAA,CAAM,KAAA,EAAO,wBAAA,CAC7B,cAAA,CAAgBA,CAAAA,CAAM,OAAO,wBAAA,CAC7B,WAAA,CAAaA,CAAAA,CAAM,KAAA,EAAO,qBAAA,CAC1B,UAAA,CAAYA,CAAAA,CAAM,KAAA,EAAO,UAAA,CACrB,IAAI,IAAA,CAAKA,CAAAA,CAAM,KAAA,CAAM,UAAU,EAC/B,MACN,CAAA,CACA,YAAA,CAAcA,CAAAA,CAAM,YAAA,CAAe,CAAE,GAAGA,CAAAA,CAAM,YAAa,CAAA,CAAI,MAAA,CAC/D,KAAA,CAAOA,CAAAA,CAAM,KAAA,CAAQE,EAAkBF,CAAAA,CAAM,KAAK,CAAA,CAAI,MAAA,CACtD,UAAA,CAAYA,CAAAA,CAAM,UAAA,CACdG,CAAAA,CAAuBH,CAAAA,CAAM,UAAU,CAAA,CACvC,MAAA,CACJ,WAAA,CAAaA,CAAAA,CAAM,WAAW,GAAA,CAAII,EAAqB,CAAA,CACvD,SAAA,CAAWJ,CAAAA,CAAM,cAAA,CACb,IAAI,IAAA,CAAKA,CAAAA,CAAM,cAAc,CAAA,CAC7B,MACN,CACF,CAEO,SAASE,CAAAA,CAAkBF,CAAAA,CAA8B,CAC9D,OAAO,CACJ,IAAA,CAAOK,CAAAA,CAA4BL,CAAAA,CAAO,IAAI,CAAA,CAC9C,IAAA,CAAOK,CAAAA,CAA4BL,CAAAA,CAAO,IAAI,EAC9C,KAAA,CAAQK,CAAAA,CAA4BL,CAAAA,CAAO,KAAK,CAAA,CAChD,KAAA,CAAQK,CAAAA,CAA4BL,CAAAA,CAAO,KAAK,CAAA,CAChD,IAAA,CAAOK,CAAAA,CAA4BL,CAAAA,CAAO,IAAI,CAAA,CAC9C,IAAA,CAAOK,CAAAA,CAA4BL,CAAAA,CAAO,IAAI,CAAA,CAC9C,KAAA,CAAQK,CAAAA,CAA4BL,CAAAA,CAAO,KAAK,CACnD,CACF,CAEA,SAASM,CAAAA,CAAiBC,CAAAA,CAA+C,CACvE,OAAOA,CAAAA,GAAU,MAAA,CAAY,MAAA,CAAY,QAAA,CAASA,CAAK,CACzD,CAEA,SAASF,CAAAA,CACPL,CAAAA,CACAzD,CAAAA,CACwB,CACxB,IAAMiE,EAASR,CAAAA,CAAM,OAAA,GAAUzD,CAAU,CAAA,CACzC,OAAKiE,CAAAA,CAIE,CACL,IAAA,CAAMF,CAAAA,CAAiBE,CAAAA,CAAO,IAAI,CAAA,CAClC,KAAA,CAAOF,CAAAA,CAAiBE,EAAO,KAAK,CAAA,CACpC,MAAA,CAAQF,CAAAA,CAAiBE,CAAAA,CAAO,MAAM,CAAA,CACtC,MAAA,CAAQF,CAAAA,CAAiBE,CAAAA,CAAO,MAAM,CAAA,CACtC,OAAA,CAASF,CAAAA,CAAiBE,EAAO,OAAO,CAAA,CACxC,OAAA,CAASF,CAAAA,CAAiBE,CAAAA,CAAO,OAAO,CAAA,CACxC,UAAA,CAAYA,CAAAA,CAAO,SAAA,CACnB,WAAA,CAAaA,CAAAA,CAAO,UAAA,CACpB,OAAA,CAASA,EAAO,mBAAA,CAChB,eAAA,CAAiBA,CAAAA,CAAO,cAAA,CACxB,gBAAA,CAAkBA,CAAAA,CAAO,eAAA,CACzB,YAAA,CAAcA,CAAAA,CAAO,gBAAA,CACrB,cAAA,CAAgBA,CAAAA,CAAO,SAAA,CACvB,eAAA,CAAiBA,EAAO,UAAA,CACxB,cAAA,CAAgBA,CAAAA,CAAO,SAAA,CACvB,aAAA,CAAeA,CAAAA,CAAO,QAAA,CACtB,UAAA,CAAYA,CAAAA,CAAO,UAAA,CACnB,WAAA,CAAaA,CAAAA,CAAO,qBACtB,CAAA,CAtBS,EAuBX,CAEO,SAASJ,EAAAA,CAAsBJ,CAAAA,CAAmC,CACvE,OAAO,CACL,KAAA,CAAOA,CAAAA,CAAM,KAAA,CACb,WAAA,CAAaA,CAAAA,CAAM,WAAA,CACnB,cAAA,CAAgBA,CAAAA,CAAM,cAAA,CACtB,cAAA,CAAgBA,CAAAA,CAAM,cAAA,CACtB,GAAA,CAAKA,CAAAA,CAAM,QAAA,CACX,QAAA,CAAUA,CAAAA,CAAM,QAClB,CACF,CAEO,SAASG,CAAAA,CACdH,EACiB,CACjB,OAAO,CACL,WAAA,CAAaA,CAAAA,CAAM,WAAA,CACnB,SAAA,CAAWA,CAAAA,CAAM,cAAA,CACjB,cAAA,CAAgBA,CAAAA,CAAM,cAAA,CACtB,KAAA,CAAOA,CAAAA,CAAM,WACb,UAAA,CAAYA,CAAAA,CAAM,UAAA,CAClB,GAAA,CAAKA,CAAAA,CAAM,aAAA,CACX,QAAA,CAAUA,CAAAA,CAAM,aAAA,CAChB,OAAA,CAAS,QAAA,CAASA,CAAAA,CAAM,OAAO,CAAA,CAC/B,cAAeA,CAAAA,CAAM,kBAAA,CACrB,kBAAA,CAAoBA,CAAAA,CAAM,kBAAA,CAC1B,aAAA,CAAeA,CAAAA,CAAM,kBAAA,CACrB,kBAAA,CAAoBA,CAAAA,CAAM,kBAAA,CAC1B,cAAA,CAAgBA,CAAAA,CAAM,mBAAA,CACtB,oBAAqBA,CAAAA,CAAM,mBAAA,CAC3B,eAAA,CACEA,CAAAA,CAAM,oBAAA,GAAyB,MAAA,CAC3B,MAAA,CACA,QAAA,CAASA,CAAAA,CAAM,oBAAoB,CAAA,CACzC,gBAAA,CAAkBA,CAAAA,CAAM,qBAAA,CACxB,sBAAuBA,CAAAA,CAAM,qBAAA,CAC7B,UAAA,CACEA,CAAAA,CAAM,eAAA,GAAoB,MAAA,CACtB,MAAA,CACA,QAAA,CAASA,CAAAA,CAAM,eAAe,CAAA,CACpC,WAAA,CAAaA,CAAAA,CAAM,gBAAA,CACnB,iBAAkBA,CAAAA,CAAM,gBAAA,CACxB,aAAA,CACEA,CAAAA,CAAM,kBAAA,GAAuB,MAAA,CACzB,MAAA,CACA,QAAA,CAASA,CAAAA,CAAM,kBAAkB,CAAA,CACvC,cAAA,CAAgBA,CAAAA,CAAM,mBAAA,CACtB,oBAAqBA,CAAAA,CAAM,mBAAA,CAC3B,UAAA,CACEA,CAAAA,CAAM,eAAA,GAAoB,MAAA,CACtB,MAAA,CACA,QAAA,CAASA,CAAAA,CAAM,eAAe,CAAA,CACpC,WAAA,CAAaA,CAAAA,CAAM,gBAAA,CACnB,gBAAA,CAAkBA,CAAAA,CAAM,gBAAA,CACxB,cAAA,CACEA,CAAAA,CAAM,mBAAA,GAAwB,MAAA,CAC1B,MAAA,CACA,QAAA,CAASA,CAAAA,CAAM,mBAAmB,CAAA,CACxC,eAAA,CAAiBA,CAAAA,CAAM,oBAAA,CACvB,oBAAA,CAAsBA,EAAM,oBAAA,CAC5B,eAAA,CACEA,CAAAA,CAAM,oBAAA,GAAyB,MAAA,CAC3B,MAAA,CACA,QAAA,CAASA,CAAAA,CAAM,oBAAoB,CAAA,CACzC,gBAAA,CAAkBA,CAAAA,CAAM,qBAAA,CACxB,qBAAA,CAAuBA,EAAM,qBAAA,CAC7B,YAAA,CACEA,CAAAA,CAAM,iBAAA,GAAsB,MAAA,CACxB,MAAA,CACA,QAAA,CAASA,CAAAA,CAAM,iBAAiB,CAAA,CACtC,aAAA,CAAeA,CAAAA,CAAM,kBAAA,CACrB,kBAAA,CAAoBA,EAAM,kBAAA,CAC1B,aAAA,CACEA,CAAAA,CAAM,kBAAA,GAAuB,MAAA,CACzB,MAAA,CACA,QAAA,CAASA,CAAAA,CAAM,kBAAkB,CAAA,CACvC,cAAA,CAAgBA,CAAAA,CAAM,mBAAA,CACtB,mBAAA,CAAqBA,EAAM,mBAAA,CAC3B,UAAA,CACEA,CAAAA,CAAM,eAAA,GAAoB,MAAA,CACtB,MAAA,CACA,QAAA,CAASA,CAAAA,CAAM,eAAe,CAAA,CACpC,WAAA,CAAaA,CAAAA,CAAM,gBAAA,CACnB,gBAAA,CAAkBA,EAAM,gBAC1B,CACF,CAEO,SAASS,CAAAA,CAAgBC,CAAAA,CAA0B,CACxD,MAAM,IAAI,KAAA,CAAM,yBAAyB,CAC3C,CAEO,SAASC,EAAkBD,CAAAA,CAA4B,CAC5D,MAAM,IAAI,KAAA,CAAM,yBAAyB,CAC3C,CACO,SAASE,CAAAA,CAAiBnG,CAAAA,CAAwC,CACvE,MAAM,IAAI,MAAM,yBAAyB,CAC3C,CAEO,SAASoG,CAAAA,CAAcpG,CAAAA,CAAuC,CACnE,MAAM,IAAI,KAAA,CAAM,yBAAyB,CAC3C,CAEO,SAASqG,CAAAA,CACdJ,CAAAA,CAC6B,CAC7B,MAAM,IAAI,KAAA,CAAM,yBAAyB,CAC3C,CAEO,SAASK,CAAAA,CACdL,CAAAA,CAC2B,CAC3B,MAAM,IAAI,KAAA,CAAM,yBAAyB,CAC3C,CAEO,SAASM,CAAAA,CAAcN,CAAAA,CAAuC,CACnE,MAAM,IAAI,KAAA,CAAM,yBAAyB,CAC3C,CAEO,SAASO,CAAAA,CAAiBP,EAAuC,CACtE,MAAM,IAAI,KAAA,CAAM,yBAAyB,CAC3C,CAEO,SAASQ,CAAAA,CAAqBR,CAAAA,CAA0C,CAC7E,MAAM,IAAI,KAAA,CAAM,yBAAyB,CAC3C,CAEO,SAASS,CAAAA,CAAcT,CAAAA,CAA+C,CAC3E,MAAM,IAAI,KAAA,CAAM,yBAAyB,CAC3C,CAEO,SAASU,CAAAA,CACdC,EACAX,CAAAA,CACqB,CACrB,MAAM,IAAI,KAAA,CAAM,yBAAyB,CAC3C,CAEO,SAASY,CAAAA,CACdD,CAAAA,CACAX,CAAAA,CACqB,CACrB,MAAM,IAAI,KAAA,CAAM,yBAAyB,CAC3C,CChaO,IAAMa,CAAAA,CAAN,KAA0D,CAI/D,WAAA,CACmBC,CAAAA,CACA3G,CAAAA,CACjB,CAFiB,IAAA,CAAA,WAAA,CAAA2G,CAAAA,CACA,aAAA3G,CAAAA,CAEjB,IAAA,CAAK,OAAA,CAAU,IAAI4G,qBAAAA,CAAkB,IAAA,CAAK,WAAA,CAAa,IAAA,CAAK,OAAO,EACrE,CAPiB,OAAA,CASjB,MAAM,QAAA,CAAS7G,EAAc0B,CAAAA,CAAiC,CAC5D,IAAMoF,CAAAA,CAAQ,MAAM,IAAA,CAAK,OAAA,CAAQ,KAAA,CAAM,QAAA,CAAS7C,CAAAA,CAAWjE,CAAK,CAAA,CAAG0B,CAAO,CAAA,CAC1E,OAAO2D,CAAAA,CAAayB,CAAK,CAC3B,CAEA,MAAM,SAAA,CACJ9G,CAAAA,CACA2C,CAAAA,CACuB,CAIvB,OAAA,CAHe,MAAM,IAAA,CAAK,OAAA,CAAQ,KAAA,CAAM,SAAA,CAAUsB,EAAWjE,CAAK,CAAA,CAAG,CACnE,cAAA,CAAgB2C,CAAAA,CAAU,IAAA,CAAK,GAAG,CACpC,CAAC,CAAA,EACa,GAAA,CAAI0C,CAAY,CAChC,CAEA,MAAM,eAAA,CACJrF,CAAAA,CACA0B,CAAAA,CACAC,CAAAA,CACA1B,CAAAA,CAC6B,CAW7B,OAAA,CAVgB,MAAM,IAAA,CAAK,OAAA,CAAQ,KAAA,CAAM,UAAA,CACvCgE,CAAAA,CAAWjE,CAAK,EAChB0B,CAAAA,CACA,CACE,UAAA,CAAY0C,CAAAA,CAAgBzC,CAAU,CAAA,CACtC,IAAA,CAAM1B,CAAAA,EAAS,KAAA,EAAO,OAAA,EAAQ,CAC9B,EAAA,CAAIA,CAAAA,EAAS,MAAA,EAAQ,SAAQ,CAC7B,KAAA,CAAOA,CAAAA,EAAS,KAClB,CACF,CAAA,EACe,GAAA,CAAI4F,CAAe,CACpC,CAEA,MAAM,gBAAA,CACJ7F,CAAAA,CACA0B,CAAAA,CACwB,CACP,MAAM,IAAA,CAAK,OAAA,CAAQ,KAAA,CAAM,WAAA,CACxCuC,CAAAA,CAAWjE,CAAK,CAAA,CAChB0B,CACF,EACA,OAAOqE,CAAAA,CAA0B,CACnC,CAEA,MAAM,aAAA,CAAc/F,CAAAA,CAAc0B,CAAAA,CAAsC,CACtE,IAAMqF,CAAAA,CAAQ,MAAM,IAAA,CAAK,OAAA,CAAQ,KAAA,CAAM,QAAA,CAAS9C,EAAWjE,CAAK,CAAA,CAAG0B,CAAO,CAAA,CAC1E,OAAO4D,CAAAA,CAAkByB,CAAK,CAChC,CAEA,MAAM,eAAA,CACJ/G,CAAAA,CACA0B,CAAAA,CACAzB,CAAAA,CACsC,CACtB,MAAM,IAAA,CAAK,OAAA,CAAQ,KAAA,CAAM,UAAA,CACvCgE,CAAAA,CAAWjE,CAAK,CAAA,CAChB0B,CAAAA,CACA,CACE,MAAA,CAAQzB,CAAAA,EAAS,MAAA,CACjB,MAAOA,CAAAA,EAAS,KAAA,CAChB,SAAA,CAAWA,CAAAA,EAAS,SACtB,CACF,EACA,OAAOiG,CAAAA,CAA2B,CACpC,CAEA,MAAM,kBAAA,CACJlG,EACA0B,CAAAA,CAC0B,CAC1B,IAAMsF,CAAAA,CAAa,MAAM,IAAA,CAAK,OAAA,CAAQ,KAAA,CAAM,aAAA,CAC1C/C,CAAAA,CAAWjE,CAAK,CAAA,CAChB0B,CACF,CAAA,CACA,OAAO6D,CAAAA,CAAuByB,CAAU,CAC1C,CAEA,MAAM,YAAA,CACJhH,CAAAA,CACAC,CAAAA,CACuB,CAoBvB,OAAA,CAnBe,MAAM,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,aAAagE,CAAAA,CAAWjE,CAAK,CAAA,CAAG,CACxE,MAAA,CAAQC,CAAAA,EAAS,MAAA,CACZ0E,CAAAA,CAAW1E,CAAAA,CAAQ,MAAM,CAAA,CAC1B,MAAA,CACJ,aAAA,CAAeA,CAAAA,EAAS,cACnBqE,CAAAA,CACCrE,CAAAA,CAAQ,aACV,CAAA,CACA,MAAA,CACJ,YAAA,CAAcA,CAAAA,EAAS,OAAA,CACnB4E,CAAAA,CAAkB5E,CAAAA,CAAQ,OAAO,CAAA,CACjC,MAAA,CACJ,iBAAA,CAAmBA,GAAS,OAAA,CACxBgH,CAAAA,CAA+BhH,CAAAA,CAAQ,OAAO,CAAA,CAC9C,MAAA,CACJ,cAAA,CAAgBA,CAAAA,EAAS,QAAA,CACzB,eAAA,CAAiBA,CAAAA,EAAS,eAE5B,CAAC,CAAA,EACa,IAAIoF,CAAY,CAChC,CAEA,MAAM,qBAAA,CACJrF,CAAAA,CACAC,CAAAA,CACuB,CAuBvB,OAAA,CAtBe,MAAM,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,qBAAA,CACxCgE,CAAAA,CAAWjE,CAAK,CAAA,CAChB,CACE,MAAA,CAAQC,CAAAA,EAAS,MAAA,CACZ0E,CAAAA,CAAW1E,CAAAA,CAAQ,MAAM,CAAA,CAC1B,MAAA,CACJ,aAAA,CAAeA,CAAAA,EAAS,aAAA,CACnBqE,CAAAA,CACCrE,EAAQ,aACV,CAAA,CACA,MAAA,CACJ,YAAA,CAAcA,CAAAA,EAAS,OAAA,CACnB4E,CAAAA,CAAkB5E,CAAAA,CAAQ,OAAO,CAAA,CACjC,MAAA,CACJ,iBAAA,CAAmBA,CAAAA,EAAS,OAAA,CACxBgH,EAA+BhH,CAAAA,CAAQ,OAAO,CAAA,CAC9C,MAAA,CACJ,cAAA,CAAgBA,CAAAA,EAAS,QAAA,CACzB,eAAA,CAAiBA,CAAAA,EAAS,eAE5B,CACF,CAAA,EACc,GAAA,CAAIoF,CAAY,CAChC,CAEA,MAAM,iBAAA,CACJrF,CAAAA,CACAC,CAAAA,CACuB,CAuBvB,OAAA,CAtBe,MAAM,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,iBAAA,CACxCgE,CAAAA,CAAWjE,CAAK,EAChB,CACE,MAAA,CAAQC,CAAAA,EAAS,MAAA,CACZ0E,CAAAA,CAAW1E,CAAAA,CAAQ,MAAM,CAAA,CAC1B,MAAA,CACJ,aAAA,CAAeA,CAAAA,EAAS,aAAA,CACnBqE,CAAAA,CACCrE,CAAAA,CAAQ,aACV,CAAA,CACA,MAAA,CACJ,YAAA,CAAcA,CAAAA,EAAS,OAAA,CACnB4E,CAAAA,CAAkB5E,CAAAA,CAAQ,OAAO,CAAA,CACjC,MAAA,CACJ,iBAAA,CAAmBA,CAAAA,EAAS,OAAA,CACxBgH,CAAAA,CAA+BhH,EAAQ,OAAO,CAAA,CAC9C,MAAA,CACJ,cAAA,CAAgBA,CAAAA,EAAS,QAAA,CACzB,eAAA,CAAiBA,CAAAA,EAAS,eAE5B,CACF,CAAA,EACc,GAAA,CAAIoF,CAAY,CAChC,CAEA,MAAM,iBAAA,CACJrF,CAAAA,CACA2B,CAAAA,CACA1B,CAAAA,CACuB,CAwBvB,OAAA,CAvBe,MAAM,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,YAAA,CACxCgE,CAAAA,CAAWjE,CAAK,CAAA,CAChB2B,CAAAA,CACA,CACE,MAAA,CAAQ1B,CAAAA,EAAS,MAAA,CACZ0E,CAAAA,CAAW1E,CAAAA,CAAQ,MAAM,CAAA,CAC1B,MAAA,CACJ,aAAA,CAAeA,CAAAA,EAAS,aAAA,CACnBqE,CAAAA,CACCrE,CAAAA,CAAQ,aACV,CAAA,CACA,MAAA,CACJ,YAAA,CAAcA,CAAAA,EAAS,OAAA,CACnB4E,CAAAA,CAAkB5E,CAAAA,CAAQ,OAAO,CAAA,CACjC,MAAA,CACJ,iBAAA,CAAmBA,CAAAA,EAAS,OAAA,CACxBgH,CAAAA,CAA+BhH,EAAQ,OAAO,CAAA,CAC9C,MAAA,CACJ,cAAA,CAAgBA,CAAAA,EAAS,QAAA,CACzB,eAAA,CAAiBA,CAAAA,EAAS,eAE5B,CACF,CAAA,EACc,GAAA,CAAIoF,CAAY,CAChC,CAEA,MAAM,cAAA,CACJrF,CAAAA,CACAC,CAAAA,CACuB,CAuBvB,OAAA,CAtBe,MAAM,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,eAAA,CACxCgE,CAAAA,CAAWjE,CAAK,CAAA,CAChB,CACE,MAAA,CAAQC,CAAAA,EAAS,MAAA,CACZ0E,CAAAA,CAAW1E,CAAAA,CAAQ,MAAM,CAAA,CAC1B,MAAA,CACJ,aAAA,CAAeA,CAAAA,EAAS,aAAA,CACnBqE,CAAAA,CACCrE,CAAAA,CAAQ,aACV,EACA,MAAA,CACJ,YAAA,CAAcA,CAAAA,EAAS,OAAA,CACnB4E,CAAAA,CAAkB5E,CAAAA,CAAQ,OAAO,CAAA,CACjC,MAAA,CACJ,iBAAA,CAAmBA,CAAAA,EAAS,OAAA,CACxBgH,CAAAA,CAA+BhH,CAAAA,CAAQ,OAAO,CAAA,CAC9C,MAAA,CACJ,cAAA,CAAgBA,CAAAA,EAAS,QAAA,CACzB,eAAA,CAAiBA,CAAAA,EAAS,eAE5B,CACF,CAAA,EACc,GAAA,CAAIoF,CAAY,CAChC,CAEA,MAAM,YAAA,CACJpF,CAAAA,CACoC,CAClB,MAAM,IAAA,CAAK,OAAA,CAAQ,KAAA,CAAM,MAAA,CAAO,CAChD,MAAA,CAAQA,CAAAA,EAAS,MAAA,EAAQ,GAAA,CAAIgE,CAAU,CAAA,CACvC,CAAA,CAAGhE,CAAAA,EAAS,OAAA,CACZ,KAAA,CAAOA,CAAAA,EAAS,KAAA,CAChB,MAAA,CAAQA,CAAAA,EAAS,MAAA,CACjB,MAAA,CAAQA,CAAAA,EAAS,MAAA,CACZuE,CAAAA,CAAiBvE,EAAQ,MAAM,CAAA,CAChC,MAAA,CACJ,IAAA,CAAMA,CAAAA,EAAS,aAEjB,CAAC,EACD,OAAOkG,CAAAA,CAAuB,CAChC,CAEA,MAAM,UAAUtG,CAAAA,CAAgD,CAChD,MAAM,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,KAAA,CACnCoE,CAAAA,CAAWpE,CAAAA,CAAO,KAAK,CAAA,CACvBmG,CAAAA,CAAuB,CACzB,EACA,OAAOI,CAAAA,CAAmB,CAC5B,CAEA,MAAM,MAAA,CAAOvG,CAAAA,CAAqD,CACjD,MAAM,KAAK,OAAA,CAAQ,WAAA,CAAY,IAAA,CAC5CoE,CAAAA,CAAWpE,CAAAA,CAAO,KAAK,CAAA,CACvBoG,CAAAA,CAAoB,CACtB,EACA,OAAOI,CAAAA,CAAuB,CAChC,CAEA,MAAM,cAAA,CACJrG,CAAAA,CACAwD,CAAAA,CACAC,CAAAA,CACkB,CAClB,GAAM,CAAE,MAAA,CAAAyD,CAAO,CAAA,CAAI,MAAM,IAAA,CAAK,QAAQ,UAAA,CAInC1D,CAAAA,CAAQC,CAAO,CAAA,CAClB,OAAOyD,CAAAA,CAAO,OAChB,CAEA,MAAM,mBAAA,CACJlH,CAAAA,CACA0B,CAAAA,CAC2B,CACR,MAAM,IAAA,CAAK,OAAA,CAAQ,MAAA,CAAO,gBAAA,CAC3CuC,CAAAA,CAAWjE,CAAK,CAAA,CAChB0B,CACF,EACA,OAAO4E,CAAAA,CAA+B,CACxC,CAEA,MAAM,wBAAA,CACJtG,CAAAA,CACA0B,CAAAA,CACAzB,CAAAA,CACwC,CACtB,MAAM,IAAA,CAAK,OAAA,CAAQ,KAAA,CAAM,SAAA,CAAUgE,CAAAA,CAAWjE,CAAK,EAAG,CACtE,aAAA,CAAe0B,CAAAA,CACf,MAAA,CAAQzB,CAAAA,EAAS,MAAA,CACjB,KAAA,CAAOA,CAAAA,EAAS,KAAA,CAChB,SAAA,CAAWA,CAAAA,EAAS,SAAA,CACpB,eAAA,CAAiBA,CAAAA,EAAS,QAAQ,OAAA,EAAQ,CAC1C,cAAA,CAAgBA,CAAAA,EAAS,KAAA,EAAO,OAAA,EAAQ,CACxC,iBAAA,CAAmBA,CAAAA,EAAS,iBAAA,CAC5B,gBAAA,CAAkBA,CAAAA,EAAS,gBAAA,CAC3B,WAAA,CAAaA,GAAS,WAAA,CACtB,IAAA,CAAMA,CAAAA,EAAS,IAAA,CACVA,CAAAA,CAAQ,IAAA,CAAK,WAAA,EAAY,CAC1B,MACN,CAAC,EACD,OAAOsG,CAAAA,CAAuB,CAChC,CAEA,MAAM,uBAAA,CACJvG,CAAAA,CACA0B,CAAAA,CACAzB,CAAAA,CACwC,CACtB,MAAM,IAAA,CAAK,OAAA,CAAQ,KAAA,CAAM,SAAA,CAAUgE,EAAWjE,CAAK,CAAA,CAAG,CACtE,YAAA,CAAc0B,CAAAA,CACd,MAAA,CAAQzB,CAAAA,EAAS,MAAA,CACjB,KAAA,CAAOA,CAAAA,EAAS,KAAA,CAChB,SAAA,CAAWA,CAAAA,EAAS,SAAA,CACpB,gBAAiBA,CAAAA,EAAS,MAAA,EAAQ,OAAA,EAAQ,CAC1C,cAAA,CAAgBA,CAAAA,EAAS,KAAA,EAAO,OAAA,EAAQ,CACxC,iBAAA,CAAmBA,CAAAA,EAAS,iBAAA,CAC5B,gBAAA,CAAkBA,CAAAA,EAAS,iBAC3B,WAAA,CAAaA,CAAAA,EAAS,WAAA,CACtB,IAAA,CAAMA,CAAAA,EAAS,IAAA,CACVA,CAAAA,CAAQ,IAAA,CAAK,WAAA,EAAY,CAC1B,MACN,CAAC,EACD,OAAOsG,CAAAA,CAAuB,CAChC,CAEA,MAAM,qBAAA,EAAyC,CAC7C,OAAO,MAAM,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,OAAA,EACjC,CAEA,mBAAA,CACEvG,EACA0B,CAAAA,CACAyF,CAAAA,CACmB,CACnB,MAAM,IAAI,KAAA,CAAM,yBAAyB,CAC3C,CAEA,wBAAA,CACEnH,CAAAA,CACA0B,CAAAA,CACAyF,CAAAA,CACmB,CACnB,MAAM,IAAI,KAAA,CAAM,yBAAyB,CAC3C,CAEA,mBAAA,CACEnH,CAAAA,CACA0B,CAAAA,CACAyF,CAAAA,CACmB,CACnB,MAAM,IAAI,KAAA,CAAM,yBAAyB,CAC3C,CAEA,qBAAA,CACEnH,CAAAA,CACA0B,CAAAA,CACAC,CAAAA,CACAwF,CAAAA,CACmB,CACnB,MAAM,IAAI,KAAA,CAAM,yBAAyB,CAC3C,CAEA,kBAAA,CACEnH,EACA0B,CAAAA,CACAyF,CAAAA,CACmB,CACnB,MAAM,IAAI,KAAA,CAAM,yBAAyB,CAC3C,CAEA,yBAAA,CACEnH,CAAAA,CACA0B,CAAAA,CACAyF,CAAAA,CACmB,CACnB,MAAM,IAAI,KAAA,CAAM,yBAAyB,CAC3C,CAEA,4BAAA,CACEnH,CAAAA,CACA0B,CAAAA,CACAyF,CAAAA,CACmB,CACnB,MAAM,IAAI,KAAA,CAAM,yBAAyB,CAC3C,CAEA,8BAAA,CACEnH,CAAAA,CACA0B,CAAAA,CACAyF,CAAAA,CACmB,CACnB,MAAM,IAAI,KAAA,CAAM,yBAAyB,CAC3C,CAEA,6BAAA,CACEnH,CAAAA,CACA0B,EACAyF,CAAAA,CACmB,CACnB,MAAM,IAAI,KAAA,CAAM,yBAAyB,CAC3C,CAEA,kBAAA,CACEnH,CAAAA,CACAmH,CAAAA,CACmB,CACnB,OAAO,IAAA,CAAK,OAAA,CAAQ,MAAA,CAAO,iBAAA,CAAkB,CAC3C,KAAA,CAAOlD,CAAAA,CAAWjE,CAAK,CAAA,CACvB,QAAA,CAAWoH,CAAAA,EACTD,CAAAA,CAAS,CAACX,CAAAA,CAA+B,CAAC,CAAC,CAC/C,CAAC,CACH,CAEA,uBAAA,CACExG,CAAAA,CACAmH,CAAAA,CACmB,CACnB,OAAO,IAAA,CAAK,OAAA,CAAQ,MAAA,CAAO,0BAAA,CAA2B,CACpD,MAAOlD,CAAAA,CAAWjE,CAAK,CAAA,CACvB,QAAA,CAAWoH,CAAAA,EACTD,CAAAA,CAASC,CAAAA,CAAK,GAAA,CAAKrC,CAAAA,EAAO2B,CAAAA,CAAqC,CAAC,CAAC,CACrE,CAAC,CACH,CAEA,4BAAA,CACE1G,CAAAA,CACAmH,CAAAA,CACmB,CACnB,MAAM,IAAI,KAAA,CAAM,yBAAyB,CAC3C,CAEA,uBAAA,CACEnH,CAAAA,CACAmH,CAAAA,CACmB,CACnB,MAAM,IAAI,KAAA,CAAM,yBAAyB,CAC3C,CACF,EAEA,SAASF,CAAAA,CACPnC,CAAAA,CAC2B,CAC3B,IAAMuC,CAAAA,CAASvC,EAAQ,IAAA,CACpBC,CAAAA,EAAOA,CAAAA,CAAG,KAAA,GAAU,4BACvB,CAAA,CACA,GAAKsC,CAAAA,CAGL,CAAA,GAAIA,CAAAA,CAAO,QAAA,GAAa,IAAA,CACtB,OAAO,CAACA,EAAO,KAAe,CAAA,CAEhC,GAAIA,CAAAA,CAAO,QAAA,GAAa,IAAA,CACtB,OAAOA,CAAAA,CAAO,KAAA,CAEhB,OAAA,CAAQ,IAAA,CAAK,2CAAA,CAA6CA,CAAM,EAAA,CAElE,CCzgBO,SAASC,EAAAA,CAAkB,CAChC,MAAA,CAAAvH,CAAAA,CACA,eAAA,CAAAwH,CAAAA,CACA,QAAA,CAAAC,CACF,CAAA,CAA2B,CACzB,OACEC,cAAAA,CAAClI,CAAAA,CAAiB,QAAA,CAAjB,CAA0B,KAAA,CAAO,CAAE,MAAA,CAAAQ,CAAAA,CAAQ,eAAA,CAAAwH,CAAgB,CAAA,CACzD,QAAA,CAAAC,CAAAA,CACH,CAEJ","file":"index.js","sourcesContent":["declare global {\n interface Window {\n __LIBERFI_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif (typeof window !== \"undefined\") {\n window.__LIBERFI_VERSION__ = window.__LIBERFI_VERSION__ || {};\n window.__LIBERFI_VERSION__[\"@liberfi.io/client\"] = \"0.1.22\";\n}\n\nexport default \"0.1.22\";\n","import { createContext } from \"react\";\nimport { API } from \"@liberfi.io/types\";\n\nexport interface DexClientContextValue {\n client: API.IClient;\n subscribeClient: API.ISubscribeClient;\n}\n\nexport const DexClientContext = createContext<DexClientContextValue>(\n {} as DexClientContextValue,\n);\n","import { useContext } from \"react\";\nimport { DexClientContext, DexClientContextValue } from \"../DexClientContext\";\n\nexport function useDexClient(): DexClientContextValue {\n const context = useContext(DexClientContext);\n if (!context) {\n throw new Error(\"useDexClient must be used within an DexClientProvider\");\n }\n return context;\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseFinalStretchTokensQueryParams\n extends API.GetTokenListOptions {\n chain: Chain;\n}\n\nexport function finalStretchTokensQueryKey(\n params: UseFinalStretchTokensQueryParams,\n): string[] {\n return [\n \"finalStretchTokens\",\n params.chain,\n params.sortBy ?? \"\",\n params.sortDirection ?? \"\",\n JSON.stringify((params.keywords ?? []).sort()),\n JSON.stringify((params.excludeKeywords ?? []).sort()),\n JSON.stringify(params.filters ?? []),\n ];\n}\n\nexport async function fetchFinalStretchTokens(\n client: API.IClient,\n { chain, ...options }: UseFinalStretchTokensQueryParams,\n) {\n return await client.getFinalStretchTokens(chain, options);\n}\n\nexport function useFinalStretchTokensQuery(\n params: UseFinalStretchTokensQueryParams,\n options: Omit<\n UseQueryOptions<Array<Token>, Error, Array<Token>, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: finalStretchTokensQueryKey(params),\n queryFn: async () => fetchFinalStretchTokens(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseMigratedTokensQueryParams extends API.GetTokenListOptions {\n chain: Chain;\n}\n\nexport function migratedTokensQueryKey(\n params: UseMigratedTokensQueryParams,\n): string[] {\n return [\n \"migratedTokens\",\n params.chain,\n params.sortBy ?? \"\",\n params.sortDirection ?? \"\",\n JSON.stringify((params.keywords ?? []).sort()),\n JSON.stringify((params.excludeKeywords ?? []).sort()),\n JSON.stringify(params.filters ?? []),\n ];\n}\n\nexport async function fetchMigratedTokens(\n client: API.IClient,\n { chain, ...options }: UseMigratedTokensQueryParams,\n) {\n return await client.getMigratedTokens(chain, options);\n}\n\nexport function useMigratedTokensQuery(\n params: UseMigratedTokensQueryParams,\n options: Omit<\n UseQueryOptions<Array<Token>, Error, Array<Token>, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: migratedTokensQueryKey(params),\n queryFn: async () => fetchMigratedTokens(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseNewTokensQueryParams extends API.GetTokenListOptions {\n chain: Chain;\n}\n\nexport function newTokensQueryKey(params: UseNewTokensQueryParams): string[] {\n return [\n \"newTokens\",\n params.chain,\n params.sortBy ?? \"\",\n params.sortDirection ?? \"\",\n JSON.stringify((params.keywords ?? []).sort()),\n JSON.stringify((params.excludeKeywords ?? []).sort()),\n JSON.stringify(params.filters ?? []),\n ];\n}\n\nexport async function fetchNewTokens(\n client: API.IClient,\n { chain, ...options }: UseNewTokensQueryParams,\n) {\n return await client.getNewTokens(chain, options);\n}\n\nexport function useNewTokensQuery(\n params: UseNewTokensQueryParams,\n options: Omit<\n UseQueryOptions<Array<Token>, Error, Array<Token>, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: newTokensQueryKey(params),\n queryFn: async () => fetchNewTokens(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport async function fetchPresignedUploadUrl(client: API.IClient) {\n return await client.getPresignedUploadUrl();\n}\n\nexport function usePresignedUploadUrlQuery(\n options: Omit<\n UseQueryOptions<string, Error, string, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: [\"presignedUploadUrl\"],\n queryFn: async () => fetchPresignedUploadUrl(client),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport type UseSearchTokensQueryParams = API.SearchTokensOptions;\n\nexport function searchTokensQueryKey(\n params: UseSearchTokensQueryParams,\n): string[] {\n return [\n \"searchTokens\",\n params.cursor ?? \"\",\n params.limit ? `${params.limit}` : \"\",\n params.direction ?? \"\",\n JSON.stringify((params.chains ?? []).sort()),\n params.keyword ?? \"\",\n JSON.stringify(params.filters ?? []),\n params.sortBy ?? \"\",\n params.sortDirection ?? \"\",\n ];\n}\n\nexport async function fetchSearchTokens(\n client: API.IClient,\n params: UseSearchTokensQueryParams,\n) {\n return await client.searchTokens(params);\n}\n\nexport function useSearchTokensQuery(\n params: UseSearchTokensQueryParams,\n options: Omit<\n UseQueryOptions<\n API.SearchTokenCursorList,\n Error,\n API.SearchTokenCursorList,\n string[]\n >,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: searchTokensQueryKey(params),\n queryFn: async () => fetchSearchTokens(client, params),\n ...options,\n });\n}\n","import { useMutation, UseMutationOptions } from \"@tanstack/react-query\";\nimport { API } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport type UseSendTxMutationParams = API.SendTxParams;\n\nexport async function sendTx(\n client: API.IClient,\n params: UseSendTxMutationParams,\n) {\n return await client.sendTx(params);\n}\n\nexport function useSendTxMutation(\n options: Omit<\n UseMutationOptions<API.SendTxResult, Error, UseSendTxMutationParams>,\n \"mutationFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useMutation({\n mutationFn: async (params: UseSendTxMutationParams) =>\n sendTx(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseStockTokensQueryParams extends API.GetTokenListOptions {\n chain: Chain;\n}\n\nexport function stockTokensQueryKey(\n params: UseStockTokensQueryParams,\n): string[] {\n return [\n \"stockTokens\",\n params.chain,\n params.sortBy ?? \"\",\n params.sortDirection ?? \"\",\n JSON.stringify((params.keywords ?? []).sort()),\n JSON.stringify((params.excludeKeywords ?? []).sort()),\n JSON.stringify(params.filters ?? []),\n ];\n}\n\nexport async function fetchStockTokens(\n client: API.IClient,\n { chain, ...options }: UseStockTokensQueryParams,\n) {\n return await client.getStockTokens(chain, options);\n}\n\nexport function useStockTokensQuery(\n params: UseStockTokensQueryParams,\n options: Omit<\n UseQueryOptions<Array<Token>, Error, Array<Token>, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: stockTokensQueryKey(params),\n queryFn: async () => fetchStockTokens(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport type UseSwapRouteQueryParams = API.SwapParams;\n\nexport function swapRouteQueryKey(params: UseSwapRouteQueryParams): string[] {\n return [\n \"swapRoute\",\n params.chain,\n params.userAddress,\n params.input,\n params.output,\n params.mode,\n params.amount,\n params.slippage ? `${params.slippage}` : \"\",\n params.priorityFee ?? \"\",\n params.tipFee ?? \"\",\n params.isAntiMev !== undefined ? `${params.isAntiMev}` : \"\",\n ];\n}\n\nexport async function fetchSwapRoute(\n client: API.IClient,\n params: UseSwapRouteQueryParams,\n) {\n return await client.swapRoute(params);\n}\n\nexport function useSwapRouteQuery(\n params: UseSwapRouteQueryParams,\n options: Omit<\n UseQueryOptions<API.SwapRoute, Error, API.SwapRoute, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: swapRouteQueryKey(params),\n queryFn: async () => fetchSwapRoute(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, TokenCandle, TokenResolution } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenCandlesQueryParams extends API.GetTokenCandlesOptions {\n chain: Chain;\n address: string;\n resolution: TokenResolution;\n}\n\nexport function tokenCandlesQueryKey(\n params: UseTokenCandlesQueryParams,\n): string[] {\n return [\n \"tokenCandles\",\n params.chain,\n params.address,\n params.resolution,\n params.after?.toString() ?? \"\",\n params.before?.toString() ?? \"\",\n params.limit ? `${params.limit}` : \"\",\n ];\n}\n\nexport async function fetchTokenCandles(\n client: API.IClient,\n { chain, address, resolution, ...options }: UseTokenCandlesQueryParams,\n) {\n return await client.getTokenCandles(chain, address, resolution, options);\n}\n\nexport function useTokenCandlesQuery(\n params: UseTokenCandlesQueryParams,\n options: Omit<\n UseQueryOptions<Array<TokenCandle>, Error, Array<TokenCandle>, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokenCandlesQueryKey(params),\n queryFn: async () => fetchTokenCandles(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, TokenHolder } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenHoldersQueryParams extends API.CursorListOptions {\n chain: Chain;\n address: string;\n}\n\nexport function tokenHoldersQueryKey(\n params: UseTokenHoldersQueryParams,\n): string[] {\n return [\n \"tokenHolders\",\n params.chain,\n params.address,\n params.cursor ?? \"\",\n params.limit ? `${params.limit}` : \"\",\n params.direction ?? \"\",\n ];\n}\n\nexport async function fetchTokenHolders(\n client: API.IClient,\n { chain, address, ...options }: UseTokenHoldersQueryParams,\n) {\n return await client.getTokenHolders(chain, address, options);\n}\n\nexport function useTokenHoldersQuery(\n params: UseTokenHoldersQueryParams,\n options: Omit<\n UseQueryOptions<\n API.CursorList<TokenHolder>,\n Error,\n API.CursorList<TokenHolder>,\n string[]\n >,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokenHoldersQueryKey(params),\n queryFn: async () => fetchTokenHolders(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, TokenMarketData } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenMarketDataQueryParams {\n chain: Chain;\n address: string;\n}\n\nexport function tokenMarketDataQueryKey(\n params: UseTokenMarketDataQueryParams,\n): string[] {\n return [\"tokenMarketData\", params.chain, params.address];\n}\n\nexport async function fetchTokenMarketData(\n client: API.IClient,\n { chain, address }: UseTokenMarketDataQueryParams,\n) {\n return await client.getTokenMarketData(chain, address);\n}\n\nexport function useTokenMarketDataQuery(\n params: UseTokenMarketDataQueryParams,\n options: Omit<\n UseQueryOptions<TokenMarketData, Error, TokenMarketData, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokenMarketDataQueryKey(params),\n queryFn: async () => fetchTokenMarketData(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenQueryParams {\n chain: Chain;\n address: string;\n}\n\nexport function tokenQueryKey(params: UseTokenQueryParams): string[] {\n return [\"token\", params.chain, params.address];\n}\n\nexport async function fetchToken(\n client: API.IClient,\n { chain, address }: UseTokenQueryParams,\n) {\n return await client.getToken(chain, address);\n}\n\nexport function useTokenQuery(\n params: UseTokenQueryParams,\n options: Omit<\n UseQueryOptions<Token, Error, Token, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokenQueryKey(params),\n queryFn: async () => fetchToken(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, TokenSecurity } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenSecurityQueryParams {\n chain: Chain;\n address: string;\n}\n\nexport function tokenSecurityQueryKey(\n params: UseTokenSecurityQueryParams,\n): string[] {\n return [\"tokenSecurity\", params.chain, params.address];\n}\n\nexport async function fetchTokenSecurity(\n client: API.IClient,\n { chain, address }: UseTokenSecurityQueryParams,\n) {\n return await client.getTokenSecurity(chain, address);\n}\n\nexport function useTokenSecurityQuery(\n params: UseTokenSecurityQueryParams,\n options: Omit<\n UseQueryOptions<TokenSecurity, Error, TokenSecurity, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokenSecurityQueryKey(params),\n queryFn: async () => fetchTokenSecurity(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokensQueryParams {\n chain: Chain;\n addresses: Array<string>;\n}\n\nexport function tokensQueryKey(params: UseTokensQueryParams): string[] {\n return [\"tokens\", params.chain, params.addresses.sort().join(\",\")];\n}\n\nexport async function fetchTokens(\n client: API.IClient,\n { chain, addresses }: UseTokensQueryParams,\n) {\n return await client.getTokens(chain, addresses);\n}\n\nexport function useTokensQuery(\n params: UseTokensQueryParams,\n options: Omit<\n UseQueryOptions<Array<Token>, Error, Array<Token>, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokensQueryKey(params),\n queryFn: async () => fetchTokens(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, TokenStats } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenStatsQueryParams {\n chain: Chain;\n address: string;\n}\n\nexport function tokenStatsQueryKey(params: UseTokenStatsQueryParams): string[] {\n return [\"tokenStats\", params.chain, params.address];\n}\n\nexport async function fetchTokenStats(\n client: API.IClient,\n { chain, address }: UseTokenStatsQueryParams,\n) {\n return await client.getTokenStats(chain, address);\n}\n\nexport function useTokenStatsQuery(\n params: UseTokenStatsQueryParams,\n options: Omit<\n UseQueryOptions<TokenStats, Error, TokenStats, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokenStatsQueryKey(params),\n queryFn: async () => fetchTokenStats(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, TradeActivity } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenTradeActivitiesQueryParams\n extends API.GetTradeActivitiesOptions {\n chain: Chain;\n address: string;\n}\n\nexport function tokenTradeActivitiesQueryKey(\n params: UseTokenTradeActivitiesQueryParams,\n): string[] {\n return [\n \"tokenTradeActivities\",\n params.chain,\n params.address,\n params.before?.toString() ?? \"\",\n params.after?.toString() ?? \"\",\n params.beforeBlockHeight ? `${params.beforeBlockHeight}` : \"\",\n params.afterBlockHeight ? `${params.afterBlockHeight}` : \"\",\n params.type ?? \"\",\n params.poolAddress ?? \"\",\n ];\n}\n\nexport async function fetchTokenTradeActivities(\n client: API.IClient,\n { chain, address, ...options }: UseTokenTradeActivitiesQueryParams,\n) {\n return await client.getTokenTradeActivities(chain, address, options);\n}\n\nexport function useTokenTradeActivitiesQuery(\n params: UseTokenTradeActivitiesQueryParams,\n options: Omit<\n UseQueryOptions<\n API.CursorList<TradeActivity>,\n Error,\n API.CursorList<TradeActivity>,\n string[]\n >,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokenTradeActivitiesQueryKey(params),\n queryFn: async () => fetchTokenTradeActivities(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTrendingTokensQueryParams extends API.GetTokenListOptions {\n chain: Chain;\n resolution: \"1m\" | \"5m\" | \"1h\" | \"4h\" | \"24h\";\n}\n\nexport function trendingTokensQueryKey(\n params: UseTrendingTokensQueryParams,\n): string[] {\n return [\n \"trendingTokens\",\n params.chain,\n params.resolution,\n params.sortBy ?? \"\",\n params.sortDirection ?? \"\",\n JSON.stringify((params.keywords ?? []).sort()),\n JSON.stringify((params.excludeKeywords ?? []).sort()),\n JSON.stringify(params.filters ?? []),\n ];\n}\n\nexport async function fetchTrendingTokens(\n client: API.IClient,\n { chain, resolution, ...options }: UseTrendingTokensQueryParams,\n) {\n return await client.getTrendingTokens(chain, resolution, options);\n}\n\nexport function useTrendingTokensQuery(\n params: UseTrendingTokensQueryParams,\n options: Omit<\n UseQueryOptions<Array<Token>, Error, Array<Token>, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: trendingTokensQueryKey(params),\n queryFn: async () => fetchTrendingTokens(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTxSuccessQueryParams {\n chain: Chain;\n txHash: string;\n timeout?: number;\n}\n\nexport function txSuccessQueryKey(params: UseTxSuccessQueryParams): string[] {\n return [\n \"txSuccess\",\n params.chain,\n params.txHash,\n params.timeout ? `${params.timeout}` : \"\",\n ];\n}\n\nexport async function fetchTxSuccess(\n client: API.IClient,\n { chain, txHash, timeout }: UseTxSuccessQueryParams,\n) {\n return await client.checkTxSuccess(chain, txHash, timeout);\n}\n\nexport function useTxSuccessQuery(\n params: UseTxSuccessQueryParams,\n options: Omit<\n UseQueryOptions<boolean, Error, boolean, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: txSuccessQueryKey(params),\n queryFn: async () => fetchTxSuccess(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, WalletPortfolios } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletPortfoliosQueryParams {\n chain: Chain;\n address: string;\n}\n\nexport function walletPortfoliosQueryKey(\n params: UseWalletPortfoliosQueryParams,\n): string[] {\n return [\"walletPortfolios\", params.chain, params.address];\n}\n\nexport async function fetchWalletPortfolios(\n client: API.IClient,\n { chain, address }: UseWalletPortfoliosQueryParams,\n) {\n return await client.getWalletPortfolios(chain, address);\n}\n\nexport function useWalletPortfoliosQuery(\n params: UseWalletPortfoliosQueryParams,\n options: Omit<\n UseQueryOptions<WalletPortfolios, Error, WalletPortfolios, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: walletPortfoliosQueryKey(params),\n queryFn: async () => fetchWalletPortfolios(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, TradeActivity } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletTradeActivitiesQueryParams\n extends API.GetTradeActivitiesOptions {\n chain: Chain;\n address: string;\n}\n\nexport function walletTradeActivitiesQueryKey(\n params: UseWalletTradeActivitiesQueryParams,\n): string[] {\n return [\n \"walletTradeActivities\",\n params.chain,\n params.address,\n params.before?.toString() ?? \"\",\n params.after?.toString() ?? \"\",\n params.beforeBlockHeight ? `${params.beforeBlockHeight}` : \"\",\n params.afterBlockHeight ? `${params.afterBlockHeight}` : \"\",\n params.type ?? \"\",\n params.poolAddress ?? \"\",\n ];\n}\n\nexport async function fetchWalletTradeActivities(\n client: API.IClient,\n { chain, address, ...options }: UseWalletTradeActivitiesQueryParams,\n) {\n return await client.getWalletTradeActivities(chain, address, options);\n}\n\nexport function useWalletTradeActivitiesQuery(\n params: UseWalletTradeActivitiesQueryParams,\n options: Omit<\n UseQueryOptions<\n API.CursorList<TradeActivity>,\n Error,\n API.CursorList<TradeActivity>,\n string[]\n >,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: walletTradeActivitiesQueryKey(params),\n queryFn: async () => fetchWalletTradeActivities(client, params),\n ...options,\n });\n}\n","import {\n Token as TokenDTO,\n Resolution,\n Candle,\n TokenStat,\n TokenHolderPage,\n TokenMarketData as TokenMarketDataDTO,\n GetNewTokensSortBy,\n FilterCondition,\n SearchSortBy,\n TokenPage as ChainStreamTokenPage,\n SwapRouteResponse,\n SwapRouteInput,\n SendTxInput,\n SendTxResponse,\n TokensBalancePage,\n TradePage,\n DexPoolDTO,\n ChainSymbol,\n TokenCreatorsDTO,\n WsNewToken,\n WsTokenMetadata,\n} from \"@chainstream-io/sdk\";\nimport {\n API,\n Chain,\n Token,\n TokenCandle,\n TokenCreator,\n TokenHolder,\n TokenLiquidity,\n TokenMarketData,\n TokenResolution,\n TokenSecurity,\n TokenStats,\n TokenStatsByResolution,\n TradeActivity,\n WalletPortfolios,\n} from \"@liberfi.io/types\";\nimport { SafeBigNumber } from \"@liberfi.io/utils\";\n\nexport function toChainDTO(chain: Chain): ChainSymbol {\n switch (chain) {\n case Chain.ETHEREUM:\n return ChainSymbol.eth;\n case Chain.BINANCE:\n return ChainSymbol.bsc;\n case Chain.SOLANA:\n return ChainSymbol.sol;\n }\n throw new Error(`Unsupported chain: ${chain}`);\n}\n\nexport function toResolutionDTO(resolution: TokenResolution): Resolution {\n switch (resolution) {\n case \"1s\":\n return Resolution[\"1s\"];\n case \"15s\":\n return Resolution[\"15s\"];\n case \"30s\":\n return Resolution[\"30s\"];\n case \"1m\":\n return Resolution[\"1m\"];\n case \"5m\":\n return Resolution[\"5m\"];\n case \"15m\":\n return Resolution[\"15m\"];\n case \"30m\":\n case \"1h\":\n return Resolution[\"1h\"];\n case \"4h\":\n return Resolution[\"4h\"];\n case \"12h\":\n return Resolution[\"12h\"];\n case \"24h\":\n return Resolution[\"1d\"];\n }\n}\n\nexport function toSortDirectionDTO(direction: \"asc\" | \"desc\"): string {\n switch (direction) {\n case \"asc\":\n return \"ASC\";\n case \"desc\":\n return \"DESC\";\n }\n}\n\nexport function toSearchFieldDTO(field: API.TokenFieldOption): string {\n switch (field) {\n case \"marketCap\":\n return SearchSortBy.marketCapInUsd;\n case \"tvl\":\n return SearchSortBy.liquidityInUsd;\n case \"price\":\n return SearchSortBy.priceInUsd;\n case \"holders\":\n return SearchSortBy.holderCount;\n case \"volumes24h\":\n return SearchSortBy.h24VolumeInUsd;\n case \"trades24h\":\n return SearchSortBy.h24Transactions;\n case \"createdAt\":\n return SearchSortBy.tokenCreatedAt;\n }\n throw new Error(`Unsupported search field: ${field}`);\n}\n\nexport function toFieldDTO(field: API.TokenFieldOption): string {\n switch (field) {\n case \"price\":\n return GetNewTokensSortBy.marketDatapriceInUsd;\n case \"priceChange1m\":\n return GetNewTokensSortBy.statspriceChangeRatioInUsd1m;\n case \"priceChange5m\":\n return GetNewTokensSortBy.statspriceChangeRatioInUsd5m;\n case \"priceChange1h\":\n return GetNewTokensSortBy.statspriceChangeRatioInUsd1h;\n case \"priceChange4h\":\n return GetNewTokensSortBy.statspriceChangeRatioInUsd4h;\n case \"priceChange24h\":\n return GetNewTokensSortBy.statspriceChangeRatioInUsd24h;\n case \"marketCap\":\n return GetNewTokensSortBy.marketDatamarketCapInUsd;\n case \"tvl\":\n return GetNewTokensSortBy.marketDatamaxPoolTvlInUsd;\n case \"top10Holdings\":\n return GetNewTokensSortBy.marketDatatop10TotalHoldings;\n case \"top10Ratio\":\n return GetNewTokensSortBy.marketDatatop10HoldingsRatio;\n case \"top100Holdings\":\n return GetNewTokensSortBy.marketDatatop100TotalHoldings;\n case \"top100Ratio\":\n return GetNewTokensSortBy.marketDatatop100HoldingsRatio;\n case \"holders\":\n return GetNewTokensSortBy.marketDataholders;\n case \"creatorsHoldings\":\n return GetNewTokensSortBy.marketDatacreatorHoldings;\n case \"creatorsRatio\":\n return GetNewTokensSortBy.marketDatacreatorHoldingsRatio;\n case \"buys1m\":\n return GetNewTokensSortBy.statsbuys1m;\n case \"buys5m\":\n return GetNewTokensSortBy.statsbuys5m;\n case \"buys15m\":\n return GetNewTokensSortBy.statsbuys15m;\n case \"buys30m\":\n return GetNewTokensSortBy.statsbuys30m;\n case \"buys1h\":\n return GetNewTokensSortBy.statsbuys1h;\n case \"buys4h\":\n return GetNewTokensSortBy.statsbuys4h;\n case \"buys24h\":\n return GetNewTokensSortBy.statsbuys24h;\n case \"sells1m\":\n return GetNewTokensSortBy.statssells1m;\n case \"sells5m\":\n return GetNewTokensSortBy.statssells5m;\n case \"sells15m\":\n return GetNewTokensSortBy.statssells15m;\n case \"sells30m\":\n return GetNewTokensSortBy.statssells30m;\n case \"sells1h\":\n return GetNewTokensSortBy.statssells1h;\n case \"sells4h\":\n return GetNewTokensSortBy.statssells4h;\n case \"sells24h\":\n return GetNewTokensSortBy.statssells24h;\n case \"trades1m\":\n return GetNewTokensSortBy.statstrades1m;\n case \"trades5m\":\n return GetNewTokensSortBy.statstrades5m;\n case \"trades1h\":\n return GetNewTokensSortBy.statstrades1h;\n case \"trades4h\":\n return GetNewTokensSortBy.statstrades4h;\n case \"trades24h\":\n return GetNewTokensSortBy.statstrades24h;\n case \"traders1m\":\n return GetNewTokensSortBy.statstraders1m;\n case \"traders5m\":\n return GetNewTokensSortBy.statstraders5m;\n case \"traders1h\":\n return GetNewTokensSortBy.statstraders1h;\n case \"traders4h\":\n return GetNewTokensSortBy.statstraders4h;\n case \"traders24h\":\n return GetNewTokensSortBy.statstraders24h;\n case \"volumes1m\":\n return GetNewTokensSortBy.statsvolumesInUsd1m;\n case \"volumes5m\":\n return GetNewTokensSortBy.statsvolumesInUsd5m;\n case \"volumes1h\":\n return GetNewTokensSortBy.statsvolumesInUsd1h;\n case \"volumes4h\":\n return GetNewTokensSortBy.statsvolumesInUsd4h;\n case \"volumes24h\":\n return GetNewTokensSortBy.statsvolumesInUsd24h;\n case \"createdAt\":\n return GetNewTokensSortBy.tokenCreatedAt;\n }\n throw new Error(`Unsupported sortBy: ${field}`);\n}\n\nexport function toRangeFiltersDTO(\n filters: Array<API.TokenFilterOption>,\n): Array<FilterCondition> {\n return filters\n .filter(\n (it) => [\"gt\", \"gte\", \"lt\", \"lte\", \"between\"].indexOf(it.operator) >= 0,\n )\n .map((it) => {\n const cond = { field: toFieldDTO(it.field) } as FilterCondition;\n if ([\"gt\", \"gte\", \"between\"].indexOf(it.operator) >= 0) {\n cond.min =\n typeof it.value === \"number\"\n ? new SafeBigNumber(it.value).toString()\n : (it.value as string);\n }\n if ([\"lt\", \"lte\", \"between\"].indexOf(it.operator) >= 0) {\n cond.max =\n typeof it.value === \"number\"\n ? new SafeBigNumber(it.value).toString()\n : (it.value as string);\n }\n return cond;\n });\n}\n\nexport function fromChainDTO(chain: string): Chain {\n switch (chain) {\n case ChainSymbol.eth:\n return Chain.ETHEREUM;\n case ChainSymbol.bsc:\n return Chain.BINANCE;\n case ChainSymbol.sol:\n case \"solana\":\n return Chain.SOLANA;\n }\n throw new Error(`Unsupported chain: ${chain}`);\n}\n\nexport function fromTokenCreatorDTO(input: TokenCreatorsDTO): TokenCreator {\n return {\n address: input.address,\n share: input.share,\n isVerified: input.isVerified,\n };\n}\n\nexport function fromTokenDTO(input: TokenDTO): Token {\n return {\n chain: fromChainDTO(input.chain),\n name: input.name,\n symbol: input.symbol,\n address: input.address,\n decimals: input.decimals,\n image: input.imageUrl,\n description: input.description,\n creators: input.tokenCreators?.map(fromTokenCreatorDTO),\n launchedFrom: {\n programAddress: input.extra?.launchFromProgramAddress,\n protocolFamily: input.extra?.launchFromProtocolFamily,\n },\n migrateProgress: input.marketData.completionRatio\n ? new SafeBigNumber(input.marketData.completionRatio)\n .shiftedBy(2)\n .toString()\n : undefined,\n migratedTo: {\n programAddress: input.extra?.migratedToProgramAddress,\n protocolFamily: input.extra?.migratedToProtocolFamily,\n poolAddress: input.extra?.migratedToPoolAddress,\n migratedAt: input.extra?.migratedAt\n ? new Date(input.extra.migratedAt)\n : undefined,\n },\n socialMedias: input.socialMedias ? { ...input.socialMedias } : undefined,\n stats: input.stats ? fromTokenStatsDTO(input.stats) : undefined,\n marketData: input.marketData\n ? fromTokenMarketDataDTO(input.marketData)\n : undefined,\n liquidities: input.liquidity?.map(fromTokenLiquidityDTO),\n createdAt: input.tokenCreatedAt\n ? new Date(input.tokenCreatedAt)\n : undefined,\n };\n}\n\nexport function fromTokenStatsDTO(input: TokenStat): TokenStats {\n return {\n [\"1m\"]: parseTokenStatsByResolution(input, \"1m\"),\n [\"5m\"]: parseTokenStatsByResolution(input, \"5m\"),\n [\"15m\"]: parseTokenStatsByResolution(input, \"15m\"),\n [\"30m\"]: parseTokenStatsByResolution(input, \"30m\"),\n [\"1h\"]: parseTokenStatsByResolution(input, \"1h\"),\n [\"4h\"]: parseTokenStatsByResolution(input, \"4h\"),\n [\"24h\"]: parseTokenStatsByResolution(input, \"24h\"),\n };\n}\n\nfunction toOptionalNumber(value: string | undefined): number | undefined {\n return value === undefined ? undefined : parseInt(value);\n}\n\nfunction parseTokenStatsByResolution(\n input: TokenStat,\n resolution: TokenResolution,\n): TokenStatsByResolution {\n const period = input.periods?.[resolution];\n if (!period) {\n return {};\n }\n\n return {\n buys: toOptionalNumber(period.buys),\n sells: toOptionalNumber(period.sells),\n trades: toOptionalNumber(period.trades),\n buyers: toOptionalNumber(period.buyers),\n sellers: toOptionalNumber(period.sellers),\n traders: toOptionalNumber(period.traders),\n buyVolumes: period.buyVolume,\n sellVolumes: period.sellVolume,\n volumes: period.totalVolumeInNative,\n buyVolumesInUsd: period.buyVolumeInUsd,\n sellVolumesInUsd: period.sellVolumeInUsd,\n volumesInUsd: period.totalVolumeInUsd,\n openPriceInUsd: period.openInUsd,\n closePriceInUsd: period.closeInUsd,\n highPriceInUsd: period.highInUsd,\n lowPriceInUsd: period.lowInUsd,\n priceInUsd: period.closeInUsd,\n priceChange: period.priceChangeRatioInUsd,\n };\n}\n\nexport function fromTokenLiquidityDTO(input: DexPoolDTO): TokenLiquidity {\n return {\n image: input.image,\n poolAddress: input.poolAddress,\n programAddress: input.programAddress,\n protocolFamily: input.protocolFamily,\n tvl: input.tvlInSol,\n tvlInUsd: input.tvlInUsd,\n };\n}\n\nexport function fromTokenMarketDataDTO(\n input: TokenMarketDataDTO,\n): TokenMarketData {\n return {\n totalSupply: input.totalSupply,\n marketCap: input.marketCapInSol,\n marketCapInUsd: input.marketCapInUsd,\n price: input.priceInSol,\n priceInUsd: input.priceInUsd,\n tvl: input.totalTvlInSol,\n tvlInUsd: input.totalTvlInUsd,\n holders: parseInt(input.holders),\n top10Holdings: input.top10TotalHoldings,\n top10HoldingsRatio: input.top10HoldingsRatio,\n top50Holdings: input.top50TotalHoldings,\n top50HoldingsRatio: input.top50HoldingsRatio,\n top100Holdings: input.top100TotalHoldings,\n top100HoldingsRatio: input.top100HoldingsRatio,\n bluechipHolders:\n input.bluechipTotalHolders === undefined\n ? undefined\n : parseInt(input.bluechipTotalHolders),\n bluechipHoldings: input.bluechipTotalHoldings,\n bluechipHoldingsRatio: input.bluechipHoldingsRatio,\n kolHolders:\n input.kolTotalHolders === undefined\n ? undefined\n : parseInt(input.kolTotalHolders),\n kolHoldings: input.kolTotalHoldings,\n kolHoldingsRatio: input.kolHoldingsRatio,\n sniperHolders:\n input.sniperTotalHolders === undefined\n ? undefined\n : parseInt(input.sniperTotalHolders),\n sniperHoldings: input.sniperTotalHoldings,\n sniperHoldingsRatio: input.sniperHoldingsRatio,\n proHolders:\n input.proTotalHolders === undefined\n ? undefined\n : parseInt(input.proTotalHolders),\n proHoldings: input.proTotalHoldings,\n proHoldingsRatio: input.proHoldingsRatio,\n insiderHolders:\n input.insiderTotalHolders === undefined\n ? undefined\n : parseInt(input.insiderTotalHolders),\n insiderHoldings: input.insiderTotalHoldings,\n insiderHoldingsRatio: input.insiderHoldingsRatio,\n sandwichHolders:\n input.sandwishTotalHolders === undefined\n ? undefined\n : parseInt(input.sandwishTotalHolders),\n sandwichHoldings: input.sandwishTotalHoldings,\n sandwichHoldingsRatio: input.sandwishHoldingsRatio,\n freshHolders:\n input.freshTotalHolders === undefined\n ? undefined\n : parseInt(input.freshTotalHolders),\n freshHoldings: input.freshTotalHoldings,\n freshHoldingsRatio: input.freshHoldingsRatio,\n bundleHolders:\n input.bundleTotalHolders === undefined\n ? undefined\n : parseInt(input.bundleTotalHolders),\n bundleHoldings: input.bundleTotalHoldings,\n bundleHoldingsRatio: input.bundleHoldingsRatio,\n devHolders:\n input.devTotalHolders === undefined\n ? undefined\n : parseInt(input.devTotalHolders),\n devHoldings: input.devTotalHoldings,\n devHoldingsRatio: input.devHoldingsRatio,\n };\n}\n\nexport function fromTokenCandle(_in: Candle): TokenCandle {\n throw new Error(\"Method not implemented.\");\n}\n\nexport function fromTokenSecurity(_in: object): TokenSecurity {\n throw new Error(\"Method not implemented.\");\n}\nexport function toSwapRouteInput(params: API.SwapParams): SwapRouteInput {\n throw new Error(\"Method not implemented.\");\n}\n\nexport function toSendTxInput(params: API.SendTxParams): SendTxInput {\n throw new Error(\"Method not implemented.\");\n}\n\nexport function fromTokenHolderPage(\n _in: TokenHolderPage,\n): API.CursorList<TokenHolder> {\n throw new Error(\"Method not implemented.\");\n}\n\nexport function fromTokenPage(\n _in: ChainStreamTokenPage,\n): API.SearchTokenCursorList {\n throw new Error(\"Method not implemented.\");\n}\n\nexport function fromSwapRoute(_in: SwapRouteResponse): API.SwapRoute {\n throw new Error(\"Method not implemented.\");\n}\n\nexport function fromSendTxResult(_in: SendTxResponse): API.SendTxResult {\n throw new Error(\"Method not implemented.\");\n}\n\nexport function fromWalletPortfolios(_in: TokensBalancePage): WalletPortfolios {\n throw new Error(\"Method not implemented.\");\n}\n\nexport function fromTradePage(_in: TradePage): API.CursorList<TradeActivity> {\n throw new Error(\"Method not implemented.\");\n}\n\nexport function fromTokenSubscribed(\n _chain: Chain,\n _in: WsNewToken,\n): API.TokenSubscribed {\n throw new Error(\"Method not implemented.\");\n}\n\nexport function fromTokenMetadataSubscribed(\n _chain: Chain,\n _in: WsTokenMetadata,\n): API.TokenSubscribed {\n throw new Error(\"Method not implemented.\");\n}\n","import {\n ChainStreamClient,\n ChainStreamClientOptions,\n TokenProvider,\n ChainSymbol,\n GetFinalStretchTokensSortBy,\n GetFinalStretchTokensSortDirection,\n GetHotTokensSortBy,\n GetHotTokensSortDirection,\n GetMigratedTokensSortBy,\n GetMigratedTokensSortDirection,\n GetNewTokensSortBy,\n GetNewTokensSortDirection,\n GetStocksTokensSortBy,\n GetStocksTokensSortDirection,\n GetTradesType,\n SearchSortBy,\n WsNewToken,\n WsTokenMetadata,\n} from \"@chainstream-io/sdk\";\nimport {\n API,\n Chain,\n Token,\n TokenCandle,\n TokenHolder,\n TokenMarketData,\n TokenResolution,\n TokenSecurity,\n TokenStats,\n TradeActivity,\n WalletPortfolios,\n} from \"@liberfi.io/types\";\nimport {\n toChainDTO,\n toResolutionDTO,\n fromTokenStatsDTO,\n fromTokenMarketDataDTO,\n toSortDirectionDTO,\n toFieldDTO,\n toRangeFiltersDTO,\n toSearchFieldDTO,\n fromTokenPage,\n fromSwapRoute,\n fromSendTxResult,\n fromWalletPortfolios,\n fromTradePage,\n fromTokenSubscribed,\n fromTokenMetadataSubscribed,\n fromTokenDTO,\n fromTokenCandle,\n fromTokenSecurity,\n fromTokenHolderPage,\n toSendTxInput,\n toSwapRouteInput,\n} from \"./utils\";\n\nexport type ClientOptions = ChainStreamClientOptions;\n\nexport type ClientTokenProvider = TokenProvider | string;\n\nexport class Client implements API.IClient, API.ISubscribeClient {\n // ChainStream client instance\n private readonly _client: ChainStreamClient;\n\n constructor(\n private readonly accessToken: ClientTokenProvider,\n private readonly options?: ClientOptions,\n ) {\n this._client = new ChainStreamClient(this.accessToken, this.options);\n }\n\n async getToken(chain: Chain, address: string): Promise<Token> {\n const token = await this._client.token.getToken(toChainDTO(chain), address);\n return fromTokenDTO(token);\n }\n\n async getTokens(\n chain: Chain,\n addresses: Array<string>,\n ): Promise<Array<Token>> {\n const tokens = await this._client.token.getTokens(toChainDTO(chain), {\n tokenAddresses: addresses.join(\",\"),\n });\n return tokens.map(fromTokenDTO);\n }\n\n async getTokenCandles(\n chain: Chain,\n address: string,\n resolution: TokenResolution,\n options?: API.GetTokenCandlesOptions,\n ): Promise<Array<TokenCandle>> {\n const candles = await this._client.token.getCandles(\n toChainDTO(chain),\n address,\n {\n resolution: toResolutionDTO(resolution),\n from: options?.after?.getTime(),\n to: options?.before?.getTime(),\n limit: options?.limit,\n },\n );\n return candles.map(fromTokenCandle);\n }\n\n async getTokenSecurity(\n chain: Chain,\n address: string,\n ): Promise<TokenSecurity> {\n const security = await this._client.token.getSecurity(\n toChainDTO(chain),\n address,\n );\n return fromTokenSecurity(security);\n }\n\n async getTokenStats(chain: Chain, address: string): Promise<TokenStats> {\n const stats = await this._client.token.getStats(toChainDTO(chain), address);\n return fromTokenStatsDTO(stats);\n }\n\n async getTokenHolders(\n chain: Chain,\n address: string,\n options?: API.CursorListOptions,\n ): Promise<API.CursorList<TokenHolder>> {\n const holders = await this._client.token.getHolders(\n toChainDTO(chain),\n address,\n {\n cursor: options?.cursor,\n limit: options?.limit,\n direction: options?.direction,\n },\n );\n return fromTokenHolderPage(holders);\n }\n\n async getTokenMarketData(\n chain: Chain,\n address: string,\n ): Promise<TokenMarketData> {\n const marketData = await this._client.token.getMarketData(\n toChainDTO(chain),\n address,\n );\n return fromTokenMarketDataDTO(marketData);\n }\n\n async getNewTokens(\n chain: Chain,\n options?: API.GetTokenListOptions,\n ): Promise<Array<Token>> {\n const tokens = await this._client.ranking.getNewTokens(toChainDTO(chain), {\n sortBy: options?.sortBy\n ? (toFieldDTO(options.sortBy) as GetNewTokensSortBy)\n : undefined,\n sortDirection: options?.sortDirection\n ? (toSortDirectionDTO(\n options.sortDirection,\n ) as GetNewTokensSortDirection)\n : undefined,\n rangeFilters: options?.filters\n ? toRangeFiltersDTO(options.filters)\n : undefined,\n launchpadPlatform: options?.filters\n ? parseLaunchPlatformFromFilters(options.filters)\n : undefined,\n searchKeywords: options?.keywords,\n excludeKeywords: options?.excludeKeywords,\n // TODO tag & filters\n });\n return tokens.map(fromTokenDTO);\n }\n\n async getFinalStretchTokens(\n chain: Chain,\n options?: API.GetTokenListOptions,\n ): Promise<Array<Token>> {\n const tokens = await this._client.ranking.getFinalStretchTokens(\n toChainDTO(chain),\n {\n sortBy: options?.sortBy\n ? (toFieldDTO(options.sortBy) as GetFinalStretchTokensSortBy)\n : undefined,\n sortDirection: options?.sortDirection\n ? (toSortDirectionDTO(\n options.sortDirection,\n ) as GetFinalStretchTokensSortDirection)\n : undefined,\n rangeFilters: options?.filters\n ? toRangeFiltersDTO(options.filters)\n : undefined,\n launchpadPlatform: options?.filters\n ? parseLaunchPlatformFromFilters(options.filters)\n : undefined,\n searchKeywords: options?.keywords,\n excludeKeywords: options?.excludeKeywords,\n // TODO tag & filters\n },\n );\n return tokens.map(fromTokenDTO);\n }\n\n async getMigratedTokens(\n chain: Chain,\n options?: API.GetTokenListOptions,\n ): Promise<Array<Token>> {\n const tokens = await this._client.ranking.getMigratedTokens(\n toChainDTO(chain),\n {\n sortBy: options?.sortBy\n ? (toFieldDTO(options.sortBy) as GetMigratedTokensSortBy)\n : undefined,\n sortDirection: options?.sortDirection\n ? (toSortDirectionDTO(\n options.sortDirection,\n ) as GetMigratedTokensSortDirection)\n : undefined,\n rangeFilters: options?.filters\n ? toRangeFiltersDTO(options.filters)\n : undefined,\n launchpadPlatform: options?.filters\n ? parseLaunchPlatformFromFilters(options.filters)\n : undefined,\n searchKeywords: options?.keywords,\n excludeKeywords: options?.excludeKeywords,\n // TODO tag & filters\n },\n );\n return tokens.map(fromTokenDTO);\n }\n\n async getTrendingTokens(\n chain: Chain,\n resolution: \"1m\" | \"5m\" | \"1h\" | \"4h\" | \"24h\",\n options?: API.GetTokenListOptions,\n ): Promise<Array<Token>> {\n const tokens = await this._client.ranking.getHotTokens(\n toChainDTO(chain),\n resolution,\n {\n sortBy: options?.sortBy\n ? (toFieldDTO(options.sortBy) as GetHotTokensSortBy)\n : undefined,\n sortDirection: options?.sortDirection\n ? (toSortDirectionDTO(\n options.sortDirection,\n ) as GetHotTokensSortDirection)\n : undefined,\n rangeFilters: options?.filters\n ? toRangeFiltersDTO(options.filters)\n : undefined,\n launchpadPlatform: options?.filters\n ? parseLaunchPlatformFromFilters(options.filters)\n : undefined,\n searchKeywords: options?.keywords,\n excludeKeywords: options?.excludeKeywords,\n // TODO tag & filters\n },\n );\n return tokens.map(fromTokenDTO);\n }\n\n async getStockTokens(\n chain: Chain,\n options?: API.GetTokenListOptions,\n ): Promise<Array<Token>> {\n const tokens = await this._client.ranking.getStocksTokens(\n toChainDTO(chain),\n {\n sortBy: options?.sortBy\n ? (toFieldDTO(options.sortBy) as GetStocksTokensSortBy)\n : undefined,\n sortDirection: options?.sortDirection\n ? (toSortDirectionDTO(\n options.sortDirection,\n ) as GetStocksTokensSortDirection)\n : undefined,\n rangeFilters: options?.filters\n ? toRangeFiltersDTO(options.filters)\n : undefined,\n launchpadPlatform: options?.filters\n ? parseLaunchPlatformFromFilters(options.filters)\n : undefined,\n searchKeywords: options?.keywords,\n excludeKeywords: options?.excludeKeywords,\n // TODO tag & filters\n },\n );\n return tokens.map(fromTokenDTO);\n }\n\n async searchTokens(\n options?: API.SearchTokensOptions,\n ): Promise<API.SearchTokenCursorList> {\n const tokenPage = await this._client.token.search({\n chains: options?.chains?.map(toChainDTO),\n q: options?.keyword,\n limit: options?.limit,\n cursor: options?.cursor,\n sortBy: options?.sortBy\n ? (toSearchFieldDTO(options.sortBy) as SearchSortBy)\n : undefined,\n sort: options?.sortDirection,\n // TODO protocols\n });\n return fromTokenPage(tokenPage);\n }\n\n async swapRoute(params: API.SwapParams): Promise<API.SwapRoute> {\n const route = await this._client.dex.route(\n toChainDTO(params.chain) as ChainSymbol,\n toSwapRouteInput(params),\n );\n return fromSwapRoute(route);\n }\n\n async sendTx(params: API.SendTxParams): Promise<API.SendTxResult> {\n const result = await this._client.transaction.send(\n toChainDTO(params.chain),\n toSendTxInput(params),\n );\n return fromSendTxResult(result);\n }\n\n async checkTxSuccess(\n chain: Chain,\n txHash: string,\n timeout?: number,\n ): Promise<boolean> {\n const { result } = await this._client.waitForJob<{\n id: string;\n status: string;\n result: { success: boolean };\n }>(txHash, timeout);\n return result.success;\n }\n\n async getWalletPortfolios(\n chain: Chain,\n address: string,\n ): Promise<WalletPortfolios> {\n const portfolios = await this._client.wallet.getTokensBalance(\n toChainDTO(chain),\n address,\n );\n return fromWalletPortfolios(portfolios);\n }\n\n async getWalletTradeActivities(\n chain: Chain,\n address: string,\n options?: API.GetTradeActivitiesOptions,\n ): Promise<API.CursorList<TradeActivity>> {\n const tradePage = await this._client.trade.getTrades(toChainDTO(chain), {\n walletAddress: address,\n cursor: options?.cursor,\n limit: options?.limit,\n direction: options?.direction,\n beforeTimestamp: options?.before?.getTime(),\n afterTimestamp: options?.after?.getTime(),\n beforeBlockHeight: options?.beforeBlockHeight,\n afterBlockHeight: options?.afterBlockHeight,\n poolAddress: options?.poolAddress,\n type: options?.type\n ? (options.type.toUpperCase() as GetTradesType)\n : undefined,\n });\n return fromTradePage(tradePage);\n }\n\n async getTokenTradeActivities(\n chain: Chain,\n address: string,\n options?: API.GetTradeActivitiesOptions,\n ): Promise<API.CursorList<TradeActivity>> {\n const tradePage = await this._client.trade.getTrades(toChainDTO(chain), {\n tokenAddress: address,\n cursor: options?.cursor,\n limit: options?.limit,\n direction: options?.direction,\n beforeTimestamp: options?.before?.getTime(),\n afterTimestamp: options?.after?.getTime(),\n beforeBlockHeight: options?.beforeBlockHeight,\n afterBlockHeight: options?.afterBlockHeight,\n poolAddress: options?.poolAddress,\n type: options?.type\n ? (options.type.toUpperCase() as GetTradesType)\n : undefined,\n });\n return fromTradePage(tradePage);\n }\n\n async getPresignedUploadUrl(): Promise<string> {\n return await this._client.ipfs.presign();\n }\n\n subscribeTokenBasic(\n chain: Chain,\n address: string,\n callback: (tokens: Array<API.TokenSubscribed>) => void,\n ): API.ISubscription {\n throw new Error(\"Method not implemented.\");\n }\n\n subscribeTokenMarketData(\n chain: Chain,\n address: string,\n callback: (marketDatas: Array<TokenMarketData>) => void,\n ): API.ISubscription {\n throw new Error(\"Method not implemented.\");\n }\n\n subscribeTokenStats(\n chain: Chain,\n address: string,\n callback: (stats: Array<TokenStats>) => void,\n ): API.ISubscription {\n throw new Error(\"Method not implemented.\");\n }\n\n subscribeTokenCandles(\n chain: Chain,\n address: string,\n resolution: TokenResolution,\n callback: (candles: Array<TokenCandle>) => void,\n ): API.ISubscription {\n throw new Error(\"Method not implemented.\");\n }\n\n subscribeWalletPnl(\n chain: Chain,\n address: string,\n callback: (pnls: Array<API.WalletPnlSubscribed>) => void,\n ): API.ISubscription {\n throw new Error(\"Method not implemented.\");\n }\n\n subscribeWalletPortfolios(\n chain: Chain,\n address: string,\n callback: (portfolios: Array<API.PortfolioSubscribed>) => void,\n ): API.ISubscription {\n throw new Error(\"Method not implemented.\");\n }\n\n subscribeWalletPortfolioPnls(\n chain: Chain,\n address: string,\n callback: (portfolioPnls: Array<API.PortfolioPnlSubscribed>) => void,\n ): API.ISubscription {\n throw new Error(\"Method not implemented.\");\n }\n\n subscribeWalletTradeActivities(\n chain: Chain,\n address: string,\n callback: (trades: Array<TradeActivity>) => void,\n ): API.ISubscription {\n throw new Error(\"Method not implemented.\");\n }\n\n subscribeTokenTradeActivities(\n chain: Chain,\n address: string,\n callback: (trades: Array<TradeActivity>) => void,\n ): API.ISubscription {\n throw new Error(\"Method not implemented.\");\n }\n\n subscribeNewTokens(\n chain: Chain,\n callback: (tokens: Array<API.TokenSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeNewToken({\n chain: toChainDTO(chain),\n callback: (data: WsNewToken) =>\n callback([fromTokenSubscribed(chain, data)]),\n });\n }\n\n subscribeNewTokensBasic(\n chain: Chain,\n callback: (tokens: Array<API.TokenSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeNewTokensMetadata({\n chain: toChainDTO(chain),\n callback: (data: WsTokenMetadata[]) =>\n callback(data.map((it) => fromTokenMetadataSubscribed(chain, it))),\n });\n }\n\n subscribeNewTokensMarketData(\n chain: Chain,\n callback: (marketDatas: Array<TokenMarketData>) => void,\n ): API.ISubscription {\n throw new Error(\"Method not implemented.\");\n }\n\n subscribeNewTokensStats(\n chain: Chain,\n callback: (stats: Array<TokenStats>) => void,\n ): API.ISubscription {\n throw new Error(\"Method not implemented.\");\n }\n}\n\nfunction parseLaunchPlatformFromFilters(\n filters: Array<API.TokenFilterOption>,\n): Array<string> | undefined {\n const filter = filters.find(\n (it) => it.field === \"launchedFromProtocolFamily\",\n );\n if (!filter) {\n return undefined;\n }\n if (filter.operator === \"eq\") {\n return [filter.value as string];\n }\n if (filter.operator === \"in\") {\n return filter.value as Array<string>;\n }\n console.warn(\"invalid launchedFromProtocolFamily filter\", filter);\n return undefined;\n}\n","import { PropsWithChildren } from \"react\";\nimport { DexClientContext, DexClientContextValue } from \"./DexClientContext\";\n\nexport type DexClientProviderProps = PropsWithChildren<DexClientContextValue>;\n\nexport function DexClientProvider({\n client,\n subscribeClient,\n children,\n}: DexClientProviderProps) {\n return (\n <DexClientContext.Provider value={{ client, subscribeClient }}>\n {children}\n </DexClientContext.Provider>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/version.ts","../src/DexClientContext.ts","../src/hooks/useDexClient.ts","../src/hooks/useFinalStretchTokensQuery.ts","../src/hooks/useMigratedTokensQuery.ts","../src/hooks/useNewTokensQuery.ts","../src/hooks/usePresignedUploadUrlQuery.ts","../src/hooks/useSearchTokensQuery.ts","../src/hooks/useSendTxMutation.ts","../src/hooks/useStockTokensQuery.ts","../src/hooks/useSwapRouteQuery.ts","../src/hooks/useTokenCandlesQuery.ts","../src/hooks/useTokenHoldersQuery.ts","../src/hooks/useTokenMarketDataQuery.ts","../src/hooks/useTokenQuery.ts","../src/hooks/useTokenSecurityQuery.ts","../src/hooks/useTokensQuery.ts","../src/hooks/useTokenStatsQuery.ts","../src/hooks/useTokenTradeActivitiesQuery.ts","../src/hooks/useTrendingTokensQuery.ts","../src/hooks/useTxSuccessQuery.ts","../src/hooks/useWalletPnlQuery.ts","../src/hooks/useWalletPortfolioPnlsQuery.ts","../src/hooks/useWalletPortfoliosQuery.ts","../src/hooks/useWalletTradeActivitiesQuery.ts","../src/hooks/useTokenStatsSubscription.ts","../src/hooks/useTokenCandlesSubscription.ts","../src/hooks/useTokenMarketDataSubscription.ts","../src/hooks/useTokenTradeActivitiesSubscription.ts","../src/hooks/useWalletPnlSubscription.ts","../src/hooks/useWalletPortfoliosSubscription.ts","../src/hooks/useWalletPortfolioPnlsSubscription.ts","../src/hooks/useWalletTradeActivitiesSubscription.ts","../src/hooks/useNewTokensSubscription.ts","../src/hooks/useNewTokensBasicSubscription.ts","../src/hooks/useNewTokensMarketDataSubscription.ts","../src/hooks/useNewTokensStatsSubscription.ts","../src/hooks/useNewTokensDataSubscription.ts","../src/hooks/useMigratedTokensDataSubscription.ts","../src/hooks/useFinalStretchTokensDataSubscription.ts","../src/utils.ts","../src/client.ts","../src/DexClientProvider.tsx"],"names":["version_default","DexClientContext","createContext","useDexClient","context","useContext","finalStretchTokensQueryKey","params","fetchFinalStretchTokens","client","chain","options","useFinalStretchTokensQuery","useQuery","migratedTokensQueryKey","fetchMigratedTokens","useMigratedTokensQuery","newTokensQueryKey","fetchNewTokens","useNewTokensQuery","fetchPresignedUploadUrl","usePresignedUploadUrlQuery","searchTokensQueryKey","fetchSearchTokens","useSearchTokensQuery","sendTx","useSendTxMutation","useMutation","stockTokensQueryKey","fetchStockTokens","useStockTokensQuery","swapRouteQueryKey","fetchSwapRoute","useSwapRouteQuery","tokenCandlesQueryKey","fetchTokenCandles","address","resolution","useTokenCandlesQuery","tokenHoldersQueryKey","fetchTokenHolders","useTokenHoldersQuery","tokenMarketDataQueryKey","fetchTokenMarketData","useTokenMarketDataQuery","tokenQueryKey","fetchToken","useTokenQuery","tokenSecurityQueryKey","fetchTokenSecurity","useTokenSecurityQuery","tokensQueryKey","fetchTokens","addresses","useTokensQuery","tokenStatsQueryKey","fetchTokenStats","useTokenStatsQuery","tokenTradeActivitiesQueryKey","fetchTokenTradeActivities","useTokenTradeActivitiesQuery","trendingTokensQueryKey","fetchTrendingTokens","useTrendingTokensQuery","txSuccessQueryKey","fetchTxSuccess","txHash","timeout","useTxSuccessQuery","walletPnlQueryKey","fetchWalletPnl","useWalletPnlQuery","walletPortfolioPnlsQueryKey","fetchWalletPortfolioPnls","cursor","limit","useWalletPortfolioPnlsQuery","walletPortfoliosQueryKey","fetchWalletPortfolios","useWalletPortfoliosQuery","walletTradeActivitiesQueryKey","fetchWalletTradeActivities","useWalletTradeActivitiesQuery","useTokenStatsSubscription","callback","subscribeClient","callbackRef","useRef","useEffect","subscription","stats","useTokenCandlesSubscription","candles","useTokenMarketDataSubscription","marketDatas","useTokenTradeActivitiesSubscription","trades","useWalletPnlSubscription","pnls","useWalletPortfoliosSubscription","portfolios","useWalletPortfolioPnlsSubscription","portfolioPnls","useWalletTradeActivitiesSubscription","useNewTokensSubscription","tokens","useNewTokensBasicSubscription","useNewTokensMarketDataSubscription","useNewTokensStatsSubscription","useNewTokensDataSubscription","data","useMigratedTokensDataSubscription","useFinalStretchTokensDataSubscription","toChainDTO","Chain","ChainSymbol","toResolutionDTO","Resolution","toSortDirectionDTO","direction","toSearchFieldDTO","field","SearchSortBy","toFieldDTO","GetNewTokensSortBy","toRangeFiltersDTO","filters","it","cond","SafeBigNumber","fromChainDTO","fromTokenCreatorDTO","input","fromTokenDTO","fromTokenStatsDTO","fromTokenMarketDataDTO","fromTokenLiquidityDTO","parseTokenStatsByResolution","toOptionalNumber","value","period","fromTokenCandle","fromResolutionDTO","fromTokenSecurity","toSwapRouteInput","API","SwapRouteInputSwapMode","toSendTxInput","fromTokenHolderPage","holder","fromTokenPage","fromSwapRoute","fromSendTxResult","fromWalletPortfolios","item","fromWalletPnlSummary","fromPnlDetailsPage","summary","fromTradePage","fromTradeDetailDTO","isBuy","fromTokenSubscribed","fromTokenMetadataSubscribed","fromWsCandle","fromWsTokenStats","timeframes","record","result","tf","buys","sells","buyers","sellers","buyVolumeInUsd","sellVolumeInUsd","price","openInUsd","closeInUsd","totalTrades","totalTraders","totalVolumesInUsd","priceChange","fromWsTokenMarketDataFromStats","fromWsTokenDataSubscribed","fromWsTradeActivity","fromWsWalletBalance","fromWsWalletTokenPnl","Client","accessToken","ChainStreamClient","token","security","holders","marketData","parseLaunchPlatformFromFilters","tokenPage","route","netWorth","pnl","details","tradePage","_chain","_address","_callback","WsChannelType","filter","DexClientProvider","children","jsx"],"mappings":"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","file":"index.js","sourcesContent":["declare global {\n interface Window {\n __LIBERFI_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif (typeof window !== \"undefined\") {\n window.__LIBERFI_VERSION__ = window.__LIBERFI_VERSION__ || {};\n window.__LIBERFI_VERSION__[\"@liberfi.io/client\"] = \"0.1.25\";\n}\n\nexport default \"0.1.25\";\n","import { createContext } from \"react\";\nimport { API } from \"@liberfi.io/types\";\n\nexport interface DexClientContextValue {\n client: API.IClient;\n subscribeClient: API.ISubscribeClient;\n}\n\nexport const DexClientContext = createContext<DexClientContextValue>(\n {} as DexClientContextValue,\n);\n","import { useContext } from \"react\";\nimport { DexClientContext, DexClientContextValue } from \"../DexClientContext\";\n\nexport function useDexClient(): DexClientContextValue {\n const context = useContext(DexClientContext);\n if (!context) {\n throw new Error(\"useDexClient must be used within an DexClientProvider\");\n }\n return context;\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseFinalStretchTokensQueryParams\n extends API.GetTokenListOptions {\n chain: Chain;\n}\n\nexport function finalStretchTokensQueryKey(\n params: UseFinalStretchTokensQueryParams,\n): string[] {\n return [\n \"finalStretchTokens\",\n params.chain,\n params.sortBy ?? \"\",\n params.sortDirection ?? \"\",\n JSON.stringify((params.keywords ?? []).sort()),\n JSON.stringify((params.excludeKeywords ?? []).sort()),\n JSON.stringify(params.filters ?? []),\n ];\n}\n\nexport async function fetchFinalStretchTokens(\n client: API.IClient,\n { chain, ...options }: UseFinalStretchTokensQueryParams,\n) {\n return await client.getFinalStretchTokens(chain, options);\n}\n\nexport function useFinalStretchTokensQuery(\n params: UseFinalStretchTokensQueryParams,\n options: Omit<\n UseQueryOptions<Array<Token>, Error, Array<Token>, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: finalStretchTokensQueryKey(params),\n queryFn: async () => fetchFinalStretchTokens(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseMigratedTokensQueryParams extends API.GetTokenListOptions {\n chain: Chain;\n}\n\nexport function migratedTokensQueryKey(\n params: UseMigratedTokensQueryParams,\n): string[] {\n return [\n \"migratedTokens\",\n params.chain,\n params.sortBy ?? \"\",\n params.sortDirection ?? \"\",\n JSON.stringify((params.keywords ?? []).sort()),\n JSON.stringify((params.excludeKeywords ?? []).sort()),\n JSON.stringify(params.filters ?? []),\n ];\n}\n\nexport async function fetchMigratedTokens(\n client: API.IClient,\n { chain, ...options }: UseMigratedTokensQueryParams,\n) {\n return await client.getMigratedTokens(chain, options);\n}\n\nexport function useMigratedTokensQuery(\n params: UseMigratedTokensQueryParams,\n options: Omit<\n UseQueryOptions<Array<Token>, Error, Array<Token>, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: migratedTokensQueryKey(params),\n queryFn: async () => fetchMigratedTokens(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseNewTokensQueryParams extends API.GetTokenListOptions {\n chain: Chain;\n}\n\nexport function newTokensQueryKey(params: UseNewTokensQueryParams): string[] {\n return [\n \"newTokens\",\n params.chain,\n params.sortBy ?? \"\",\n params.sortDirection ?? \"\",\n JSON.stringify((params.keywords ?? []).sort()),\n JSON.stringify((params.excludeKeywords ?? []).sort()),\n JSON.stringify(params.filters ?? []),\n ];\n}\n\nexport async function fetchNewTokens(\n client: API.IClient,\n { chain, ...options }: UseNewTokensQueryParams,\n) {\n return await client.getNewTokens(chain, options);\n}\n\nexport function useNewTokensQuery(\n params: UseNewTokensQueryParams,\n options: Omit<\n UseQueryOptions<Array<Token>, Error, Array<Token>, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: newTokensQueryKey(params),\n queryFn: async () => fetchNewTokens(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport async function fetchPresignedUploadUrl(client: API.IClient) {\n return await client.getPresignedUploadUrl();\n}\n\nexport function usePresignedUploadUrlQuery(\n options: Omit<\n UseQueryOptions<string, Error, string, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: [\"presignedUploadUrl\"],\n queryFn: async () => fetchPresignedUploadUrl(client),\n staleTime: 0,\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport type UseSearchTokensQueryParams = API.SearchTokensOptions;\n\nexport function searchTokensQueryKey(\n params: UseSearchTokensQueryParams,\n): string[] {\n return [\n \"searchTokens\",\n params.cursor ?? \"\",\n params.limit ? `${params.limit}` : \"\",\n params.direction ?? \"\",\n JSON.stringify((params.chains ?? []).sort()),\n params.keyword ?? \"\",\n JSON.stringify(params.filters ?? []),\n params.sortBy ?? \"\",\n params.sortDirection ?? \"\",\n ];\n}\n\nexport async function fetchSearchTokens(\n client: API.IClient,\n params: UseSearchTokensQueryParams,\n) {\n return await client.searchTokens(params);\n}\n\nexport function useSearchTokensQuery(\n params: UseSearchTokensQueryParams,\n options: Omit<\n UseQueryOptions<\n API.SearchTokenCursorList,\n Error,\n API.SearchTokenCursorList,\n string[]\n >,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: searchTokensQueryKey(params),\n queryFn: async () => fetchSearchTokens(client, params),\n ...options,\n });\n}\n","import { useMutation, UseMutationOptions } from \"@tanstack/react-query\";\nimport { API } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport type UseSendTxMutationParams = API.SendTxParams;\n\nexport async function sendTx(\n client: API.IClient,\n params: UseSendTxMutationParams,\n) {\n return await client.sendTx(params);\n}\n\nexport function useSendTxMutation(\n options: Omit<\n UseMutationOptions<API.SendTxResult, Error, UseSendTxMutationParams>,\n \"mutationFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useMutation({\n mutationFn: async (params: UseSendTxMutationParams) =>\n sendTx(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseStockTokensQueryParams extends API.GetTokenListOptions {\n chain: Chain;\n}\n\nexport function stockTokensQueryKey(\n params: UseStockTokensQueryParams,\n): string[] {\n return [\n \"stockTokens\",\n params.chain,\n params.sortBy ?? \"\",\n params.sortDirection ?? \"\",\n JSON.stringify((params.keywords ?? []).sort()),\n JSON.stringify((params.excludeKeywords ?? []).sort()),\n JSON.stringify(params.filters ?? []),\n ];\n}\n\nexport async function fetchStockTokens(\n client: API.IClient,\n { chain, ...options }: UseStockTokensQueryParams,\n) {\n return await client.getStockTokens(chain, options);\n}\n\nexport function useStockTokensQuery(\n params: UseStockTokensQueryParams,\n options: Omit<\n UseQueryOptions<Array<Token>, Error, Array<Token>, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: stockTokensQueryKey(params),\n queryFn: async () => fetchStockTokens(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport type UseSwapRouteQueryParams = API.SwapParams;\n\nexport function swapRouteQueryKey(params: UseSwapRouteQueryParams): string[] {\n return [\n \"swapRoute\",\n params.chain,\n params.userAddress,\n params.input,\n params.output,\n params.mode,\n params.amount,\n params.slippage ? `${params.slippage}` : \"\",\n params.priorityFee ?? \"\",\n params.tipFee ?? \"\",\n params.isAntiMev !== undefined ? `${params.isAntiMev}` : \"\",\n ];\n}\n\nexport async function fetchSwapRoute(\n client: API.IClient,\n params: UseSwapRouteQueryParams,\n) {\n return await client.swapRoute(params);\n}\n\nexport function useSwapRouteQuery(\n params: UseSwapRouteQueryParams,\n options: Omit<\n UseQueryOptions<API.SwapRoute, Error, API.SwapRoute, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: swapRouteQueryKey(params),\n queryFn: async () => fetchSwapRoute(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, TokenCandle, TokenResolution } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenCandlesQueryParams extends API.GetTokenCandlesOptions {\n chain: Chain;\n address: string;\n resolution: TokenResolution;\n}\n\nexport function tokenCandlesQueryKey(\n params: UseTokenCandlesQueryParams,\n): string[] {\n return [\n \"tokenCandles\",\n params.chain,\n params.address,\n params.resolution,\n params.after?.toString() ?? \"\",\n params.before?.toString() ?? \"\",\n params.limit ? `${params.limit}` : \"\",\n ];\n}\n\nexport async function fetchTokenCandles(\n client: API.IClient,\n { chain, address, resolution, ...options }: UseTokenCandlesQueryParams,\n) {\n return await client.getTokenCandles(chain, address, resolution, options);\n}\n\nexport function useTokenCandlesQuery(\n params: UseTokenCandlesQueryParams,\n options: Omit<\n UseQueryOptions<Array<TokenCandle>, Error, Array<TokenCandle>, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokenCandlesQueryKey(params),\n queryFn: async () => fetchTokenCandles(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, TokenHolder } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenHoldersQueryParams extends API.CursorListOptions {\n chain: Chain;\n address: string;\n}\n\nexport function tokenHoldersQueryKey(\n params: UseTokenHoldersQueryParams,\n): string[] {\n return [\n \"tokenHolders\",\n params.chain,\n params.address,\n params.cursor ?? \"\",\n params.limit ? `${params.limit}` : \"\",\n params.direction ?? \"\",\n ];\n}\n\nexport async function fetchTokenHolders(\n client: API.IClient,\n { chain, address, ...options }: UseTokenHoldersQueryParams,\n) {\n return await client.getTokenHolders(chain, address, options);\n}\n\nexport function useTokenHoldersQuery(\n params: UseTokenHoldersQueryParams,\n options: Omit<\n UseQueryOptions<\n API.CursorList<TokenHolder>,\n Error,\n API.CursorList<TokenHolder>,\n string[]\n >,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokenHoldersQueryKey(params),\n queryFn: async () => fetchTokenHolders(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, TokenMarketData } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenMarketDataQueryParams {\n chain: Chain;\n address: string;\n}\n\nexport function tokenMarketDataQueryKey(\n params: UseTokenMarketDataQueryParams,\n): string[] {\n return [\"tokenMarketData\", params.chain, params.address];\n}\n\nexport async function fetchTokenMarketData(\n client: API.IClient,\n { chain, address }: UseTokenMarketDataQueryParams,\n) {\n return await client.getTokenMarketData(chain, address);\n}\n\nexport function useTokenMarketDataQuery(\n params: UseTokenMarketDataQueryParams,\n options: Omit<\n UseQueryOptions<TokenMarketData, Error, TokenMarketData, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokenMarketDataQueryKey(params),\n queryFn: async () => fetchTokenMarketData(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenQueryParams {\n chain: Chain;\n address: string;\n}\n\nexport function tokenQueryKey(params: UseTokenQueryParams): string[] {\n return [\"token\", params.chain, params.address];\n}\n\nexport async function fetchToken(\n client: API.IClient,\n { chain, address }: UseTokenQueryParams,\n) {\n return await client.getToken(chain, address);\n}\n\nexport function useTokenQuery(\n params: UseTokenQueryParams,\n options: Omit<\n UseQueryOptions<Token, Error, Token, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokenQueryKey(params),\n queryFn: async () => fetchToken(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, TokenSecurity } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenSecurityQueryParams {\n chain: Chain;\n address: string;\n}\n\nexport function tokenSecurityQueryKey(\n params: UseTokenSecurityQueryParams,\n): string[] {\n return [\"tokenSecurity\", params.chain, params.address];\n}\n\nexport async function fetchTokenSecurity(\n client: API.IClient,\n { chain, address }: UseTokenSecurityQueryParams,\n) {\n return await client.getTokenSecurity(chain, address);\n}\n\nexport function useTokenSecurityQuery(\n params: UseTokenSecurityQueryParams,\n options: Omit<\n UseQueryOptions<TokenSecurity, Error, TokenSecurity, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokenSecurityQueryKey(params),\n queryFn: async () => fetchTokenSecurity(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokensQueryParams {\n chain: Chain;\n addresses: Array<string>;\n}\n\nexport function tokensQueryKey(params: UseTokensQueryParams): string[] {\n return [\"tokens\", params.chain, params.addresses.sort().join(\",\")];\n}\n\nexport async function fetchTokens(\n client: API.IClient,\n { chain, addresses }: UseTokensQueryParams,\n) {\n return await client.getTokens(chain, addresses);\n}\n\nexport function useTokensQuery(\n params: UseTokensQueryParams,\n options: Omit<\n UseQueryOptions<Array<Token>, Error, Array<Token>, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokensQueryKey(params),\n queryFn: async () => fetchTokens(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, TokenStats } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenStatsQueryParams {\n chain: Chain;\n address: string;\n}\n\nexport function tokenStatsQueryKey(params: UseTokenStatsQueryParams): string[] {\n return [\"tokenStats\", params.chain, params.address];\n}\n\nexport async function fetchTokenStats(\n client: API.IClient,\n { chain, address }: UseTokenStatsQueryParams,\n) {\n return await client.getTokenStats(chain, address);\n}\n\nexport function useTokenStatsQuery(\n params: UseTokenStatsQueryParams,\n options: Omit<\n UseQueryOptions<TokenStats, Error, TokenStats, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokenStatsQueryKey(params),\n queryFn: async () => fetchTokenStats(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, TradeActivity } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenTradeActivitiesQueryParams\n extends API.GetTradeActivitiesOptions {\n chain: Chain;\n address: string;\n}\n\nexport function tokenTradeActivitiesQueryKey(\n params: UseTokenTradeActivitiesQueryParams,\n): string[] {\n return [\n \"tokenTradeActivities\",\n params.chain,\n params.address,\n params.before?.toString() ?? \"\",\n params.after?.toString() ?? \"\",\n params.beforeBlockHeight ? `${params.beforeBlockHeight}` : \"\",\n params.afterBlockHeight ? `${params.afterBlockHeight}` : \"\",\n params.type ?? \"\",\n params.poolAddress ?? \"\",\n ];\n}\n\nexport async function fetchTokenTradeActivities(\n client: API.IClient,\n { chain, address, ...options }: UseTokenTradeActivitiesQueryParams,\n) {\n return await client.getTokenTradeActivities(chain, address, options);\n}\n\nexport function useTokenTradeActivitiesQuery(\n params: UseTokenTradeActivitiesQueryParams,\n options: Omit<\n UseQueryOptions<\n API.CursorList<TradeActivity>,\n Error,\n API.CursorList<TradeActivity>,\n string[]\n >,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: tokenTradeActivitiesQueryKey(params),\n queryFn: async () => fetchTokenTradeActivities(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Token } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTrendingTokensQueryParams extends API.GetTokenListOptions {\n chain: Chain;\n resolution: \"1m\" | \"5m\" | \"1h\" | \"4h\" | \"24h\";\n}\n\nexport function trendingTokensQueryKey(\n params: UseTrendingTokensQueryParams,\n): string[] {\n return [\n \"trendingTokens\",\n params.chain,\n params.resolution,\n params.sortBy ?? \"\",\n params.sortDirection ?? \"\",\n JSON.stringify((params.keywords ?? []).sort()),\n JSON.stringify((params.excludeKeywords ?? []).sort()),\n JSON.stringify(params.filters ?? []),\n ];\n}\n\nexport async function fetchTrendingTokens(\n client: API.IClient,\n { chain, resolution, ...options }: UseTrendingTokensQueryParams,\n) {\n return await client.getTrendingTokens(chain, resolution, options);\n}\n\nexport function useTrendingTokensQuery(\n params: UseTrendingTokensQueryParams,\n options: Omit<\n UseQueryOptions<Array<Token>, Error, Array<Token>, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: trendingTokensQueryKey(params),\n queryFn: async () => fetchTrendingTokens(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTxSuccessQueryParams {\n chain: Chain;\n txHash: string;\n timeout?: number;\n}\n\nexport function txSuccessQueryKey(params: UseTxSuccessQueryParams): string[] {\n return [\n \"txSuccess\",\n params.chain,\n params.txHash,\n params.timeout ? `${params.timeout}` : \"\",\n ];\n}\n\nexport async function fetchTxSuccess(\n client: API.IClient,\n { chain, txHash, timeout }: UseTxSuccessQueryParams,\n) {\n return await client.checkTxSuccess(chain, txHash, timeout);\n}\n\nexport function useTxSuccessQuery(\n params: UseTxSuccessQueryParams,\n options: Omit<\n UseQueryOptions<boolean, Error, boolean, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: txSuccessQueryKey(params),\n queryFn: async () => fetchTxSuccess(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, WalletPnl } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletPnlQueryParams {\n chain: Chain;\n address: string;\n resolution?: string;\n}\n\nexport function walletPnlQueryKey(params: UseWalletPnlQueryParams): string[] {\n return [\n \"walletPnl\",\n params.chain,\n params.address,\n params.resolution ?? \"all\",\n ];\n}\n\nexport async function fetchWalletPnl(\n client: API.IClient,\n { chain, address, resolution }: UseWalletPnlQueryParams,\n) {\n return await client.getWalletPnl(chain, address, resolution);\n}\n\nexport function useWalletPnlQuery(\n params: UseWalletPnlQueryParams,\n options: Omit<\n UseQueryOptions<WalletPnl, Error, WalletPnl, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: walletPnlQueryKey(params),\n queryFn: async () => fetchWalletPnl(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, Portfolio, WalletPnl } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletPortfolioPnlsQueryParams {\n chain: Chain;\n address: string;\n cursor?: string;\n limit?: number;\n}\n\nexport type WalletPortfolioPnlsResult = API.CursorList<Portfolio> & {\n summary: WalletPnl;\n};\n\nexport function walletPortfolioPnlsQueryKey(\n params: UseWalletPortfolioPnlsQueryParams,\n): string[] {\n return [\"walletPortfolioPnls\", params.chain, params.address];\n}\n\nexport async function fetchWalletPortfolioPnls(\n client: API.IClient,\n { chain, address, cursor, limit }: UseWalletPortfolioPnlsQueryParams,\n) {\n return await client.getWalletPortfolioPnls(chain, address, { cursor, limit });\n}\n\nexport function useWalletPortfolioPnlsQuery(\n params: UseWalletPortfolioPnlsQueryParams,\n options: Omit<\n UseQueryOptions<\n WalletPortfolioPnlsResult,\n Error,\n WalletPortfolioPnlsResult,\n string[]\n >,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: walletPortfolioPnlsQueryKey(params),\n queryFn: async () => fetchWalletPortfolioPnls(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, WalletPortfolios } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletPortfoliosQueryParams {\n chain: Chain;\n address: string;\n}\n\nexport function walletPortfoliosQueryKey(\n params: UseWalletPortfoliosQueryParams,\n): string[] {\n return [\"walletPortfolios\", params.chain, params.address];\n}\n\nexport async function fetchWalletPortfolios(\n client: API.IClient,\n { chain, address }: UseWalletPortfoliosQueryParams,\n) {\n return await client.getWalletPortfolios(chain, address);\n}\n\nexport function useWalletPortfoliosQuery(\n params: UseWalletPortfoliosQueryParams,\n options: Omit<\n UseQueryOptions<WalletPortfolios, Error, WalletPortfolios, string[]>,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: walletPortfoliosQueryKey(params),\n queryFn: async () => fetchWalletPortfolios(client, params),\n ...options,\n });\n}\n","import { useQuery, UseQueryOptions } from \"@tanstack/react-query\";\nimport { API, Chain, TradeActivity } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletTradeActivitiesQueryParams\n extends API.GetTradeActivitiesOptions {\n chain: Chain;\n address: string;\n}\n\nexport function walletTradeActivitiesQueryKey(\n params: UseWalletTradeActivitiesQueryParams,\n): string[] {\n return [\n \"walletTradeActivities\",\n params.chain,\n params.address,\n params.before?.toString() ?? \"\",\n params.after?.toString() ?? \"\",\n params.beforeBlockHeight ? `${params.beforeBlockHeight}` : \"\",\n params.afterBlockHeight ? `${params.afterBlockHeight}` : \"\",\n params.type ?? \"\",\n params.poolAddress ?? \"\",\n ];\n}\n\nexport async function fetchWalletTradeActivities(\n client: API.IClient,\n { chain, address, ...options }: UseWalletTradeActivitiesQueryParams,\n) {\n return await client.getWalletTradeActivities(chain, address, options);\n}\n\nexport function useWalletTradeActivitiesQuery(\n params: UseWalletTradeActivitiesQueryParams,\n options: Omit<\n UseQueryOptions<\n API.CursorList<TradeActivity>,\n Error,\n API.CursorList<TradeActivity>,\n string[]\n >,\n \"queryKey\" | \"queryFn\"\n > = {},\n) {\n const { client } = useDexClient();\n return useQuery({\n queryKey: walletTradeActivitiesQueryKey(params),\n queryFn: async () => fetchWalletTradeActivities(client, params),\n ...options,\n });\n}\n","import { useEffect, useRef } from \"react\";\nimport { Chain, TokenStats } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenStatsSubscriptionParams {\n chain: Chain;\n address: string;\n}\n\nexport function useTokenStatsSubscription(\n params: UseTokenStatsSubscriptionParams,\n callback: (stats: Array<TokenStats>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeTokenStats(\n params.chain,\n params.address,\n (stats) => callbackRef.current(stats),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, params.address, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { Chain, TokenCandle, TokenResolution } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenCandlesSubscriptionParams {\n chain: Chain;\n address: string;\n resolution: TokenResolution;\n}\n\nexport function useTokenCandlesSubscription(\n params: UseTokenCandlesSubscriptionParams,\n callback: (candles: Array<TokenCandle>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeTokenCandles(\n params.chain,\n params.address,\n params.resolution,\n (candles) => callbackRef.current(candles),\n );\n return () => subscription.unsubscribe();\n }, [\n subscribeClient,\n params.chain,\n params.address,\n params.resolution,\n options?.enabled,\n ]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { Chain, TokenMarketData } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenMarketDataSubscriptionParams {\n chain: Chain;\n address: string;\n}\n\nexport function useTokenMarketDataSubscription(\n params: UseTokenMarketDataSubscriptionParams,\n callback: (marketDatas: Array<TokenMarketData>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeTokenMarketData(\n params.chain,\n params.address,\n (marketDatas) => callbackRef.current(marketDatas),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, params.address, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { Chain, TradeActivity } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseTokenTradeActivitiesSubscriptionParams {\n chain: Chain;\n address: string;\n}\n\nexport function useTokenTradeActivitiesSubscription(\n params: UseTokenTradeActivitiesSubscriptionParams,\n callback: (trades: Array<TradeActivity>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeTokenTradeActivities(\n params.chain,\n params.address,\n (trades) => callbackRef.current(trades),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, params.address, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletPnlSubscriptionParams {\n chain: Chain;\n address: string;\n}\n\nexport function useWalletPnlSubscription(\n params: UseWalletPnlSubscriptionParams,\n callback: (pnls: Array<API.WalletPnlSubscribed>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeWalletPnl(\n params.chain,\n params.address,\n (pnls) => callbackRef.current(pnls),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, params.address, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletPortfoliosSubscriptionParams {\n chain: Chain;\n address: string;\n}\n\nexport function useWalletPortfoliosSubscription(\n params: UseWalletPortfoliosSubscriptionParams,\n callback: (portfolios: Array<API.PortfolioSubscribed>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeWalletPortfolios(\n params.chain,\n params.address,\n (portfolios) => callbackRef.current(portfolios),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, params.address, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletPortfolioPnlsSubscriptionParams {\n chain: Chain;\n address: string;\n}\n\nexport function useWalletPortfolioPnlsSubscription(\n params: UseWalletPortfolioPnlsSubscriptionParams,\n callback: (portfolioPnls: Array<API.PortfolioPnlSubscribed>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeWalletPortfolioPnls(\n params.chain,\n params.address,\n (portfolioPnls) => callbackRef.current(portfolioPnls),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, params.address, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { Chain, TradeActivity } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseWalletTradeActivitiesSubscriptionParams {\n chain: Chain;\n address: string;\n}\n\nexport function useWalletTradeActivitiesSubscription(\n params: UseWalletTradeActivitiesSubscriptionParams,\n callback: (trades: Array<TradeActivity>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeWalletTradeActivities(\n params.chain,\n params.address,\n (trades) => callbackRef.current(trades),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, params.address, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseNewTokensSubscriptionParams {\n chain: Chain;\n}\n\nexport function useNewTokensSubscription(\n params: UseNewTokensSubscriptionParams,\n callback: (tokens: Array<API.TokenSubscribed>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeNewTokens(\n params.chain,\n (tokens) => callbackRef.current(tokens),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseNewTokensBasicSubscriptionParams {\n chain: Chain;\n}\n\nexport function useNewTokensBasicSubscription(\n params: UseNewTokensBasicSubscriptionParams,\n callback: (tokens: Array<API.TokenSubscribed>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeNewTokensBasic(\n params.chain,\n (tokens) => callbackRef.current(tokens),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { Chain, TokenMarketData } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseNewTokensMarketDataSubscriptionParams {\n chain: Chain;\n}\n\nexport function useNewTokensMarketDataSubscription(\n params: UseNewTokensMarketDataSubscriptionParams,\n callback: (marketDatas: Array<TokenMarketData>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeNewTokensMarketData(\n params.chain,\n (marketDatas) => callbackRef.current(marketDatas),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { Chain, TokenStats } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseNewTokensStatsSubscriptionParams {\n chain: Chain;\n}\n\nexport function useNewTokensStatsSubscription(\n params: UseNewTokensStatsSubscriptionParams,\n callback: (stats: Array<TokenStats>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeNewTokensStats(\n params.chain,\n (stats) => callbackRef.current(stats),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseNewTokensDataSubscriptionParams {\n chain: Chain;\n}\n\nexport function useNewTokensDataSubscription(\n params: UseNewTokensDataSubscriptionParams,\n callback: (data: Array<API.TokenDataSubscribed>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeNewTokensData(\n params.chain,\n (data) => callbackRef.current(data),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseMigratedTokensDataSubscriptionParams {\n chain: Chain;\n}\n\nexport function useMigratedTokensDataSubscription(\n params: UseMigratedTokensDataSubscriptionParams,\n callback: (data: Array<API.TokenDataSubscribed>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeMigratedTokensData(\n params.chain,\n (data) => callbackRef.current(data),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, options?.enabled]);\n}\n","import { useEffect, useRef } from \"react\";\nimport { API, Chain } from \"@liberfi.io/types\";\nimport { useDexClient } from \"./useDexClient\";\n\nexport interface UseFinalStretchTokensDataSubscriptionParams {\n chain: Chain;\n}\n\nexport function useFinalStretchTokensDataSubscription(\n params: UseFinalStretchTokensDataSubscriptionParams,\n callback: (data: Array<API.TokenDataSubscribed>) => void,\n options?: { enabled?: boolean },\n) {\n const { subscribeClient } = useDexClient();\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (options?.enabled === false) return;\n const subscription = subscribeClient.subscribeFinalStretchTokensData(\n params.chain,\n (data) => callbackRef.current(data),\n );\n return () => subscription.unsubscribe();\n }, [subscribeClient, params.chain, options?.enabled]);\n}\n","import {\n Token as TokenDTO,\n Resolution,\n Candle,\n TokenStat,\n TokenHolderPage,\n TokenMarketData as TokenMarketDataDTO,\n GetNewTokensSortBy,\n FilterCondition,\n SearchSortBy,\n TokenPage as ChainStreamTokenPage,\n SwapRouteResponse,\n SwapRouteInput,\n SwapRouteInputSwapMode,\n SendTxInput,\n SendTxResponse,\n TokensBalancePage,\n WalletNetWorthPage,\n TradePage,\n DexPoolDTO,\n ChainSymbol,\n TokenCreatorsDTO,\n WsNewToken,\n WsTokenMetadata,\n WsCandle,\n WsTokenStat,\n WsTradeActivity,\n WsWalletBalance,\n WsWalletTokenPnl,\n WsTokenHolder as WsTokenHolderDTO,\n WalletPnlSummaryDTO,\n PnlDetailsPage,\n} from \"@chainstream-io/sdk\";\nimport {\n API,\n Chain,\n Token,\n TokenCandle,\n TokenCreator,\n TokenHolder,\n TokenLiquidity,\n TokenMarketData,\n TokenResolution,\n TokenSecurity,\n TokenStats,\n TokenStatsByResolution,\n TradeActivity,\n Portfolio,\n WalletPnl,\n WalletPortfolios,\n} from \"@liberfi.io/types\";\nimport { SafeBigNumber } from \"@liberfi.io/utils\";\n\nexport function toChainDTO(chain: Chain): ChainSymbol {\n switch (chain) {\n case Chain.ETHEREUM:\n return ChainSymbol.eth;\n case Chain.BINANCE:\n return ChainSymbol.bsc;\n case Chain.SOLANA:\n return ChainSymbol.sol;\n }\n throw new Error(`Unsupported chain: ${chain}`);\n}\n\nexport function toResolutionDTO(resolution: TokenResolution): Resolution {\n switch (resolution) {\n case \"1s\":\n return Resolution[\"1s\"];\n case \"15s\":\n return Resolution[\"15s\"];\n case \"30s\":\n return Resolution[\"30s\"];\n case \"1m\":\n return Resolution[\"1m\"];\n case \"5m\":\n return Resolution[\"5m\"];\n case \"15m\":\n return Resolution[\"15m\"];\n case \"30m\":\n case \"1h\":\n return Resolution[\"1h\"];\n case \"4h\":\n return Resolution[\"4h\"];\n case \"12h\":\n return Resolution[\"12h\"];\n case \"24h\":\n return Resolution[\"1d\"];\n }\n}\n\nexport function toSortDirectionDTO(direction: \"asc\" | \"desc\"): string {\n switch (direction) {\n case \"asc\":\n return \"ASC\";\n case \"desc\":\n return \"DESC\";\n }\n}\n\nexport function toSearchFieldDTO(field: API.TokenFieldOption): string {\n switch (field) {\n case \"marketCap\":\n return SearchSortBy.marketCapInUsd;\n case \"tvl\":\n return SearchSortBy.liquidityInUsd;\n case \"price\":\n return SearchSortBy.priceInUsd;\n case \"holders\":\n return SearchSortBy.holderCount;\n case \"volumes24h\":\n return SearchSortBy.h24VolumeInUsd;\n case \"trades24h\":\n return SearchSortBy.h24Transactions;\n case \"createdAt\":\n return SearchSortBy.tokenCreatedAt;\n }\n throw new Error(`Unsupported search field: ${field}`);\n}\n\nexport function toFieldDTO(field: API.TokenFieldOption): string {\n switch (field) {\n case \"price\":\n return GetNewTokensSortBy.marketDatapriceInUsd;\n case \"priceChange1m\":\n return GetNewTokensSortBy.statspriceChangeRatioInUsd1m;\n case \"priceChange5m\":\n return GetNewTokensSortBy.statspriceChangeRatioInUsd5m;\n case \"priceChange1h\":\n return GetNewTokensSortBy.statspriceChangeRatioInUsd1h;\n case \"priceChange4h\":\n return GetNewTokensSortBy.statspriceChangeRatioInUsd4h;\n case \"priceChange24h\":\n return GetNewTokensSortBy.statspriceChangeRatioInUsd24h;\n case \"marketCap\":\n return GetNewTokensSortBy.marketDatamarketCapInUsd;\n case \"tvl\":\n return GetNewTokensSortBy.marketDatamaxPoolTvlInUsd;\n case \"top10Holdings\":\n return GetNewTokensSortBy.marketDatatop10TotalHoldings;\n case \"top10Ratio\":\n return GetNewTokensSortBy.marketDatatop10HoldingsRatio;\n case \"top100Holdings\":\n return GetNewTokensSortBy.marketDatatop100TotalHoldings;\n case \"top100Ratio\":\n return GetNewTokensSortBy.marketDatatop100HoldingsRatio;\n case \"holders\":\n return GetNewTokensSortBy.marketDataholders;\n case \"creatorsHoldings\":\n return GetNewTokensSortBy.marketDatacreatorHoldings;\n case \"creatorsRatio\":\n return GetNewTokensSortBy.marketDatacreatorHoldingsRatio;\n case \"buys1m\":\n return GetNewTokensSortBy.statsbuys1m;\n case \"buys5m\":\n return GetNewTokensSortBy.statsbuys5m;\n case \"buys15m\":\n return GetNewTokensSortBy.statsbuys15m;\n case \"buys30m\":\n return GetNewTokensSortBy.statsbuys30m;\n case \"buys1h\":\n return GetNewTokensSortBy.statsbuys1h;\n case \"buys4h\":\n return GetNewTokensSortBy.statsbuys4h;\n case \"buys24h\":\n return GetNewTokensSortBy.statsbuys24h;\n case \"sells1m\":\n return GetNewTokensSortBy.statssells1m;\n case \"sells5m\":\n return GetNewTokensSortBy.statssells5m;\n case \"sells15m\":\n return GetNewTokensSortBy.statssells15m;\n case \"sells30m\":\n return GetNewTokensSortBy.statssells30m;\n case \"sells1h\":\n return GetNewTokensSortBy.statssells1h;\n case \"sells4h\":\n return GetNewTokensSortBy.statssells4h;\n case \"sells24h\":\n return GetNewTokensSortBy.statssells24h;\n case \"trades1m\":\n return GetNewTokensSortBy.statstrades1m;\n case \"trades5m\":\n return GetNewTokensSortBy.statstrades5m;\n case \"trades1h\":\n return GetNewTokensSortBy.statstrades1h;\n case \"trades4h\":\n return GetNewTokensSortBy.statstrades4h;\n case \"trades24h\":\n return GetNewTokensSortBy.statstrades24h;\n case \"traders1m\":\n return GetNewTokensSortBy.statstraders1m;\n case \"traders5m\":\n return GetNewTokensSortBy.statstraders5m;\n case \"traders1h\":\n return GetNewTokensSortBy.statstraders1h;\n case \"traders4h\":\n return GetNewTokensSortBy.statstraders4h;\n case \"traders24h\":\n return GetNewTokensSortBy.statstraders24h;\n case \"volumes1m\":\n return GetNewTokensSortBy.statsvolumesInUsd1m;\n case \"volumes5m\":\n return GetNewTokensSortBy.statsvolumesInUsd5m;\n case \"volumes1h\":\n return GetNewTokensSortBy.statsvolumesInUsd1h;\n case \"volumes4h\":\n return GetNewTokensSortBy.statsvolumesInUsd4h;\n case \"volumes24h\":\n return GetNewTokensSortBy.statsvolumesInUsd24h;\n case \"createdAt\":\n return GetNewTokensSortBy.tokenCreatedAt;\n }\n throw new Error(`Unsupported sortBy: ${field}`);\n}\n\nexport function toRangeFiltersDTO(\n filters: Array<API.TokenFilterOption>,\n): Array<FilterCondition> {\n return filters\n .filter(\n (it) => [\"gt\", \"gte\", \"lt\", \"lte\", \"between\"].indexOf(it.operator) >= 0,\n )\n .map((it) => {\n const cond = { field: toFieldDTO(it.field) } as FilterCondition;\n if ([\"gt\", \"gte\", \"between\"].indexOf(it.operator) >= 0) {\n cond.min =\n typeof it.value === \"number\"\n ? new SafeBigNumber(it.value).toString()\n : (it.value as string);\n }\n if ([\"lt\", \"lte\", \"between\"].indexOf(it.operator) >= 0) {\n cond.max =\n typeof it.value === \"number\"\n ? new SafeBigNumber(it.value).toString()\n : (it.value as string);\n }\n return cond;\n });\n}\n\nexport function fromChainDTO(chain: string): Chain {\n switch (chain) {\n case ChainSymbol.eth:\n return Chain.ETHEREUM;\n case ChainSymbol.bsc:\n return Chain.BINANCE;\n case ChainSymbol.sol:\n case \"solana\":\n return Chain.SOLANA;\n }\n throw new Error(`Unsupported chain: ${chain}`);\n}\n\nexport function fromTokenCreatorDTO(input: TokenCreatorsDTO): TokenCreator {\n return {\n address: input.address,\n share: input.share,\n isVerified: input.isVerified,\n };\n}\n\nexport function fromTokenDTO(input: TokenDTO): Token {\n return {\n chain: fromChainDTO(input.chain),\n name: input.name,\n symbol: input.symbol,\n address: input.address,\n decimals: input.decimals,\n image: input.imageUrl,\n description: input.description,\n creators: input.tokenCreators?.map(fromTokenCreatorDTO),\n launchedFrom: {\n programAddress: input.extra?.launchFromProgramAddress,\n protocolFamily: input.extra?.launchFromProtocolFamily,\n },\n migrateProgress: input.marketData.completionRatio\n ? new SafeBigNumber(input.marketData.completionRatio)\n .shiftedBy(2)\n .toString()\n : undefined,\n migratedTo: {\n programAddress: input.extra?.migratedToProgramAddress,\n protocolFamily: input.extra?.migratedToProtocolFamily,\n poolAddress: input.extra?.migratedToPoolAddress,\n migratedAt: input.extra?.migratedAt\n ? new Date(input.extra.migratedAt)\n : undefined,\n },\n socialMedias: input.socialMedias ? { ...input.socialMedias } : undefined,\n stats: input.stats ? fromTokenStatsDTO(input.stats) : undefined,\n marketData: input.marketData\n ? fromTokenMarketDataDTO(input.marketData)\n : undefined,\n liquidities: input.liquidity?.map(fromTokenLiquidityDTO),\n createdAt: input.tokenCreatedAt\n ? new Date(input.tokenCreatedAt)\n : undefined,\n };\n}\n\nexport function fromTokenStatsDTO(input: TokenStat): TokenStats {\n return {\n [\"1m\"]: parseTokenStatsByResolution(input, \"1m\"),\n [\"5m\"]: parseTokenStatsByResolution(input, \"5m\"),\n [\"15m\"]: parseTokenStatsByResolution(input, \"15m\"),\n [\"30m\"]: parseTokenStatsByResolution(input, \"30m\"),\n [\"1h\"]: parseTokenStatsByResolution(input, \"1h\"),\n [\"4h\"]: parseTokenStatsByResolution(input, \"4h\"),\n [\"24h\"]: parseTokenStatsByResolution(input, \"24h\"),\n };\n}\n\nfunction toOptionalNumber(value: string | undefined): number | undefined {\n return value === undefined ? undefined : parseInt(value);\n}\n\nfunction parseTokenStatsByResolution(\n input: TokenStat,\n resolution: TokenResolution,\n): TokenStatsByResolution {\n const period = input.periods?.[resolution];\n if (!period) {\n return {};\n }\n\n return {\n buys: toOptionalNumber(period.buys),\n sells: toOptionalNumber(period.sells),\n trades: toOptionalNumber(period.trades),\n buyers: toOptionalNumber(period.buyers),\n sellers: toOptionalNumber(period.sellers),\n traders: toOptionalNumber(period.traders),\n buyVolumes: period.buyVolume,\n sellVolumes: period.sellVolume,\n volumes: period.totalVolumeInNative,\n buyVolumesInUsd: period.buyVolumeInUsd,\n sellVolumesInUsd: period.sellVolumeInUsd,\n volumesInUsd: period.totalVolumeInUsd,\n openPriceInUsd: period.openInUsd,\n closePriceInUsd: period.closeInUsd,\n highPriceInUsd: period.highInUsd,\n lowPriceInUsd: period.lowInUsd,\n priceInUsd: period.closeInUsd,\n priceChange: period.priceChangeRatioInUsd,\n };\n}\n\nexport function fromTokenLiquidityDTO(input: DexPoolDTO): TokenLiquidity {\n return {\n image: input.image,\n poolAddress: input.poolAddress,\n programAddress: input.programAddress,\n protocolFamily: input.protocolFamily,\n tvl: input.tvlInSol,\n tvlInUsd: input.tvlInUsd,\n };\n}\n\nexport function fromTokenMarketDataDTO(\n input: TokenMarketDataDTO,\n): TokenMarketData {\n return {\n totalSupply: input.totalSupply,\n marketCap: input.marketCapInSol,\n marketCapInUsd: input.marketCapInUsd,\n price: input.priceInSol,\n priceInUsd: input.priceInUsd,\n tvl: input.totalTvlInSol,\n tvlInUsd: input.totalTvlInUsd,\n holders: parseInt(input.holders),\n top10Holdings: input.top10TotalHoldings,\n top10HoldingsRatio: input.top10HoldingsRatio,\n top50Holdings: input.top50TotalHoldings,\n top50HoldingsRatio: input.top50HoldingsRatio,\n top100Holdings: input.top100TotalHoldings,\n top100HoldingsRatio: input.top100HoldingsRatio,\n bluechipHolders:\n input.bluechipTotalHolders === undefined\n ? undefined\n : parseInt(input.bluechipTotalHolders),\n bluechipHoldings: input.bluechipTotalHoldings,\n bluechipHoldingsRatio: input.bluechipHoldingsRatio,\n kolHolders:\n input.kolTotalHolders === undefined\n ? undefined\n : parseInt(input.kolTotalHolders),\n kolHoldings: input.kolTotalHoldings,\n kolHoldingsRatio: input.kolHoldingsRatio,\n sniperHolders:\n input.sniperTotalHolders === undefined\n ? undefined\n : parseInt(input.sniperTotalHolders),\n sniperHoldings: input.sniperTotalHoldings,\n sniperHoldingsRatio: input.sniperHoldingsRatio,\n proHolders:\n input.proTotalHolders === undefined\n ? undefined\n : parseInt(input.proTotalHolders),\n proHoldings: input.proTotalHoldings,\n proHoldingsRatio: input.proHoldingsRatio,\n insiderHolders:\n input.insiderTotalHolders === undefined\n ? undefined\n : parseInt(input.insiderTotalHolders),\n insiderHoldings: input.insiderTotalHoldings,\n insiderHoldingsRatio: input.insiderHoldingsRatio,\n sandwichHolders:\n input.sandwishTotalHolders === undefined\n ? undefined\n : parseInt(input.sandwishTotalHolders),\n sandwichHoldings: input.sandwishTotalHoldings,\n sandwichHoldingsRatio: input.sandwishHoldingsRatio,\n freshHolders:\n input.freshTotalHolders === undefined\n ? undefined\n : parseInt(input.freshTotalHolders),\n freshHoldings: input.freshTotalHoldings,\n freshHoldingsRatio: input.freshHoldingsRatio,\n bundleHolders:\n input.bundleTotalHolders === undefined\n ? undefined\n : parseInt(input.bundleTotalHolders),\n bundleHoldings: input.bundleTotalHoldings,\n bundleHoldingsRatio: input.bundleHoldingsRatio,\n devHolders:\n input.devTotalHolders === undefined\n ? undefined\n : parseInt(input.devTotalHolders),\n devHoldings: input.devTotalHoldings,\n devHoldingsRatio: input.devHoldingsRatio,\n };\n}\n\nexport function fromTokenCandle(input: Candle): TokenCandle {\n return {\n open: input.open,\n close: input.close,\n high: input.high,\n low: input.low,\n volume: input.volume,\n resolution: fromResolutionDTO(input.resolution),\n timestamp: new Date(input.time),\n };\n}\n\nfunction fromResolutionDTO(resolution: string): TokenResolution {\n if (resolution === \"1d\") return \"24h\";\n return resolution as TokenResolution;\n}\n\nexport function fromTokenSecurity(\n input: Record<string, unknown>,\n): TokenSecurity {\n return {\n hasTransferFee: input.hasTransferFee as boolean | undefined,\n isTransferFeeUpgradable: input.isTransferFeeUpgradable as\n | boolean\n | undefined,\n isTransferable: input.isTransferable as boolean | undefined,\n isFreezable: input.isFreezable as boolean | undefined,\n isClosable: input.isClosable as boolean | undefined,\n };\n}\nexport function toSwapRouteInput(params: API.SwapParams): SwapRouteInput {\n return {\n dex: \"jupiter\" as SwapRouteInput[\"dex\"],\n userAddress: params.userAddress,\n amount: params.amount,\n swapMode: (params.mode === API.SwapMode.EXACT_IN\n ? SwapRouteInputSwapMode.ExactIn\n : SwapRouteInputSwapMode.ExactOut) as SwapRouteInput[\"swapMode\"],\n slippage: params.slippage ?? 1,\n inputMint: params.input,\n outputMint: params.output,\n priorityFee: params.priorityFee,\n };\n}\n\nexport function toSendTxInput(params: API.SendTxParams): SendTxInput {\n return {\n signedTx: params.serializedTx,\n };\n}\n\nexport function fromTokenHolderPage(\n input: TokenHolderPage,\n): API.CursorList<TokenHolder> {\n return {\n startCursor: input.startCursor,\n endCursor: input.endCursor,\n hasPrev: input.hasPrev,\n hasNext: input.hasNext,\n data: input.data.map((holder) => ({\n address: holder.walletAddress,\n amount: holder.amount,\n amountInUsd: holder.amountInUsd,\n ratio: holder.percentage,\n })),\n };\n}\n\nexport function fromTokenPage(\n input: ChainStreamTokenPage,\n): API.SearchTokenCursorList {\n return {\n startCursor: input.startCursor,\n endCursor: input.endCursor,\n hasPrev: input.hasPrev,\n hasNext: input.hasNext,\n total: input.total,\n data: input.data.map(fromTokenDTO),\n extra: input.countsByProtocols,\n };\n}\n\nexport function fromSwapRoute(input: SwapRouteResponse): API.SwapRoute {\n return {\n serializedTx: input.serializedTx,\n plans: [],\n extra: input.routeInfo,\n };\n}\n\nexport function fromSendTxResult(input: SendTxResponse): API.SendTxResult {\n return {\n txHash: input.signature,\n extra: { jobId: input.jobId, elapsedTime: input.elapsedTime },\n };\n}\n\nexport function fromWalletPortfolios(\n input: WalletNetWorthPage,\n): WalletPortfolios {\n const portfolios: Portfolio[] = (input.data ?? []).map((item) => ({\n chain: fromChainDTO(item.chain),\n address: item.tokenAddress,\n name: item.name,\n symbol: item.symbol,\n image: item.logoUri,\n price: item.priceInNative,\n priceInUsd: item.priceInUsd,\n amount: item.amount,\n amountInUsd: item.valueInUsd,\n }));\n\n return {\n chain: portfolios[0]?.chain ?? Chain.SOLANA,\n address: input.walletAddress,\n balanceInUsd: input.totalValueInUsd,\n profitInUsd: \"0\",\n portfolios,\n };\n}\n\nexport function fromWalletPnlSummary(\n chain: Chain,\n address: string,\n input: WalletPnlSummaryDTO,\n): WalletPnl {\n return {\n chain,\n address,\n tokens: Number(input.tokens),\n buys: Number(input.buys),\n sells: Number(input.sells),\n totalTrades: Number(input.totalTrades),\n wins: Number(input.wins),\n losses: Number(input.losses),\n winRate: input.winRate,\n buyAmountInUsd: input.buyAmountInUsd,\n sellAmountInUsd: input.sellAmountInUsd,\n totalCostInUsd: input.totalCostInUsd,\n realizedProfitInUsd: input.realizedProfitInUsd,\n realizedProfitRatio: input.realizedProfitRatio,\n unrealizedProfitInUsd: input.unrealizedProfitInUsd,\n unrealizedProfitRatio: input.unrealizedProfitRatio,\n totalProfitInUsd: input.totalProfitInUsd,\n totalProfitRatio: input.totalProfitRatio,\n avgProfitPerTradeInUsd: input.avgProfitPerTradeInUsd,\n };\n}\n\nexport function fromPnlDetailsPage(\n chain: Chain,\n address: string,\n input: PnlDetailsPage,\n): API.CursorList<Portfolio> & { summary: WalletPnl } {\n const summary: WalletPnl = {\n chain,\n address,\n tokens: Number(input.summary.tokens),\n buys: Number(input.summary.buys),\n sells: Number(input.summary.sells),\n totalTrades: Number(input.summary.totalTrades),\n wins: Number(input.summary.wins),\n losses: Number(input.summary.losses),\n winRate: input.summary.winRate,\n buyAmountInUsd: input.summary.buyAmountInUsd,\n sellAmountInUsd: input.summary.sellAmountInUsd,\n totalCostInUsd: input.summary.totalCostInUsd,\n realizedProfitInUsd: input.summary.realizedProfitInUsd,\n realizedProfitRatio: input.summary.realizedProfitRatio,\n unrealizedProfitInUsd: input.summary.unrealizedProfitInUsd,\n totalProfitInUsd: input.summary.totalProfitInUsd,\n };\n\n const data: Portfolio[] = input.data.map((item) => ({\n chain,\n address: item.tokenAddress,\n name: item.name,\n symbol: item.symbol,\n image: item.logoUri,\n price: \"0\",\n priceInUsd: item.priceInUsd,\n amount: item.balance,\n amountInUsd: item.currentValue,\n pnl: {\n buys: Number(item.buys),\n buyVolumes: item.buyAmount,\n buyVolumesInUsd: item.buyAmountInUsd,\n buyAvgPriceInUsd: item.avgBuyPriceInUsd,\n sells: Number(item.sells),\n sellVolumes: item.sellAmount,\n sellVolumesInUsd: item.sellAmountInUsd,\n sellAvgPriceInUsd: item.avgSellPriceInUsd,\n realizedProfitInUsd: item.realizedProfitInUsd,\n realizedProfitRatio: item.realizedProfitRatio,\n unrealizedProfitInUsd: item.unrealizedProfitInUsd,\n unrealizedProfitRatio: item.unrealizedProfitRatio,\n totalProfitInUsd: item.totalProfitInUsd,\n totalProfitRatio: item.totalProfitRatio,\n },\n }));\n\n return {\n startCursor: input.startCursor,\n endCursor: input.endCursor,\n hasPrev: input.hasPrev,\n hasNext: input.hasNext,\n summary,\n data,\n };\n}\n\nexport function fromTradePage(input: TradePage): API.CursorList<TradeActivity> {\n return {\n startCursor: input.startCursor,\n endCursor: input.endCursor,\n hasPrev: input.hasPrev,\n hasNext: input.hasNext,\n data: input.data.map(fromTradeDetailDTO),\n };\n}\n\nfunction fromTradeDetailDTO(input: TradePage[\"data\"][number]): TradeActivity {\n const isBuy = input.type.toLowerCase() === \"buy\";\n return {\n chain: fromChainDTO(input.chain),\n walletAddress: input.accountOwnerAddress,\n txHash: input.transactionSignature,\n type: isBuy ? \"buy\" : \"sell\",\n from: {\n address: isBuy ? input.sideTokenAddress : input.tokenAddress,\n symbol: isBuy ? input.sideTokenSymbol : input.tokenSymbol,\n name: isBuy ? input.sideTokenName : input.tokenName,\n image: isBuy ? input.sideTokenImageUrl : input.tokenImageUrl,\n amount: isBuy ? input.sideTokenAmount : input.tokenAmount,\n amountInUsd: isBuy ? input.sideTokenAmountInUsd : input.tokenAmountInUsd,\n priceInUsd: isBuy ? input.sideTokenPriceInUsd : input.tokenPriceInUsd,\n },\n to: {\n address: isBuy ? input.tokenAddress : input.sideTokenAddress,\n symbol: isBuy ? input.tokenSymbol : input.sideTokenSymbol,\n name: isBuy ? input.tokenName : input.sideTokenName,\n image: isBuy ? input.tokenImageUrl : input.sideTokenImageUrl,\n amount: isBuy ? input.tokenAmount : input.sideTokenAmount,\n amountInUsd: isBuy ? input.tokenAmountInUsd : input.sideTokenAmountInUsd,\n priceInUsd: isBuy ? input.tokenPriceInUsd : input.sideTokenPriceInUsd,\n },\n dex: {\n programAddress: input.dexProgramAddress,\n protocolFamily: input.dexProtocolFamily,\n image: input.dexImage,\n },\n poolAddress: input.poolAddress,\n status: (input.status as TradeActivity[\"status\"]) ?? \"success\",\n time: new Date(input.blockTimestamp * 1000),\n };\n}\n\nexport function fromTokenSubscribed(\n chain: Chain,\n input: WsNewToken,\n): API.TokenSubscribed {\n return {\n chain,\n address: input.tokenAddress,\n name: input.name,\n symbol: input.symbol,\n decimals: input.decimals,\n createdAt: new Date(input.createdAtMs),\n launchedFrom: input.launchFrom\n ? {\n programAddress: input.launchFrom.programAddress,\n protocolFamily: input.launchFrom.protocolFamily,\n }\n : undefined,\n };\n}\n\nexport function fromTokenMetadataSubscribed(\n chain: Chain,\n input: WsTokenMetadata,\n): API.TokenSubscribed {\n return {\n chain,\n address: input.tokenAddress,\n name: input.name,\n symbol: input.symbol,\n decimals: input.decimals,\n image: input.imageUrl,\n description: input.description,\n socialMedias: input.socialMedia ? { ...input.socialMedia } : undefined,\n createdAt: input.createdAtMs ? new Date(input.createdAtMs) : new Date(0),\n launchedFrom: input.launchFrom\n ? {\n programAddress: input.launchFrom.programAddress,\n protocolFamily: input.launchFrom.protocolFamily,\n }\n : undefined,\n migratedTo: input.migratedTo\n ? {\n programAddress: input.migratedTo.programAddress,\n protocolFamily: input.migratedTo.protocolFamily,\n }\n : undefined,\n };\n}\n\n// ====================================\n// WebSocket data conversion functions\n// ====================================\n\nexport function fromWsCandle(input: WsCandle): TokenCandle {\n return {\n open: input.open,\n close: input.close,\n high: input.high,\n low: input.low,\n volume: input.volume,\n resolution: fromResolutionDTO(input.resolution),\n timestamp: new Date(input.time),\n };\n}\n\nexport function fromWsTokenStats(input: WsTokenStat): TokenStats {\n const timeframes = [\"1m\", \"5m\", \"15m\", \"30m\", \"1h\", \"4h\", \"24h\"] as const;\n const record = input as unknown as Record<\n string,\n number | string | undefined\n >;\n const result: TokenStats = {};\n\n for (const tf of timeframes) {\n const buys = record[`buys${tf}`] as number | undefined;\n const sells = record[`sells${tf}`] as number | undefined;\n const buyers = record[`buyers${tf}`] as number | undefined;\n const sellers = record[`sellers${tf}`] as number | undefined;\n const buyVolumeInUsd = record[`buyVolumeInUsd${tf}`] as string | undefined;\n const sellVolumeInUsd = record[`sellVolumeInUsd${tf}`] as\n | string\n | undefined;\n const trades = record[`trades${tf}`] as number | undefined;\n const price = record[`price${tf}`] as string | undefined;\n const openInUsd = record[`openInUsd${tf}`] as string | undefined;\n const closeInUsd = record[`closeInUsd${tf}`] as string | undefined;\n\n const hasData =\n buys !== undefined ||\n sells !== undefined ||\n trades !== undefined ||\n price !== undefined;\n\n if (!hasData) continue;\n\n const totalTrades =\n trades ??\n (buys !== undefined && sells !== undefined ? buys + sells : undefined);\n const totalTraders =\n buyers !== undefined && sellers !== undefined\n ? buyers + sellers\n : undefined;\n const totalVolumesInUsd =\n buyVolumeInUsd !== undefined && sellVolumeInUsd !== undefined\n ? new SafeBigNumber(buyVolumeInUsd).plus(sellVolumeInUsd).toString()\n : undefined;\n const priceChange =\n openInUsd && closeInUsd && new SafeBigNumber(openInUsd).gt(0)\n ? new SafeBigNumber(closeInUsd)\n .minus(openInUsd)\n .div(openInUsd)\n .toString()\n : undefined;\n\n result[tf] = {\n buys,\n sells,\n trades: totalTrades,\n buyers,\n sellers,\n traders: totalTraders,\n buyVolumesInUsd: buyVolumeInUsd,\n sellVolumesInUsd: sellVolumeInUsd,\n volumesInUsd: totalVolumesInUsd,\n openPriceInUsd: openInUsd,\n closePriceInUsd: closeInUsd,\n priceInUsd: price ?? closeInUsd,\n priceChange,\n };\n }\n\n return result;\n}\n\nexport function fromWsTokenMarketDataFromStats(\n input: WsTokenStat,\n): TokenMarketData {\n return {\n priceInUsd: input.price,\n };\n}\n\nexport function fromWsTokenDataSubscribed(\n input: WsTokenStat,\n): API.TokenDataSubscribed {\n return {\n address: input.address,\n stats: fromWsTokenStats(input),\n marketData: fromWsTokenMarketDataFromStats(input),\n };\n}\n\nexport function fromWsTokenMarketDataFromHolder(\n input: WsTokenHolderDTO,\n): Partial<TokenMarketData> {\n return {\n holders: input.holders,\n top10Holdings: input.top10HoldersAmount,\n top10HoldingsRatio: input.top10HoldersRatio,\n top50Holdings: input.top50HoldersAmount,\n top50HoldingsRatio: input.top50HoldersRatio,\n top100Holdings: input.top100HoldersAmount,\n top100HoldingsRatio: input.top100HoldersRatio,\n devHolders:\n input.balanceTagDevHolders === undefined\n ? undefined\n : input.balanceTagDevHolders,\n devHoldings: input.balanceTagDevAmount,\n devHoldingsRatio: input.balanceTagDevRatio,\n sniperHolders:\n input.balanceTagSniperHolders === undefined\n ? undefined\n : input.balanceTagSniperHolders,\n sniperHoldings: input.balanceTagSniperAmount,\n sniperHoldingsRatio: input.balanceTagSniperRatio,\n freshHolders:\n input.balanceTagFreshHolders === undefined\n ? undefined\n : input.balanceTagFreshHolders,\n freshHoldings: input.balanceTagFreshAmount,\n freshHoldingsRatio: input.balanceTagFreshRatio,\n bundleHolders:\n input.balanceTagBundleHolders === undefined\n ? undefined\n : input.balanceTagBundleHolders,\n bundleHoldings: input.balanceTagBundleAmount,\n bundleHoldingsRatio: input.balanceTagBundleRatio,\n sandwichHolders:\n input.balanceTagSandwichHolders === undefined\n ? undefined\n : input.balanceTagSandwichHolders,\n sandwichHoldings: input.balanceTagSandwichAmount,\n sandwichHoldingsRatio: input.balanceTagSandwichRatio,\n };\n}\n\nexport function fromWsTradeActivity(\n chain: Chain,\n input: WsTradeActivity,\n): TradeActivity {\n const isBuy = input.kind.toLowerCase() === \"buy\";\n return {\n chain,\n walletAddress: isBuy ? input.buyWalletAddress : input.sellWalletAddress,\n txHash: input.txHash,\n type: isBuy ? \"buy\" : \"sell\",\n from: {\n address: input.sellTokenAddress,\n symbol: input.sellTokenSymbol,\n name: input.sellTokenName,\n amount: input.sellAmount,\n amountInUsd: input.sellAmountInUsd,\n },\n to: {\n address: input.buyTokenAddress,\n symbol: input.buyTokenSymbol,\n name: input.buyTokenName,\n amount: input.buyAmount,\n amountInUsd: input.buyAmountInUsd,\n },\n status: \"success\",\n time: new Date(input.timestamp),\n };\n}\n\nexport function fromWsWalletBalance(\n chain: Chain,\n input: WsWalletBalance,\n): API.PortfolioSubscribed {\n return {\n chain,\n address: input.tokenAddress,\n amount: input.balance,\n };\n}\n\nexport function fromWsWalletTokenPnl(\n chain: Chain,\n input: WsWalletTokenPnl,\n): API.PortfolioPnlSubscribed {\n return {\n chain,\n address: input.tokenAddress,\n openTime: input.opentime ? new Date(input.opentime) : undefined,\n closeTime: input.closetime ? new Date(input.closetime) : undefined,\n buys: input.buyCount,\n buyVolumes: input.buyAmount,\n buyVolumesInUsd: input.buyAmountInUsd,\n buyAvgPriceInUsd: input.averageBuyPriceInUsd,\n sells: input.sellCount,\n sellVolumes: input.sellAmount,\n sellVolumesInUsd: input.sellAmountInUsd,\n sellAvgPriceInUsd: input.averageSellPriceInUsd,\n unrealizedProfitInUsd: input.unrealizedProfitInUsd,\n unrealizedProfitRatio: input.unrealizedProfitRatio,\n realizedProfitInUsd: input.realizedProfitInUsd,\n realizedProfitRatio: input.realizedProfitRatio,\n totalProfitInUsd: input.totalRealizedProfitInUsd,\n totalProfitRatio: input.totalRealizedProfitRatio,\n };\n}\n","import {\n ChainStreamClient,\n ChainStreamClientOptions,\n TokenProvider,\n ChainSymbol,\n GetFinalStretchTokensSortBy,\n GetFinalStretchTokensSortDirection,\n GetHotTokensSortBy,\n GetHotTokensSortDirection,\n GetMigratedTokensSortBy,\n GetMigratedTokensSortDirection,\n GetNewTokensSortBy,\n GetNewTokensSortDirection,\n GetStocksTokensSortBy,\n GetStocksTokensSortDirection,\n GetTradesType,\n SearchSortBy,\n WsNewToken,\n WsTokenMetadata,\n WsCandle,\n WsTokenStat,\n WsTradeActivity,\n WsWalletBalance,\n WsWalletTokenPnl,\n WsChannelType,\n} from \"@chainstream-io/sdk\";\nimport {\n API,\n Chain,\n Token,\n TokenCandle,\n TokenHolder,\n TokenMarketData,\n TokenResolution,\n TokenSecurity,\n TokenStats,\n TradeActivity,\n WalletPnl,\n WalletPortfolios,\n Portfolio,\n} from \"@liberfi.io/types\";\nimport {\n toChainDTO,\n toResolutionDTO,\n fromTokenStatsDTO,\n fromTokenMarketDataDTO,\n toSortDirectionDTO,\n toFieldDTO,\n toRangeFiltersDTO,\n toSearchFieldDTO,\n fromTokenPage,\n fromSwapRoute,\n fromSendTxResult,\n fromWalletPortfolios,\n fromTradePage,\n fromTokenSubscribed,\n fromTokenMetadataSubscribed,\n fromTokenDTO,\n fromTokenCandle,\n fromTokenSecurity,\n fromTokenHolderPage,\n toSendTxInput,\n toSwapRouteInput,\n fromWsCandle,\n fromWsTokenStats,\n fromWsTokenMarketDataFromStats,\n fromWsTokenDataSubscribed,\n fromWsTradeActivity,\n fromWsWalletBalance,\n fromWsWalletTokenPnl,\n fromWalletPnlSummary,\n fromPnlDetailsPage,\n} from \"./utils\";\n\nexport type ClientOptions = ChainStreamClientOptions;\n\nexport type ClientTokenProvider = TokenProvider | string;\n\nexport class Client implements API.IClient, API.ISubscribeClient {\n // ChainStream client instance\n private readonly _client: ChainStreamClient;\n\n constructor(\n private readonly accessToken: ClientTokenProvider,\n private readonly options?: ClientOptions,\n ) {\n this._client = new ChainStreamClient(this.accessToken, this.options);\n }\n\n async getToken(chain: Chain, address: string): Promise<Token> {\n const token = await this._client.token.getToken(toChainDTO(chain), address);\n return fromTokenDTO(token);\n }\n\n async getTokens(\n chain: Chain,\n addresses: Array<string>,\n ): Promise<Array<Token>> {\n const tokens = await this._client.token.getTokens(toChainDTO(chain), {\n tokenAddresses: addresses.join(\",\"),\n });\n return tokens.map(fromTokenDTO);\n }\n\n async getTokenCandles(\n chain: Chain,\n address: string,\n resolution: TokenResolution,\n options?: API.GetTokenCandlesOptions,\n ): Promise<Array<TokenCandle>> {\n const candles = await this._client.token.getCandles(\n toChainDTO(chain),\n address,\n {\n resolution: toResolutionDTO(resolution),\n from: options?.after?.getTime(),\n to: options?.before?.getTime(),\n limit: options?.limit,\n },\n );\n return candles.map(fromTokenCandle);\n }\n\n async getTokenSecurity(\n chain: Chain,\n address: string,\n ): Promise<TokenSecurity> {\n const security = await this._client.token.getSecurity(\n toChainDTO(chain),\n address,\n );\n return fromTokenSecurity(security);\n }\n\n async getTokenStats(chain: Chain, address: string): Promise<TokenStats> {\n const stats = await this._client.token.getStats(toChainDTO(chain), address);\n return fromTokenStatsDTO(stats);\n }\n\n async getTokenHolders(\n chain: Chain,\n address: string,\n options?: API.CursorListOptions,\n ): Promise<API.CursorList<TokenHolder>> {\n const holders = await this._client.token.getHolders(\n toChainDTO(chain),\n address,\n {\n cursor: options?.cursor,\n limit: options?.limit,\n direction: options?.direction,\n },\n );\n return fromTokenHolderPage(holders);\n }\n\n async getTokenMarketData(\n chain: Chain,\n address: string,\n ): Promise<TokenMarketData> {\n const marketData = await this._client.token.getMarketData(\n toChainDTO(chain),\n address,\n );\n return fromTokenMarketDataDTO(marketData);\n }\n\n async getNewTokens(\n chain: Chain,\n options?: API.GetTokenListOptions,\n ): Promise<Array<Token>> {\n const tokens = await this._client.ranking.getNewTokens(toChainDTO(chain), {\n sortBy: options?.sortBy\n ? (toFieldDTO(options.sortBy) as GetNewTokensSortBy)\n : undefined,\n sortDirection: options?.sortDirection\n ? (toSortDirectionDTO(\n options.sortDirection,\n ) as GetNewTokensSortDirection)\n : undefined,\n rangeFilters: options?.filters\n ? toRangeFiltersDTO(options.filters)\n : undefined,\n launchpadPlatform: options?.filters\n ? parseLaunchPlatformFromFilters(options.filters)\n : undefined,\n searchKeywords: options?.keywords,\n excludeKeywords: options?.excludeKeywords,\n // TODO tag & filters\n });\n return tokens.map(fromTokenDTO);\n }\n\n async getFinalStretchTokens(\n chain: Chain,\n options?: API.GetTokenListOptions,\n ): Promise<Array<Token>> {\n const tokens = await this._client.ranking.getFinalStretchTokens(\n toChainDTO(chain),\n {\n sortBy: options?.sortBy\n ? (toFieldDTO(options.sortBy) as GetFinalStretchTokensSortBy)\n : undefined,\n sortDirection: options?.sortDirection\n ? (toSortDirectionDTO(\n options.sortDirection,\n ) as GetFinalStretchTokensSortDirection)\n : undefined,\n rangeFilters: options?.filters\n ? toRangeFiltersDTO(options.filters)\n : undefined,\n launchpadPlatform: options?.filters\n ? parseLaunchPlatformFromFilters(options.filters)\n : undefined,\n searchKeywords: options?.keywords,\n excludeKeywords: options?.excludeKeywords,\n // TODO tag & filters\n },\n );\n return tokens.map(fromTokenDTO);\n }\n\n async getMigratedTokens(\n chain: Chain,\n options?: API.GetTokenListOptions,\n ): Promise<Array<Token>> {\n const tokens = await this._client.ranking.getMigratedTokens(\n toChainDTO(chain),\n {\n sortBy: options?.sortBy\n ? (toFieldDTO(options.sortBy) as GetMigratedTokensSortBy)\n : undefined,\n sortDirection: options?.sortDirection\n ? (toSortDirectionDTO(\n options.sortDirection,\n ) as GetMigratedTokensSortDirection)\n : undefined,\n rangeFilters: options?.filters\n ? toRangeFiltersDTO(options.filters)\n : undefined,\n launchpadPlatform: options?.filters\n ? parseLaunchPlatformFromFilters(options.filters)\n : undefined,\n searchKeywords: options?.keywords,\n excludeKeywords: options?.excludeKeywords,\n // TODO tag & filters\n },\n );\n return tokens.map(fromTokenDTO);\n }\n\n async getTrendingTokens(\n chain: Chain,\n resolution: \"1m\" | \"5m\" | \"1h\" | \"4h\" | \"24h\",\n options?: API.GetTokenListOptions,\n ): Promise<Array<Token>> {\n const tokens = await this._client.ranking.getHotTokens(\n toChainDTO(chain),\n resolution,\n {\n sortBy: options?.sortBy\n ? (toFieldDTO(options.sortBy) as GetHotTokensSortBy)\n : undefined,\n sortDirection: options?.sortDirection\n ? (toSortDirectionDTO(\n options.sortDirection,\n ) as GetHotTokensSortDirection)\n : undefined,\n rangeFilters: options?.filters\n ? toRangeFiltersDTO(options.filters)\n : undefined,\n launchpadPlatform: options?.filters\n ? parseLaunchPlatformFromFilters(options.filters)\n : undefined,\n searchKeywords: options?.keywords,\n excludeKeywords: options?.excludeKeywords,\n // TODO tag & filters\n },\n );\n return tokens.map(fromTokenDTO);\n }\n\n async getStockTokens(\n chain: Chain,\n options?: API.GetTokenListOptions,\n ): Promise<Array<Token>> {\n const tokens = await this._client.ranking.getStocksTokens(\n toChainDTO(chain),\n {\n sortBy: options?.sortBy\n ? (toFieldDTO(options.sortBy) as GetStocksTokensSortBy)\n : undefined,\n sortDirection: options?.sortDirection\n ? (toSortDirectionDTO(\n options.sortDirection,\n ) as GetStocksTokensSortDirection)\n : undefined,\n rangeFilters: options?.filters\n ? toRangeFiltersDTO(options.filters)\n : undefined,\n launchpadPlatform: options?.filters\n ? parseLaunchPlatformFromFilters(options.filters)\n : undefined,\n searchKeywords: options?.keywords,\n excludeKeywords: options?.excludeKeywords,\n // TODO tag & filters\n },\n );\n return tokens.map(fromTokenDTO);\n }\n\n async searchTokens(\n options?: API.SearchTokensOptions,\n ): Promise<API.SearchTokenCursorList> {\n const tokenPage = await this._client.token.search({\n chains: options?.chains?.map(toChainDTO),\n q: options?.keyword,\n limit: options?.limit,\n cursor: options?.cursor,\n sortBy: options?.sortBy\n ? (toSearchFieldDTO(options.sortBy) as SearchSortBy)\n : undefined,\n sort: options?.sortDirection,\n // TODO protocols\n });\n return fromTokenPage(tokenPage);\n }\n\n async swapRoute(params: API.SwapParams): Promise<API.SwapRoute> {\n const route = await this._client.dex.route(\n toChainDTO(params.chain) as ChainSymbol,\n toSwapRouteInput(params),\n );\n return fromSwapRoute(route);\n }\n\n async sendTx(params: API.SendTxParams): Promise<API.SendTxResult> {\n const result = await this._client.transaction.send(\n toChainDTO(params.chain),\n toSendTxInput(params),\n );\n return fromSendTxResult(result);\n }\n\n async checkTxSuccess(\n chain: Chain,\n txHash: string,\n timeout?: number,\n ): Promise<boolean> {\n const { result } = await this._client.waitForJob<{\n id: string;\n status: string;\n result: { success: boolean };\n }>(txHash, timeout);\n return result.success;\n }\n\n async getWalletPortfolios(\n chain: Chain,\n address: string,\n ): Promise<WalletPortfolios> {\n const netWorth = await this._client.wallet.getNetWorth(\n toChainDTO(chain),\n address,\n { limit: 100 },\n );\n return fromWalletPortfolios(netWorth);\n }\n\n async getWalletPnl(\n chain: Chain,\n address: string,\n resolution?: string,\n ): Promise<WalletPnl> {\n const pnl = await this._client.wallet.getPnl(\n toChainDTO(chain),\n address,\n resolution\n ? { resolution: resolution as \"1d\" | \"7d\" | \"30d\" | \"all\" }\n : undefined,\n );\n return fromWalletPnlSummary(chain, address, pnl);\n }\n\n async getWalletPortfolioPnls(\n chain: Chain,\n address: string,\n options?: { cursor?: string; limit?: number },\n ): Promise<API.CursorList<Portfolio> & { summary: WalletPnl }> {\n const details = await this._client.wallet.getPnlDetails(\n toChainDTO(chain),\n address,\n {\n cursor: options?.cursor,\n limit: options?.limit ?? 100,\n },\n );\n return fromPnlDetailsPage(chain, address, details);\n }\n\n async getWalletTradeActivities(\n chain: Chain,\n address: string,\n options?: API.GetTradeActivitiesOptions,\n ): Promise<API.CursorList<TradeActivity>> {\n const tradePage = await this._client.trade.getTrades(toChainDTO(chain), {\n walletAddress: address,\n cursor: options?.cursor,\n limit: options?.limit,\n direction: options?.direction,\n beforeTimestamp: options?.before?.getTime(),\n afterTimestamp: options?.after?.getTime(),\n beforeBlockHeight: options?.beforeBlockHeight,\n afterBlockHeight: options?.afterBlockHeight,\n poolAddress: options?.poolAddress,\n type: options?.type\n ? (options.type.toUpperCase() as GetTradesType)\n : undefined,\n });\n return fromTradePage(tradePage);\n }\n\n async getTokenTradeActivities(\n chain: Chain,\n address: string,\n options?: API.GetTradeActivitiesOptions,\n ): Promise<API.CursorList<TradeActivity>> {\n const tradePage = await this._client.trade.getTrades(toChainDTO(chain), {\n tokenAddress: address,\n cursor: options?.cursor,\n limit: options?.limit,\n direction: options?.direction,\n beforeTimestamp: options?.before?.getTime(),\n afterTimestamp: options?.after?.getTime(),\n beforeBlockHeight: options?.beforeBlockHeight,\n afterBlockHeight: options?.afterBlockHeight,\n poolAddress: options?.poolAddress,\n type: options?.type\n ? (options.type.toUpperCase() as GetTradesType)\n : undefined,\n });\n return fromTradePage(tradePage);\n }\n\n async getPresignedUploadUrl(): Promise<string> {\n return await this._client.ipfs.presign();\n }\n\n subscribeTokenBasic(\n _chain: Chain,\n _address: string,\n _callback: (tokens: Array<API.TokenSubscribed>) => void,\n ): API.ISubscription {\n throw new Error(\n \"subscribeTokenBasic is not supported by ChainStream backend. \" +\n \"Token basic info (name, symbol, image) rarely changes in real-time.\",\n );\n }\n\n subscribeTokenMarketData(\n chain: Chain,\n address: string,\n callback: (marketDatas: Array<TokenMarketData>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeTokenStats({\n chain: toChainDTO(chain),\n tokenAddress: address,\n callback: (data: WsTokenStat) =>\n callback([fromWsTokenMarketDataFromStats(data)]),\n });\n }\n\n subscribeTokenStats(\n chain: Chain,\n address: string,\n callback: (stats: Array<TokenStats>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeTokenStats({\n chain: toChainDTO(chain),\n tokenAddress: address,\n callback: (data: WsTokenStat) => callback([fromWsTokenStats(data)]),\n });\n }\n\n subscribeTokenCandles(\n chain: Chain,\n address: string,\n resolution: TokenResolution,\n callback: (candles: Array<TokenCandle>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeTokenCandles({\n chain: toChainDTO(chain),\n tokenAddress: address,\n resolution: toResolutionDTO(resolution),\n callback: (data: WsCandle) => callback([fromWsCandle(data)]),\n });\n }\n\n subscribeWalletPnl(\n chain: Chain,\n address: string,\n callback: (pnls: Array<API.WalletPnlSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeWalletPnl({\n chain: toChainDTO(chain),\n walletAddress: address,\n callback: (data: WsWalletTokenPnl) =>\n callback([\n {\n chain,\n address: data.walletAddress,\n profitInUsd: data.totalRealizedProfitInUsd,\n },\n ]),\n });\n }\n\n subscribeWalletPortfolios(\n chain: Chain,\n address: string,\n callback: (portfolios: Array<API.PortfolioSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeWalletBalance({\n chain: toChainDTO(chain),\n walletAddress: address,\n callback: (data: WsWalletBalance[]) =>\n callback(data.map((it) => fromWsWalletBalance(chain, it))),\n });\n }\n\n subscribeWalletPortfolioPnls(\n chain: Chain,\n address: string,\n callback: (portfolioPnls: Array<API.PortfolioPnlSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeWalletPnl({\n chain: toChainDTO(chain),\n walletAddress: address,\n callback: (data: WsWalletTokenPnl) =>\n callback([fromWsWalletTokenPnl(chain, data)]),\n });\n }\n\n subscribeWalletTradeActivities(\n chain: Chain,\n address: string,\n callback: (trades: Array<TradeActivity>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeWalletTrade({\n chain: toChainDTO(chain),\n walletAddress: address,\n callback: (data: WsTradeActivity) =>\n callback([fromWsTradeActivity(chain, data)]),\n });\n }\n\n subscribeTokenTradeActivities(\n chain: Chain,\n address: string,\n callback: (trades: Array<TradeActivity>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeTokenTrade({\n chain: toChainDTO(chain),\n tokenAddress: address,\n callback: (data: WsTradeActivity) =>\n callback([fromWsTradeActivity(chain, data)]),\n });\n }\n\n subscribeNewTokens(\n chain: Chain,\n callback: (tokens: Array<API.TokenSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeNewToken({\n chain: toChainDTO(chain),\n callback: (data: WsNewToken) =>\n callback([fromTokenSubscribed(chain, data)]),\n });\n }\n\n subscribeNewTokensBasic(\n chain: Chain,\n callback: (tokens: Array<API.TokenSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeNewTokensMetadata({\n chain: toChainDTO(chain),\n callback: (data: WsTokenMetadata[]) =>\n callback(data.map((it) => fromTokenMetadataSubscribed(chain, it))),\n });\n }\n\n subscribeNewTokensMarketData(\n chain: Chain,\n callback: (marketDatas: Array<TokenMarketData>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeRankingTokensStats({\n chain: toChainDTO(chain),\n channelType: WsChannelType.New,\n callback: (data: WsTokenStat[]) =>\n callback(data.map(fromWsTokenMarketDataFromStats)),\n });\n }\n\n subscribeNewTokensStats(\n chain: Chain,\n callback: (stats: Array<TokenStats>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeRankingTokensStats({\n chain: toChainDTO(chain),\n channelType: WsChannelType.New,\n callback: (data: WsTokenStat[]) => callback(data.map(fromWsTokenStats)),\n });\n }\n\n subscribeNewTokensData(\n chain: Chain,\n callback: (data: Array<API.TokenDataSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeRankingTokensStats({\n chain: toChainDTO(chain),\n channelType: WsChannelType.New,\n callback: (data: WsTokenStat[]) =>\n callback(data.map(fromWsTokenDataSubscribed)),\n });\n }\n\n subscribeMigratedTokensData(\n chain: Chain,\n callback: (data: Array<API.TokenDataSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeRankingTokensStats({\n chain: toChainDTO(chain),\n channelType: WsChannelType.COMPLETED,\n callback: (data: WsTokenStat[]) =>\n callback(data.map(fromWsTokenDataSubscribed)),\n });\n }\n\n subscribeFinalStretchTokensData(\n chain: Chain,\n callback: (data: Array<API.TokenDataSubscribed>) => void,\n ): API.ISubscription {\n return this._client.stream.subscribeRankingTokensStats({\n chain: toChainDTO(chain),\n channelType: WsChannelType.New,\n callback: (data: WsTokenStat[]) =>\n callback(data.map(fromWsTokenDataSubscribed)),\n });\n }\n}\n\nfunction parseLaunchPlatformFromFilters(\n filters: Array<API.TokenFilterOption>,\n): Array<string> | undefined {\n const filter = filters.find(\n (it) => it.field === \"launchedFromProtocolFamily\",\n );\n if (!filter) {\n return undefined;\n }\n if (filter.operator === \"eq\") {\n return [filter.value as string];\n }\n if (filter.operator === \"in\") {\n return filter.value as Array<string>;\n }\n console.warn(\"invalid launchedFromProtocolFamily filter\", filter);\n return undefined;\n}\n","import { PropsWithChildren } from \"react\";\nimport { DexClientContext, DexClientContextValue } from \"./DexClientContext\";\n\nexport type DexClientProviderProps = PropsWithChildren<DexClientContextValue>;\n\nexport function DexClientProvider({\n client,\n subscribeClient,\n children,\n}: DexClientProviderProps) {\n return (\n <DexClientContext.Provider value={{ client, subscribeClient }}>\n {children}\n </DexClientContext.Provider>\n );\n}\n"]}