{"version":3,"file":"static/js/main.e7a9d276.js","mappings":"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","sources":["locales|lazy|/^/.//.*/.js$/|referencedExports: [[\"messages\"]]|groupOptions: {}|namespace object","candid/swap/SwapFactory_update_call.did.ts","actor/swap.ts","assets/images/icons/dialog-close.tsx","components/Button/SmallButton.tsx","components/Button/MinButton.tsx","components/Checkbox/context.ts","components/Checkbox/Group.tsx","components/Checkbox/Checkbox.tsx","components/Copy/index.tsx","components/CurrencySelector/TokenItem.tsx","components/CurrencySelector/BaseToken.tsx","components/CurrencySelector/selector.tsx","components/Image/Avatar.tsx","components/Image/Token.tsx","components/ImportToken/steps/Tip.tsx","components/Select/SelectTokenStandard.tsx","components/ImportToken/steps/ChooseStandard.tsx","../../../packages/token-adapter/src/token-standard-verification.ts","components/ImportToken/steps/Confirm.tsx","components/ImportToken/index.tsx","components/Input/FilledTextField.tsx","assets/icons/external-link.svg","components/Layout/Header/ProfileSection/Address.tsx","components/Layout/Header/ProfileSection/Account.tsx","components/Layout/Header/ProfileSection/Principal.tsx","components/Layout/Header/ProfileSection/LogoutIcon.tsx","components/Layout/Header/LogOutSection/Confirm.tsx","components/Layout/Header/LogOutSection/index.tsx","components/Layout/Header/ProfileSection/index.tsx","components/Loading/List.tsx","components/Loading/Static.tsx","components/Loading/index.tsx","assets/images/Maintenance.svg","components/Maintenance.tsx","components/Mui.tsx","components/ReclaimTips.tsx","components/Select/Panel.tsx","components/Select/DropDownMenu.tsx","components/Select/ForToken.tsx","components/Select/SelectToken.tsx","components/Select/index.tsx","components/Steps/View.tsx","components/authentication/ButtonConnector.tsx","components/Loading/Dot.tsx","components/Loading/Fullscreen.tsx","components/Wrapper/index.tsx","components/ViewMore/index.tsx","components/swap/FindPositions.tsx","components/Input/NumberTextField.tsx","components/Input/NumberFilledTextField.tsx","components/Tooltip/Tooltip.tsx","components/TabPanel/index.tsx","components/CollapseWrapper.tsx","components/Link.tsx","components/modal/index.tsx","components/modal/swap.tsx","assets/images/icons/no-data.tsx","components/no-data/index.tsx","components/notistack/SnackbarContext.ts","components/notistack/utils/index.ts","components/notistack/utils/defaultIconVariants.tsx","components/notistack/transitions/Transition/types.ts","components/notistack/transitions/Transition/Transition.tsx","components/notistack/transitions/useForkRef.ts","components/notistack/transitions/getTransitionProps.ts","components/notistack/transitions/utils.ts","components/notistack/transitions/createTransition.ts","components/notistack/transitions/document-window.ts","components/notistack/transitions/Slide/Slide.tsx","components/notistack/SnackbarProvider/merger.ts","components/notistack/transitions/getAutoHeightDuration.ts","components/notistack/utils/styles.ts","components/notistack/transitions/Collapse/Collapse.tsx","components/notistack/SnackbarItem/utils.ts","components/notistack/utils/createChainedFunction.ts","components/notistack/utils/useEventCallback.tsx","components/notistack/SnackbarItem/Snackbar.tsx","components/notistack/SnackbarContent/SnackbarContent.tsx","components/notistack/ui/MaterialDesignContent/MaterialDesignContent.tsx","components/notistack/SnackbarItem/SnackbarItem.tsx","components/notistack/SnackbarContainer/SnackbarContainer.tsx","components/notistack/SnackbarProvider/SnackbarProvider.tsx","components/notistack/useSnackbar.ts","components/pagination/index.tsx","components/switch/index.tsx","components/token/TokenStandardLabel.tsx","constants/canister.ts","constants/ckBTC.ts","constants/ckETH.ts","constants/icp.ts","constants/types.ts","constants/index.ts","constants/locales.ts","constants/mint.ts","constants/nft.ts","constants/server.ts","constants/swap.ts","assets/images/token/ckETH.svg","assets/images/token/ckBTC.svg","constants/tokens.ts","constants/wallet.ts","constants/web3.ts","hooks/staking-token/useStateColors.ts","hooks/staking-token/usePools.ts","hooks/staking-token/useUnusedTokens.ts","hooks/staking-token/index.ts","hooks/swap/useSwapApprove.ts","hooks/swap/usePositionValue.ts","hooks/swap/useMultiplePositions.ts","hooks/swap/useWithdrawPCMBalance.ts","hooks/swap/useSortedPositions.ts","hooks/swap/useTokenInsufficient.ts","hooks/swap/useSwapPositions.ts","hooks/swap/usePCMBalances.ts","hooks/swap/useSwapTokenFeeCost.ts","hooks/swap/useLiquidityLocksImage.ts","hooks/sns/useSnsTokenInfoByGovernance.ts","hooks/swap/index.ts","hooks/swap/useMaxAmountSpend.ts","hooks/swap/usePools.ts","hooks/swap/useReclaimCallback.ts","../../../packages/swap-sdk/src/core/utils/sortedInsert.ts","../../../packages/swap-sdk/src/entities/route.ts","../../../packages/swap-sdk/src/entities/trade.ts","hooks/swap/useSwapPools.ts","hooks/swap/useAllCurrencyCombinations.ts","hooks/swap/useAllRoutes.ts","hooks/swap/useTrade.ts","hooks/swap/useUserPositionIds.ts","hooks/swap/v3Calls.ts","hooks/token/calls.ts","hooks/token/useERC20Token.ts","hooks/token/index.ts","hooks/token/useAllowance.ts","hooks/token/useApprove.ts","hooks/token/useSNSTokenRootId.ts","candid/ogy.did.ts","utils/token/adapter.ts","hooks/token/useTokenBalance.ts","../../../packages/utils/src/db/db.ts","../../../packages/hooks/src/usePromisesAwait.ts","hooks/token/useLocalTokens.ts","hooks/token/useTokenInfo.ts","../../../packages/utils/src/db/storage.ts","constants/db.ts","hooks/token/useTokenLogo.ts","store/call/hooks.ts","hooks/useCallsData.ts","hooks/useCurrency.ts","hooks/useGlobalContext.ts","hooks/useIntervalFetch.ts","hooks/useStepCall.ts","hooks/useTips.ts","hooks/useUSDPrice.ts","hooks/web3/useCurrentBlockTimestamp.ts","hooks/web3/useActiveChain.ts","hooks/web3/useETHBalance.ts","hooks/web3/useWeb3CallsData.ts","hooks/web3/useBlockNumber.ts","../../../packages/constants/src/web3-addresses.ts","hooks/web3/useEthersProvider.ts","hooks/web3/useContract.ts","hooks/web3/useTokenFromNetwork.ts","serviceWorker.ts","components/GoogleAnalytics/index.tsx","constants/zIndex.ts","components/RiskStatement/Modal.tsx","components/RiskStatement/index.tsx","assets/images/Error.tsx","components/Background.tsx","../../../packages/ui/src/components/GlobalTips.tsx","components/Layout/V3Event.tsx","assets/images/logo-dark.svg","assets/images/logo-white.svg","components/Logo.tsx","components/LogoSection/index.tsx",".version.ts","components/Layout/Navbar/config.ts","components/Layout/Navbar/icons/SimpleMode.tsx","components/Layout/Navbar/icons/ProMode.tsx","components/Layout/Navbar/icons/Twitter.tsx","components/Layout/Navbar/icons/Telegram.tsx","components/Layout/Navbar/icons/DSCVR.tsx","components/Layout/Navbar/icons/Medium.tsx","components/Layout/Navbar/icons/Gitbook.tsx","components/Layout/Navbar/icons/Github.tsx","components/Layout/Navbar/icons/Discord.tsx","components/Layout/Navbar/icons/Website.tsx","components/Layout/Navbar/SubMenuPopper.tsx","components/Layout/Navbar/ExceedRoutesPopper.tsx","components/Layout/Navbar/ExceedRoutes.tsx","components/Layout/Navbar/Routes.tsx","components/Layout/Navbar/index.tsx","assets/images/logo1.svg","assets/images/arrow-down.svg","components/Layout/Navbar/mobile/Routes.tsx","components/Layout/Navbar/mobile/Navbar.tsx","components/Layout/Header/index.tsx","components/Layout/SnsTips.tsx","components/Layout/MainLayout.tsx","components/Layout/Layout.tsx","components/ErrorBoundary/index.tsx","components/authentication/connector.tsx","components/authentication/ConnectorModal.tsx","components/Loading/LinearLoader.tsx","hooks/token-claim/useAllClaimEvents.ts","hooks/useInitialTokenStandard.ts","components/Loading/GreenCircle.tsx","components/Steps/icons.tsx","components/Steps/Details.tsx","components/Steps/index.tsx","hooks/useActorError.ts","hooks/useActorSubmit.ts","components/Actor/index.tsx","hooks/transactions/retry.ts","hooks/transactions/updater.tsx","store/transactions/updater.tsx","constants/wagmi.ts","components/DisableIframe.tsx","utils/web3/connection/utils.ts","hooks/web3/useConnectors.ts","components/Web3Injector.tsx","hooks/web3/useEagerlyConnect.ts","components/Snackbar.tsx","components/NavigationScroll.tsx","theme/colors.ts","theme/compStyleOverride.ts","theme/palette.ts","theme/typography.ts","theme/index.ts","components/404/index.tsx","components/Loading/Loadable.tsx","routes/config.ts","routes/Auth.tsx","routes/index.tsx","App.tsx","hooks/useActiveLocale.ts","i18n.tsx","utils/env.ts","tracing.ts","index.tsx","locales/services.ts","store/allCanisters.ts","store/auth/actions.ts","store/auth/hooks.ts","store/call/actions.ts","store/customization/actions.ts","store/global/actions.ts","../../../packages/hooks/src/exchange_rate.ts","../../../packages/hooks/src/icp.ts","store/global/hooks.ts","store/hooks.ts","store/customization/states.ts","store/customization/reducer.ts","store/snackbar/states.ts","store/snackbar/reducer.ts","store/wallet/states.ts","store/wallet/reducer.ts","store/global/states.ts","store/global/reducer.ts","store/swap/state.ts","store/swap/reducer.ts","store/swap/liquidity/state.ts","store/swap/liquidity/reducer.ts","store/swap/cache/state.ts","store/swap/cache/reducer.ts","store/swap/burn/state.ts","store/swap/burn/reducer.ts","store/nft/states.ts","store/nft/reducer.ts","store/auth/states.ts","store/auth/reducer.ts","store/session/states.ts","store/session/reducer.ts","store/token/cache/states.ts","store/token/cache/reducer.ts","store/call/states.ts","store/call/reducer.ts","store/steps/state.ts","store/steps/reducer.ts","store/sns/states.ts","store/sns/reducer.ts","store/swapv2/liquidity/state.ts","store/swapv2/liquidity/reducer.ts","store/swapv2/cache/state.ts","store/swapv2/cache/reducer.ts","store/swapv2/burn/state.ts","store/swapv2/burn/reducer.ts","store/web3/states.ts","store/web3/reducer.ts","store/reducer.ts","store/index.ts","store/loadingReducer.ts","store/nft/actions.ts","store/session/actions.ts","store/snackbar/actions.ts","store/sns/actions.ts","store/sns/hooks.ts","store/steps/actions.ts","store/steps/hooks.ts","store/swap/actions.ts","store/swap/burn/actions.ts","store/swap/cache/actions.ts","store/swap/cache/hooks.ts","store/swap/hooks.ts","hooks/useDebounce.ts","store/swap/liquidity/actions.ts","store/swapv2/burn/actions.ts","store/swapv2/cache/actions.ts","store/swapv2/liquidity/actions.ts","store/token/cache/actions.ts","store/token/cache/hooks.ts","store/transactions/hooks.tsx","store/transactions/reducer.ts","store/transactions/types.ts","store/wallet/actions.ts","store/wallet/hooks.ts","store/web3/actions.ts","types/global.ts","types/staking-token.ts","types/swap.ts","utils/connector/NF_ID.ts","constants/connector.ts","utils/connector/internet-identity.ts","utils/connector/stoic.ts","utils/connector/plug.ts","utils/connector/icpswap.ts","utils/connector/infinity.ts","utils/connector/metamask.ts","utils/connector/index.ts","utils/connector/me.ts","utils/index.ts","utils/nft/BaseNFTAdapter.ts","utils/nft/ICPSwapNFTAdapter.ts","utils/nft/NFT.ts","utils/nft/trade/BaseNFTAdapter.ts","utils/nft/trade/ICPSwapNFTTradeAdapter.ts","utils/nft/trade/index.ts","utils/nft/index.ts","utils/stake/state.ts","utils/swap/maxAmountFormat.ts","utils/swap/sortToken.ts","utils/swap/liquidity.ts","utils/swap/index.ts","utils/swap/mint.ts","utils/token/index.ts","utils/web3/connection/index.ts","utils/web3/index.ts","../../../packages/candid/src/token-list/TokenList.did.ts","../../../packages/candid/src/token-list/AllTokenOfSwap.did.ts","../../../packages/constants/src/host.ts","../../../packages/actor/src/actor.ts","../../../packages/actor/src/BaseActor.ts","../../../packages/actor/src/ActorName.ts","../../../packages/actor/src/token-list/index.ts","../../../packages/actor/src/sns/root.ts","../../../packages/candid/src/sns/wasm.did.ts","../../../packages/actor/src/sns/wasm.ts","../../../packages/candid/src/sns/swap.did.ts","../../../packages/actor/src/sns/swap.ts","../../../packages/candid/src/sns/governance.did.ts","../../../packages/actor/src/sns/governance.ts","../../../packages/candid/src/info/node_index.did.ts","../../../packages/actor/src/info/node_index.ts","../../../packages/candid/src/info/BaseIndex.did.ts","../../../packages/candid/src/info/BaseStorage.did.ts","../../../packages/actor/src/info/base.ts","../../../packages/candid/src/info/GlobalIndex.did.ts","../../../packages/candid/src/info/GlobalTVL.did.ts","../../../packages/actor/src/info/global.ts","../../../packages/candid/src/info/PoolStorage.did.ts","../../../packages/actor/src/info/pool.ts","../../../packages/candid/src/info/TokenStorage.did.ts","../../../packages/actor/src/info/token.ts","../../../packages/candid/src/info/UserStorage.did.ts","../../../packages/actor/src/info/user.ts","../../../packages/candid/src/icrc/icrc.archive.did.ts","../../../packages/candid/src/icrc/icrc1.did.ts","../../../packages/candid/src/icrc/icrc2.did.ts","../../../packages/actor/src/token/icrc1.ts","../../../packages/candid/src/dip20/xtc.did.ts","../../../packages/candid/src/dip20/dip20.did.ts","../../../packages/candid/src/dip20/dip20_balance.did.ts","../../../packages/candid/src/dip20/dip20_supply.did.ts","../../../packages/actor/src/token/dip20.ts","../../../packages/candid/src/token/token.did.ts","../../../packages/candid/src/token/wicp.did.ts","../../../packages/actor/src/token/ext.ts","../../../packages/candid/src/icp/ledger.did.ts","../../../packages/actor/src/icp/ledger.ts","../../../packages/candid/src/nft/V3NFTCanisterController.did.ts","../../../packages/candid/src/nft/NFTCanister.did.ts","../../../packages/candid/src/nft/V3TradeCanister.did.ts","../../../packages/candid/src/nft/V3TradeStat.did.ts","../../../packages/candid/src/nft/EXT.did.ts","../../../packages/actor/src/nft/index.ts","../../../packages/candid/src/other/ExchangeRate.did.ts","../../../packages/actor/src/other/exchangeRate.ts","../../../packages/candid/src/chainKeyToken/erc20Minter.did.ts","../../../packages/actor/src/other/chainKeyToken.ts","../../../packages/candid/src/other/LiquidityLocks.did.ts","../../../packages/actor/src/other/liquidityLocks.ts","../../../packages/candid/src/swap/PassCodeManager.did.ts","../../../packages/candid/src/swap/SwapNFT.did.ts","../../../packages/candid/src/swap/Factory.did.ts","../../../packages/candid/src/swap/SwapPool.did.ts","../../../packages/candid/src/swap/Position.did.ts","../../../packages/actor/src/swap/global.ts","../../../packages/actor/src/swap/index.ts","../../../packages/candid/src/staking-farm/FarmController.did.ts","../../../packages/candid/src/staking-farm/Farm.did.ts","../../../packages/candid/src/staking-farm/FarmIndex.did.ts","../../../packages/actor/src/staking/farm.ts","../../../packages/candid/src/staking-token/StakingPoolController.did.ts","../../../packages/candid/src/staking-token/TokenPool.did.ts","../../../packages/candid/src/staking-token/StakeIndex.did.ts","../../../packages/candid/src/staking-token/V1TokenPoolController.did.ts","../../../packages/candid/src/staking-token/V1TokenPool.did.ts","../../../packages/actor/src/staking/token.ts","../../../packages/candid/src/token-claim/ClaimController.did.ts","../../../packages/candid/src/token-claim/ClaimStorage.did.ts","../../../packages/actor/src/token-claim.ts","../../../packages/candid/src/voting/VoteController.did.ts","../../../packages/candid/src/voting/VoteProjectCanister.did.ts","../../../packages/candid/src/voting/FileCanister.did.ts","../../../packages/actor/src/voting.ts","../../../packages/constants/src/canisterIds.ts","../../../packages/constants/src/chains.ts","../../../packages/constants/src/swap.ts","../../../packages/hooks/src/info/node.ts","../../../packages/hooks/src/info/useInfoToken.ts","../../../packages/hooks/src/sns/useListDeployedSNSs.ts","../../../packages/hooks/src/staking-token/calls.ts","../../../packages/hooks/src/staking-token/storage.ts","../../../packages/hooks/src/swap/calls.ts","../../../packages/hooks/src/swap/usePassCode.ts","../../../packages/hooks/src/swap/usePassCodeManager.ts","../../../packages/hooks/src/token-claim/index.ts","../../../packages/hooks/src/token-list/calls.ts","../../../packages/hooks/src/token/useTokenBalance.ts","../../../packages/hooks/src/useCallData.ts","../../../packages/hooks/src/useDebouncedChangeHandler.ts","../../../packages/hooks/src/useInterval.ts","../../../packages/hooks/src/useLimitedInfinityCall.ts","../../../packages/hooks/src/useParsedQueryString.ts","../../../packages/swap-sdk/src/constants.ts","../../../packages/swap-sdk/src/core/constants.ts","../../../packages/swap-sdk/src/core/entities/erc20Token.ts","../../../packages/swap-sdk/src/core/entities/fractions/currencyAmount.ts","../../../packages/swap-sdk/src/core/entities/fractions/fraction.ts","../../../packages/swap-sdk/src/core/entities/fractions/percent.ts","../../../packages/swap-sdk/src/core/entities/fractions/price.ts","../../../packages/swap-sdk/src/core/entities/baseCurrency.ts","../../../packages/swap-sdk/src/core/entities/token.ts","../../../packages/swap-sdk/src/core/utils/validateAndParseAddress.ts","../../../packages/swap-sdk/src/utils/liquidityMath.ts","../../../packages/swap-sdk/src/utils/swapMath.ts","../../../packages/swap-sdk/src/entities/tickDataProvider.ts","../../../packages/swap-sdk/src/utils/tickList.ts","../../../packages/swap-sdk/src/utils/isSorted.ts","../../../packages/swap-sdk/src/entities/tick.ts","../../../packages/swap-sdk/src/entities/tickListDataProvider.ts","../../../packages/swap-sdk/src/entities/pool.ts","../../../packages/swap-sdk/src/utils/computePoolAddress.ts","../../../packages/swap-sdk/src/utils/maxLiquidityForAmounts.ts","../../../packages/swap-sdk/src/entities/position.ts","../../../packages/swap-sdk/src/internalConstants.ts","../../../packages/swap-sdk/src/core/utils/sqrt.ts","../../../packages/swap-sdk/src/utils/encodeSqrtRatioX96.ts","../../../packages/swap-sdk/src/utils/fullMath.ts","../../../packages/swap-sdk/src/utils/nearestUsableTick.ts","../../../packages/swap-sdk/src/utils/priceTickConversions.ts","../../../packages/swap-sdk/src/utils/sqrtPriceMath.ts","../../../packages/swap-sdk/src/utils/mostSignificantBit.ts","../../../packages/swap-sdk/src/utils/tickMath.ts","../../../packages/token-adapter/src/BaseTokenAdapter.ts","../../../packages/token-adapter/src/DIP20Adapter.ts","../../../packages/token-adapter/src/DIP20WICPAdapter.ts","../../../packages/token-adapter/src/DIP20XTCAdapter.ts","../../../packages/token-adapter/src/EXTAdapter.ts","../../../packages/token-adapter/src/ICP.ts","../../../packages/token-adapter/src/ICRC1.ts","../../../packages/token-adapter/src/utils.ts","../../../packages/token-adapter/src/ICRC2.ts","../../../packages/token-adapter/src/index.ts","../../../packages/token-adapter/src/types.ts","../../../packages/constants/src/standards.ts","../../../packages/tokens/src/wicp.ts","../../../packages/tokens/src/icp.ts","../../../packages/tokens/src/ics.ts","../../../packages/tokens/src/ghost.ts","../../../packages/tokens/src/ckBTC.ts","../../../packages/tokens/src/ckUSDC.ts","../../../packages/tokens/src/erc20/usdc.ts","../../../packages/tokens/src/erc20/link.ts","../../../packages/tokens/src/ckETH.ts","../../../packages/tokens/src/ckLink.ts","../../../packages/types/src/global.ts","../../../packages/types/src/staking-token.ts","../../../packages/types/src/token.ts","../../../packages/ui/src/components/Breadcrumbs.tsx","../../../packages/ui/src/components/Grid/Flex.tsx","../../../packages/ui/src/components/Loading/LoadingRow.tsx","../../../packages/ui/src/components/MainCard.tsx","../../../packages/ui/src/components/Mui.tsx","../../../packages/ui/src/components/TextButton.tsx","../../../packages/ui/src/assets/icons/SNS.tsx","../../../packages/ui/src/components/TokenImage.tsx","../../../packages/ui/src/components/button/SmallButton.tsx","../../../packages/ui/src/components/button/MaxButton.tsx","../../../packages/utils/src/availableArgsNull.ts","../../../packages/utils/src/enumToString.ts","../../../packages/utils/src/explorerLink.ts","../../../packages/utils/src/global.ts","../../../packages/utils/src/ic.ts","../../../packages/utils/src/isAvailablePageArgs.ts","../../../packages/utils/src/isBigIntMemo.ts","../../../packages/utils/src/isNullArgs.ts","../../../packages/utils/src/isPrincipal.ts","../../../packages/utils/src/isValidPrincipal.ts","../../../packages/utils/src/mockALink.ts","../../../packages/utils/src/number.ts","../../../packages/utils/src/numberToString.ts","../../../packages/utils/src/pageArgsFormat.ts","../../../packages/utils/src/principalToAccount.ts","../../../packages/utils/src/resultFormat.ts","../../../packages/utils/src/shorten.ts","../../../packages/utils/src/sleep.ts","../../../packages/utils/src/toSignificant.ts","../../../packages/utils/src/tokenAmount.ts","../webpack/bootstrap","../webpack/runtime/amd options","../webpack/runtime/chunk loaded","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/harmony module decorator","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/compat","../webpack/runtime/css loading","../webpack/runtime/jsonp chunk loading","../webpack/runtime/nonce","../webpack/startup"],"sourcesContent":["var map = {\n\t\"./en-US.js\": [\n\t\t84270,\n\t\t1889\n\t],\n\t\"./ja-JP.js\": [\n\t\t64958,\n\t\t4958\n\t],\n\t\"./ko-KR.js\": [\n\t\t49704,\n\t\t9704\n\t],\n\t\"./vi-VN.js\": [\n\t\t78432,\n\t\t8432\n\t],\n\t\"./zh-CN.js\": [\n\t\t65348,\n\t\t5348\n\t],\n\t\"./zh-TW.js\": [\n\t\t52084,\n\t\t2084\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(() => {\n\t\treturn __webpack_require__.t(id, 7 | 16);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 5871;\nmodule.exports = webpackAsyncContext;","export const idlFactory = ({ IDL }: any) => {\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const CreatePoolArgs = IDL.Record({\n fee: IDL.Nat,\n sqrtPriceX96: IDL.Text,\n token0: Token,\n token1: Token,\n });\n const PoolData = IDL.Record({\n fee: IDL.Nat,\n key: IDL.Text,\n tickSpacing: IDL.Int,\n token0: Token,\n token1: Token,\n canisterId: IDL.Principal,\n });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result_1 = IDL.Variant({ ok: PoolData, err: Error });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Result_2 = IDL.Variant({ ok: CycleInfo, err: Error });\n const GetPoolArgs = IDL.Record({\n fee: IDL.Nat,\n token0: Token,\n token1: Token,\n });\n const Result = IDL.Variant({ ok: IDL.Vec(PoolData), err: Error });\n const SwapFactory = IDL.Service({\n createPool: IDL.Func([CreatePoolArgs], [Result_1], []),\n deletePool: IDL.Func([IDL.Text], [], []),\n getAccessControlState: IDL.Func(\n [],\n [\n IDL.Record({\n owners: IDL.Vec(IDL.Principal),\n clients: IDL.Vec(IDL.Principal),\n }),\n ],\n [],\n ),\n getAvailabilityState: IDL.Func(\n [],\n [\n IDL.Record({\n whiteList: IDL.Vec(IDL.Principal),\n available: IDL.Bool,\n }),\n ],\n [],\n ),\n getCycleInfo: IDL.Func([], [Result_2], []),\n getPool: IDL.Func([GetPoolArgs], [Result_1], []),\n getPools: IDL.Func([], [Result], [\"query\"]),\n getRemovedPools: IDL.Func([], [Result], [\"query\"]),\n removePool: IDL.Func([GetPoolArgs], [], []),\n setAvailable: IDL.Func([IDL.Bool], [], []),\n setClients: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n setOwnerToPool: IDL.Func([IDL.Text, IDL.Vec(IDL.Principal)], [], []),\n setOwners: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n setWhiteList: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n });\n return SwapFactory;\n};\n","import { actor, ActorName } from \"@icpswap/actor\";\n\nimport { _SERVICE as SwapFactory_update_call } from \"candid/swap/SwapFactory_update_call\";\nimport { idlFactory as SwapFactoryInterfaceFactory_update_call } from \"candid/swap/SwapFactory_update_call.did\";\n\nexport const swapFactory_update_call = () =>\n actor.create({\n actorName: ActorName.SwapFactory,\n idlFactory: SwapFactoryInterfaceFactory_update_call,\n });\n","import { SvgIcon, SvgIconProps } from \"@mui/material\";\n\nexport default function DialogCloseIcon(props: SvgIconProps) {\n return (\n \n \n \n \n );\n}\n","import { Typography, TypographyProps } from \"@mui/material\";\nimport { useTheme } from \"@mui/styles\";\nimport { Theme } from \"@mui/material/styles\";\nimport React from \"react\";\n\nexport interface SmallButtonProps {\n children: React.ReactNode;\n onClick: TypographyProps[\"onClick\"];\n background?: string;\n color?: string;\n}\n\nexport function SmallButton({ children, onClick, background }: SmallButtonProps) {\n const theme = useTheme() as Theme;\n\n return (\n \n {children}\n \n );\n}\n","import { TypographyProps } from \"@mui/material\";\nimport { Trans } from \"@lingui/macro\";\nimport { SmallButton } from \"./SmallButton\";\n\nexport interface MinButtonProps {\n onClick: TypographyProps[\"onClick\"];\n}\n\nexport function MinButton({ onClick }: MinButtonProps) {\n return (\n \n MIN\n \n );\n}\n","import { createContext } from \"react\";\n\nexport interface CheckboxContextProps {\n checked: string[];\n onChange: (checked: string[]) => void;\n}\n\nexport default createContext({} as CheckboxContextProps);\n","import { ReactNode, useEffect, useState } from \"react\";\nimport CheckboxGroupContext from \"./context\";\n\nexport interface CheckboxGroupProps {\n defaultChecked?: string[];\n onChange?: (checked: string[]) => void;\n children: ReactNode;\n}\n\nexport default function CheckboxGroup({ defaultChecked, onChange, children }: CheckboxGroupProps) {\n const [checked, setChecked] = useState([]);\n\n useEffect(() => {\n if (defaultChecked && defaultChecked.length) {\n setChecked(defaultChecked);\n }\n }, [defaultChecked]);\n\n const handleCheckChange = (checked: string[]) => {\n setChecked(checked);\n if (onChange) onChange(checked);\n };\n\n return (\n \n {children}\n \n );\n}\n","import { useContext } from \"react\";\nimport { Box } from \"@mui/material\";\nimport CheckboxGroupContext from \"./context\";\n\nfunction UncheckedIcon() {\n return (\n \n \n \n );\n}\n\nfunction CheckedIcon() {\n return (\n \n \n \n \n );\n}\n\nexport interface CheckboxProps {\n value: string;\n radio?: boolean;\n}\n\nexport default function Checkbox({ value, radio }: CheckboxProps) {\n const { checked, onChange } = useContext(CheckboxGroupContext);\n\n const isCheck = checked.includes(value);\n\n const handleToggle = () => {\n if (radio) {\n if (checked.includes(value)) {\n onChange([]);\n } else {\n onChange([value]);\n }\n return;\n }\n\n if (checked.includes(value)) {\n const _checked = [...checked];\n _checked.splice(_checked.indexOf(value), 1);\n onChange(_checked);\n } else {\n onChange([...checked, value]);\n }\n };\n\n return (\n \n {isCheck ? : }\n \n );\n}\n","import copyToClipboard from \"copy-to-clipboard\";\nimport { ReactNode, forwardRef, useImperativeHandle, Ref } from \"react\";\nimport { Box } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { useTips, TIP_SUCCESS } from \"../../hooks/useTips\";\n\nconst useStyles = makeStyles({\n copy: {\n display: \"inline-block\",\n cursor: \"pointer\",\n },\n});\n\nexport interface CopyRef {\n copy: () => void;\n}\n\nexport default forwardRef(\n (\n { content, children, hide = false }: { content: string; children?: ReactNode; hide?: boolean },\n ref: Ref,\n ) => {\n const classes = useStyles();\n const [openTips] = useTips();\n\n const copy = () => {\n copyToClipboard(content);\n openTips(\"Copy Success\", TIP_SUCCESS);\n };\n\n useImperativeHandle(\n ref,\n () => ({\n copy,\n }),\n [copy],\n );\n\n return hide ? null : (\n \n {children}\n \n );\n },\n);\n","import React, { useMemo, useEffect } from \"react\";\nimport { useTheme, Typography, Box, Grid, useMediaQuery } from \"@mui/material\";\nimport { useTokenBalance } from \"hooks/token/useTokenBalance\";\nimport { useTokenInfo } from \"hooks/token/useTokenInfo\";\nimport { DotLoading, TokenImage } from \"components/index\";\nimport { Theme } from \"@mui/material/styles\";\nimport { TokenInfo } from \"types/token\";\nimport { useAccountPrincipal } from \"store/auth/hooks\";\nimport TokenStandardLabel from \"components/token/TokenStandardLabel\";\nimport { useUSDPriceById } from \"hooks/useUSDPrice\";\nimport {\n parseTokenAmount,\n formatDollarAmount,\n BigNumber,\n isValidPrincipal,\n toSignificantWithGroupSeparator,\n} from \"@icpswap/utils\";\nimport { PlusCircle } from \"react-feather\";\nimport { useTaggedTokenManager } from \"store/wallet/hooks\";\n\nexport interface TokenItemProps {\n canisterId: string;\n onClick?: (token: TokenInfo) => void;\n onUpdateTokenAdditional?: (tokenId: string, balance: string) => void;\n searchWord?: string;\n showBalance?: boolean;\n onTokenHide: (canisterId: string, hidden: boolean) => void;\n isActive?: boolean;\n isDisabled?: boolean;\n hidden?: boolean;\n}\n\nexport function TokenItem({\n canisterId,\n onClick,\n onUpdateTokenAdditional,\n searchWord,\n showBalance,\n onTokenHide,\n isActive,\n isDisabled,\n hidden,\n}: TokenItemProps) {\n const theme = useTheme() as Theme;\n const principal = useAccountPrincipal();\n const matchDownSM = useMediaQuery(theme.breakpoints.down(\"sm\"));\n\n const getBalanceId = useMemo(() => {\n if (showBalance) return canisterId;\n return undefined;\n }, [showBalance, canisterId]);\n\n const { result: tokenInfo } = useTokenInfo(canisterId);\n const { result: balance, loading } = useTokenBalance(getBalanceId, principal);\n const interfacePrice = useUSDPriceById(getBalanceId);\n\n const { taggedTokens, updateTaggedTokens, deleteTaggedTokens } = useTaggedTokenManager();\n\n const tokenBalanceAmount = useMemo(() => {\n if (!tokenInfo || balance === undefined) return undefined;\n return toSignificantWithGroupSeparator(parseTokenAmount(balance, tokenInfo.decimals).toString(), 6);\n }, [tokenInfo, balance]);\n\n const handleItemClick = () => {\n if (!tokenInfo) return;\n if (onClick) onClick(tokenInfo);\n };\n\n useEffect(() => {\n if (canisterId && balance) {\n if (onUpdateTokenAdditional) onUpdateTokenAdditional(canisterId, balance.toString());\n }\n }, [canisterId, balance]);\n\n const isTagged = taggedTokens.includes(canisterId);\n\n const handleAddToCache = (event: React.MouseEvent) => {\n event.stopPropagation();\n\n if (isTagged) {\n deleteTaggedTokens([canisterId]);\n } else {\n updateTaggedTokens([canisterId]);\n }\n };\n\n const isHidden = useMemo(() => {\n if (hidden) return true;\n if (!searchWord) return false;\n if (!tokenInfo) return true;\n\n if (isValidPrincipal(searchWord)) {\n return tokenInfo?.canisterId.toString() !== searchWord;\n }\n\n return (\n !tokenInfo.symbol.toLocaleLowerCase().includes(searchWord.toLocaleLowerCase()) &&\n !tokenInfo.name.toLocaleLowerCase().includes(searchWord.toLocaleLowerCase())\n );\n }, [searchWord, tokenInfo, hidden]);\n\n useEffect(() => {\n if (onTokenHide && canisterId) {\n onTokenHide(canisterId, isHidden);\n }\n }, [isHidden, canisterId, onTokenHide]);\n\n return (\n \n \n \n \n\n \n \n \n \n {tokenInfo?.symbol}\n \n \n {tokenInfo?.name}\n \n \n \n \n \n \n\n \n \n \n\n \n \n {!showBalance ? null : loading ? (\n \n ) : (\n \n \n {tokenBalanceAmount ?? \"--\"}\n \n \n {interfacePrice !== undefined && balance !== undefined && tokenInfo !== undefined\n ? formatDollarAmount(\n new BigNumber(interfacePrice)\n .multipliedBy(parseTokenAmount(balance, tokenInfo.decimals))\n .toString(),\n 4,\n true,\n 0.001,\n )\n : \"--\"}\n \n \n )}\n\n {showBalance || isTagged ? null : (\n \n )}\n \n \n \n );\n}\n","import { Typography } from \"@mui/material\";\nimport { Flex, TokenImage } from \"components/index\";\nimport { useTheme } from \"components/Mui\";\nimport { ICP, ICS, ckBTC, ckETH, ckUSDC } from \"@icpswap/tokens\";\nimport { Token } from \"@icpswap/swap-sdk\";\nimport { TokenInfo } from \"types/token\";\nimport { useTokenInfo } from \"hooks/token\";\nimport { useCallback } from \"react\";\n\nconst BASE_TOKENS = [ICP, ICS, ckUSDC, ckBTC, ckETH];\n\nexport interface BaseTokenProps {\n token: Token;\n onTokenClick: (token: TokenInfo) => void;\n}\n\nexport function BaseToken({ token, onTokenClick }: BaseTokenProps) {\n const theme = useTheme();\n\n const { result: tokenInfo } = useTokenInfo(token.address);\n\n const handleClick = useCallback(() => {\n if (tokenInfo) {\n onTokenClick(tokenInfo);\n }\n }, [onTokenClick, tokenInfo]);\n\n return (\n \n \n \n {token.symbol}\n \n \n );\n}\n\nexport interface BaseTokensProps {\n onTokenClick: (token: TokenInfo) => void;\n}\n\nexport function BaseTokens({ onTokenClick }: BaseTokensProps) {\n return (\n \n {BASE_TOKENS.map((base_token) => (\n \n ))}\n \n );\n}\n","import { useState, useCallback, useMemo } from \"react\";\nimport SwapModal from \"components/modal/swap\";\nimport { InputAdornment, useTheme, Typography, Box, useMediaQuery } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { useGlobalTokenList } from \"store/global/hooks\";\nimport { isDarkTheme } from \"utils\";\nimport { Trans, t } from \"@lingui/macro\";\nimport { FilledTextField, NoData } from \"components/index\";\nimport { Theme } from \"@mui/material/styles\";\nimport { TokenInfo } from \"types/token\";\nimport { isValidPrincipal } from \"@icpswap/utils\";\nimport { Search as SearchIcon } from \"react-feather\";\nimport { DEFAULT_DISPLAYED_TOKENS } from \"constants/wallet\";\nimport { useFetchSnsAllTokensInfo } from \"store/sns/hooks\";\nimport { TokenListMetadata } from \"types/token-list\";\nimport { useTaggedTokenManager } from \"store/wallet/hooks\";\nimport { ImportToken } from \"components/ImportToken/index\";\nimport { useDebouncedChangeHandler } from \"@icpswap/hooks\";\n\nimport { TokenItem } from \"./TokenItem\";\nimport { BaseTokens } from \"./BaseToken\";\n\nconst useStyles = makeStyles(() => {\n return {\n wrapper: {\n padding: \"0 24px\",\n \"@media(max-width: 640px)\": {\n padding: \"0 16px\",\n },\n },\n };\n});\n\nexport interface SelectorProps {\n open: boolean;\n onChange: (token: TokenInfo) => void;\n onClose: () => void;\n disabledCurrencyIds?: string[];\n activeCurrencyIds?: string[];\n}\n\nexport default function Selector({\n open,\n onChange,\n onClose,\n disabledCurrencyIds = [],\n activeCurrencyIds = [],\n}: SelectorProps) {\n const theme = useTheme() as Theme;\n const isDark = isDarkTheme(theme);\n const classes = useStyles();\n\n const matchDownSM = useMediaQuery(theme.breakpoints.down(\"sm\"));\n const [searchKeyword, setSearchKeyword] = useState(\"\");\n const [importTokenCanceled, setImportTokenCanceled] = useState(false);\n const [hiddenCanisterIds, setHiddenCanisterIds] = useState([]);\n\n const { result: snsAllTokensInfo } = useFetchSnsAllTokensInfo();\n const globalTokenList = useGlobalTokenList();\n\n const { taggedTokens } = useTaggedTokenManager();\n\n const yourTokens: string[] = useMemo(() => {\n return [...new Set(DEFAULT_DISPLAYED_TOKENS.map((e) => e.address).concat(taggedTokens))];\n }, [DEFAULT_DISPLAYED_TOKENS, taggedTokens]);\n\n const { snsTokens, noneSnsTokens } = useMemo(() => {\n if (!snsAllTokensInfo) return {};\n\n const snsTokens: TokenListMetadata[] = [];\n const noneSnsTokens: TokenListMetadata[] = [];\n\n globalTokenList\n .filter((token) => {\n return !yourTokens.includes(token.canisterId);\n })\n .forEach((token) => {\n const snsTokenInfo = snsAllTokensInfo.find((e) => e.canister_ids.ledger_canister_id === token.canisterId);\n\n if (snsTokenInfo?.canister_ids.root_canister_id) {\n snsTokens.push(token);\n } else {\n noneSnsTokens.push(token);\n }\n });\n\n return { snsTokens: snsTokens.map((e) => e.canisterId), noneSnsTokens: noneSnsTokens.map((e) => e.canisterId) };\n }, [globalTokenList, yourTokens, snsAllTokensInfo]);\n\n const handleTokenClick = useCallback(\n (token: TokenInfo) => {\n if (disabledCurrencyIds.includes(token?.canisterId.toString())) return;\n if (onChange) onChange(token);\n },\n [disabledCurrencyIds],\n );\n\n const handleSearchToken = useCallback((value: string) => {\n setImportTokenCanceled(false);\n setSearchKeyword(value);\n }, []);\n\n const [, debouncedSearch] = useDebouncedChangeHandler(searchKeyword, handleSearchToken, 300);\n\n const showImportToken = useMemo(() => {\n if (!searchKeyword || !yourTokens || !noneSnsTokens || !snsTokens) return false;\n\n if (isValidPrincipal(searchKeyword)) {\n return !yourTokens.concat(noneSnsTokens).concat(snsTokens).includes(searchKeyword);\n }\n\n return false;\n }, [searchKeyword, yourTokens, noneSnsTokens, snsTokens]);\n\n const handleTokenHidden = (canisterId: string, hidden: boolean) => {\n const index = hiddenCanisterIds.indexOf(canisterId);\n\n if (index !== -1) {\n if (!hidden) {\n setHiddenCanisterIds((prevState) => {\n const newCanisterIds = [...prevState];\n newCanisterIds.splice(index, 1);\n return [...newCanisterIds];\n });\n }\n return;\n }\n\n if (hidden) {\n setHiddenCanisterIds((prevState) => {\n const newCanisterIds = [...prevState, canisterId];\n return [...newCanisterIds];\n });\n }\n };\n\n const allTokenCanisterIds = useMemo(() => {\n return [...new Set([...yourTokens, ...(snsTokens ?? []), ...(noneSnsTokens ?? [])])];\n }, [yourTokens, snsTokens, noneSnsTokens]);\n\n const noData = useMemo(() => {\n return hiddenCanisterIds.length === allTokenCanisterIds.length && showImportToken === false;\n }, [hiddenCanisterIds, allTokenCanisterIds, showImportToken]);\n\n return (\n <>\n \n \n \n \n Do your own research before investing. While we've collected known information about tokens on the list,\n it's essential to conduct your research.\n \n \n\n \n \n \n \n ),\n maxLength: 50,\n }}\n onChange={debouncedSearch}\n />\n \n\n \n\n \n\n \n {noData ? : null}\n\n {showImportToken && searchKeyword && isValidPrincipal(searchKeyword) && !importTokenCanceled ? (\n \n setImportTokenCanceled(true)} />\n \n ) : null}\n\n \n {searchKeyword ? null : (\n \n \n Your Tokens\n \n \n )}\n\n \n {(yourTokens ?? []).map((tokenId) => (\n \n ))}\n \n \n\n \n {searchKeyword || (snsTokens ?? []).concat(noneSnsTokens ?? []).length === 0 ? null : (\n \n Token List\n \n )}\n\n \n {searchKeyword || (snsTokens ?? []).length === 0 ? null : (\n \n SNS Tokens\n \n )}\n\n \n {(snsTokens ?? []).map((tokenId) => (\n \n ))}\n \n \n\n \n {searchKeyword || (noneSnsTokens ?? []).length === 0 ? null : (\n \n Other Tokens\n \n )}\n\n \n {(noneSnsTokens ?? []).map((tokenId) => (\n \n ))}\n \n \n \n \n \n \n \n );\n}\n","import { Avatar, AvatarProps } from \"@mui/material\";\n\nexport default function AvatarImage(props: AvatarProps) {\n return (\n \n  \n \n );\n}\n","import { TokenImage as UITokenImage } from \"@icpswap/ui\";\nimport { useSNSTokenRootId } from \"hooks/token/useSNSTokenRootId\";\nimport { SxProps } from \"@mui/material\";\n\nexport interface TokenImageProps {\n logo: string | undefined;\n size?: string;\n tokenId?: string;\n sx?: SxProps;\n}\n\nexport function TokenImage({ tokenId, logo, sx, size = \"28px\" }: TokenImageProps) {\n const root_canister_id = useSNSTokenRootId(tokenId);\n\n return ;\n}\n","import { useTheme, Typography, Box } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { Trans } from \"@lingui/macro\";\nimport { Theme } from \"@mui/material/styles\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n button: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"140px\",\n height: \"40px\",\n borderRadius: \"8px\",\n background: theme.palette.background.level1,\n cursor: \"pointer\",\n },\n };\n});\n\nexport interface ImportTokenTipProps {\n onOk: () => void;\n onNo: () => void;\n}\n\nexport function ImportTokenTip({ onOk }: ImportTokenTipProps) {\n const theme = useTheme() as Theme;\n const classes = useStyles();\n\n return (\n \n \n The token is not found in the list, do you want to import it?\n \n \n {/* \n \n No\n \n */}\n \n \n Yes\n \n \n \n \n );\n}\n","import { useEffect, useState } from \"react\";\nimport { Select } from \"components/Select/ForToken\";\nimport { TOKEN_STANDARD } from \"@icpswap/token-adapter\";\n\nexport const TokenStandards = [\n { label: \"EXT\", value: TOKEN_STANDARD.EXT },\n { label: \"DIP20\", value: TOKEN_STANDARD.DIP20 },\n { label: \"ICRC-1\", value: TOKEN_STANDARD.ICRC1 },\n { label: \"ICRC-2\", value: TOKEN_STANDARD.ICRC2 },\n];\n\nexport interface SelectTokenStandardProps {\n border?: boolean;\n value?: TOKEN_STANDARD;\n onChange?: (standard: TOKEN_STANDARD) => void;\n filled?: boolean;\n fullHeight?: boolean;\n defaultValue?: TOKEN_STANDARD;\n showClean?: boolean;\n}\n\nexport function SelectTokenStandard({\n value: standard,\n onChange,\n border,\n filled,\n fullHeight,\n showClean,\n defaultValue = TOKEN_STANDARD.ICRC1,\n}: SelectTokenStandardProps) {\n const [value, setValue] = useState(defaultValue);\n\n useEffect(() => {\n if (standard) {\n setValue(standard);\n }\n }, [standard]);\n\n const handleValueChange = (value: TOKEN_STANDARD) => {\n setValue(value);\n\n if (onChange) {\n onChange(value);\n }\n };\n\n return (\n \n );\n}\n","import { useTheme, Typography, Box, Button, CircularProgress } from \"@mui/material\";\nimport { Trans } from \"@lingui/macro\";\nimport { Theme } from \"@mui/material/styles\";\nimport { TOKEN_STANDARD, tokenStandardVerification } from \"@icpswap/token-adapter\";\nimport { useState } from \"react\";\nimport { SelectTokenStandard } from \"components/Select/SelectTokenStandard\";\n\nimport { Verification } from \"../types\";\n\nexport interface ChooseStandardProps {\n canisterId: string;\n onNext: (verification: Verification) => void;\n}\n\nexport function ChooseStandardAndVerify({ canisterId, onNext }: ChooseStandardProps) {\n const theme = useTheme() as Theme;\n\n const [loading, setLoading] = useState(false);\n const [checkFailed, setCheckFailed] = useState(false);\n\n const [standard, setStandard] = useState(TOKEN_STANDARD.ICRC1);\n\n const handleStandardChange = (standard: TOKEN_STANDARD) => {\n setLoading(false);\n setCheckFailed(false);\n setStandard(standard);\n };\n\n const handleNext = async () => {\n setLoading(true);\n setCheckFailed(false);\n\n const { valid, metadata, support_icrc2 } = await tokenStandardVerification(canisterId, standard);\n\n setLoading(false);\n\n if (!valid || !metadata) {\n setCheckFailed(true);\n return;\n }\n\n onNext({\n valid,\n metadata,\n support_icrc2,\n standard,\n canisterId,\n });\n };\n\n return (\n \n \n Please select the token standard first\n \n\n {checkFailed ? (\n \n This canister id did not match the token standard \"{standard}\"\n \n ) : null}\n\n \n \n \n\n \n : null}\n >\n Next\n \n \n \n );\n}\n","import { icrc1, icrc2 } from \"@icpswap/actor\";\nimport { DIP20Adapter } from \"./DIP20Adapter\";\nimport { DIP20WICPAdapter } from \"./DIP20WICPAdapter\";\nimport { DIP20XTCAdapter } from \"./DIP20XTCAdapter\";\nimport { EXTAdapter } from \"./EXTAdapter\";\nimport { icrc1Adapter } from \"./ICRC1\";\nimport { icrc2Adapter } from \"./ICRC2\";\nimport { TOKEN_STANDARD, Metadata } from \"./types\";\n\nexport async function tokenStandardVerification(canisterId: string, standard: TOKEN_STANDARD) {\n let valid = false;\n let metadata: undefined | Metadata | null = null;\n let support_icrc2 = false;\n\n if (standard === TOKEN_STANDARD.DIP20) {\n try {\n metadata = (await DIP20Adapter.metadata({ canisterId })).data;\n if (metadata?.symbol && metadata?.symbol !== \"WICP\" && metadata?.symbol !== \"XTC\") valid = true;\n } catch (error) {\n console.error(error);\n valid = false;\n }\n } else if (standard === TOKEN_STANDARD.DIP20_WICP) {\n try {\n metadata = (await DIP20WICPAdapter.metadata({ canisterId })).data;\n if (metadata?.symbol && metadata?.symbol === \"WICP\") valid = true;\n } catch (error) {\n console.error(error);\n valid = false;\n }\n } else if (standard === TOKEN_STANDARD.DIP20_XTC) {\n try {\n metadata = (await DIP20XTCAdapter.metadata({ canisterId })).data;\n\n if (metadata?.symbol && metadata.symbol === \"XTC\") valid = true;\n } catch (error) {\n console.error(error);\n valid = false;\n }\n } else if (standard === TOKEN_STANDARD.EXT) {\n try {\n metadata = (await EXTAdapter.metadata({ canisterId })).data;\n if (metadata?.symbol) valid = true;\n } catch (error) {\n console.error(error);\n valid = false;\n }\n } else if (standard === TOKEN_STANDARD.ICRC2) {\n try {\n metadata = (await icrc2Adapter.metadata({ canisterId })).data;\n\n const standards = await (await icrc2(canisterId)).icrc1_supported_standards();\n\n let _valid = false;\n\n for (let i = 0; i < standards.length; i++) {\n if (standards[i].name.includes(\"ICRC-2\")) {\n _valid = true;\n break;\n }\n }\n\n if (metadata?.symbol && _valid) valid = true;\n } catch (error) {\n console.error(error);\n valid = false;\n }\n } else if (standard === TOKEN_STANDARD.ICRC1) {\n try {\n metadata = (await icrc1Adapter.metadata({ canisterId })).data;\n const standards = await (await icrc1(canisterId)).icrc1_supported_standards();\n\n let _valid = false;\n\n for (let i = 0; i < standards.length; i++) {\n if (standards[i].name.includes(\"ICRC-1\")) {\n _valid = true;\n break;\n }\n }\n\n for (let i = 0; i < standards.length; i++) {\n if (standards[i].name.includes(\"ICRC-2\")) {\n support_icrc2 = true;\n break;\n }\n }\n\n if (metadata?.symbol && !!_valid) valid = true;\n } catch (error) {\n console.error(error);\n valid = false;\n }\n }\n\n return {\n valid,\n metadata,\n support_icrc2,\n };\n}\n","import { useState } from \"react\";\nimport { Button, Box, Grid, Typography, Checkbox, Avatar, useTheme } from \"@mui/material\";\nimport { Modal, TextButton } from \"components/index\";\nimport { Trans, t } from \"@lingui/macro\";\nimport TokenStandardLabel from \"components/token/TokenStandardLabel\";\nimport { TOKEN_STANDARD, registerTokens } from \"@icpswap/token-adapter\";\nimport { useUpdateTokenStandard, getTokenStandard } from \"store/token/cache/hooks\";\nimport { useSuccessTip } from \"hooks/useTips\";\nimport { INFO_URL } from \"constants/index\";\nimport { useTaggedTokenManager } from \"store/wallet/hooks\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport { Verification } from \"../types\";\n\nexport function WarningIcon() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport interface ImportTokenModalProps {\n open: boolean;\n canisterId: string;\n onClose: () => void;\n onImportSuccessfully?: () => void;\n verification: Verification;\n}\n\nexport function ConfirmImport({\n canisterId,\n open,\n onClose,\n onImportSuccessfully,\n verification,\n}: ImportTokenModalProps) {\n const theme = useTheme() as Theme;\n const [riskWarning, setRiskWarning] = useState(false);\n\n const updateTokenStandard = useUpdateTokenStandard();\n\n const { updateTaggedTokens } = useTaggedTokenManager();\n const [openSuccessTip] = useSuccessTip();\n\n const handleConfirm = () => {\n if (!verification) return;\n\n let __standard = verification.standard;\n\n // If the imported token support ICRC2, and has no standard registered,\n // make standard is ICRC2 if user import it as icrc1\n if (verification.support_icrc2 && verification.standard === TOKEN_STANDARD.ICRC1 && !getTokenStandard(canisterId)) {\n __standard = TOKEN_STANDARD.ICRC2;\n }\n\n updateTokenStandard([{ canisterId, standard: __standard }]);\n registerTokens([{ canisterId, standard: __standard }]);\n openSuccessTip(t`Imported successfully`);\n updateTaggedTokens([canisterId]);\n if (onImportSuccessfully) onImportSuccessfully();\n onClose();\n };\n\n let error = \"\";\n if (getTokenStandard(canisterId) && getTokenStandard(canisterId) !== verification.standard)\n error = t`Retry after changing token standard.`;\n\n return (\n \n \n \n \n  \n \n \n \n {verification.metadata.symbol}({verification.metadata.name})\n \n \n {canisterId}\n \n\n \n \n \n\n \n \n View On Info\n \n \n \n \n\n \n \n \n \n \n \n \n Anyone can create a token on Internet Computer with any name and LOGO, including creating fake versions\n of existing tokens and tokens that claim to represent projects that do not have a token.\n \n \n\n \n \n These risks are always present. If you purchase these fake tokens, it may result in a loss of assets.\n Please DYOR before investing!\n \n \n \n \n\n \n {\n setRiskWarning(checked);\n }}\n sx={{\n padding: \"0\",\n }}\n />\n\n \n setRiskWarning(!riskWarning)}>\n I have read the risk warning carefully and agree to take the risk myself\n \n \n \n \n\n \n \n \n \n );\n}\n","import { useState } from \"react\";\n\nimport { ImportTokenTip } from \"./steps/Tip\";\nimport { ChooseStandardAndVerify } from \"./steps/ChooseStandard\";\nimport { ConfirmImport } from \"./steps/Confirm\";\nimport { Verification } from \"./types\";\n\nexport interface ImportTokenProps {\n canisterId: string;\n onCancel: () => void;\n onImportSuccessfully?: () => void;\n}\n\nexport function ImportToken({ canisterId, onCancel, onImportSuccessfully }: ImportTokenProps) {\n const [step, setStep] = useState(0);\n\n const [verification, setVerification] = useState({} as Verification);\n\n const handleNext = (verification: Verification) => {\n setVerification(verification);\n setStep(2);\n };\n\n return (\n <>\n {step === 0 ? setStep(1)} onNo={onCancel} /> : null}\n {step === 1 ? : null}\n {step === 2 ? (\n setStep(1)}\n onImportSuccessfully={onImportSuccessfully}\n verification={verification}\n />\n ) : null}\n \n );\n}\n","import React, { useEffect, useState, useRef, forwardRef, useImperativeHandle } from \"react\";\nimport { TextField, Typography, Box, Menu, Grid, MenuItem } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport KeyboardArrowDownIcon from \"@mui/icons-material/KeyboardArrowDown\";\nimport NoData from \"components/no-data\";\nimport { Theme } from \"@mui/material/styles\";\n\ninterface UseStylesProps {\n contained: boolean;\n fullHeight?: boolean;\n borderRadius: string;\n label: boolean;\n border?: string | boolean;\n multiline?: boolean;\n background?: string | \"level3\";\n}\n\nconst useStyles = ({ contained, background, fullHeight, multiline, borderRadius, label, border }: UseStylesProps) => {\n return makeStyles((theme: Theme) => {\n return {\n inputBox: {\n display: label && contained ? \"block\" : \"flex\",\n alignItems: \"center\",\n border: contained\n ? border ?? theme.palette.border.normal\n : border === true\n ? theme.palette.border.normal\n : border === \"border0\"\n ? theme.palette.border.border0\n : \"none\",\n background: background\n ? background === \"level3\"\n ? theme.palette.background.level3\n : background\n : theme.palette.background.level4,\n borderRadius,\n padding: contained ? `7px 12px` : \"3px 12px\",\n gap: \"0 5px\",\n height: contained || multiline ? \"auto\" : fullHeight ? \"100%\" : \"48px\",\n ...(multiline ? { minHeight: \"48px\" } : {}),\n margin: label ? \"12px 0 0 0\" : \"0\",\n \"@media(max-width: 640px)\": {\n padding: contained ? `4px 6px` : \"0 6px\",\n },\n \"& input\": {\n color: theme.palette.text.primary,\n },\n \"&:hover\": {\n borderColor: \"#ffffff\",\n },\n },\n };\n });\n};\n\nexport type FilledTextFiledMenus = {\n label: string;\n value: any;\n};\n\nexport interface FilledTextFieldProps {\n label?: string | React.ReactNode;\n value?: any;\n select?: boolean;\n onChange?: (value: any) => void;\n onFocus?: () => void;\n required?: boolean;\n menus?: FilledTextFiledMenus[];\n maxWidth?: number;\n fullHeight?: boolean;\n disabled?: boolean;\n InputProps?: any;\n contained?: boolean;\n CustomNoData?: React.ReactNode;\n placeholder?: string;\n type?: string;\n menuDisabled?: (value: FilledTextFiledMenus) => boolean;\n helperText?: string;\n multiline?: boolean;\n borderRadius?: string;\n border?: string | boolean;\n labelSize?: string;\n fontSize?: string;\n placeholderSize?: string;\n background?: string;\n [x: string]: any;\n}\n\nexport interface FilledTextFieldLabelProps {\n label?: React.ReactNode;\n required?: boolean;\n labelSize?: string;\n}\n\nexport function FilledTextFieldLabel({ label, required, labelSize = \"16px\" }: FilledTextFieldLabelProps) {\n return (\n \n {required && (\n \n *\n \n )}\n\n \n {label}\n \n \n );\n}\n\ninterface ValueProps {\n helperText?: string;\n select?: boolean;\n value?: any;\n menus?: FilledTextFiledMenus[];\n}\n\nfunction Value({ select, value, menus = [], helperText }: ValueProps) {\n return (\n <>\n \n {select ? menus.filter((menu) => menu.value === value)[0]?.label ?? value : value}\n \n {helperText ? (\n \n {helperText}\n \n ) : null}\n \n );\n}\n\nfunction FilledTextField(\n {\n label,\n value,\n select,\n onChange,\n required,\n menus = [],\n maxWidth,\n fullHeight,\n disabled,\n InputProps,\n borderRadius = \"8px\",\n contained = false,\n CustomNoData,\n menuDisabled,\n helperText,\n multiline,\n onFocus,\n border,\n background,\n labelSize,\n ...props\n }: FilledTextFieldProps,\n ref,\n) {\n const classes = useStyles({ contained, background, fullHeight, borderRadius, border, label: !!label, multiline })();\n const [anchorEl, setAnchorEl] = useState(null);\n const inputRef = useRef(null);\n const outerBoxRef = useRef(null);\n const [menuWidth, setMenuWidth] = useState(undefined);\n\n const handleOuterBoxClick = (event: any) => {\n if (disabled) return;\n if (select) {\n setAnchorEl(event.currentTarget);\n } else {\n inputRef?.current?.focus();\n }\n };\n\n const focus = () => {\n inputRef?.current?.focus();\n };\n\n useImperativeHandle(\n ref,\n () => ({\n focus,\n }),\n [focus],\n );\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n useEffect(() => {\n const width = outerBoxRef?.current?.clientWidth;\n setMenuWidth(width ?? undefined);\n }, []);\n\n const handleMenuItemClick = ({ value }: { value: any }) => {\n if (onChange) onChange(value);\n setAnchorEl(null);\n };\n\n return (\n \n {label ? : null}\n \n <>\n {contained && }\n \n \n {!select ? (\n onChange && onChange(value)}\n value={value}\n multiline={multiline}\n InputProps={{\n disableUnderline: true,\n ...(InputProps || {}),\n }}\n fullWidth\n disabled={disabled}\n helperText={helperText}\n onFocus={onFocus}\n autoComplete=\"off\"\n />\n ) : value ? (\n \n ) : (\n \n {props.placeholder}\n \n )}\n \n {select && }\n \n \n \n\n {Boolean(anchorEl) && (\n \n {menus.map((menu, index) => (\n {\n if (!!menuDisabled && menuDisabled(menu)) return;\n handleMenuItemClick(menu);\n }}\n >\n {menu.label}\n \n ))}\n {menus.length === 0 ? CustomNoData || : null}\n \n )}\n \n );\n}\n\nexport default forwardRef(FilledTextField);\n","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgExternalLink(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 10,\n height: 10,\n viewBox: \"0 0 10 10\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0.333374 0.333984H4.33337V1.66732H1.66671V8.33398H8.33337V5.66732H9.66671V9.66732H0.333374V0.333984Z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M5.93337 0.25H5.18337V1.75H5.93337H7.21439L3.20314 5.86965L2.67993 6.40701L3.75464 7.45343L4.27785 6.91608L8.25177 2.83476V4.06841V4.81841H9.75177V4.06841V1V0.25H9.00177H5.93337Z\",\n fill: \"currentColor\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgExternalLink);\nexport default __webpack_public_path__ + \"static/media/external-link.e7231d53fd4a4251325358fb5c18c826.svg\";\nexport { ForwardRef as ReactComponent };","import { useRef } from \"react\";\nimport { Box, Typography, useTheme, Theme } from \"components/Mui\";\nimport Copy, { CopyRef } from \"components/Copy\";\nimport { ReactComponent as ExternalLink } from \"assets/icons/external-link.svg\";\nimport { Connector } from \"constants/wallet\";\nimport { useConnectorType } from \"store/auth/hooks\";\nimport { mockALinkAndOpen } from \"@icpswap/utils\";\n\nconst ConnectorIcon: { [key: string]: string } = {\n [Connector.IC]: \"/images/connect/InternetIdentity.svg\",\n [Connector.ME]: \"/images/connect/AstroX.svg\",\n [Connector.ICPSwap]: \"/images/connect/icpswap.svg\",\n [Connector.INFINITY]: \"/images/connect/Infinity.svg\",\n [Connector.Metamask]: \"/images/connect/metamask.svg\",\n [Connector.NFID]: \"/images/connect/NFID.svg\",\n [Connector.PLUG]: \"/images/connect/Plug.svg\",\n [Connector.STOIC]: \"/images/connect/stoic.svg\",\n};\n\nexport interface AddressSectionProps {\n label: string;\n link: string | undefined;\n address: string | undefined;\n labelColor: \"#E3F2FD\" | \"#EFEFFF\";\n}\n\nexport function AddressSection({ label, link, address, labelColor }: AddressSectionProps) {\n const theme = useTheme() as Theme;\n\n const copyRef = useRef(null);\n\n const handleCopy = () => {\n if (copyRef) {\n copyRef?.current?.copy();\n }\n };\n\n const handleToExplorer = () => {\n if (!link) return;\n mockALinkAndOpen(link, \"explorers_address\");\n };\n\n const connector = useConnectorType();\n\n return (\n \n \n \n {label}\n \n\n {connector ? \"\" : null}\n \n\n \n {address}\n \n\n \n\n \n \n \n \n );\n}\n","import { explorerLink, principalToAccount } from \"@icpswap/utils\";\nimport { t } from \"@lingui/macro\";\nimport { useAccountPrincipalString } from \"store/auth/hooks\";\nimport { AddressSection } from \"./Address\";\n\nexport function AccountSection() {\n const principal = useAccountPrincipalString();\n\n return (\n \n );\n}\n","import { explorerLink } from \"@icpswap/utils\";\nimport { t } from \"@lingui/macro\";\nimport { useAccountPrincipalString } from \"store/auth/hooks\";\nimport { AddressSection } from \"./Address\";\n\nexport default function ProfileSection() {\n const principal = useAccountPrincipalString();\n\n return (\n \n );\n}\n","export default function LogoutIcon() {\n return (\n \n \n \n \n );\n}\n","import { Button, Dialog, DialogTitle, DialogContent, Typography, Grid } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { Trans } from \"@lingui/macro\";\nimport { Theme } from \"@mui/material/styles\";\n\nconst useStyles = makeStyles((theme: Theme) => ({\n titleContainer: {\n position: \"relative\",\n },\n title: {\n fontSize: theme.fontSize.lg,\n fontWeight: 700,\n },\n detailItem: {\n marginBottom: \"24px\",\n },\n value: {\n textAlign: \"right\",\n wordBreak: \"break-all\",\n },\n closeButton: {\n position: \"absolute\",\n right: 0,\n top: \"50%\",\n transform: \"translate(0, -50%)\",\n cursor: \"pointer\",\n \"&:hover\": {\n color: theme.palette.secondary.main,\n },\n },\n}));\n\nexport default function LogoutConfirmModal({\n open,\n onCancel,\n onConfirm,\n}: {\n open: boolean;\n onCancel: () => void;\n onConfirm: () => void;\n}) {\n const classes = useStyles();\n\n return (\n \n \n \n \n Log Out\n \n \n \n \n \n \n \n \n When you log out, your account information will be cleared for asset security. Please ensure that you\n have safely backed up your wallet's mnemonic phrase.\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { useState, ReactNode } from \"react\";\nimport { Box } from \"@mui/material\";\nimport { useUserLogout } from \"store/auth/hooks\";\nimport LogoutConfirmModal from \"./Confirm\";\n\nexport default function LogOutSection({ children, onLogout }: { children: ReactNode; onLogout: () => void }) {\n const [logoutConfirmOpen, setLogoutConfirmOpen] = useState(false);\n const logout = useUserLogout();\n\n const onLogoutConfirm = async () => {\n await logout();\n setLogoutConfirmOpen(false);\n if (onLogout) onLogout();\n };\n\n return (\n <>\n setLogoutConfirmOpen(true)}>{children}\n setLogoutConfirmOpen(false)}\n />\n \n );\n}\n","import { useEffect, useRef, useState } from \"react\";\nimport { makeStyles, useTheme } from \"@mui/styles\";\nimport { Chip, List, Paper, Popper, ButtonBase, Box, Typography, useMediaQuery, SvgIcon, Fade } from \"@mui/material\";\nimport { shorten } from \"@icpswap/utils\";\nimport { Trans, t } from \"@lingui/macro\";\nimport { ClickAwayListener } from \"@mui/base/ClickAwayListener\";\nimport {\n useAccountPrincipal,\n useConnectorStateConnected,\n useUserLogout,\n useWalletConnectorManager,\n useConnectorType,\n} from \"store/auth/hooks\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Flex } from \"@icpswap/ui\";\nimport { Connector } from \"constants/wallet\";\n\nimport { AccountSection } from \"./Account\";\nimport Principal from \"./Principal\";\nimport LogoutIcon from \"./LogoutIcon\";\nimport LogOutSection from \"../LogOutSection\";\n\nconst useStyles = makeStyles((theme: Theme) => ({\n paper: {\n backgroundColor: \"#fff\",\n borderRadius: \"12px\",\n },\n navContainer: {\n width: \"100%\",\n maxWidth: \"350px\",\n minWidth: \"300px\",\n borderRadius: \"10px\",\n padding: \"0\",\n [theme.breakpoints.down(\"sm\")]: {\n minWidth: \"100%\",\n maxWidth: \"280px\",\n },\n },\n profileChip: {\n height: \"48px\",\n alignItems: \"center\",\n borderRadius: \"27px\",\n transition: \"all .2s ease-in-out\",\n borderColor: theme.palette.mode === \"dark\" ? theme.palette.dark.main : theme.palette.primary.light,\n backgroundColor: theme.palette.mode === \"dark\" ? theme.palette.dark.main : theme.palette.primary.light,\n '&[aria-controls=\"menu-list-grow\"], &:hover': {\n borderColor: theme.palette.primary.main,\n background: `${theme.palette.primary.main}!important`,\n color: theme.palette.primary.light,\n \"& svg\": {\n stroke: theme.palette.primary.light,\n },\n },\n },\n profileLabel: {\n lineHeight: 0,\n padding: \"12px\",\n },\n listItem: {\n paddingLeft: \"30px\",\n wordBreak: \"break-all\",\n display: \"flex\",\n height: \"52px\",\n alignItems: \"center\",\n cursor: \"pointer\",\n \"&:hover\": {\n background: \"#F5F5FF\",\n },\n \"& .MuiTypography-root\": {\n color: \"#111936\",\n marginLeft: \"10px\",\n },\n },\n profileRoot: {\n background: theme.palette.mode === \"dark\" ? theme.themeOption.defaultGradient : theme.colors.lightPrimaryMain,\n color: \"#fff\",\n border: \"none\",\n borderRadius: \"12px\",\n \"&:hover\": {\n backgroundColor:\n theme.palette.mode === \"dark\"\n ? theme.themeOption.defaultGradient\n : `${theme.colors.lightPrimaryMain}!important`,\n },\n },\n}));\n\nexport function ICRocksLoadIcon(props: any) {\n return (\n \n \n \n \n );\n}\n\nexport default function ProfileSection() {\n const classes = useStyles();\n const theme = useTheme() as Theme;\n const matchDownMD = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n const [open, setOpen] = useState(false);\n\n const anchorRef = useRef(null);\n const prevOpen = useRef(open);\n\n const principal = useAccountPrincipal();\n const isConnected = useConnectorStateConnected();\n const logout = useUserLogout();\n const connectorType = useConnectorType();\n\n const [, walletManager] = useWalletConnectorManager();\n\n const handleToggle = () => {\n setOpen((prevOpen) => !prevOpen);\n };\n\n const handleClose = (event: MouseEvent | TouchEvent) => {\n if (anchorRef.current && anchorRef.current.contains(event.target as Node)) return;\n setOpen(false);\n };\n\n const handleConnectWallet = async () => {\n await logout();\n walletManager(true);\n };\n\n useEffect(() => {\n if (anchorRef.current && prevOpen.current === true && open === false) {\n anchorRef.current.focus();\n }\n prevOpen.current = open;\n }, [open]);\n\n return (\n <>\n \n \n \n\n {/* @ts-ignore */}\n \n {({ TransitionProps }) => (\n \n \n \n \n \n \n \n \n \n Copy Account ID for sending from exchanges and Principal ID for lCP network.\n \n \n \n \n \n \n \n \n {connectorType === Connector.IC ? (\n \n \n \n Internet Identity generates unique Principal IDs and Account IDs for each Dapp. This\n feature ensures that user identities and account information are isolated across\n different applications, enhancing security and privacy protection.\n \n \n \n ) : null}\n \n \n\n setOpen(false)}>\n \n \n \n Log Out\n \n \n \n \n \n \n \n \n )}\n \n \n );\n}\n","import { Grid, Box, useTheme } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport LoadingImage from \"assets/images/loading.png\";\nimport { Theme } from \"@mui/material/styles\";\n\nconst useStyles = makeStyles(() => {\n return {\n loadingContainer: {\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n minHeight: \"140px\",\n paddingTop: \"56px\",\n overflow: \"hidden\",\n },\n mask: {\n position: \"absolute\",\n top: \"56px\",\n left: 0,\n width: \"100%\",\n height: \"100%\",\n opacity: 0.2,\n },\n };\n});\n\nexport interface ListLoadingProps {\n loading: boolean;\n mask?: boolean;\n maskBackground?: string;\n}\n\nexport default function ListLoading({ loading, mask = true, maskBackground }: ListLoadingProps) {\n const classes = useStyles();\n const theme = useTheme() as Theme;\n\n return loading ? (\n \n \n \"\"\n \n ) : null;\n}\n","import { Grid, Box } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport LoadingImage from \"assets/images/loading.png\";\nimport { Theme } from \"@mui/material/styles\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n loadingContainer: {\n position: \"relative\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n minHeight: \"300px\",\n overflow: \"hidden\",\n },\n mask: {\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n background: theme.palette.loading.background,\n opacity: 0.3,\n },\n };\n});\n\nexport interface ImageLoadingProps {\n loading: boolean;\n mask?: boolean;\n}\n\nexport default ({ loading, mask = false }: ImageLoadingProps) => {\n const classes = useStyles();\n\n return loading ? (\n \n \n \"\"\n \n ) : null;\n};\n","import { Grid, CircularProgress, Box } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { Theme } from \"@mui/material/styles\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n loadingContainer: {\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n overflow: \"hidden\",\n },\n mask: {\n position: \"absolute\",\n left: 0,\n width: \"100%\",\n height: \"100%\",\n background: theme.palette.loading.background,\n opacity: 0.7,\n },\n };\n});\n\nexport default ({\n loading,\n circularSize = 40,\n maskBorderRadius,\n}: {\n loading: boolean;\n circularSize?: number;\n maskBorderRadius?: string;\n}) => {\n const classes = useStyles();\n\n return loading ? (\n \n \n \n \n ) : null;\n};\n","var _ellipse, _rect, _rect2, _rect3, _g, _rect4, _rect5, _g2, _path, _rect6, _path2, _g3, _rect7, _path3, _path4, _path5, _path6, _circle, _path7, _path8, _path9, _path10, _circle2, _path11, _path12, _path13, _path14, _g4, _path15, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgMaintenance(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 370,\n height: 262,\n viewBox: \"0 0 370 262\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ellipse || (_ellipse = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 194.08,\n cy: 199.187,\n rx: 157.761,\n ry: 24.4018,\n fill: \"#0B0E3E\"\n })), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 82.3706,\n y: 27,\n width: 16.2469,\n height: 165.516,\n rx: 2,\n fill: \"#FFD997\"\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 58,\n y: 46.4883,\n width: 105.605,\n height: 37.8092,\n rx: 4,\n fill: \"#5C78E5\"\n })), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask0_34729_22996\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 58,\n y: 46,\n width: 106,\n height: 39\n }, _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 58,\n y: 46.4883,\n width: 105.605,\n height: 37.8092,\n rx: 4,\n fill: \"#D9D9D9\"\n }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask0_34729_22996)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M104.936 41.2734H127.1L99.7207 90.8166H77.5566L104.936 41.2734Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M55.3923 41.2734H77.5563L50.1772 90.8166H28.0132L55.3923 41.2734Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M154.479 41.2734H176.643L149.264 90.8166H127.1L154.479 41.2734Z\",\n fill: \"white\"\n }))), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 58,\n y: 106.465,\n width: 105.605,\n height: 37.8092,\n rx: 4,\n fill: \"#5C78E5\"\n })), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask1_34729_22996\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 58,\n y: 106,\n width: 106,\n height: 39\n }, _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 58,\n y: 106.465,\n width: 105.605,\n height: 37.8092,\n rx: 4,\n fill: \"#D9D9D9\"\n }))), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask1_34729_22996)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M104.936 101.25H127.1L99.7207 150.793H77.5566L104.936 101.25Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M55.3923 101.25H77.5563L50.1772 150.793H28.0132L55.3923 101.25Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M154.479 101.25H176.643L149.264 150.793H127.1L154.479 101.25Z\",\n fill: \"white\"\n }))), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M265.491 70.5446C268.117 63.6984 277.803 63.6984 280.429 70.5446L323.466 182.731H222.454L265.491 70.5446Z\",\n fill: \"#ED9F18\"\n })), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 209.969,\n y: 178.125,\n width: 125.982,\n height: 12.8117,\n rx: 3,\n fill: \"#ED9F18\"\n })), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask2_34729_22996\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 222,\n y: 65,\n width: 102,\n height: 118\n }, _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M265.491 70.5446C268.117 63.6984 277.803 63.6984 280.429 70.5446L323.466 182.731H222.454L265.491 70.5446Z\",\n fill: \"#5C78E5\"\n }))), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask2_34729_22996)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: 215.581,\n y: 105.523,\n width: 106.776,\n height: 20.2852,\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 214.676,\n y: 136.484,\n width: 106.776,\n height: 20.2852,\n fill: \"white\"\n }))), _rect7 || (_rect7 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 22.6997,\n y: 51.0742,\n width: 341.626,\n height: 192.945,\n fill: \"url(#pattern0)\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M186.27 116.333C186.27 118.88 184.749 121.301 182.055 123.13C179.366 124.954 175.595 126.115 171.381 126.115C167.166 126.115 163.396 124.954 160.707 123.13C158.012 121.301 156.491 118.88 156.491 116.333C156.491 113.786 158.012 111.365 160.707 109.536C163.396 107.712 167.166 106.551 171.381 106.551C175.595 106.551 179.366 107.712 182.055 109.536C184.749 111.365 186.27 113.786 186.27 116.333Z\",\n fill: \"white\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M186.27 116.333C186.27 118.88 184.749 121.301 182.055 123.13C179.366 124.954 175.595 126.115 171.381 126.115C167.166 126.115 163.396 124.954 160.707 123.13C158.012 121.301 156.491 118.88 156.491 116.333C156.491 113.786 158.012 111.365 160.707 109.536C163.396 107.712 167.166 106.551 171.381 106.551C175.595 106.551 179.366 107.712 182.055 109.536C184.749 111.365 186.27 113.786 186.27 116.333Z\",\n fill: \"white\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M186.27 116.333C186.27 118.88 184.749 121.301 182.055 123.13C179.366 124.954 175.595 126.115 171.381 126.115C167.166 126.115 163.396 124.954 160.707 123.13C158.012 121.301 156.491 118.88 156.491 116.333C156.491 113.786 158.012 111.365 160.707 109.536C163.396 107.712 167.166 106.551 171.381 106.551C175.595 106.551 179.366 107.712 182.055 109.536C184.749 111.365 186.27 113.786 186.27 116.333Z\",\n fill: \"white\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M186.27 116.333C186.27 118.88 184.749 121.301 182.055 123.13C179.366 124.954 175.595 126.115 171.381 126.115C167.166 126.115 163.396 124.954 160.707 123.13C158.012 121.301 156.491 118.88 156.491 116.333C156.491 113.786 158.012 111.365 160.707 109.536C163.396 107.712 167.166 106.551 171.381 106.551C175.595 106.551 179.366 107.712 182.055 109.536C184.749 111.365 186.27 113.786 186.27 116.333Z\",\n stroke: \"#29006F\",\n strokeWidth: 2\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 175.921,\n cy: 116.899,\n r: 4.53988,\n fill: \"black\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M235.074 116.333C235.074 118.88 233.553 121.301 230.859 123.13C228.17 124.954 224.399 126.115 220.184 126.115C215.97 126.115 212.199 124.954 209.51 123.13C206.816 121.301 205.295 118.88 205.295 116.333C205.295 113.786 206.816 111.365 209.51 109.536C212.199 107.712 215.97 106.551 220.184 106.551C224.399 106.551 228.17 107.712 230.859 109.536C233.553 111.365 235.074 113.786 235.074 116.333Z\",\n fill: \"white\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M235.074 116.333C235.074 118.88 233.553 121.301 230.859 123.13C228.17 124.954 224.399 126.115 220.184 126.115C215.97 126.115 212.199 124.954 209.51 123.13C206.816 121.301 205.295 118.88 205.295 116.333C205.295 113.786 206.816 111.365 209.51 109.536C212.199 107.712 215.97 106.551 220.184 106.551C224.399 106.551 228.17 107.712 230.859 109.536C233.553 111.365 235.074 113.786 235.074 116.333Z\",\n fill: \"white\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M235.074 116.333C235.074 118.88 233.553 121.301 230.859 123.13C228.17 124.954 224.399 126.115 220.184 126.115C215.97 126.115 212.199 124.954 209.51 123.13C206.816 121.301 205.295 118.88 205.295 116.333C205.295 113.786 206.816 111.365 209.51 109.536C212.199 107.712 215.97 106.551 220.184 106.551C224.399 106.551 228.17 107.712 230.859 109.536C233.553 111.365 235.074 113.786 235.074 116.333Z\",\n fill: \"white\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M235.074 116.333C235.074 118.88 233.553 121.301 230.859 123.13C228.17 124.954 224.399 126.115 220.184 126.115C215.97 126.115 212.199 124.954 209.51 123.13C206.816 121.301 205.295 118.88 205.295 116.333C205.295 113.786 206.816 111.365 209.51 109.536C212.199 107.712 215.97 106.551 220.184 106.551C224.399 106.551 228.17 107.712 230.859 109.536C233.553 111.365 235.074 113.786 235.074 116.333Z\",\n stroke: \"#29006F\",\n strokeWidth: 2\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 224.724,\n cy: 116.899,\n r: 4.53988,\n fill: \"black\"\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M115 243.732C115 239.88 118.122 236.758 121.974 236.758H258.717C263.095 236.758 266.391 240.746 265.566 245.046C264.935 248.331 262.062 250.705 258.717 250.705H121.974C118.122 250.705 115 247.583 115 243.732Z\",\n fill: \"white\",\n stroke: \"#29006F\",\n strokeWidth: 2\n })), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M164.534 153.533C165.225 150.306 168.077 148 171.378 148H283.857C288.313 148 291.635 152.109 290.702 156.467L275.36 228.062C274.273 233.134 269.791 236.758 264.604 236.758H146.7L164.534 153.533Z\",\n fill: \"white\",\n stroke: \"#29006F\",\n strokeWidth: 2\n })), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M290.699 156.468L291.677 156.678L290.699 156.468ZM275.34 228.065L274.363 227.855L275.34 228.065ZM163.473 218.162L163.263 219.14L165.219 219.56L165.428 218.582L163.473 218.162ZM178.36 153.532L179.338 153.742L178.36 153.532ZM183.989 235.758C183.437 235.758 182.989 236.205 182.989 236.758C182.989 237.31 183.437 237.758 183.989 237.758V235.758ZM185.204 149H283.854V147H185.204V149ZM289.721 156.258L274.363 227.855L276.318 228.275L291.677 156.678L289.721 156.258ZM165.428 218.582L179.338 153.742L177.382 153.322L163.473 218.162L165.428 218.582ZM264.585 235.758H183.989V237.758H264.585V235.758ZM274.363 227.855C273.374 232.465 269.3 235.758 264.585 235.758V237.758C270.243 237.758 275.132 233.806 276.318 228.275L274.363 227.855ZM283.854 149C287.675 149 290.522 152.523 289.721 156.258L291.677 156.678C292.745 151.697 288.948 147 283.854 147V149ZM185.204 147C181.432 147 178.173 149.634 177.382 153.322L179.338 153.742C179.931 150.976 182.375 149 185.204 149V147Z\",\n fill: \"#29006F\"\n })), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask3_34729_22996\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 165,\n y: 149,\n width: 125,\n height: 88\n }, _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M282.587 149.266H186.173C182.873 149.266 180.021 151.571 179.329 154.797L165.719 218.244L184.87 236.266H263.694C268.88 236.266 273.362 232.644 274.45 227.573L289.431 157.734C290.366 153.376 287.044 149.266 282.587 149.266Z\",\n fill: \"#D9D9D9\"\n }))), _g4 || (_g4 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask3_34729_22996)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M184.647 200.413C174.534 200.413 172.46 179.623 174.534 167.668L179.98 130.246L315.339 136.483L270.219 245.631C269.96 236.795 266.33 220.527 253.883 226.14C238.324 233.157 237.546 232.377 228.211 230.818C218.876 229.259 225.877 203.531 228.211 205.87C230.545 208.209 243.77 205.87 242.992 192.616C242.214 179.363 228.211 183.261 228.211 184.04C222.766 177.024 214.802 179.063 212.634 180.965C200.858 191.297 194.76 200.413 184.647 200.413Z\",\n fill: \"#F5EEFF\"\n }))), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M235.169 178.488C235.475 176.321 236.897 174.372 239.072 173.493C241.247 172.614 243.624 173.028 245.351 174.374C245.044 176.54 243.622 178.489 241.448 179.368C239.272 180.248 236.895 179.834 235.169 178.488Z\",\n fill: \"white\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"pattern\", {\n id: \"pattern0\",\n patternContentUnits: \"objectBoundingBox\",\n width: 1,\n height: 1\n }, /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#image0_34729_22996\",\n transform: \"scale(0.000504032 0.000892434)\"\n })), /*#__PURE__*/React.createElement(\"image\", {\n id: \"image0_34729_22996\",\n width: 1984,\n height: 1121,\n xlinkHref: \"data:image/png;base64,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\"\n }))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgMaintenance);\nexport default __webpack_public_path__ + \"static/media/Maintenance.a6a1d18a659142ac130b45cddca3ba60.svg\";\nexport { ForwardRef as ReactComponent };","import { Grid, Box, Typography } from \"@mui/material\";\nimport MaintenanceSVG from \"assets/images/Maintenance.svg\";\nimport { Trans } from \"@lingui/macro\";\nimport { TextButton } from \"@icpswap/ui\";\n\nexport function Maintenance() {\n return (\n \n \n \n \n \n 🚧 Page Under Maintenance 🚧\n \n \"\"\n \n \n \n We are currently upgrading this page to enhance your experience.\n \n \n Thank you for your patience! Stay updated by following \n \n ICPSwap on Twitter.\n \n \n \n We appreciate your support and look forward to welcoming you back soon.\n \n \n \n \n \n \n \n );\n}\n","import { Theme } from \"@mui/material/styles\";\nimport useMuiTheme from \"@mui/styles/useTheme\";\n\nexport { default as Box, type BoxProps } from \"@mui/material/Box\";\nexport { default as Typography, type TypographyProps } from \"@mui/material/Typography\";\nexport { default as Grid, type GridProps } from \"@mui/material/Grid\";\nexport { default as SvgIcon, type SvgIconProps } from \"@mui/material/SvgIcon\";\nexport { default as Button, type ButtonProps } from \"@mui/material/Button\";\nexport { default as TextField, type TextFieldProps } from \"@mui/material/TextField\";\nexport { default as Fade, type FadeProps } from \"@mui/material/Fade\";\nexport { default as Collapse, type CollapseProps } from \"@mui/material/Collapse\";\nexport { default as Checkbox, type CheckboxProps } from \"@mui/material/Checkbox\";\nexport { default as MenuList, type MenuListProps } from \"@mui/material/MenuList\";\nexport { default as MenuItem } from \"@mui/material/MenuItem\";\nexport { default as Popper } from \"@mui/material/Popper\";\nexport { default as useMediaQuery } from \"@mui/material/useMediaQuery\";\nexport { default as CircularProgress } from \"@mui/material/CircularProgress\";\nexport { default as InputAdornment } from \"@mui/material/InputAdornment\";\nexport { default as Avatar, type AvatarProps } from \"@mui/material/Avatar\";\nexport { default as Link } from \"@mui/material/Link\";\nexport { default as makeStyles } from \"@mui/styles/makeStyles\";\nexport { default as Tooltip } from \"@mui/material/Tooltip\";\nexport { default as Chip } from \"@mui/material/Chip\";\nexport { default as ButtonBase } from \"@mui/material/ButtonBase\";\n\nexport function useTheme() {\n return useMuiTheme() as Theme;\n}\n\nexport type { Theme };\n","import { TextButton } from \"components/index\";\nimport { Typography } from \"@mui/material\";\nimport { useHistory } from \"react-router-dom\";\nimport { useCloseStep } from \"hooks/useStepCall\";\n\nexport interface ReclaimTipsProps {\n message: string | undefined;\n onReclaimClick?: () => void;\n tipKey: string | undefined;\n poolId?: string;\n tokenId?: string;\n}\n\nexport function ReclaimTips({ message, onReclaimClick, tipKey, poolId, tokenId }: ReclaimTipsProps) {\n const history = useHistory();\n\n const closeStep = useCloseStep();\n\n const handleClick = () => {\n const to = poolId\n ? `/swap/withdraw?type=pair&poolId=${poolId}`\n : tokenId\n ? `/swap/withdraw?type=token&tokenId=${tokenId}`\n : \"/swap/withdraw\";\n\n history.push(to);\n if (onReclaimClick) onReclaimClick();\n closeStep(tipKey);\n };\n\n const msg = message?.includes(\"please withdraw your unused token\") ? (\n <>\n {message.replace(\"please withdraw your unused token\", \"\")}.  Please{\" \"}\n check your balance in the Swap Pool to see if tokens have been\n transferred to the Swap Pool.\n \n ) : (\n <>\n {message}.  Please check your balance in the Swap Pool to see\n if tokens have been transferred to the Swap Pool.\n \n );\n\n return {msg};\n}\n","import React, { useState, useRef, ReactNode } from \"react\";\nimport { Typography, Box } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport KeyboardArrowDownIcon from \"@mui/icons-material/KeyboardArrowDown\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport { MenuProps } from \"./types\";\n\ninterface StyleProps {\n contained: boolean;\n fullHeight?: boolean;\n filled?: boolean;\n padding?: string;\n}\n\nconst useStyles = ({ contained, fullHeight, filled, padding }: StyleProps) => {\n return makeStyles((theme: Theme) => {\n return {\n inputBox: {\n display: \"flex\",\n alignItems: \"center\",\n background: filled ? theme.palette.background.level4 : theme.palette.background.level1,\n borderRadius: filled ? \"8px\" : \"12px\",\n padding: padding !== undefined ? padding : contained ? `9px 16px` : `${fullHeight ? \"0px\" : \"12px\"} 16px`,\n width: \"100%\",\n \"& input\": {\n color: theme.palette.text.primary,\n },\n \"&.none-background\": {\n background: \"transparent\",\n },\n },\n };\n });\n};\n\nexport interface PanelProps {\n label?: string;\n value?: any;\n onChange?: (value: any) => void;\n required?: boolean;\n maxWidth?: number;\n fullHeight?: boolean;\n contained?: boolean;\n placeholder?: string;\n filled?: boolean;\n showClean?: boolean;\n showBackground?: boolean;\n minMenuWidth?: string;\n valueColor?: string;\n padding?: string;\n menu: MenuProps | undefined | null;\n onClick?: (event: any) => void;\n open: boolean;\n panel?: (menu: MenuProps | null | undefined) => ReactNode;\n}\n\nexport function Panel({\n label,\n value,\n onChange,\n required,\n maxWidth,\n fullHeight,\n contained = true,\n filled,\n showClean = true,\n showBackground = true,\n valueColor,\n padding,\n menu,\n placeholder,\n onClick,\n open,\n panel,\n}: PanelProps) {\n const classes = useStyles({ contained, fullHeight, filled, padding })();\n const outerBoxRef = useRef(null);\n\n const [showClose, setShowClose] = useState(false);\n\n const handleMouseEnter = () => {\n if (showClean === false) return;\n setShowClose(true);\n };\n\n const handleMouseLeave = () => {\n setShowClose(false);\n };\n\n const handleEmptyValue = (event: React.MouseEvent) => {\n event.stopPropagation();\n if (onChange) onChange(undefined);\n };\n\n return (\n \n {contained && label && (\n \n {required && (\n \n *\n \n )}\n\n \n {label}\n \n \n )}\n\n \n \n {value || panel ? (\n \n {panel ? panel(menu) : menu?.selectLabel ?? menu?.label}\n \n ) : (\n {placeholder}\n )}\n \n\n \n {showClose && !!value ? (\n \n ) : (\n \n )}\n \n \n \n );\n}\n","import React, { useState } from \"react\";\nimport { Box, Checkbox, Popper, TextField, InputAdornment } from \"@mui/material\";\nimport { useTheme } from \"@mui/styles\";\nimport { Theme } from \"@mui/material/styles\";\nimport { NoData } from \"components/index\";\nimport { ClickAwayListener } from \"@mui/base\";\nimport { Search } from \"react-feather\";\n\nimport { MenuProps } from \"./types\";\n\nexport interface DropDownMenuProps {\n value?: any;\n onChange?: (value: any) => void;\n required?: boolean;\n menus: MenuProps[];\n CustomNoData?: React.ReactNode;\n multiple?: boolean;\n menuMaxHeight?: string;\n search?: boolean;\n onSearch?: (search: string | undefined) => void;\n customLabel?: boolean;\n menuFilter?: (menu: MenuProps) => boolean;\n minMenuWidth?: string;\n anchor: any | undefined;\n onClose: () => void;\n onMenuClick: () => void;\n menuWidth?: number;\n}\n\nexport function DropDownMenu({\n value,\n onChange,\n menus,\n CustomNoData,\n multiple = false,\n menuMaxHeight,\n onSearch,\n search: hasSearch,\n customLabel,\n menuFilter,\n minMenuWidth = \"120px\",\n onClose,\n menuWidth,\n onMenuClick,\n anchor,\n}: DropDownMenuProps) {\n const theme = useTheme() as Theme;\n const [search, setSearch] = useState(undefined);\n\n const handleClose = () => {\n setSearch(undefined);\n onClose();\n if (onSearch) onSearch(undefined);\n };\n\n const handleMenuItemClick = (menu: MenuProps) => {\n if (!multiple) {\n setSearch(undefined);\n onMenuClick();\n if (onSearch) onSearch(undefined);\n if (onChange) onChange(menu.value);\n } else {\n const oldSelected = value ? [...value] : [];\n\n if (value?.includes(menu.value)) {\n const index = oldSelected.findIndex((item) => item === menu.value);\n\n if (index !== -1) {\n oldSelected.splice(index, 1);\n if (onChange) onChange(oldSelected);\n }\n } else {\n const newSelected = [...oldSelected, menu.value];\n if (onChange) onChange(newSelected);\n }\n }\n };\n\n const handleCheckboxChange = (checked: boolean, selectedValue: any) => {\n if (onChange) {\n const oldSelected = value ? [...value] : [];\n\n if (checked) {\n const newSelected = [...oldSelected, selectedValue];\n onChange(newSelected);\n } else {\n const index = oldSelected.findIndex((item) => item === selectedValue);\n\n if (index !== -1) {\n oldSelected.splice(index, 1);\n onChange(oldSelected);\n }\n }\n }\n };\n\n const handleSearchChange = (value: string) => {\n setSearch(value);\n if (onSearch) onSearch(value);\n };\n\n return (\n \n \n \n {hasSearch ? (\n \n handleSearchChange(value)}\n value={search}\n InputProps={{\n disableUnderline: true,\n startAdornment: (\n \n \n \n ),\n }}\n fullWidth\n />\n \n ) : null}\n\n \n {menus.map((menu, index) => {\n const isFiltered = menuFilter && menuFilter(menu);\n\n return customLabel ? (\n handleMenuItemClick(menu)}\n sx={{ ...(isFiltered ? { display: \"none\" } : {}) }}\n >\n {menu.label}\n \n ) : (\n handleMenuItemClick(menu)}\n >\n {multiple && (\n \n , checked: boolean) =>\n handleCheckboxChange(checked, menu.value)\n }\n checked={value?.includes(menu.value)}\n />\n \n )}\n\n {menu.label}\n \n );\n })}\n\n {menus.length === 0 ? CustomNoData || : null}\n \n \n \n \n );\n}\n","import React, { useEffect, useState, useRef, useMemo, ReactNode } from \"react\";\nimport { Box } from \"components/Mui\";\n\nimport { Panel } from \"./Panel\";\nimport { DropDownMenu } from \"./DropDownMenu\";\nimport { MenuProps } from \"./types\";\n\nexport interface SelectProps {\n label?: string;\n value?: any;\n onChange?: (value: any) => void;\n required?: boolean;\n menus?: MenuProps[];\n maxWidth?: number;\n fullHeight?: boolean;\n disabled?: boolean;\n contained?: boolean;\n CustomNoData?: React.ReactNode;\n placeholder?: string;\n multiple?: boolean;\n menuMaxHeight?: string;\n search?: boolean;\n onSearch?: (search: string | undefined) => void;\n customLabel?: boolean;\n border?: boolean;\n menuFilter?: (menu: MenuProps) => boolean;\n filled?: boolean;\n showClean?: boolean;\n showBackground?: boolean;\n minMenuWidth?: string;\n valueColor?: string;\n panelPadding?: string;\n panel?: (menu: MenuProps | null | undefined) => ReactNode;\n}\n\nexport function Select({\n label,\n value,\n onChange,\n required,\n menus = [],\n maxWidth,\n fullHeight,\n disabled,\n contained = true,\n CustomNoData,\n multiple = false,\n menuMaxHeight,\n onSearch,\n search: hasSearch,\n customLabel,\n menuFilter,\n filled,\n showClean = true,\n showBackground = true,\n minMenuWidth = \"120px\",\n valueColor,\n placeholder,\n panelPadding,\n panel,\n}: SelectProps) {\n const [anchorEl, setAnchorEl] = useState(null);\n const wrapperRef = useRef(null);\n const [menuWidth, setMenuWidth] = useState(undefined);\n\n useEffect(() => {\n const width = wrapperRef?.current?.clientWidth;\n setMenuWidth(width ?? undefined);\n }, [wrapperRef]);\n\n const handleOuterBoxClick = (event: any) => {\n if (disabled) return;\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const selectedMenu = useMemo(() => {\n return menus.filter((menu) => menu.value === value)[0];\n }, [menus, value]);\n\n return (\n <>\n \n \n \n\n \n \n );\n}\n","import { Box, Typography } from \"components/Mui\";\nimport { useEffect, useMemo, useState, ReactNode } from \"react\";\nimport { Select } from \"components/Select/ForToken\";\nimport { generateLogoUrl } from \"hooks/token/useTokenLogo\";\nimport { isValidPrincipal } from \"@icpswap/utils\";\nimport { TokenImage } from \"components/index\";\nimport { useAllTokensOfSwap } from \"@icpswap/hooks\";\nimport type { AllTokenOfSwapTokenInfo } from \"@icpswap/types\";\nimport { Principal } from \"@dfinity/principal\";\n\nimport type { MenuProps, StringifyAllTokenOfSwapTokenInfo } from \"./types\";\n\ninterface TokenMenuItemProps {\n tokenInfo: AllTokenOfSwapTokenInfo;\n symbol?: string;\n search?: string;\n color?: \"primary\" | \"secondary\";\n panel?: boolean;\n}\n\nfunction isTokenHide(tokenInfo: AllTokenOfSwapTokenInfo, search: string | undefined) {\n if (!!search && isValidPrincipal(search) && tokenInfo.ledger_id.toString() !== search) return true;\n if (\n !!search &&\n !!tokenInfo &&\n !tokenInfo.symbol.toLocaleLowerCase().includes(search.toLocaleLowerCase()) &&\n !tokenInfo.name.toLocaleLowerCase().includes(search.toLocaleLowerCase())\n )\n return true;\n return false;\n}\n\nfunction TokenMenuItem({ tokenInfo, symbol, search, color, panel }: TokenMenuItemProps) {\n const hide = useMemo(() => {\n return isTokenHide(tokenInfo, search);\n }, [search, tokenInfo]);\n\n return hide ? null : (\n \n \n \n {symbol ?? tokenInfo?.symbol ?? \"--\"}\n \n \n );\n}\n\nexport interface SelectTokenProps {\n border?: boolean;\n value?: string;\n onTokenChange?: (tokenId: string) => void;\n filter?: (tokenInfo: AllTokenOfSwapTokenInfo) => boolean;\n search?: boolean;\n filled?: boolean;\n fullHeight?: boolean;\n showBackground?: boolean;\n showClean?: boolean;\n panelPadding?: string;\n defaultPanel?: ReactNode;\n}\n\nexport function SelectToken({\n value: tokenId,\n onTokenChange,\n border,\n filter,\n search: hasSearch,\n filled,\n fullHeight,\n showBackground,\n showClean,\n panelPadding,\n defaultPanel,\n}: SelectTokenProps) {\n const [value, setValue] = useState(null);\n const [search, setSearch] = useState(undefined);\n\n const { result: allTokensOfSwap } = useAllTokensOfSwap();\n\n useEffect(() => {\n if (tokenId) {\n setValue(tokenId);\n }\n }, [tokenId]);\n\n const menus = useMemo(() => {\n if (!allTokensOfSwap) return undefined;\n\n return allTokensOfSwap.map((tokenInfo) => {\n return {\n value: tokenInfo.ledger_id.toString(),\n label: ,\n additional: JSON.stringify(tokenInfo),\n };\n });\n }, [allTokensOfSwap]);\n\n const handleValueChange = (value: string) => {\n setValue(value);\n if (onTokenChange) {\n onTokenChange(value);\n }\n };\n\n const handleFilterMenu = (menu: MenuProps) => {\n if (!menu.additional) return false;\n\n const tokenInfo = JSON.parse(menu.additional) as AllTokenOfSwapTokenInfo;\n\n return isTokenHide(tokenInfo, search) || (!!filter && filter(tokenInfo));\n };\n\n return (\n {\n if (!menu) return defaultPanel;\n if (!menu.additional) return null;\n\n const additional = JSON.parse(menu.additional) as StringifyAllTokenOfSwapTokenInfo;\n\n const tokenInfo = {\n ...additional,\n ledger_id: Principal.fromText(additional.ledger_id.__principal__),\n } as AllTokenOfSwapTokenInfo;\n\n return ;\n }}\n />\n );\n}\n","import React, { useEffect, useState, useRef } from \"react\";\nimport { Typography, Box, Menu, Grid, MenuItem } from \"@mui/material\";\nimport { makeStyles, useTheme } from \"@mui/styles\";\nimport KeyboardArrowDownIcon from \"@mui/icons-material/KeyboardArrowDown\";\nimport { isDarkTheme } from \"utils\";\nimport NoData from \"components/no-data\";\nimport { Theme } from \"@mui/material/styles\";\n\nconst useStyles = (contained: boolean, fullHeight?: boolean) => {\n return makeStyles((theme: Theme) => {\n return {\n inputBox: {\n background: theme.palette.background.level4,\n borderRadius: \"8px\",\n padding: contained ? `15px 16px` : `${fullHeight ? \"0px\" : \"12px\"} 16px`,\n \"& input\": {\n color: theme.palette.text.primary,\n },\n },\n };\n });\n};\n\nexport type Menus = {\n label: React.ReactNode;\n value: any;\n};\n\nexport interface SelectProps {\n label?: string | React.ReactNode;\n value?: any;\n width?: number;\n onChange?: (value: any) => void;\n required?: boolean;\n menus: Menus[];\n maxWidth?: number;\n fullHeight?: boolean;\n disabled?: boolean;\n contained?: boolean;\n CustomNoData?: React.ReactNode;\n placeholder?: string;\n type?: string;\n menuDisabled?: (value: Menus) => boolean;\n helperText?: string;\n [x: string]: any;\n}\n\nexport function Label({ label, required }: { label?: React.ReactNode; required?: boolean }) {\n return (\n \n {required && (\n \n *\n \n )}\n \n {label}\n \n \n );\n}\n\nexport function Value({ value, menus = [], helperText }: { helperText?: string; value?: any; menus: Menus[] }) {\n return (\n <>\n \n {menus.filter((menu) => menu.value === value)[0]?.label ?? value}\n \n {helperText ? (\n \n {helperText}\n \n ) : null}\n \n );\n}\n\nexport function Select({\n value,\n onChange,\n menus = [],\n maxWidth,\n fullHeight,\n disabled,\n contained = true,\n width,\n CustomNoData,\n menuDisabled,\n helperText,\n ...props\n}: SelectProps) {\n const classes = useStyles(contained, fullHeight)();\n const [anchorEl, setAnchorEl] = useState(null);\n const outerBoxRef = useRef(null);\n const [menuWidth, setMenuWidth] = useState(undefined);\n const theme = useTheme();\n\n const handleOuterBoxClick = (event: any) => {\n if (disabled) return;\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n useEffect(() => {\n const width = outerBoxRef?.current?.clientWidth;\n setMenuWidth(width ?? undefined);\n }, []);\n\n const handleMenuItemClick = ({ value }: { value: any }) => {\n if (onChange) onChange(value);\n setAnchorEl(null);\n };\n\n const isDark = isDarkTheme(theme);\n\n return (\n <>\n \n \n <>\n \n \n {value ? (\n \n ) : (\n \n {props.placeholder}\n \n )}\n \n\n \n \n \n \n \n\n {Boolean(anchorEl) && (\n \n {menus.map((menu, index) => (\n {\n if (!!menuDisabled && menuDisabled(menu)) return;\n handleMenuItemClick(menu);\n }}\n >\n {menu.label}\n \n ))}\n {menus.length === 0 ? CustomNoData || : null}\n \n )}\n \n );\n}\n","import { TextButton } from \"components/index\";\nimport { useStepManager } from \"store/steps/hooks\";\n\nexport default function StepViewButton({ step }: { step: string | undefined | number }) {\n const { open } = useStepManager();\n\n return open(step?.toString())}>View Details;\n}\n","import React, { ReactNode } from \"react\";\nimport Button, { ButtonProps } from \"@mui/material/Button\";\nimport { useWalletConnectorManager, useConnectorStateConnected } from \"store/auth/hooks\";\nimport { Override } from \"@icpswap/types\";\nimport { t } from \"@lingui/macro\";\nimport { CircularProgress } from \"@mui/material\";\n\nexport type ButtonConnectorProps = Override;\n\nexport default function ButtonConnector(props: ButtonConnectorProps) {\n const [, manager] = useWalletConnectorManager();\n const isConnected = useConnectorStateConnected();\n\n const handleConnect = (event: React.MouseEvent) => {\n if (!isConnected) {\n manager(true);\n } else if (props.onClick) props.onClick(event);\n };\n\n return (\n : null}\n >\n {isConnected ? props.children : t`Connect wallet`}\n \n );\n}\n","import { isDarkTheme } from \"utils\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Box, makeStyles } from \"components/Mui\";\n\nconst useStyles = ({ color, size }: { color?: string; size?: string }) => {\n return makeStyles((theme: Theme) => {\n const isDark = isDarkTheme(theme);\n const translateLength = 5;\n\n return {\n dot: {\n display: \"inline-block\",\n width: size ?? \"5px\",\n height: size ?? \"5px\",\n backgroundColor: color ?? (isDark ? \"rgba(255, 255, 255, 0.4)\" : \"rgba(17, 25, 54, 0.4)\"),\n borderRadius: \"50%\",\n animationDuration: \"800ms\",\n animationIterationCount: \"infinite\",\n },\n \"@keyframes dot1Keyframes\": {\n \"0%\": {\n transform: `translate(0, -${translateLength}px)`,\n },\n \"33%\": {\n transform: \"translate(0, 0)\",\n },\n },\n \"@keyframes dot2Keyframes\": {\n \"0%\": {\n transform: \"translate(0, 0)\",\n },\n \"33%\": {\n transform: `translate(0, -${translateLength}px)`,\n },\n \"66%\": {\n transform: \"translate(0, 0)\",\n },\n },\n \"@keyframes dot3Keyframes\": {\n \"0%\": {\n transform: \"translate(0, 0)\",\n },\n \"66%\": {\n transform: `translate(0, -${translateLength}px)`,\n },\n },\n dot1: {\n animationName: `$dot1Keyframes`,\n marginRight: \"4px\",\n },\n dot2: {\n animationName: `$dot2Keyframes`,\n marginRight: \"4px\",\n },\n dot3: {\n animationName: `$dot3Keyframes`,\n },\n };\n });\n};\n\nexport interface DotLoadingProps {\n loading: boolean;\n size?: string;\n color?: string;\n}\n\nexport function DotLoading({ loading, size, color }: DotLoadingProps) {\n const classes = useStyles({ color, size })();\n\n return loading ? (\n \n \n \n \n \n ) : null;\n}\n","import { useState, useEffect } from \"react\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport Backdrop from \"@mui/material/Backdrop\";\nimport { makeStyles } from \"@mui/styles\";\nimport { closeLoading } from \"store/loadingReducer\";\nimport LoadingImage from \"assets/images/loading.png\";\nimport { Theme } from \"@mui/material/styles\";\n\nconst useStyles = makeStyles((theme: Theme) => ({\n root: {\n position: \"fixed\",\n top: 0,\n left: 0,\n zIndex: 1301,\n width: \"100%\",\n \"& > * + *\": {\n marginTop: theme.spacing(2),\n },\n },\n backdrop: {\n zIndex: 10000,\n color: \"#fff\",\n },\n}));\n\nexport default function FullscreenLoading({\n maskClosable,\n onMaskClick,\n}: {\n maskClosable?: boolean;\n onMaskClick?: () => void;\n}) {\n const classes = useStyles();\n const dispatch = useAppDispatch();\n const [open, setOpen] = useState(false);\n const loadingInitial = useAppSelector((state) => state.loading);\n\n const onClick = () => {\n if (maskClosable) {\n dispatch(closeLoading());\n }\n\n if (onMaskClick) onMaskClick();\n };\n\n useEffect(() => {\n setOpen(loadingInitial.open);\n }, [loadingInitial.open]);\n\n return (\n \n \"\"\n \n );\n}\n","import { ReactNode } from \"react\";\nimport { Box, BoxProps } from \"components/Mui\";\nimport { Flex } from \"@icpswap/ui\";\n\nexport interface WrapperProps {\n children: ReactNode;\n sx?: BoxProps[\"sx\"];\n}\n\nexport function Wrapper({ children, sx }: WrapperProps) {\n return (\n \n \n {children}\n \n \n );\n}\n","import { Button, Typography, CircularProgress } from \"@mui/material\";\nimport { useTheme } from \"@mui/styles\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Trans } from \"@lingui/macro\";\n\nexport default function ViewMore({ loading, onClick }: { loading: boolean; onClick: () => void }) {\n const theme = useTheme() as Theme;\n\n return (\n \n {loading ? : null}\n \n View More\n \n \n );\n}\n","import { useState, useMemo, useCallback } from \"react\";\nimport { Modal } from \"components/index\";\nimport { getPool } from \"hooks/swap/v3Calls\";\nimport { useTheme, Typography, Box, Avatar, CircularProgress, Button } from \"@mui/material\";\nimport { Trans, t } from \"@lingui/macro\";\nimport { Theme } from \"@mui/material/styles\";\nimport { TokenInfo } from \"types/token\";\nimport CurrencySelector from \"components/CurrencySelector/selector\";\nimport { getUserPositionIds } from \"hooks/swap/useUserPositionIds\";\nimport { useUpdateUserPositionPools } from \"store/hooks\";\nimport { updateUserPositionPoolId } from \"@icpswap/hooks\";\nimport { useTips, TIP_SUCCESS } from \"hooks/index\";\nimport { useAccountPrincipal } from \"store/auth/hooks\";\n\nfunction AddIcon() {\n return (\n \n \n \n );\n}\n\nfunction ArrowIcon() {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n}\n\ninterface SelectedTokenProps {\n selectedTokenIds?: string[];\n onTokenChange: (token: TokenInfo) => void;\n}\n\nfunction SelectedToken({ selectedTokenIds, onTokenChange }: SelectedTokenProps) {\n const theme = useTheme() as Theme;\n\n const [token, setToken] = useState(null);\n const [selectorOpen, setSelectorOpen] = useState(false);\n\n const handleTokenChange = (token: TokenInfo) => {\n onTokenChange(token);\n setToken(token);\n setSelectorOpen(false);\n };\n\n const handleSelectToken = () => {\n setSelectorOpen(true);\n };\n\n return (\n <>\n \n {token ? (\n \n \n  \n \n \n {token?.symbol}\n \n \n ) : (\n \n \n Select a token\n \n \n )}\n \n \n\n setSelectorOpen(false)}\n onChange={handleTokenChange}\n disabledCurrencyIds={selectedTokenIds}\n />\n \n );\n}\n\nexport interface FindPositionsModalProps {\n open: boolean;\n onClose: () => void;\n}\n\nexport default function FindPositionsModal({ open, onClose }: FindPositionsModalProps) {\n const theme = useTheme() as Theme;\n const [openTip] = useTips();\n\n const principal = useAccountPrincipal();\n\n const [error, setError] = useState(\"\");\n const [loading, setLoading] = useState(false);\n\n const [tokenA, setTokenA] = useState(null);\n const [tokenB, setTokenB] = useState(null);\n\n const handleTokenAChange = (tokenA: TokenInfo) => {\n setTokenA(tokenA);\n setError(\"\");\n };\n\n const handleTokenBChange = (tokenB: TokenInfo) => {\n setTokenB(tokenB);\n setError(\"\");\n };\n\n const handleClose = useCallback(() => {\n onClose();\n setTokenA(null);\n setTokenB(null);\n }, [onClose, setTokenA, setTokenB]);\n\n const selectedTokenIds = useMemo(() => {\n return [tokenA?.canisterId, tokenB?.canisterId].filter((ele) => !!ele) as string[];\n }, [tokenA, tokenB]);\n\n const updateStoreUserPositionPool = useUpdateUserPositionPools();\n\n const handleImport = async () => {\n if (!tokenA || !tokenB || loading || !principal) return;\n\n setLoading(true);\n\n const poolData = await getPool(tokenA.canisterId, tokenB.canisterId);\n\n if (!poolData) {\n setError(t`No available pools`);\n setLoading(false);\n return;\n }\n\n const poolId = poolData.canisterId.toString();\n const positionIds = await getUserPositionIds(poolId, principal.toString());\n\n if (!positionIds || positionIds.length === 0) {\n setError(t`No available position in this pool`);\n setLoading(false);\n return;\n }\n\n updateStoreUserPositionPool([poolId]);\n updateUserPositionPoolId(poolId, true);\n\n openTip(\"Imported successfully\", TIP_SUCCESS);\n\n setLoading(false);\n\n handleClose();\n };\n\n return (\n \n \n \n\n \n\n \n\n : null}\n >\n {error || Import}\n \n \n \n );\n}\n","import { Override } from \"@icpswap/types\";\nimport { forwardRef } from \"react\";\nimport { NumericFormat, NumericFormatProps } from \"react-number-format\";\nimport { TextField, TextFieldProps } from \"components/Mui\";\n\nexport type NumericProps = {\n decimalScale?: number;\n allowNegative?: boolean;\n maxLength?: number;\n thousandSeparator?: boolean;\n};\n\ntype InputProps = {\n onChange: (event: { target: { value: string } }) => void;\n name: string;\n value: any;\n};\n\nexport const TextFieldNumberComponent = forwardRef((props, ref) => {\n const { onChange, ...other } = props;\n\n return (\n {\n // Fix outside value change cause to maximum update\n if (values.value === props.value) return;\n\n onChange({\n target: {\n // Fix if user typed . first could case some NaN errors\n value: values.value === \".\" ? \"0.\" : values.value,\n },\n });\n }}\n />\n );\n});\n\nexport type NumberTextFieldProps = Override;\n\nexport default function NumberTextField(props: NumberTextFieldProps) {\n const { numericProps, ...textFiledProps } = props;\n\n return (\n // @ts-ignore\n \n );\n}\n","import { Override } from \"@icpswap/types\";\nimport FilledTextField, { FilledTextFieldProps } from \"components/Input/FilledTextField\";\nimport { TextFieldNumberComponent, NumericProps } from \"components/Input/NumberTextField\";\n\nexport type NumberFilledTextFieldProps = Override;\n\nexport function NumberFilledTextField(props: NumberFilledTextFieldProps) {\n const { numericProps, ...textFieldProps } = props;\n\n return (\n \n );\n}\n","import React, { useState } from \"react\";\nimport { Typography, Tooltip as MuiTooltip } from \"components/Mui\";\nimport { HelpCircle } from \"react-feather\";\n\nexport interface TooltipProps {\n background?: string;\n tips: React.ReactChild;\n iconSize?: string;\n iconColor?: string;\n maxWidth?: string;\n}\n\nexport function Tooltip({ tips, background, maxWidth, iconSize = \"16px\", iconColor = \"#8492C4\" }: TooltipProps) {\n const [open, setOpen] = useState(false);\n\n const handleClick = () => {\n setOpen(true);\n };\n\n return (\n \n {tips}\n \n }\n arrow\n >\n setOpen(true)}\n onMouseLeave={() => setOpen(false)}\n style={{ cursor: \"pointer\" }}\n />\n \n );\n}\n","import { useState, ReactNode } from \"react\";\nimport { Grid, Box, useTheme } from \"components/Mui\";\nimport { useHistory, useLocation } from \"react-router-dom\";\nimport { mockALinkAndOpen } from \"@icpswap/utils\";\nimport { Flex } from \"@icpswap/ui\";\n\nexport interface Tab {\n key: string | any;\n value: ReactNode;\n path?: string;\n link?: string;\n}\n\nexport interface TabPanelProps {\n active?: string;\n tabs: Tab[];\n onChange?: (tab: Tab) => void;\n fontNormal?: boolean;\n fontSize?: string;\n fullWidth?: boolean;\n activeWithSearch?: boolean;\n bg0?: string;\n bg1?: string;\n size?: \"small\" | \"large\" | \"medium\";\n}\n\nexport function TabPanel({\n tabs,\n onChange,\n active,\n fullWidth,\n fontNormal,\n activeWithSearch,\n fontSize = \"14px\",\n bg0,\n bg1,\n size,\n}: TabPanelProps) {\n const theme = useTheme();\n const history = useHistory();\n const location = useLocation();\n\n const [activeButtonKey, setActiveButtonKey] = useState(null);\n\n const loadPage = (tab: Tab) => {\n if (tab.link) {\n mockALinkAndOpen(tab.link, \"toggle_link\");\n return;\n }\n\n if (!tab.path) {\n setActiveButtonKey(tab.key);\n if (onChange) onChange(tab);\n return;\n }\n history.push(tab.path);\n };\n\n const isActive = (tab: Tab) => {\n if (tab.path) {\n if (tab.key === \"/swap\" || tab.key === \"/swap/v2\") {\n if (tab.key === location.pathname || `${tab.key}/` === location.pathname) return \"active\";\n return \"\";\n }\n\n if (activeWithSearch) {\n return location.search.includes(tab.key);\n }\n\n return location.pathname.includes(tab.key);\n }\n if (active) return active === tab.key;\n if (!activeButtonKey) return tabs[0].key === tab.key;\n return activeButtonKey === tab.key;\n };\n\n return (\n \n \n {tabs.map((tab) => (\n loadPage(tab)}\n sx={{\n fontSize,\n minWidth: size === \"small\" ? \"auto\" : \"90px\",\n padding: size === \"small\" ? \"0 12px\" : \"0 20px\",\n height: size === \"small\" ? \"32px\" : \"45px\",\n color: theme.themeOption.textSecondary,\n cursor: \"pointer\",\n borderRadius: size === \"small\" ? \"6px\" : \"12px\",\n fontWeight: 600,\n \"&.active\": {\n color: theme.themeOption.textPrimary,\n background: bg1 ?? theme.colors.darkLevel3,\n },\n \"&.fontNormal\": {\n fontWeight: 400,\n },\n \"@media (max-width: 640px)\": {\n minWidth: size === \"small\" ? \"auto\" : \"76px\",\n padding: size === \"small\" ? \"0 12px\" : \"0 15px\",\n fontSize: \"12px\",\n },\n }}\n >\n \n {tab.value}\n \n \n ))}\n \n \n );\n}\n","import React, { useState } from \"react\";\nimport { AlertCircle } from \"react-feather\";\n\nimport { Box, Collapse } from \"./Mui\";\n\nexport interface CollapseTextProps {\n description: React.ReactNode;\n label: React.ReactNode;\n}\n\nexport function CollapseText({ label, description }: CollapseTextProps) {\n const [open, setOpen] = useState(false);\n\n const handleToggle = () => {\n setOpen(!open);\n };\n\n return (\n \n \n {label}\n \n \n \n {description}\n \n \n );\n}\n","import { makeStyles } from \"@mui/styles\";\nimport { Link as ReactLink } from \"react-router-dom\";\n\nconst useStyles = makeStyles(() => ({\n link: {\n textDecoration: \"none\",\n userSelect: \"none\",\n },\n}));\n\nexport interface LinkProps {\n to?: string;\n link?: string;\n children: React.ReactNode;\n}\n\nexport function Link({ to, link, children }: LinkProps) {\n const classes = useStyles();\n\n return (\n <>\n {to ? (\n \n {children}\n \n ) : link ? (\n \n {children}\n \n ) : (\n children\n )}\n \n );\n}\n","import React, { ReactNode } from \"react\";\nimport { Box, Button, Dialog, DialogTitle, DialogContent, Typography, useMediaQuery } from \"@mui/material\";\nimport { makeStyles, useTheme } from \"@mui/styles\";\nimport DialogCloseIcon from \"assets/images/icons/dialog-close\";\nimport { Theme } from \"@mui/material/styles\";\nimport { t } from \"@lingui/macro\";\nimport { isElement } from \"react-is\";\n\nconst useStyles = makeStyles((theme: Theme) => ({\n titleContainer: {\n position: \"relative\",\n },\n title: {\n fontSize: \"20px\",\n fontWeight: 700,\n \"@media (max-width: 640px)\": {\n fontSize: \"1rem\",\n },\n \"&.warning\": {\n color: \"#D3625B\",\n },\n },\n detailItem: {\n marginBottom: \"24px\",\n },\n value: {\n textAlign: \"right\",\n wordBreak: \"break-all\",\n },\n closeButton: {\n position: \"absolute\",\n right: 0,\n top: \"50%\",\n transform: \"translate(0, -50%)\",\n cursor: \"pointer\",\n \"&:hover\": {\n color: theme.colors.primaryMain,\n },\n \"&.warning\": {\n color: \"#D3625B\",\n \"&:hover\": {\n color: \"#D3625B\",\n },\n },\n },\n closeButton1: {\n position: \"absolute\",\n right: \"5px\",\n top: \"5px\",\n cursor: \"pointer\",\n \"&:hover\": {\n color: theme.colors.primaryMain,\n },\n \"&.warning\": {\n color: \"#D3625B\",\n \"&:hover\": {\n color: \"#D3625B\",\n },\n },\n },\n}));\n\nexport interface ModalProps {\n title?: string | React.ReactNode;\n showClose?: boolean;\n children: React.ReactNode;\n open: boolean;\n confirmText?: ReactNode;\n cancelText?: ReactNode;\n onClose?: () => void;\n onConfirm?: () => void;\n onCancel?: () => void;\n showConfirm?: boolean;\n showCancel?: boolean;\n confirmDisabled?: boolean;\n fullWidth?: boolean;\n maxWidth?: string;\n dialogProps?: any;\n type?: string;\n background?: string;\n contentPadding?: string;\n [key: string]: any;\n}\n\nexport default function Modal({\n title,\n children,\n open,\n confirmText = t`Confirm`,\n cancelText = t`Cancel`,\n onClose,\n onConfirm,\n onCancel,\n showConfirm = false,\n showCancel = false,\n showClose = true,\n confirmDisabled,\n fullWidth = true,\n maxWidth = \"sm\",\n type,\n background,\n dialogProps,\n contentPadding,\n}: ModalProps) {\n const classes = useStyles();\n const theme = useTheme() as Theme;\n const matchDownMD = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n const down760 = useMediaQuery(\"(max-width:760px)\");\n\n return (\n \n {title ? (\n isElement(title) ? (\n title\n ) : (\n \n \n \n {title}\n \n {showClose ? (\n \n ) : null}\n \n \n )\n ) : null}\n \n {showClose && !title ? (\n \n ) : null}\n {children}\n\n {showConfirm || showCancel ? (\n \n {showCancel ? (\n \n \n \n ) : null}\n {showConfirm ? (\n \n \n \n ) : null}\n \n ) : null}\n \n \n );\n}\n","import React from \"react\";\nimport { useTheme } from \"@mui/material\";\nimport { isDarkTheme } from \"utils\";\nimport { Theme } from \"@mui/material/styles\";\nimport Modal from \"./index\";\n\nexport interface SwapModalProps {\n width?: string;\n open: boolean;\n children: React.ReactNode;\n [key: string]: any;\n}\n\nexport default ({ width = \"570px\", open, children, ...props }: SwapModalProps) => {\n const theme = useTheme() as Theme;\n\n return (\n \n {children}\n \n );\n};\n","import { SvgIcon, useTheme, SvgIconProps } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\n\nexport default function NoDataIcon(props: SvgIconProps) {\n const theme = useTheme() as Theme;\n\n return theme.customization.mode === \"dark\" ? (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ) : (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { Grid } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport NoDataIcon from \"assets/images/icons/no-data\";\n\nconst useStyles = makeStyles(() => {\n return {\n noDataContainer: {\n height: \"140px\",\n },\n };\n});\n\nexport default function NoData() {\n const classes = useStyles();\n\n return (\n \n \n \n \n \n );\n}\n","import React from \"react\";\nimport { ProviderContext } from \"./types\";\n\nexport default React.createContext({} as ProviderContext);\n","import { InternalSnack } from \"../types\";\n\nexport const breakpoints = {\n downXs: \"@media (max-width:599.95px)\",\n upSm: \"@media (min-width:600px)\",\n};\n\nconst capitalise = (text: string): string => text.charAt(0).toUpperCase() + text.slice(1);\n\nexport const originKeyExtractor = (anchor: InternalSnack[\"anchorOrigin\"]): string =>\n `${capitalise(anchor.vertical)}${capitalise(anchor.horizontal)}`;\n\nexport const isDefined = (value: string | null | undefined | number): boolean => !!value || value === 0;\n","import React from \"react\";\nimport { CircularProgress } from \"@mui/material\";\n\nfunction SvgIcon(props: any) {\n return (\n \n );\n}\n\nfunction CheckIcon() {\n return (\n \n \n \n \n );\n}\n\nconst WarningIcon: React.FC = () => (\n \n \n \n);\n\nconst ErrorIcon: React.FC = () => (\n \n \n \n);\n\nconst InfoIcon: React.FC = () => (\n \n \n \n);\n\nconst defaultIconVariants: Record = {\n default: undefined,\n success: ,\n warning: ,\n error: ,\n info: ,\n loading: ,\n};\n\nexport default defaultIconVariants;\n","export enum TransitionStatus {\n UNMOUNTED = \"unmounted\",\n EXITED = \"exited\",\n ENTERING = \"entering\",\n ENTERED = \"entered\",\n EXITING = \"exiting\",\n}\n","// @ts-nocheck\n/* eslint-disable */\n\nimport React from \"react\";\nimport { TransitionStatus } from \"./types\";\n\nclass Transition extends React.Component {\n constructor(props: any) {\n super(props);\n\n const { appear } = props;\n\n let initialStatus;\n\n this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = TransitionStatus.EXITED;\n this.appearStatus = TransitionStatus.ENTERING;\n } else {\n initialStatus = TransitionStatus.ENTERED;\n }\n } else if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = TransitionStatus.UNMOUNTED;\n } else {\n initialStatus = TransitionStatus.EXITED;\n }\n\n this.state = { status: initialStatus };\n\n this.nextCallback = null;\n }\n\n static getDerivedStateFromProps({ in: nextIn }, prevState) {\n if (nextIn && prevState.status === TransitionStatus.UNMOUNTED) {\n return { status: TransitionStatus.EXITED };\n }\n return null;\n }\n\n componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n }\n\n componentDidUpdate(prevProps) {\n let nextStatus = null;\n if (prevProps !== this.props) {\n const { status } = this.state;\n\n if (this.props.in) {\n if (status !== TransitionStatus.ENTERING && status !== TransitionStatus.ENTERED) {\n nextStatus = TransitionStatus.ENTERING;\n }\n } else if (status === TransitionStatus.ENTERING || status === TransitionStatus.ENTERED) {\n nextStatus = TransitionStatus.EXITING;\n }\n }\n this.updateStatus(false, nextStatus);\n }\n\n componentWillUnmount() {\n this.cancelNextCallback();\n }\n\n getTimeouts() {\n const { timeout } = this.props;\n let enter = timeout;\n let exit = timeout;\n\n if (timeout != null && typeof timeout !== \"number\") {\n exit = timeout.exit;\n enter = timeout.enter;\n }\n return { exit, enter };\n }\n\n updateStatus(mounting = false, nextStatus) {\n if (nextStatus !== null) {\n this.cancelNextCallback();\n\n if (nextStatus === TransitionStatus.ENTERING) {\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === TransitionStatus.EXITED) {\n this.setState({ status: TransitionStatus.UNMOUNTED });\n }\n }\n\n get node() {\n const node = this.props.nodeRef.current;\n if (!node) {\n throw new Error(\"notistack - Custom snackbar is not refForwarding\");\n }\n return node;\n }\n\n performEnter(mounting) {\n const { enter, id } = this.props;\n const isAppearing = mounting;\n\n const timeouts = this.getTimeouts();\n\n if (!mounting && !enter) {\n this.safeSetState({ status: TransitionStatus.ENTERED }, () => {\n this.props.onEntered(this.node, isAppearing, id);\n });\n return;\n }\n\n this.props.onEnter(this.node, isAppearing, id);\n\n this.safeSetState({ status: TransitionStatus.ENTERING }, () => {\n this.props.onEntering(this.node, isAppearing, id);\n\n this.onTransitionEnd(timeouts.enter, () => {\n this.safeSetState({ status: TransitionStatus.ENTERED }, () => {\n this.props.onEntered(this.node, isAppearing, id);\n });\n });\n });\n }\n\n performExit() {\n const { exit, id } = this.props;\n const timeouts = this.getTimeouts();\n\n // no exit animation skip right to EXITED\n if (!exit) {\n this.safeSetState({ status: TransitionStatus.EXITED }, () => {\n this.props.onExited(this.node, id);\n });\n return;\n }\n\n this.props.onExit(this.node, id);\n\n this.safeSetState({ status: TransitionStatus.EXITING }, () => {\n this.props.onExiting(this.node, id);\n\n this.onTransitionEnd(timeouts.exit, () => {\n this.safeSetState({ status: TransitionStatus.EXITED }, () => {\n this.props.onExited(this.node, id);\n });\n });\n });\n }\n\n cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n }\n\n safeSetState(nextState, callback) {\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n }\n\n setNextCallback(callback) {\n let active = true;\n\n this.nextCallback = (event) => {\n if (active) {\n active = false;\n this.nextCallback = null;\n\n callback(event);\n }\n };\n\n this.nextCallback.cancel = () => {\n active = false;\n };\n\n return this.nextCallback;\n }\n\n onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n const doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n if (!this.node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n this.props.addEndListener(this.node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n }\n\n render() {\n const { status } = this.state;\n\n if (status === TransitionStatus.UNMOUNTED) {\n return null;\n }\n\n const {\n children,\n // filter props for `Transition`\n id: _id,\n in: _in,\n mountOnEnter: _mountOnEnter,\n unmountOnExit: _unmountOnExit,\n appear: _appear,\n enter: _enter,\n exit: _exit,\n timeout: _timeout,\n addEndListener: _addEndListener,\n onEnter: _onEnter,\n onEntering: _onEntering,\n onEntered: _onEntered,\n onExit: _onExit,\n onExiting: _onExiting,\n onExited: _onExited,\n nodeRef: _nodeRef,\n ...childProps\n } = this.props;\n\n return children(status, childProps);\n }\n}\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n\n onExit: noop,\n onExiting: noop,\n onExited: noop,\n};\n\nexport default Transition;\n","/* eslint-disable no-param-reassign */\nimport * as React from \"react\";\n\n/**\n * passes {value} to {ref}\n *\n * Useful if you want to expose the ref of an inner component to the public API\n * while still using it inside the component.\n * @param ref A ref callback or ref object. If anything falsy, this is a no-op.\n */\nfunction setRef(\n ref: React.MutableRefObject | ((instance: T | null) => void) | null | undefined,\n value: T | null,\n): void {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}\n\nexport default function useForkRef(\n refA: React.Ref | null | undefined,\n refB: React.Ref | null | undefined,\n): React.Ref | null {\n /**\n * This will create a new function if the ref props change and are defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior.\n */\n return React.useMemo(() => {\n if (refA == null && refB == null) {\n return null;\n }\n return (refValue) => {\n setRef(refA, refValue);\n setRef(refB, refValue);\n };\n }, [refA, refB]);\n}\n","import { TransitionDuration } from \"../types\";\n\ninterface ComponentProps {\n style: React.CSSProperties | undefined;\n /**\n * number: 400\n * string: 'auto'\n * TransitionDuration: { enter: 200, exit: 400 }\n */\n timeout: number | string | TransitionDuration;\n mode: \"enter\" | \"exit\";\n}\n\ninterface TransitionPropsReturnType {\n duration: string | number;\n easing: string | undefined;\n delay: string | undefined;\n}\n\nexport default function getTransitionProps(props: ComponentProps): TransitionPropsReturnType {\n const { timeout, style = {}, mode } = props;\n return {\n duration: style.transitionDuration ?? (typeof timeout === \"object\" ? timeout[mode] || 0 : timeout),\n easing: style.transitionTimingFunction,\n delay: style.transitionDelay,\n };\n}\n","/* eslint-disable no-param-reassign */\nexport const defaultEasing = {\n // This is the most common easing curve.\n easeInOut: \"cubic-bezier(0.4, 0, 0.2, 1)\",\n // Objects enter the screen at full velocity from off-screen and\n // slowly decelerate to a resting point.\n easeOut: \"cubic-bezier(0.0, 0, 0.2, 1)\",\n // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n easeIn: \"cubic-bezier(0.4, 0, 1, 1)\",\n // The sharp curve is used by objects that may return to the screen at any time.\n sharp: \"cubic-bezier(0.4, 0, 0.6, 1)\",\n};\n\n/**\n * CSS hack to force a repaint\n */\nexport const reflow = (node: Element): void => {\n // We have to do something with node.scrollTop.\n // Otherwise it removed from the compiled code by optimisers\n // eslint-disable-next-line no-self-assign\n node.scrollTop = node.scrollTop;\n};\n","import { defaultEasing } from \"./utils\";\n\ninterface CreateTransitionOptions {\n duration: string | number;\n easing?: string;\n delay?: string | number;\n}\n\nconst formatMs = (milliseconds: number) => `${Math.round(milliseconds)}ms`;\n\nexport default function createTransition(\n props: string | string[] = [\"all\"],\n options?: CreateTransitionOptions,\n): string {\n const { duration = 300, easing = defaultEasing.easeInOut, delay = 0 } = options || {};\n\n const properties = Array.isArray(props) ? props : [props];\n\n return properties\n .map((animatedProp) => {\n const formattedDuration = typeof duration === \"string\" ? duration : formatMs(duration);\n const formattedDelay = typeof delay === \"string\" ? delay : formatMs(delay);\n return `${animatedProp} ${formattedDuration} ${easing} ${formattedDelay}`;\n })\n .join(\",\");\n}\n","export function ownerDocument(node: Node | null | undefined): Document {\n return (node && node.ownerDocument) || document;\n}\n\nexport function ownerWindow(node: Node | null): Window {\n const doc = ownerDocument(node);\n return doc.defaultView || window;\n}\n","// @ts-nocheck\n/* eslint-disable no-param-reassign */\n\nimport * as React from \"react\";\nimport TransitionComponent, { TransitionStatus } from \"../Transition\";\nimport useForkRef from \"../useForkRef\";\nimport getTransitionProps from \"../getTransitionProps\";\nimport createTransition from \"../createTransition\";\nimport { defaultEasing, reflow } from \"../utils\";\nimport { ownerWindow } from \"../document-window\";\nimport { SlideTransitionDirection, TransitionHandlerProps, TransitionProps } from \"../../types\";\n\n/**\n * Corresponds to 10 frames at 60 Hz.\n * A few bytes payload overhead when lodash/debounce is ~3 kB and debounce ~300 B.\n */\nfunction debounce(func, wait = 166) {\n let timeout;\n function debounced(...args: any[]) {\n const later = () => {\n func.apply(this, args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n }\n\n debounced.clear = () => {\n clearTimeout(timeout);\n };\n\n return debounced;\n}\n\n/**\n * Translate the node so it can't be seen on the screen.\n * Later, we're going to translate the node back to its original location with `none`.\n */\nfunction getTranslateValue(\n direction: SlideTransitionDirection,\n node: HTMLElement & { fakeTransform?: string },\n): string {\n const rect = node.getBoundingClientRect();\n const containerWindow = ownerWindow(node);\n let transform;\n\n if (node.fakeTransform) {\n transform = node.fakeTransform;\n } else {\n const computedStyle = containerWindow.getComputedStyle(node);\n transform = computedStyle.getPropertyValue(\"-webkit-transform\") || computedStyle.getPropertyValue(\"transform\");\n }\n\n let offsetX = 0;\n let offsetY = 0;\n\n if (transform && transform !== \"none\" && typeof transform === \"string\") {\n const transformValues = transform.split(\"(\")[1].split(\")\")[0].split(\",\");\n offsetX = parseInt(transformValues[4], 10);\n offsetY = parseInt(transformValues[5], 10);\n }\n\n switch (direction) {\n case \"left\":\n return `translateX(${containerWindow.innerWidth + offsetX - rect.left}px)`;\n case \"right\":\n return `translateX(-${rect.left + rect.width - offsetX}px)`;\n case \"up\":\n return `translateY(${containerWindow.innerHeight + offsetY - rect.top}px)`;\n default:\n // down\n return `translateY(-${rect.top + rect.height - offsetY}px)`;\n }\n}\n\nfunction setTranslateValue(direction: SlideTransitionDirection, node: HTMLElement | null): void {\n if (!node) return;\n const transform = getTranslateValue(direction, node);\n if (transform) {\n node.style.webkitTransform = transform;\n node.style.transform = transform;\n }\n}\n\nexport const Slide = React.forwardRef((props, ref) => {\n const {\n children,\n direction = \"down\",\n in: inProp,\n style,\n timeout = 0,\n onEnter,\n onEntered,\n onExit,\n onExited,\n ...other\n } = props;\n\n const nodeRef = React.useRef(null);\n const handleRefIntermediary = useForkRef(children.ref, nodeRef);\n const handleRef = useForkRef(handleRefIntermediary, ref);\n\n const handleEnter: TransitionHandlerProps[\"onEnter\"] = (node, isAppearing, snackId) => {\n setTranslateValue(direction, node);\n reflow(node);\n\n if (onEnter) {\n onEnter(node, isAppearing, snackId);\n }\n };\n\n const handleEntering = (node: HTMLElement) => {\n const easing = style?.transitionTimingFunction || defaultEasing.easeOut;\n const transitionProps = getTransitionProps({\n timeout,\n mode: \"enter\",\n style: { ...style, transitionTimingFunction: easing },\n });\n\n node.style.webkitTransition = createTransition(\"-webkit-transform\", transitionProps);\n node.style.transition = createTransition(\"transform\", transitionProps);\n\n node.style.webkitTransform = \"none\";\n node.style.transform = \"none\";\n };\n\n const handleExit: TransitionHandlerProps[\"onExit\"] = (node, snackId) => {\n const easing = style?.transitionTimingFunction || defaultEasing.sharp;\n const transitionProps = getTransitionProps({\n timeout,\n mode: \"exit\",\n style: { ...style, transitionTimingFunction: easing },\n });\n\n node.style.webkitTransition = createTransition(\"-webkit-transform\", transitionProps);\n node.style.transition = createTransition(\"transform\", transitionProps);\n\n setTranslateValue(direction, node);\n\n if (onExit) {\n onExit(node, snackId);\n }\n };\n\n const handleExited: TransitionHandlerProps[\"onExited\"] = (node, snackId) => {\n // No need for transitions when the component is hidden\n node.style.webkitTransition = \"\";\n node.style.transition = \"\";\n\n if (onExited) {\n onExited(node, snackId);\n }\n };\n\n const updatePosition = React.useCallback(() => {\n if (nodeRef.current) {\n setTranslateValue(direction, nodeRef.current);\n }\n }, [direction]);\n\n React.useEffect(() => {\n // Skip configuration where the position is screen size invariant.\n if (inProp || direction === \"down\" || direction === \"right\") {\n return undefined;\n }\n\n const handleResize = debounce(() => {\n if (nodeRef.current) {\n setTranslateValue(direction, nodeRef.current);\n }\n });\n\n const containerWindow = ownerWindow(nodeRef.current);\n containerWindow.addEventListener(\"resize\", handleResize);\n return () => {\n handleResize.clear();\n containerWindow.removeEventListener(\"resize\", handleResize);\n };\n }, [direction, inProp]);\n\n React.useEffect(() => {\n if (!inProp) {\n // We need to update the position of the drawer when the direction change and\n // when it's hidden.\n updatePosition();\n }\n }, [inProp, updatePosition]);\n\n return (\n \n {(state: TransitionStatus, childProps: Record) =>\n React.cloneElement(children, {\n ref: handleRef,\n style: {\n visibility: state === \"exited\" && !inProp ? \"hidden\" : undefined,\n ...style,\n ...children.props.style,\n },\n ...childProps,\n })\n }\n \n );\n});\n","import defaultIconVariants from \"../utils/defaultIconVariants\";\nimport { InternalSnack } from \"../types\";\nimport { Slide } from \"../transitions/Slide\";\n\nexport const defaults = {\n maxSnack: 3,\n persist: false,\n hideIconVariant: false,\n disableWindowBlurListener: false,\n variant: \"default\",\n autoHideDuration: 5000,\n iconVariant: defaultIconVariants,\n anchorOrigin: { vertical: \"top\", horizontal: \"right\" },\n TransitionComponent: Slide,\n transitionDuration: {\n enter: 225,\n exit: 195,\n },\n};\n\n/**\n * Derives the right autoHideDuration taking into account the following\n * prority order: 1: Options, 2: Props, 3: default fallback\n */\nconst getAutoHideDuration = (optionsDuration: any, propsDuration: any) => {\n const isNumberOrNull = (numberish: number | null) => typeof numberish === \"number\" || numberish === null;\n\n if (isNumberOrNull(optionsDuration)) return optionsDuration;\n if (isNumberOrNull(propsDuration)) return propsDuration;\n return defaults.autoHideDuration;\n};\n\n/**\n * Derives the right transitionDuration taking into account the following\n * prority order: 1: Options, 2: Props, 3: default fallback\n */\nconst getTransitionDuration = (optionsDuration: any, propsDuration: any) => {\n const is = (item: any, types: string[]) => types.some((t) => typeof item === t);\n\n if (is(optionsDuration, [\"string\", \"number\"])) {\n return optionsDuration;\n }\n\n if (is(optionsDuration, [\"object\"])) {\n return {\n ...defaults.transitionDuration,\n ...(is(propsDuration, [\"object\"]) && propsDuration),\n ...optionsDuration,\n };\n }\n\n if (is(propsDuration, [\"string\", \"number\"])) {\n return propsDuration;\n }\n\n if (is(propsDuration, [\"object\"])) {\n return {\n ...defaults.transitionDuration,\n ...propsDuration,\n };\n }\n\n return defaults.transitionDuration;\n};\n\nexport const merge =\n (options: any, props: any) =>\n (name: keyof InternalSnack, shouldObjectMerge = false): any => {\n if (shouldObjectMerge) {\n return {\n // @ts-ignore\n ...defaults[name],\n ...props[name],\n ...options[name],\n };\n }\n\n if (name === \"autoHideDuration\") {\n return getAutoHideDuration(options.autoHideDuration, props.autoHideDuration);\n }\n\n if (name === \"transitionDuration\") {\n return getTransitionDuration(options.transitionDuration, props.transitionDuration);\n }\n\n // @ts-ignore\n return options[name] || props[name] || defaults[name];\n };\n","/**\n * https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n */\nexport default function getAutoHeightDuration(height: number): number {\n if (!height) {\n return 0;\n }\n\n const constant = height / 36;\n\n return Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10);\n}\n","export const ComponentClasses = {\n SnackbarContainer: \"notistack-SnackbarContainer\",\n Snackbar: \"notistack-Snackbar\",\n CollapseWrapper: \"notistack-CollapseWrapper\",\n MuiContent: \"notistack-MuiContent\",\n};\n","/* eslint-disable no-param-reassign */\n\n/**\n * Credit to MUI team @ https://mui.com\n */\nimport * as React from \"react\";\nimport clsx from \"clsx\";\nimport { makeStyles } from \"@mui/styles\";\nimport TransitionComponent, { TransitionStatus } from \"../Transition\";\nimport useForkRef from \"../useForkRef\";\nimport { TransitionHandlerProps, TransitionProps } from \"../../types\";\nimport getAutoHeightDuration from \"../getAutoHeightDuration\";\nimport getTransitionProps from \"../getTransitionProps\";\nimport createTransition from \"../createTransition\";\nimport { ComponentClasses } from \"../../utils/styles\";\n\nconst useStyles = makeStyles({\n root: {\n height: 0,\n },\n entered: {\n height: \"auto\",\n },\n});\n\nconst collapsedSize = \"0px\";\n\nconst Collapse = React.forwardRef((props, ref) => {\n const { children, style, timeout = 300, in: inProp, onEnter, onEntered, onExit, onExited, ...other } = props;\n\n const classes = useStyles();\n\n const timer = React.useRef>();\n const wrapperRef = React.useRef(null);\n const autoTransitionDuration = React.useRef();\n\n React.useEffect(\n () => () => {\n if (timer.current) {\n clearTimeout(timer.current);\n }\n },\n [],\n );\n\n const nodeRef = React.useRef(null);\n const handleRef = useForkRef(ref, nodeRef);\n\n const getWrapperSize = () => (wrapperRef.current ? wrapperRef.current.clientHeight : 0);\n\n const handleEnter: TransitionHandlerProps[\"onEnter\"] = (node, isAppearing, snackId) => {\n node.style.height = collapsedSize;\n if (onEnter) {\n onEnter(node, isAppearing, snackId);\n }\n };\n\n const handleEntering = (node: HTMLElement) => {\n const wrapperSize = getWrapperSize();\n\n const { duration: transitionDuration, easing } = getTransitionProps({\n style,\n timeout,\n mode: \"enter\",\n });\n\n if (timeout === \"auto\") {\n const duration2 = getAutoHeightDuration(wrapperSize);\n node.style.transitionDuration = `${duration2}ms`;\n autoTransitionDuration.current = duration2;\n } else {\n node.style.transitionDuration =\n typeof transitionDuration === \"string\" ? transitionDuration : `${transitionDuration}ms`;\n }\n\n node.style.height = `${wrapperSize}px`;\n node.style.transitionTimingFunction = easing || \"\";\n };\n\n const handleEntered: TransitionHandlerProps[\"onEntered\"] = (node, isAppearing, snackId) => {\n node.style.height = \"auto\";\n if (onEntered) {\n onEntered(node, isAppearing, snackId);\n }\n };\n\n const handleExit: TransitionHandlerProps[\"onExit\"] = (node, snackId) => {\n node.style.height = `${getWrapperSize()}px`;\n if (onExit) {\n onExit(node, snackId);\n }\n };\n\n const handleExiting = (node: HTMLElement) => {\n const wrapperSize = getWrapperSize();\n const { duration: transitionDuration, easing } = getTransitionProps({\n style,\n timeout,\n mode: \"exit\",\n });\n\n if (timeout === \"auto\") {\n const duration2 = getAutoHeightDuration(wrapperSize);\n node.style.transitionDuration = `${duration2}ms`;\n autoTransitionDuration.current = duration2;\n } else {\n node.style.transitionDuration =\n typeof transitionDuration === \"string\" ? transitionDuration : `${transitionDuration}ms`;\n }\n\n node.style.height = collapsedSize;\n node.style.transitionTimingFunction = easing || \"\";\n };\n\n const handleAddEndListener = (next: any) => {\n if (timeout === \"auto\") {\n timer.current = setTimeout(next, autoTransitionDuration.current || 0);\n }\n };\n\n return (\n // @ts-ignore\n \n {(state: TransitionStatus, childProps: Record) => (\n \n \n
{children}
\n \n \n )}\n \n );\n});\n\nexport default Collapse;\n","import {\n InternalSnack,\n SlideTransitionDirection,\n SnackbarOrigin,\n SnackbarClassKey,\n SnackbarProviderProps,\n ClassNameMap,\n ContainerClassKey,\n} from \"../types\";\nimport { originKeyExtractor } from \"../utils\";\n\nconst direction: Record = {\n right: \"left\",\n left: \"right\",\n bottom: \"up\",\n top: \"down\",\n};\n\nexport const getSlideDirection = (anchorOrigin: InternalSnack[\"anchorOrigin\"]): SlideTransitionDirection => {\n if (anchorOrigin.horizontal !== \"center\") {\n return direction[anchorOrigin.horizontal];\n }\n return direction[anchorOrigin.vertical];\n};\n\n/** Tranforms classes name */\nexport const toSnackbarAnchorOrigin = (anchorOrigin: SnackbarOrigin): SnackbarClassKey =>\n `anchorOrigin${originKeyExtractor(anchorOrigin)}` as SnackbarClassKey;\n\n/**\n * Omit SnackbarContainer class keys that are not needed for SnackbarItem\n */\nexport const keepSnackbarClassKeys = (\n classes: SnackbarProviderProps[\"classes\"] = {},\n): Partial> => {\n const containerClasses: Record = {\n containerRoot: true,\n containerAnchorOriginTopCenter: true,\n containerAnchorOriginBottomCenter: true,\n containerAnchorOriginTopRight: true,\n containerAnchorOriginBottomRight: true,\n containerAnchorOriginTopLeft: true,\n containerAnchorOriginBottomLeft: true,\n };\n return (Object.keys(classes) as ContainerClassKey[])\n .filter((key) => !containerClasses[key])\n .reduce((obj, key) => ({ ...obj, [key]: classes[key] }), {});\n};\n","/* eslint-disable @typescript-eslint/no-empty-function */\n// @ts-nocheck\nexport default function createChainedFunction(funcs) {\n return funcs.reduce(\n (acc, func) => {\n if (func == null) return acc;\n\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof func !== \"function\") {\n // eslint-disable-next-line no-console\n console.error(\"Invalid Argument Type. must only provide functions, undefined, or null.\");\n }\n }\n\n return function chainedFunction(...args) {\n const argums = [...args];\n acc.apply(this, argums);\n func.apply(this, argums);\n };\n },\n () => {},\n );\n}\n","/**\n * @link https://github.com/mui-org/material-ui/blob/master/packages/material-ui/src/utils/useEventCallback.js\n */\n\n// @ts-nocheck\n\nimport * as React from \"react\";\n\nconst useEnhancedEffect = typeof window !== \"undefined\" ? React.useLayoutEffect : React.useEffect;\n\nexport default function useEventCallback(fn) {\n const ref = React.useRef(fn);\n\n useEnhancedEffect(() => {\n ref.current = fn;\n });\n\n return React.useCallback((...args) => (0, ref.current)(...args), []);\n}\n","/**\n * Credit to MUI team @ https://mui.com\n */\nimport * as React from \"react\";\nimport clsx from \"clsx\";\nimport { ClickAwayListener } from \"@mui/base\";\nimport useEventCallback from \"../utils/useEventCallback\";\nimport { CloseReason, SharedProps, SnackbarKey } from \"../types\";\nimport { ComponentClasses } from \"../utils/styles\";\n\ninterface SnackbarProps extends Required> {\n open: boolean;\n id: SnackbarKey;\n className: string;\n children: JSX.Element;\n autoHideDuration: number | null | undefined;\n SnackbarProps: SharedProps[\"SnackbarProps\"];\n}\n\nconst Snackbar = React.forwardRef((props, ref) => {\n const {\n children,\n className,\n autoHideDuration,\n disableWindowBlurListener = false,\n onClose,\n id,\n open,\n SnackbarProps = {},\n } = props;\n\n const timerAutoHide = React.useRef>();\n\n const handleClose = useEventCallback((...args: [React.SyntheticEvent, CloseReason, SnackbarKey]) => {\n if (onClose) {\n onClose(...args);\n }\n });\n\n const setAutoHideTimer = useEventCallback((autoHideDurationParam: number | null) => {\n if (!onClose || autoHideDurationParam == null) {\n return;\n }\n\n if (timerAutoHide.current) {\n clearTimeout(timerAutoHide.current);\n }\n timerAutoHide.current = setTimeout(() => {\n handleClose(null, \"timeout\", id);\n }, autoHideDurationParam);\n });\n\n React.useEffect(() => {\n if (open) {\n setAutoHideTimer(autoHideDuration);\n }\n\n return () => {\n if (timerAutoHide.current) {\n clearTimeout(timerAutoHide.current);\n }\n };\n }, [open, autoHideDuration, setAutoHideTimer]);\n\n /**\n * Pause the timer when the user is interacting with the Snackbar\n * or when the user hide the window.\n */\n const handlePause = () => {\n if (timerAutoHide.current) {\n clearTimeout(timerAutoHide.current);\n }\n };\n\n /**\n * Restart the timer when the user is no longer interacting with the Snackbar\n * or when the window is shown back.\n */\n const handleResume = React.useCallback(() => {\n if (autoHideDuration != null) {\n setAutoHideTimer(autoHideDuration * 0.5);\n }\n }, [autoHideDuration, setAutoHideTimer]);\n\n const handleMouseEnter: React.MouseEventHandler = (event) => {\n if (SnackbarProps.onMouseEnter) {\n SnackbarProps.onMouseEnter(event);\n }\n handlePause();\n };\n\n const handleMouseLeave: React.MouseEventHandler = (event) => {\n if (SnackbarProps.onMouseLeave) {\n SnackbarProps.onMouseLeave(event);\n }\n handleResume();\n };\n\n const handleClickAway = (event: MouseEvent | TouchEvent) => {\n if (onClose) {\n // @ts-ignore\n onClose(event, \"clickaway\", id);\n }\n };\n\n React.useEffect(() => {\n if (!disableWindowBlurListener && open) {\n window.addEventListener(\"focus\", handleResume);\n window.addEventListener(\"blur\", handlePause);\n\n return () => {\n window.removeEventListener(\"focus\", handleResume);\n window.removeEventListener(\"blur\", handlePause);\n };\n }\n\n return undefined;\n }, [disableWindowBlurListener, handleResume, open]);\n\n return (\n \n {/* @ts-ignore */}\n \n {children}\n \n \n );\n});\n\nexport default Snackbar;\n","import { forwardRef } from \"react\";\nimport clsx from \"clsx\";\nimport { makeStyles } from \"@mui/styles\";\nimport { SnackbarContentProps } from \"../types\";\nimport { breakpoints } from \"../utils\";\n\nconst useStyles = makeStyles({\n root: {\n display: \"flex\",\n flexWrap: \"wrap\",\n flexGrow: 1,\n [breakpoints.upSm]: {\n flexGrow: \"initial\",\n minWidth: \"288px\",\n },\n },\n});\n\nconst SnackbarContent = forwardRef(({ className, ...props }, ref) => {\n const classes = useStyles();\n return
;\n});\n\nexport default SnackbarContent;\n","import { memo, forwardRef, useEffect, useState } from \"react\";\nimport { Box } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport clsx from \"clsx\";\nimport DialogCloseIcon from \"assets/images/icons/dialog-close\";\nimport { Theme } from \"@mui/material/styles\";\nimport SnackbarContent from \"../../SnackbarContent\";\nimport { CustomContentProps } from \"../../types\";\nimport { ComponentClasses } from \"../../utils/styles\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n root: {\n backgroundColor: theme.palette.background.level3, // dark grey\n fontSize: \"0.875rem\",\n lineHeight: 1.43,\n letterSpacing: \"0.01071em\",\n color: \"#fff\",\n alignItems: \"center\",\n padding: \"24px 26px\",\n borderRadius: \"8px\",\n boxShadow:\n \"0px 3px 28px 1px rgba(0, 0, 0, 0.14), 0px 0px 6px 0px rgba(0, 0, 0, 0.12), 0px 0px 16px 9px rgba(0, 0, 0, 0.08)\",\n position: \"relative\",\n paddingRight: \"70px\",\n overflow: \"hidden\",\n display: \"block\",\n \"&.loading\": {\n paddingRight: \"26px\",\n },\n },\n iconWrapper: {\n width: \"42px\",\n },\n message: {\n display: \"flex\",\n alignItems: \"flex-start\",\n },\n messageContent: {\n maxWidth: \"214px\",\n margin: \"0\",\n wordBreak: \"break-word\",\n fontWeight: 500,\n },\n extraContent: {\n paddingLeft: \"42px\",\n marginTop: \"6px\",\n },\n action: {\n display: \"flex\",\n alignItems: \"center\",\n marginLeft: \"auto\",\n paddingLeft: \"16px\",\n marginRight: \"-8px\",\n },\n close: {\n position: \"absolute\",\n right: \"18px\",\n top: \"18px\",\n cursor: \"pointer\",\n color: \"#8492C4\",\n },\n line: {\n position: \"absolute\",\n width: \"100%\",\n height: \"2px\",\n bottom: 0,\n left: 0,\n borderRadius: \"0 0 8px 8px\",\n \"&.tick\": {\n width: \"0px\",\n borderRadius: \"0 0 0 8px\",\n },\n \"&.success\": {\n backgroundColor: theme.colors.successDark,\n },\n \"&.error\": {\n backgroundColor: theme.colors.danger,\n },\n },\n };\n});\n\nconst MaterialDesignContent = forwardRef((props, forwardedRef) => {\n const { id, message, action: componentOrFunctionAction, iconVariant, variant, hideIconVariant, style } = props;\n\n const [tick, setTick] = useState(false);\n\n const classes = useStyles();\n\n const icon = iconVariant[variant];\n\n let action = componentOrFunctionAction;\n if (typeof action === \"function\") {\n action = action(id);\n }\n\n const isLoading = variant === \"loading\";\n\n useEffect(() => {\n setTick(true);\n }, [setTick]);\n\n return (\n \n
\n {!hideIconVariant ?
{icon}
: null}\n
{message}
\n {/* @ts-ignore */}\n {!isLoading ? : \"\"}\n
\n\n {props.extraContent ?
{props.extraContent}
: null}\n\n {action &&
{action}
}\n\n {!isLoading ? (\n \n ) : null}\n \n );\n});\n\nexport default memo(MaterialDesignContent);\n","import React, { useState, useEffect, useRef, useCallback, useMemo } from \"react\";\nimport clsx from \"clsx\";\nimport { makeStyles } from \"@mui/styles\";\nimport Collapse from \"../transitions/Collapse\";\nimport { getSlideDirection, toSnackbarAnchorOrigin, keepSnackbarClassKeys } from \"./utils\";\nimport {\n TransitionHandlerProps,\n SnackbarProviderProps,\n CustomContentProps,\n InternalSnack,\n SharedProps,\n} from \"../types\";\nimport createChainedFunction from \"../utils/createChainedFunction\";\nimport Snackbar from \"./Snackbar\";\nimport MaterialDesignContent from \"../ui/MaterialDesignContent\";\n\nconst useStyles = makeStyles({\n wrappedRoot: {\n position: \"relative\",\n transform: \"translateX(0)\",\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n minWidth: \"288px\",\n margin: \"6px 0\",\n },\n});\n\ninterface SnackbarItemProps extends Required> {\n snack: InternalSnack;\n classes: SnackbarProviderProps[\"classes\"];\n onEnter: SnackbarProviderProps[\"onEnter\"];\n onExit: SnackbarProviderProps[\"onExit\"];\n Component?: React.ComponentType;\n}\n\nexport default function SnackbarItem(props: SnackbarItemProps) {\n const styles = useStyles();\n\n const timeout = useRef>();\n const [collapsed, setCollapsed] = useState(true);\n\n const handleClose: NonNullable = createChainedFunction([props.snack.onClose, props.onClose]);\n\n const handleEntered: TransitionHandlerProps[\"onEntered\"] = () => {\n if (props.snack.requestClose) {\n handleClose(null, \"instructed\", props.snack.id);\n }\n };\n\n const handleExitedScreen = useCallback((): void => {\n timeout.current = setTimeout(() => {\n setCollapsed((col) => !col);\n }, 125);\n }, []);\n\n useEffect(\n () => (): void => {\n if (timeout.current) {\n clearTimeout(timeout.current);\n }\n },\n [],\n );\n\n const { snack, classes: allClasses, Component = MaterialDesignContent } = props;\n\n const classes = useMemo(() => keepSnackbarClassKeys(allClasses), [allClasses]);\n\n const {\n open,\n SnackbarProps,\n TransitionComponent,\n TransitionProps,\n transitionDuration,\n disableWindowBlurListener,\n content: componentOrFunctionContent,\n ...otherSnack\n } = snack;\n\n const transitionProps = {\n direction: getSlideDirection(otherSnack.anchorOrigin),\n timeout: transitionDuration,\n ...TransitionProps,\n };\n\n let content = componentOrFunctionContent;\n if (typeof content === \"function\") {\n content = content(otherSnack.id, otherSnack.message);\n }\n\n const callbacks: { [key in keyof TransitionHandlerProps]?: any } = (\n [\"onEnter\", \"onEntered\", \"onExit\", \"onExited\"] as (keyof TransitionHandlerProps)[]\n ).reduce(\n (acc, cbName) => ({\n ...acc,\n [cbName]: createChainedFunction([props.snack[cbName], props[cbName]]),\n }),\n {},\n );\n\n return (\n \n \n \n {/* @ts-ignore */}\n {content || handleClose(null, \"instructed\", props.snack.id)} />}\n \n \n \n );\n}\n","import React, { memo } from \"react\";\nimport clsx from \"clsx\";\nimport { makeStyles } from \"@mui/styles\";\nimport createTransition from \"../transitions/createTransition\";\nimport { ComponentClasses } from \"../utils/styles\";\nimport { breakpoints, originKeyExtractor } from \"../utils\";\nimport { ContainerClassKey, SnackbarProviderProps } from \"../types\";\n\nconst indents = {\n view: { default: 20, dense: 4 },\n snackbar: { default: 6, dense: 2 },\n};\n\nconst collapseWrapper = `.${ComponentClasses.CollapseWrapper}`;\n\nconst xsWidthMargin = 16;\n\nconst useStyles = makeStyles({\n root: {\n boxSizing: \"border-box\",\n display: \"flex\",\n maxHeight: \"100%\",\n position: \"fixed\",\n zIndex: 1400,\n height: \"auto\",\n width: \"auto\",\n transition: createTransition([\"top\", \"right\", \"bottom\", \"left\", \"max-width\"], { duration: 300, easing: \"ease\" }),\n // container itself is invisible and should not block clicks, clicks should be passed to its children\n // a pointerEvents: all is applied in the collapse component\n pointerEvents: \"none\",\n [collapseWrapper]: {\n padding: `${indents.snackbar.default}px 0px`,\n transition: \"padding 300ms ease 0ms\",\n },\n maxWidth: `calc(100% - ${indents.view.default * 2}px)`,\n [breakpoints.downXs]: {\n width: \"100%\",\n maxWidth: `calc(100% - ${xsWidthMargin * 2}px)`,\n },\n },\n rootDense: {\n [collapseWrapper]: {\n padding: `${indents.snackbar.dense}px 0px`,\n },\n },\n top: {\n top: `${indents.view.default - indents.snackbar.default}px`,\n flexDirection: \"column\",\n },\n bottom: {\n bottom: `${indents.view.default - indents.snackbar.default}px`,\n flexDirection: \"column-reverse\",\n },\n left: {\n left: `${indents.view.default}px`,\n [breakpoints.upSm]: {\n alignItems: \"flex-start\",\n },\n [breakpoints.downXs]: {\n left: `${xsWidthMargin}px`,\n },\n },\n right: {\n right: `${indents.view.default}px`,\n [breakpoints.upSm]: {\n alignItems: \"flex-end\",\n },\n [breakpoints.downXs]: {\n right: `${xsWidthMargin}px`,\n },\n },\n center: {\n left: \"50%\",\n transform: \"translateX(-50%)\",\n [breakpoints.upSm]: {\n alignItems: \"center\",\n },\n },\n});\n\ninterface SnackbarContainerProps {\n children: React.ReactNode;\n dense: SnackbarProviderProps[\"dense\"];\n anchorOrigin: NonNullable;\n classes: SnackbarProviderProps[\"classes\"];\n}\n\nconst SnackbarContainer: React.FC = (props) => {\n const { classes = {}, anchorOrigin, dense, children } = props;\n const styles = useStyles();\n\n const combinedClassname = clsx(\n ComponentClasses.SnackbarContainer,\n styles[anchorOrigin.vertical],\n styles[anchorOrigin.horizontal],\n { [styles.rootDense]: dense },\n styles.root, // root should come after others to override maxWidth\n classes.containerRoot,\n classes[`containerAnchorOrigin${originKeyExtractor(anchorOrigin)}` as ContainerClassKey],\n );\n\n return
{children}
;\n};\n\nexport default memo(SnackbarContainer);\n","import React, { Component } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport clsx from \"clsx\";\nimport SnackbarContext from \"../SnackbarContext\";\nimport { originKeyExtractor, isDefined } from \"../utils\";\nimport { defaults, merge } from \"./merger\";\nimport SnackbarItem from \"../SnackbarItem\";\nimport SnackbarContainer from \"../SnackbarContainer\";\nimport warning from \"../utils/warning\";\nimport {\n SnackbarProviderProps,\n SnackbarKey,\n ProviderContext,\n TransitionHandlerProps,\n InternalSnack,\n OptionsObject,\n SharedProps,\n} from \"../types\";\nimport createChainedFunction from \"../utils/createChainedFunction\";\n\ntype Reducer = (state: State) => State;\ntype SnacksByPosition = { [key: string]: InternalSnack[] };\n\ninterface State {\n snacks: InternalSnack[];\n queue: InternalSnack[];\n contextValue: ProviderContext;\n}\n\nclass SnackbarProvider extends Component {\n constructor(props: SnackbarProviderProps) {\n super(props);\n this.state = {\n snacks: [],\n queue: [], // eslint-disable-line react/no-unused-state\n contextValue: {\n enqueueSnackbar: this.enqueueSnackbar,\n closeSnackbar: this.closeSnackbar,\n },\n };\n }\n\n get maxSnack(): number {\n return this.props.maxSnack || defaults.maxSnack;\n }\n\n /**\n * Adds a new snackbar to the queue to be presented.\n * Returns generated or user defined key referencing the new snackbar or null\n */\n enqueueSnackbar = (message: string | React.ReactNode, optsOrUndefined: OptionsObject = {}): SnackbarKey => {\n const opts = optsOrUndefined;\n\n const { key, preventDuplicate, ...options } = opts;\n\n const hasSpecifiedKey = isDefined(key);\n const id = hasSpecifiedKey ? (key as SnackbarKey) : new Date().getTime() + Math.random();\n\n const merger = merge(options, this.props);\n const snack: InternalSnack = {\n id,\n ...options,\n message,\n open: true,\n entered: false,\n requestClose: false,\n persist: merger(\"persist\"),\n action: merger(\"action\"),\n content: merger(\"content\"),\n variant: merger(\"variant\"),\n anchorOrigin: merger(\"anchorOrigin\"),\n disableWindowBlurListener: merger(\"disableWindowBlurListener\"),\n autoHideDuration: merger(\"autoHideDuration\"),\n hideIconVariant: merger(\"hideIconVariant\"),\n TransitionComponent: merger(\"TransitionComponent\"),\n transitionDuration: merger(\"transitionDuration\"),\n TransitionProps: merger(\"TransitionProps\", true),\n iconVariant: merger(\"iconVariant\", true),\n style: merger(\"style\", true),\n SnackbarProps: merger(\"SnackbarProps\", true),\n className: clsx(this.props.className, options.className),\n };\n\n if (snack.persist) {\n snack.autoHideDuration = undefined;\n }\n\n this.setState((state) => {\n if ((preventDuplicate === undefined && this.props.preventDuplicate) || preventDuplicate) {\n const compareFunction = (item: InternalSnack): boolean =>\n hasSpecifiedKey ? item.id === id : item.message === message;\n\n const inQueue = state.queue.findIndex(compareFunction) > -1;\n const inView = state.snacks.findIndex(compareFunction) > -1;\n if (inQueue || inView) {\n return state;\n }\n }\n\n return this.handleDisplaySnack({\n ...state,\n queue: [...state.queue, snack],\n });\n });\n\n return id;\n };\n\n /**\n * Reducer: Display snack if there's space for it. Otherwise, immediately\n * begin dismissing the oldest message to start showing the new one.\n */\n handleDisplaySnack: Reducer = (state) => {\n const { snacks } = state;\n if (snacks.length >= this.maxSnack) {\n return this.handleDismissOldest(state);\n }\n return this.processQueue(state);\n };\n\n /**\n * Reducer: Display items (notifications) in the queue if there's space for them.\n */\n processQueue: Reducer = (state) => {\n const { queue, snacks } = state;\n if (queue.length > 0) {\n return {\n ...state,\n snacks: [...snacks, queue[0]],\n queue: queue.slice(1, queue.length),\n };\n }\n return state;\n };\n\n /**\n * Reducer: Hide oldest snackbar on the screen because there exists a new one which we have to display.\n * (ignoring the one with 'persist' flag. i.e. explicitly told by user not to get dismissed).\n *\n * Note 1: If there is already a message leaving the screen, no new messages are dismissed.\n * Note 2: If the oldest message has not yet entered the screen, only a request to close the\n * snackbar is made. Once it entered the screen, it will be immediately dismissed.\n */\n handleDismissOldest: Reducer = (state) => {\n if (state.snacks.some((item) => !item.open || item.requestClose)) {\n return state;\n }\n\n let popped = false;\n let ignore = false;\n\n const persistentCount = state.snacks.reduce((acc, current) => acc + (current.open && current.persist ? 1 : 0), 0);\n\n if (persistentCount === this.maxSnack) {\n warning(\"NO_PERSIST_ALL\");\n ignore = true;\n }\n\n const snacks = state.snacks.map((item) => {\n if (!popped && (!item.persist || ignore)) {\n popped = true;\n\n if (!item.entered) {\n return {\n ...item,\n requestClose: true,\n };\n }\n\n if (item.onClose) {\n item.onClose(null, \"maxsnack\", item.id);\n }\n\n if (this.props.onClose) {\n this.props.onClose(null, \"maxsnack\", item.id);\n }\n\n return {\n ...item,\n open: false,\n };\n }\n\n return { ...item };\n });\n\n return { ...state, snacks };\n };\n\n /**\n * Set the entered state of the snackbar with the given key.\n */\n handleEnteredSnack: TransitionHandlerProps[\"onEntered\"] = (node, isAppearing, key) => {\n if (!isDefined(key)) {\n throw new Error(\"handleEnteredSnack Cannot be called with undefined key\");\n }\n\n this.setState(({ snacks }) => ({\n snacks: snacks.map((item) => (item.id === key ? { ...item, entered: true } : { ...item })),\n }));\n };\n\n /**\n * Hide a snackbar after its timeout.\n */\n handleCloseSnack: NonNullable = (event, reason, key) => {\n // should not use createChainedFunction for onClose.\n // because this.closeSnackbar called this function\n if (this.props.onClose) {\n this.props.onClose(event, reason, key);\n }\n\n if (reason === \"clickaway\") {\n return;\n }\n\n const shouldCloseAll = key === undefined;\n\n this.setState(({ snacks, queue }) => ({\n snacks: snacks.map((item) => {\n if (!shouldCloseAll && item.id !== key) {\n return { ...item };\n }\n\n return item.entered ? { ...item, open: false } : { ...item, requestClose: true };\n }),\n queue: queue.filter((item) => item.id !== key), // eslint-disable-line react/no-unused-state\n }));\n };\n\n /**\n * Close snackbar with the given key\n */\n closeSnackbar: ProviderContext[\"closeSnackbar\"] = (key) => {\n // call individual snackbar onClose callback passed through options parameter\n const toBeClosed = this.state.snacks.find((item) => item.id === key);\n if (isDefined(key) && toBeClosed && toBeClosed.onClose) {\n toBeClosed.onClose(null, \"instructed\", key);\n }\n\n this.handleCloseSnack(null, \"instructed\", key);\n };\n\n /**\n * When we set open attribute of a snackbar to false (i.e. after we hide a snackbar),\n * it leaves the screen and immediately after leaving animation is done, this method\n * gets called. We remove the hidden snackbar from state and then display notifications\n * waiting in the queue (if any). If after this process the queue is not empty, the\n * oldest message is dismissed.\n */\n handleExitedSnack: TransitionHandlerProps[\"onExited\"] = (node, key) => {\n if (!isDefined(key)) {\n throw new Error(\"handleExitedSnack Cannot be called with undefined key\");\n }\n\n this.setState((state) => {\n const newState = this.processQueue({\n ...state,\n snacks: state.snacks.filter((item) => item.id !== key),\n });\n\n if (newState.queue.length === 0) {\n return newState;\n }\n\n return this.handleDismissOldest(newState);\n });\n };\n\n render(): JSX.Element {\n const { contextValue } = this.state;\n const { domRoot, children, dense = false, Components = {}, classes } = this.props;\n\n const categ = this.state.snacks.reduce((acc, current) => {\n const category = originKeyExtractor(current.anchorOrigin);\n const existingOfCategory = acc[category] || [];\n return {\n ...acc,\n [category]: [...existingOfCategory, current],\n };\n }, {});\n\n const snackbars = Object.keys(categ).map((origin) => {\n const snacks = categ[origin];\n const [nomineeSnack] = snacks;\n\n return (\n \n {snacks.map((snack) => (\n \n ))}\n \n );\n });\n\n return (\n \n {children}\n {domRoot ? createPortal(snackbars, domRoot) : snackbars}\n \n );\n }\n}\n\nexport default SnackbarProvider;\n","import { useContext } from \"react\";\nimport SnackbarContext from \"./SnackbarContext\";\nimport { ProviderContext } from \"./types\";\n\nexport default (): ProviderContext => useContext(SnackbarContext);\n","import React from \"react\";\nimport { Grid, Menu, MenuItem, Pagination as PaginationComponent } from \"@mui/material\";\nimport { MainCard } from \"components/index\";\nimport ExpandMoreRoundedIcon from \"@mui/icons-material/ExpandMoreRounded\";\n\nconst PageSizeList = [10, 50, 100];\n\nexport type PaginationType = {\n pageNum: number;\n pageSize: number;\n};\n\nexport interface PaginationProps {\n count: number;\n onPageChange?: (pagination: PaginationType) => void;\n onPageSizeChange?: (pagination: PaginationType) => void;\n defaultPageSize?: number;\n flexEnd?: boolean;\n showPageSize?: boolean;\n}\n\nexport default ({\n count,\n onPageChange,\n onPageSizeChange,\n defaultPageSize = 10,\n flexEnd,\n showPageSize = false,\n}: PaginationProps) => {\n const [pageNum, setPageNum] = React.useState(1);\n const [pageSize, setPageSize] = React.useState(defaultPageSize);\n const [anchorEl, setAnchorEl] = React.useState(null);\n\n const handleClick = (event: any) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const paginationChange = (e: any, pageNum: number): void => {\n setPageNum(pageNum);\n if (onPageChange) {\n onPageChange({\n pageNum,\n pageSize,\n });\n }\n };\n\n const pageSizeChange = (pageSize: number) => {\n handleClose();\n setPageSize(pageSize);\n setPageNum(1);\n if (onPageSizeChange) {\n onPageSizeChange({\n pageNum: 1,\n pageSize,\n });\n }\n };\n\n return (\n \n \n \n \n \n \n \n \n \n {showPageSize && (\n \n \n \n {pageSize} Rows \n \n \n \n {PageSizeList.map((pageSize) => (\n pageSizeChange(pageSize)}>\n {pageSize} Rows\n \n ))}\n \n \n )}\n \n \n );\n};\n","import { Switch, SwitchProps } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { Theme } from \"@mui/material/styles\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n const trackBorder =\n theme.customization.mode === \"dark\" ? `1px solid ${theme.colors.darkTextSecondary}` : \"1px solid #EDE7F6\";\n\n const trackActiveBorder =\n theme.customization.mode === \"dark\" ? `1px solid ${theme.colors.darkSecondaryMain}` : \"1px solid #EDE7F6\";\n\n return {\n root: {\n height: 20,\n padding: 0,\n margin: 0,\n },\n switchBase: {\n padding: 0,\n color: theme.palette.dark.light,\n top: \"50%\",\n left: \"3px\",\n marginTop: \"-7px\",\n \"&$checked\": {\n transform: \"translateX(15px)\",\n color: theme.palette.dark.light,\n \"& .MuiSwitch-thumb\": {\n background: theme.palette.mode === \"dark\" ? theme.colors.darkSecondaryMain : theme.colors.lightPrimaryMain,\n },\n \"& + $track\": {\n backgroundColor: theme.customization.mode === \"dark\" ? theme.colors.darkLevel3 : \"#FAFAFA\",\n opacity: 1,\n border: trackActiveBorder,\n },\n },\n \"&$focusVisible $thumb\": {\n color: \"#52d869\",\n border: \"6px solid #fff\",\n },\n },\n thumb: {\n width: 14,\n height: 14,\n boxShadow: \"none\",\n },\n track: {\n borderRadius: 20 / 2,\n border: trackBorder,\n background: theme.palette.mode === \"dark\" ? theme.colors.darkLevel3 : \"#fafafa\",\n opacity: 1,\n transition: theme.transitions.create([\"background-color\", \"border\"]),\n },\n checked: {},\n focusVisible: {},\n };\n});\n\nexport default function _Switch(props: SwitchProps) {\n const classes = useStyles();\n\n return (\n \n );\n}\n","import { Box, Typography } from \"@mui/material\";\nimport { TOKEN_STANDARD } from \"constants/tokens\";\n\nexport const StandardText = {\n [TOKEN_STANDARD.DIP20]: \"DIP20\",\n [TOKEN_STANDARD.DIP20_WICP]: \"DIP20\",\n [TOKEN_STANDARD.DIP20_XTC]: \"DIP20\",\n [TOKEN_STANDARD.EXT]: \"EXT\",\n [TOKEN_STANDARD.ICP]: \"--\",\n [TOKEN_STANDARD.ICRC1]: \"ICRC-1\",\n [TOKEN_STANDARD.ICRC2]: \"ICRC-2\",\n};\n\nexport const StandardLabelBg = {\n [TOKEN_STANDARD.DIP20]: \"#606AA5\",\n [TOKEN_STANDARD.DIP20_WICP]: \"#606AA5\",\n [TOKEN_STANDARD.DIP20_XTC]: \"#606AA5\",\n [TOKEN_STANDARD.EXT]: \"#4E9A8C\",\n [TOKEN_STANDARD.ICP]: \"transparent\",\n [TOKEN_STANDARD.ICRC1]: \"#2D54BA\",\n [TOKEN_STANDARD.ICRC2]: \"#2D98BA\",\n};\n\nexport interface TokenStandardLabelProps {\n standard: TOKEN_STANDARD | undefined | null;\n borderRadius?: string;\n height?: string;\n fontSize?: string;\n width?: string;\n}\n\nexport default function TokenStandardLabel({\n standard,\n height,\n fontSize = \"12px\",\n borderRadius = \"4px\",\n width,\n}: TokenStandardLabelProps) {\n return (\n \n \n \n {standard ? StandardText[standard] : \"--\"}\n \n \n \n );\n}\n","/* eslint-disable global-require */\n/* eslint-disable @typescript-eslint/no-var-requires */\nimport { actor, Actor } from \"@icpswap/actor\";\nimport { network, NETWORK, host } from \"./server\";\n\nlet CanisterIdsJson: { [key: string]: { [key1: string]: string } } = {};\n\ntry {\n const canister_ids = require(\"../canister_ids.json\");\n const temp_canister_ids = require(\"../temp_canister_ids.json\");\n\n CanisterIdsJson = {\n ...canister_ids,\n ...temp_canister_ids,\n };\n} catch (error) {\n console.error(error);\n}\n\nconst canisterIds: { [key: string]: string } = {};\nObject.keys(CanisterIdsJson).forEach((canister) => {\n canisterIds[canister] = CanisterIdsJson[canister][network];\n});\n\nexport const getCanisterId = (canisterName: string): string => {\n return canisterIds[canisterName];\n};\n\nexport const CANISTER_NAMES = {\n TOKEN_CANISTER_CONTROLLER: \"TokenCanisterController\",\n TOKEN_SERVICE: \"token\",\n SWAP_POSITION_MANAGER: \"SwapPositionManager\",\n WICP: network === NETWORK.IC ? \"wicp\" : \"WICP_T\",\n FILE: \"FileAssets\",\n NFTCanisterController: \"V3NFTCanisterController\",\n SwapNFTCanister: \"V3SwapNFTCanister\",\n V3NFTCanister: \"NFTDynamicCanister\",\n V3TradeStat: \"V3TradeStat\",\n NFTTrade: \"V3TradeCanister\",\n FileCanister: \"FileCanister\",\n V1StakingController: \"SwapStakerController\",\n SingleSmartChef: \"SingleSmartChef\",\n SwapStaker: \"SwapStaker\",\n VOTE: \"Vote\",\n FileActor: \"File\",\n SwapRecord: \"BaseDataStructure\",\n SwapGraphPool: \"Pools\",\n TokenList: \"TokenList\",\n\n V3SwapFactory: \"SwapFactory\",\n V3SwapPool: \"SwapPool\",\n V3SwapNFT: \"SwapNFT\",\n PassCodeManager: \"PassCodeManager\",\n\n ClaimStorage: \"ClaimStorage\",\n\n VotingFileCanister: \"VotingFileCanister\",\n FarmController: \"FarmController\",\n StakingTokenController: \"StakingTokenController\",\n StakeIndex: \"StakeIndex\",\n\n NodeIndex: \"node_index\",\n GlobalIndex: \"global_index\",\n};\n\nexport const fileCanisterId = getCanisterId(CANISTER_NAMES.FILE);\nexport const WICPCanisterId = getCanisterId(CANISTER_NAMES.WICP);\nexport const swapPositionManagerCanisterId = getCanisterId(CANISTER_NAMES.SWAP_POSITION_MANAGER);\nexport const SwapNFTCanisterId = getCanisterId(CANISTER_NAMES.SwapNFTCanister);\nexport const NFTCanisterController = getCanisterId(CANISTER_NAMES.NFTCanisterController);\nexport const FileCanisterId = getCanisterId(CANISTER_NAMES.FileActor);\nexport const ClaimStorageId = getCanisterId(CANISTER_NAMES.ClaimStorage);\nexport const NFTTradeTokenCanisterId = WICPCanisterId;\nexport const V3SwapNFTCanisterId = getCanisterId(CANISTER_NAMES.V3SwapNFT);\nexport const VotingFileCanisterId = getCanisterId(CANISTER_NAMES.VotingFileCanister);\nexport const FarmControllerId = getCanisterId(CANISTER_NAMES.FarmController);\nexport const NodeIndexId = getCanisterId(CANISTER_NAMES.NodeIndex);\nexport const GlobalId = getCanisterId(CANISTER_NAMES.GlobalIndex);\nexport const PassCodeManagerId = getCanisterId(CANISTER_NAMES.PassCodeManager);\n\nActor.setActorCanisterIds(canisterIds);\nactor.setHost(host);\n\nexport const ALL_CANISTER_IDS = [...Object.values(canisterIds)];\n\nexport { canisterIds };\n","export const ckBTC_ID = \"mxzaz-hqaaa-aaaar-qaada-cai\";\n\nexport const ckBTC_MINTER_ID = \"mqygn-kiaaa-aaaar-qaadq-cai\";\n\nexport const ckBTC_DASHBOARD = \"https://dashboard.internetcomputer.org/bitcoin\";\n\nexport const DISSOLVE_FEE = \"0.0000001\";\n","import { ChainId } from \"@icpswap/constants\";\nimport { chain, EXPLORER_TX_LINKS, EXPLORER_BLOCK_LINKS, EXPLORER_MAPS } from \"constants/web3\";\nimport { ckETH as ckETHToken, ckSepoliaETH } from \"@icpswap/tokens\";\n\nconst API_LINKS = {\n [ChainId.MAINNET]: \"https://api.etherscan.io/api\",\n [ChainId.SEPOLIA]: \"https://api-sepolia.etherscan.io/api\",\n};\n\nconst LEDGER_ID = {\n [ChainId.MAINNET]: \"ss2fx-dyaaa-aaaar-qacoq-cai\",\n [ChainId.SEPOLIA]: \"apia6-jaaaa-aaaar-qabma-cai\",\n};\n\nconst MINTER_ID = {\n [ChainId.MAINNET]: \"sv3dd-oaaaa-aaaar-qacoa-cai\",\n [ChainId.SEPOLIA]: \"jzenf-aiaaa-aaaar-qaa7q-cai\",\n};\n\nconst DASHBOARD = {\n [ChainId.MAINNET]: `https://dashboard.internetcomputer.org/ethereum`,\n [ChainId.SEPOLIA]: `https://${MINTER_ID[ChainId.SEPOLIA]}.raw.icp0.io/dashboard`,\n};\n\nconst CANISTER = {\n [ChainId.MAINNET]: `https://dashboard.internetcomputer.org/canister/${LEDGER_ID[chain]}`,\n [ChainId.SEPOLIA]: `https://dashboard.internetcomputer.org/canister/${LEDGER_ID[chain]}`,\n};\n\nconst ETH_MINT_CONTRACTS = {\n [ChainId.MAINNET]: `0x7574eb42ca208a4f6960eccafdf186d627dcc175`,\n [ChainId.SEPOLIA]: `0xb44B5e756A894775FC32EDdf3314Bb1B1944dC34`,\n};\n\nexport const ckETH_LEDGER_ID = LEDGER_ID[chain];\n\nexport const ckETH_MINTER_ID = MINTER_ID[chain];\n\nexport const ckETH_DASHBOARD = DASHBOARD[chain];\n\nexport const ckETH_CANISTER = CANISTER[chain];\n\nexport const ckETH_MINTER_CONTRACT = ETH_MINT_CONTRACTS[chain];\n\nexport const API_LINK = API_LINKS[chain];\n\nexport const EXPLORER_TX_LINK = EXPLORER_TX_LINKS[chain];\n\nexport const EXPLORER_BLOCK_LINK = EXPLORER_BLOCK_LINKS[chain];\n\nexport const EXPLORER_ADDRESS_LINK = EXPLORER_MAPS[chain];\n\nexport const EXPLORER_CONTRACT_LINK = `${EXPLORER_MAPS[chain]}/${ckETH_MINTER_CONTRACT}`;\n\nexport const DISSOLVE_FEE = \"0.0000001\";\n\nexport const MIN_WITHDRAW_AMOUNT = 30000000000000000;\n\nexport const ckETH = chain === ChainId.MAINNET ? ckETHToken : ckSepoliaETH;\n","export const ICP_TRANSFER_TYPE_FORMAT: { [key: string]: string } = {\n TRANSACTION: \"transfer\",\n};\n\nexport const CYCLES_MINTING_CANISTER_ID = \"rkp4c-7iaaa-aaaaa-aaaca-cai\";\n\nexport { LEDGER_CANISTER_ID } from \"@icpswap/constants\";\n","export enum ResultStatus {\n ERROR = \"err\",\n OK = \"ok\",\n}\n\nexport type StatusResult = {\n readonly status: ResultStatus;\n readonly data: T | string;\n};\n\nexport type StatusResult1 = {\n readonly status: ResultStatus;\n readonly data?: T;\n readonly message: string;\n};\n\nexport type CallResult = {\n readonly result: ApiResult;\n readonly loading: boolean;\n};\n\nexport type ApiResult = null | undefined | T;\n\nexport type PaginationResult = {\n totalElements: number;\n offset: number;\n limit: number;\n content: T[];\n};\n\nexport type DynamicObject = {\n [key: string]: any;\n};\n","import { network, NETWORK } from \"./server\";\n\nexport const ASSETS_DECIMALS = 2;\nexport const ICP_BALANCE_DECIMALS = 4;\nexport const ICS_BALANCE_DECIMALS = 2;\nexport const MAX_TOKEN_MINT_NAME_LENGTH = 30;\nexport const MAX_TOKEN_MINT_SYMBOL_LENGTH = 15;\n\nexport const NONE_PRICE_SYMBOL = \"--\";\nexport const DEFAULT_PERCENT_SYMBOL = \"0.00%\";\nexport const TOKEN_AMOUNT_DISPLAY_DECIMALS = 8;\nexport const NONE_TOKEN_SYMBOL = \"--\";\nexport const EMPTY_CONTENT_SYMBOL = \"--\";\n\nexport const REACT_GA_TRACKING_ID = \"UA-200662567-2\";\n\nexport const MINT_TOKEN_CYCLES = 1860000000000;\n\nexport const MINT_NFT_PAY_MOUNT = 10;\nexport const NFT_UPLOAD_FILES = [\n \"image\",\n \"video\",\n \"audio\",\n \"txt\",\n \"js\",\n \"ts\",\n \"pdf\",\n \"json\",\n \"ppt\",\n \"pptx\",\n \"xls\",\n \"xlsx\",\n \"docx\",\n \"doc\",\n];\n\nexport const CurrencyAmountFormatDecimals = (decimals: number | bigint | undefined) => {\n if (!decimals) return TOKEN_AMOUNT_DISPLAY_DECIMALS;\n if (Number(decimals) > TOKEN_AMOUNT_DISPLAY_DECIMALS) return TOKEN_AMOUNT_DISPLAY_DECIMALS;\n return Number(decimals);\n};\n\nexport const INFO_URL_MAP = {\n [NETWORK.IC]: \"https://info.icpswap.com\",\n [NETWORK.LOCAL]: \"https://66jms-2yaaa-aaaaa-aabha-cai.dtest.app\",\n};\n\nexport const INFO_URL = INFO_URL_MAP[network];\n\nexport const APP_URL = \"https://app.icpswap.com\";\n\nexport const DAYJS_FORMAT = \"YYYY-MM-DD HH:mm:ss\";\n\nexport const V2SwapLink = \"https://app.icpswap.com\";\n\nexport const V3SwapLink = \"https://app.icpswap.com\";\n\nexport const AnonymousPrincipal = \"2vxsx-fae\";\n\nexport const MaxInt64 = (2 ** 64 - 1).toString();\nexport const APPROVE_MAX_NUMBER = Number.MAX_VALUE;\n\nexport const SAFE_INTEGER_LENGTH = 12;\nexport const SAFE_DECIMALS_LENGTH = 8;\nexport const MAX_SWAP_INPUT_LENGTH = 25;\n\nexport * from \"./canister\";\nexport * from \"./server\";\nexport * from \"./tokens\";\nexport * from \"./swap\";\nexport * from \"./nft\";\nexport * from \"./types\";\nexport * from \"./icp\";\nexport * from \"./wallet\";\n","export const SUPPORTED_LOCALES = [\n // order as they appear in the language dropdown\n \"en-US\",\n \"zh-CN\",\n \"zh-TW\",\n \"vi-VN\",\n \"ja-JP\",\n \"ko-KR\",\n \"it-IT\",\n \"es-ES\",\n] as const;\n\nexport type SupportedLocale = (typeof SUPPORTED_LOCALES)[number];\n\nexport const DEFAULT_LOCALE: SupportedLocale = \"en-US\";\n\nexport const LOCALE_LABEL: { [locale in SupportedLocale]: string } = {\n \"en-US\": \"English\",\n \"ja-JP\": \"日本語\",\n \"ko-KR\": \"한국어\",\n \"vi-VN\": \"Tiếng Việt\",\n \"zh-CN\": \"简体中文\",\n \"zh-TW\": \"繁体中文\",\n \"it-IT\": \"Italiano\",\n \"es-ES\": \"Español\",\n // 'af-ZA': 'Afrikaans',\n // 'ar-SA': 'العربية',\n // 'ca-ES': 'Català',\n // 'cs-CZ': 'čeština',\n // 'da-DK': 'dansk',\n // 'de-DE': 'Deutsch',\n // 'el-GR': 'ελληνικά',\n // 'en-US': 'English',\n\n // 'fi-FI': 'Suomalainen',\n // 'fr-FR': 'français',\n // 'he-IL': 'עִברִית',\n // 'hu-HU': 'Magyar',\n // 'id-ID': 'bahasa Indonesia',\n // 'ko-KR': '한국어',\n // 'nl-NL': 'Nederlands',\n // 'no-NO': 'norsk',\n // 'pl-PL': 'Polskie',\n // 'pt-BR': 'português',\n // 'pt-PT': 'português',\n // 'ro-RO': 'Română',\n // 'ru-RU': 'русский',\n // 'sr-SP': 'Српски',\n // 'sv-SE': 'svenska',\n // 'tr-TR': 'Türkçe',\n // 'uk-UA': 'Український',\n};\n\nexport const getLocalLabel = (local: SupportedLocale) => {\n return LOCALE_LABEL[local];\n};\n","import { Percent, BigintIsh } from \"@icpswap/swap-sdk\";\n\nexport enum Bound {\n LOWER = \"LOWER\",\n UPPER = \"UPPER\",\n}\n\nexport enum FIELD {\n CURRENCY_A = \"CURRENCY_A\",\n CURRENCY_B = \"CURRENCY_B\",\n}\n\nexport const DEFAULT_FEE = 3000;\n\nexport enum FeeAmount {\n LOW = 500,\n MEDIUM = 3000,\n HIGH = 10000,\n}\n\nexport const TICK_SPACING = {\n [FeeAmount.LOW]: 10,\n [FeeAmount.MEDIUM]: 60,\n [FeeAmount.HIGH]: 200,\n};\n\nexport enum BURN_FIELD {\n LIQUIDITY_PERCENT = \"LIQUIDITY_PERCENT\",\n LIQUIDITY = \"LIQUIDITY\",\n CURRENCY_A = \"CURRENCY_A\",\n CURRENCY_B = \"CURRENCY_B\",\n}\n\nexport const DEFAULT_SWAP_SLIPPAGE = 500;\n\nexport const DEFAULT_MINT_SLIPPAGE = 500;\n\nexport const DEFAULT_BURN_SLIPPAGE = 5000;\n\nexport const SLIPPAGE_TOLERANCE: { id: string; value: number }[] = [\n { id: \"swap\", value: 100 },\n { id: \"burn\", value: 500 },\n { id: \"mint\", value: 5000 },\n];\n\nexport const MAX_SLIPPAGE_TOLERANCE = 50000;\n\nexport const WARNING_SLIPPAGE_TOLERANCE = 20000;\n\nexport const getDefaultSlippageTolerance = (type: string) =>\n SLIPPAGE_TOLERANCE.filter((item) => item.id === type)[0]?.value || 500;\n\nexport const slippageToPercent = (slippage: BigintIsh) => new Percent(slippage, 1000 * 100);\n\nexport const MAX_TRANSACTIONS_DEADLINE = 180;\nexport const DEFAULT_TRANSACTIONS_DEADLINE = 30;\n\nexport const DEFAULT_MULTIPLE_APPROVE = 5;\n\nexport const ZOOM_LEVEL_INITIAL_MIN_MAX = {\n [FeeAmount.LOW]: {\n min: 0.999,\n max: 1.001,\n },\n [FeeAmount.MEDIUM]: {\n min: 0.5,\n max: 2,\n },\n [FeeAmount.HIGH]: {\n min: 0.5,\n max: 2,\n },\n};\n\nexport const ADD_LIQUIDITY_REFRESH_KEY = \"AddLiquidity\";\nexport const INCREASE_LIQUIDITY_REFRESH_KEY = \"IncreaseLiquidity\";\n","import { V3SwapNFTCanisterId } from \"constants/canister\";\nimport V2Ids from \"constants/swap-v2-ids.json\";\n\nexport const OFFICIAL_CANISTER_IDS = [\n \"e7xmv-vyaaa-aaaag-qahha-cai\",\n \"ewuhj-dqaaa-aaaag-qahgq-cai\",\n \"brx5n-xqaaa-aaaan-qanqa-cai\",\n V2Ids.V3SwapNFTCanister.ic,\n V3SwapNFTCanisterId,\n];\n\n// for controller get canister's image\nexport const OLD_CANISTER_IDS = [\n \"ewuhj-dqaaa-aaaag-qahgq-cai\",\n \"e7xmv-vyaaa-aaaag-qahha-cai\",\n \"ey3ct-4aaaa-aaaak-aaueq-cai\",\n \"wpojy-qiaaa-aaaak-acfva-cai\",\n \"brx5n-xqaaa-aaaan-qanqa-cai\",\n V2Ids.V3SwapNFTCanister.ic,\n V3SwapNFTCanisterId,\n];\n\nexport type SOCIAL_LINK_TYPE = {\n label: string;\n id: string;\n value: string;\n};\n\nexport const SOCIAL_LINKS: SOCIAL_LINK_TYPE[] = [\n {\n label: \"Website\",\n id: \"Website\",\n value: \"Website\",\n },\n {\n label: \"Github\",\n id: \"Github\",\n value: \"Github\",\n },\n {\n label: \"Discord\",\n id: \"Discord\",\n value: \"Discord\",\n },\n {\n label: \"Twitter\",\n id: \"Twitter\",\n value: \"Twitter\",\n },\n {\n label: \"Telegram\",\n id: \"Telegram\",\n value: \"Telegram\",\n },\n {\n label: \"Instagram\",\n id: \"Instagram\",\n value: \"Instagram\",\n },\n {\n label: \"Medium\",\n id: \"Medium\",\n value: \"Medium\",\n },\n {\n label: \"DSCVR\",\n id: \"Dscvr\",\n value: \"Dscvr\",\n },\n {\n label: \"Distrikt\",\n id: \"Distrikt\",\n value: \"Distrikt\",\n },\n\n {\n label: \"Other\",\n id: \"Other\",\n value: \"Other\",\n },\n];\n\nexport const NFTTradeFee = 0.01;\n\nexport const MAX_NFT_MINT_SUPPLY = 10000;\n\nexport enum NFT_STANDARDS {\n ICPSwap = \"ICPSwap\",\n}\n","export enum NETWORK {\n IC = \"ic\",\n LOCAL = \"local\",\n}\n\nexport const hostMap = {\n [NETWORK.LOCAL]: `http://localhost:8000`,\n [NETWORK.IC]: \"https://icp0.io\",\n};\n\nexport const network = process.env.REACT_APP_IC_NETWORK as NETWORK;\n\nexport const isIC: boolean = network === NETWORK.IC;\nexport const isLocal: boolean = network === NETWORK.LOCAL;\n\nexport const host = hostMap[network];\n\nexport const ICHost = hostMap[NETWORK.IC];\n\nexport const localhost = hostMap[NETWORK.LOCAL];\n","import { ICP, WRAPPED_ICP, ICS } from \"@icpswap/tokens\";\n\nimport { isIC } from \"./server\";\n\nexport enum SWAP_FIELD {\n INPUT = \"INPUT\",\n OUTPUT = \"OUTPUT\",\n}\n\nexport const DEFAULT_SWAP_INPUT_ID = isIC ? ICP.address : WRAPPED_ICP.address;\nexport const DEFAULT_SWAP_OUTPUT_ID = isIC ? ICS.address : ICS.address;\n\nexport const SWAP_REFRESH_KEY = \"swap\";\n\nexport * from \"./mint\";\n","var _g, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgCkEth(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 74,\n height: 74,\n viewBox: \"0 0 74 74\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_35670_14069)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M74 37C74 16.5655 57.4345 0 37 0C16.5655 0 0 16.5655 0 37C0 57.4345 16.5655 74 37 74C57.4345 74 74 57.4345 74 37Z\",\n fill: \"#3B00B9\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8.30257 39.1309C9.34176 53.323 20.6749 64.6562 34.8671 65.6952V68.9006C18.9084 67.8499 6.1481 55.0894 5.09766 39.1309H8.30257Z\",\n fill: \"url(#paint0_linear_35670_14069)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M34.8515 8.28889C20.6593 9.32804 9.32608 20.6612 8.28694 34.8535H5.08203C6.13243 18.8947 18.8928 6.13438 34.8515 5.08398V8.28889Z\",\n fill: \"#29ABE2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M65.6972 34.8378C64.6582 20.6456 53.325 9.31237 39.1328 8.27323V5.06836C55.0914 6.11876 67.8519 18.8791 68.902 34.8378H65.6972Z\",\n fill: \"url(#paint1_linear_35670_14069)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M39.1484 65.6798C53.3405 64.6407 64.6737 53.3076 65.7132 39.1152H68.918C67.8673 55.0739 55.1074 67.8344 39.1484 68.8846V65.6798Z\",\n fill: \"#29ABE2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.0977 15.7129V31.2639L50.2416 37.1372L37.0977 15.7129Z\",\n fill: \"white\",\n fillOpacity: 0.6\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.0949 15.7129L23.9492 37.1372L37.0949 31.2639V15.7129Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.0977 47.214V57.7807L50.2503 39.584L37.0977 47.214Z\",\n fill: \"white\",\n fillOpacity: 0.6\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.0949 57.7807V47.2123L23.9492 39.584L37.0949 57.7807Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.0977 44.7691L50.2416 37.1373L37.0977 31.2676V44.7691Z\",\n fill: \"white\",\n fillOpacity: 0.2\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.9492 37.1373L37.0949 44.7691V31.2676L23.9492 37.1373Z\",\n fill: \"white\",\n fillOpacity: 0.6\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_35670_14069\",\n x1: 27.1016,\n y1: 62.2355,\n x2: 7.11274,\n y2: 45.4023,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.21,\n stopColor: \"#ED1E79\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#522785\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint1_linear_35670_14069\",\n x1: 61.1528,\n y1: 28.1818,\n x2: 41.1642,\n y2: 11.3489,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.21,\n stopColor: \"#F15A24\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.6841,\n stopColor: \"#FBB03B\"\n })), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_35670_14069\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 74,\n height: 74,\n fill: \"white\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgCkEth);\nexport default __webpack_public_path__ + \"static/media/ckETH.e721cdee9cddc7b8d2711283e93773d5.svg\";\nexport { ForwardRef as ReactComponent };","var _rect, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgCkBtc(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 74,\n height: 74,\n viewBox: \"0 0 74 74\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 74,\n height: 74,\n fill: \"url(#pattern0)\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"pattern\", {\n id: \"pattern0\",\n patternContentUnits: \"objectBoundingBox\",\n width: 1,\n height: 1\n }, /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#image0_35662_13764\",\n transform: \"scale(0.00194932)\"\n })), /*#__PURE__*/React.createElement(\"image\", {\n id: \"image0_35662_13764\",\n width: 513,\n height: 513,\n xlinkHref: \"data:image/png;base64,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\"\n }))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgCkBtc);\nexport default __webpack_public_path__ + \"static/media/ckBTC.1c23245cea4cb444cde1b8ae322dddd6.svg\";\nexport { ForwardRef as ReactComponent };","import { Token } from \"@icpswap/swap-sdk\";\nimport { WICPCanisterId } from \"constants/canister\";\nimport { TokenInfo, TokenMetadata } from \"types/token\";\nimport { Principal } from \"@dfinity/principal\";\nimport { TOKEN_STANDARD } from \"@icpswap/token-adapter\";\nimport { ckETH_LEDGER_ID } from \"./ckETH\";\nimport { ckBTC_ID } from \"./ckBTC\";\nimport ckETHSVG from \"../assets/images/token/ckETH.svg\";\nimport ckBTCSVG from \"../assets/images/token/ckBTC.svg\";\n\nexport { TOKEN_STANDARD };\n\nexport const XTCCanisterId = \"aanaa-xaaaa-aaaah-aaeiq-cai\";\n\nexport const WRAPPED_ICP_METADATA: TokenMetadata = {\n standardType: TOKEN_STANDARD.EXT,\n metadata: [],\n name: \"Wrapped ICP\",\n decimals: 8,\n symbol: \"WICP\",\n canisterId: Principal.fromText(WICPCanisterId ?? \"aaaaa-aa\"),\n};\n\nexport const WRAPPED_ICP_TOKEN_INFO: TokenInfo = {\n ...WRAPPED_ICP_METADATA,\n logo: `/images/tokens/${WRAPPED_ICP_METADATA.canisterId.toString()}.jpeg`,\n transFee: BigInt(0),\n canisterId: WRAPPED_ICP_METADATA.canisterId.toString(),\n totalSupply: BigInt(0),\n};\n\nexport const WRAPPED_ICP = new Token({\n address: WRAPPED_ICP_TOKEN_INFO.canisterId,\n decimals: WRAPPED_ICP_TOKEN_INFO.decimals,\n symbol: WRAPPED_ICP_TOKEN_INFO.symbol,\n name: WRAPPED_ICP_TOKEN_INFO.name,\n logo: WRAPPED_ICP_TOKEN_INFO.logo,\n standard: TOKEN_STANDARD.EXT,\n transFee: Number(WRAPPED_ICP_TOKEN_INFO.transFee),\n});\n\nexport const XTC = new Token({\n address: XTCCanisterId,\n decimals: 12,\n symbol: \"XTC\",\n name: \"Cycles\",\n logo: \"\",\n standard: TOKEN_STANDARD.DIP20_XTC,\n transFee: 0,\n});\n\nexport const SNS1 = new Token({\n address: \"zfcdd-tqaaa-aaaaq-aaaga-cai\",\n decimals: 8,\n symbol: \"SNS1\",\n name: \"SNS1\",\n logo: \"\",\n standard: TOKEN_STANDARD.ICRC1,\n transFee: 0,\n});\n\nexport const CHAT = new Token({\n address: \"2ouva-viaaa-aaaaq-aaamq-cai\",\n decimals: 8,\n symbol: \"CHAT\",\n name: \"CHAT\",\n logo: \"\",\n standard: TOKEN_STANDARD.ICRC1,\n transFee: 0,\n});\n\nexport const CAT = new Token({\n address: \"uf2wh-taaaa-aaaaq-aabna-cai\",\n decimals: 8,\n symbol: \"CAT\",\n name: \"CatalyzeDAO\",\n logo: \"\",\n standard: TOKEN_STANDARD.ICRC1,\n transFee: 0,\n});\n\nexport const MOD = new Token({\n address: \"xsi2v-cyaaa-aaaaq-aabfq-cai\",\n decimals: 8,\n symbol: \"MOD\",\n name: \"Modclub\",\n logo: \"\",\n standard: TOKEN_STANDARD.ICRC1,\n transFee: 10000,\n});\n\nexport const BoomDAO = new Token({\n address: \"vtrom-gqaaa-aaaaq-aabia-cai\",\n decimals: 8,\n symbol: \"BOOM\",\n name: \"BoomDAO\",\n logo: \"\",\n standard: TOKEN_STANDARD.ICRC1,\n transFee: 100000,\n});\n\nexport const ICX = new Token({\n address: \"rffwt-piaaa-aaaaq-aabqq-cai\",\n decimals: 8,\n symbol: \"ICX\",\n name: \"IC-X\",\n logo: \"\",\n standard: TOKEN_STANDARD.ICRC1,\n transFee: 100000,\n});\n\nexport const NUA = new Token({\n address: \"rxdbk-dyaaa-aaaaq-aabtq-cai\",\n decimals: 8,\n symbol: \"NUA\",\n name: \"Nuance\",\n logo: \"\",\n standard: TOKEN_STANDARD.ICRC1,\n transFee: 100000,\n});\n\nexport const SONIC = new Token({\n address: \"qbizb-wiaaa-aaaaq-aabwq-cai\",\n decimals: 8,\n symbol: \"SONIC\",\n name: \"Sonic\",\n logo: \"\",\n standard: TOKEN_STANDARD.ICRC1,\n transFee: 100000,\n});\n\nexport const ckBTC = new Token({\n address: ckBTC_ID,\n decimals: 8,\n symbol: \"ckBTC\",\n name: \"ckBTC\",\n logo: ckBTCSVG,\n standard: TOKEN_STANDARD.ICRC2,\n transFee: 10,\n});\n\nexport const ckETH = new Token({\n address: ckETH_LEDGER_ID,\n decimals: 18,\n symbol: \"ckETH\",\n name: \"ckETH\",\n logo: ckETHSVG,\n standard: TOKEN_STANDARD.ICRC2,\n transFee: 2_000_000_000_000,\n});\n\nexport const TRAX = new Token({\n address: \"emww2-4yaaa-aaaaq-aacbq-cai\",\n decimals: 8,\n symbol: \"TRAX\",\n name: \"TRAX\",\n logo: ckETHSVG,\n standard: TOKEN_STANDARD.ICRC1,\n transFee: 100000,\n});\n\nexport const NTN = new Token({\n address: \"f54if-eqaaa-aaaaq-aacea-cai\",\n decimals: 8,\n symbol: \"NTN\",\n name: \"Neutrinite\",\n logo: \"\",\n standard: TOKEN_STANDARD.ICRC1,\n transFee: 10_000,\n});\n\nexport const GLDGov = new Token({\n address: \"tyyy3-4aaaa-aaaaq-aab7a-cai\",\n decimals: 8,\n symbol: \"GLDGov\",\n name: \"Gold Governance Token\",\n logo: \"\",\n standard: TOKEN_STANDARD.ICRC1,\n transFee: 100_000,\n});\n","import { ICP, WRAPPED_ICP, ICS, ckUSDC, ckBTC, ckETH } from \"@icpswap/tokens\";\n\nexport { Connector } from \"@icpswap/actor\";\n\nexport const DISPLAY_IN_WALLET_FOREVER = [\n ICP.address,\n WRAPPED_ICP.address,\n ICS.address,\n ckUSDC.address,\n ckBTC.address,\n ckETH.address,\n];\n\nexport const NO_HIDDEN_TOKENS = [ICP.address, WRAPPED_ICP.address];\n\nexport const DEFAULT_DISPLAYED_TOKENS = [ICP, ICS, ckUSDC, ckBTC, ckETH];\n","import { ChainId } from \"@icpswap/constants\";\n\nexport const chain: ChainId = ChainId.MAINNET;\n\nexport const ETH_MINT_CHAIN = 1;\n\nexport const DEFAULT_CHAIN_ID = 1;\n\nexport const SUPPORTED_CHAINS = [ChainId.MAINNET, ChainId.SEPOLIA];\n\nexport const chainIdToNetwork: { [network: number]: string } = {\n 1: \"Ethereum mainnet\",\n 3: \"ropsten\",\n 4: \"rinkeby\",\n 42: \"kovan\",\n 97: \"chapel\", // BSC Testnet\n 137: \"polygon\", // Polygon Mainnet\n 80001: \"mumbai\", // Polygon Testnet\n 43114: \"avalanche\", // Avalanche Mainnet\n 43113: \"fuji\", // Avalanche Testnet\n 11155111: \"sepolia\", // testnet\n};\n\nexport const EXPLORER_MAPS = {\n [ChainId.MAINNET]: `https://etherscan.io/address`,\n [ChainId.SEPOLIA]: `https://sepolia.etherscan.io/address`,\n};\n\nexport const getExplorerAddress = (address: string) => {\n return `${EXPLORER_MAPS[chain]}/${address}`;\n};\n\nexport const getMinterDashboard = (minterId: string) => {\n return `https://${minterId}.raw.icp0.io/dashboard`;\n};\n\nexport const getIcDashboard = (tokenId: string) => {\n return `https://dashboard.internetcomputer.org/ethereum/${tokenId}`;\n};\n\nexport const EXPLORER_TX_LINKS = {\n [ChainId.MAINNET]: `https://etherscan.io/tx`,\n [ChainId.SEPOLIA]: `https://sepolia.etherscan.io/tx`,\n};\n\nexport const EXPLORER_BLOCK_LINKS = {\n [ChainId.MAINNET]: `https://etherscan.io/block`,\n [ChainId.SEPOLIA]: `https://sepolia.etherscan.io/block`,\n};\n","import type { FarmState } from \"@icpswap/types\";\n\nexport const COLORS = {\n NOT_START: \"#5669DC\",\n LIVE: \"#54C081\",\n FINISHED: \"#8492C4\",\n CLOSED: \"#8492C4\",\n DEFAULT: \"#8492C4\",\n};\n\nexport function useStateColors(state: FarmState | undefined): string {\n return COLORS[state ?? \"DEFAULT\"];\n}\n","import { useEffect, useMemo, useState } from \"react\";\nimport { FilterState } from \"types/staking-token\";\nimport { getStakePools, getUserStakePools, getStakingPoolFromController } from \"@icpswap/hooks\";\nimport { StakingPoolControllerPoolInfo } from \"@icpswap/types\";\nimport { useAccountPrincipal } from \"store/auth/hooks\";\nimport { isAvailablePageArgs } from \"@icpswap/utils\";\nimport { getStateValueByFilterState } from \"utils/stake/index\";\n\nexport interface UsePoolsArgs {\n filterState: FilterState;\n offset: number;\n limit: number;\n stakeTokenId: string | undefined | null;\n rewardTokenId: string | undefined | null;\n}\n\nexport function usePools({ filterState, stakeTokenId, rewardTokenId, offset, limit }: UsePoolsArgs) {\n const principal = useAccountPrincipal();\n const [loading, setLoading] = useState(false);\n const [pools, setPools] = useState>(null);\n\n useEffect(() => {\n async function call() {\n if (!isAvailablePageArgs(offset, limit)) return;\n\n const state = getStateValueByFilterState(filterState);\n setPools(null);\n\n if (filterState === FilterState.YOUR) {\n if (!principal) return;\n\n setLoading(true);\n\n const poolsResult = await getUserStakePools(principal.toString(), offset, limit, stakeTokenId, rewardTokenId);\n const pools = poolsResult?.content ?? [];\n\n const infos = (\n await Promise.all(\n pools.map(async (pool) => {\n return await getStakingPoolFromController(pool.stakingPool.toString());\n }),\n )\n ).flat();\n\n setPools(infos);\n } else {\n setLoading(true);\n const result = await getStakePools({ state, offset, limit, stakeTokenId, rewardTokenId });\n const pools = result?.content;\n setPools(pools);\n }\n\n setLoading(false);\n }\n\n call();\n }, [filterState, principal, offset, limit, stakeTokenId, rewardTokenId]);\n\n return useMemo(() => ({ loading, result: pools }), [loading, pools]);\n}\n","import { useMemo, useState, useEffect } from \"react\";\nimport { useAccountPrincipal } from \"store/auth/hooks\";\nimport { Principal } from \"@dfinity/principal\";\nimport { getTokenBalance } from \"hooks/token/useTokenBalance\";\nimport { SubAccount } from \"@dfinity/ledger-icp\";\n\nexport function useUserUnusedTokenByPool(\n poolId: string | undefined,\n stakingTokenId: string | undefined,\n reload?: boolean | number,\n) {\n const [loading, setLoading] = useState(true);\n const [data, setData] = useState<{ balance: bigint | undefined; poolId: string; stakingTokenId: string } | null>(\n null,\n );\n const principal = useAccountPrincipal();\n\n useEffect(() => {\n const call = async () => {\n if (poolId && principal && stakingTokenId) {\n const result = await getTokenBalance(\n stakingTokenId,\n Principal.fromText(poolId),\n SubAccount.fromPrincipal(principal).toUint8Array(),\n );\n\n setData({\n balance: result.data,\n poolId,\n stakingTokenId,\n });\n setLoading(false);\n }\n };\n\n call();\n }, [poolId, principal, reload, stakingTokenId]);\n\n return useMemo(() => {\n return {\n loading,\n result: data,\n };\n }, [loading, data]);\n}\n","import { useCallback, useMemo, useState, useEffect } from \"react\";\nimport {\n getStakingPools,\n usePaginationAllData,\n getStakingTokenUserInfo,\n getStakingTokenPool,\n getPaginationAllData,\n useInterval,\n} from \"@icpswap/hooks\";\nimport { ResultStatus, type StakingPoolUserInfo, StakingPoolInfo } from \"@icpswap/types\";\nimport { useAccountPrincipal } from \"store/auth/hooks\";\nimport { UnusedBalance } from \"types/staking-token\";\nimport { Principal } from \"@dfinity/principal\";\nimport { getTokenBalance } from \"hooks/token/useTokenBalance\";\nimport { TOKEN_STANDARD } from \"@icpswap/token-adapter\";\nimport { SubAccount } from \"@dfinity/ledger-icp\";\nimport { useIntervalFetch } from \"hooks/useIntervalFetch\";\n\nexport async function getAllTokenPools() {\n const call = async (offset: number, limit: number) => {\n return await getStakingPools(undefined, offset, limit);\n };\n\n return getPaginationAllData(call, 500);\n}\n\nexport function useStakingTokenAllPools() {\n const call = useCallback(async (offset: number, limit: number) => {\n return await getStakingPools(undefined, offset, limit);\n }, []);\n\n return usePaginationAllData(call, 500);\n}\n\nexport function useUserUnusedTokens(reload?: boolean | number) {\n const [loading, setLoading] = useState(true);\n const [balances, setBalances] = useState([]);\n const principal = useAccountPrincipal();\n\n const { result, loading: poolsLoading } = useStakingTokenAllPools();\n\n // filter standard dip20, because dip20 use transferFrom, no unused tokens\n const pools = useMemo(() => {\n return result.filter((ele) => ele.stakingToken.standard !== TOKEN_STANDARD.DIP20);\n }, [result]);\n\n useEffect(() => {\n const call = async () => {\n if (pools && principal) {\n if (pools.length === 0) {\n setLoading(false);\n } else {\n const calls = pools.map(async (ele) => {\n return await getTokenBalance(\n ele.stakingToken.address,\n Principal.fromText(ele.canisterId.toString()),\n SubAccount.fromPrincipal(principal).toUint8Array(),\n );\n });\n\n const _result = await Promise.all(calls);\n\n const data = _result\n .map((ele, index) => {\n if (ele.status === ResultStatus.OK && ele.data) {\n const pool = pools[index];\n\n return {\n balance: ele.data,\n poolId: pool.canisterId.toString(),\n rewardTokenId: pool.rewardToken.address,\n ...pool,\n } as UnusedBalance;\n }\n return null;\n })\n .filter((ele) => !!ele) as UnusedBalance[];\n\n setBalances(data);\n\n setLoading(false);\n }\n }\n };\n\n call();\n }, [pools, principal, reload]);\n\n return useMemo(() => {\n return {\n loading: poolsLoading || loading,\n result: balances,\n };\n }, [loading, poolsLoading, balances]);\n}\n\nexport function useIntervalUserPoolInfo(\n poolId: string | undefined,\n principal: Principal | undefined,\n refresh?: number | boolean,\n) {\n const callback = useCallback(async () => {\n if (!poolId || !principal) return;\n return await getStakingTokenUserInfo(poolId, principal);\n }, [poolId, principal]);\n\n return useIntervalFetch(callback, refresh);\n}\n\nexport function useIntervalStakingPoolInfo(poolId: string | undefined): [StakingPoolInfo | undefined, () => void] {\n const [forceUpdate, setForceUpdate] = useState(0);\n\n const update = useCallback(() => {\n setForceUpdate((prevState) => prevState + 1);\n }, []);\n\n const callback = useCallback(async () => {\n if (!poolId) return;\n return await getStakingTokenPool(poolId);\n }, [poolId]);\n\n const poolInfo = useInterval(callback, forceUpdate);\n\n return [poolInfo, update];\n}\n\nexport * from \"./useStateColors\";\nexport * from \"./usePools\";\nexport * from \"./useUnusedTokens\";\n","import { useCallback } from \"react\";\nimport { Token } from \"@icpswap/swap-sdk\";\nimport { useErrorTip, TIP_OPTIONS } from \"hooks/useTips\";\nimport { approve } from \"hooks/token/useApprove\";\nimport { useAccountPrincipal } from \"store/auth/hooks\";\nimport { useMultipleApproveManager } from \"store/swap/cache/hooks\";\nimport { allowance } from \"hooks/token/useAllowance\";\nimport { TOKEN_STANDARD } from \"@icpswap/token-adapter\";\n\nexport interface UseSwapApproveArgs {\n token: Token;\n amount: string;\n poolId: string;\n options?: TIP_OPTIONS;\n standard?: TOKEN_STANDARD;\n}\n\nexport function useSwapApprove() {\n const principal = useAccountPrincipal();\n const [openErrorTip] = useErrorTip();\n const { multipleApprove } = useMultipleApproveManager();\n\n return useCallback(\n async ({ token, amount, poolId, options, standard }: UseSwapApproveArgs) => {\n if (!principal) return false;\n\n const allowedBalance = await allowance({\n canisterId: token.address,\n owner: principal.toString(),\n spender: poolId,\n });\n\n const multipleApproveAmount = (BigInt(amount) * BigInt(multipleApprove)).toString();\n\n if (!allowedBalance || allowedBalance === BigInt(0) || BigInt(amount) > allowedBalance) {\n const { status, message } = await approve({\n canisterId: token.address,\n spender: poolId,\n value: multipleApproveAmount,\n account: principal,\n standard,\n });\n\n if (status === \"err\") {\n openErrorTip(`Failed to approve ${token.symbol}: ${message}`, options);\n return false;\n }\n\n return true;\n }\n\n return true;\n },\n [approve, principal, multipleApprove],\n );\n}\n","import { useMemo } from \"react\";\nimport type { PoolMetadata } from \"@icpswap/types\";\nimport { BigNumber } from \"@icpswap/utils\";\nimport { useInfoAllTokens } from \"@icpswap/hooks\";\nimport { useMultiplePositions, type PositionInfo } from \"hooks/swap/useMultiplePositions\";\n\nexport interface UseUserPositionsValuesArgs {\n positionInfos: PositionInfo[] | undefined;\n metadata: PoolMetadata | undefined;\n}\n\nexport function usePositionsValuesByInfos(args: UseUserPositionsValuesArgs[]) {\n const allTokenInfos = useInfoAllTokens();\n\n const positions = useMultiplePositions(args);\n\n return useMemo(() => {\n if (!allTokenInfos || !positions) return undefined;\n if (allTokenInfos.length === 0 || positions.length === 0) return undefined;\n\n let totalValue: BigNumber | undefined;\n\n positions.flat().forEach((position) => {\n if (position) {\n const token0Amount = position.amount0.toExact();\n const token1Amount = position.amount1.toExact();\n\n const token0Price = allTokenInfos.find((info) => info.address === position.pool.token0.address)?.priceUSD;\n const token1Price = allTokenInfos.find((info) => info.address === position.pool.token1.address)?.priceUSD;\n\n if (token0Price !== undefined && token1Price !== undefined) {\n totalValue = (totalValue ?? new BigNumber(0))\n .plus(new BigNumber(token0Amount).multipliedBy(token0Price))\n .plus(new BigNumber(token1Amount).multipliedBy(token1Price));\n }\n }\n });\n\n return totalValue?.toString();\n }, [JSON.stringify(positions), allTokenInfos]);\n}\n\nexport interface UseUserPositionsValueArgs {\n positionInfos: PositionInfo[] | undefined;\n metadata: PoolMetadata | undefined;\n}\n\nexport function usePositionsValueByInfos({ metadata, positionInfos }: UseUserPositionsValueArgs) {\n return usePositionsValuesByInfos([{ metadata, positionInfos }]);\n}\n","import { useMemo } from \"react\";\nimport { Position } from \"@icpswap/swap-sdk\";\nimport { usePools, type PoolKey } from \"hooks/swap/usePools\";\nimport { useTokens } from \"hooks/useCurrency\";\nimport type { PoolMetadata } from \"@icpswap/types\";\n\nexport interface PositionInfo {\n liquidity: bigint;\n tickLower: bigint;\n tickUpper: bigint;\n}\n\nexport interface UseMultiplePositionProps {\n positionInfos: PositionInfo[] | undefined;\n metadata: PoolMetadata | undefined;\n}\n\nexport function useMultiplePositions(args: UseMultiplePositionProps[]) {\n const { tokenIds } = useMemo(() => {\n const tokenIds: string[] = [];\n\n args.forEach(({ metadata }) => {\n if (metadata) {\n if (!tokenIds.includes(metadata.token0.address)) {\n tokenIds.push(metadata.token0.address);\n }\n\n if (!tokenIds.includes(metadata.token1.address)) {\n tokenIds.push(metadata.token1.address);\n }\n }\n });\n\n return { tokenIds };\n }, [JSON.stringify(args)]);\n\n const tokens = useTokens(tokenIds);\n\n const poolKeys = useMemo(() => {\n return args.map(({ metadata }) => {\n if (!metadata) return [undefined, undefined, undefined] as PoolKey;\n\n const tokenA = tokens.find((e) => {\n return e[1]?.address === metadata.token0.address;\n });\n\n const tokenB = tokens.find((e) => {\n return e[1]?.address === metadata.token1.address;\n });\n\n return [tokenA ? tokenA[1] : undefined, tokenB ? tokenB[1] : undefined, Number(metadata.fee)] as PoolKey;\n });\n }, [JSON.stringify(args), tokens]);\n\n const pools = usePools(poolKeys);\n\n return useMemo(() => {\n const positions = args.map((arg, index) => {\n const infos = arg.positionInfos;\n const pool = pools[index]?.[1];\n\n if (!infos) return undefined;\n\n return infos.map((info) => {\n if (!pool) return undefined;\n\n return new Position({\n pool,\n liquidity: info.liquidity.toString(),\n tickLower: Number(info.tickLower),\n tickUpper: Number(info.tickUpper),\n });\n });\n });\n\n return positions;\n }, [JSON.stringify(args), pools]);\n}\n","import { useCallback, useMemo, useState } from \"react\";\nimport { parseTokenAmount } from \"@icpswap/utils\";\nimport { TokenInfo } from \"types/token\";\nimport { useTips, MessageTypes } from \"hooks/useTips\";\nimport { destroyPassCode, withdrawPCMBalance } from \"@icpswap/hooks\";\nimport { type PassCode, type PCMMetadata, ResultStatus } from \"@icpswap/types\";\nimport { type Token } from \"@icpswap/swap-sdk\";\n\nexport interface WithdrawPCMBalanceArgs {\n token: TokenInfo | Token;\n name: string | undefined;\n type: \"code\" | \"unUsed\";\n metadata: PCMMetadata | undefined | null;\n code?: PassCode | undefined;\n amount: bigint | number | string;\n}\n\nexport function useWithdrawPCMBalanceCallback() {\n const [openTip, closeTip] = useTips();\n const [loading, setLoading] = useState(false);\n\n const callback = useCallback(async (args: WithdrawPCMBalanceArgs[]) => {\n return await Promise.all(\n args.map(async ({ token, name, type, code, amount: __amount }) => {\n const amount = BigInt(__amount);\n const tokenTransFee = BigInt(token.transFee);\n const unavailableClaim =\n amount === BigInt(0) || (type === \"code\" ? amount < tokenTransFee * BigInt(2) : amount < tokenTransFee);\n\n if (unavailableClaim) return;\n\n setLoading(true);\n\n const loadingKey = openTip(\n `Withdraw your ${parseTokenAmount(amount, token.decimals).toFormat()} ${token.symbol}`,\n MessageTypes.loading,\n );\n\n if (type === \"code\" && !!code) {\n const result = await destroyPassCode(code.token0.toString(), code.token1.toString(), code.fee);\n\n if (result.status === ResultStatus.OK) {\n const result = await withdrawPCMBalance(amount, tokenTransFee);\n if (result.status === ResultStatus.OK) {\n openTip(`Withdrew ${name} successfully`, MessageTypes.success);\n } else {\n openTip(`Failed to Withdraw ${name}: ${result.message}`, MessageTypes.error);\n }\n } else {\n openTip(`Failed to Withdraw: ${result.message ?? \"\"}`, MessageTypes.error);\n }\n } else {\n const result = await withdrawPCMBalance(amount, tokenTransFee);\n\n if (result.status === ResultStatus.OK) {\n openTip(`Withdrew ${name} successfully`, MessageTypes.success);\n } else {\n openTip(result.message ? result.message : `Failed to Withdraw ${name}`, MessageTypes.error);\n }\n }\n\n closeTip(loadingKey);\n setLoading(false);\n }),\n );\n }, []);\n\n return useMemo(() => ({ loading, callback }), [loading, callback]);\n}\n","import { useMemo } from \"react\";\nimport { BigNumber } from \"@icpswap/utils\";\nimport { PositionSort, UserPosition, UserPositionForFarm } from \"types/swap\";\nimport { encodePositionKeyByPool } from \"utils/swap/index\";\n\nexport interface UseSortedPositionsProps {\n sort: PositionSort;\n positions: (UserPosition | UserPositionForFarm)[] | undefined;\n feesValue: { [id: string]: BigNumber | undefined } | undefined;\n positionValue: { [id: string]: BigNumber | undefined } | undefined;\n}\n\nexport function useSortedPositions({ positions, sort, feesValue, positionValue }: UseSortedPositionsProps): T[] {\n return useMemo(() => {\n if (!positions) return [];\n if (sort === PositionSort.Default) return positions;\n\n if (sort === PositionSort.FeesValue) {\n if (!feesValue) return positions;\n if (Object.keys(feesValue).length < positions.length) return positions;\n\n return positions.sort((a, b) => {\n const keyA = encodePositionKeyByPool(a.id, a.index);\n const keyB = encodePositionKeyByPool(b.id, b.index);\n\n if (keyA && keyB) {\n const valueA = feesValue[keyA];\n const valueB = feesValue[keyB];\n\n if (valueA && valueB) {\n return valueA.isGreaterThan(valueB) ? -1 : 1;\n }\n }\n\n return 0;\n });\n }\n\n if (sort === PositionSort.PositionValue) {\n if (!positionValue) return positions;\n if (Object.keys(positionValue).length < positions.length) return positions;\n\n return positions.sort((a, b) => {\n const keyA = encodePositionKeyByPool(a.id, a.index);\n const keyB = encodePositionKeyByPool(b.id, b.index);\n\n if (keyA && keyB) {\n const valueA = positionValue[keyA];\n const valueB = positionValue[keyB];\n\n if (valueA && valueB) {\n return valueA.isGreaterThan(valueB) ? -1 : 1;\n }\n }\n\n return 0;\n });\n }\n\n return [];\n }, [feesValue, positionValue, sort, positions]) as T[];\n}\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { BigNumber, isNullArgs } from \"@icpswap/utils\";\nimport { Null } from \"@icpswap/types\";\nimport { isUseTransfer } from \"utils/token\";\n\nexport interface GetTokenInsufficientProps {\n token: Token | undefined;\n subAccountBalance: BigNumber | undefined;\n unusedBalance: bigint | undefined;\n balance: BigNumber | undefined;\n formatTokenAmount: string | undefined;\n allowance?: bigint | Null;\n}\n\nexport function getTokenInsufficient({\n token,\n subAccountBalance,\n unusedBalance,\n balance,\n formatTokenAmount,\n allowance,\n}: GetTokenInsufficientProps) {\n if (\n isNullArgs(token) ||\n isNullArgs(subAccountBalance) ||\n isNullArgs(unusedBalance) ||\n isNullArgs(balance) ||\n isNullArgs(formatTokenAmount)\n )\n return undefined;\n\n // console.log(\"xxxx unusedBalance:\", unusedBalance.toString());\n // console.log(\"xxxx subAccountBalance:\", subAccountBalance.toString());\n // console.log(\"xxxx formatTokenAmount: \", formatTokenAmount);\n // console.log(\"xxxx balance:\", balance.toString());\n // console.log(\"allowance:\", allowance);\n\n if (!new BigNumber(unusedBalance.toString()).isLessThan(formatTokenAmount)) return \"NO_TRANSFER_APPROVE\";\n\n if (\n !new BigNumber(unusedBalance.toString())\n .plus(subAccountBalance)\n .isLessThan(new BigNumber(formatTokenAmount).plus(token.transFee))\n )\n return \"NEED_DEPOSIT\";\n\n if (\n !new BigNumber(unusedBalance.toString())\n .plus(subAccountBalance)\n .plus(balance)\n .isLessThan(\n new BigNumber(formatTokenAmount).plus(\n isUseTransfer(token) || !allowance\n ? token.transFee * 2\n : // formatTokenAmount is the total amount, includes the unused balance\n // The approve amount is the user balance\n !new BigNumber(allowance?.toString()).isLessThan(balance)\n ? token.transFee\n : token.transFee * 2,\n ),\n )\n )\n return \"NEED_TRANSFER_APPROVE\";\n\n return \"INSUFFICIENT\";\n}\n","import { getSwapPosition } from \"@icpswap/hooks\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { UserPosition, UserPositionForFarm } from \"types/swap\";\nimport { useAccountPrincipal } from \"store/auth/hooks\";\nimport { isNullArgs } from \"@icpswap/utils\";\nimport { type FarmInfoWithId } from \"@icpswap/types\";\n\ntype UserPositions = {\n positions: bigint[];\n poolId: string;\n};\n\nexport function useSwapPositions(data: UserPositions[] | undefined, refresh?: number) {\n const [loading, setLoading] = useState(false);\n const [positions, setPositions] = useState(undefined);\n\n const principal = useAccountPrincipal();\n\n useEffect(() => {\n async function call() {\n if (isNullArgs(data) || isNullArgs(principal)) return;\n if (data.length === 0) {\n setPositions([]);\n return;\n }\n\n setLoading(true);\n\n const positions = await Promise.all(\n data\n .reduce(\n (prev, curr) => {\n return prev.concat(curr.positions.map((index) => [curr.poolId, index]));\n },\n [] as [string, bigint][],\n )\n .map(async ([canisterId, index]) => {\n const position = await getSwapPosition(canisterId, index);\n return { ...position, id: canisterId, index: Number(index) };\n }),\n );\n\n setPositions(positions.filter((position) => !!position) as UserPosition[]);\n setLoading(false);\n }\n\n call();\n }, [data, principal, refresh]);\n\n return useMemo(() => ({ loading, result: positions }), [positions, loading]);\n}\n\nexport function useSwapPositionsMultipleFarm(farms: FarmInfoWithId[] | undefined | null, refresh?: number) {\n const principal = useAccountPrincipal();\n const [loading, setLoading] = useState(false);\n const [positions, setPositions] = useState(undefined);\n\n useEffect(() => {\n async function call() {\n if (isNullArgs(farms) || isNullArgs(principal)) return;\n if (farms.length === 0) {\n setPositions([]);\n return;\n }\n\n setLoading(true);\n\n const positions = await Promise.all(\n farms\n .reduce(\n (prev, curr) => {\n return prev.concat(curr.positionIds.map((positionId) => [curr.pool.toString(), positionId, curr]));\n },\n [] as [string, bigint, FarmInfoWithId][],\n )\n .map(async ([poolId, positionId, farm]) => {\n const position = await getSwapPosition(poolId.toString(), positionId);\n return { ...position, id: poolId.toString(), index: Number(positionId), farm } as UserPositionForFarm;\n }),\n );\n\n setPositions(positions.filter((position) => !!position));\n setLoading(false);\n }\n\n call();\n }, [farms, principal, refresh]);\n\n return useMemo(() => ({ loading, result: positions }), [positions, loading]);\n}\n\nexport function useSwapPositionsByFarm(farm: FarmInfoWithId | undefined, refresh?: number) {\n return useSwapPositionsMultipleFarm(farm ? [farm] : undefined, refresh);\n}\n","import { useAccountPrincipal } from \"store/auth/hooks\";\nimport { usePassCode } from \"@icpswap/hooks\";\n\nexport function useUserPassCodes(reload?: number | boolean) {\n const principal = useAccountPrincipal();\n return usePassCode(principal?.toString(), reload);\n}\n","import { useMemo } from \"react\";\nimport { Token } from \"@icpswap/swap-sdk\";\nimport { getTokenInsufficient } from \"hooks/swap/index\";\nimport { BigNumber, isNullArgs } from \"@icpswap/utils\";\n\nexport interface useSwapTokenFeeCostProps {\n tokenBalance: BigNumber | undefined;\n subAccountBalance: BigNumber | undefined;\n unusedBalance: bigint | undefined;\n token: Token | undefined;\n amount: string | undefined;\n}\n\nexport function useSwapTokenFeeCost({\n token,\n tokenBalance,\n subAccountBalance,\n unusedBalance,\n amount,\n}: useSwapTokenFeeCostProps) {\n return useMemo(() => {\n if (\n isNullArgs(token) ||\n isNullArgs(tokenBalance) ||\n isNullArgs(subAccountBalance) ||\n isNullArgs(unusedBalance) ||\n isNullArgs(amount)\n )\n return undefined;\n\n const tokenInsufficient = getTokenInsufficient({\n token,\n subAccountBalance,\n balance: tokenBalance,\n formatTokenAmount: amount,\n unusedBalance,\n });\n\n if (tokenInsufficient === \"NO_TRANSFER_APPROVE\") return \"0\";\n if (tokenInsufficient === \"NEED_DEPOSIT\") return token.transFee.toString();\n if (tokenInsufficient === \"NEED_TRANSFER_APPROVE\") return (token.transFee * 2).toString();\n\n return \"0\";\n }, [token, tokenBalance, subAccountBalance, unusedBalance]);\n}\n","import { useMemo } from \"react\";\nimport { useToken } from \"hooks/useCurrency\";\nimport { useSnsTokenInfoByGovernance } from \"hooks/sns/useSnsTokenInfoByGovernance\";\n\nexport function useLiquidityLocksImage(name: string | undefined, principalId: string | undefined) {\n const governanceId = useMemo(() => {\n if (!name || !principalId) return undefined;\n if (name.includes(\"Governance\")) return principalId;\n return undefined;\n }, [name, principalId]);\n\n const snsTokenInfo = useSnsTokenInfoByGovernance(governanceId);\n\n const tokenId = useMemo(() => {\n if (!name || !principalId) return undefined;\n if (name.includes(\"Governance\")) {\n return snsTokenInfo?.canister_ids.ledger_canister_id;\n }\n\n return undefined;\n }, [name, principalId, snsTokenInfo]);\n\n const [, token] = useToken(tokenId);\n\n return useMemo(() => {\n if (!tokenId) {\n switch (name) {\n case \"Sneedlocked\":\n return \"/images/liquidity_locks_sneed.png\";\n case \"Black Hole\":\n return \"/images/liquidity_locks_blackhole.png\";\n case \"Free liquidity\":\n return \"/images/liquidity_locks_free.png\";\n default:\n return undefined;\n }\n }\n\n return token?.logo;\n }, [token, tokenId, name, principalId]);\n}\n","import { useMemo } from \"react\";\nimport { useStateSnsAllTokensInfo } from \"store/sns/hooks\";\n\nexport function useSnsTokenInfoByGovernance(governanceId: string | undefined) {\n const allSnsTokensInfo = useStateSnsAllTokensInfo();\n\n return useMemo(() => {\n return allSnsTokensInfo.find((e) => e.canister_ids.governance_canister_id === governanceId);\n }, [governanceId, allSnsTokensInfo]);\n}\n","import { useMemo, useCallback, useEffect, useState } from \"react\";\nimport { NumberType, ResultStatus } from \"@icpswap/types\";\nimport { parseTokenAmount, formatTokenAmount } from \"@icpswap/utils\";\nimport { Token, FeeAmount } from \"@icpswap/swap-sdk\";\nimport { getPoolCanisterId } from \"hooks/swap/v3Calls\";\nimport { getSwapPosition, depositFrom, withdraw, deposit } from \"@icpswap/hooks\";\nimport { usePoolCanisterIdManager } from \"store/swap/hooks\";\nimport BigNumber from \"bignumber.js\";\nimport { PositionDetail } from \"types/swap\";\nimport type { SwapNFTTokenMetadata, TOKEN_STANDARD } from \"@icpswap/types\";\nimport { useErrorTip, TIP_OPTIONS } from \"hooks/useTips\";\nimport { t } from \"@lingui/macro\";\nimport { useAccountPrincipal } from \"store/auth/hooks\";\nimport { isUseTransfer, isUseTransferByStandard } from \"utils/token/index\";\nimport { tokenTransfer } from \"hooks/token/calls\";\nimport { OpenExternalTip } from \"types/index\";\nimport { SubAccount } from \"@dfinity/ledger-icp\";\n\n// Now the amount that user input is the final amount swap/add/increase\n// Amount is the value that the subaccount balance when use transfer, 1 token fees should be added on the amount\n// And if use approve, amount is the value that the pool unused balance\nexport function getTokenActualTransferAmount(amount: NumberType, token: Token): string {\n const typedValue = formatTokenAmount(amount, token.decimals);\n const fee = token.transFee;\n\n // And 1 token fees will be subtracted by token canister,\n // so user balance should be equal to or greater than typeValue + token.fee * 2 if use transfer\n // typeValue + token.fee if use approve\n return isUseTransfer(token)\n ? parseTokenAmount(typedValue.plus(fee), token.decimals).toString()\n : parseTokenAmount(typedValue, token.decimals).toString();\n}\n\nexport function getTokenActualTransferRawAmount(rawAmount: NumberType, token: Token): string {\n const fee = token.transFee;\n\n // And 1 token fees will be subtracted by token canister,\n // so user balance should be equal to or greater than typeValue + token.fee * 2 if use transfer\n // typeValue + token.fee if use approve\n return isUseTransfer(token) ? new BigNumber(rawAmount.toString()).plus(fee).toString() : rawAmount.toString();\n}\n\nexport function getTokenActualDepositAmount(amount: NumberType, token: Token): string {\n const typedValue = formatTokenAmount(amount, token.decimals);\n const fee = token.transFee;\n\n return isUseTransfer(token)\n ? parseTokenAmount(typedValue.plus(fee), token.decimals).toString()\n : parseTokenAmount(typedValue, token.decimals).toString();\n}\n\nexport function getTokenActualDepositRawAmount(rawAmount: NumberType, token: Token): string {\n const fee = token.transFee;\n\n return isUseTransfer(token)\n ? new BigNumber(rawAmount.toString()).plus(fee).toString()\n : new BigNumber(rawAmount.toString()).toString();\n}\n\nexport function usePoolCanisterId(\n token0CanisterId: string | undefined | null,\n token1CanisterId: string | undefined | null,\n fee: FeeAmount | undefined | null,\n) {\n const key = useMemo(() => {\n return token0CanisterId && token1CanisterId && fee\n ? `${token0CanisterId}_${token1CanisterId}_${String(fee)}`\n : undefined;\n }, [token0CanisterId, token1CanisterId, fee]);\n\n const [id, updatePoolCanisterId] = usePoolCanisterIdManager(key);\n\n useEffect(() => {\n const call = async () => {\n if (token0CanisterId && token1CanisterId && fee && key && !id) {\n const _id = await getPoolCanisterId(token0CanisterId, token1CanisterId, fee);\n if (_id) {\n updatePoolCanisterId({ key, id: _id });\n }\n }\n };\n\n call();\n }, [id, token0CanisterId, token1CanisterId, fee, key]);\n\n return useMemo(() => id, [id]);\n}\n\nexport async function getPositionFromNFT(metadata: SwapNFTTokenMetadata) {\n const { attributes } = metadata;\n\n const positionDetail: { [key: string]: string } = {\n pool: \"\",\n token0: \"\",\n token1: \"\",\n fee: \"\",\n tickLower: \"\",\n tickUpper: \"\",\n positionId: \"\",\n };\n\n attributes.forEach((ele) => {\n positionDetail[ele.k] = ele.v;\n });\n\n if (!positionDetail.pool) return undefined;\n\n const position = await getSwapPosition(positionDetail.pool, BigInt(positionDetail.positionId));\n\n return {\n ...positionDetail,\n ...position,\n } as PositionDetail;\n}\n\nexport function usePositionFromNFT(metadata: SwapNFTTokenMetadata) {\n const [loading, setLoading] = useState(false);\n const [position, setPosition] = useState(undefined);\n\n useEffect(() => {\n const call = async () => {\n setLoading(true);\n const position = await getPositionFromNFT(metadata);\n setPosition(position);\n setLoading(false);\n };\n\n call();\n }, [metadata]);\n\n return useMemo(\n () => ({\n loading,\n result: position,\n }),\n [position, loading],\n );\n}\n\nexport function usePositionsFromNFTs(data: SwapNFTTokenMetadata[] | undefined) {\n const [loading, setLoading] = useState(false);\n const [positions, setPositions] = useState([]);\n\n useEffect(() => {\n const call = () => {\n if (!data) return;\n if (data.length === 0) {\n setPositions([]);\n return;\n }\n\n setLoading(true);\n\n Promise.all(\n data.map(async (ele) => {\n return await getPositionFromNFT(ele);\n }),\n ).then((result) => {\n const positions = result.filter((ele) => ele !== undefined) as PositionDetail[];\n setPositions(positions);\n setLoading(false);\n });\n };\n\n call();\n }, [data]);\n\n return useMemo(() => ({ loading, result: positions }), [positions, loading]);\n}\n\nexport interface UseSwapDepositArgs {\n token: Token;\n amount: string;\n poolId: string;\n openExternalTip?: OpenExternalTip;\n standard: TOKEN_STANDARD;\n}\n\nexport function useSwapDeposit() {\n const [openErrorTip] = useErrorTip();\n\n return useCallback(async ({ token, amount, poolId, openExternalTip, standard }: UseSwapDepositArgs) => {\n const useTransfer = isUseTransferByStandard(standard);\n\n let status: ResultStatus = ResultStatus.ERROR;\n let message = \"\";\n\n if (useTransfer) {\n const { status: _status, message: _message } = await deposit(\n poolId,\n token.address,\n BigInt(amount),\n BigInt(token.transFee),\n );\n status = _status;\n message = _message;\n } else {\n const { status: _status, message: _message } = await depositFrom(\n poolId,\n token.address,\n BigInt(amount),\n BigInt(token.transFee),\n );\n status = _status;\n message = _message;\n }\n\n if (status === \"err\") {\n if (openExternalTip) {\n openExternalTip({ message });\n } else {\n openErrorTip(\n `Failed to deposit ${token.symbol}: ${message}. Please check your balance in the Swap Pool to see if tokens have been transferred to the Swap Pool.`,\n );\n }\n\n return false;\n }\n\n return true;\n }, []);\n}\n\nexport function useSwapTransfer() {\n const [openErrorTip] = useErrorTip();\n\n const principal = useAccountPrincipal();\n\n return useCallback(\n async (token: Token, amount: string, poolId: string, options?: TIP_OPTIONS) => {\n if (!principal) {\n openErrorTip(t`Failed to transfer: no principal`);\n return false;\n }\n\n const { status, message } = await tokenTransfer({\n to: poolId,\n canisterId: token.address,\n amount: new BigNumber(amount),\n from: principal?.toString() ?? \"\",\n subaccount: [...SubAccount.fromPrincipal(principal).toUint8Array()],\n fee: token.transFee,\n decimals: token.decimals,\n });\n\n if (status === \"err\") {\n openErrorTip(`Failed to transfer ${token.symbol}: ${message}`, options);\n return false;\n }\n\n return true;\n },\n [principal],\n );\n}\n\nexport function useSwapWithdraw() {\n const [openErrorTip] = useErrorTip();\n\n return useCallback(async (token: Token, poolId: string, amount: string, openExternalTip?: OpenExternalTip) => {\n const { status, message } = await withdraw(poolId, token.address, BigInt(token.transFee), BigInt(amount));\n\n if (status === \"err\") {\n if (openExternalTip) {\n openExternalTip({ message });\n } else {\n openErrorTip(\n `Failed to withdraw ${token.symbol}: ${message}. Please click 'Reclaim Your Tokens' to reclaim your tokens.`,\n );\n }\n\n return false;\n }\n\n return true;\n }, []);\n}\n\nexport * from \"./useReclaimCallback\";\nexport * from \"./useSwapApprove\";\nexport * from \"./usePositionValue\";\nexport * from \"./useWithdrawPCMBalance\";\nexport * from \"./useSortedPositions\";\nexport * from \"./useTokenInsufficient\";\nexport * from \"./useSwapPositions\";\nexport * from \"./usePCMBalances\";\nexport * from \"./useSwapTokenFeeCost\";\nexport * from \"./useLiquidityLocksImage\";\nexport * from \"./useMaxAmountSpend\";\n","import { CurrencyAmount, Token } from \"@icpswap/swap-sdk\";\nimport { BigNumber, isNullArgs, nonNullArgs } from \"@icpswap/utils\";\nimport { Null } from \"@icpswap/types\";\nimport { useAllowance } from \"hooks/token\";\nimport { useMemo } from \"react\";\nimport { useAccountPrincipalString } from \"store/auth/hooks\";\nimport { isUseTransfer } from \"utils/token\";\n\nexport interface UseMaxPoolBalanceSpendProps {\n token: Token | Null;\n subBalance: BigNumber | Null;\n unusedBalance: bigint | Null;\n}\n\nexport function usePoolBalanceMaxSpend({ token, subBalance, unusedBalance }: UseMaxPoolBalanceSpendProps) {\n return useMemo(() => {\n if (!token || isNullArgs(unusedBalance) || isNullArgs(subBalance)) return undefined;\n\n const totalPoolBalance = new BigNumber(unusedBalance.toString()).plus(subBalance);\n\n if (totalPoolBalance.isEqualTo(0)) return CurrencyAmount.fromRawAmount(token, 0);\n\n // The token use transfer to deposit\n // 1 token fee is needed for deposit\n if (isUseTransfer(token)) {\n // No token fee needed\n if (subBalance.isEqualTo(0)) {\n return CurrencyAmount.fromRawAmount(token, unusedBalance.toString());\n }\n\n return CurrencyAmount.fromRawAmount(\n token,\n new BigNumber(unusedBalance.toString()).plus(subBalance).minus(token.transFee).toString(),\n );\n }\n\n // If token use approve, no token fee needed\n // And the subAccountBalance is 0\n return CurrencyAmount.fromRawAmount(\n token,\n new BigNumber(unusedBalance.toString()).plus(subBalance.toString()).toString(),\n );\n }, [unusedBalance, subBalance]);\n}\n\nexport interface UseMaxBalanceSpendArgs {\n token: Token | Null;\n balance: string | Null;\n poolId?: string | Null;\n allowance?: bigint | Null;\n}\n\nexport function useBalanceMaxSpend({ token, balance, poolId, allowance: __allowance }: UseMaxBalanceSpendArgs) {\n const principal = useAccountPrincipalString();\n\n const allowanceCanisterId = useMemo(() => {\n if (!token || nonNullArgs(__allowance)) return undefined;\n return isUseTransfer(token) ? undefined : token.address;\n }, [token, __allowance]);\n\n const { result: allowance } = useAllowance({ canisterId: allowanceCanisterId, owner: principal, spender: poolId });\n\n return useMemo(() => {\n if (isNullArgs(balance) || isNullArgs(token)) return undefined;\n\n if (new BigNumber(balance).isEqualTo(0)) return CurrencyAmount.fromRawAmount(token, 0);\n\n // The token use transfer to deposit\n // 2 token fee is needed, 1 for deposit, 1 for token canister\n if (isUseTransfer(token)) {\n return CurrencyAmount.fromRawAmount(token, new BigNumber(balance).minus(token.transFee * 2).toString());\n }\n\n // The token use approve to deposit\n const innerAllowance = (allowance ?? __allowance) as bigint;\n\n // If token use approve, subaccount balance is 0\n // The tokens use approve to deposit, but can't get allowance, so 2 trans fee is needed\n if (innerAllowance === undefined) {\n return CurrencyAmount.fromRawAmount(token, new BigNumber(balance).minus(token.transFee * 2).toString());\n }\n\n // Need call token approve, would cost one transfer fee\n if (new BigNumber(innerAllowance.toString()).isLessThan(balance)) {\n return CurrencyAmount.fromRawAmount(token, new BigNumber(balance).minus(token.transFee * 2).toString());\n }\n\n return CurrencyAmount.fromRawAmount(token, new BigNumber(balance).minus(token.transFee).toString());\n }, [allowance, __allowance, token, balance, allowanceCanisterId]);\n}\n\nexport interface UseMaxAmountSpendArgs {\n token: Token | Null;\n balance: string | Null;\n poolId?: string | Null;\n subBalance: BigNumber | Null;\n unusedBalance: bigint | Null;\n allowance?: bigint | Null;\n}\n\nexport function useAllBalanceMaxSpend({\n poolId,\n subBalance,\n unusedBalance,\n allowance: __allowance,\n token,\n balance,\n}: UseMaxAmountSpendArgs) {\n const maxBalanceSpend = useBalanceMaxSpend({ token, balance, poolId, allowance: __allowance });\n const maxPoolBalanceSpent = usePoolBalanceMaxSpend({ token, subBalance, unusedBalance });\n\n return useMemo(() => {\n if (isNullArgs(maxBalanceSpend) || isNullArgs(maxPoolBalanceSpent) || isNullArgs(token)) return undefined;\n if (!maxBalanceSpend.currency.equals(maxPoolBalanceSpent.currency)) return undefined;\n\n return maxBalanceSpend.add(maxPoolBalanceSpent);\n }, [maxBalanceSpend, maxPoolBalanceSpent]);\n}\n","import { Pool, Token, FeeAmount } from \"@icpswap/swap-sdk\";\nimport { useMemo, useEffect, useState } from \"react\";\nimport { getPool, getPool_update_call } from \"hooks/swap/v3Calls\";\nimport { getSwapPoolMetadata, useSwapPools } from \"@icpswap/hooks\";\nimport { numberToString } from \"@icpswap/utils\";\nimport type { Null, PoolMetadata, TickLiquidityInfo } from \"@icpswap/types\";\nimport { NETWORK, network } from \"constants/index\";\nimport { ICP } from \"@icpswap/tokens\";\n\nexport enum PoolState {\n LOADING = \"LOADING\",\n NOT_EXISTS = \"NOT_EXISTS\",\n EXISTS = \"EXISTS\",\n INVALID = \"INVALID\",\n NOT_CHECK = \"NOT_CHECK\",\n}\n\ntype TypePoolsState = {\n id: string;\n metadata: PoolMetadata | undefined;\n ticks: TickLiquidityInfo[];\n key: string;\n checked: boolean;\n};\n\ntype TransformedKey = { token0: string; token1: string; fee: FeeAmount };\n\nfunction transformedKeyToKey(transformedKey: TransformedKey) {\n return `${transformedKey.token0}_${transformedKey.token1}_${transformedKey.fee}`;\n}\n\nexport type PoolKey = [Token | Null, Token | Null, FeeAmount | undefined];\n\nexport function usePools(poolKeys: PoolKey[], withoutVerify = false): [PoolState, Pool | null][] {\n const [pools, setPools] = useState<{ [key: string]: TypePoolsState | null }>({});\n const [loading, setLoading] = useState(false);\n\n const transformedPoolKeys = useMemo(() => {\n return poolKeys.map(([currencyA, currencyB, feeAmount]) => {\n if (!currencyA || !currencyB || !feeAmount) return null;\n\n const tokenA = currencyA.wrapped;\n const tokenB = currencyB.wrapped;\n\n if (!tokenA || !tokenB || tokenA.equals(tokenB)) return null;\n\n const [token0, token1] = tokenA.sortsBefore(tokenB) ? [tokenA, tokenB] : [tokenB, tokenA];\n\n return { token0: token0.address, token1: token1.address, fee: feeAmount } as TransformedKey;\n });\n }, [poolKeys]);\n\n useEffect(() => {\n async function call() {\n if (transformedPoolKeys && transformedPoolKeys.length) {\n setLoading(true);\n\n const result = await Promise.all(\n transformedPoolKeys.map(async (element) => {\n if (!element) return null;\n\n const pool = await getPool(element.token0, element.token1, element.fee);\n\n if (!pool) return null;\n\n const poolMetadata = await getSwapPoolMetadata(pool.canisterId.toString());\n\n return {\n key: transformedKeyToKey(element),\n id: pool.canisterId.toString(),\n metadata: poolMetadata,\n ticks: [],\n checked: !!withoutVerify,\n };\n }),\n );\n\n const pools: { [id: string]: TypePoolsState } = {};\n\n result.forEach((ele) => {\n if (ele) {\n pools[ele.key] = ele;\n }\n });\n\n setPools(pools);\n setLoading(false);\n\n // Use update call to verify the pool.\n if (withoutVerify === false) {\n transformedPoolKeys.map(async (element) => {\n if (!element) return;\n\n const pool = await getPool_update_call(element.token0, element.token1, element.fee);\n\n if (!pool) {\n setPools((prevState) => ({\n ...prevState,\n [transformedKeyToKey(element)]: null,\n }));\n } else {\n const poolMetadata = await getSwapPoolMetadata(pool.canisterId.toString());\n\n setPools((prevState) => ({\n ...prevState,\n [transformedKeyToKey(element)]: {\n key: transformedKeyToKey(element),\n id: pool.canisterId.toString(),\n metadata: poolMetadata,\n ticks: [],\n checked: true,\n },\n }));\n }\n });\n }\n }\n }\n\n call();\n }, [JSON.stringify(transformedPoolKeys), withoutVerify]);\n\n return useMemo(() => {\n return transformedPoolKeys.map((transformedKey, index) => {\n if (!transformedKey) return [PoolState.INVALID, null];\n if (loading) return [PoolState.LOADING, null];\n\n const key = transformedKeyToKey(transformedKey);\n const result: TypePoolsState | null | undefined = pools[key];\n\n if (!result) return [PoolState.NOT_EXISTS, null];\n\n const { metadata, id, checked } = result;\n\n if (!metadata?.token0 || !metadata?.token1 || !metadata?.fee || !id) return [PoolState.NOT_EXISTS, null];\n\n try {\n const { fee, sqrtPriceX96, liquidity, tick } = metadata;\n const [token0, token1] = poolKeys[index];\n\n if (!token0 || !token1) return [PoolState.NOT_EXISTS, null];\n\n // Renew token that standard from the pool metadata\n const __token0 = new Token({\n address: token0.address,\n decimals: token0.decimals,\n symbol: token0.symbol,\n name: token0.name,\n standard: token0.address === metadata.token0.address ? metadata.token0.standard : metadata.token1.standard,\n logo: token0.logo,\n transFee: token0.transFee,\n });\n\n const __token1 = new Token({\n address: token1.address,\n decimals: token1.decimals,\n symbol: token1.symbol,\n name: token1.name,\n standard: token1.address === metadata.token1.address ? metadata.token1.standard : metadata.token0.standard,\n logo: token1.logo,\n transFee: token1.transFee,\n });\n\n return [\n checked ? PoolState.EXISTS : PoolState.NOT_CHECK,\n new Pool(\n id,\n __token0,\n __token1,\n Number(fee),\n numberToString(sqrtPriceX96),\n numberToString(liquidity),\n Number(tick),\n ),\n ];\n } catch (error) {\n console.error(\"Error when constructing the pool\", error);\n return [PoolState.NOT_EXISTS, null];\n }\n });\n }, [JSON.stringify(pools), loading, poolKeys, JSON.stringify(transformedPoolKeys)]);\n}\n\nexport function usePool(\n currencyA: Token | Null,\n currencyB: Token | Null,\n feeAmount: FeeAmount | undefined,\n withoutVerify = false,\n) {\n const poolKeys: [Token | Null, Token | Null, FeeAmount | undefined][] = useMemo(\n () => [[currencyA, currencyB, feeAmount]],\n [currencyA, currencyB, feeAmount],\n );\n\n return usePools(poolKeys, withoutVerify)[0];\n}\n\nexport function useTokenSwapPools(tokens: string[] | undefined) {\n const { result: allPools } = useSwapPools();\n\n return useMemo(() => {\n if (!tokens || !allPools) return undefined;\n\n return tokens.map((token) => {\n return allPools.filter((pool) => {\n return pool.token1.address === token || pool.token0.address === token;\n });\n });\n }, [allPools, tokens]);\n}\n\nexport function useTokenHasPairWithBaseToken(token: string | undefined) {\n const tokenPools = useTokenSwapPools(token ? [token] : undefined);\n\n return useMemo(() => {\n if (!tokenPools || !tokenPools[0] || !token) return undefined;\n\n return !!tokenPools[0].find((pool) => pool.token0.address === ICP.address || pool.token1.address === ICP.address);\n }, [tokenPools]);\n}\n\nexport function useTokensHasPairWithBaseToken(tokens: string[] | undefined) {\n const tokenPools = useTokenSwapPools(tokens);\n\n return useMemo(() => {\n if (!tokenPools || !tokenPools[0] || !tokens) return undefined;\n\n if (network === NETWORK.LOCAL) return true;\n\n if (tokens.find((token) => token === ICP.address)) return true;\n\n return tokens.reduce((prev, curr, index) => {\n const hasPairWithBaseToken = !!tokenPools[index].find(\n (pool) => pool.token0.address === ICP.address || pool.token1.address === ICP.address,\n );\n\n return prev || hasPairWithBaseToken;\n }, false);\n }, [tokenPools]);\n}\n","import { useCallback } from \"react\";\nimport { useCloseAllSteps } from \"store/steps/hooks\";\nimport { useHistory } from \"react-router-dom\";\n\nexport function useReclaimCallback() {\n const history = useHistory();\n const closeAllSteps = useCloseAllSteps();\n\n return useCallback(() => {\n history.push(\"/swap/withdraw\");\n closeAllSteps();\n }, [history, closeAllSteps]);\n}\n","import invariant from \"tiny-invariant\";\n\n// given an array of items sorted by `comparator`, insert an item into its sort index and constrain the size to\n// `maxSize` by removing the last item\nexport function sortedInsert(items: T[], add: T, maxSize: number, comparator: (a: T, b: T) => number): T | null {\n invariant(maxSize > 0, \"MAX_SIZE_ZERO\");\n // this is an invariant because the interface cannot return multiple removed items if items.length exceeds maxSize\n invariant(items.length <= maxSize, \"ITEMS_SIZE\");\n\n // short circuit first item add\n if (items.length === 0) {\n items.push(add);\n return null;\n } else {\n const isFull = items.length === maxSize;\n // short circuit if full and the additional item does not come before the last item\n if (isFull && comparator(items[items.length - 1], add) <= 0) {\n return add;\n }\n\n let lo = 0,\n hi = items.length;\n\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (comparator(items[mid], add) <= 0) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n items.splice(lo, 0, add);\n return isFull ? items.pop()! : null;\n }\n}\n","import invariant from \"tiny-invariant\";\nimport { Token, Price } from \"../core\";\nimport { Pool } from \"./pool\";\n\n/**\n * Represents a list of pools through which a swap can occur\n * @template TInput The input token\n * @template TOutput The output token\n */\nexport class Route {\n public readonly pools: Pool[];\n\n public readonly tokenPath: Token[];\n\n public readonly input: TInput;\n\n public readonly output: TOutput;\n\n private _midPrice: Price | null = null;\n\n /**\n * Creates an instance of route.\n * @param pools An array of `Pool` objects, ordered by the route the swap will take\n * @param input The input token\n * @param output The output token\n */\n public constructor(pools: Pool[], input: TInput, output: TOutput) {\n invariant(pools.length > 0, \"POOLS\");\n\n const wrappedInput = input.wrapped;\n invariant(pools[0].involvesToken(wrappedInput), \"INPUT\");\n\n invariant(pools[pools.length - 1].involvesToken(output.wrapped), \"OUTPUT\");\n\n /**\n * Normalizes token0-token1 order and selects the next token/fee step to add to the path\n * */\n const tokenPath: Token[] = [wrappedInput];\n for (const [i, pool] of pools.entries()) {\n const currentInputToken = tokenPath[i];\n invariant(currentInputToken.equals(pool.token0) || currentInputToken.equals(pool.token1), \"PATH\");\n const nextToken = currentInputToken.equals(pool.token0) ? pool.token1 : pool.token0;\n tokenPath.push(nextToken);\n }\n\n this.pools = pools;\n this.tokenPath = tokenPath;\n this.input = input;\n this.output = output ?? (tokenPath[tokenPath.length - 1] as TOutput);\n }\n\n /**\n * Returns the mid price of the route\n */\n public get midPrice(): Price {\n if (this._midPrice !== null) return this._midPrice;\n\n const price = this.pools.slice(1).reduce(\n ({ nextInput, price }, pool) => {\n return nextInput.equals(pool.token0)\n ? {\n nextInput: pool.token1,\n price: price.multiply(pool.token0Price),\n }\n : {\n nextInput: pool.token0,\n price: price.multiply(pool.token1Price),\n };\n },\n this.pools[0].token0.equals(this.input.wrapped)\n ? {\n nextInput: this.pools[0].token1,\n price: this.pools[0].token0Price,\n }\n : {\n nextInput: this.pools[0].token0,\n price: this.pools[0].token1Price,\n },\n ).price;\n\n this._midPrice = new Price(this.input, this.output, price.denominator, price.numerator);\n\n return this._midPrice;\n }\n}\n","import invariant from \"tiny-invariant\";\nimport { Fraction, Percent, Price, sortedInsert, CurrencyAmount, TradeType, Token } from \"../core\";\nimport { ONE, ZERO } from \"../internalConstants\";\nimport { Pool } from \"./pool\";\nimport { Route } from \"./route\";\n\n/**\n * Trades comparator, an extension of the input output comparator that also considers other dimensions of the trade in ranking them\n * @template TInput The input token, either Ether or an ERC-20\n * @template TOutput The output token, either Ether or an ERC-20\n * @template TTradeType The trade type, either exact input or exact output\n * @param a The first trade to compare\n * @param b The second trade to compare\n * @returns A sorted ordering for two neighboring elements in a trade array\n */\nexport function tradeComparator(\n a: Trade,\n b: Trade,\n) {\n // must have same input and output token for comparison\n invariant(a.inputAmount.currency.equals(b.inputAmount.currency), \"INPUT_CURRENCY\");\n invariant(a.outputAmount.currency.equals(b.outputAmount.currency), \"OUTPUT_CURRENCY\");\n if (a.outputAmount.equalTo(b.outputAmount)) {\n if (a.inputAmount.equalTo(b.inputAmount)) {\n // consider the number of hops since each hop costs gas\n const aHops = a.swaps.reduce((total, cur) => total + cur.route.tokenPath.length, 0);\n const bHops = b.swaps.reduce((total, cur) => total + cur.route.tokenPath.length, 0);\n return aHops - bHops;\n }\n // trade A requires less input than trade B, so A should come first\n if (a.inputAmount.lessThan(b.inputAmount)) {\n return -1;\n } \n return 1;\n \n } \n // tradeA has less output than trade B, so should come second\n if (a.outputAmount.lessThan(b.outputAmount)) {\n return 1;\n } \n return -1;\n \n \n}\n\nexport interface BestTradeOptions {\n // how many results to return\n maxNumResults?: number;\n // the maximum number of hops a trade should contain\n maxHops?: number;\n}\n\n/**\n * Represents a trade executed against a set of routes where some percentage of the input is\n * split across each route.\n *\n * Each route has its own set of pools. Pools can not be re-used across routes.\n *\n * Does not account for slippage, i.e., changes in price environment that can occur between\n * the time the trade is submitted and when it is executed.\n * @template TInput The input token, either Ether or an ERC-20\n * @template TOutput The output token, either Ether or an ERC-20\n * @template TTradeType The trade type, either exact input or exact output\n */\nexport class Trade {\n /**\n * @deprecated Deprecated in favor of 'swaps' property. If the trade consists of multiple routes\n * this will return an error.\n *\n * When the trade consists of just a single route, this returns the route of the trade,\n * i.e. which pools the trade goes through.\n */\n public get route(): Route {\n invariant(this.swaps.length === 1, \"MULTIPLE_ROUTES\");\n return this.swaps[0].route;\n }\n\n /**\n * The swaps of the trade, i.e. which routes and how much is swapped in each that\n * make up the trade.\n */\n public readonly swaps: {\n route: Route;\n inputAmount: CurrencyAmount;\n outputAmount: CurrencyAmount;\n }[];\n\n /**\n * The type of the trade, either exact in or exact out.\n */\n public readonly tradeType: TTradeType;\n\n /**\n * The cached result of the input amount computation\n * @private\n */\n private _inputAmount: CurrencyAmount | undefined;\n\n /**\n * The input amount for the trade assuming no slippage.\n */\n public get inputAmount(): CurrencyAmount {\n if (this._inputAmount) {\n return this._inputAmount;\n }\n\n const inputCurrency = this.swaps[0].inputAmount.currency;\n const totalInputFromRoutes = this.swaps\n .map(({ inputAmount }) => inputAmount)\n .reduce((total, cur) => total.add(cur), CurrencyAmount.fromRawAmount(inputCurrency, 0));\n\n this._inputAmount = totalInputFromRoutes;\n return this._inputAmount;\n }\n\n /**\n * The cached result of the output amount computation\n * @private\n */\n private _outputAmount: CurrencyAmount | undefined;\n\n /**\n * The output amount for the trade assuming no slippage.\n */\n public get outputAmount(): CurrencyAmount {\n if (this._outputAmount) {\n return this._outputAmount;\n }\n\n const outputCurrency = this.swaps[0].outputAmount.currency;\n const totalOutputFromRoutes = this.swaps\n .map(({ outputAmount }) => outputAmount)\n .reduce((total, cur) => total.add(cur), CurrencyAmount.fromRawAmount(outputCurrency, 0));\n\n this._outputAmount = totalOutputFromRoutes;\n return this._outputAmount;\n }\n\n /**\n * The cached result of the computed execution price\n * @private\n */\n private _executionPrice: Price | undefined;\n\n /**\n * The price expressed in terms of output amount/input amount.\n */\n public get executionPrice(): Price {\n if (this._executionPrice) return this._executionPrice;\n\n this._executionPrice = new Price(\n this.inputAmount.currency,\n this.outputAmount.currency,\n this.inputAmount.quotient,\n this.outputAmount.quotient,\n );\n\n return new Price(\n this.inputAmount.currency,\n this.outputAmount.currency,\n this.inputAmount.quotient,\n this.outputAmount.quotient,\n );\n }\n\n /**\n * The cached result of the price impact computation\n * @private\n */\n private _priceImpact: Percent | undefined;\n\n /**\n * Returns the percent difference between the route's mid price and the price impact\n */\n public get priceImpact(): Percent {\n if (this._priceImpact) {\n return this._priceImpact;\n }\n\n let spotOutputAmount = CurrencyAmount.fromRawAmount(this.outputAmount.currency, 0);\n for (const { route, inputAmount } of this.swaps) {\n const midPrice = route.midPrice;\n spotOutputAmount = spotOutputAmount.add(midPrice.quote(inputAmount));\n }\n\n const priceImpact = spotOutputAmount.subtract(this.outputAmount).divide(spotOutputAmount);\n this._priceImpact = new Percent(priceImpact.numerator, priceImpact.denominator);\n\n return this._priceImpact;\n }\n\n /**\n * Constructs an exact in trade with the given amount in and route\n * @template TInput The input token, either Ether or an ERC-20\n * @template TOutput The output token, either Ether or an ERC-20\n * @param route The route of the exact in trade\n * @param amountIn The amount being passed in\n * @returns The exact in trade\n */\n public static async exactIn(\n route: Route,\n amountIn: CurrencyAmount,\n ): Promise> {\n return Trade.fromRoute(route, amountIn, TradeType.EXACT_INPUT);\n }\n\n /**\n * Constructs an exact out trade with the given amount out and route\n * @template TInput The input token, either Ether or an ERC-20\n * @template TOutput The output token, either Ether or an ERC-20\n * @param route The route of the exact out trade\n * @param amountOut The amount returned by the trade\n * @returns The exact out trade\n */\n public static async exactOut(\n route: Route,\n amountOut: CurrencyAmount,\n ): Promise> {\n return Trade.fromRoute(route, amountOut, TradeType.EXACT_OUTPUT);\n }\n\n /**\n * Constructs a trade by simulating swaps through the given route\n * @template TInput The input token, either Ether or an ERC-20.\n * @template TOutput The output token, either Ether or an ERC-20.\n * @template TTradeType The type of the trade, either exact in or exact out.\n * @param route route to swap through\n * @param amount the amount specified, either input or output, depending on tradeType\n * @param tradeType whether the trade is an exact input or exact output swap\n * @returns The route\n */\n public static async fromRoute(\n route: Route,\n amount: TTradeType extends TradeType.EXACT_INPUT ? CurrencyAmount : CurrencyAmount,\n tradeType: TTradeType,\n ): Promise> {\n const amounts: CurrencyAmount[] = new Array(route.tokenPath.length);\n let inputAmount: CurrencyAmount;\n let outputAmount: CurrencyAmount;\n if (tradeType === TradeType.EXACT_INPUT) {\n invariant(amount.currency.equals(route.input), \"INPUT\");\n amounts[0] = amount.wrapped;\n for (let i = 0; i < route.tokenPath.length - 1; i++) {\n const pool = route.pools[i];\n const [outputAmount] = await pool.getOutputAmount(amounts[i]);\n amounts[i + 1] = outputAmount;\n }\n inputAmount = CurrencyAmount.fromFractionalAmount(route.input, amount.numerator, amount.denominator);\n outputAmount = CurrencyAmount.fromFractionalAmount(\n route.output,\n amounts[amounts.length - 1].numerator,\n amounts[amounts.length - 1].denominator,\n );\n } else {\n invariant(amount.currency.equals(route.output), \"OUTPUT\");\n amounts[amounts.length - 1] = amount.wrapped;\n for (let i = route.tokenPath.length - 1; i > 0; i--) {\n const pool = route.pools[i - 1];\n const [inputAmount] = await pool.getInputAmount(amounts[i]);\n amounts[i - 1] = inputAmount;\n }\n inputAmount = CurrencyAmount.fromFractionalAmount(route.input, amounts[0].numerator, amounts[0].denominator);\n outputAmount = CurrencyAmount.fromFractionalAmount(route.output, amount.numerator, amount.denominator);\n }\n\n return new Trade({\n routes: [{ inputAmount, outputAmount, route }],\n tradeType,\n });\n }\n\n /**\n * Constructs a trade from routes by simulating swaps\n *\n * @template TInput The input token, either Ether or an ERC-20.\n * @template TOutput The output token, either Ether or an ERC-20.\n * @template TTradeType The type of the trade, either exact in or exact out.\n * @param routes the routes to swap through and how much of the amount should be routed through each\n * @param tradeType whether the trade is an exact input or exact output swap\n * @returns The trade\n */\n public static async fromRoutes(\n routes: {\n amount: TTradeType extends TradeType.EXACT_INPUT ? CurrencyAmount : CurrencyAmount;\n route: Route;\n }[],\n tradeType: TTradeType,\n ): Promise> {\n const populatedRoutes: {\n route: Route;\n inputAmount: CurrencyAmount;\n outputAmount: CurrencyAmount;\n }[] = [];\n\n for (const { route, amount } of routes) {\n const amounts: CurrencyAmount[] = new Array(route.tokenPath.length);\n let inputAmount: CurrencyAmount;\n let outputAmount: CurrencyAmount;\n\n if (tradeType === TradeType.EXACT_INPUT) {\n invariant(amount.currency.equals(route.input), \"INPUT\");\n inputAmount = CurrencyAmount.fromFractionalAmount(route.input, amount.numerator, amount.denominator);\n amounts[0] = CurrencyAmount.fromFractionalAmount(route.input.wrapped, amount.numerator, amount.denominator);\n\n for (let i = 0; i < route.tokenPath.length - 1; i++) {\n const pool = route.pools[i];\n const [outputAmount] = await pool.getOutputAmount(amounts[i]);\n amounts[i + 1] = outputAmount;\n }\n\n outputAmount = CurrencyAmount.fromFractionalAmount(\n route.output,\n amounts[amounts.length - 1].numerator,\n amounts[amounts.length - 1].denominator,\n );\n } else {\n invariant(amount.currency.equals(route.output), \"OUTPUT\");\n outputAmount = CurrencyAmount.fromFractionalAmount(route.output, amount.numerator, amount.denominator);\n amounts[amounts.length - 1] = CurrencyAmount.fromFractionalAmount(\n route.output.wrapped,\n amount.numerator,\n amount.denominator,\n );\n\n for (let i = route.tokenPath.length - 1; i > 0; i--) {\n const pool = route.pools[i - 1];\n const [inputAmount] = await pool.getInputAmount(amounts[i]);\n amounts[i - 1] = inputAmount;\n }\n\n inputAmount = CurrencyAmount.fromFractionalAmount(route.input, amounts[0].numerator, amounts[0].denominator);\n }\n\n populatedRoutes.push({ route, inputAmount, outputAmount });\n }\n\n return new Trade({\n routes: populatedRoutes,\n tradeType,\n });\n }\n\n /**\n * Creates a trade without computing the result of swapping through the route. Useful when you have simulated the trade\n * elsewhere and do not have any tick data\n * @template TInput The input token, either Ether or an ERC-20\n * @template TOutput The output token, either Ether or an ERC-20\n * @template TTradeType The type of the trade, either exact in or exact out\n * @param constructorArguments The arguments passed to the trade constructor\n * @returns The unchecked trade\n */\n public static createUncheckedTrade<\n TInput extends Token,\n TOutput extends Token,\n TTradeType extends TradeType,\n >(constructorArguments: {\n route: Route;\n inputAmount: CurrencyAmount;\n outputAmount: CurrencyAmount;\n tradeType: TTradeType;\n }): Trade {\n return new Trade({\n ...constructorArguments,\n routes: [\n {\n inputAmount: constructorArguments.inputAmount,\n outputAmount: constructorArguments.outputAmount,\n route: constructorArguments.route,\n },\n ],\n });\n }\n\n /**\n * Creates a trade without computing the result of swapping through the routes. Useful when you have simulated the trade\n * elsewhere and do not have any tick data\n * @template TInput The input token, either Ether or an ERC-20\n * @template TOutput The output token, either Ether or an ERC-20\n * @template TTradeType The type of the trade, either exact in or exact out\n * @param constructorArguments The arguments passed to the trade constructor\n * @returns The unchecked trade\n */\n public static createUncheckedTradeWithMultipleRoutes<\n TInput extends Token,\n TOutput extends Token,\n TTradeType extends TradeType,\n >(constructorArguments: {\n routes: {\n route: Route;\n inputAmount: CurrencyAmount;\n outputAmount: CurrencyAmount;\n }[];\n tradeType: TTradeType;\n }): Trade {\n return new Trade(constructorArguments);\n }\n\n /**\n * Construct a trade by passing in the pre-computed property values\n * @param routes The routes through which the trade occurs\n * @param tradeType The type of trade, exact input or exact output\n */\n private constructor({\n routes,\n tradeType,\n }: {\n routes: {\n route: Route;\n inputAmount: CurrencyAmount;\n outputAmount: CurrencyAmount;\n }[];\n tradeType: TTradeType;\n }) {\n const inputCurrency = routes[0].inputAmount.currency;\n const outputCurrency = routes[0].outputAmount.currency;\n invariant(\n routes.every(({ route }) => inputCurrency.wrapped.equals(route.input.wrapped)),\n \"INPUT_CURRENCY_MATCH\",\n );\n invariant(\n routes.every(({ route }) => outputCurrency.wrapped.equals(route.output.wrapped)),\n \"OUTPUT_CURRENCY_MATCH\",\n );\n\n const numPools = routes.map(({ route }) => route.pools.length).reduce((total, cur) => total + cur, 0);\n const poolAddressSet = new Set();\n for (const { route } of routes) {\n for (const pool of route.pools) {\n poolAddressSet.add(Pool.getAddress(pool.token0, pool.token1, pool.fee));\n }\n }\n\n invariant(numPools === poolAddressSet.size, \"POOLS_DUPLICATED\");\n\n this.swaps = routes;\n this.tradeType = tradeType;\n }\n\n /**\n * Get the minimum amount that must be received from this trade for the given slippage tolerance\n * @param slippageTolerance The tolerance of unfavorable slippage from the execution price of this trade\n * @returns The amount out\n */\n public minimumAmountOut(slippageTolerance: Percent, amountOut = this.outputAmount): CurrencyAmount {\n invariant(!slippageTolerance.lessThan(ZERO), \"SLIPPAGE_TOLERANCE\");\n if (this.tradeType === TradeType.EXACT_OUTPUT) {\n return amountOut;\n } \n const slippageAdjustedAmountOut = new Fraction(ONE)\n .add(slippageTolerance)\n .invert()\n .multiply(amountOut.quotient).quotient;\n return CurrencyAmount.fromRawAmount(amountOut.currency, slippageAdjustedAmountOut);\n \n }\n\n /**\n * Get the maximum amount in that can be spent via this trade for the given slippage tolerance\n * @param slippageTolerance The tolerance of unfavorable slippage from the execution price of this trade\n * @returns The amount in\n */\n public maximumAmountIn(slippageTolerance: Percent, amountIn = this.inputAmount): CurrencyAmount {\n invariant(!slippageTolerance.lessThan(ZERO), \"SLIPPAGE_TOLERANCE\");\n if (this.tradeType === TradeType.EXACT_INPUT) {\n return amountIn;\n } \n const slippageAdjustedAmountIn = new Fraction(ONE).add(slippageTolerance).multiply(amountIn.quotient).quotient;\n return CurrencyAmount.fromRawAmount(amountIn.currency, slippageAdjustedAmountIn);\n \n }\n\n /**\n * Return the execution price after accounting for slippage tolerance\n * @param slippageTolerance the allowed tolerated slippage\n * @returns The execution price\n */\n public worstExecutionPrice(slippageTolerance: Percent): Price {\n return new Price(\n this.inputAmount.currency,\n this.outputAmount.currency,\n this.maximumAmountIn(slippageTolerance).quotient,\n this.minimumAmountOut(slippageTolerance).quotient,\n );\n }\n\n /**\n * Given a list of pools, and a fixed amount in, returns the top `maxNumResults` trades that go from an input token\n * amount to an output token, making at most `maxHops` hops.\n * Note this does not consider aggregation, as routes are linear. It's possible a better route exists by splitting\n * the amount in among multiple routes.\n * @param pools the pools to consider in finding the best trade\n * @param nextAmountIn exact amount of input currency to spend\n * @param currencyOut the desired currency out\n * @param maxNumResults maximum number of results to return\n * @param maxHops maximum number of hops a returned trade can make, e.g. 1 hop goes through a single pool\n * @param currentPools used in recursion; the current list of pools\n * @param currencyAmountIn used in recursion; the original value of the currencyAmountIn parameter\n * @param bestTrades used in recursion; the current list of best trades\n * @returns The exact in trade\n */\n public static async bestTradeExactIn(\n pools: Pool[],\n currencyAmountIn: CurrencyAmount,\n currencyOut: TOutput,\n { maxNumResults = 3, maxHops = 3 }: BestTradeOptions = {},\n // used in recursion.\n currentPools: Pool[] = [],\n nextAmountIn: CurrencyAmount = currencyAmountIn,\n bestTrades: Trade[] = [],\n ): Promise[]> {\n invariant(pools.length > 0, \"POOLS\");\n invariant(maxHops > 0, \"MAX_HOPS\");\n invariant(currencyAmountIn === nextAmountIn || currentPools.length > 0, \"INVALID_RECURSION\");\n\n const amountIn = nextAmountIn.wrapped;\n const tokenOut = currencyOut.wrapped;\n for (let i = 0; i < pools.length; i++) {\n const pool = pools[i];\n // pool irrelevant\n if (!pool.token0.equals(amountIn.currency) && !pool.token1.equals(amountIn.currency)) continue;\n\n let amountOut: CurrencyAmount;\n try {\n [amountOut] = await pool.getOutputAmount(amountIn);\n } catch (error) {\n // input too low\n if (error.isInsufficientInputAmountError) {\n continue;\n }\n throw error;\n }\n // we have arrived at the output token, so this is the final trade of one of the paths\n if (amountOut.currency.isToken && amountOut.currency.equals(tokenOut)) {\n sortedInsert(\n bestTrades,\n await Trade.fromRoute(\n new Route([...currentPools, pool], currencyAmountIn.currency, currencyOut),\n currencyAmountIn,\n TradeType.EXACT_INPUT,\n ),\n maxNumResults,\n tradeComparator,\n );\n } else if (maxHops > 1 && pools.length > 1) {\n const poolsExcludingThisPool = pools.slice(0, i).concat(pools.slice(i + 1, pools.length));\n\n // otherwise, consider all the other paths that lead from this token as long as we have not exceeded maxHops\n await Trade.bestTradeExactIn(\n poolsExcludingThisPool,\n currencyAmountIn,\n currencyOut,\n {\n maxNumResults,\n maxHops: maxHops - 1,\n },\n [...currentPools, pool],\n amountOut,\n bestTrades,\n );\n }\n }\n\n return bestTrades;\n }\n\n /**\n * similar to the above method but instead targets a fixed output amount\n * given a list of pools, and a fixed amount out, returns the top `maxNumResults` trades that go from an input token\n * to an output token amount, making at most `maxHops` hops\n * note this does not consider aggregation, as routes are linear. it's possible a better route exists by splitting\n * the amount in among multiple routes.\n * @param pools the pools to consider in finding the best trade\n * @param currencyIn the currency to spend\n * @param currencyAmountOut the desired currency amount out\n * @param nextAmountOut the exact amount of currency out\n * @param maxNumResults maximum number of results to return\n * @param maxHops maximum number of hops a returned trade can make, e.g. 1 hop goes through a single pool\n * @param currentPools used in recursion; the current list of pools\n * @param bestTrades used in recursion; the current list of best trades\n * @returns The exact out trade\n */\n public static async bestTradeExactOut(\n pools: Pool[],\n currencyIn: TInput,\n currencyAmountOut: CurrencyAmount,\n { maxNumResults = 3, maxHops = 3 }: BestTradeOptions = {},\n // used in recursion.\n currentPools: Pool[] = [],\n nextAmountOut: CurrencyAmount = currencyAmountOut,\n bestTrades: Trade[] = [],\n ): Promise[]> {\n invariant(pools.length > 0, \"POOLS\");\n invariant(maxHops > 0, \"MAX_HOPS\");\n invariant(currencyAmountOut === nextAmountOut || currentPools.length > 0, \"INVALID_RECURSION\");\n\n const amountOut = nextAmountOut.wrapped;\n const tokenIn = currencyIn.wrapped;\n for (let i = 0; i < pools.length; i++) {\n const pool = pools[i];\n // pool irrelevant\n if (!pool.token0.equals(amountOut.currency) && !pool.token1.equals(amountOut.currency)) continue;\n\n let amountIn: CurrencyAmount;\n try {\n [amountIn] = await pool.getInputAmount(amountOut);\n } catch (error) {\n // not enough liquidity in this pool\n if (error.isInsufficientReservesError) {\n continue;\n }\n throw error;\n }\n // we have arrived at the input token, so this is the first trade of one of the paths\n if (amountIn.currency.equals(tokenIn)) {\n sortedInsert(\n bestTrades,\n await Trade.fromRoute(\n new Route([pool, ...currentPools], currencyIn, currencyAmountOut.currency),\n currencyAmountOut,\n TradeType.EXACT_OUTPUT,\n ),\n maxNumResults,\n tradeComparator,\n );\n } else if (maxHops > 1 && pools.length > 1) {\n const poolsExcludingThisPool = pools.slice(0, i).concat(pools.slice(i + 1, pools.length));\n\n // otherwise, consider all the other paths that arrive at this token as long as we have not exceeded maxHops\n await Trade.bestTradeExactOut(\n poolsExcludingThisPool,\n currencyIn,\n currencyAmountOut,\n {\n maxNumResults,\n maxHops: maxHops - 1,\n },\n [pool, ...currentPools],\n amountIn,\n bestTrades,\n );\n }\n }\n\n return bestTrades;\n }\n}\n","import { FeeAmount, Token } from \"@icpswap/swap-sdk\";\nimport { useMemo } from \"react\";\nimport { useAllCurrencyCombinations } from \"./useAllCurrencyCombinations\";\nimport { PoolState, usePools } from \"./usePools\";\n\nexport function useSwapPools(currencyIn: Token | undefined, currencyOut: Token | undefined) {\n const allCurrencyCombinations = useAllCurrencyCombinations(currencyIn, currencyOut);\n\n const allCurrencyCombinationsWithAllFees: [Token, Token, FeeAmount][] = useMemo(() => {\n return allCurrencyCombinations.reduce(\n (list, [tokenA, tokenB]) => {\n return list.concat([\n // [tokenA, tokenB, FeeAmount.LOW],\n [tokenA, tokenB, FeeAmount.MEDIUM],\n // [tokenA, tokenB, FeeAmount.HIGH],\n ]);\n },\n [] as [Token, Token, FeeAmount][],\n );\n }, [allCurrencyCombinations]);\n\n const pools = usePools(allCurrencyCombinationsWithAllFees);\n\n return useMemo(() => {\n return {\n pools: pools\n .filter((tuple) => {\n return (tuple[0] === PoolState.EXISTS || tuple[0] === PoolState.NOT_CHECK) && tuple[1] !== null;\n })\n .map(([, pool]) => pool),\n loading: pools.some(([state]) => state === PoolState.LOADING),\n checked: !pools.some(([state]) => state === PoolState.NOT_CHECK),\n noLiquidity: !!pools.find((tuple) => tuple[0] === PoolState.NOT_EXISTS),\n };\n }, [pools]);\n}\n","import { useMemo } from \"react\";\nimport { Token } from \"@icpswap/swap-sdk\";\n\nexport function useAllCurrencyCombinations(tokenA: Token | undefined, tokenB: Token | undefined): Token[][] {\n return useMemo(() => {\n return tokenA && tokenB\n ? [[tokenA, tokenB]]\n .filter((tokens) => Boolean(tokens[0] && tokens[1]))\n .filter(([t0, t1]) => t0.address !== t1.address)\n : [];\n }, [tokenA, tokenB]);\n}\n","import { Route, Pool, Token } from \"@icpswap/swap-sdk\";\nimport { useMemo } from \"react\";\nimport { useIsSingleHop } from \"store/swap/cache/hooks\";\nimport { useSwapPools } from \"./useSwapPools\";\n\nfunction poolEquals(poolA: Pool, poolB: Pool) {\n return (\n poolA === poolB ||\n (poolA.token0.equals(poolB.token0) && poolA.token1.equals(poolB.token1) && poolA.fee === poolB.fee)\n );\n}\n\nexport function computeAllRoutes(\n currencyIn: Token,\n currencyOut: Token,\n pools: (Pool | null)[],\n currentPath: Pool[],\n allPaths: Route[],\n startCurrencyIn: Token = currencyIn,\n maxHops = 2,\n) {\n const tokenIn = currencyIn?.wrapped;\n const tokenOut = currencyOut?.wrapped;\n\n if (!tokenIn || !tokenOut) throw new Error(\"Missing tokenIn/tokenOut\");\n\n for (const pool of pools) {\n if (!pool || !pool.involvesToken(tokenIn) || currentPath.find((pathPool) => poolEquals(pool, pathPool))) continue;\n\n const outputToken = pool.token0.equals(tokenIn) ? pool.token1 : pool.token0;\n if (outputToken.equals(tokenOut)) {\n allPaths.push(new Route([...currentPath, pool], startCurrencyIn, currencyOut));\n } else if (maxHops > 1) {\n computeAllRoutes(outputToken, currencyOut, pools, [...currentPath, pool], allPaths, startCurrencyIn, maxHops - 1);\n }\n }\n\n return allPaths;\n}\n\nexport function useAllRoutes(currencyIn: Token | undefined, currencyOut: Token | undefined) {\n const { pools, loading: poolsLoading, checked, noLiquidity } = useSwapPools(currencyIn, currencyOut);\n\n const singleHopOnly = useIsSingleHop();\n\n return useMemo(() => {\n if (poolsLoading || !pools || !currencyIn || !currencyOut) return { loading: true, routes: [], checked: false };\n const routes = computeAllRoutes(currencyIn, currencyOut, pools, [], [], currencyIn, singleHopOnly ? 1 : 2);\n return { loading: false, routes, checked, noLiquidity };\n }, [currencyIn, currencyOut, pools, poolsLoading, singleHopOnly, checked, noLiquidity]);\n}\n","import { useMemo } from \"react\";\nimport { TradeType } from \"@icpswap/constants\";\nimport { CurrencyAmount, Trade, Token, Route } from \"@icpswap/swap-sdk\";\nimport { tryParseAmount } from \"utils/swap\";\nimport { BigNumber } from \"bignumber.js\";\nimport { formatTokenAmount, numberToString } from \"@icpswap/utils\";\nimport { useQuoteExactInput, useSwapPoolAvailable } from \"hooks/swap/v3Calls\";\n\nimport { useAllRoutes } from \"./useAllRoutes\";\n\nexport enum TradeState {\n LOADING = \"LOADING\",\n INVALID = \"INVALID\",\n NO_ROUTE_FOUND = \"NO_ROUTE_FOUND\",\n VALID = \"VALID\",\n SYNCING = \"SYNCING\",\n NOT_CHECK = \"NOT_CHECK\",\n}\n\nexport function useBestTrade(\n inputCurrency: Token | undefined,\n outputCurrency: Token | undefined,\n typedValue: string | undefined,\n) {\n const actualSwapValue = typedValue;\n\n // reload when typeValue is changed\n const { routes, loading: routesLoading, checked, noLiquidity } = useAllRoutes(inputCurrency, outputCurrency);\n\n const zeroForOne =\n inputCurrency && outputCurrency ? inputCurrency.wrapped.sortsBefore(outputCurrency.wrapped) : undefined;\n\n const tradePoolId = useMemo(() => {\n if (!routes) return undefined;\n return routes[0]?.pools[0]?.id;\n }, [routes]);\n\n const params = useMemo(() => {\n if (!actualSwapValue || zeroForOne === undefined) return undefined;\n\n const route = routes\n .sort((a, b) => {\n if (a.midPrice.greaterThan(b.midPrice)) return -1;\n if (a.midPrice.lessThan(b.midPrice)) return 1;\n return 0;\n })\n .map((route) => {\n return {\n pool: route.pools[0]?.id,\n tokenIn: route.input?.wrapped?.address,\n tokenOut: route.output?.wrapped?.address,\n amountIn: actualSwapValue ? numberToString(formatTokenAmount(actualSwapValue, route.input?.decimals)) : \"0\",\n feeAmount: route.pools[0]?.fee,\n };\n });\n\n if (!route[0]) return undefined;\n\n return JSON.stringify({\n poolId: route[0].pool,\n amountIn: route[0].amountIn,\n zeroForOne,\n });\n }, [routes, actualSwapValue]);\n\n const available = useSwapPoolAvailable(tradePoolId);\n\n const { loading: exactInputLoading, result: _quotesResults } = useQuoteExactInput(params);\n\n const quotesResults = useMemo(() => {\n if (_quotesResults) {\n return [{ amountOut: `0x${new BigNumber(String(_quotesResults)).toString(16)}` }];\n }\n return [];\n }, [_quotesResults, exactInputLoading]);\n\n return useMemo(() => {\n if (\n !inputCurrency ||\n !outputCurrency ||\n inputCurrency.equals(outputCurrency) ||\n !actualSwapValue ||\n new BigNumber(actualSwapValue).isEqualTo(0)\n ) {\n return {\n state: TradeState.INVALID,\n trade: null,\n tradePoolId,\n routes,\n noLiquidity,\n };\n }\n\n if (routesLoading || exactInputLoading) {\n return {\n state: TradeState.LOADING,\n trade: null,\n tradePoolId,\n routes,\n noLiquidity,\n };\n }\n\n const { bestRoute, amountOut } = quotesResults.reduce(\n (currentBest: { bestRoute: Route | null; amountOut: string | null }, { amountOut }, i) => {\n if (!amountOut) return currentBest;\n\n if (currentBest.amountOut === null) {\n return {\n bestRoute: routes[i],\n amountOut,\n };\n }\n if (new BigNumber(currentBest.amountOut).isLessThan(amountOut)) {\n return {\n bestRoute: routes[i],\n amountOut,\n };\n }\n\n return currentBest;\n },\n {\n bestRoute: null,\n amountOut: null,\n },\n );\n\n const inputAmount = tryParseAmount(actualSwapValue, inputCurrency);\n\n if (!bestRoute || !amountOut || !inputAmount) {\n return {\n state: TradeState.NO_ROUTE_FOUND,\n trade: null,\n tradePoolId,\n routes,\n noLiquidity,\n };\n }\n\n return {\n state: checked ? TradeState.VALID : TradeState.NOT_CHECK,\n available,\n trade: Trade.createUncheckedTrade({\n route: bestRoute,\n tradeType: TradeType.EXACT_INPUT,\n inputAmount,\n outputAmount: CurrencyAmount.fromRawAmount(outputCurrency, amountOut.toString()),\n }),\n tradePoolId,\n routes,\n noLiquidity,\n };\n }, [\n inputCurrency,\n actualSwapValue,\n outputCurrency,\n quotesResults,\n routes,\n routesLoading,\n available,\n checked,\n tradePoolId,\n noLiquidity,\n ]);\n}\n","import { Principal } from \"@dfinity/principal\";\nimport { resultFormat } from \"@icpswap/utils\";\nimport { swapPool } from \"@icpswap/actor\";\nimport { useCallsData } from \"@icpswap/hooks\";\nimport { useCallback } from \"react\";\n\nexport async function getUserPositionIds(canisterId: string, principal: string) {\n return resultFormat>(\n await (await swapPool(canisterId)).getUserPositionIdsByPrincipal(Principal.fromText(principal)),\n ).data;\n}\n\nexport function useUserPositionIds(canisterId: string | undefined, principal: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || !principal) return undefined;\n return await getUserPositionIds(canisterId, principal);\n }, [canisterId, principal]),\n );\n}\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { getSwapTokenArgs } from \"hooks/token/index\";\nimport { userStorage, swapPool } from \"@icpswap/actor\";\nimport {\n useCallsData,\n useInfoUserStorageIds,\n getInfoUserStorageIds,\n quote,\n getSwapPoolMetadata,\n getSwapPosition,\n getSwapPool,\n createSwapPool,\n _getSwapPoolAllBalance,\n} from \"@icpswap/hooks\";\nimport { resultFormat, isAvailablePageArgs } from \"@icpswap/utils\";\nimport { FeeAmount } from \"@icpswap/swap-sdk\";\nimport type { PaginationResult, SwapPoolData, UserStorageTransaction } from \"@icpswap/types\";\nimport BigNumber from \"bignumber.js\";\nimport { swapFactory_update_call } from \"actor/swap\";\nimport { UserPosition } from \"types/swap\";\nimport { Principal } from \"@dfinity/principal\";\nimport { useStateCallsData } from \"hooks/useCallsData\";\nimport { sortToken } from \"utils/swap\";\n\nexport async function getPool(token0: string, token1: string, fee: FeeAmount = FeeAmount.MEDIUM) {\n const sortedToken = sortToken(token0, token1);\n\n return await getSwapPool({\n fee: BigInt(fee),\n token0: getSwapTokenArgs(sortedToken.token0),\n token1: getSwapTokenArgs(sortedToken.token1),\n });\n}\n\nexport async function getPool_update_call(token0: string, token1: string, fee: FeeAmount = FeeAmount.MEDIUM) {\n const sortedToken = sortToken(token0, token1);\n\n return resultFormat(\n await (\n await swapFactory_update_call()\n ).getPool({\n fee: BigInt(fee),\n token0: getSwapTokenArgs(sortedToken.token0),\n token1: getSwapTokenArgs(sortedToken.token1),\n }),\n ).data;\n}\n\nexport async function createPool(token0: string, token1: string, fee: FeeAmount, sqrtPriceX96: string) {\n let _token0 = token0;\n let _token1 = token1;\n\n if (_token0 > _token1) {\n _token0 = token1;\n _token1 = token0;\n }\n\n return await createSwapPool({\n fee: BigInt(fee),\n token0: getSwapTokenArgs(_token0),\n token1: getSwapTokenArgs(_token1),\n sqrtPriceX96,\n });\n}\n\nexport { deposit, mint, increaseLiquidity, decreaseLiquidity, quote, swap, collect, withdraw } from \"@icpswap/hooks\";\n\nexport async function getPositionDetailsFromId(poolId: string, positionId: string) {\n const pool = await getSwapPoolMetadata(poolId);\n const position = await getSwapPosition(poolId, BigInt(positionId));\n\n if (pool && position) {\n return {\n tickLower: position.tickLower,\n tickUpper: position.tickUpper,\n liquidity: position.liquidity,\n tokensOwed0: position.tokensOwed0,\n tokensOwed1: position.tokensOwed1,\n feeGrowthInside0LastX128: position.feeGrowthInside0LastX128,\n feeGrowthInside1LastX128: position.feeGrowthInside1LastX128,\n index: Number(positionId),\n id: poolId,\n token0: pool.token0.address,\n token1: pool.token1.address,\n fee: pool.fee.toString(),\n } as UserPosition;\n }\n\n return undefined;\n}\n\nexport function usePositionDetailsFromId(poolId: string | undefined, positionId: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (poolId === undefined || positionId === undefined) return undefined;\n return await getPositionDetailsFromId(poolId, positionId);\n }, [poolId, positionId]),\n );\n}\n\nexport function useQuoteExactInput(args: string | undefined) {\n const call = useCallback(async () => {\n if (!args) return undefined;\n\n const _args = JSON.parse(args) as { amountIn: string; zeroForOne: boolean; poolId: string };\n\n return await quote(_args.poolId, {\n amountIn: _args.amountIn,\n zeroForOne: _args.zeroForOne,\n amountOutMinimum: \"0\",\n });\n }, [args]);\n\n return useStateCallsData(call, \"quoteExactInput\", !!args);\n}\n\nexport function useQuoteUnitPrice(\n poolId: string | undefined,\n amountIn: string | undefined,\n zeroForOne: boolean | undefined,\n) {\n return useCallsData(\n useCallback(async () => {\n if (!amountIn || amountIn === \"0\" || !poolId || zeroForOne === undefined) return undefined;\n return await quote(poolId, {\n amountIn,\n zeroForOne,\n amountOutMinimum: \"0\",\n });\n }, [amountIn, poolId, zeroForOne]),\n );\n}\n\nexport async function getPoolCanisterId(token0Id: string, token1Id: string, fee: FeeAmount) {\n const pool = await getPool(token0Id, token1Id, fee);\n return pool?.canisterId.toString();\n}\n\nexport function usePoolCanisterId(\n token0Id: string | undefined | null,\n token1Id: string | undefined | null,\n fee: FeeAmount | undefined | null,\n) {\n return useCallsData(\n useCallback(async () => {\n if (!token0Id || !token1Id || !fee) return undefined;\n return await getPoolCanisterId(token0Id, token1Id, fee);\n }, [token0Id, token1Id, fee]),\n );\n}\n\nexport type TokenAmounts = [Principal, { balance0: bigint; balance1: bigint }];\n\nexport async function getPoolTokenAmounts(poolId: string) {\n const result = await _getSwapPoolAllBalance(poolId);\n\n if (result) {\n return result.reduce(\n (prev, curr) => {\n return {\n balance0: prev.balance0.plus(curr[1].balance0.toString()),\n balance1: prev.balance1.plus(curr[1].balance1.toString()),\n };\n },\n { balance0: new BigNumber(0), balance1: new BigNumber(1) },\n );\n }\n\n return undefined;\n}\n\nexport function usePoolTokenAmounts(poolId: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!poolId) return undefined;\n return await getPoolTokenAmounts(poolId);\n }, [poolId]),\n );\n}\n\nexport type Key = {\n token0: string;\n token1: string;\n fee: FeeAmount;\n};\n\nexport function usePoolIdsFromKey(keys: (Key | undefined)[] | undefined) {\n const [ids, setIds] = useState<(string | undefined)[]>([]);\n\n useEffect(() => {\n const call = async () => {\n const queries = keys?.map(async (key) => {\n if (!key) return undefined;\n return await getPoolCanisterId(key.token0, key.token1, key.fee);\n });\n\n if (queries && !!queries.length) {\n const ids = await Promise.all(queries);\n setIds(ids);\n }\n };\n\n call();\n }, [keys]);\n\n return useMemo(() => ids, [ids]);\n}\n\nexport function usePoolIdFromKey(key: Key | undefined) {\n const ids = usePoolIdsFromKey([key]);\n return useMemo(() => ids[0], [ids]);\n}\n\nexport function usePoolsTokenAmountsFromKey(keys: (Key | undefined)[] | undefined) {\n const [amounts, setAmounts] = useState<({ balance0: BigNumber; balance1: BigNumber } | undefined)[]>([]);\n const [loading, setLoading] = useState(false);\n\n const ids = usePoolIdsFromKey(keys);\n\n useEffect(() => {\n const call = async () => {\n if (ids.length) {\n setLoading(true);\n const queries = ids?.map(async (id) => {\n if (id) return await getPoolTokenAmounts(id);\n return undefined;\n });\n\n if (queries && !!queries.length) {\n const results = await Promise.all<{ balance0: BigNumber; balance1: BigNumber } | undefined>(queries);\n setAmounts(results);\n }\n setLoading(false);\n }\n };\n\n call();\n }, [ids]);\n\n return useMemo(() => ({ result: amounts, loading }), [amounts, loading]);\n}\n\nexport function usePoolTokenAmountsFromKey(key: Key | undefined) {\n const keys = useMemo(() => [key], [key]);\n const { result, loading } = usePoolsTokenAmountsFromKey(keys);\n return useMemo(() => ({ result: result[0], loading }), [result, loading]);\n}\n\nexport function useUserSwapTransactions(principal: string | undefined, offset: number, limit: number) {\n const { result: storageIds } = useInfoUserStorageIds(principal);\n\n const storageId = useMemo(() => {\n if (!storageIds) return undefined;\n return storageIds[storageIds.length - 1];\n }, [storageIds]);\n\n return useCallsData(\n useCallback(async () => {\n if (!principal || !isAvailablePageArgs(offset, limit)) return undefined;\n\n const storageIds = await getInfoUserStorageIds(principal);\n\n if (!storageIds || storageIds.length === 0) return undefined;\n\n const storageId = storageIds[storageIds.length - 1];\n\n return resultFormat>(\n await (await userStorage(storageId)).get(principal, BigInt(offset), BigInt(limit), []),\n ).data;\n }, [principal, offset, limit, storageId]),\n );\n}\n\nexport async function getSwapPoolAvailable(canisterId: string) {\n const result = resultFormat<{ whitelist: string[]; available: boolean }>(\n await (await swapPool(canisterId)).getAvailabilityState(),\n ).data;\n\n return result?.available;\n}\n\nexport function useSwapPoolAvailable(canisterId: string | undefined) {\n const [available, setAvailable] = useState(true);\n\n useEffect(() => {\n const call = async () => {\n if (!canisterId) return;\n const available = await getSwapPoolAvailable(canisterId);\n setAvailable(!!available);\n };\n\n call();\n }, [canisterId]);\n\n return useMemo(() => available, [available]);\n}\n","import { useCallback } from \"react\";\nimport { BigNumber, isValidPrincipal, resultFormat, isAvailablePageArgs, parseTokenAmount } from \"@icpswap/utils\";\nimport { ICP } from \"@icpswap/tokens\";\nimport { Principal } from \"@dfinity/principal\";\nimport { TokenInfo } from \"types/token\";\nimport { tokenAdapter, icpAdapter } from \"@icpswap/token-adapter\";\nimport { tokenList } from \"@icpswap/actor\";\nimport { getTokenStandard } from \"store/token/cache/hooks\";\nimport TokenDefaultLogo from \"assets/images/Token_default_logo.png\";\nimport { useCallsData } from \"@icpswap/hooks\";\nimport { ResultStatus, StatusResult, TOKEN_STANDARD } from \"@icpswap/types\";\n\nexport async function getTokenTotalHolder(canisterId: string | undefined) {\n if (!canisterId) return undefined;\n\n return (\n await tokenAdapter.totalHolders({\n canisterId,\n })\n ).data;\n}\n\nexport function useTokenTotalHolder(canisterId: string | undefined, reload?: boolean) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getTokenTotalHolder(canisterId);\n }, [canisterId]),\n reload,\n );\n}\n\nexport function useTokenHolders(canisterId: string, offset: number, limit: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || !isAvailablePageArgs(offset, limit)) return undefined;\n return (\n await tokenAdapter.holders({\n canisterId,\n params: {\n offset: BigInt(offset),\n limit: BigInt(limit),\n },\n })\n ).data;\n }, [offset, limit, canisterId]),\n );\n}\n\nexport interface TokenTransferProps {\n canisterId: string;\n to: string;\n amount: BigNumber | number;\n from: string;\n subaccount?: number[];\n memo?: number[] | bigint;\n fee?: number | string | bigint;\n decimals?: number;\n}\n\nexport async function tokenTransfer({\n canisterId,\n to,\n amount,\n from,\n subaccount,\n memo,\n fee,\n decimals,\n}: TokenTransferProps) {\n let result: StatusResult = { data: undefined, message: \"\", status: ResultStatus.ERROR };\n\n if (canisterId === ICP.address) {\n result = await icpAdapter.transfer({\n canisterId,\n identity: true,\n params: {\n from: isValidPrincipal(from) ? { principal: Principal.fromText(from) } : { address: from },\n to: isValidPrincipal(to) ? { principal: Principal.fromText(to) } : { address: to },\n amount: BigInt(amount.toString()),\n subaccount,\n memo,\n },\n });\n } else {\n result = await tokenAdapter.transfer({\n identity: true,\n canisterId,\n params: {\n from: isValidPrincipal(from) ? { principal: Principal.fromText(from) } : { address: from },\n to: isValidPrincipal(to) ? { principal: Principal.fromText(to) } : { address: to },\n amount: BigInt(amount.toString()),\n subaccount,\n memo,\n fee: fee !== undefined ? BigInt(fee) : undefined,\n },\n });\n }\n\n const { data, message, status } = result;\n\n let new_message = message;\n\n if (new_message.includes(\"InsufficientFunds\")) {\n const balance = new_message.replace(/\\D/g, \"\");\n\n if (balance) {\n new_message = `InsufficientFunds: ${decimals ? parseTokenAmount(balance, decimals).toFormat() : balance}`;\n }\n }\n\n return {\n status,\n message: new_message,\n data,\n } as StatusResult;\n}\n\nexport async function getTokenTransaction(\n canisterId: string,\n account: string | undefined,\n offset: number,\n limit: number,\n) {\n return (\n await tokenAdapter.transactions({\n canisterId,\n params: {\n user: account ? { address: account } : undefined,\n offset,\n limit,\n },\n })\n ).data;\n}\n\nexport function useTokenTransactions(canisterId: string, account: string | undefined, offset: number, limit: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || !isAvailablePageArgs(offset, limit)) return undefined;\n return getTokenTransaction(canisterId, account, offset, limit);\n }, [offset, limit, canisterId]),\n );\n}\n\nexport async function getTokenSupply(canisterId: string | undefined) {\n if (!canisterId) return undefined;\n return (await tokenAdapter.supply({ canisterId })).data;\n}\n\nexport function useTokenSupply(canisterId: string | undefined, reload?: boolean) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getTokenSupply(canisterId);\n }, [canisterId]),\n reload,\n );\n}\n\nexport async function getTokenMetadata(canisterId: string) {\n return tokenAdapter.metadata({ canisterId });\n}\n\nexport function useTokenMetadata(canisterId: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return (await getTokenMetadata(canisterId)).data;\n }, [canisterId]),\n );\n}\n\nexport async function getTokenListLogo(canisterId: string | undefined) {\n if (!canisterId) return undefined;\n return resultFormat(await (await tokenList()).getLogo(canisterId)).data;\n}\n\nfunction isICRCToken(tokenId: string) {\n const tokenStandard = getTokenStandard(tokenId);\n return tokenStandard === TOKEN_STANDARD.ICRC1 || tokenStandard === TOKEN_STANDARD.ICRC2;\n}\n\nexport async function getTokenInfo(canisterId: string | undefined) {\n if (!canisterId) return undefined;\n\n return Promise.all([\n getTokenMetadata(canisterId),\n isICRCToken(canisterId) ? getTokenListLogo(canisterId) : null,\n ]).then(([result, logo]) => {\n if (!result) return undefined;\n\n const metadata = result.data;\n\n if (!metadata || metadata.decimals === undefined || metadata.fee === undefined || metadata.symbol === undefined)\n return undefined;\n\n const _logo = isICRCToken(canisterId) ? logo || metadata.logo : metadata.logo;\n\n return {\n logo: _logo || TokenDefaultLogo,\n transFee: metadata.fee,\n decimals: metadata.decimals,\n name: metadata.name,\n symbol: metadata.symbol,\n canisterId,\n standardType: getTokenStandard(canisterId) ?? TOKEN_STANDARD.ICRC1,\n totalSupply: BigInt(0),\n } as TokenInfo;\n });\n}\n\nexport function useTokenInfo(canisterId: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getTokenInfo(canisterId);\n }, [canisterId]),\n );\n}\n","import { useMemo } from \"react\";\nimport type { Erc20MinterInfo } from \"@icpswap/types\";\nimport { useTokenFromActiveNetwork } from \"hooks/web3/useTokenFromNetwork\";\n\nexport function useERC20Token(tokenAddress: string | undefined) {\n return useTokenFromActiveNetwork(tokenAddress);\n}\n\nexport function useERC20TokenByChainKeyId(\n tokenId: string | undefined,\n chainKeyMinterInfo: Erc20MinterInfo | undefined,\n) {\n const tokenAddress = useMemo(() => {\n if (!tokenId || !chainKeyMinterInfo || !chainKeyMinterInfo.supported_ckerc20_tokens[0]) return undefined;\n\n const chainKeyInfo = chainKeyMinterInfo.supported_ckerc20_tokens[0].find(\n (token) => token.ledger_canister_id.toString() === tokenId,\n );\n\n return chainKeyInfo?.erc20_contract_address;\n }, [tokenId, chainKeyMinterInfo]);\n\n return useTokenFromActiveNetwork(tokenAddress);\n}\n","import { WRAPPED_ICP_TOKEN_INFO } from \"constants/index\";\nimport store from \"store/index\";\nimport { ICP_TOKEN_INFO } from \"@icpswap/tokens\";\n\nexport function getSwapTokenArgs(token: string) {\n const { standards } = store.getState().tokenCache;\n let standard = standards[token];\n if (token === WRAPPED_ICP_TOKEN_INFO.canisterId) standard = WRAPPED_ICP_TOKEN_INFO.standardType;\n if (token === ICP_TOKEN_INFO.canisterId) standard = ICP_TOKEN_INFO.standardType;\n if (!standard) throw Error(`No token standard: ${token}, please reload the page`);\n return { address: token, standard: standard as string };\n}\n\nexport * from \"./useAllowance\";\nexport * from \"./useApprove\";\nexport * from \"./useTokenInfo\";\nexport * from \"./useTokenBalance\";\nexport * from \"./useTokenInSNS\";\nexport * from \"./useERC20Token\";\n","import { Principal } from \"@dfinity/principal\";\nimport { isNullArgs, isValidPrincipal } from \"@icpswap/utils\";\nimport { useCallback } from \"react\";\nimport { useCallsData } from \"@icpswap/hooks\";\nimport { tokenAdapter } from \"@icpswap/token-adapter\";\nimport { Null } from \"@icpswap/types\";\n\nexport interface AllowanceArgs {\n canisterId: string;\n spender: string;\n spenderSub?: number[] | Null;\n owner: string;\n ownerSub?: number[] | Null;\n}\n\nexport async function allowance({ canisterId, owner, spender, spenderSub, ownerSub }: AllowanceArgs) {\n return (\n await tokenAdapter.allowance({\n canisterId,\n params: {\n spender: Principal.fromText(spender),\n owner: isValidPrincipal(owner) ? { principal: Principal.fromText(owner) } : { address: owner },\n spenderSub,\n subaccount: ownerSub,\n },\n })\n ).data;\n}\n\nexport interface useAllowanceArgs {\n canisterId: string | Null;\n spender: string | Null;\n spenderSub?: number[];\n owner: string | Null;\n ownerSub?: number[];\n}\n\nexport function useAllowance({ canisterId, spender, spenderSub, owner, ownerSub }: useAllowanceArgs) {\n return useCallsData(\n useCallback(async () => {\n if (!spender || !owner || isNullArgs(canisterId)) return undefined;\n return await allowance({\n spender,\n spenderSub,\n owner,\n ownerSub,\n canisterId,\n });\n }, [spender, spenderSub, owner, ownerSub, canisterId]),\n );\n}\n","import { useCallback } from \"react\";\nimport { Principal } from \"@dfinity/principal\";\nimport { TOKEN_STANDARD, tokenAdapter } from \"@icpswap/token-adapter\";\nimport { ResultStatus, StatusResult } from \"@icpswap/types\";\nimport { allowance } from \"./useAllowance\";\n\nexport interface ApproveArgs {\n canisterId: string;\n spender: string;\n value: number | string | bigint;\n account: string | Principal | undefined;\n standard?: TOKEN_STANDARD;\n}\n\nexport async function approve({ canisterId, spender, value, account, standard }: ApproveArgs) {\n if (!account) {\n return { status: ResultStatus.ERROR, data: undefined, message: \"No account\" };\n }\n\n if (standard) {\n const adapter = tokenAdapter.getAdapterByName(standard);\n return adapter.approve({\n canisterId,\n identity: true,\n params: {\n spender: Principal.fromText(spender),\n allowance: BigInt(value),\n subaccount: undefined,\n account,\n },\n });\n }\n\n return tokenAdapter.approve({\n canisterId,\n identity: true,\n params: {\n spender: Principal.fromText(spender),\n allowance: BigInt(value),\n subaccount: undefined,\n account,\n },\n });\n}\n\nexport function useApprove(): (approveParams: ApproveArgs) => Promise> {\n return useCallback(async ({ canisterId, spender, value, account, standard }: ApproveArgs) => {\n if (!account)\n return await Promise.resolve({\n status: \"err\",\n message: \"Invalid account\",\n } as StatusResult);\n\n const allowedBalance = await allowance({\n canisterId,\n owner: account.toString(),\n spender,\n });\n\n if (!allowedBalance || allowedBalance === BigInt(0) || BigInt(value) > allowedBalance) {\n return await approve({\n canisterId,\n spender,\n value,\n account,\n standard,\n });\n }\n return await Promise.resolve({\n status: \"ok\",\n data: true,\n message: \"You have approved successfully\",\n } as StatusResult);\n }, []);\n}\n","import { useMemo } from \"react\";\nimport { useFetchSnsAllTokensInfo } from \"store/sns/hooks\";\n\nexport function useSNSTokenRootId(tokenId: string | undefined) {\n const { result: snsAllTokensInfo } = useFetchSnsAllTokensInfo();\n\n return useMemo(() => {\n if (!tokenId || !snsAllTokensInfo) return undefined;\n const snsTokenInfo = snsAllTokensInfo.find((e) => e.canister_ids.ledger_canister_id === tokenId);\n return snsTokenInfo?.canister_ids.root_canister_id;\n }, [snsAllTokensInfo, tokenId]);\n}\n","export const idlFactory = ({ IDL }: any) => {\n const TxReceipt = IDL.Variant({\n Ok: IDL.Nat,\n Err: IDL.Variant({\n InsufficientAllowance: IDL.Null,\n InsufficientBalance: IDL.Null,\n ErrorOperationStyle: IDL.Null,\n Unauthorized: IDL.Null,\n LedgerTrap: IDL.Null,\n ErrorTo: IDL.Null,\n Other: IDL.Text,\n BlockUsed: IDL.Null,\n AmountTooSmall: IDL.Null,\n }),\n });\n const Metadata = IDL.Record({\n fee: IDL.Nat,\n decimals: IDL.Nat8,\n owner: IDL.Principal,\n logo: IDL.Text,\n name: IDL.Text,\n totalSupply: IDL.Nat,\n symbol: IDL.Text,\n });\n const TokenInfo = IDL.Record({\n holderNumber: IDL.Nat64,\n deployTime: IDL.Nat64,\n metadata: Metadata,\n historySize: IDL.Nat64,\n cycles: IDL.Nat64,\n feeTo: IDL.Principal,\n });\n return IDL.Service({\n allowance: IDL.Func([IDL.Principal, IDL.Principal], [IDL.Nat], [\"query\"]),\n approve: IDL.Func([IDL.Principal, IDL.Nat], [TxReceipt], []),\n balanceOf: IDL.Func([IDL.Principal], [IDL.Nat], []),\n cleanOutOldAllowances: IDL.Func([], [IDL.Nat], []),\n decimals: IDL.Func([], [IDL.Nat8], [\"query\"]),\n filterAllowancesArray: IDL.Func(\n [IDL.Int],\n [IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Tuple(IDL.Nat, IDL.Int)))))],\n [],\n ),\n getASize: IDL.Func([], [IDL.Nat], [\"query\"]),\n getAgeAllowanceLimit: IDL.Func([], [IDL.Int], []),\n getAllowanceSize: IDL.Func([], [IDL.Nat], [\"query\"]),\n getAllowancesArray: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Tuple(IDL.Nat, IDL.Int)))))],\n [],\n ),\n getMaxAllowances: IDL.Func([], [IDL.Int], []),\n getMetadata: IDL.Func([], [Metadata], [\"query\"]),\n getResultArrayIndex: IDL.Func([], [IDL.Int], []),\n getSpendersSize: IDL.Func([], [IDL.Nat], []),\n getTokenFee: IDL.Func([], [IDL.Nat], [\"query\"]),\n getTokenInfo: IDL.Func([], [TokenInfo], [\"query\"]),\n getUserApprovals: IDL.Func([IDL.Principal], [IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Nat))], [\"query\"]),\n historySize: IDL.Func([], [IDL.Nat], []),\n logo: IDL.Func([], [IDL.Text], [\"query\"]),\n name: IDL.Func([], [IDL.Text], [\"query\"]),\n setAgeAllowanceLimit: IDL.Func([], [IDL.Nat], []),\n setFee: IDL.Func([IDL.Nat], [], [\"oneway\"]),\n setLogo: IDL.Func([IDL.Text], [], [\"oneway\"]),\n setMaxAllowances: IDL.Func([IDL.Int], [], []),\n setName: IDL.Func([IDL.Text], [], [\"oneway\"]),\n setOwner: IDL.Func([IDL.Principal], [], [\"oneway\"]),\n symbol: IDL.Func([], [IDL.Text], [\"query\"]),\n totalSupply: IDL.Func([], [IDL.Nat], []),\n transfer: IDL.Func([IDL.Principal, IDL.Nat], [TxReceipt], []),\n transferFrom: IDL.Func([IDL.Principal, IDL.Principal, IDL.Nat], [TxReceipt], []),\n });\n};\n","import { actor } from \"@icpswap/actor\";\nimport { type ActorIdentity } from \"@icpswap/types\";\nimport { Principal } from \"@dfinity/principal\";\nimport { resultFormat, isPrincipal } from \"@icpswap/utils\";\nimport { idlFactory as OGY_IDL } from \"candid/ogy.did\";\nimport { _SERVICE as OGY_SERVICE } from \"candid/ogy\";\n\nconst ORG_ID = \"rd6wb-lyaaa-aaaaj-acvla-cai\";\n\nconst ogy = async (identity?: ActorIdentity) =>\n actor.create({ canisterId: ORG_ID, idlFactory: OGY_IDL, identity });\n\nconst BALANCE_ADAPTER_IDS = [ORG_ID];\n\nexport const isNeedBalanceAdapter = (canisterId: string) => BALANCE_ADAPTER_IDS.includes(canisterId);\n\nexport async function balanceAdapter(canisterId: string, account: string | Principal) {\n switch (canisterId) {\n case ORG_ID:\n if (isPrincipal(account)) {\n return resultFormat(await (await ogy()).balanceOf(account));\n }\n throw Error(\"not support address\");\n\n default:\n throw Error(\"no canister id\");\n }\n}\n","import { useCallback, useState, useEffect, useMemo } from \"react\";\nimport { Principal } from \"@dfinity/principal\";\nimport { Token, CurrencyAmount } from \"@icpswap/swap-sdk\";\nimport { getTokenStandard } from \"store/token/cache/hooks\";\nimport { balanceAdapter, isNeedBalanceAdapter } from \"utils/token/adapter\";\nimport { ICP } from \"@icpswap/tokens\";\nimport { isPrincipal, isValidPrincipal, isOkSubAccount, principalToAccount, BigNumber } from \"@icpswap/utils\";\nimport { AccountIdentifier, SubAccount } from \"@dfinity/ledger-icp\";\nimport { icpAdapter, tokenAdapter, TOKEN_STANDARD } from \"@icpswap/token-adapter\";\nimport { useLatestDataCall } from \"@icpswap/hooks\";\n\nexport async function getTokenBalance(canisterId: string, account: string | Principal, subAccount?: Uint8Array) {\n if (isNeedBalanceAdapter(canisterId)) return await balanceAdapter(canisterId, account);\n\n const standard = getTokenStandard(canisterId);\n\n if (standard === TOKEN_STANDARD.EXT) {\n let address = \"\";\n\n if (!subAccount) {\n if (isPrincipal(account)) {\n address = principalToAccount(account.toString());\n } else if (isValidPrincipal(account)) {\n address = principalToAccount(account);\n } else {\n address = account;\n }\n } else {\n const sub = SubAccount.fromBytes(subAccount);\n\n if (isOkSubAccount(sub)) {\n if (isPrincipal(account)) {\n address = AccountIdentifier.fromPrincipal({\n principal: account,\n subAccount: sub,\n }).toHex();\n }\n }\n }\n\n return await tokenAdapter.balance({\n canisterId,\n params: {\n user: { address },\n token: \"\",\n },\n });\n }\n\n if (canisterId === ICP.address) {\n return await icpAdapter.balance({\n canisterId,\n params: {\n user: isPrincipal(account)\n ? { principal: account }\n : isValidPrincipal(account)\n ? { principal: Principal.fromText(account) }\n : { address: account },\n token: \"\",\n subaccount: subAccount ? [...subAccount] : undefined,\n },\n });\n }\n\n return await tokenAdapter.balance({\n canisterId,\n params: {\n user: isPrincipal(account)\n ? { principal: account }\n : isValidPrincipal(account)\n ? { principal: Principal.fromText(account) }\n : { address: account },\n token: \"\",\n subaccount: subAccount ? [...subAccount] : undefined,\n },\n });\n}\n\nexport function useTokenBalance(\n canisterId: string | undefined,\n account: string | Principal | undefined,\n refresh?: number | boolean,\n subAccount?: Uint8Array,\n) {\n return useLatestDataCall(\n useCallback(async () => {\n if (!account || !canisterId) return undefined;\n const result = await getTokenBalance(canisterId, account, subAccount);\n return new BigNumber(result ? result.data?.toString() ?? 0 : 0);\n }, [account, canisterId, subAccount]),\n refresh,\n );\n}\n\nexport type Balances = {\n [key: string]: CurrencyAmount;\n};\n\nexport function useCurrencyBalances(\n account: string | Principal | undefined,\n currencies: (Token | undefined | null)[],\n reload?: boolean,\n) {\n const [balances, setBalances] = useState({} as Balances);\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n if (account && currencies && currencies.length) {\n setLoading(true);\n\n const queryPromise = currencies.map((currency) => {\n if (currency) {\n return getTokenBalance(currency.address, account).then(\n (result) => new BigNumber(result ? result.toString() : \"0\"),\n );\n }\n\n return new Promise((resolve) => resolve(new BigNumber(0)));\n });\n\n Promise.all(queryPromise).then((result: BigNumber[]) => {\n const balances = {} as Balances;\n\n result.forEach((balance: BigNumber, index: number) => {\n const currency = currencies[index];\n\n if (currency) {\n balances[currency.address] = CurrencyAmount.fromRawAmount(\n currency,\n balance ? balance.toString() : 0,\n );\n }\n });\n\n setBalances(balances);\n setLoading(false);\n });\n }\n }, [currencies, account, reload]);\n\n return useMemo(\n () => ({\n loading,\n result: balances ?? {},\n }),\n [balances, loading],\n );\n}\n\nexport function useCurrencyBalance(\n account: string | Principal | undefined,\n currency: Token | undefined,\n refresh?: boolean | number,\n) {\n const [storeResult, setStoreResult] = useState(undefined);\n\n const { loading, result } = useTokenBalance(currency?.address, account, refresh);\n\n useEffect(() => {\n if (result) {\n setStoreResult(result);\n }\n }, [result]);\n\n return useMemo(() => {\n if (!currency || !storeResult || loading || isNaN(storeResult.toNumber()))\n return {\n loading,\n result: storeResult && currency ? CurrencyAmount.fromRawAmount(currency, storeResult.toNumber()) : undefined,\n };\n\n return {\n loading,\n result: CurrencyAmount.fromRawAmount(currency, storeResult.toNumber()),\n };\n }, [loading, storeResult, currency]);\n}\n\nexport function useStoreTokenBalance(\n account: string | Principal | undefined,\n token: Token | undefined,\n refresh?: boolean | number,\n) {\n const [storeResult, setStoreResult] = useState(undefined);\n\n const { loading, result } = useTokenBalance(token?.address, account, refresh);\n\n useEffect(() => {\n if (result) {\n setStoreResult(result);\n }\n }, [result]);\n\n return useMemo(() => {\n if (!token || !storeResult || loading || isNaN(storeResult.toNumber()))\n return {\n loading,\n result: storeResult && token ? storeResult : undefined,\n };\n\n return {\n loading,\n result: storeResult,\n };\n }, [loading, storeResult, token]);\n}\n","/* eslint-disable no-useless-constructor */\nimport { openDB, IDBPDatabase, deleteDB } from \"idb\";\n\ntype Database = IDBPDatabase;\ntype IDBValidKey = string | number | Date | BufferSource | IDBValidKey[];\n\nfunction isLessThanCurrentVersion(err: string) {\n // Chrome\n if (err.includes(\"is less than the existing version\")) return true;\n // Safari\n if (err.includes(\"using a lower version than the existing version.\")) return true;\n // Firefox\n if (err.includes(\"is a higher version than the version requested\")) return true;\n}\n\nconst _openDbStore = async (dbName: string, storeName: string, version: number) => {\n return await openDB(dbName, version, {\n upgrade: (database, oldVersion, newVersion, transaction) => {\n if (oldVersion === 0) {\n database.createObjectStore(storeName);\n }\n\n if (!database.objectStoreNames.contains(storeName)) {\n database.createObjectStore(storeName);\n }\n\n if (oldVersion < version) {\n const store = transaction.objectStore(storeName);\n store.clear();\n }\n },\n }).catch((err) => {\n // For development\n if (isLessThanCurrentVersion(String(err))) {\n deleteDB(dbName).then(() => {\n window.location.reload();\n });\n }\n\n return undefined;\n });\n};\n\nasync function _getValue(db: Database, storeName: string, key: IDBValidKey): Promise {\n return await db.get(storeName, key);\n}\n\nasync function _setValue(db: Database, storeName: string, key: IDBValidKey, value: T): Promise {\n return await db.put(storeName, value, key);\n}\n\nasync function _removeValue(db: Database, storeName: string, key: IDBValidKey): Promise {\n return await db.delete(storeName, key);\n}\n\nasync function _getAllValues(db: Database, storeName: string): Promise<(T | undefined)[]> {\n return await db.getAll(storeName);\n}\n\nexport type DBCreateOptions = {\n dbName: string;\n storeName: string;\n version: number;\n};\n\n/**\n * Simple Key Value store\n * Defaults to `'auth-client-db'` with an object store of `'ic-keyval'`\n */\nexport class IdbKeyVal {\n /**\n *\n * @param {DBCreateOptions} options {@link DbCreateOptions}\n * @param {DBCreateOptions['dbName']} options.dbName name for the indexDB database\n * @default\n * @param {DBCreateOptions['storeName']} options.storeName name for the indexDB Data Store\n * @default\n * @param {DBCreateOptions['version']} options.version version of the database. Increment to safely upgrade\n * @constructs an {@link IdbKeyVal}\n */\n public static async create(options?: DBCreateOptions): Promise {\n const { dbName, storeName, version = 1 } = options ?? {};\n const db = await _openDbStore(dbName, storeName, version);\n return new IdbKeyVal(db, storeName);\n }\n\n // Do not use - instead prefer create\n private constructor(\n private _db: Database,\n private _storeName: string,\n ) {}\n\n /**\n * Basic setter\n * @param {IDBValidKey} key string | number | Date | BufferSource | IDBValidKey[]\n * @param value value to set\n * @returns void\n */\n public async set(key: IDBValidKey, value: T) {\n return await _setValue(this._db, this._storeName, key, value);\n }\n\n /**\n * Basic getter\n * Pass in a type T for type safety if you know the type the value will have if it is found\n * @param {IDBValidKey} key string | number | Date | BufferSource | IDBValidKey[]\n * @returns `Promise`\n * @example\n * await get('exampleKey') -> 'exampleValue'\n */\n public async get(key: IDBValidKey): Promise {\n return (await _getValue(this._db, this._storeName, key)) ?? null;\n }\n\n /**\n * Remove a key\n * @param key {@link IDBValidKey}\n * @returns void\n */\n public async remove(key: IDBValidKey) {\n return await _removeValue(this._db, this._storeName, key);\n }\n\n /**\n * Get all values\n * @param key {@link IDBValidKey}\n * @returns void\n */\n public async getAll(): Promise<(T | undefined)[] | null> {\n return await _getAllValues(this._db, this._storeName);\n }\n}\n","import { splitArr } from \"@icpswap/utils\";\nimport { useEffect, useMemo, useState } from \"react\";\n\ntype Call = Promise;\n\nexport async function getPromisesAwait(calls: Call[], limit = 100) {\n const __calls = splitArr(calls, limit);\n\n const result: Array = [];\n\n for (let i = 0; i < __calls.length; i++) {\n const res = await Promise.all(__calls[i]);\n result.push(res);\n }\n\n return result.flat();\n}\n\nexport function usePromisesAwait(calls: Call[] | undefined, limit = 100) {\n const [result, setResult] = useState(null);\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n async function call() {\n if (calls) {\n setLoading(true);\n const result = await getPromisesAwait(calls, limit);\n setResult(result);\n setLoading(false);\n }\n }\n\n call();\n }, [calls, limit]);\n\n return useMemo(() => ({ loading, result }), [loading, result]);\n}\n","import { useMemo } from \"react\";\n\ninterface Token {\n fee: number;\n decimals: number;\n canisterId: string;\n name: string;\n standard: string;\n symbol: string;\n}\n\nlet tokens: Token[] = [];\n\nasync function loadTokens() {\n try {\n tokens = (await import(\"../../.tokens.json\")).default;\n } catch (err) {\n console.warn(err);\n }\n}\n\nloadTokens();\n\nexport function useLocalTokens() {\n return useMemo(() => tokens, [tokens]);\n}\n","import { useMemo, useEffect, useState } from \"react\";\nimport { TOKEN_STANDARD, WRAPPED_ICP_TOKEN_INFO } from \"constants/index\";\nimport type { TokenInfo, StorageTokenInfo } from \"@icpswap/types\";\nimport { getTokenStandard } from \"store/token/cache/hooks\";\nimport { DB_NAME, DB_VERSION } from \"constants/db\";\nimport { IdbStorage } from \"@icpswap/utils\";\nimport TokenDefaultLogo from \"assets/images/Token_default_logo.png\";\nimport { getPromisesAwait } from \"@icpswap/hooks\";\nimport { ICP_TOKEN_INFO } from \"@icpswap/tokens\";\n// import { generateLogoUrl } from \"hooks/token/useTokenLogo\";\n\nimport { useLocalTokens } from \"./useLocalTokens\";\nimport { getTokenInfo } from \"./calls\";\n\nconst STORAGE_TIME_KEY = \"STORAGE_TIME_KEY\";\nconst STORAGE_EXPIRE_TIME = 2 * 60 * 60 * 1000; // millisecond\n\nconst storage = new IdbStorage(DB_NAME, DB_VERSION, \"tokens\");\n\nasync function getStorageTokenInfo(tokenId: string) {\n const storageInfo = await storage.get(`TOKEN_${tokenId}`);\n if (storageInfo) return JSON.parse(storageInfo) as StorageTokenInfo;\n return undefined;\n}\n\nasync function setStorageTokenInfo(tokenInfo: StorageTokenInfo) {\n await storage.set(`TOKEN_${tokenInfo.canisterId}`, JSON.stringify(tokenInfo));\n}\n\nexport function getTokenStorageTime(tokenId: string) {\n const val = window.localStorage.getItem(STORAGE_TIME_KEY);\n if (!val) return null;\n return (JSON.parse(val) as { [tokenId: string]: string })[tokenId] ?? null;\n}\n\nexport function updateTokenStorageTime(tokenId: string) {\n const time = new Date().getTime();\n const val = window.localStorage.getItem(STORAGE_TIME_KEY);\n\n if (!val) {\n window.localStorage.setItem(STORAGE_TIME_KEY, JSON.stringify({ [tokenId]: time.toString() }));\n } else {\n const new_val = JSON.parse(val) as { [tokenId: string]: string };\n new_val[tokenId] = time.toString();\n\n window.localStorage.setItem(STORAGE_TIME_KEY, JSON.stringify(new_val));\n }\n}\n\nfunction isNeedUpdateTokenInfo(tokenId: string) {\n const storage_time = getTokenStorageTime(tokenId);\n if (!storage_time) return true;\n return new Date().getTime() - Number(storage_time) > STORAGE_EXPIRE_TIME;\n}\n\nfunction isStorageInfoValid(storageInfo: StorageTokenInfo | undefined): storageInfo is StorageTokenInfo {\n return !!storageInfo && storageInfo.decimals !== undefined && storageInfo.transFee !== undefined;\n}\n\nexport async function _getTokenInfo(tokenId: string) {\n const storageInfo = await getStorageTokenInfo(tokenId);\n\n if (isStorageInfoValid(storageInfo) && !isNeedUpdateTokenInfo(tokenId)) {\n return storageInfo;\n }\n\n const baseTokenInfo = await getTokenInfo(tokenId);\n\n if (baseTokenInfo) {\n await setStorageTokenInfo({\n ...baseTokenInfo,\n totalSupply: \"0\",\n transFee: baseTokenInfo.transFee.toString(),\n });\n updateTokenStorageTime(tokenId);\n return baseTokenInfo as TokenInfo;\n }\n}\n\nexport enum TokenInfoState {\n LOADING = \"LOADING\",\n NOT_EXISTS = \"NOT_EXISTS\",\n EXISTS = \"EXISTS\",\n INVALID = \"INVALID\",\n}\n\nexport function useTokensInfo(tokenIds: (string | undefined | null)[]): [TokenInfoState, TokenInfo | undefined][] {\n const [tokenInfos, setTokenInfos] = useState<{ [id: string]: TokenInfo | undefined }>({});\n const [loadings, setLoadings] = useState<{ [id: string]: boolean }>({});\n\n const localTokens = useLocalTokens();\n\n const fetch_token_info = async (tokenId: string | undefined | null) => {\n if (!tokenId) return;\n\n let tokeInfo: undefined | TokenInfo;\n\n if (tokenId === ICP_TOKEN_INFO.canisterId) tokeInfo = ICP_TOKEN_INFO;\n if (tokenId === WRAPPED_ICP_TOKEN_INFO.canisterId) tokeInfo = WRAPPED_ICP_TOKEN_INFO;\n\n if (tokeInfo) {\n setTokenInfos((prevState) => ({\n ...prevState,\n [tokenId]: tokeInfo,\n }));\n setLoadings((prevState) => ({\n ...prevState,\n [tokenId]: false,\n }));\n return;\n }\n\n setLoadings((prevState) => ({\n ...prevState,\n [tokenId]: true,\n }));\n\n const localToken = localTokens.find((e) => e.canisterId === tokenId);\n\n if (localToken) {\n setTokenInfos((prevState) => ({\n ...prevState,\n [tokenId]: {\n ...localToken,\n logo: TokenDefaultLogo,\n transFee: BigInt(localToken.fee),\n decimals: Number(localToken.decimals),\n standardType: localToken.standard as TOKEN_STANDARD,\n totalSupply: BigInt(0),\n },\n }));\n\n setLoadings((prevState) => ({\n ...prevState,\n [tokenId]: false,\n }));\n }\n\n const storageInfo = await getStorageTokenInfo(tokenId);\n\n let getStorageInfoErrored = false;\n\n // Fix some user's wrong cache: transFee or some bigint is liked \"bigint:5\"\n try {\n if (isStorageInfoValid(storageInfo)) {\n setTokenInfos((prevState) => ({\n ...prevState,\n [tokenId]: {\n name: storageInfo.name,\n logo: storageInfo.logo,\n // logo: generateLogoUrl(storageInfo.canisterId),\n symbol: storageInfo.symbol,\n canisterId: storageInfo.canisterId,\n totalSupply: BigInt(0),\n transFee: storageInfo.transFee.includes(\"bigint:\")\n ? BigInt(storageInfo.transFee.replace(/\\D/g, \"\"))\n : BigInt(storageInfo.transFee.toString()),\n decimals: Number(storageInfo.decimals),\n standardType: storageInfo.standardType,\n },\n }));\n\n setLoadings((prevState) => ({\n ...prevState,\n [tokenId]: false,\n }));\n }\n } catch (err) {\n console.error(err);\n getStorageInfoErrored = true;\n }\n\n if (!storageInfo || isNeedUpdateTokenInfo(tokenId) || !isStorageInfoValid(storageInfo) || getStorageInfoErrored) {\n const tokenInfo = await getTokenInfo(tokenId);\n\n if (tokenInfo) {\n await setStorageTokenInfo({\n ...tokenInfo,\n // logo: generateLogoUrl(tokenId),\n transFee: tokenInfo.transFee.toString(),\n totalSupply: \"0\",\n });\n updateTokenStorageTime(tokenId);\n\n // The token standard maybe changed in some case,\n // So get the standard from the storage to upgrade the token info\n const tokenStandard = getTokenStandard(tokenInfo.canisterId);\n\n setTokenInfos((prevState) => ({\n ...prevState,\n [tokenId]: {\n ...tokenInfo,\n transFee: BigInt(tokenInfo.transFee.toString()),\n decimals: Number(tokenInfo.decimals),\n standardType: tokenStandard ?? tokenInfo.standardType,\n },\n }));\n }\n }\n\n setLoadings((prevState) => ({\n ...prevState,\n [tokenId]: false,\n }));\n };\n\n useEffect(() => {\n async function call() {\n const calls = tokenIds.map(async (tokenId) => await fetch_token_info(tokenId));\n getPromisesAwait(calls, 20);\n }\n\n call();\n }, [JSON.stringify(tokenIds)]);\n\n return useMemo(() => {\n return tokenIds.map((tokenId) => {\n if (!tokenId) return [TokenInfoState.INVALID, undefined];\n\n const tokenInfo = tokenInfos[tokenId];\n const loading = loadings[tokenId];\n\n if (loading) return [TokenInfoState.LOADING, undefined];\n if (!tokenInfo) return [TokenInfoState.INVALID, undefined];\n\n return [TokenInfoState.EXISTS, tokenInfo];\n });\n }, [tokenInfos, loadings, tokenIds]);\n}\n\nexport function useTokenInfo(tokenId: string | undefined) {\n const [state, tokenInfo] = useTokensInfo([tokenId])[0];\n\n return useMemo(() => {\n if (!tokenInfo) {\n return {\n result: undefined,\n loading: state === TokenInfoState.LOADING,\n };\n }\n\n return {\n result: tokenInfo as TokenInfo,\n loading: state === TokenInfoState.LOADING,\n };\n }, [tokenInfo, state]);\n}\n","import { IdbKeyVal } from \"./db\";\n\nexport const isBrowser = typeof window !== \"undefined\";\n\nexport type StoredKey = string | CryptoKeyPair;\n\n/**\n * Interface for persisting user authentication data\n */\nexport interface ClientStorage {\n get(key: string): Promise;\n\n set(key: string, value: StoredKey): Promise;\n\n remove(key: string): Promise;\n}\n\n/**\n * IdbStorage is an interface for simple storage of string key-value pairs built on {@link IdbKeyVal}\n *\n * It replaces {@link LocalStorage}\n * @see implements {@link AuthClientStorage}\n */\nexport class IdbStorage implements ClientStorage {\n // Initializes a KeyVal on first request\n private initializedDb: IdbKeyVal | undefined;\n\n private version = 1;\n\n private dbName: string;\n\n private storeName: string;\n\n constructor(dbName: string, DB_VERSION = 1, storeName: string) {\n this.version = DB_VERSION;\n this.dbName = dbName;\n this.storeName = storeName;\n }\n\n get _db(): Promise {\n return new Promise((resolve) => {\n if (this.initializedDb) {\n resolve(this.initializedDb);\n return;\n }\n\n IdbKeyVal.create({\n version: this.version,\n storeName: this.storeName,\n dbName: this.dbName,\n }).then((db) => {\n this.initializedDb = db;\n resolve(db);\n });\n });\n }\n\n public async get(key: string): Promise {\n const db = await this._db;\n return await db.get(key);\n }\n\n public async set(key: string, value: string): Promise {\n const db = await this._db;\n await db.set(key, value);\n }\n\n public async remove(key: string): Promise {\n const db = await this._db;\n await db.remove(key);\n }\n\n public async getAll(): Promise<(string | undefined)[] | null> {\n const db = await this._db;\n return await db.getAll();\n }\n}\n","export const DB_NAME = \"ICPSwap-app\";\nexport const DB_VERSION = 11;\n","import { useMemo } from \"react\";\n\nexport function generateLogoUrl(tokenId: string) {\n return `https://wqfao-piaaa-aaaag-qj5ba-cai.raw.icp0.io/${tokenId}`;\n}\n\nexport function useTokenLogo(tokenId: string | undefined) {\n return useMemo(() => {\n if (!tokenId) return undefined;\n\n return `https://wqfao-piaaa-aaaag-qj5ba-cai.raw.icp0.io/${tokenId}`;\n }, [tokenId]);\n}\n","import { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport { useCallback, useMemo } from \"react\";\nimport store from \"store/index\";\nimport { updateCallKeys, updateCallResult } from \"./actions\";\n\nexport function useCallResult(callKey: string) {\n return useAppSelector((state) => state.call.callResults)[callKey];\n}\n\nexport function useUpdateCallResult() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (callKey: string, result: any) => {\n dispatch(updateCallResult({ callKey, result }));\n },\n [dispatch],\n );\n}\n\nexport function useCallAllIndex() {\n return useAppSelector((state) => state.call.callKeys);\n}\n\nexport function getCallIndex(key: string) {\n return store.getState().call.callKeys[key];\n}\n\nexport function useCallKeysIndexManager(callKey: string): [number, ({ callIndex }: { callIndex: number }) => void] {\n const callAllIndex = useCallAllIndex();\n const dispatch = useAppDispatch();\n\n const _updateCallKeyIndex = useCallback(\n ({ callIndex }: { callIndex: number }) => {\n dispatch(updateCallKeys({ callKey, callIndex }));\n },\n [callKey, dispatch],\n );\n\n return useMemo(() => [callAllIndex[callKey], _updateCallKeyIndex], [callKey, _updateCallKeyIndex, callAllIndex]);\n}\n","import { useState, useMemo, useEffect } from \"react\";\nimport type { ApiResult } from \"@icpswap/types\";\nimport { useCallKeysIndexManager, useUpdateCallResult, useCallResult, getCallIndex } from \"store/call/hooks\";\n\nexport type Call = () => Promise>;\n\nlet stateCallIndex = 0;\n\nexport function useStateCallsData(fn: Call, key: string, valid: boolean, reload?: boolean, useOldData?: boolean) {\n const callResults = useCallResult(key) ?? {};\n\n const updateCallResult = useUpdateCallResult();\n\n const [loading, setLoading] = useState(false);\n const [callKeyIndex, updateCallKeyIndex] = useCallKeysIndexManager(key);\n\n useEffect(() => {\n if (fn && valid !== false) {\n setLoading(true);\n\n stateCallIndex++;\n const index = stateCallIndex;\n\n updateCallKeyIndex({ callIndex: index });\n\n fn().then((result) => {\n const stateIndex = getCallIndex(key);\n\n if (stateIndex === index) {\n updateCallResult(key, { ...callResults, [index]: result });\n setLoading(false);\n }\n });\n }\n }, [fn, valid, reload]);\n\n return useMemo(() => {\n const result = (\n callResults[callKeyIndex] ? callResults[callKeyIndex] : useOldData ? callResults[callKeyIndex - 1] : undefined\n ) as T | undefined;\n\n return {\n result,\n loading,\n };\n }, [callResults, loading, callKeyIndex]);\n}\n","import { useMemo } from \"react\";\nimport { Token } from \"@icpswap/swap-sdk\";\nimport { TOKEN_STANDARD, WRAPPED_ICP } from \"constants/index\";\nimport { TokenInfo } from \"types/token\";\nimport { useTokenInfo, useTokensInfo } from \"hooks/token/useTokenInfo\";\nimport { getTokenStandard } from \"store/token/cache/hooks\";\nimport { ICP } from \"@icpswap/tokens\";\n\nexport enum UseCurrencyState {\n LOADING = \"LOADING\",\n VALID = \"VALID\",\n INVALID = \"INVALID\",\n}\n\nexport function useToken(tokenId: string | undefined): [UseCurrencyState, Token | undefined] {\n const { result: tokenInfo, loading: queryLoading } = useTokenInfo(tokenId);\n\n return useMemo(() => {\n if (!tokenId) return [UseCurrencyState.INVALID, undefined];\n if (tokenId === ICP.address) return [UseCurrencyState.VALID, ICP];\n if (tokenId === WRAPPED_ICP.address) return [UseCurrencyState.VALID, WRAPPED_ICP];\n if (!tokenInfo) return [UseCurrencyState.INVALID, undefined];\n if (queryLoading) return [UseCurrencyState.LOADING, undefined];\n\n return [\n UseCurrencyState.VALID,\n new Token({\n address: tokenId,\n decimals: Number(tokenInfo.decimals),\n symbol: tokenInfo.symbol,\n name: tokenInfo.name,\n logo: tokenInfo.logo,\n transFee: Number(tokenInfo.transFee),\n standard: getTokenStandard(tokenInfo.canisterId) ?? TOKEN_STANDARD.EXT,\n }),\n ];\n }, [tokenId, tokenInfo, queryLoading]);\n}\n\nexport function useTokens(tokenIds: (string | undefined)[]): [UseCurrencyState, Token | undefined][] {\n const tokens = useTokensInfo(tokenIds);\n\n return useMemo(() => {\n return tokenIds.map((tokenId, index) => {\n const [, tokenInfo] = tokens[index];\n\n if (!tokenInfo || !tokenId) {\n return [UseCurrencyState.INVALID, undefined];\n }\n\n return [\n UseCurrencyState.VALID,\n new Token({\n address: tokenId,\n decimals: Number(tokenInfo.decimals),\n symbol: tokenInfo.symbol,\n name: tokenInfo.name,\n logo: tokenInfo.logo,\n transFee: Number(tokenInfo.transFee),\n standard: getTokenStandard(tokenInfo.canisterId) ?? TOKEN_STANDARD.ICRC1,\n }),\n ];\n });\n }, [tokens, tokenIds]);\n}\n\nexport function useCurrencyFromInfo(tokenInfo: TokenInfo | undefined) {\n return useMemo(() => {\n if (!tokenInfo) return undefined;\n\n return new Token({\n address: tokenInfo.canisterId,\n decimals: Number(tokenInfo.decimals),\n symbol: tokenInfo.symbol,\n name: tokenInfo.name,\n logo: tokenInfo.logo,\n standard: getTokenStandard(tokenInfo.canisterId) ?? TOKEN_STANDARD.EXT,\n });\n }, [tokenInfo]);\n}\n\nexport function useCurrenciesFromInfo(tokenInfos: TokenInfo[] | undefined | null) {\n return useMemo(() => {\n if (!tokenInfos) return undefined;\n\n return tokenInfos.map((tokenInfo) =>\n tokenInfo\n ? new Token({\n address: tokenInfo.canisterId,\n decimals: Number(tokenInfo.decimals),\n symbol: tokenInfo.symbol,\n name: tokenInfo.name,\n logo: tokenInfo.logo,\n standard: getTokenStandard(tokenInfo.canisterId) ?? TOKEN_STANDARD.EXT,\n })\n : undefined,\n );\n }, [tokenInfos]);\n}\n","import { createContext, useContext, useMemo } from \"react\";\nimport type { SwapPoolData } from \"@icpswap/types\";\n\nexport type GlobalContextProps = {\n AllPools: SwapPoolData[] | undefined;\n refreshTriggers: { [key: string]: number };\n setRefreshTriggers: (key: string) => void;\n};\n\nexport const GlobalContext = createContext({} as GlobalContextProps);\n\nexport function useGlobalContext() {\n return useContext(GlobalContext);\n}\n\nexport function useRefreshTrigger(key: string | undefined) {\n const { refreshTriggers } = useGlobalContext();\n\n return useMemo(() => {\n if (!key) return undefined;\n return refreshTriggers[key];\n }, [refreshTriggers, key]);\n}\n","import { useState, useEffect, useMemo } from \"react\";\n\nexport function useIntervalFetch(\n call: (() => Promise) | undefined,\n force: boolean | number = false,\n interval = 5000,\n) {\n const [data, setData] = useState(undefined);\n const [tick, setTick] = useState(0);\n\n useEffect(() => {\n async function _call() {\n if (call) {\n const result = await call();\n setData(result);\n }\n }\n\n _call();\n }, [tick, call, force]);\n\n useEffect(() => {\n const timer = setInterval(() => {\n if (call) {\n setTick((prevState) => prevState + 1);\n }\n }, interval);\n\n return () => {\n clearInterval(timer);\n };\n }, [interval, call]);\n\n return useMemo(() => data, [data]);\n}\n","import { useCallback } from \"react\";\nimport { useStepManager, useUpdateCallStep, useCloseAllSteps } from \"store/steps/hooks\";\n\nexport type StepCallback = () => Promise;\n\nlet stepKey = 0;\n\nexport function newStepKey() {\n stepKey++;\n return stepKey.toString();\n}\n\nexport function useStepCalls() {\n const { open } = useStepManager();\n const updateCallStep = useUpdateCallStep();\n\n return useCallback(\n (_calls: StepCallback[] | undefined, key: string) => {\n let curr = 0;\n let err: number | undefined;\n let calls: StepCallback[] | undefined = _calls;\n\n const fn = async (step: number) => {\n if (!calls) calls = [];\n for (let i = step; i < calls.length; i++) {\n curr = i;\n updateCallStep(key, curr, err);\n const result = await calls[i]();\n if (result === false) {\n err = i;\n updateCallStep(key, curr, err);\n return false;\n }\n curr = i + 1;\n updateCallStep(key, curr, err);\n }\n\n return true;\n };\n\n const reset = () => {\n curr = 0;\n err = undefined;\n };\n\n const call = async () => {\n reset();\n\n open(key);\n\n return await fn(0);\n };\n\n const retry = async () => {\n return await fn(err ?? 0);\n };\n\n return { call, reset, retry, currentStep: curr, errorStep: err };\n },\n [open, updateCallStep],\n );\n}\n\nexport function useCloseStep() {\n const { close } = useStepManager();\n\n return useCallback(\n (key?: string) => {\n close(key);\n },\n [close],\n );\n}\n\nexport { useCloseAllSteps };\n","import { useCallback, useMemo, ReactNode } from \"react\";\nimport { openSnackbar } from \"store/snackbar/actions\";\nimport { openLoading, closeLoading } from \"store/loadingReducer\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport store from \"store\";\nimport { useSnackbar } from \"components/notistack\";\nimport { ResultStatus } from \"types/global\";\n\nexport enum MessageTypes {\n success = \"ok\",\n error = \"err\",\n warning = \"warning\",\n loading = \"loading\",\n}\n\nexport const TipTypes: { [key in MessageTypes]: \"success\" | \"error\" | \"warning\" | \"loading\" } = {\n [MessageTypes.success]: \"success\",\n [MessageTypes.error]: \"error\",\n [MessageTypes.warning]: \"warning\",\n [MessageTypes.loading]: \"loading\",\n};\n\nexport const TIP_ERROR = MessageTypes.error;\nexport const TIP_SUCCESS = MessageTypes.success;\nexport const TIP_LOADING = MessageTypes.loading;\n\nexport type TIP_KEY = string | undefined | number;\n\nexport type TIP_OPTIONS = { [key: string]: any };\n\nexport function useTips(): [\n (message: ReactNode, type: MessageTypes | ResultStatus, options?: TIP_OPTIONS) => TIP_KEY,\n (key: string | undefined | number) => void,\n] {\n const dispatch = useAppDispatch();\n const { closeSnackbar, enqueueSnackbar } = useSnackbar();\n\n const open = useCallback(\n (message: ReactNode, type: MessageTypes | ResultStatus, options?: TIP_OPTIONS) => {\n return enqueueSnackbar(message, {\n variant: type in ResultStatus ? (type === ResultStatus.OK ? TipTypes.ok : TipTypes.err) : TipTypes[type],\n ...(type === MessageTypes.loading ? { persist: true } : {}),\n ...(options ?? {}),\n });\n },\n [dispatch],\n );\n\n const close = useCallback(\n (messageKey: TIP_KEY) => {\n closeSnackbar(messageKey);\n },\n [dispatch],\n );\n\n return useMemo(() => [open, close], [open, close]);\n}\n\nexport function useSuccessTip(): [(message: ReactNode, options?: TIP_OPTIONS) => TIP_KEY, (key: TIP_KEY) => void] {\n const [openCallback, closeCallback] = useTips();\n\n const open = useCallback(\n (message, options?: TIP_OPTIONS) => {\n return openCallback(message, TIP_SUCCESS, options);\n },\n [openCallback],\n );\n\n const close = useCallback(\n (key: TIP_KEY) => {\n closeCallback(key);\n },\n [closeCallback],\n );\n\n return useMemo(() => [open, close], [open, close]);\n}\n\nexport function useErrorTip(): [(message: ReactNode, options?: TIP_OPTIONS) => TIP_KEY, (key: TIP_KEY) => void] {\n const [openCallback, closeCallback] = useTips();\n\n const open = useCallback(\n (message: ReactNode, options?: TIP_OPTIONS) => {\n return openCallback(message, TIP_ERROR, options);\n },\n [openCallback],\n );\n\n const close = useCallback(\n (key: TIP_KEY) => {\n closeCallback(key);\n },\n [closeCallback],\n );\n\n return useMemo(() => [open, close], [open, close]);\n}\n\nexport function useLoadingTip(): [(message: string, options?: TIP_OPTIONS) => TIP_KEY, (key: TIP_KEY) => void] {\n const [openCallback, closeCallback] = useTips();\n\n const open = useCallback(\n (message: string, options?: TIP_OPTIONS) => {\n return openCallback(message, TIP_LOADING, { ...(options ?? {}) });\n },\n [openCallback],\n );\n\n const close = useCallback(\n (key: TIP_KEY) => {\n closeCallback(key);\n },\n [closeCallback],\n );\n\n return useMemo(() => [open, close], [open, close]);\n}\n\nexport function useFullscreenLoading(): [() => void, () => void, boolean] {\n const dispatch = useAppDispatch();\n const isOpen = useAppSelector((state) => state.loading.open);\n\n const open = useCallback(() => {\n dispatch(openLoading());\n }, [dispatch]);\n\n const close = useCallback(() => {\n dispatch(closeLoading());\n }, [dispatch]);\n\n return useMemo(() => [open, close, isOpen], [open, close, isOpen]);\n}\n\nexport function openTip(message: string, type: MessageTypes) {\n if (type === TIP_ERROR) {\n store.dispatch(\n openSnackbar({\n message,\n variant: \"alert\",\n alertSeverity: \"error\",\n }),\n );\n } else {\n store.dispatch(\n openSnackbar({\n message,\n variant: \"alert\",\n alertSeverity: \"success\",\n }),\n );\n }\n}\n\nexport function openErrorTip(message: string) {\n openTip(message, TIP_ERROR);\n}\n","import { formatTokenAmount } from \"@icpswap/utils\";\nimport { Price, Token, CurrencyAmount } from \"@icpswap/swap-sdk\";\nimport { useAppSelector } from \"store/hooks\";\nimport { useMemo } from \"react\";\nimport { WRAPPED_ICP } from \"constants/tokens\";\nimport { network, NETWORK } from \"constants/server\";\nimport { useInfoToken } from \"hooks/info/useInfoTokens\";\nimport BigNumber from \"bignumber.js\";\nimport { ICP } from \"@icpswap/tokens\";\n\nexport function useICPPrice(): number | undefined {\n const { ICPPriceList } = useAppSelector((state) => state.global);\n\n return useMemo(() => {\n if (ICPPriceList.length) {\n return ICPPriceList[ICPPriceList.length - 1].value;\n }\n\n return undefined;\n }, [ICPPriceList]);\n}\n\nexport function useUSDPrice(currency: Token | undefined): string | number | undefined {\n const _currency = useMemo(() => {\n if (!currency) return undefined;\n if (currency?.wrapped.equals(WRAPPED_ICP) || currency?.wrapped.equals(ICP)) return undefined;\n return currency;\n }, [currency]);\n\n const graphToken = useInfoToken(_currency?.wrapped.address);\n\n const baseToken = useMemo(() => {\n return network === NETWORK.IC ? ICP : WRAPPED_ICP;\n }, [network, NETWORK]);\n\n const icpPriceNumber = useICPPrice();\n\n const baseTokenPrice = useMemo(() => {\n if (icpPriceNumber) {\n return new Price(\n baseToken,\n baseToken,\n formatTokenAmount(1, baseToken.decimals).toString(),\n formatTokenAmount(icpPriceNumber, baseToken.decimals).toString(),\n );\n }\n return undefined;\n }, [icpPriceNumber, baseToken]);\n\n return useMemo(() => {\n if (!currency || !baseTokenPrice) return undefined;\n\n if (currency?.wrapped.equals(ICP) || currency?.wrapped.equals(WRAPPED_ICP)) return baseTokenPrice.toFixed();\n\n if (graphToken) {\n return graphToken.priceUSD;\n }\n\n return undefined;\n }, [currency, baseToken, graphToken, baseTokenPrice]);\n}\n\nexport function useUSDPriceById(tokenId: string | undefined): number | undefined {\n const _tokenId = useMemo(() => {\n if (!tokenId) return undefined;\n if (tokenId === WRAPPED_ICP.address || tokenId === ICP.address) return undefined;\n return tokenId;\n }, [tokenId]);\n\n const graphToken = useInfoToken(_tokenId);\n\n const icpPriceNumber = useICPPrice();\n\n return useMemo(() => {\n if (!tokenId || !icpPriceNumber) return undefined;\n\n if (tokenId === ICP.address || tokenId === WRAPPED_ICP.address) return icpPriceNumber;\n\n if (graphToken) {\n return graphToken.priceUSD;\n }\n\n return undefined;\n }, [tokenId, graphToken, icpPriceNumber]);\n}\n\nexport function useUSDValue(currencyAmount: CurrencyAmount | undefined) {\n const price = useUSDPrice(currencyAmount?.currency);\n\n return useMemo(() => {\n if (!price || !currencyAmount) return null;\n try {\n return new BigNumber(price).multipliedBy(currencyAmount.toExact());\n } catch (error) {\n return null;\n }\n }, [currencyAmount, price]);\n}\n","import { useCallsData } from \"@icpswap/hooks\";\nimport { useCallback, useMemo } from \"react\";\nimport { useSupportedActiveChain } from \"hooks/web3/index\";\n\nimport { useInterfaceMulticall } from \"./useContract\";\n\n// gets the current timestamp from the blockchain\nexport function useCurrentBlockTimestamp() {\n const multicall = useInterfaceMulticall();\n const supportedActiveChain = useSupportedActiveChain();\n\n const { result } = useCallsData(\n useCallback(async () => {\n if (!multicall || !supportedActiveChain) return;\n\n const resultStr = await multicall.getCurrentBlockTimestamp();\n\n return resultStr;\n }, [multicall]),\n );\n\n return useMemo(() => result, [result]);\n}\n","import { useWeb3React } from \"@web3-react/core\";\nimport { DEFAULT_CHAIN_ID, SUPPORTED_CHAINS } from \"constants/web3\";\nimport { useMemo } from \"react\";\n\nexport function useActiveChain(): number | undefined {\n const { chainId } = useWeb3React();\n\n return chainId ?? DEFAULT_CHAIN_ID;\n}\n\nexport function useSupportedActiveChain() {\n const chainId = useActiveChain();\n\n return useMemo(() => {\n if (!chainId) return undefined;\n\n return SUPPORTED_CHAINS.includes(chainId);\n }, [chainId, SUPPORTED_CHAINS]);\n}\n","import { useWeb3React } from \"@web3-react/core\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { parseTokenAmount, BigNumber } from \"@icpswap/utils\";\nimport Web3 from \"web3\";\n\nexport function useETHBalance(reload?: boolean) {\n const { account } = useWeb3React();\n const [balance, setBalance] = useState(undefined);\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n async function call() {\n if (account) {\n setLoading(true);\n const web3 = new Web3(Web3.givenProvider);\n const balance = await web3.eth.getBalance(account);\n setBalance(parseTokenAmount(balance, 18));\n setLoading(false);\n }\n }\n\n call();\n }, [account, reload]);\n\n return useMemo(() => ({ result: balance, loading }), [balance, loading]);\n}\n","import { useCallback } from \"react\";\nimport { useSupportedActiveChain } from \"hooks/web3/index\";\nimport { useCallsData, Call } from \"@icpswap/hooks\";\n\nexport function useWeb3CallsData(fn: Call, reload?: number | string | boolean) {\n const supportedActiveChain = useSupportedActiveChain();\n\n return useCallsData(\n useCallback(async () => {\n return await fn();\n }, [supportedActiveChain, fn]),\n reload,\n );\n}\n","import { useWeb3React } from \"@web3-react/core\";\nimport useSwr from \"swr\";\nimport useSWRImmutable from \"swr/immutable\";\nimport { useSupportedActiveChain } from \"hooks/web3/index\";\n\nexport function useFetchBlockNumber() {\n const { provider } = useWeb3React();\n const supportedActiveChain = useSupportedActiveChain();\n\n const { data } = useSwr(\n provider && supportedActiveChain ? [\"ethBlockNumber\"] : undefined,\n async () => {\n if (provider && supportedActiveChain) {\n const blockNumber = await provider.getBlockNumber();\n return blockNumber;\n }\n return undefined;\n },\n {\n refreshInterval: 3000,\n },\n );\n\n return data;\n}\n\nexport function useBlockNumber() {\n const { data } = useSWRImmutable([\"ethBlockNumber\"]);\n return data;\n}\n","import { ChainId, SUPPORTED_CHAINS, SupportedChainsType } from \"./chains\";\n\ntype AddressMap = { [chainId: number]: string };\n\ntype ChainAddresses = {\n v3CoreFactoryAddress: string;\n multicallAddress: string;\n quoterAddress: string;\n v3MigratorAddress?: string;\n nonfungiblePositionManagerAddress?: string;\n tickLensAddress?: string;\n swapRouter02Address?: string;\n v1MixedRouteQuoterAddress?: string;\n};\n\nconst DEFAULT_NETWORKS = [ChainId.MAINNET, ChainId.GOERLI, ChainId.SEPOLIA];\n\nfunction constructSameAddressMap(address: string, additionalNetworks: ChainId[] = []): AddressMap {\n return DEFAULT_NETWORKS.concat(additionalNetworks).reduce((memo, chainId) => {\n memo[chainId] = address;\n return memo;\n }, {});\n}\n\nexport const UNI_ADDRESSES: AddressMap = constructSameAddressMap(\"0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984\", [\n ChainId.OPTIMISM,\n ChainId.ARBITRUM_ONE,\n ChainId.POLYGON,\n ChainId.POLYGON_MUMBAI,\n ChainId.SEPOLIA,\n]);\n\nexport const UNISWAP_NFT_AIRDROP_CLAIM_ADDRESS = \"0x8B799381ac40b838BBA4131ffB26197C432AFe78\";\n\n/**\n * @deprecated use V2_FACTORY_ADDRESSES instead\n */\nexport const V2_FACTORY_ADDRESS = \"0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f\";\nexport const V2_FACTORY_ADDRESSES: AddressMap = {\n [ChainId.MAINNET]: \"0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f\",\n [ChainId.GOERLI]: \"0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f\",\n [ChainId.SEPOLIA]: \"0xB7f907f7A9eBC822a80BD25E224be42Ce0A698A0\",\n [ChainId.OPTIMISM]: \"0x0c3c1c532F1e39EdF36BE9Fe0bE1410313E074Bf\",\n [ChainId.ARBITRUM_ONE]: \"0xf1D7CC64Fb4452F05c498126312eBE29f30Fbcf9\",\n [ChainId.AVALANCHE]: \"0x9e5A52f57b3038F1B8EeE45F28b3C1967e22799C\",\n [ChainId.BASE]: \"0x8909dc15e40173ff4699343b6eb8132c65e18ec6\",\n [ChainId.BNB]: \"0x8909Dc15e40173Ff4699343b6eB8132c65e18eC6\",\n [ChainId.POLYGON]: \"0x9e5A52f57b3038F1B8EeE45F28b3C1967e22799C\",\n [ChainId.CELO]: \"0x79a530c8e2fA8748B7B40dd3629C0520c2cCf03f\",\n [ChainId.BLAST]: \"0x5C346464d33F90bABaf70dB6388507CC889C1070\",\n};\n/**\n * @deprecated use V2_ROUTER_ADDRESSES instead\n */\nexport const V2_ROUTER_ADDRESS = \"0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D\";\nexport const V2_ROUTER_ADDRESSES: AddressMap = {\n [ChainId.MAINNET]: \"0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D\",\n [ChainId.GOERLI]: \"0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D\",\n [ChainId.ARBITRUM_ONE]: \"0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24\",\n [ChainId.OPTIMISM]: \"0x4a7b5da61326a6379179b40d00f57e5bbdc962c2\",\n [ChainId.BASE]: \"0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24\",\n [ChainId.AVALANCHE]: \"0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24\",\n [ChainId.BNB]: \"0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24\",\n [ChainId.POLYGON]: \"0xedf6066a2b290c185783862c7f4776a2c8077ad1\",\n [ChainId.BLAST]: \"0xBB66Eb1c5e875933D44DAe661dbD80e5D9B03035\",\n};\n\n// Networks that share most of the same addresses i.e. Mainnet, Goerli, Optimism, Arbitrum, Polygon\nconst DEFAULT_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x1F98431c8aD98523631AE4a59f267346ea31F984\",\n multicallAddress: \"0x1F98415757620B543A52E61c46B32eB19261F984\",\n quoterAddress: \"0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6\",\n v3MigratorAddress: \"0xA5644E29708357803b5A882D272c41cC0dF92B34\",\n nonfungiblePositionManagerAddress: \"0xC36442b4a4522E871399CD717aBDD847Ab11FE88\",\n};\nconst MAINNET_ADDRESSES: ChainAddresses = {\n ...DEFAULT_ADDRESSES,\n v1MixedRouteQuoterAddress: \"0x84E44095eeBfEC7793Cd7d5b57B7e401D7f1cA2E\",\n};\nconst GOERLI_ADDRESSES: ChainAddresses = {\n ...DEFAULT_ADDRESSES,\n v1MixedRouteQuoterAddress: \"0xBa60b6e6fF25488308789E6e0A65D838be34194e\",\n};\n\nconst OPTIMISM_ADDRESSES: ChainAddresses = DEFAULT_ADDRESSES;\nconst ARBITRUM_ONE_ADDRESSES: ChainAddresses = {\n ...DEFAULT_ADDRESSES,\n multicallAddress: \"0xadF885960B47eA2CD9B55E6DAc6B42b7Cb2806dB\",\n tickLensAddress: \"0xbfd8137f7d1516D3ea5cA83523914859ec47F573\",\n};\nconst POLYGON_ADDRESSES: ChainAddresses = DEFAULT_ADDRESSES;\n\n// celo v3 addresses\nconst CELO_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0xAfE208a311B21f13EF87E33A90049fC17A7acDEc\",\n multicallAddress: \"0x633987602DE5C4F337e3DbF265303A1080324204\",\n quoterAddress: \"0x82825d0554fA07f7FC52Ab63c961F330fdEFa8E8\",\n v3MigratorAddress: \"0x3cFd4d48EDfDCC53D3f173F596f621064614C582\",\n nonfungiblePositionManagerAddress: \"0x3d79EdAaBC0EaB6F08ED885C05Fc0B014290D95A\",\n tickLensAddress: \"0x5f115D9113F88e0a0Db1b5033D90D4a9690AcD3D\",\n};\n\n// BNB v3 addresses\nconst BNB_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0xdB1d10011AD0Ff90774D0C6Bb92e5C5c8b4461F7\",\n multicallAddress: \"0x963Df249eD09c358A4819E39d9Cd5736c3087184\",\n quoterAddress: \"0x78D78E420Da98ad378D7799bE8f4AF69033EB077\",\n v3MigratorAddress: \"0x32681814957e0C13117ddc0c2aba232b5c9e760f\",\n nonfungiblePositionManagerAddress: \"0x7b8A01B39D58278b5DE7e48c8449c9f4F5170613\",\n tickLensAddress: \"0xD9270014D396281579760619CCf4c3af0501A47C\",\n swapRouter02Address: \"0xB971eF87ede563556b2ED4b1C0b0019111Dd85d2\",\n};\n\n// optimism goerli addresses\nconst OPTIMISM_GOERLI_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0xB656dA17129e7EB733A557f4EBc57B76CFbB5d10\",\n multicallAddress: \"0x07F2D8a2a02251B62af965f22fC4744A5f96BCCd\",\n quoterAddress: \"0x9569CbA925c8ca2248772A9A4976A516743A246F\",\n v3MigratorAddress: \"0xf6c55fBe84B1C8c3283533c53F51bC32F5C7Aba8\",\n nonfungiblePositionManagerAddress: \"0x39Ca85Af2F383190cBf7d7c41ED9202D27426EF6\",\n tickLensAddress: \"0xe6140Bd164b63E8BfCfc40D5dF952f83e171758e\",\n};\n\n// optimism sepolia addresses\nconst OPTIMISM_SEPOLIA_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x8CE191193D15ea94e11d327b4c7ad8bbE520f6aF\",\n multicallAddress: \"0x80e4e06841bb76AA9735E0448cB8d003C0EF009a\",\n quoterAddress: \"0x0FBEa6cf957d95ee9313490050F6A0DA68039404\",\n v3MigratorAddress: \"0xE7EcbAAaA54D007A00dbb6c1d2f150066D69dA07\",\n nonfungiblePositionManagerAddress: \"0xdA75cEf1C93078e8b736FCA5D5a30adb97C8957d\",\n tickLensAddress: \"0xCb7f54747F58F8944973cea5b8f4ac2209BadDC5\",\n swapRouter02Address: \"0x94cC0AaC535CCDB3C01d6787D6413C739ae12bc4\",\n};\n\n// arbitrum goerli v3 addresses\nconst ARBITRUM_GOERLI_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x4893376342d5D7b3e31d4184c08b265e5aB2A3f6\",\n multicallAddress: \"0x8260CB40247290317a4c062F3542622367F206Ee\",\n quoterAddress: \"0x1dd92b83591781D0C6d98d07391eea4b9a6008FA\",\n v3MigratorAddress: \"0xA815919D2584Ac3F76ea9CB62E6Fd40a43BCe0C3\",\n nonfungiblePositionManagerAddress: \"0x622e4726a167799826d1E1D150b076A7725f5D81\",\n tickLensAddress: \"0xb52429333da969a0C79a60930a4Bf0020E5D1DE8\",\n};\n\n// arbitrum sepolia v3 addresses\nconst ARBITRUM_SEPOLIA_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x248AB79Bbb9bC29bB72f7Cd42F17e054Fc40188e\",\n multicallAddress: \"0x2B718b475e385eD29F56775a66aAB1F5cC6B2A0A\",\n quoterAddress: \"0x2779a0CC1c3e0E44D2542EC3e79e3864Ae93Ef0B\",\n v3MigratorAddress: \"0x398f43ef2c67B941147157DA1c5a868E906E043D\",\n nonfungiblePositionManagerAddress: \"0x6b2937Bde17889EDCf8fbD8dE31C3C2a70Bc4d65\",\n tickLensAddress: \"0x0fd18587734e5C2dcE2dccDcC7DD1EC89ba557d9\",\n swapRouter02Address: \"0x101F443B4d1b059569D643917553c771E1b9663E\",\n};\n\n// sepolia v3 addresses\nconst SEPOLIA_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x0227628f3F023bb0B980b67D528571c95c6DaC1c\",\n multicallAddress: \"0xD7F33bCdb21b359c8ee6F0251d30E94832baAd07\",\n quoterAddress: \"0xEd1f6473345F45b75F8179591dd5bA1888cf2FB3\",\n v3MigratorAddress: \"0x729004182cF005CEC8Bd85df140094b6aCbe8b15\",\n nonfungiblePositionManagerAddress: \"0x1238536071E1c677A632429e3655c799b22cDA52\",\n tickLensAddress: \"0xd7f33bcdb21b359c8ee6f0251d30e94832baad07\",\n swapRouter02Address: \"0x3bFA4769FB09eefC5a80d6E87c3B9C650f7Ae48E\",\n};\n\n// Avalanche v3 addresses\nconst AVALANCHE_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x740b1c1de25031C31FF4fC9A62f554A55cdC1baD\",\n multicallAddress: \"0x0139141Cd4Ee88dF3Cdb65881D411bAE271Ef0C2\",\n quoterAddress: \"0xbe0F5544EC67e9B3b2D979aaA43f18Fd87E6257F\",\n v3MigratorAddress: \"0x44f5f1f5E452ea8d29C890E8F6e893fC0f1f0f97\",\n nonfungiblePositionManagerAddress: \"0x655C406EBFa14EE2006250925e54ec43AD184f8B\",\n tickLensAddress: \"0xEB9fFC8bf81b4fFd11fb6A63a6B0f098c6e21950\",\n swapRouter02Address: \"0xbb00FF08d01D300023C629E8fFfFcb65A5a578cE\",\n};\n\nconst BASE_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x33128a8fC17869897dcE68Ed026d694621f6FDfD\",\n multicallAddress: \"0x091e99cb1C49331a94dD62755D168E941AbD0693\",\n quoterAddress: \"0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a\",\n v3MigratorAddress: \"0x23cF10b1ee3AdfCA73B0eF17C07F7577e7ACd2d7\",\n nonfungiblePositionManagerAddress: \"0x03a520b32C04BF3bEEf7BEb72E919cf822Ed34f1\",\n tickLensAddress: \"0x0CdeE061c75D43c82520eD998C23ac2991c9ac6d\",\n swapRouter02Address: \"0x2626664c2603336E57B271c5C0b26F421741e481\",\n};\n\n// Base Goerli v3 addresses\nconst BASE_GOERLI_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x9323c1d6D800ed51Bd7C6B216cfBec678B7d0BC2\",\n multicallAddress: \"0xB206027a9E0E13F05eBEFa5D2402Bab3eA716439\",\n quoterAddress: \"0xedf539058e28E5937dAef3f69cEd0b25fbE66Ae9\",\n v3MigratorAddress: \"0x3efe5d02a04b7351D671Db7008ec6eBA9AD9e3aE\",\n nonfungiblePositionManagerAddress: \"0x3c61369ef0D1D2AFa70d8feC2F31C5D6Ce134F30\",\n tickLensAddress: \"0x1acB873Ee909D0c98adB18e4474943249F931b92\",\n swapRouter02Address: \"0x8357227D4eDc78991Db6FDB9bD6ADE250536dE1d\",\n};\n\nconst ZORA_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x7145F8aeef1f6510E92164038E1B6F8cB2c42Cbb\",\n multicallAddress: \"0xA51c76bEE6746cB487a7e9312E43e2b8f4A37C15\",\n quoterAddress: \"0x11867e1b3348F3ce4FcC170BC5af3d23E07E64Df\",\n v3MigratorAddress: \"0x048352d8dCF13686982C799da63fA6426a9D0b60\",\n nonfungiblePositionManagerAddress: \"0xbC91e8DfA3fF18De43853372A3d7dfe585137D78\",\n tickLensAddress: \"0x209AAda09D74Ad3B8D0E92910Eaf85D2357e3044\",\n swapRouter02Address: \"0x7De04c96BE5159c3b5CeffC82aa176dc81281557\",\n};\n\nconst ZORA_SEPOLIA_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x4324A677D74764f46f33ED447964252441aA8Db6\",\n multicallAddress: \"0xA1E7e3A69671C4494EC59Dbd442de930a93F911A\",\n quoterAddress: \"0xC195976fEF0985886E37036E2DF62bF371E12Df0\",\n v3MigratorAddress: \"0x65ef259b31bf1d977c37e9434658694267674897\",\n nonfungiblePositionManagerAddress: \"0xB8458EaAe43292e3c1F7994EFd016bd653d23c20\",\n tickLensAddress: \"0x23C0F71877a1Fc4e20A78018f9831365c85f3064\",\n};\n\nconst ROOTSTOCK_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0xaF37EC98A00FD63689CF3060BF3B6784E00caD82\",\n multicallAddress: \"0x996a9858cDfa45Ad68E47c9A30a7201E29c6a386\",\n quoterAddress: \"0xb51727c996C68E60F598A923a5006853cd2fEB31\",\n v3MigratorAddress: \"0x16678977CA4ec3DAD5efc7b15780295FE5f56162\",\n nonfungiblePositionManagerAddress: \"0x9d9386c042F194B460Ec424a1e57ACDE25f5C4b1\",\n tickLensAddress: \"0x55B9dF5bF68ADe972191a91980459f48ecA16afC\",\n swapRouter02Address: \"0x0B14ff67f0014046b4b99057Aec4509640b3947A\",\n};\n\nconst BLAST_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x792edAdE80af5fC680d96a2eD80A44247D2Cf6Fd\",\n multicallAddress: \"0xdC7f370de7631cE9e2c2e1DCDA6B3B5744Cf4705\",\n quoterAddress: \"0x6Cdcd65e03c1CEc3730AeeCd45bc140D57A25C77\",\n v3MigratorAddress: \"0x15CA7043CD84C5D21Ae76Ba0A1A967d42c40ecE0\",\n nonfungiblePositionManagerAddress: \"0xB218e4f7cF0533d4696fDfC419A0023D33345F28\",\n tickLensAddress: \"0x2E95185bCdD928a3e984B7e2D6560Ab1b17d7274\",\n swapRouter02Address: \"0x549FEB8c9bd4c12Ad2AB27022dA12492aC452B66\",\n};\n\nexport const CHAIN_TO_ADDRESSES_MAP: Record = {\n [ChainId.MAINNET]: MAINNET_ADDRESSES,\n [ChainId.OPTIMISM]: OPTIMISM_ADDRESSES,\n [ChainId.ARBITRUM_ONE]: ARBITRUM_ONE_ADDRESSES,\n [ChainId.POLYGON]: POLYGON_ADDRESSES,\n [ChainId.POLYGON_MUMBAI]: POLYGON_ADDRESSES,\n [ChainId.GOERLI]: GOERLI_ADDRESSES,\n [ChainId.CELO]: CELO_ADDRESSES,\n [ChainId.CELO_ALFAJORES]: CELO_ADDRESSES,\n [ChainId.BNB]: BNB_ADDRESSES,\n [ChainId.OPTIMISM_GOERLI]: OPTIMISM_GOERLI_ADDRESSES,\n [ChainId.OPTIMISM_SEPOLIA]: OPTIMISM_SEPOLIA_ADDRESSES,\n [ChainId.ARBITRUM_GOERLI]: ARBITRUM_GOERLI_ADDRESSES,\n [ChainId.ARBITRUM_SEPOLIA]: ARBITRUM_SEPOLIA_ADDRESSES,\n [ChainId.SEPOLIA]: SEPOLIA_ADDRESSES,\n [ChainId.AVALANCHE]: AVALANCHE_ADDRESSES,\n [ChainId.BASE]: BASE_ADDRESSES,\n [ChainId.BASE_GOERLI]: BASE_GOERLI_ADDRESSES,\n [ChainId.ZORA]: ZORA_ADDRESSES,\n [ChainId.ZORA_SEPOLIA]: ZORA_SEPOLIA_ADDRESSES,\n [ChainId.ROOTSTOCK]: ROOTSTOCK_ADDRESSES,\n [ChainId.BLAST]: BLAST_ADDRESSES,\n};\n\n/* V3 Contract Addresses */\nexport const V3_CORE_FACTORY_ADDRESSES: AddressMap = {\n ...SUPPORTED_CHAINS.reduce((memo, chainId) => {\n memo[chainId] = CHAIN_TO_ADDRESSES_MAP[chainId].v3CoreFactoryAddress;\n return memo;\n }, {}),\n};\n\nexport const V3_MIGRATOR_ADDRESSES: AddressMap = {\n ...SUPPORTED_CHAINS.reduce((memo, chainId) => {\n const v3MigratorAddress = CHAIN_TO_ADDRESSES_MAP[chainId].v3MigratorAddress;\n if (v3MigratorAddress) {\n memo[chainId] = v3MigratorAddress;\n }\n return memo;\n }, {}),\n};\n\nexport const MULTICALL_ADDRESSES: AddressMap = {\n ...SUPPORTED_CHAINS.reduce((memo, chainId) => {\n memo[chainId] = CHAIN_TO_ADDRESSES_MAP[chainId].multicallAddress;\n return memo;\n }, {}),\n};\n\n/**\n * The oldest V0 governance address\n */\nexport const GOVERNANCE_ALPHA_V0_ADDRESSES: AddressMap = constructSameAddressMap(\n \"0x5e4be8Bc9637f0EAA1A755019e06A68ce081D58F\",\n);\n/**\n * The older V1 governance address\n */\nexport const GOVERNANCE_ALPHA_V1_ADDRESSES: AddressMap = {\n [ChainId.MAINNET]: \"0xC4e172459f1E7939D522503B81AFAaC1014CE6F6\",\n};\n/**\n * The latest governor bravo that is currently admin of timelock\n */\nexport const GOVERNANCE_BRAVO_ADDRESSES: AddressMap = {\n [ChainId.MAINNET]: \"0x408ED6354d4973f66138C91495F2f2FCbd8724C3\",\n};\n\nexport const TIMELOCK_ADDRESSES: AddressMap = constructSameAddressMap(\"0x1a9C8182C09F50C8318d769245beA52c32BE35BC\");\n\nexport const MERKLE_DISTRIBUTOR_ADDRESS: AddressMap = {\n [ChainId.MAINNET]: \"0x090D4613473dEE047c3f2706764f49E0821D256e\",\n};\n\nexport const ARGENT_WALLET_DETECTOR_ADDRESS: AddressMap = {\n [ChainId.MAINNET]: \"0xeca4B0bDBf7c55E9b7925919d03CbF8Dc82537E8\",\n};\n\nexport const QUOTER_ADDRESSES: AddressMap = {\n ...SUPPORTED_CHAINS.reduce((memo, chainId) => {\n memo[chainId] = CHAIN_TO_ADDRESSES_MAP[chainId].quoterAddress;\n return memo;\n }, {}),\n};\n\nexport const NONFUNGIBLE_POSITION_MANAGER_ADDRESSES: AddressMap = {\n ...SUPPORTED_CHAINS.reduce((memo, chainId) => {\n const nonfungiblePositionManagerAddress = CHAIN_TO_ADDRESSES_MAP[chainId].nonfungiblePositionManagerAddress;\n if (nonfungiblePositionManagerAddress) {\n memo[chainId] = nonfungiblePositionManagerAddress;\n }\n return memo;\n }, {}),\n};\n\nexport const ENS_REGISTRAR_ADDRESSES: AddressMap = {\n ...constructSameAddressMap(\"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\"),\n};\n\nexport const SOCKS_CONTROLLER_ADDRESSES: AddressMap = {\n [ChainId.MAINNET]: \"0x65770b5283117639760beA3F867b69b3697a91dd\",\n};\n\nexport const TICK_LENS_ADDRESSES: AddressMap = {\n ...SUPPORTED_CHAINS.reduce((memo, chainId) => {\n const tickLensAddress = CHAIN_TO_ADDRESSES_MAP[chainId].tickLensAddress;\n if (tickLensAddress) {\n memo[chainId] = tickLensAddress;\n }\n return memo;\n }, {}),\n};\n\nexport const MIXED_ROUTE_QUOTER_V1_ADDRESSES: AddressMap = SUPPORTED_CHAINS.reduce((memo, chainId) => {\n const v1MixedRouteQuoterAddress = CHAIN_TO_ADDRESSES_MAP[chainId].v1MixedRouteQuoterAddress;\n if (v1MixedRouteQuoterAddress) {\n memo[chainId] = v1MixedRouteQuoterAddress;\n }\n return memo;\n}, {});\n\nexport const SWAP_ROUTER_02_ADDRESSES = (chainId: number) => {\n if (SUPPORTED_CHAINS.includes(chainId)) {\n const id = chainId as SupportedChainsType;\n return CHAIN_TO_ADDRESSES_MAP[id].swapRouter02Address ?? \"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45\";\n }\n return \"\";\n};\n","import { Web3Provider } from \"@ethersproject/providers\";\nimport type { Client, Transport, Chain } from \"viem\";\nimport { useMemo } from \"react\";\nimport { useClient } from \"wagmi\";\nimport { mainnet } from \"wagmi/chains\";\n\nconst providers = new WeakMap();\n\nexport function clientToWeb3js(client?: Client) {\n if (!client) return undefined;\n\n const { transport } = client;\n\n const provider = new Web3Provider(transport, mainnet.id);\n providers.set(client, provider);\n return provider;\n}\n\n/** Hook to convert a connected viem Client to an ethers.js Provider. */\nexport function useEthersWeb3Provider({ chainId = 1 }: { chainId?: number } = {}) {\n const client = useClient({ chainId });\n\n return useMemo(() => clientToWeb3js(client), [chainId, client]);\n}\n","import { Contract } from \"@ethersproject/contracts\";\nimport { useWeb3React } from \"@web3-react/core\";\nimport { chain, SUPPORTED_CHAINS } from \"constants/web3\";\nimport { useMemo } from \"react\";\nimport { getContract } from \"utils/web3/index\";\nimport { ckETH_MINTER_CONTRACT } from \"constants/ckETH\";\nimport { MULTICALL_ADDRESSES } from \"@icpswap/constants\";\n\nimport type { UniswapInterfaceMulticall, CkETH, ERC20, ERC20Helper } from \"abis/types\";\nimport UniswapInterfaceMulticallJson from \"abis/UniswapInterfaceMulticall.json\";\nimport ABI from \"abis/ckETH.json\";\nimport ERC20ABI from \"abis/ERC20.json\";\nimport ERC20HelperAbi from \"abis/ERC20Helper.json\";\n\nimport { useEthersWeb3Provider } from \"./useEthersProvider\";\n\nconst { abi: MulticallABI } = UniswapInterfaceMulticallJson;\n\n// returns null on errors\nexport function useContract(\n addressOrAddressMap: string | { [chainId: number]: string } | undefined,\n ABI: any,\n withSignerIfPossible = true,\n): T | null {\n const { provider, account } = useWeb3React();\n const ethersProvider = useEthersWeb3Provider();\n\n return useMemo(() => {\n if (!addressOrAddressMap || !ABI) return null;\n let address: string | undefined;\n if (typeof addressOrAddressMap === \"string\") address = addressOrAddressMap;\n else address = addressOrAddressMap[chain];\n if (!address) return null;\n\n try {\n return getContract(\n address,\n ABI,\n provider && provider?.network?.chainId && SUPPORTED_CHAINS.includes(provider?.network?.chainId)\n ? provider\n : ethersProvider,\n withSignerIfPossible && account ? account : undefined,\n );\n } catch (error) {\n console.error(\"Failed to get contract\", error);\n return null;\n }\n }, [addressOrAddressMap, ABI, provider, withSignerIfPossible, account]) as T;\n}\n\nexport function useETHContract(withSignerIfPossible?: boolean) {\n return useContract(ckETH_MINTER_CONTRACT, ABI, withSignerIfPossible);\n}\n\nexport function useERC20Contract(contract: string | undefined, withSignerIfPossible?: boolean) {\n return useContract(contract, ERC20ABI, withSignerIfPossible);\n}\n\nexport function useERC20MinterHelperContract(contract: string | undefined, withSignerIfPossible?: boolean) {\n return useContract(contract, ERC20HelperAbi, withSignerIfPossible);\n}\n\nexport function useInterfaceMulticall() {\n const MULTICALL_ADDRESSE = MULTICALL_ADDRESSES[chain];\n\n return useContract(MULTICALL_ADDRESSE, MulticallABI, false);\n}\n","import { ERC20Token } from \"@icpswap/swap-sdk\";\nimport { useCallback, useMemo } from \"react\";\nimport { useERC20Contract, useSupportedActiveChain, useWeb3CallsData, useActiveChain } from \"hooks/web3/index\";\n\nexport function useTokenName(tokenAddress: string | undefined) {\n const contract = useERC20Contract(tokenAddress, false);\n\n return useWeb3CallsData(\n useCallback(async () => {\n if (!tokenAddress || !contract) return undefined;\n return await contract.name();\n }, [tokenAddress, contract]),\n );\n}\n\nexport function useTokenSymbol(tokenAddress: string | undefined) {\n const contract = useERC20Contract(tokenAddress, false);\n\n return useWeb3CallsData(\n useCallback(async () => {\n if (!tokenAddress || !contract) return undefined;\n return await contract.symbol();\n }, [tokenAddress, contract]),\n );\n}\n\nexport function useTokenDecimals(tokenAddress: string | undefined) {\n const contract = useERC20Contract(tokenAddress, false);\n\n return useWeb3CallsData(\n useCallback(async () => {\n if (!tokenAddress || !contract) return undefined;\n return await contract.decimals();\n }, [tokenAddress, contract]),\n );\n}\n\nexport function useTokenLogo(tokenAddress: string | undefined) {\n return useWeb3CallsData(\n useCallback(async () => {\n if (!tokenAddress) return undefined;\n return `https://raw.githubusercontent.com/Uniswap/assets/master/blockchains/ethereum/assets/${tokenAddress}/logo.png`;\n }, [tokenAddress]),\n );\n}\n\n/**\n * Returns a Token from the tokenAddress.\n * Returns null if token is loading or null was passed.\n * Returns undefined if tokenAddress is invalid or token does not exist.\n */\nexport function useTokenFromActiveNetwork(tokenAddress: string | undefined): ERC20Token | undefined {\n const chainId = useActiveChain();\n const supportedActiveChain = useSupportedActiveChain();\n\n // TODO (WEB-1709): reduce this to one RPC call instead of 5\n // TODO: Fix redux-multicall so that these values do not reload.\n const { result: name } = useTokenName(tokenAddress);\n const { result: symbol } = useTokenSymbol(tokenAddress);\n const { result: decimals } = useTokenDecimals(tokenAddress);\n const { result: logo } = useTokenLogo(tokenAddress);\n\n return useMemo(() => {\n // If the token is on another chain, we cannot fetch it on-chain, and it is invalid.\n if (typeof tokenAddress !== \"string\" || !tokenAddress) return undefined;\n\n if ((!decimals && decimals !== 0) || !symbol || !name) {\n return undefined;\n }\n\n return new ERC20Token({ address: tokenAddress, decimals, name, symbol, logo });\n }, [tokenAddress, chainId, name, symbol, decimals, logo, supportedActiveChain]);\n}\n","/* eslint-disable no-param-reassign */\n/* eslint-disable no-console */\n\n// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://cra.link/PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === \"localhost\" ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === \"[::1]\" ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/),\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === \"installed\") {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n \"New content is available and will be used when all \" +\n \"tabs for this page are closed. See https://cra.link/PWA.\",\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log(\"Content is cached for offline use.\");\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error(\"Error during service worker registration:\", error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { \"Service-Worker\": \"script\" },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get(\"content-type\");\n if (response.status === 404 || (contentType != null && contentType.indexOf(\"javascript\") === -1)) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\"No internet connection found. App is running in offline mode.\");\n });\n}\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === \"production\" && \"serviceWorker\" in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener(\"load\", () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n \"This web app is being served cache-first by a service \" +\n \"worker. To learn more, visit https://cra.link/PWA\",\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nexport function unregister() {\n if (\"serviceWorker\" in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","import { useEffect } from \"react\";\nimport { RouteComponentProps } from \"react-router-dom\";\nimport ReactGA from \"react-ga\";\nimport { REACT_GA_TRACKING_ID } from \"constants/index\";\nimport { isMobile } from \"react-device-detect\";\n\nexport default function GoogleAnalytics({ location: { pathname, search } }: RouteComponentProps): null {\n useEffect(() => {\n ReactGA.pageview(`${pathname}${search}`);\n }, [pathname, search]);\n return null;\n}\n\nexport function initGoogleAnalytics() {\n if (typeof REACT_GA_TRACKING_ID === \"string\") {\n ReactGA.initialize(REACT_GA_TRACKING_ID);\n\n ReactGA.set({\n anonymizeIp: true,\n customBrowserType: !isMobile ? \"desktop\" : \"web3\" in window ? \"mobileWeb3\" : \"mobileRegular\",\n });\n } else {\n ReactGA.initialize(\"test\", { testMode: true, debug: true });\n }\n}\n","export const RISK_WARNING_INDEX = 3;\n","import { useState } from \"react\";\nimport { Grid, Typography, Box, Checkbox, Button } from \"@mui/material\";\nimport { makeStyles, useTheme } from \"@mui/styles\";\nimport { Theme } from \"@mui/material/styles\";\nimport Modal from \"components/modal/index\";\nimport { Trans, t } from \"@lingui/macro\";\nimport { TextButton } from \"components/index\";\nimport storage from \"redux-persist/lib/storage\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n content: {\n background: theme.palette.background.level3,\n border: `1px solid ${theme.palette.background.level4}`,\n borderRadius: \"12px\",\n padding: \"14px 16px\",\n marginTop: \"16px\",\n overflow: \"auto\",\n maxHeight: \"280px\",\n },\n button: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"40px\",\n padding: \"0 20px\",\n background: \"#FFFFFF\",\n boxShadow: \"0px 4px 4px rgba(0, 0, 0, 0.15)\",\n borderRadius: \"8px\",\n cursor: \"pointer\",\n },\n };\n});\n\nexport const RISK_STORAGE_NAME = \"ICPSwap_Risk\";\n\nexport async function getRiskStorage() {\n const storageRisk = await storage.getItem(RISK_STORAGE_NAME);\n const isRead = !storageRisk ? \"\" : JSON.parse(storageRisk);\n return isRead;\n}\n\nexport async function setRiskStorage(isRead: boolean) {\n await storage.setItem(RISK_STORAGE_NAME, JSON.stringify(isRead));\n}\n\nexport default function RiskStatementModal({\n open,\n onClose,\n onRead,\n}: {\n open: boolean;\n onClose: () => void;\n onRead: () => void;\n}) {\n const classes = useStyles();\n\n const [isRead, setIsRead] = useState(false);\n\n const theme = useTheme() as Theme;\n\n const handleRead = () => {\n setRiskStorage(true);\n onClose();\n onRead();\n };\n\n return (\n \n \n \n There is always some potential risk in using Tokens and/or Cryptos. DYOR before investing.\n \n \n \n \n \n \n 1. ICPSwap is a decentralized financial hub of the Internet Computer, providing the transaction function\n of various tokens and NFTs within its ecosystem and other services. All the services are deployed on the\n Internet Computer, and all transactions can be checked on the Internet Computer protocol. Only you can be\n responsible for your own funds. Please make sure to keep your funds safe and be vigilant of fraud.\n \n \n \n \n \n \n 2. The Internet Computer ecosystem is in its growth stage. All functions of ICPSwap have undergone\n multiple rounds of internal and public testing and also iterative repair, The ICPSwap DApp is now under\n SNS control, enhancing its security!\n \n \n \n \n \n \n 3. Anyone who has the seed phrase of a wallet address has control of the funds in that wallet. Never share\n your seed phrase under any circumstances whatsoever, including with the ICPSwap team.\n \n \n \n \n \n \n 4. Please stay vigilant to phishing attacks and make sure you are visiting{\" \"}\n \n https://app.icpswap.com\n {\" \"}\n - check the URL carefully.\n \n \n \n \n \n \n 5. For any events and news about ICPSwap, please refer to ICPSwap's Twitter:{\" \"}\n https://twitter.com/icpswap or @ICPSwap\n \n \n \n \n \n setIsRead(!isRead)}\n >\n {\n setIsRead(checked);\n }}\n />\n \n I have read the risk warning carefully and agree to take the risk myself\n \n \n \n \n \n \n \n \n * The ICPSwap founding team reserves right for the final explanation of all the statements.\n \n \n \n );\n}\n","import { useState, useEffect } from \"react\";\nimport { Grid, Typography, Box, useTheme, useMediaQuery } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { Trans } from \"@lingui/macro\";\nimport { Theme } from \"@mui/material/styles\";\nimport { RISK_WARNING_INDEX } from \"constants/zIndex\";\n\nimport RiskStatementModal, { getRiskStorage } from \"./Modal\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n container: {\n padding: \"15px 20px\",\n background: \"linear-gradient(89.44deg, #5569DB -0.31%, #8572FF 91.14%)\",\n [theme.breakpoints.down(\"md\")]: {\n padding: \"5px 10px\",\n },\n },\n button: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"40px\",\n padding: \"0 20px\",\n background: \"#FFFFFF\",\n boxShadow: \"0px 4px 4px rgba(0, 0, 0, 0.15)\",\n borderRadius: \"8px\",\n cursor: \"pointer\",\n [theme.breakpoints.down(\"md\")]: {\n height: \"30px\",\n padding: \"0 10px\",\n },\n [theme.breakpoints.down(\"sm\")]: {\n marginTop: \"8px\",\n },\n },\n };\n});\n\nexport default function RiskStatement() {\n const classes = useStyles();\n const theme = useTheme() as Theme;\n\n const [riskStatementShow, setRickStatementShow] = useState(false);\n const [isRead, setIsRead] = useState(true);\n\n const matchDownSM = useMediaQuery(theme.breakpoints.down(\"sm\"));\n\n useEffect(() => {\n (async () => {\n const isRead = await getRiskStorage();\n if (isRead === \"true\" || isRead === true) {\n setIsRead(true);\n } else {\n setIsRead(false);\n }\n })();\n }, []);\n\n const handleRead = () => {\n setRickStatementShow(true);\n };\n\n return !isRead ? (\n <>\n \n \n \n \n There is always some potential risk in using Tokens and/or Cryptos. DYOR before investing.\n \n \n \n \n Read risk warning and close\n \n \n \n \n {riskStatementShow ? (\n setRickStatementShow(false)}\n onRead={() => setIsRead(true)}\n />\n ) : null}\n \n ) : null;\n}\n","export default function ErrorImage() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { Box } from \"@mui/material\";\n\nexport default function Background() {\n return (\n \n );\n}\n","import { Grid, Box, Typography } from \"@mui/material\";\nimport { TextButton } from \"./TextButton\";\n\nfunction CloseIcon() {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport interface GlobalTipsProps {\n onClose: () => void;\n}\n\nexport function GlobalTips({ onClose }: GlobalTipsProps) {\n return (\n \n \n \n Join ICP's 3rd Anniversary on ICPSwap with liquidity mining and trading competition.{\" \"}\n \n Click here for details!\n \n \n Click here to earn juicy APR rewards!\n \n \n \n\n \n \n \n \n );\n}\n","import { Grid, Box, Typography } from \"@mui/material\";\nimport { Trans } from \"@lingui/macro\";\nimport { useHistory } from \"react-router-dom\";\n\nfunction CloseIcon() {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default function V3Event({ onClick }: { onClick: () => void }) {\n const history = useHistory();\n\n const handleToTwitter = () => {\n history.push(\"/swap\");\n };\n\n return (\n \n \n \n We have launched Swap(MOR) V3. Click to Switch to the Smoother Swap V3 Ver.\n \n \n\n \n \n \n \n );\n}\n","var _path, _path2, _path3, _path4, _path5, _path6, _mask, _g, _circle, _path7, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgLogoDark(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 125,\n height: 32,\n viewBox: \"0 0 125 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M47 21.8866H49.3981V9.07214H47V21.8866Z\",\n fill: \"white\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M62.964 20.2756C61.6461 21.5753 59.9435 22.1794 58.0943 22.1794C53.3346 22.1794 51.3209 18.9026 51.3028 15.571C51.2846 12.221 53.4628 8.81567 58.0943 8.81567C59.8336 8.81567 61.4814 9.47469 62.7995 10.7745L61.1882 12.3306C60.3463 11.5071 59.2115 11.1225 58.0943 11.1225C55.0007 11.1225 53.6643 13.4291 53.6829 15.571C53.7009 17.6946 54.9276 19.9098 58.0943 19.9098C59.2115 19.9098 60.4743 19.4521 61.3166 18.61L62.964 20.2756Z\",\n fill: \"white\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M66.5545 15.9001H70.1792C73.2728 15.9001 73.2547 11.3599 70.1792 11.3599H66.5545V15.9001ZM70.1792 18.1154H66.5544V21.8864H64.1379V9.07195C66.1518 9.07195 68.1655 9.05371 70.1792 9.05371C76.44 9.05371 76.4582 18.1154 70.1792 18.1154Z\",\n fill: \"white\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M84.4238 12.166C83.9848 11.4335 82.7762 10.738 81.3852 10.738C79.591 10.738 78.7306 11.4884 78.7306 12.4406C78.7306 13.5572 80.0485 13.8686 81.5866 14.0517C84.2593 14.3812 86.7487 15.0765 86.7487 18.1336C86.7487 20.9896 84.2223 22.2162 81.3665 22.2162C78.7489 22.2162 76.735 21.4109 75.7834 19.0676L77.7967 18.024C78.3643 19.4334 79.8472 20.0561 81.4033 20.0561C82.9227 20.0561 84.3507 19.5251 84.3507 18.1336C84.3507 16.9257 83.0875 16.4312 81.3852 16.2481C78.7669 15.9372 76.3506 15.2415 76.3506 12.3673C76.3506 9.73094 78.9502 8.65119 81.3116 8.63263C83.3071 8.63263 85.3758 9.20027 86.3463 11.177L84.4238 12.166Z\",\n fill: \"white\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M96.5635 12.8432L98.5405 19.6347L100.609 12.8432H103.081L99.9315 21.9235H97.3321L96.3986 19.2508L95.5933 16.23L94.7874 19.2508L93.8539 21.9235H91.2544L88.0872 12.8432H90.5773L92.6455 19.6347L94.6048 12.8432H96.5635Z\",\n fill: \"white\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M107.861 20.088C106.452 20.088 105.305 18.9409 105.305 17.531C105.305 16.1214 106.452 14.9743 107.861 14.9743C109.271 14.9743 110.418 16.1214 110.418 17.531C110.418 18.9409 109.271 20.088 107.861 20.088ZM110.441 13.5087C109.669 13.0124 108.779 12.7506 107.861 12.7506C105.225 12.7506 103.081 14.8954 103.081 17.5311C103.081 20.1672 105.225 22.3118 107.861 22.3118C108.779 22.3118 109.669 22.05 110.441 21.5537V22.1273H112.642V12.9166H110.441V13.5087Z\",\n fill: \"white\"\n })), _mask || (_mask = /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask0\",\n \"mask-type\": \"alpha\",\n maskUnits: \"userSpaceOnUse\",\n x: 114,\n y: 12,\n width: 11,\n height: 14\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M114.133 12.7412H124.113V25.7503H114.133V12.7412Z\",\n fill: \"white\"\n }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask0)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M119.332 20.0784C117.922 20.0784 116.775 18.9315 116.775 17.5216C116.775 16.1118 117.922 14.9649 119.332 14.9649C120.742 14.9649 121.889 16.1118 121.889 17.5216C121.889 18.9315 120.742 20.0784 119.332 20.0784ZM119.332 12.7412C118.244 12.7412 117.183 13.1176 116.334 13.8033V12.9621H114.133V25.7503H116.334V21.2402C117.183 21.926 118.244 22.3024 119.332 22.3024C121.968 22.3024 124.113 20.1576 124.113 17.5217C124.113 14.886 121.968 12.7412 119.332 12.7412Z\",\n fill: \"white\"\n }))), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 16,\n cy: 16,\n r: 16,\n fill: \"url(#paint0_linear)\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M19.9707 7.20001C17.4803 7.20001 15.6815 9.19209 15.2017 10.5987C14.3601 12.7633 14.7154 14.426 15.0285 15.8923L15.0512 15.9991C15.3419 17.3628 15.6163 18.6508 15.2234 20.2673C15.1869 20.4886 15.1221 20.7063 15.0307 20.9143C14.5812 21.9452 13.5617 22.6109 12.4338 22.6109C10.8728 22.6109 9.60277 21.3485 9.60277 19.7964C9.60277 18.2437 10.8728 16.9805 12.4338 16.9805C12.8542 16.9805 13.2582 17.0706 13.6355 17.2478L13.9643 17.4025L13.5546 14.9127L13.4253 14.8867C13.101 14.8218 12.7673 14.7892 12.4338 14.7892C9.65803 14.7892 7.3999 17.0353 7.3999 19.7964C7.3999 22.5576 9.65803 24.8036 12.4338 24.8036C14.7381 24.8036 16.7435 23.2539 17.3075 21.0474C17.8778 19.3192 17.6112 17.7424 17.2333 16.0072L17.1911 15.8141C16.8203 14.1169 16.5273 12.7763 17.4106 11.0062C17.8756 10.026 18.8803 9.39237 19.9707 9.39237C21.531 9.39237 22.8007 10.6548 22.8007 12.2068C22.8007 13.7588 21.531 15.0217 19.9707 15.0217C19.5838 15.0217 19.2081 14.9453 18.8528 14.794L18.5334 14.6584L18.9368 17.1101L19.0695 17.1343C19.3643 17.1873 19.6676 17.2145 19.9707 17.2145C22.7458 17.2145 25.0035 14.9679 25.0035 12.2068C25.0035 9.44603 22.7458 7.20001 19.9707 7.20001Z\",\n fill: \"white\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear\",\n x1: -0.264463,\n y1: 15.1351,\n x2: 29.2813,\n y2: 14.8475,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#5569DB\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#8572FF\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogoDark);\nexport default __webpack_public_path__ + \"static/media/logo-dark.7b8c12091e650c40c5e9f561c57473ba.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5, _path6, _mask, _g, _circle, _path7, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgLogoWhite(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 119,\n height: 32,\n viewBox: \"0 0 119 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M41 21.8866H43.3981V9.07214H41V21.8866Z\",\n fill: \"#212121\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M56.964 20.2756C55.6461 21.5753 53.9435 22.1794 52.0943 22.1794C47.3346 22.1794 45.3209 18.9026 45.3028 15.571C45.2846 12.221 47.4628 8.81567 52.0943 8.81567C53.8336 8.81567 55.4814 9.47469 56.7995 10.7745L55.1882 12.3306C54.3463 11.5071 53.2115 11.1225 52.0943 11.1225C49.0007 11.1225 47.6643 13.4291 47.6829 15.571C47.7009 17.6946 48.9276 19.9098 52.0943 19.9098C53.2115 19.9098 54.4743 19.4521 55.3166 18.61L56.964 20.2756Z\",\n fill: \"#212121\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M60.5545 15.9001H64.1792C67.2728 15.9001 67.2547 11.3599 64.1792 11.3599H60.5545V15.9001ZM64.1792 18.1154H60.5544V21.8864H58.1379V9.07195C60.1518 9.07195 62.1655 9.05371 64.1792 9.05371C70.44 9.05371 70.4582 18.1154 64.1792 18.1154Z\",\n fill: \"#212121\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M78.4238 12.1659C77.9848 11.4335 76.7762 10.738 75.3852 10.738C73.591 10.738 72.7306 11.4884 72.7306 12.4406C72.7306 13.5571 74.0485 13.8685 75.5866 14.0516C78.2593 14.3811 80.7487 15.0765 80.7487 18.1336C80.7487 20.9895 78.2223 22.2162 75.3665 22.2162C72.7489 22.2162 70.735 21.4109 69.7834 19.0675L71.7967 18.0239C72.3643 19.4334 73.8472 20.056 75.4033 20.056C76.9227 20.056 78.3507 19.5251 78.3507 18.1336C78.3507 16.9256 77.0875 16.4311 75.3852 16.2481C72.7669 15.9371 70.3506 15.2415 70.3506 12.3673C70.3506 9.73087 72.9502 8.65113 75.3116 8.63257C77.3071 8.63257 79.3758 9.20021 80.3463 11.1769L78.4238 12.1659Z\",\n fill: \"#212121\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M90.5635 12.8431L92.5405 19.6346L94.6091 12.8431H97.0806L93.9315 21.9234H91.3321L90.3986 19.2507L89.5933 16.2299L88.7874 19.2507L87.8539 21.9234H85.2544L82.0872 12.8431H84.5773L86.6455 19.6346L88.6048 12.8431H90.5635Z\",\n fill: \"#212121\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M101.861 20.0878C100.452 20.0878 99.3046 18.9407 99.3046 17.5308C99.3046 16.1213 100.452 14.9742 101.861 14.9742C103.271 14.9742 104.418 16.1213 104.418 17.5308C104.418 18.9407 103.271 20.0878 101.861 20.0878ZM104.441 13.5086C103.669 13.0123 102.779 12.7505 101.861 12.7505C99.2252 12.7505 97.0806 14.8953 97.0806 17.531C97.0806 20.1671 99.2252 22.3117 101.861 22.3117C102.779 22.3117 103.669 22.0498 104.441 21.5536V22.1271H106.642V12.9164H104.441V13.5086Z\",\n fill: \"#212121\"\n })), _mask || (_mask = /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask0\",\n \"mask-type\": \"alpha\",\n maskUnits: \"userSpaceOnUse\",\n x: 108,\n y: 12,\n width: 11,\n height: 14\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M108.133 12.7411H118.113V25.7502H108.133V12.7411Z\",\n fill: \"white\"\n }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask0)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M113.332 20.0783C111.922 20.0783 110.775 18.9313 110.775 17.5214C110.775 16.1117 111.922 14.9648 113.332 14.9648C114.742 14.9648 115.889 16.1117 115.889 17.5214C115.889 18.9313 114.742 20.0783 113.332 20.0783ZM113.332 12.7411C112.244 12.7411 111.183 13.1175 110.334 13.8032V12.9619H108.133V25.7502H110.334V21.2401C111.183 21.9259 112.244 22.3023 113.332 22.3023C115.968 22.3023 118.113 20.1575 118.113 17.5216C118.113 14.8859 115.968 12.7411 113.332 12.7411Z\",\n fill: \"#212121\"\n }))), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 16,\n cy: 16,\n r: 16,\n fill: \"url(#paint0_linear)\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M19.9707 7.19995C17.4803 7.19995 15.6815 9.19203 15.2017 10.5987C14.3601 12.7632 14.7154 14.4259 15.0285 15.8922L15.0512 15.999C15.3419 17.3627 15.6163 18.6507 15.2234 20.2673C15.1869 20.4886 15.1221 20.7062 15.0307 20.9142C14.5812 21.9451 13.5617 22.6108 12.4338 22.6108C10.8728 22.6108 9.60277 21.3484 9.60277 19.7964C9.60277 18.2436 10.8728 16.9804 12.4338 16.9804C12.8542 16.9804 13.2582 17.0705 13.6355 17.2477L13.9643 17.4024L13.5546 14.9126L13.4253 14.8867C13.101 14.8218 12.7673 14.7891 12.4338 14.7891C9.65803 14.7891 7.3999 17.0353 7.3999 19.7964C7.3999 22.5576 9.65803 24.8036 12.4338 24.8036C14.7381 24.8036 16.7435 23.2538 17.3075 21.0474C17.8778 19.3192 17.6112 17.7424 17.2333 16.0071L17.1911 15.814C16.8203 14.1169 16.5273 12.7763 17.4106 11.0062C17.8756 10.0259 18.8803 9.39231 19.9707 9.39231C21.531 9.39231 22.8007 10.6547 22.8007 12.2068C22.8007 13.7587 21.531 15.0217 19.9707 15.0217C19.5838 15.0217 19.2081 14.9453 18.8528 14.794L18.5334 14.6583L18.9368 17.1101L19.0695 17.1342C19.3643 17.1872 19.6676 17.2144 19.9707 17.2144C22.7458 17.2144 25.0035 14.9679 25.0035 12.2068C25.0035 9.44597 22.7458 7.19995 19.9707 7.19995Z\",\n fill: \"white\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear\",\n x1: -0.264463,\n y1: 15.1351,\n x2: 29.2813,\n y2: 14.8475,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#5569DB\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#8572FF\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogoWhite);\nexport default __webpack_public_path__ + \"static/media/logo-white.3e0cd9be6a0e52b49b72c67e9486d930.svg\";\nexport { ForwardRef as ReactComponent };","import { useTheme } from \"@mui/material/\";\nimport { Theme } from \"@mui/material/styles\";\nimport logoDark from \"../assets/images/logo-dark.svg\";\nimport logo from \"../assets/images/logo-white.svg\";\n\nexport default function Logo() {\n const theme = useTheme() as Theme;\n\n return \"\";\n}\n","import { Link } from \"react-router-dom\";\nimport { ButtonBase } from \"@mui/material\";\nimport Logo from \"components/Logo\";\n\nexport default function LogoSection() {\n return (\n \n \n \n );\n}\n","/** This is auto generated by scripts/pre-deploy.sh **/\n\nexport const version: string = \"4.10.1\";\n","import { INFO_URL } from \"constants/index\";\nimport TwitterIcon from \"./icons/Twitter\";\nimport TelegramIcon from \"./icons/Telegram\";\nimport DiscordIcon from \"./icons/Discord\";\nimport WebsiteIcon from \"./icons/Website\";\nimport MediumIcon from \"./icons/Medium\";\nimport GithubIcon from \"./icons/Github\";\nimport GitbookIcon from \"./icons/Gitbook\";\nimport DSCVRIcon from \"./icons/DSCVR\";\nimport SimpleModeIcon from \"./icons/SimpleMode\";\nimport ProModeIcon from \"./icons/ProMode\";\nimport { version } from \"../../../.version\";\n\nexport type Route = {\n name: string;\n path?: string;\n link?: string;\n subMenus?: SubMenu[];\n key: string;\n icon?: () => JSX.Element;\n disabled?: boolean;\n};\n\nexport type SubMenu = Route;\n\nexport const MAX_NUMBER = 6;\n\nexport const MOBILE_MAX_NUMBER = 7;\n\nexport const routes: Route[] = [\n {\n key: \"swap\",\n name: `Swap`,\n path: \"/swap\",\n subMenus: [\n { key: \"simple-mode\", name: `Simple mode`, path: \"/swap\", icon: SimpleModeIcon },\n { key: \"pro-mode\", name: `Pro mode`, path: \"/swap/pro\", icon: ProModeIcon },\n ],\n },\n {\n key: \"liquidity\",\n name: `Liquidity`,\n path: \"/liquidity\",\n },\n {\n key: \"stake\",\n name: `Stake`,\n path: \"/stake\",\n subMenus: [\n { key: \"staking-token\", name: `Staking Pool V2`, path: \"/stake\" },\n { key: \"staking v1\", name: `Staking Pool V1`, path: \"/stake/v1\" },\n ],\n },\n {\n key: \"farm\",\n name: `Farm`,\n path: `/farm`,\n },\n\n {\n key: \"wallet\",\n name: `Wallet`,\n path: `/wallet`,\n },\n {\n key: \"info\",\n name: `Info`,\n link: INFO_URL,\n },\n {\n key: \"marketplace\",\n name: `NFT`,\n path: \"/marketplace/collections\",\n },\n {\n key: \"/token-claim\",\n name: `Claim`,\n path: \"/token-claim\",\n },\n {\n key: \"sns\",\n name: `SNS(Beta)`,\n path: `/sns/neurons`,\n },\n {\n key: \"voting\",\n name: `Voting`,\n path: `/voting`,\n },\n {\n key: \"console\",\n name: `Console`,\n path: `/console`,\n },\n {\n key: \"followUS\",\n name: `Follow US`,\n subMenus: [\n { key: \"followUS_twitter\", name: `Twitter`, link: \"https://twitter.com/ICPSwap\", icon: TwitterIcon },\n { key: \"followUS_Telegram\", name: `Telegram`, link: \"https://t.me/ICPSwap_Official\", icon: TelegramIcon },\n {\n key: \"followUS_DSCVR\",\n name: `DSCVR`,\n link: \"https://h5aet-waaaa-aaaab-qaamq-cai.raw.ic0.app/p/icpswap\",\n icon: DSCVRIcon,\n },\n { key: \"followUS_Medium\", name: `Medium`, link: \"https://icpswap.medium.com/\", icon: MediumIcon },\n { key: \"followUS_Gitbook\", name: `Gitbook`, link: \"https://iloveics.gitbook.io/icpswap/\", icon: GitbookIcon },\n { key: \"followUS_Github\", name: `Github`, link: \"https://github.com/ICPSwap-Labs\", icon: GithubIcon },\n { key: \"followUS_Discord\", name: `Discord`, link: \"https://discord.gg/UFDTQkBfEB\", icon: DiscordIcon },\n { key: \"followUS_Website\", name: `Website`, link: \"http://icpswap.com/\", icon: WebsiteIcon },\n ],\n },\n // {\n // key: \"feedback\",\n // name: \"Feedback\",\n // link: \"https://forms.gle/E1WAEfemwDBnLmY66\",\n // },\n {\n key: \"wrap\",\n name: \"WICP\",\n path: \"/swap/v2/wrap\",\n },\n {\n key: \"version\",\n name: `Version ${version}`,\n path: \"\",\n disabled: true,\n },\n];\n","export default function SimpleModeIcon() {\n return (\n \n \n \n );\n}\n","export default function ProModeIcon() {\n return (\n \n \n \n );\n}\n","export default function TwitterIcon() {\n return (\n \n \n \n );\n}\n","export default function TelegramIcon() {\n return (\n \n \n \n );\n}\n","export default function DSCVSRIcon() {\n return (\n \n \n \n \n \n \n \n \n \n );\n}\n","export default function MediumIcon() {\n return (\n \n \n \n );\n}\n","export default function GithubIcon() {\n return (\n \n \n \n \n );\n}\n","export default function GithubIcon() {\n return (\n \n \n \n );\n}\n","export default function DiscordIcon() {\n return (\n \n \n \n \n );\n}\n","export default function WebsiteIcon() {\n return (\n \n \n \n \n );\n}\n","import { makeStyles } from \"@mui/styles\";\nimport { MenuList, MenuItem, Popper, Grid, Typography } from \"@mui/material\";\nimport { ClickAwayListener } from \"@mui/base\";\nimport { useLocation } from \"react-router-dom\";\nimport { Link } from \"components/index\";\n\nimport { Route } from \"./config\";\n\nconst useStyles = makeStyles(() => {\n return {\n popper: {\n zIndex: 1101,\n },\n };\n});\n\nexport interface SubMenuPopperProps {\n route: Route;\n subMenuKey: string | null;\n onClickAway: () => void;\n anchor: any;\n onMenuClick: (route: Route) => void;\n placement?:\n | \"top-start\"\n | \"top-end\"\n | \"bottom-start\"\n | \"bottom-end\"\n | \"right-start\"\n | \"right-end\"\n | \"left-start\"\n | \"left-end\";\n menuWidth?: string;\n}\n\nexport function SubMenuPopper({\n route,\n subMenuKey,\n onClickAway,\n anchor,\n onMenuClick,\n placement,\n menuWidth,\n}: SubMenuPopperProps) {\n const classes = useStyles();\n const location = useLocation();\n const pathName = location.pathname;\n\n const isActive = (route: Route) => {\n return pathName === route?.path;\n };\n\n return route.subMenus && route.subMenus.length ? (\n \n \n \n {(route.subMenus ?? []).map((subRoute) => {\n const Icon = subRoute.icon;\n\n return (\n \n onMenuClick(subRoute)}\n className={subRoute.disabled ? \"opacity1\" : \"\"}\n sx={{\n \"&:hover\": {\n \"& svg\": {\n color: \"text.primary\",\n },\n },\n }}\n >\n \n {Icon ? : null}\n \n \n {subRoute.name}\n \n \n \n \n \n );\n })}\n \n \n \n ) : null;\n}\n","import { useState } from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport { MenuList, MenuItem, Popper, Typography } from \"@mui/material\";\nimport { ClickAwayListener } from \"@mui/base\";\nimport { Link } from \"components/index\";\n\nimport { Route } from \"./config\";\nimport { SubMenuPopper } from \"./SubMenuPopper\";\n\nconst useStyles = makeStyles(() => {\n return {\n popper: {\n zIndex: 1101,\n },\n };\n});\n\nexport interface ExceedRoutesPopperProps {\n routes: Route[];\n anchor: any;\n open: boolean;\n onMenuClick: (route: Route) => void;\n onClickAway: () => void;\n}\n\nexport function ExceedRoutesPopper({ open, routes, anchor, onMenuClick, onClickAway }: ExceedRoutesPopperProps) {\n const classes = useStyles();\n\n const [subMenuOpenKey, setSubMenuOpenKey] = useState(null);\n const [subMenuTarget, setSubMenuTarget] = useState(undefined);\n\n const handleSubMenuMouseEnter = (route: Route, target: any) => {\n if (route.subMenus && route.subMenus.length) {\n setSubMenuOpenKey(route.key);\n setSubMenuTarget(target);\n }\n };\n\n const handleSubMenuMouseLeave = () => {\n setSubMenuOpenKey(null);\n };\n\n const handleSubMenuClose = () => {\n setSubMenuOpenKey(null);\n };\n\n const handleMenuClick = (route: Route) => {\n if (!route.subMenus) {\n handleSubMenuClose();\n onMenuClick(route);\n }\n };\n\n return (\n \n \n \n {routes.map((route, index) => (\n \n handleMenuClick(route)}\n onMouseEnter={({ target }) => handleSubMenuMouseEnter(route, target)}\n onMouseLeave={handleSubMenuMouseLeave}\n disabled={!!route.disabled}\n className={route.disabled ? \"opacity1\" : \"\"}\n >\n {route.name}\n\n \n \n \n ))}\n \n \n \n );\n}\n","import { useRef, useState } from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport { Box, Grid } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport { Route, MAX_NUMBER } from \"./config\";\nimport { ExceedRoutesPopper } from \"./ExceedRoutesPopper\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n navItem: {\n height: \"40px\",\n cursor: \"pointer\",\n padding: \"0 16px\",\n \"&:hover\": {\n \"& .MuiTypography-root\": {\n color: \"#FFFFFF\",\n },\n },\n \"&.active\": {\n \"& .MuiTypography-root\": {\n color: \"#FFFFFF\",\n },\n },\n [theme.breakpoints.down(\"md\")]: {\n height: \"36px\",\n padding: \"0 12px\",\n },\n },\n more: {\n padding: \"0 17px\",\n cursor: \"pointer\",\n \"&:hover\": {\n \"& .dot\": {\n background: \"#fff\",\n },\n },\n },\n dot: {\n width: \"5px\",\n height: \"5px\",\n background: theme.colors.darkTextSecondary,\n borderRadius: \"50%\",\n marginRight: \"6px\",\n \"&:last-child\": {\n marginRight: \"0px\",\n },\n },\n };\n});\n\nexport interface ExceedRoutesProps {\n routes: Route[];\n onMenuClick?: (route: Route) => void;\n}\n\nexport function ExceedRoutes({ routes, onMenuClick }: ExceedRoutesProps) {\n const classes = useStyles();\n const ref = useRef(null);\n\n const [open, setOpen] = useState(false);\n\n const handleMouseEnter = () => {\n setOpen(true);\n };\n\n const handleMouseLeave = () => {\n setOpen(false);\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n\n const handleMenuClick = (route: Route) => {\n setOpen(false);\n if (onMenuClick) onMenuClick(route);\n };\n\n return (\n \n \n \n \n \n \n\n index > MAX_NUMBER || index === MAX_NUMBER)}\n />\n \n );\n}\n","import { useState } from \"react\";\nimport { useTheme } from \"@mui/styles\";\nimport { Box, Grid, Typography, useMediaQuery } from \"@mui/material\";\nimport { useLocation } from \"react-router-dom\";\nimport { Theme } from \"@mui/material/styles\";\nimport { ChevronDown } from \"react-feather\";\nimport { Link } from \"components/index\";\n\nimport { Route, MAX_NUMBER } from \"./config\";\nimport { SubMenuPopper } from \"./SubMenuPopper\";\n\nexport interface RoutesProps {\n routes: Route[];\n onMenuClick?: (route: Route) => void;\n}\n\nexport function Routes({ routes, onMenuClick }: RoutesProps) {\n const location = useLocation();\n const pathName = location.pathname;\n const theme = useTheme() as Theme;\n\n const matchDownMD = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n const [subMenuOpenKey, setSubMenuOpenKey] = useState(null);\n const [subMenuTarget, setSubMenuTarget] = useState(undefined);\n\n const handleMenuMouseEnter = (route: Route, target: any) => {\n if (route.subMenus && route.subMenus.length) {\n setSubMenuOpenKey(route.key);\n setSubMenuTarget(target);\n }\n };\n\n const handleMenuMouseLeave = () => {\n setSubMenuOpenKey(null);\n };\n\n const handleSubMenuClose = () => {\n setSubMenuOpenKey(null);\n };\n\n function isActive(route: Route) {\n return !!route.path && route.key === pathName.split(\"/\")[1];\n }\n\n const handleRouteClick = (route: Route) => {\n if (!route.subMenus) {\n handleSubMenuClose();\n if (onMenuClick) onMenuClick(route);\n }\n };\n\n return (\n <>\n {routes.map((route, index) =>\n index >= MAX_NUMBER ? null : (\n \n handleRouteClick(route)}\n className={`${isActive(route) ? \"active\" : \"\"}`}\n sx={{\n height: \"40px\",\n cursor: \"pointer\",\n padding: \"0 16px\",\n \"&:hover\": {\n \"& .MuiTypography-root\": {\n color: \"#FFFFFF\",\n },\n },\n \"&.active\": {\n \"& .MuiTypography-root\": {\n color: \"#FFFFFF\",\n },\n },\n [theme.breakpoints.down(\"md\")]: {\n height: \"36px\",\n padding: \"0 12px\",\n },\n }}\n >\n handleMenuMouseEnter(route, target)}\n onMouseLeave={handleMenuMouseLeave}\n >\n \n {route.name}\n {route.subMenus ? : null}\n \n\n \n \n \n \n ),\n )}\n \n );\n}\n","import { Box } from \"@mui/material\";\n\nimport { routes, MAX_NUMBER } from \"./config\";\nimport { ExceedRoutes } from \"./ExceedRoutes\";\nimport { Routes } from \"./Routes\";\n\nexport default function NavBar() {\n return (\n \n \n {routes.length > MAX_NUMBER ? : null}\n \n );\n}\n","var _circle, _path, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgLogo1(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n viewBox: \"0 0 32 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 16,\n cy: 16,\n r: 16,\n fill: \"url(#paint0_linear_39278_19113)\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M20.1773 7.03906C17.6017 7.03906 15.7412 9.09941 15.245 10.5543C14.3745 12.793 14.742 14.5127 15.0658 16.0292L15.0893 16.1397C15.39 17.5501 15.6737 18.8822 15.2674 20.5542C15.2296 20.7831 15.1626 21.0082 15.0681 21.2233C14.6031 22.2895 13.5487 22.9781 12.3822 22.9781C10.7677 22.9781 9.45414 21.6724 9.45414 20.0671C9.45414 18.4612 10.7677 17.1547 12.3822 17.1547C12.817 17.1547 13.2349 17.2479 13.625 17.4311L13.9651 17.5912L13.5414 15.0161L13.4077 14.9892C13.0722 14.9221 12.7272 14.8883 12.3822 14.8883C9.51129 14.8883 7.17578 17.2114 7.17578 20.0671C7.17578 22.923 9.51129 25.246 12.3822 25.246C14.7655 25.246 16.8396 23.6431 17.4229 21.361C18.0127 19.5736 17.737 17.9428 17.3462 16.148L17.3025 15.9483C16.919 14.193 16.616 12.8065 17.5296 10.9757C18.0104 9.96187 19.0496 9.30655 20.1773 9.30655C21.7912 9.30655 23.1043 10.6122 23.1043 12.2175C23.1043 13.8226 21.7912 15.1288 20.1773 15.1288C19.7773 15.1288 19.3886 15.0498 19.0211 14.8933L18.6908 14.753L19.108 17.2888L19.2452 17.3138C19.5502 17.3686 19.8639 17.3967 20.1773 17.3967C23.0476 17.3967 25.3827 15.0732 25.3827 12.2175C25.3827 9.36205 23.0476 7.03906 20.1773 7.03906Z\",\n fill: \"white\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_39278_19113\",\n x1: -0.264463,\n y1: 15.1351,\n x2: 29.2813,\n y2: 14.8475,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#5569DB\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#8572FF\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogo1);\nexport default __webpack_public_path__ + \"static/media/logo1.2fb6a8dc89f75f8ba16877a187602346.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgArrowDown(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_39281_19125)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.5303 9.53033C18.8232 9.23744 18.8232 8.76256 18.5303 8.46967C18.2374 8.17678 17.7626 8.17678 17.4697 8.46967L18.5303 9.53033ZM12 15L11.4697 15.5303C11.7626 15.8232 12.2374 15.8232 12.5303 15.5303L12 15ZM6.53033 8.46967C6.23744 8.17678 5.76256 8.17678 5.46967 8.46967C5.17678 8.76256 5.17678 9.23744 5.46967 9.53033L6.53033 8.46967ZM17.4697 8.46967L11.4697 14.4697L12.5303 15.5303L18.5303 9.53033L17.4697 8.46967ZM12.5303 14.4697L6.53033 8.46967L5.46967 9.53033L11.4697 15.5303L12.5303 14.4697Z\",\n fill: \"#8492C4\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_39281_19125\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 24,\n height: 24,\n fill: \"white\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrowDown);\nexport default __webpack_public_path__ + \"static/media/arrow-down.225a9b51561a669be37be87e6b27199c.svg\";\nexport { ForwardRef as ReactComponent };","import { useState } from \"react\";\nimport { Box, Typography, Collapse } from \"components/Mui\";\nimport { ReactComponent as ArrowDownIcon } from \"assets/images/arrow-down.svg\";\nimport { useLocation } from \"react-router-dom\";\n\nimport { Route } from \"../config\";\n\nexport interface RoutesProps {\n routes: Route[];\n onRouteClick: (route: Route) => void;\n}\n\nexport function Routes({ routes, onRouteClick }: RoutesProps) {\n const location = useLocation();\n const pathName = location.pathname;\n const [collapseKey, setCollapseKey] = useState(undefined);\n\n const handleRouteClick = (route: Route) => {\n if (route.subMenus) {\n if (collapseKey === route.key) {\n setCollapseKey(undefined);\n } else {\n setCollapseKey(route.key);\n }\n\n return;\n }\n\n onRouteClick(route);\n };\n\n const isActive = (route: Route) => {\n return pathName === route?.path;\n };\n\n return (\n <>\n {routes.map((route, index) => {\n return (\n handleRouteClick(route)}\n sx={{\n padding: \"24px 16px\",\n borderBottom: \"1px solid #29314F\",\n \"&:last-type-of\": {\n borderBottom: \"none\",\n },\n }}\n >\n \n \n {route.name}\n \n\n {route.subMenus ? : null}\n \n\n \n {route.subMenus && route.subMenus.length ? (\n \n {(route.subMenus ?? []).map((subRoute) => {\n const Icon = subRoute.icon;\n\n return (\n handleRouteClick(subRoute)}\n sx={{\n color: isActive(subRoute) ? \"text.primary\" : \"text.secondary\",\n }}\n >\n \n {Icon ? : null}\n \n {subRoute.name}\n \n \n \n );\n })}\n \n ) : null}\n \n \n );\n })}\n \n );\n}\n","import { useMemo, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { mockALinkAndOpen } from \"@icpswap/utils\";\nimport { XCircle } from \"react-feather\";\nimport { ReactComponent as Logo } from \"assets/images/logo1.svg\";\nimport { Box, Collapse } from \"components/Mui\";\nimport { ReactComponent as ArrowDownIcon } from \"assets/images/arrow-down.svg\";\n\nimport { Routes } from \"./Routes\";\nimport { routes, Route, MOBILE_MAX_NUMBER } from \"../config\";\n\nexport interface MobileNavbarProps {\n onClose?: () => void;\n}\n\nexport default function MobileNavbar({ onClose }: MobileNavbarProps) {\n const history = useHistory();\n const [collapseKey, setCollapseKey] = useState(undefined);\n const [exceedOpen, setExceedOpen] = useState(false);\n\n const handleRouteClick = (route: Route) => {\n if (route.subMenus) {\n if (collapseKey === route.key) {\n setCollapseKey(undefined);\n } else {\n setCollapseKey(route.key);\n }\n\n return;\n }\n\n if (!route.path && !route.link) return;\n\n if (route.link) {\n mockALinkAndOpen(route.link ?? \"\", \"nav-bar-menu\");\n } else {\n history.push(route.path ?? \"\");\n }\n\n if (onClose) onClose();\n };\n\n const noExceedRoutes = useMemo(() => {\n return routes.filter((route, index) => index < MOBILE_MAX_NUMBER);\n }, [routes, MOBILE_MAX_NUMBER]);\n\n const exceedRoutes = useMemo(() => {\n return routes.filter((route, index) => index >= MOBILE_MAX_NUMBER);\n }, [routes, MOBILE_MAX_NUMBER]);\n\n return (\n <>\n \n \n \n \n\n {/* \n \n */}\n\n \n \n\n {exceedRoutes.length > 0 ? (\n <>\n setExceedOpen(!exceedOpen)}\n >\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n ) : null}\n \n \n );\n}\n","import { useState } from \"react\";\nimport { Grid, Box, useMediaQuery, Drawer } from \"@mui/material\";\nimport { Flex } from \"@icpswap/ui\";\nimport { createTheme } from \"@mui/material/styles\";\nimport DensityMediumIcon from \"@mui/icons-material/DensityMedium\";\n\nimport LogoSection from \"../../LogoSection\";\nimport ProfileSection from \"./ProfileSection\";\nimport Navbar from \"../Navbar\";\nimport MobileNavbar from \"../Navbar/mobile/Navbar\";\n// import TokenClaim from \"./TokenClaim\";\n\nexport const customizeTheme = createTheme({\n breakpoints: {\n values: {\n md: 960,\n },\n },\n});\n\nexport const customizeBreakPoints = customizeTheme.breakpoints;\n\nexport default function Header() {\n const [drawerOpen, setDrawerOpen] = useState(false);\n\n const matchDownMD = useMediaQuery(customizeBreakPoints.down(\"md\"));\n\n const handleToggleDrawer = () => {\n setDrawerOpen(true);\n };\n\n return (\n <>\n \n \n {matchDownMD ? (\n \n ) : (\n <>\n \n \n \n \n \n \n \n )}\n \n\n \n {/* */}\n \n \n\n setDrawerOpen(false)}\n sx={{\n width: \"100%\",\n \"& .MuiPaper-root\": {\n width: \"100%\",\n },\n }}\n >\n setDrawerOpen(false)} />\n \n \n \n );\n}\n","import { Grid, Box, Typography } from \"@mui/material\";\n\nfunction CloseIcon() {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport interface GlobalTipsProps {\n onClose: () => void;\n}\n\nexport function SnsTips({ onClose }: GlobalTipsProps) {\n return (\n \n \n \n The SNS function is deployed based on the NNS frontend and is currently in public testing.\n \n \n\n \n \n \n \n );\n}\n","import React, { useState, useMemo } from \"react\";\nimport { makeStyles, useTheme } from \"@mui/styles\";\nimport { AppBar, CssBaseline, Grid, Box } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport Background from \"components/Background\";\nimport { GlobalTips } from \"@icpswap/ui\";\nimport { useLocation } from \"react-router-dom\";\nimport V3Event from \"./V3Event\";\nimport Header from \"./Header\";\nimport { SnsTips } from \"./SnsTips\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n appBar: {\n backgroundColor: \"#0B132F\",\n },\n content: {\n background: \"transparent\",\n width: \"100%\",\n minHeight: \"calc(100vh - 64px)\",\n flexGrow: 1,\n padding: \"0 16px\",\n borderRadius: \"8px\",\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n \"&.small-padding\": {\n padding: \"0 12px\",\n },\n transition: theme.transitions.create(\"margin\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n [theme.breakpoints.down(\"md\")]: {\n padding: \"0 16px\",\n minHeight: \"calc(100vh - 60px)\",\n },\n [theme.breakpoints.down(\"sm\")]: {\n padding: \"0 12px\",\n backgroundColor: \"transparent\",\n },\n },\n mainContent: {\n paddingTop: \"64px\",\n \"&.pro\": {\n background: theme.palette.background.level1,\n },\n [theme.breakpoints.down(\"md\")]: {\n paddingTop: \"60px\",\n },\n },\n };\n});\n\nconst SMALL_PADDING_PATH = [\"/swap/pro\"];\n\nexport function MainLayout({ children }: { children: React.ReactNode }) {\n const theme = useTheme() as Theme;\n const classes = useStyles();\n const location = useLocation();\n\n const [show, setShow] = useState(true);\n const [globalTipShow, setGlobalTipShow] = useState(false);\n const [snsTipShow, setSnsTipShow] = useState(true);\n\n const isSmallPadding = useMemo(() => {\n return SMALL_PADDING_PATH.includes(location.pathname);\n }, [location]);\n\n return (\n <>\n \n\n \n \n
\n \n \n\n \n {show && location.pathname.includes(\"/swap/v2\") ? setShow(false)} /> : null}\n {globalTipShow ? setGlobalTipShow(false)} /> : null}\n {snsTipShow && location.pathname.includes(\"sns\") ? setSnsTipShow(false)} /> : null}\n\n
{children}
\n
\n\n \n \n );\n}\n","import React from \"react\";\nimport { MainLayout } from \"./MainLayout\";\n\nexport interface LayoutProps {\n children: React.ReactNode;\n}\n\nexport function Layout({ children }: LayoutProps) {\n return {children};\n}\n","import React, { useEffect } from \"react\";\nimport * as Sentry from \"@sentry/react\";\nimport { Grid, Box, Typography } from \"@mui/material\";\nimport ErrorImage from \"assets/images/Error\";\nimport { Layout } from \"components/Layout/index\";\nimport { Trans } from \"@lingui/macro\";\nimport copy from \"copy-to-clipboard\";\n\ninterface FallbackProps {\n error: Error;\n eventId: string | number | null;\n}\n\nfunction Fallback({ error, eventId }: FallbackProps) {\n const handleCopyError = () => {\n copy(`${error?.toString() ?? \"\"}_${eventId}`);\n };\n\n useEffect(() => {\n if (error) {\n const errorString = error.toString();\n if (/Loading chunk *.{1,} failed./.test(errorString) || /Unexpected token '<'/.test(errorString)) {\n window.location.reload();\n }\n }\n }, [error]);\n\n return (\n \n \n \n \n \n \n Oops, you've encountered an error\n \n\n \n\n \n \n \n {error.toString()}\n \n\n \n {eventId}\n \n \n \n \n Copy\n \n \n \n \n \n \n \n \n );\n}\n\nexport interface ErrorBoundaryProps {\n children: React.ReactNode;\n}\n\nexport default function ErrorBoundary({ children }: ErrorBoundaryProps) {\n return (\n // @ts-ignore\n }>\n {children}\n \n );\n}\n","import { useEffect, useState } from \"react\";\nimport { Box, Typography, useTheme } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { t } from \"@lingui/macro\";\nimport { Theme } from \"@mui/material/styles\";\nimport { useErrorTip } from \"hooks/useTips\";\nimport { Connector as ConnectorType } from \"constants/wallet\";\nimport { WalletConnector } from \"utils/connector\";\nimport { useWalletConnectorManager } from \"store/auth/hooks\";\n\nconst useStyles = makeStyles(() => {\n return {\n loadingWrapper: {\n width: \"40px\",\n height: \"40px\",\n overflow: \"hidden\",\n \"&.loading\": {\n animation: `$loading 1000ms`,\n animationIterationCount: \"infinite\",\n },\n },\n \"@keyframes loading\": {\n \"0%\": {\n transform: \"rotate(0deg)\",\n },\n \"100%\": {\n transform: \"rotate(360deg)\",\n },\n },\n };\n});\n\nexport interface ConnectorProps {\n label: string;\n value: ConnectorType;\n logo: string;\n}\n\nexport function ConnectorComponent({ label, value, logo }: ConnectorProps) {\n const [, walletConnectorManager] = useWalletConnectorManager();\n\n const theme = useTheme() as Theme;\n const classes = useStyles();\n const [openErrorTip] = useErrorTip();\n\n const [loading, setLoading] = useState(false);\n const [selfConnector, setSelfConnector] = useState(null);\n\n useEffect(() => {\n async function call() {\n const selfConnector = new WalletConnector();\n await selfConnector.init(value);\n setSelfConnector(selfConnector);\n }\n\n call();\n }, []);\n\n const handleConnect = async () => {\n try {\n if (loading || !value || !selfConnector) return;\n\n if ((!window.ic || !window.ic?.infinityWallet) && value === ConnectorType.INFINITY) {\n openErrorTip(t`Please install the infinity wallet extension!`);\n return;\n }\n\n if ((!window.ic || !window.ic?.plug) && value === ConnectorType.PLUG) {\n openErrorTip(t`Please install the plug wallet extension!`);\n return;\n }\n\n setLoading(true);\n\n const connectSuccessful = await selfConnector.connect();\n\n if (!connectSuccessful) {\n openErrorTip(t`An unknown error occurred. Please try connect again.`);\n }\n\n walletConnectorManager(false);\n setLoading(false);\n } catch (error: any) {\n console.error(error);\n setLoading(false);\n\n openErrorTip(`Failed to connect to ${label}: ${error}`);\n }\n };\n\n return (\n \n \n {label}\n \n\n \n \"\"\n \n \n );\n}\n","import { makeStyles } from \"@mui/styles\";\nimport { Box, Grid, Typography } from \"@mui/material\";\nimport Modal from \"components/modal\";\nimport { Trans, t } from \"@lingui/macro\";\nimport { Theme } from \"@mui/material/styles\";\nimport { TextButton } from \"components/index\";\nimport { Connector } from \"constants/wallet\";\nimport { useWalletConnectorManager } from \"store/auth/hooks\";\n\nimport { ConnectorComponent } from \"./connector\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n wrapper: {\n position: \"relative\",\n borderRadius: \"12px\",\n maxWidth: \"100%\",\n },\n walletBox: {\n display: \"grid\",\n gridTemplateColumns: \"1fr 1fr\",\n gap: \"16px 16px\",\n [theme.breakpoints.down(\"md\")]: {\n gridTemplateColumns: \"1fr \",\n gap: \"16px 0\",\n },\n },\n walletWrapper: {\n cursor: \"pointer\",\n padding: \"12px 16px\",\n background: \"rgba(255, 255, 255, 0.08)\",\n borderRadius: \"8px\",\n [theme.breakpoints.down(\"md\")]: {\n padding: \"8px 14px\",\n },\n },\n walletComingSoon: {\n height: \"80px\",\n background: \"rgba(17, 25, 54, 0.4)\",\n border: \"1px solid #29314F\",\n borderRadius: \"8px\",\n [theme.breakpoints.down(\"md\")]: {\n height: \"64px\",\n },\n },\n };\n});\n\ntype Wallet = {\n label: string;\n value: Connector;\n logo: any;\n tips?: string;\n};\n\nexport default function WalletConnector() {\n const [open, walletConnectorManager] = useWalletConnectorManager();\n\n const classes = useStyles();\n\n const Wallets: Wallet[] = [\n // {\n // label: \"Internet Identity\",\n // value: Connector.IC,\n // logo: \"/images/connect/InternetIdentity.svg\",\n // },\n // { label: \"Plug\", value: Connector.PLUG, logo: \"/images/connect/Plug.svg\" },\n {\n label: \"Stoic Wallet\",\n value: Connector.STOIC,\n logo: \"/images/connect/stoic.svg\",\n },\n // {\n // label: \"ICPSwap Wallet\",\n // value: Connector.ICPSwap,\n // logo: \"/images/connect/icpswap.svg\",\n // },\n // { label: \"NFID\", value: Connector.NFID, logo: \"/images/connect/NFID.svg\" },\n // {\n // label: \"Bitfinity Wallet\",\n // value: Connector.INFINITY,\n // logo: \"/images/connect/Infinity.svg\",\n // },\n // {\n // label: \"AstroX ME\",\n // value: Connector.ME,\n // logo: \"/images/connect/AstroX.svg\",\n // },\n // {\n // label: \"MetaMask\",\n // value: Connector.Metamask,\n // logo: \"/images/connect/metamask.svg\",\n // },\n ];\n\n return (\n walletConnectorManager(false)} title={t`Connect a wallet`}>\n \n \n \n \n \n By connecting a wallet, you agree to ICPSwap’s{\" \"}\n \n Terms of Service\n {\" \"}\n and acknowledge that you have read and understand the{\" \"}\n \n ICPSwap Disclaimer\n \n .\n \n \n \n \n \n {Wallets.map((wallet) => (\n \n ))}\n \n \n \n \n \n );\n}\n","import { makeStyles } from \"@mui/styles\";\nimport LinearProgress from \"@mui/material/LinearProgress\";\nimport { Theme } from \"@mui/material/styles\";\n\nconst useStyles = makeStyles((theme: Theme) => ({\n root: {\n position: \"fixed\",\n top: 0,\n left: 0,\n zIndex: 1301,\n width: \"100%\",\n \"& > * + *\": {\n marginTop: theme.spacing(2),\n },\n },\n}));\n\nexport default function LinearLoader() {\n const classes = useStyles();\n\n return (\n
\n \n
\n );\n}\n","import { getPaginationAllData, getClaimEvents } from \"@icpswap/hooks\";\n\nexport async function getAllClaimEvents() {\n const call = async (offset: number, limit: number) => {\n return await getClaimEvents(offset, limit);\n };\n\n return getPaginationAllData(call, 1000);\n}\n","import { useEffect, useState, useMemo } from \"react\";\nimport { XTC, TOKEN_STANDARD, CAT, MOD, BoomDAO, ICX, NUA, SONIC } from \"constants/tokens\";\nimport { ckSepoliaUSDC, ckSepoliaETH, ICP, WRAPPED_ICP } from \"@icpswap/tokens\";\nimport { network, NETWORK } from \"constants/server\";\nimport { useUpdateTokenStandard, useTokenStandards } from \"store/token/cache/hooks\";\nimport { useGlobalTokenList } from \"store/global/hooks\";\nimport { usePoolCanisterIdManager } from \"store/swap/hooks\";\nimport { getSwapPools } from \"@icpswap/hooks\";\nimport { registerTokens } from \"@icpswap/token-adapter\";\nimport { getAllTokenPools } from \"hooks/staking-token/index\";\nimport { getAllClaimEvents } from \"hooks/token-claim\";\nimport { updateCanisters } from \"store/allCanisters\";\nimport type { SwapPoolData } from \"@icpswap/types\";\n\nexport const Tokens = [XTC, CAT, MOD, BoomDAO, ICX, NUA, SONIC, ckSepoliaUSDC, ckSepoliaETH];\n\nexport interface UseInitialTokenStandardArgs {\n fetchGlobalTokensLoading: boolean;\n}\n\nexport function useInitialTokenStandard({ fetchGlobalTokensLoading }: UseInitialTokenStandardArgs) {\n const [tokensLoading, setTokensLoading] = useState(true);\n const [updated, setUpdated] = useState(false);\n\n const [AllPools, setAllPools] = useState(undefined);\n\n const updateTokenStandard = useUpdateTokenStandard();\n\n const globalTokenList = useGlobalTokenList();\n\n const [, updatePoolCanisterId] = usePoolCanisterIdManager();\n\n useEffect(() => {\n if (network === NETWORK.IC) {\n Promise.all([\n getSwapPools(),\n getAllTokenPools().catch(() => undefined),\n getAllClaimEvents().catch(() => undefined),\n ]).then(([allSwapPools, allTokenPools, allClaimEvents]) => {\n const allTokenStandards: { canisterId: string; standard: TOKEN_STANDARD }[] = [];\n\n allTokenPools?.forEach((pool) => {\n allTokenStandards.push({\n canisterId: pool.stakingToken.address,\n standard: pool.stakingToken.standard as TOKEN_STANDARD,\n });\n\n allTokenStandards.push({\n canisterId: pool.rewardToken.address,\n standard: pool.rewardToken.standard as TOKEN_STANDARD,\n });\n });\n\n allClaimEvents?.forEach((event) => {\n allTokenStandards.push({\n canisterId: event.tokenCid,\n standard: event.tokenStandard as TOKEN_STANDARD,\n });\n });\n\n allSwapPools?.forEach((pool) => {\n allTokenStandards.push({\n canisterId: pool.token0.address,\n standard: pool.token0.standard as TOKEN_STANDARD,\n });\n\n allTokenStandards.push({\n canisterId: pool.token1.address,\n standard: pool.token1.standard as TOKEN_STANDARD,\n });\n\n setAllPools(allSwapPools);\n\n updatePoolCanisterId({ key: pool.key, id: pool.canisterId.toString() });\n });\n\n registerTokens(allTokenStandards);\n updateTokenStandard(allTokenStandards);\n\n updateCanisters(\n [\n ...(allSwapPools?.map((ele) => [ele.canisterId.toString(), ele.token0.address, ele.token1.address]) ?? []),\n ...(allTokenPools?.map((ele) => [\n ele.canisterId.toString(),\n ele.rewardToken.address,\n ele.stakingToken.address,\n ]) ?? []),\n ].reduce((prev, curr) => {\n return prev.concat(curr);\n }, [] as string[]),\n );\n\n setUpdated(true);\n });\n } else {\n setUpdated(true);\n }\n }, []);\n\n useEffect(() => {\n if (globalTokenList && globalTokenList.length > 0) {\n const allTokenStandards = globalTokenList.map((token) => {\n return {\n canisterId: token.canisterId,\n standard: token.standard as TOKEN_STANDARD,\n };\n });\n\n updateTokenStandard(allTokenStandards);\n\n setTokensLoading(false);\n\n updateCanisters(globalTokenList.map((ele) => ele.canisterId));\n } else if (!fetchGlobalTokensLoading) {\n setTokensLoading(false);\n }\n }, [globalTokenList, fetchGlobalTokensLoading]);\n\n useEffect(() => {\n if (network === NETWORK.IC) {\n Tokens.forEach((token) => {\n updateTokenStandard([\n {\n canisterId: token.address,\n standard: token.standard as TOKEN_STANDARD,\n },\n ]);\n });\n\n updateCanisters(Tokens.map((ele) => ele.address));\n }\n\n registerTokens([\n { canisterId: WRAPPED_ICP.address, standard: WRAPPED_ICP.standard as TOKEN_STANDARD },\n { canisterId: ICP.address, standard: ICP.standard as TOKEN_STANDARD },\n ]);\n }, []);\n\n // All token's standards, includes the local cached tokens\n const tokenStandards = useTokenStandards();\n useEffect(() => {\n if (tokenStandards) {\n const allStandards = Object.keys(tokenStandards).map((key) => ({\n canisterId: key,\n standard: tokenStandards[key],\n }));\n\n registerTokens(allStandards);\n }\n }, [tokenStandards]);\n\n return useMemo(() => {\n return {\n loading: fetchGlobalTokensLoading || tokensLoading || !updated,\n AllPools,\n };\n }, [tokensLoading, fetchGlobalTokensLoading, updated, AllPools]);\n}\n","import { CircularProgress } from \"@mui/material\";\n\nexport default function GreenCircleLoading() {\n return ;\n}\n","export function Arrow() {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport function SuccessIcon() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport function ErrorIcon() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { useState, useEffect } from \"react\";\nimport { Box, Typography, Grid } from \"@mui/material\";\nimport { useTheme } from \"@mui/styles\";\nimport { Modal } from \"components/index\";\nimport { Theme } from \"@mui/material/styles\";\nimport GreenCircleLoading from \"components/Loading/GreenCircle\";\nimport { Trans } from \"@lingui/macro\";\nimport { StepContents, StepDetailsProps } from \"types/step\";\n\nimport { Arrow, SuccessIcon, ErrorIcon } from \"./icons\";\n\ninterface ActionIconProps {\n activeStep: number;\n ele: StepContents;\n errorStep: number | undefined;\n showErrorHint: boolean;\n}\n\nfunction ActionIcon({ ele, activeStep, showErrorHint }: ActionIconProps) {\n const theme = useTheme() as Theme;\n\n return (\n \n \n {showErrorHint ? (\n \n \n \n ) : activeStep < ele.step ? (\n \n ) : activeStep === ele.step ? (\n \n ) : ele.step < activeStep ? (\n \n \n \n ) : null}\n \n \n );\n}\n\nexport default function _StepDetails({\n title,\n onClose,\n open,\n content,\n activeStep,\n errorStep,\n description,\n}: StepDetailsProps) {\n const [openedSteps, setOpenedSteps] = useState([]);\n\n const theme = useTheme() as Theme;\n\n const isStepOpened = (step: number) => {\n return !!openedSteps.includes(step) || step === activeStep;\n };\n\n const handleStepClick = (step: number) => {\n const index = openedSteps.indexOf(step);\n\n if (index === -1) {\n setOpenedSteps([...openedSteps, step]);\n } else {\n const newOpenedSteps = [...openedSteps];\n newOpenedSteps.splice(index, 1);\n setOpenedSteps([...newOpenedSteps]);\n }\n };\n\n useEffect(() => {\n if (activeStep === content.length) {\n if (onClose) onClose();\n }\n }, [content, activeStep]);\n\n const showErrorHint = (ele: StepContents) => {\n return errorStep === ele.step || !!ele.skipError;\n };\n\n return (\n \n {description ? {description} : null}\n\n \n\n \n {content.map((ele, index) => {\n return (\n \n \n \n {\n if (ele.children) handleStepClick(ele.step);\n }}\n >\n \n {ele.step + 1}. {ele.title}\n \n\n {ele.children ? (\n \n \n \n ) : null}\n \n\n {isStepOpened(ele.step) && !!ele.children ? (\n \n \n {ele.children.map((ele1, index) => (\n \n {ele1.label}\n {ele1.value}\n \n ))}\n {ele.skipError ? (\n \n \n Error\n \n \n {ele.skipError}\n \n \n ) : null}\n {!!ele.errorMessage && errorStep === ele.step ? (\n \n \n Error\n \n \n {ele.errorMessage}\n \n \n ) : null}\n \n\n {errorStep === ele.step && ele.errorActions && ele.errorActions.length > 0 ? (\n \n {ele.errorActions.map((action, index) => (\n \n \n {action}\n \n \n ))}\n \n ) : null}\n \n ) : null}\n \n \n );\n })}\n \n \n );\n}\n","import StepDetails from \"components/Steps/Details\";\nimport { useOpenedSteps, useStepDetails } from \"store/steps/hooks\";\n\nfunction StepItem({ step }: { step: string }) {\n const { activeStep, errorStep, content, onClose, title, description } = useStepDetails(step);\n\n return (\n \n );\n}\n\nexport default function GlobalSteps() {\n const openedSteps = useOpenedSteps();\n\n return (\n <>\n {openedSteps.map((step) => (\n \n ))}\n \n );\n}\n","import { useErrorTip } from \"hooks/useTips\";\nimport { actor, ActorError } from \"@icpswap/actor\";\nimport { useEffect } from \"react\";\nimport { t } from \"@lingui/macro\";\n\nconst INTERVAL = 30; // 30 seconds\n\nconst timeOfMessages: { [message: string]: number } = {};\n\nfunction isNewMessage(message: string) {\n const last_time = timeOfMessages[message];\n\n const now = new Date().getTime();\n\n if (!last_time) {\n timeOfMessages[message] = now;\n return true;\n }\n\n if (now - last_time > INTERVAL * 1000) {\n timeOfMessages[message] = now;\n return true;\n }\n\n return false;\n}\n\nexport function isWithoutCyclesError(message: string) {\n return (\n message.includes(\"Please top up the canister with cycles and try again\") ||\n message.includes(\"is out of cycles\") ||\n message.includes(\"could not perform remote call\")\n );\n}\n\nexport function isOutOfTimeRange(message: string) {\n return message.includes(\"Specified ingress_expiry not within expected range: Minimum allowed expiry\");\n}\n\nexport function useHandleActorError() {\n const [open] = useErrorTip();\n\n useEffect(() => {\n actor.onError((error: ActorError) => {\n if (isOutOfTimeRange(error.message)) {\n if (isNewMessage(\"Specified ingress_expiry not within expected range\")) {\n open(t`Specified ingress_expiry not within expected range. Please reset your time on your device.`);\n }\n }\n });\n }, []);\n}\n","import { actor, BeforeSubmitArgs, Connector } from \"@icpswap/actor\";\nimport { useEffect } from \"react\";\nimport store from \"store/index\";\nimport { t } from \"@lingui/macro\";\n\nasync function isCurrentAccount() {\n const {principal} = store.getState().auth;\n\n if (window.ic && window.ic.plug && !!principal) {\n const plugPrincipal = await window.ic.plug.getPrincipal();\n return plugPrincipal.toString() === principal;\n }\n\n return false;\n}\n\nexport function useActorSubmit() {\n useEffect(() => {\n actor.onSubmit(async (args: BeforeSubmitArgs) => {\n if (!!args.identity && store.getState().auth.walletType === Connector.PLUG) {\n if (!(await isCurrentAccount())) {\n return {\n success: false,\n message: t`There was an error when tried to interact with Plug. Please reconnect the plug.`,\n };\n }\n }\n\n return { success: true, message: \"\" };\n });\n }, []);\n}\n","import { useHandleActorError } from \"hooks/useActorError\";\nimport { useActorSubmit } from \"hooks/useActorSubmit\";\nimport React from \"react\";\n\nexport default function Actor({ children }: { children: React.ReactNode }) {\n useHandleActorError();\n useActorSubmit();\n\n return <>{children};\n}\n","/* eslint-disable lines-between-class-members */\n/* eslint-disable no-param-reassign */\n\nfunction wait(ms: number): Promise {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction waitRandom(min: number, max: number): Promise {\n return wait(min + Math.round(Math.random() * Math.max(0, max - min)));\n}\n\n/** Thrown if the function is canceled before resolving. */\nexport class CanceledError extends Error {\n name = \"CanceledError\";\n message = \"Retryable was canceled\";\n}\n\n/** May be thrown to force a retry. */\nexport class RetryableError extends Error {\n name = \"RetryableError\";\n}\n\nexport interface RetryOptions {\n n: number;\n minWait: number;\n maxWait: number;\n}\n\n/**\n * Retries a function until its returned promise successfully resolves, up to n times.\n * @param fn function to retry\n * @param n how many times to retry\n * @param minWait min wait between retries in ms\n * @param maxWait max wait between retries in ms\n */\nexport function retry(\n fn: () => Promise,\n { n, minWait, maxWait }: RetryOptions,\n): { promise: Promise; cancel: () => void } {\n let completed = false;\n let rejectCancelled: (error: Error) => void;\n // eslint-disable-next-line no-async-promise-executor\n const promise = new Promise(async (resolve, reject) => {\n rejectCancelled = reject;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let result: T;\n try {\n result = await fn();\n if (!completed) {\n resolve(result);\n completed = true;\n }\n break;\n } catch (error) {\n if (completed) {\n break;\n }\n if (n <= 0 || !(error instanceof RetryableError)) {\n reject(error);\n completed = true;\n break;\n }\n n--;\n }\n await waitRandom(minWait, maxWait);\n }\n });\n return {\n promise,\n cancel: () => {\n if (completed) return;\n completed = true;\n rejectCancelled(new CanceledError());\n },\n };\n}\n","import { TransactionReceipt } from \"@ethersproject/abstract-provider\";\nimport { ChainId } from \"@icpswap/constants\";\nimport { useWeb3React } from \"@web3-react/core\";\nimport { useBlockNumber, useCurrentBlockTimestamp } from \"hooks/web3/index\";\n// import { useFastForwardBlockNumber } from \"lib/hooks/useBlockNumber\";\nimport ms from \"ms\";\nimport { useCallback, useEffect } from \"react\";\nimport { useTransactionRemover } from \"store/transactions/hooks\";\nimport { TransactionDetails } from \"store/transactions/types\";\n\nimport { CanceledError, retry, RetryableError, RetryOptions } from \"./retry\";\n\ninterface Transaction {\n addedTime: number;\n receipt?: unknown;\n lastCheckedBlockNumber?: number;\n}\n\nexport function shouldCheck(lastBlockNumber: number, tx: Transaction): boolean {\n if (tx.receipt) return false;\n if (!tx.lastCheckedBlockNumber) return true;\n const blocksSinceCheck = lastBlockNumber - tx.lastCheckedBlockNumber;\n if (blocksSinceCheck < 1) return false;\n const minutesPending = (new Date().getTime() - tx.addedTime) / ms(`1m`);\n\n if (minutesPending > 60) {\n // every 10 blocks if pending longer than an hour\n return blocksSinceCheck > 9;\n }\n\n if (minutesPending > 5) {\n // every 3 blocks if pending longer than 5 minutes\n return blocksSinceCheck > 2;\n }\n\n return true;\n}\n\nconst RETRY_OPTIONS_BY_CHAIN_ID: { [chainId: number]: RetryOptions } = {\n [ChainId.ARBITRUM_ONE]: { n: 10, minWait: 250, maxWait: 1000 },\n [ChainId.ARBITRUM_GOERLI]: { n: 10, minWait: 250, maxWait: 1000 },\n [ChainId.OPTIMISM]: { n: 10, minWait: 250, maxWait: 1000 },\n [ChainId.OPTIMISM_GOERLI]: { n: 10, minWait: 250, maxWait: 1000 },\n [ChainId.BASE]: { n: 10, minWait: 250, maxWait: 1000 },\n};\nconst DEFAULT_RETRY_OPTIONS: RetryOptions = { n: 1, minWait: 0, maxWait: 0 };\n\ninterface UpdaterProps {\n pendingTransactions: { [hash: string]: TransactionDetails };\n onCheck: (tx: { chainId: number; hash: string; blockNumber: number }) => void;\n onReceipt: (tx: { chainId: number; hash: string; receipt: TransactionReceipt }) => void;\n}\n\nexport default function Updater({ pendingTransactions, onCheck, onReceipt }: UpdaterProps): null {\n const { account, chainId, provider } = useWeb3React();\n\n const lastBlockNumber = useBlockNumber();\n // const fastForwardBlockNumber = useFastForwardBlockNumber();\n const removeTransaction = useTransactionRemover();\n const blockTimestamp = useCurrentBlockTimestamp();\n\n const getReceipt = useCallback(\n (hash: string) => {\n if (!provider || !chainId) throw new Error(\"No provider or chainId\");\n const retryOptions = RETRY_OPTIONS_BY_CHAIN_ID[chainId] ?? DEFAULT_RETRY_OPTIONS;\n return retry(\n () =>\n provider.getTransactionReceipt(hash).then(async (receipt) => {\n if (receipt === null) {\n if (account) {\n const tx = pendingTransactions[hash];\n // Remove transactions past their deadline or - if there is no deadline - older than 6 hours.\n if (tx.deadline) {\n // Deadlines are expressed as seconds since epoch, as they are used on-chain.\n if (blockTimestamp && tx.deadline < blockTimestamp.toNumber()) {\n removeTransaction(hash);\n }\n } else if (tx.addedTime + ms(`6h`) < Date.now()) {\n removeTransaction(hash);\n }\n }\n throw new RetryableError();\n }\n return receipt;\n }),\n retryOptions,\n );\n },\n [account, blockTimestamp, chainId, pendingTransactions, provider, removeTransaction],\n );\n\n useEffect(() => {\n if (!chainId || !provider || !lastBlockNumber) return;\n\n const cancels = Object.keys(pendingTransactions)\n .filter((hash) => shouldCheck(lastBlockNumber, pendingTransactions[hash]))\n .map((hash) => {\n const { promise, cancel } = getReceipt(hash);\n promise\n .then((receipt) => {\n // fastForwardBlockNumber(receipt.blockNumber);\n onReceipt({ chainId, hash, receipt });\n })\n .catch((error) => {\n if (error instanceof CanceledError) return;\n onCheck({ chainId, hash, blockNumber: lastBlockNumber });\n });\n return cancel;\n });\n\n return () => {\n cancels.forEach((cancel) => cancel());\n };\n }, [chainId, provider, lastBlockNumber, getReceipt, onReceipt, onCheck, pendingTransactions]);\n\n return null;\n}\n","/* eslint-disable no-param-reassign */\nimport { TransactionReceipt } from \"@ethersproject/abstract-provider\";\nimport { useWeb3React } from \"@web3-react/core\";\nimport LibUpdater from \"hooks/transactions/updater\";\nimport { useCallback, useMemo } from \"react\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\n\nimport { isPendingTx } from \"./hooks\";\nimport { checkedTransaction, finalizeTransaction } from \"./reducer\";\nimport { SerializableTransactionReceipt, TransactionDetails } from \"./types\";\n\nexport function toSerializableReceipt(receipt: TransactionReceipt): SerializableTransactionReceipt {\n return {\n blockHash: receipt.blockHash,\n blockNumber: receipt.blockNumber,\n contractAddress: receipt.contractAddress,\n from: receipt.from,\n status: receipt.status,\n to: receipt.to,\n transactionHash: receipt.transactionHash,\n transactionIndex: receipt.transactionIndex,\n };\n}\n\nexport default function Updater() {\n // const analyticsContext = useTrace();\n const { chainId } = useWeb3React();\n\n // const addPopup = useAddPopup();\n\n // speed up popup dismissal time if on L2\n // const isL2 = Boolean(chainId && L2_CHAIN_IDS.includes(chainId));\n const transactions = useAppSelector((state) => state.transactions);\n const pendingTransactions = useMemo(() => {\n if (!chainId || !transactions[chainId]) return {};\n return Object.values(transactions[chainId]).reduce(\n (acc, tx) => {\n if (isPendingTx(tx)) acc[tx.hash] = tx;\n return acc;\n },\n {} as Record,\n );\n }, [chainId, transactions]);\n\n const dispatch = useAppDispatch();\n const onCheck = useCallback(\n ({ chainId, hash, blockNumber }: { chainId: number; hash: string; blockNumber: number }) =>\n dispatch(checkedTransaction({ chainId, hash, blockNumber })),\n [dispatch],\n );\n const onReceipt = useCallback(\n ({ chainId, hash, receipt }: { chainId: number; hash: string; receipt: TransactionReceipt }) => {\n dispatch(\n finalizeTransaction({\n chainId,\n hash,\n receipt: toSerializableReceipt(receipt),\n }),\n );\n\n // if (pendingTransactions[hash] && pendingTransactions[hash].info?.type === TransactionType.SWAP) {\n // logSwapSuccess(hash, chainId, analyticsContext);\n // }\n\n // addPopup(\n // {\n // type: PopupType.Transaction,\n // hash,\n // },\n // hash,\n // isL2 ? L2_TXN_DISMISS_MS : DEFAULT_TXN_DISMISS_MS,\n // );\n },\n // [addPopup, analyticsContext, dispatch, isL2, pendingTransactions],\n [dispatch, pendingTransactions],\n );\n\n return ;\n}\n","// @ts-nocheck\nimport { http, createConfig } from \"wagmi\";\nimport { mainnet, sepolia } from \"wagmi/chains\";\n\nexport const wagmiConfig = createConfig({\n chains: [mainnet, sepolia],\n transports: {\n [mainnet.id]: http(),\n [sepolia.id]: http(),\n },\n});\n","import React, { useEffect, useState } from \"react\";\n\nexport interface DisableIframeProps {\n children: React.ReactNode;\n}\n\nexport function DisableIframe({ children }: DisableIframeProps) {\n const [sameOrigin, setSameOrigin] = useState(true);\n\n useEffect(() => {\n if (top?.location !== self.location) {\n setSameOrigin(false);\n }\n }, [setSameOrigin]);\n\n return sameOrigin ? <>{children} :
Not support iframe now
;\n}\n","import { Connector } from \"@web3-react/types\";\nimport { ConnectionType, injectedConnection } from \"./index\";\n\nconst CONNECTIONS = [injectedConnection];\n\nexport function getConnection(c: Connector | ConnectionType) {\n if (c instanceof Connector) {\n const connection = CONNECTIONS.find((connection) => connection.connector === c);\n if (!connection) {\n throw Error(\"unsupported connector\");\n }\n return connection;\n } \n return injectedConnection;\n \n}\n","import { Web3ReactHooks } from \"@web3-react/core\";\nimport { Connector } from \"@web3-react/types\";\nimport { ConnectionType } from \"utils/web3/connection\";\nimport { getConnection } from \"utils/web3/connection/utils\";\nimport { useMemo } from \"react\";\n\nexport const BACKFILLABLE_WALLETS = [\n ConnectionType.COINBASE_WALLET,\n ConnectionType.WALLET_CONNECT,\n ConnectionType.INJECTED,\n];\n\nconst SELECTABLE_WALLETS = [...BACKFILLABLE_WALLETS];\n\nexport default function useConnectors() {\n return useMemo(() => {\n const orderedConnectionTypes: ConnectionType[] = [];\n\n orderedConnectionTypes.push(...SELECTABLE_WALLETS);\n\n // Add network connection last as it should be the fallback.\n orderedConnectionTypes.push(ConnectionType.NETWORK);\n\n // Convert to web3-react's representation of connectors.\n const web3Connectors: [Connector, Web3ReactHooks][] = orderedConnectionTypes\n .map(getConnection)\n .map(({ connector, hooks }) => [connector, hooks]);\n return web3Connectors;\n }, []);\n}\n","import { Web3ReactProvider } from \"@web3-react/core\";\nimport useConnectors from \"hooks/web3/useConnectors\";\nimport useEagerlyConnect from \"hooks/web3/useEagerlyConnect\";\nimport { ReactNode } from \"react\";\n\nexport default function Web3Provider({ children }: { children: ReactNode }) {\n useEagerlyConnect();\n\n const connectors = useConnectors();\n\n return {children};\n}\n","import { metamask } from \"utils/web3/connection\";\nimport { useEffect } from \"react\";\n\nexport default function useEagerlyConnect() {\n useEffect(() => {\n metamask.connectEagerly()?.catch(() => {\n console.error(\"Failed to connect eagerly to metamask\");\n });\n // The dependency list is empty so this is only run once on mount\n }, []);\n}\n","import React from \"react\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport { closeSnackbar } from \"store/snackbar/actions\";\nimport { Alert, Fade, IconButton, SnackbarCloseReason } from \"@mui/material\";\nimport MuiSnackbar from \"@mui/material/Snackbar\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\nexport default function Snackbar() {\n const dispatch = useAppDispatch();\n const [open, setOpen] = React.useState(false);\n const snackbarInitial = useAppSelector((state) => state.snackbar);\n\n const handleClose = (event: any, reason: SnackbarCloseReason) => {\n if (reason === \"clickaway\") return;\n dispatch(closeSnackbar());\n };\n\n const handleClickClose = () => {\n dispatch(closeSnackbar());\n };\n\n React.useEffect(() => {\n setOpen(snackbarInitial.open);\n }, [snackbarInitial.action, snackbarInitial.open]);\n\n return (\n <>\n {/* default snackbar */}\n {snackbarInitial.variant === \"default\" && (\n \n )}\n\n {/* alert snackbar */}\n {snackbarInitial.variant === \"alert\" && (\n \n \n \n \n ) : null\n }\n >\n {snackbarInitial.message}\n \n \n )}\n \n );\n}\n","import { useEffect, ReactNode } from \"react\";\nimport { withRouter, RouteComponentProps } from \"react-router-dom\";\n\nexport interface NavigationScrollProps extends RouteComponentProps {\n children: ReactNode;\n}\n\nexport default withRouter(({ children, location: { pathname } }: NavigationScrollProps) => {\n useEffect(() => {\n window.scrollTo({\n top: 0,\n left: 0,\n behavior: \"smooth\",\n });\n }, [pathname]);\n\n return children || (null as any);\n});\n","export const lightColors = {};\n\nexport const darkColors = {};\n\nexport default {\n paper: \"#ffffff\",\n\n // primary\n primaryLight: \"#e3f2fd\",\n primary200: \"#ffffff\",\n primaryMain: \"#8672FF\",\n primaryDark: \"#8672FF\",\n primary800: \"#1565c0\",\n\n // secondary\n secondaryLight: \"#ffffff\",\n secondary200: \"#b39ddb\",\n secondaryMain: \"#5669dc\",\n secondaryDark: \"#5669dc\",\n secondary800: \"#4527a0\",\n\n // success\n successLight: \"#b9f6ca\",\n success200: \"#69f0ae\",\n successMain: \"#00e676\",\n successDark: \"#54c081\",\n\n // error\n errorLight: \"#ef9a9a\",\n errorMain: \"#f44336\",\n\n // orange\n orangeLight: \"#fbe9e7\",\n orangeMain: \"#ffab91\",\n orangeDark: \"#d84315\",\n\n // warning\n warningLight: \"#F2994A\",\n warningMain: \"#ffe57f\",\n warningDark: \"#ffc107\",\n\n danger: \"#D3625B\",\n\n warning: \"#B79C4A\",\n\n // grey\n grey50: \"#fafafa\",\n grey100: \"#f5f5f5\",\n grey200: \"#eeeeee\",\n grey300: \"#e0e0e0\",\n grey500: \"#9e9e9e\",\n grey600: \"#757575\",\n grey700: \"#616161\",\n grey900: \"#212121\",\n\n // -----------------------|| DARK THEME VARIANTS ||-----------------------//\n\n // paper & background\n darkPaper: \"#1a223f\",\n darkBackground: \"#1a223f\",\n\n // dark 800 & 900\n darkLevel1: \"#111936\",\n darkLevel2: \"#1a223f\",\n darkLevel3: \"#212946\",\n darkLevel4: \"#29314f\",\n darkLevel5: \"#273051\",\n\n // text variants\n darkTextPrimary: \"#ffffff\",\n darkTextSecondary: \"#8492c4\",\n darkTextTertiary: \"#4F5A84\",\n darkTextFourth: \"#29314F\",\n darkTextFifth: \"#212946\",\n\n disable: \"#4F5A84\",\n\n lightPrimaryMain: \"#8672FF\",\n\n lightTextTitle: \"#212121\",\n lightTextPrimary: \"#212121\",\n lightTextSecondary: \"#757575\",\n lightTextTertiary: \"#9E9E9E\",\n lightTextFourth: \"#F5F5F5\",\n lightTextFifth: \"#FAFAFA\",\n\n lightLevel2: \"#EFEFFF\",\n lightLevel4: \"#FAFAFA\",\n lightLevel5: \"#FAFAFA\",\n\n lightGray200: \"#f5f5f5\",\n lightGray50: \"#fafafa\",\n\n lightGray200BorderColor: \"#EFEFFF\",\n\n // primary dark\n darkPrimaryLight: \"#e3f2fd\",\n darkPrimaryMain: \"#8672FF\",\n darkPrimaryDark: \"#5669dc\",\n darkPrimary200: \"#000001\",\n darkPrimary800: \"#1565c0\",\n darkPrimary400: \"#4F5A84\",\n\n // secondary dark\n darkSecondaryLight: \"#212946\",\n darkSecondaryMain: \"#5669dc\",\n darkSecondaryDark: \"#5669dc\",\n darkSecondary200: \"#b39ddb\",\n darkSecondary800: \"#6200ea\",\n\n defaultGradientStart: \"#5569db\",\n defaultGradientEnd: \"#8572ff\",\n border0: \"#4F5A84\",\n border1: \"#353C5D\",\n\n apr: \"#54C081\",\n\n \"text.success\": \"#54C081\",\n};\n","import { isDarkTheme } from \"utils/index\";\nimport { createTheme, keyframes } from \"@mui/material\";\n\nimport colors from \"./colors\";\n\nconst MuiTheme = createTheme({});\n\nexport function componentStyleOverrides(theme: { [key: string]: any }) {\n const isDark = isDarkTheme(theme);\n\n const globalButtonBackground = isDark ? theme.defaultGradient : theme.colors.lightPrimaryMain;\n\n const menuHoverBackground = isDark ? theme.menuSelectedBack : theme.colors.lightLevel2;\n\n const CircularProgressKeyframes0 = keyframes`\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n `;\n\n const CircularProgressKeyframes1 = keyframes`\n 0% {\n stroke-dasharray: 1px,200px;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 100px,200px;\n stroke-dashoffset: -15px;\n }\n 100% {\n stroke-dasharray: 100px,200px;\n stroke-dashoffset: -125px;\n }\n `;\n\n return {\n MuiTypography: {\n styleOverrides: {\n root: {\n lineHeight: 1,\n },\n },\n },\n MuiButton: {\n styleOverrides: {\n root: {\n fontWeight: 500,\n borderRadius: \"8px\",\n textTransform: \"none\",\n \"&.MuiButton-outlinedPrimary\": {\n color: isDark ? theme.colors.secondaryMain : theme.colors.lightPrimaryMain,\n borderColor: isDark ? theme.colors.secondaryMain : theme.colors.lightPrimaryMain,\n \"&:hover\": {\n background: \"rgba(86, 105, 220, 0.1)\",\n },\n \"&.secondary\": {\n border: `1px solid ${colors.darkLevel4}`,\n color: \"#ffffff\",\n },\n },\n \"&.MuiButton-contained.Mui-disabled\": {\n ...(isDark\n ? {\n background: \"#4F5A84\",\n }\n : { color: \"#9E9E9E\", background: \"#E0E0E0\" }),\n },\n \"&.MuiButton-contained\": {\n \"&.secondary\": {\n background: colors.darkLevel4,\n boxShadow: \"none\",\n \"&.Mui-disabled\": {\n color: colors.darkTextTertiary,\n },\n },\n },\n },\n containedPrimary: {\n background: globalButtonBackground,\n \"&.MuiButton-sizeLarge\": {\n padding: \"11px 22px\",\n },\n },\n containedSecondary: {\n background: isDark ? theme.colors.darkLevel4 : \"#EFEFFF\",\n color: isDark ? \"#ffffff\" : theme.colors.primaryMain,\n border: \"1px solid #5569DB\",\n boxShadow: \"none\",\n },\n },\n },\n MuiPaper: {\n defaultProps: {\n elevation: 0,\n },\n styleOverrides: {\n root: {\n backgroundImage: \"none\",\n backgroundColor: isDark ? theme.colors.darkLevel1 : theme.colors.paper,\n\n // Date pick button\n \"&.MuiPaper-elevation.MuiPaper-rounded.MuiPaper-elevation8\": {\n \"& .MuiButtonBase-root.MuiIconButton-root.MuiIconButton-sizeMedium\": {\n \"&:hover\": {\n backgroundColor: theme.colors.primaryMain,\n },\n \"& .MuiTypography-caption\": {\n color: \"#fff\",\n },\n },\n },\n },\n rounded: {\n borderRadius: `${theme.borderRadius}px`,\n },\n },\n },\n MuiCardHeader: {\n styleOverrides: {\n root: {\n color: theme.colors.textDark,\n padding: \"24px\",\n },\n title: {\n fontSize: \"1.125rem\",\n },\n },\n },\n MuiCardContent: {\n styleOverrides: {\n root: {\n padding: \"24px\",\n\n \"&:last-child\": {\n [MuiTheme.breakpoints.down(\"sm\")]: {\n paddingBottom: \"12px\",\n },\n },\n [MuiTheme.breakpoints.down(\"sm\")]: {\n padding: \"12px\",\n },\n },\n },\n },\n MuiCardActions: {\n styleOverrides: {\n root: {\n padding: \"24px\",\n },\n },\n },\n MuiAlert: {\n styleOverrides: {\n root: {\n alignItems: \"center\",\n },\n outlined: {\n border: \"1px dashed\",\n },\n },\n },\n MuiButtonBase: {\n styleOverrides: {\n root: {\n \"&.radius-12\": {\n borderRadius: \"12px\",\n },\n \"&.MuiListItem-root\": {\n color: theme.textSecondary,\n paddingTop: \"10px\",\n paddingBottom: \"10px\",\n backgroundColor: theme.menuBackground,\n \"&.Mui-selected\": {\n color: theme.textPrimary,\n backgroundColor: menuHoverBackground,\n \"&:hover\": {\n backgroundColor: menuHoverBackground,\n },\n \"& .MuiListItemIcon-root\": {\n color: theme.textPrimary,\n },\n },\n \"&:hover\": {\n backgroundColor: menuHoverBackground,\n color: theme.textPrimary,\n \"& .MuiListItemIcon-root\": {\n color: theme.textPrimary,\n },\n },\n },\n\n // sidebar menu\n \"&.MuiListItem-root&.sidebar\": {\n color: theme.textPrimary,\n paddingTop: \"10px\",\n paddingBottom: \"10px\",\n marginBottom: \"5px\",\n paddingLeft: \"0px\",\n \"&:last-child\": {\n marginBottom: 0,\n },\n \"& .MuiSvgIcon-root\": {\n color: \"#8492C4\",\n },\n \"&.Mui-selected, &:hover\": {\n color: theme.menuSelected,\n background: globalButtonBackground,\n \"& .MuiListItemIcon-root\": {\n color: theme.menuSelected,\n },\n \"& .MuiSvgIcon-root\": {\n color: theme.menuSelected,\n },\n },\n },\n \"&.MuiListItem-root&.sub\": {\n color: theme.textPrimary,\n paddingTop: \"7px\",\n paddingBottom: \"7px\",\n paddingLeft: \"0px\",\n background: \"transparent\",\n \"& .MuiSvgIcon-root\": {\n color: \"#8492C4\",\n },\n \"&.Mui-selected, &:hover\": {\n color: theme.menuSelected,\n background: \"transparent\",\n \"& .MuiListItemIcon-root\": {\n color: theme.menuSelected,\n },\n \"& .MuiSvgIcon-root\": {\n color: theme.colors.darkSecondaryMain,\n },\n },\n },\n },\n },\n },\n MuiListItemIcon: {\n styleOverrides: {\n root: {\n color: theme.textPrimary,\n minWidth: \"36px\",\n },\n },\n },\n MuiListItemText: {\n styleOverrides: {\n primary: {\n color: theme.textDark,\n },\n },\n },\n MuiInputBase: {\n styleOverrides: {\n root: {\n \"& .MuiInputBase-input\": {\n fontSize: \"16px\",\n },\n },\n input: {\n color: theme.textDark,\n \"&::placeholder\": {\n color: theme.textSecondary,\n fontSize: \"0.875rem\",\n fontWeight: 400,\n },\n },\n },\n },\n MuiOutlinedInput: {\n styleOverrides: {\n root: {\n background: isDark ? theme.colors.darkBackground : theme.colors.grey50,\n borderRadius: `${theme.borderRadius}px`,\n \"& fieldset\": {\n borderColor: theme.colors.darkTextSecondary,\n },\n \"&:hover $notchedOutline\": {\n borderColor: theme.colors.primaryLight,\n },\n \"&.MuiInputBase-multiline\": {\n padding: 1,\n },\n },\n input: {\n fontWeight: 500,\n background: isDark ? theme.colors.darkBackground : theme.colors.grey50,\n padding: \"15.5px 14px\",\n borderRadius: `${theme.borderRadius}px`,\n \"&.MuiInputBase-inputSizeSmall\": {\n padding: \"10px 14px\",\n \"&.MuiInputBase-inputAdornedStart\": {\n paddingLeft: 0,\n },\n },\n },\n inputAdornedStart: {\n paddingLeft: 4,\n },\n notchedOutline: {\n borderColor: theme.colors.secondary,\n borderRadius: `${theme.borderRadius}px`,\n },\n },\n },\n MuiSlider: {\n styleOverrides: {\n root: {\n \"&.Mui-disabled\": {\n color: isDark ? theme.colors.textPrimary + 50 : theme.colors.grey300,\n },\n },\n mark: {\n backgroundColor: theme.paper,\n width: \"4px\",\n },\n valueLabel: {\n color: theme.colors.primaryMain,\n },\n },\n },\n MuiAutocomplete: {\n styleOverrides: {\n root: {\n \"& .MuiAutocomplete-tag\": {\n background: isDark ? theme.colors.textPrimary + 20 : theme.colors.secondaryLight,\n borderRadius: 4,\n color: theme.textDark,\n \".MuiChip-deleteIcon\": {\n color: isDark ? theme.colors.textPrimary + 80 : theme.colors.secondary200,\n },\n },\n },\n popper: {\n borderRadius: `${theme.borderRadius}px`,\n boxShadow:\n \"0px 8px 10px -5px rgb(0 0 0 / 20%), 0px 16px 24px 2px rgb(0 0 0 / 14%), 0px 6px 30px 5px rgb(0 0 0 / 12%)\",\n },\n },\n },\n MuiDivider: {\n styleOverrides: {\n root: {\n borderColor: theme.divider,\n opacity: isDark ? 0.2 : 1,\n },\n },\n },\n MuiSelect: {\n styleOverrides: {\n select: {\n \"&:focus\": {\n backgroundColor: \"transparent\",\n },\n },\n },\n },\n MuiCheckbox: {\n styleOverrides: {\n select: {\n fontSize: \"28px\",\n },\n root: {\n padding: 0,\n },\n },\n },\n MuiAvatar: {\n styleOverrides: {\n root: {\n color: isDark ? theme.colors.darkLevel1 : theme.colors.primaryDark,\n background: isDark ? theme.textPrimary : theme.colors.primary200,\n },\n },\n },\n MuiChip: {\n styleOverrides: {\n root: {\n \"&.MuiChip-deletable .MuiChip-deleteIcon\": {\n color: \"inherit\",\n },\n },\n },\n },\n MuiTimelineContent: {\n styleOverrides: {\n root: {\n color: theme.textDark,\n fontSize: \"16px\",\n },\n },\n },\n MuiTreeItem: {\n styleOverrides: {\n label: {\n marginTop: 14,\n marginBottom: 14,\n },\n },\n },\n MuiTimelineDot: {\n styleOverrides: {\n root: {\n boxShadow: \"none\",\n },\n },\n },\n MuiInternalDateTimePickerTabs: {\n styleOverrides: {\n tabs: {\n backgroundColor: isDark ? theme.colors.darkPaper : theme.colors.primaryLight,\n \"& .MuiTabs-flexContainer\": {\n borderColor: isDark ? theme.colors.textPrimary + 20 : theme.colors.primary200,\n },\n \"& .MuiTab-root\": {\n color: isDark ? theme.colors.textSecondary : theme.colors.grey900,\n },\n \"& .MuiTabs-indicator\": {\n backgroundColor: theme.colors.primaryDark,\n },\n \"& .Mui-selected\": {\n color: theme.colors.primaryDark,\n },\n },\n },\n },\n MuiTabs: {\n styleOverrides: {\n flexContainer: {\n borderBottom: \"1px solid\",\n borderColor: isDark ? theme.colors.textPrimary + 20 : theme.colors.grey200,\n },\n },\n },\n MuiDialog: {\n styleOverrides: {\n paper: {\n padding: \"12px 0 12px 0\",\n backgroundColor: isDark ? theme.colors.darkLevel3 : theme.colors.primary200,\n },\n },\n },\n MuiTable: {\n styleOverrides: {\n root: {\n \"& td\": {\n whiteSpace: \"nowrap\",\n },\n \"& td:first-of-type, & th:first-of-type\": {\n paddingLeft: \"0px\",\n },\n },\n },\n },\n MuiTableCell: {\n styleOverrides: {\n root: {\n borderColor: isDark ? \"rgba(189, 200, 240, 0.082)\" : theme.colors.grey200,\n \"&.MuiTableCell-head\": {\n fontSize: theme.fontSize.xs,\n color: theme.textTertiary,\n },\n },\n },\n },\n MuiTooltip: {\n styleOverrides: {\n tooltip: {\n color: isDark ? theme.colors.darkLevel1 : theme.paper,\n background: isDark ? theme.colors.grey50 : theme.colors.grey700,\n },\n },\n },\n MuiPagination: {\n styleOverrides: {\n root: {\n // \".Mui-selected\": {\n // backgroundColor: theme.colors.primaryMain,\n // },\n \".MuiPaginationItem-previousNext\": {\n borderRadius: \"50%\",\n },\n \".MuiPaginationItem-root\": {\n \"&.Mui-selected\": {\n backgroundColor: theme.colors.secondaryMain,\n },\n },\n \".MuiButtonBase-root\": {\n minWidth: \"22px\",\n height: \"22px\",\n },\n },\n nav: {\n backgroundColor: theme.colors.primaryMain,\n },\n },\n },\n MuiTableContainer: {\n styleOverrides: {\n root: {\n position: \"relative\",\n \"&.with-loading\": {\n minHeight: \"210px\",\n },\n },\n },\n },\n MuiStepper: {\n styleOverrides: {\n root: {\n \"& .MuiStepLabel-label\": {\n color: isDark ? theme.textSecondary : theme.textPrimary,\n \"&.Mui-active\": {\n color: theme.textPrimary,\n },\n },\n \"& .MuiStepIcon-root\": {\n color: isDark ? theme.colors.darkLevel4 : \"#BDBDBD\",\n \"&.Mui-active\": {\n color: isDark ? theme.colors.darkSecondaryMain : theme.colors.lightPrimaryMain,\n },\n \"&.MuiStepIcon-completed\": {\n color: isDark ? theme.colors.darkSecondaryMain : \"#00C853\",\n },\n },\n \"& .MuiStepConnector-line\": {\n borderColor: isDark ? theme.colors.darkLevel4 : \"#E0E0E0\",\n },\n },\n },\n },\n MuiBreadcrumbs: {\n styleOverrides: {\n root: {\n \"& a\": {\n \"&:hover\": {\n textDecoration: `underline solid ${theme.textSecondary}!important`,\n },\n \"& .MuiTypography-root\": {\n color: theme.textSecondary,\n },\n },\n \"& .MuiTypography-root\": {\n color: theme.textPrimary,\n },\n },\n },\n },\n MuiSwitch: {\n styleOverrides: {\n root: {\n width: \"36px\",\n borderRadius: \"12px\",\n },\n },\n },\n MuiGrid: {\n styleOverrides: {\n root: {\n \"& .lightGray200\": {\n ...(theme.customization.mode !== \"dark\" ? { backgroundColor: theme.colors.lightGray200 } : {}),\n },\n \"& .lightGray50\": {\n ...(theme.customization.mode !== \"dark\" ? { backgroundColor: theme.colors.lightGray50 } : {}),\n },\n },\n },\n },\n MuiPopover: {\n styleOverrides: {\n root: {\n \"&.custom-select\": {\n \"& .MuiPaper-root\": {\n background: theme.colors.darkLevel3,\n border: \"1px solid #49588E\",\n borderRadius: \"8px\",\n \"& .MuiList-root\": {\n padding: 0,\n },\n \"& .MuiMenuItem-root\": {\n background: theme.colors.darkLevel3,\n paddingTop: \"13px\",\n paddingBottom: \"13px\",\n color: theme.textPrimary,\n \"&.disabled\": {\n background: theme.colors.darkLevel4,\n opacity: 0.3,\n cursor: \"not-allowed\",\n \"&:hover\": {\n background: theme.colors.darkLevel4,\n opacity: 0.3,\n },\n \"&.active\": {\n background: theme.colors.darkLevel4,\n opacity: 0.3,\n },\n },\n \"&.active\": {\n background: \"#313D67\",\n },\n \"&:hover\": {\n background: \"#313D67\",\n },\n },\n },\n },\n },\n },\n },\n MuiList: {\n styleOverrides: {\n root: {\n \"&.customize-menu-list\": {\n padding: 0,\n background: theme.colors.darkLevel3,\n border: \"1px solid #49588E\",\n borderRadius: \"8px\",\n width: \"146px\",\n overflow: \"hidden\",\n \"& .MuiMenuItem-root.MuiButtonBase-root\": {\n background: theme.colors.darkLevel3,\n paddingTop: \"10px\",\n paddingBottom: \"10px\",\n margin: \"5px 0\",\n \"&.active\": {\n background: \"#313D67\",\n },\n \"&:hover\": {\n background: \"#313D67\",\n },\n },\n \"&.style1\": {\n background: theme.colors.darkLevel1,\n border: `1px solid ${theme.colors.darkLevel3}`,\n \"& .MuiMenuItem-root.MuiButtonBase-root\": {\n background: theme.colors.darkLevel1,\n \"&.active\": {\n background: theme.colors.darkLevel3,\n \"& .customize-label\": {\n color: \"#fff\",\n },\n },\n \"& .customize-label.active\": {\n color: \"#fff\",\n },\n \"&:hover\": {\n background: theme.colors.darkLevel3,\n \"& .customize-label\": {\n color: \"#fff\",\n },\n },\n },\n },\n \"& .Mui-disabled.opacity1\": {\n opacity: 1,\n },\n },\n \"&.customize-menu-list-light\": {\n padding: 0,\n background: \"#ffffff\",\n border: \"1px solid #EFEFFF\",\n borderRadius: \"12px\",\n width: \"146px\",\n overflow: \"hidden\",\n \"& .MuiMenuItem-root.MuiButtonBase-root\": {\n background: \"#ffffff\",\n paddingTop: \"10px\",\n paddingBottom: \"10px\",\n \"&:first-of-type\": {\n borderRadius: \"12px 12px 0 0\",\n },\n \"&:last-child\": {\n borderRadius: \"0 0 12px 12px\",\n },\n \"&.active\": {\n background: \"#F5F5FF\",\n },\n \"&:hover\": {\n background: \"#F5F5FF\",\n },\n },\n },\n },\n },\n },\n MuiCircularProgress: {\n styleOverrides: {\n root: {\n animation: `${CircularProgressKeyframes0} 0.8s linear infinite`,\n \"& .MuiCircularProgress-circle\": {\n animation: `${CircularProgressKeyframes1} 0.8s ease-in-out infinite`,\n },\n },\n },\n },\n };\n}\n","import { isDarkTheme } from \"utils\";\n\nexport function themePalette(theme: { [key: string]: any }) {\n const isDark = isDarkTheme(theme);\n\n return {\n mode: theme.customization.mode,\n common: {\n black: theme.colors.darkPaper,\n },\n primary: {\n light: isDark ? theme.colors.darkPrimaryLight : theme.colors.primaryLight,\n main: isDark ? theme.colors.darkPrimaryMain : theme.colors.lightPrimaryMain,\n dark: isDark ? theme.colors.darkPrimaryDark : theme.colors.primaryDark,\n 200: isDark ? theme.colors.darkPrimary200 : theme.colors.primary200,\n 800: isDark ? theme.colors.darkPrimary800 : theme.colors.primary800,\n 400: isDark ? theme.colors.darkPrimary400 : theme.colors.primary800,\n },\n secondary: {\n light: isDark ? theme.colors.darkSecondaryLight : theme.colors.secondaryLight,\n main: isDark ? theme.colors.darkSecondaryMain : theme.colors.secondaryMain,\n dark: isDark ? theme.colors.darkSecondaryLight : theme.colors.secondaryDark,\n 200: isDark ? theme.colors.darkSecondary200 : theme.colors.secondary200,\n 800: isDark ? theme.colors.darkSecondary800 : theme.colors.secondary800,\n },\n error: {\n light: theme.colors.errorLight,\n main: theme.colors.errorMain,\n },\n orange: {\n light: theme.colors.orangeLight,\n main: theme.colors.orangeMain,\n dark: theme.colors.orangeDark,\n },\n warning: {\n light: theme.colors.warningLight,\n main: theme.colors.warningMain,\n dark: theme.colors.warningDark,\n },\n success: {\n light: theme.colors.successLight,\n 200: theme.colors.success200,\n main: theme.colors.successMain,\n dark: theme.colors.successDark,\n },\n grey: {\n 50: theme.colors.grey50,\n 100: theme.colors.grey100,\n 500: theme.darkTextSecondary,\n 600: theme.heading,\n 700: theme.colors.darkTextPrimary,\n 900: theme.textDark,\n },\n dark: {\n light: theme.colors.darkTextPrimary,\n main: theme.colors.darkLevel1,\n dark: theme.colors.darkLevel2,\n level3: theme.colors.darkLevel3,\n level4: theme.colors.darkLevel4,\n },\n text: {\n primary: theme.textPrimary,\n secondary: theme.textSecondary,\n tertiary: theme.textTertiary,\n dark: theme.textDark,\n light: theme.textLight,\n danger: theme.colors.danger,\n orangeWarning: theme.colors.warning,\n level1: isDark ? theme.colors.darkLevel1 : theme.colors.primaryLight,\n 400: isDark ? theme.colors.darkPrimary400 : theme.colors.primary800,\n theme_primary: theme.colors.darkPrimaryMain,\n theme_secondary: theme.colors.darkSecondaryMain,\n \"theme-primary\": theme.colors.darkPrimaryMain,\n \"theme-secondary\": theme.colors.darkSecondaryMain,\n apr: theme.colors.apr,\n success: theme.colors[\"text.success\"],\n },\n background: {\n paper: theme.paper,\n default: theme.backgroundDefault,\n level1: isDark ? theme.colors.darkLevel1 : theme.colors.primaryLight,\n level2: isDark ? theme.colors.darkLevel2 : theme.colors.lightLevel2,\n level3: isDark ? theme.colors.darkLevel3 : theme.colors.paper,\n level4: isDark ? theme.colors.darkLevel4 : theme.colors.lightLevel4,\n level5: isDark ? theme.colors.darkLevel5 : theme.colors.lightLevel5,\n },\n border: {\n normal: isDark ? \"1px solid #313A5A\" : `1px solid ${theme.colors.lightGray200BorderColor}`,\n border0: \"1px solid #4F5A84\",\n gray200: isDark ? \"1px solid #29314F\" : `1px solid ${theme.colors.lightGray200BorderColor}`,\n },\n avatar: {\n gray200BgColor: isDark ? { bgcolor: \"#384368\" } : { bgcolor: \"transparent\" },\n },\n loading: {\n background: isDark ? theme.colors.darkLevel3 : theme.colors.paper,\n },\n };\n}\n","export function themeTypography(theme: { [key: string]: any }) {\n return {\n fontFamily: theme.customization.fontFamily,\n h6: {\n fontWeight: 500,\n color: theme.textSecondary,\n fontSize: \"0.75rem\",\n },\n h5: {\n fontSize: \"0.875rem\",\n color: theme.textSecondary,\n fontWeight: 500,\n },\n h4: {\n fontSize: \"1rem\",\n color: theme.textSecondary,\n fontWeight: 600,\n },\n h3: {\n fontSize: \"1.25rem\",\n color: theme.textSecondary,\n fontWeight: 600,\n },\n h2: {\n fontSize: \"1.5rem\",\n color: theme.textSecondary,\n fontWeight: 700,\n },\n h1: {\n fontSize: \"2.125rem\",\n color: theme.textSecondary,\n fontWeight: 700,\n },\n subtitle1: {\n fontSize: \"0.875rem\",\n fontWeight: 500,\n color: theme.customization.mode === \"dark\" ? theme.heading : theme.textDark,\n },\n subtitle2: {\n fontSize: \"0.75rem\",\n fontWeight: 400,\n color: theme.textSecondary,\n },\n caption: {\n fontSize: \"0.75rem\",\n color: theme.textSecondary,\n fontWeight: 400,\n },\n body1: {\n fontSize: \"0.875rem\",\n fontWeight: 400,\n lineHeight: \"1.334em\",\n color: theme.textSecondary,\n },\n body2: {\n letterSpacing: \"0em\",\n fontWeight: 400,\n lineHeight: \"1.5em\",\n color: theme.textSecondary,\n fontSize: \"16px\",\n },\n customInput: {\n marginTop: 8,\n marginBottom: 8,\n \"& > label\": {\n top: \"23px\",\n left: 0,\n color: theme.grey500,\n '&[data-shrink=\"false\"]': {\n top: \"5px\",\n },\n },\n \"& > div > input\": {\n padding: \"30.5px 14px 11.5px !important\",\n },\n \"& legend\": {\n display: \"none\",\n },\n \"& fieldset\": {\n top: 0,\n },\n },\n menuCaption: {\n fontSize: \"0.875rem\",\n color: theme.heading,\n padding: \"11px 0 11px 19px\",\n textTransform: \"capitalize\",\n fontWeight: \"400\",\n },\n subMenuCaption: {\n fontSize: \"0.6875rem\",\n fontWeight: 500,\n color: theme.textSecondary,\n textTransform: \"capitalize\",\n },\n commonAvatar: {\n cursor: \"pointer\",\n borderRadius: \"8px\",\n },\n smallAvatar: {\n width: \"22px\",\n height: \"22px\",\n fontSize: \"1rem\",\n },\n mediumAvatar: {\n width: \"34px\",\n height: \"34px\",\n fontSize: \"1.2rem\",\n },\n largeAvatar: {\n width: \"44px\",\n height: \"44px\",\n fontSize: \"1.5rem\",\n },\n };\n}\n","import { createTheme } from \"@mui/material/styles\";\nimport { DynamicObject } from \"types/index\";\n\nimport { componentStyleOverrides } from \"./compStyleOverride\";\nimport { themePalette } from \"./palette\";\nimport { themeTypography } from \"./typography\";\nimport colors from \"./colors\";\n\nconst fontSize = {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n md: \"1rem\",\n lg: \"1.25rem\",\n};\n\nconst Radius = 12;\n\nexport interface ThemeOption {\n [key: string]: any;\n}\n\nexport function theme(customization: DynamicObject) {\n const themeOption: ThemeOption = {\n colors,\n fontSize,\n heading: \"\",\n paper: \"\",\n backgroundDefault: \"\",\n background: \"\",\n textPrimary: \"\",\n darkTextSecondary: \"\",\n textDark: \"\",\n textLight: \"\",\n menuSelected: \"\",\n menuSelectedBack: \"\",\n divider: \"\",\n customization,\n defaultGradient: `linear-gradient(89.44deg, ${colors.defaultGradientStart} -0.31%, ${colors.defaultGradientEnd} 91.14%)`,\n borderRadius: 12,\n };\n\n switch (customization.mode) {\n case \"dark\":\n themeOption.paper = colors.darkLevel2;\n themeOption.backgroundDefault = colors.darkPaper;\n themeOption.background = colors.darkBackground;\n themeOption.textPrimary = colors.darkTextPrimary;\n themeOption.textSecondary = colors.darkTextSecondary;\n themeOption.textTertiary = colors.darkTextTertiary;\n themeOption.textDark = colors.darkTextPrimary;\n themeOption.textLight = colors.lightTextPrimary;\n themeOption.menuBackground = colors.darkLevel1;\n themeOption.menuSelected = colors.darkSecondaryMain;\n themeOption.menuSelectedBack = colors.darkSecondaryMain + 15;\n themeOption.menuSelected = colors.paper;\n themeOption.divider = colors.darkTextPrimary;\n themeOption.heading = colors.darkTextSecondary;\n break;\n case \"light\":\n default:\n themeOption.paper = colors.paper;\n themeOption.backgroundDefault = colors.paper;\n themeOption.background = colors.primaryLight;\n themeOption.textPrimary = colors.lightTextPrimary;\n themeOption.textSecondary = colors.lightTextSecondary;\n themeOption.textTertiary = colors.lightTextTertiary;\n themeOption.textDark = colors.grey900;\n themeOption.menuBackground = colors.paper;\n themeOption.menuSelected = colors.lightTextPrimary;\n themeOption.menuSelectedBack = colors.secondaryLight;\n themeOption.menuSelected = colors.paper;\n themeOption.divider = colors.grey200;\n themeOption.heading = colors.grey900;\n break;\n }\n\n return createTheme({\n direction: customization.rtlLayout ? \"rtl\" : \"ltr\",\n palette: themePalette(themeOption),\n mixins: {\n overflowEllipsis: {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n overflowEllipsis2: {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n display: \"-webkit-box\",\n \"-webkit-box-orient\": \"vertical\",\n \"-webkit-line-clamp\": 2,\n },\n },\n typography: themeTypography(themeOption),\n components: componentStyleOverrides(themeOption),\n themeOption,\n colors,\n fontSize,\n customization,\n radius: Radius,\n });\n}\n","import { Grid, Box, Typography } from \"@mui/material\";\nimport ErrorImage from \"assets/images/Error\";\nimport { Trans } from \"@lingui/macro\";\n\nexport default function PageNotFound() {\n return (\n \n \n \n \n \n Page not found\n \n \n \n \n );\n}\n","import React, { Suspense } from \"react\";\nimport Loader from \"./LinearLoader\";\n\nexport default function Loadable(Component: React.FC) {\n return (props: any) => (\n }>\n \n \n );\n}\n","import { lazy } from \"react\";\nimport Loadable from \"../components/Loading/Loadable\";\n\nconst Wallet = Loadable(lazy(() => import(\"../views/wallet/index\")));\n\nconst Farms = Loadable(lazy(() => import(\"../views/staking-farm/index\")));\nconst Farm = Loadable(lazy(() => import(\"../views/staking-farm/farm\")));\nconst CreateFarm = Loadable(lazy(() => import(\"../views/staking-farm/create\")));\n\nconst Staking = Loadable(lazy(() => import(\"../views/staking-token\")));\nconst StakingDetails = Loadable(lazy(() => import(\"../views/staking-token/details\")));\nconst StakingTokenCreate = Loadable(lazy(() => import(\"../views/staking-token/create\")));\nconst StakingTokenV1 = Loadable(lazy(() => import(\"../views/staking-token/v1/index\")));\n\nconst Swap = Loadable(lazy(() => import(\"../views/swap-liquidity-v3/index\")));\nconst SwapPro = Loadable(lazy(() => import(\"../views/swap-pro\")));\nconst Liquidity = Loadable(lazy(() => import(\"../views/swap-liquidity-v3/liquidity/index\")));\nconst AddLiquidity = Loadable(lazy(() => import(\"../views/swap-liquidity-v3/liquidity/AddLiquidity\")));\nconst IncreaseLiquidity = Loadable(lazy(() => import(\"../views/swap-liquidity-v3/liquidity/IncreaseLiquidity\")));\nconst DecreaseLiquidity = Loadable(lazy(() => import(\"../views/swap-liquidity-v3/liquidity/DecreaseLiquidity\")));\nconst SwapReclaim = Loadable(lazy(() => import(\"../views/swap-liquidity-v3/reclaim/Reclaim\")));\nconst SwapFindMisTransferToken = Loadable(lazy(() => import(\"../views/swap-liquidity-v3/MisTransferTokens\")));\nconst SwapRevokeApprove = Loadable(lazy(() => import(\"../views/swap-liquidity-v3/RevokeApprove\")));\nconst PCMReclaim = Loadable(lazy(() => import(\"../views/swap-liquidity-v3/PCMReclaim\")));\n\nconst NFTView = Loadable(lazy(() => import(\"../views/nft/View\")));\nconst WalletNFTView = Loadable(lazy(() => import(\"../views/nft/WalletNFTView\")));\nconst NFTMint = Loadable(lazy(() => import(\"../views/nft/Mint\")));\nconst Console = Loadable(lazy(() => import(\"../views/console/index\")));\nconst ConsoleBurn = Loadable(lazy(() => import(\"../views/console/burn\")));\n\nconst NFTCanisterList = Loadable(lazy(() => import(\"../views/nft/CanisterList\")));\nconst NFTCanisterCreate = Loadable(lazy(() => import(\"../views/nft/CanisterCreate\")));\nconst NFTCanisterDetails = Loadable(lazy(() => import(\"../views/nft/CanisterDetails\")));\n\n// const NFTMarket = Loadable(lazy(() => import(\"../views/nft\")));\nconst NFTCollectMarket = Loadable(lazy(() => import(\"../views/nft/Collection\")));\nconst NFTMarketCollections = Loadable(lazy(() => import(\"../views/nft/MarketplaceCollections\")));\n\nconst Voting = Loadable(lazy(() => import(\"../views/voting/index\")));\nconst VotingProject = Loadable(lazy(() => import(\"../views/voting/project\")));\nconst VotingProposal = Loadable(lazy(() => import(\"../views/voting/proposal\")));\nconst VotingCreateProposal = Loadable(lazy(() => import(\"../views/voting/create\")));\nconst VoteCreateProject = Loadable(lazy(() => import(\"../views/voting/create-project\")));\n\nconst TokenClaimIndex = Loadable(lazy(() => import(\"../views/token-claim/index\")));\nconst TokenClaimTransactions = Loadable(lazy(() => import(\"../views/token-claim/transactions\")));\nconst CreateTokenClaim = Loadable(lazy(() => import(\"../views/token-claim/create\")));\n\nconst LiquidityV2 = Loadable(lazy(() => import(\"../views/swap-v2/liquidity/index\")));\nconst DecreaseLiquidityV2 = Loadable(lazy(() => import(\"../views/swap-v2/liquidity/DecreaseLiquidity\")));\nconst Wrap = Loadable(lazy(() => import(\"../views/swap-v2/wrap/index\")));\n\nconst ckBTC = Loadable(lazy(() => import(\"../views/wallet/ckBTC\")));\nconst ckETH = Loadable(lazy(() => import(\"../views/wallet/ckETH\")));\nconst ckToken = Loadable(lazy(() => import(\"../views/wallet/ckToken\")));\n\nconst SNSLaunches = Loadable(lazy(() => import(\"../views/sns/Launchpad/Launches\")));\nconst SNSLaunch = Loadable(lazy(() => import(\"../views/sns/Launchpad/Launch\")));\nconst SnsNeurons = Loadable(lazy(() => import(\"../views/sns/Neurons/index\")));\nconst SnsVotes = Loadable(lazy(() => import(\"../views/sns/Voting/index\")));\nconst SnsVoting = Loadable(lazy(() => import(\"../views/sns/Voting/Voting\")));\n\nexport const routeConfigs: { [path: string]: (props: any) => JSX.Element | any } = {\n \"/wallet\": Wallet,\n\n \"/wallet/ckBTC\": ckBTC,\n \"/wallet/ckETH\": ckETH,\n \"/wallet/ckToken\": ckToken,\n \"/wallet/nft/view/:canisterId/:tokenId\": WalletNFTView,\n \"/wallet/nft/canister/details/:id\": NFTCanisterDetails,\n\n \"/stake\": Staking,\n \"/stake/details/:id\": StakingDetails,\n \"/stake/create\": StakingTokenCreate,\n \"/stake/v1\": StakingTokenV1,\n \"/farm\": Farms,\n \"/farm/details/:id\": Farm,\n \"/farm/create\": CreateFarm,\n\n \"/swap\": Swap,\n \"/liquidity\": Liquidity,\n \"/liquidity/add/:currencyIdA?/:currencyIdB?/:feeAmount?\": AddLiquidity,\n \"/liquidity/decrease/:positionId/:pool\": DecreaseLiquidity,\n \"/liquidity/increase/:positionId/:pool\": IncreaseLiquidity,\n\n \"/swap/withdraw\": SwapReclaim,\n \"/swap/find-mis-transferred-token\": SwapFindMisTransferToken,\n \"/swap/revoke-approve\": SwapRevokeApprove,\n \"/swap/pcm/reclaim\": PCMReclaim,\n \"/swap/pro\": SwapPro,\n\n \"/swap/v2/liquidity\": LiquidityV2,\n \"/swap/v2/liquidity/decrease/:positionId?\": DecreaseLiquidityV2,\n \"/swap/v2/wrap\": Wrap,\n\n // \"/marketplace/NFT\": NFTMarket,\n \"/marketplace/NFT/:canisterId\": NFTCollectMarket,\n \"/marketplace/NFT/view/:canisterId/:tokenId\": NFTView,\n \"/marketplace/collections\": NFTMarketCollections,\n\n \"/voting\": Voting,\n \"/voting/:canisterId\": VotingProject,\n \"/voting/project/create\": VoteCreateProject,\n\n \"/voting/proposal/details/:canisterId/:id\": VotingProposal,\n \"/voting/proposal/create/:id\": VotingCreateProposal,\n\n \"/token-claim\": TokenClaimIndex,\n \"/token-claim/transactions/:id\": TokenClaimTransactions,\n \"/token-claim/create\": CreateTokenClaim,\n\n \"/console\": Console,\n \"/console/burn\": ConsoleBurn,\n \"/console/nft/canister/create\": NFTCanisterCreate,\n \"/console/nft/mint\": NFTMint,\n \"/console/nft/canister/list\": NFTCanisterList,\n\n \"/sns/neurons\": SnsNeurons,\n \"/sns/voting\": SnsVotes,\n \"/sns/voting/:governance_id/:proposal_id\": SnsVoting,\n \"/sns/launches\": SNSLaunches,\n \"/sns/launch/:root_id\": SNSLaunch,\n};\n","import { Route, Switch, useLocation } from \"react-router-dom\";\nimport { Layout } from \"components/Layout/index\";\nimport PageNotFound from \"components/404\";\nimport { Maintenance } from \"components/Maintenance\";\nimport { routeConfigs } from \"./config\";\n\nconst maintenancePages: string[] = [];\n\nexport default function MainRoutes() {\n const location = useLocation();\n\n const allPath = Object.keys(routeConfigs);\n\n return (\n \n \n \n {allPath.map((pathName) => {\n const component = maintenancePages.includes(pathName) ? Maintenance : routeConfigs[pathName];\n\n // @ts-ignore TODO:FIX\n return ;\n })}\n {/* @ts-ignore TODO:FIX */}\n \n \n \n \n );\n}\n","import { Switch, Route, Redirect } from \"react-router-dom\";\nimport AuthRoutes from \"./Auth\";\n\nexport default function Routes() {\n return (\n \n \n \n \n \n \n );\n}\n","import { useCallback, useState } from \"react\";\nimport { useAppSelector } from \"store/hooks\";\nimport { ThemeProvider } from \"@mui/material/styles\";\nimport { CssBaseline, StyledEngineProvider } from \"@mui/material\";\nimport { useFetchXDR2USD, useFetchGlobalTokenList } from \"store/global/hooks\";\nimport { useFetchSnsAllTokensInfo } from \"store/sns/hooks\";\nimport { Route } from \"react-router-dom\";\nimport GoogleAnalytics, { initGoogleAnalytics } from \"components/GoogleAnalytics\";\nimport { useConnectManager, useWalletConnectorManager } from \"store/auth/hooks\";\nimport RiskStatement from \"components/RiskStatement\";\nimport { SnackbarProvider } from \"components/notistack\";\nimport ErrorBoundary from \"components/ErrorBoundary\";\nimport WalletConnector from \"components/authentication/ConnectorModal\";\nimport Loader from \"components/Loading/LinearLoader\";\nimport { useInitialTokenStandard } from \"hooks/useInitialTokenStandard\";\nimport { useFetchInfoAllTokens } from \"hooks/info/useInfoTokens\";\nimport GlobalSteps from \"components/Steps/index\";\nimport ActorInitial from \"components/Actor\";\nimport { GlobalContext } from \"hooks/useGlobalContext\";\nimport TransactionsUpdater from \"store/transactions/updater\";\nimport { WagmiProvider } from \"wagmi\";\nimport { wagmiConfig } from \"constants/wagmi\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport { DisableIframe } from \"components/DisableIframe\";\n\nimport Web3Provider from \"./components/Web3Injector\";\nimport { useFetchICPPrices, useFetchAllSwapTokens } from \"./store/global/hooks\";\nimport { FullscreenLoading } from \"./components/index\";\nimport Snackbar from \"./components/Snackbar\";\nimport NavigationScroll from \"./components/NavigationScroll\";\nimport { theme } from \"./theme\";\nimport Routes from \"./routes\";\n\ninitGoogleAnalytics();\n\nexport default function App() {\n const [refreshTriggers, setRefreshTriggers] = useState<{ [key: string]: number }>({});\n const customization = useAppSelector((state) => state.customization);\n\n useFetchXDR2USD();\n useFetchICPPrices();\n useFetchInfoAllTokens();\n useFetchAllSwapTokens();\n\n const { isConnected } = useConnectManager();\n\n const [walletConnectorOpen] = useWalletConnectorManager();\n\n const { loading: fetchGlobalTokensLoading } = useFetchGlobalTokenList();\n const { loading: isInitialStandardLoading, AllPools } = useInitialTokenStandard({ fetchGlobalTokensLoading });\n\n useFetchSnsAllTokensInfo();\n\n const queryClient = new QueryClient();\n\n const handleRefreshTriggers = useCallback(\n (key: string) => {\n setRefreshTriggers({ ...refreshTriggers, [key]: (refreshTriggers[key] ?? 0) + 1 });\n },\n [refreshTriggers, setRefreshTriggers],\n );\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n {isInitialStandardLoading ? (\n \n ) : (\n \n \n \n )}\n \n \n \n {isConnected ? : null}\n {walletConnectorOpen ? : null}\n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { useCallback } from \"react\";\nimport { DEFAULT_LOCALE, SUPPORTED_LOCALES , SupportedLocale } from \"constants/locales\";\n// import useParsedQueryString from \"./useParsedQueryString\";\nimport { useAppSelector, useAppDispatch } from \"store/hooks\";\nimport { updateUserLocale } from \"store/global/actions\";\n\nfunction parseLocale(maybeSupportedLocale: string) {\n const lowerMaybeSupportedLocale = maybeSupportedLocale.toLowerCase();\n return SUPPORTED_LOCALES.find(\n (locale) =>\n locale.toLowerCase() === lowerMaybeSupportedLocale || locale.split(\"-\")[0] === lowerMaybeSupportedLocale,\n );\n}\n\nexport function navigatorLocale() {\n if (!navigator.language) return undefined;\n\n const [language, region] = navigator.language.split(\"-\");\n\n if (region) {\n return parseLocale(`${language}-${region.toUpperCase()}`) ?? parseLocale(language);\n }\n\n return parseLocale(language);\n}\n\n// export function useSetLocaleFromUrl() {\n// const parsed = useParsedQueryString();\n// const [userLocale, setUserLocale] = useUserLocaleManager();\n\n// useEffect(() => {\n// const urlLocale =\n// typeof parsed.lng === \"string\" ? parseLocale(parsed.lng) : undefined;\n// if (urlLocale && urlLocale !== userLocale) {\n// setUserLocale(urlLocale);\n// }\n// }, [parsed.lng, setUserLocale, userLocale]);\n// }\n\nexport function useActiveLocale() {\n return useAppSelector((state) => state.global.userLocale) ?? navigatorLocale() ?? DEFAULT_LOCALE;\n}\n\nexport function useLocaleManager(): [SupportedLocale, (locale: SupportedLocale) => void] {\n const dispatch = useAppDispatch();\n const locale = useActiveLocale();\n\n const setLocale = useCallback(\n (newLocale: SupportedLocale) => {\n dispatch(updateUserLocale(newLocale));\n },\n [dispatch],\n );\n\n return [locale, setLocale];\n}\n","import { useEffect, useState, ReactNode } from \"react\";\nimport { i18n } from \"@lingui/core\";\nimport { I18nProvider } from \"@lingui/react\";\n// import { useActiveLocale, useSetLocaleFromUrl } from \"hooks/useActiveLocale\";\nimport { useActiveLocale } from \"hooks/useActiveLocale\";\nimport { SupportedLocale } from \"constants/locales\";\nimport \"./locales/services\";\n\nasync function dynamicActivate(locale: SupportedLocale) {\n const { messages } = await import(`./locales/${locale}.js`);\n // @ts-ignore\n i18n.loadLocaleData(locale, { plurals: () => plurals[locale] });\n i18n.load(locale, messages);\n i18n.activate(locale);\n}\n\nexport function LanguageProvider({ children }: { children: ReactNode }) {\n // useSetLocaleFromUrl();\n const locale = useActiveLocale();\n const [loaded, setLoaded] = useState(false);\n\n useEffect(() => {\n dynamicActivate(locale)\n .then(() => {\n setLoaded(true);\n })\n .catch((error) => {\n console.error(\"Failed to activate locale\", locale, error);\n });\n }, [locale]);\n\n // prevent the app from rendering with placeholder text before the locale is loaded\n if (!loaded) return null;\n\n return {children};\n}\n","export function isDevelopmentEnv(): boolean {\n return process.env.NODE_ENV === \"development\";\n}\n\nexport function isTestEnv(): boolean {\n return process.env.NODE_ENV === \"test\";\n}\n\nexport function isStagingEnv(): boolean {\n // This is set in vercel builds and deploys from releases/staging.\n return Boolean(process.env.REACT_APP_STAGING);\n}\n\nexport function isProductionEnv(): boolean {\n return process.env.NODE_ENV === \"production\" && !isStagingEnv();\n}\n\nexport function isLocalhost({ hostname }: { hostname: string }): boolean {\n return hostname === \"localhost\";\n}\n\nexport function isSentryEnabled(): boolean {\n // disable in develop\n if (isDevelopmentEnv()) return false;\n\n return process.env.REACT_APP_SENTRY_ENABLED === \"true\";\n}\n\nexport function getEnvName(): \"production\" | \"staging\" | \"development\" {\n if (isStagingEnv()) return \"staging\";\n if (isProductionEnv()) return \"production\";\n\n return \"development\";\n}\n","import * as Sentry from \"@sentry/react\";\nimport { ClientOptions, ErrorEvent } from \"@sentry/types\";\nimport { isSentryEnabled, getEnvName } from \"utils/env\";\nimport { BrowserTracing } from \"@sentry/browser\";\n\nexport function shouldRejectError(error: ErrorEvent) {\n // User reject plug connect\n if (error.message?.includes(\"The agent creation was rejected\")) return true;\n\n // Plug disconnect error\n if (error.message?.includes(\"Attempting to use a disconnected port object\")) return true;\n\n if (\"stack\" in error && typeof error.stack === \"string\") {\n // Errors coming from a browser extension can be ignored. These errors are usually caused by extensions injecting\n // scripts into the page, which we cannot control.\n if (error.stack.match(/-extension:\\/\\//i)) return true;\n }\n\n // Network error\n if (error.message?.match(/Failed to fetch/)) return true;\n\n // Failed to load some static files\n if (error.message?.match(/Load failed/)) return true;\n\n // These are caused by user navigation away from the page before a request has finished.\n if (error instanceof DOMException && error?.name === \"AbortError\") return true;\n\n return false;\n}\n\n/**\n * Filters known (ignorable) errors out before sending them to Sentry. Also, adds tags to the event.\n * Intended as a {@link ClientOptions.beforeSend} callback. Returning null filters the error from Sentry.\n */\nexport const beforeSend: Required[\"beforeSend\"] = (event: ErrorEvent) => {\n if (shouldRejectError(event)) {\n return null;\n }\n\n return event;\n};\n\nSentry.init({\n dsn: process.env.REACT_APP_SENTRY_DSN,\n environment: getEnvName(),\n enabled: isSentryEnabled(),\n tracesSampleRate: Number(process.env.REACT_APP_SENTRY_TRACES_SAMPLE_RATE ?? 0),\n beforeSend,\n integrations: [\n new BrowserTracing({\n startTransactionOnLocationChange: false,\n startTransactionOnPageLoad: true,\n }),\n ],\n});\n","import { createRoot } from \"react-dom/client\";\nimport { BrowserRouter } from \"react-router-dom\";\nimport { Provider } from \"react-redux\";\nimport { PersistGate } from \"redux-persist/lib/integration/react\";\n\nimport * as serviceWorker from \"./serviceWorker\";\nimport store, { persistor } from \"./store/index\";\nimport App from \"./App\";\nimport { LanguageProvider } from \"./i18n\";\nimport \"./tracing\";\nimport \"./assets/css/global.css\";\n\nwindow.onerror = (msg, url, row, col, error) => {\n const _error = error ? error.toString() : \"\";\n console.error(msg, url, row, col, error, \"msg, row, col, error\");\n // update users not reload error debug\n if (/Loading chunk *.{1,} failed./.test(_error) || /Unexpected token '<'/.test(_error)) {\n window.location.reload();\n }\n};\n\n// @ts-ignore\n// Fix astrox me wallet's bug\nwindow.process = {};\n\nconst root = document.getElementById(\"root\") as HTMLElement;\n\ncreateRoot(root).render(\n // @ts-ignore TODO:FIX\n \n \n \n \n \n \n \n \n ,\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","import { t } from \"@lingui/macro\";\n\nexport type Locals = {\n [key: string]: string;\n};\n\nexport const TokenLocales: Locals = {\n insufficient_cycles_balance: t`Insufficient cycles balance`,\n invalid_value: t`Invalid value`,\n has_been_initialized: t`Has been initialized`,\n no_sufficient_balance: t`Insufficient balance`,\n unsupported_operator: t`Unsupported operator`,\n no_balance: t`Insufficient balance`,\n no_enough_balance: t`Insufficient balance`,\n permission_deined: t`Permission denied`,\n not_mint_token_list: t`You are not in the whitelist`,\n max_tokens_limit: t`No seat for the Mint Token authority.`,\n token_exists: t`Token exists`,\n invaild_token_symbol: t`Invalid token symbol`,\n insufficient_ics_balance: t`Insufficient token balance`,\n mint_token_error: t`Mint token error`,\n InsufficientBalance: t`Insufficient Balance`,\n handling_fee_error: t`Insufficient Balance`,\n};\n\nexport const SwapLocales: Locals = {\n \"mint liquidity failed\": t`Failed to mint liquidity`,\n \"collect failed\": t`Failed to Collect`,\n \"burn failed\": t`Failed to burn`,\n \"create pool task is busy, please try again later\": t`Create pool task is busy, please try again later`,\n \"token amount should be more than triple the transfer fee\": t`Token amount should be more than triple the transfer fee`,\n \"position can not be burned if not cleared\": t`Position can not be burned if not cleared`,\n \"high price impact\": t`High price impact`,\n};\n\nexport const NFTLocals: Locals = {\n NFT_claim_paused: t`The claim function is not open now. Stay tuned`,\n NFT_claim_email_code_error: t`Failed to claim. Please check your email or airdrop redemption code`,\n NFT_was_claimed: t`Failed to claim. This airdrop redemption code has been claimed`,\n NFT_claim_exceeded: t`You have reached a limit for claiming NFT`,\n NFT_token_not_exist: t`The claiming NFT tokenId does not exist`,\n \"Insufficient ICP balance\": t`Insufficient WICP balance`,\n \"exceeded max supply\": t`Exceed the limit of supply`,\n permission_denied: t`Permission denied`,\n \"Canister not found\": t`Can't not find this canister`,\n \"Check collection name or creator\": t`Invalid collection name or creator`,\n \"NFTCanisterController insufficient cycles balance\": t`Insufficient cycles balance`,\n \"Exceeded max supply\": t`Exceeded max supply`,\n \"Must use amount of 1\": t`Must use amount of 1`,\n \"Without authorization\": t`Without authorization`,\n \"Invalid owner\": t`Invalid owner`,\n \"Invalid token\": t`Invalid token`,\n can_not_find_token: t`Can't not find this token`,\n \"Order not found\": t`Order not found`,\n \"Trading stoped\": t`Trading was stopped`,\n \"Request error\": t`Request error`,\n \"NFT royalties are too high\": t`NFT royalties are too high`,\n \"Please complete the authorization operation\": t`Please complete the authorization operation`,\n \"Order is locked\": t`Order is locked`,\n \"Trade faild\": t`Failed to Trade`,\n \"Operation failed\": t`Operation failed`,\n \"Tx hash is not exist\": t`Tx hash is not exist`,\n \"Tx fee settle error\": t`Tx fee settle error`,\n \"Royalties fee settle error\": t`Royalties fee settle error`,\n \"Transfer wicp to seller error\": t`An error occurred while transferring token to the seller`,\n \"FullMath illegal result\": t`FullMath illegal result`,\n \"Buyer and seller are the same\": t`Buyer and seller are the same`,\n \"Operation failed e2\": t`Operation failed e2`,\n \"Operation failed e1\": t`Operation failed e1`,\n \"NFT transfer for the market failed\": t`Failed to transfer NFT for the market`,\n \"Order does not exist\": t`Order does not exist`,\n};\n\nexport const StakingLocals: Locals = {\n \"ward amount must be positive\": t`Reward amount must be positive`,\n \"The start time must be now or in the future\": t`The start time must be now or in the future`,\n \"The start time must be recent\": t`The start time must be recent`,\n \"The start time must be earlier than the end time\": t`The start time must be earlier than the end time`,\n \"The incentive duration is too long\": t`The incentive duration is too long`,\n \"An error occurred during the reward token transfer\": t`An error occurred during the reward token transfer`,\n \"The creator does not have permission to use this feature\": t`The creator does not have permission to use this feature`,\n \"You can't end the incentive pool because there are still staking users\": t`You can't end the incentive pool because there are still staking users`,\n \"The incentive pool cannot be terminated before the end time\": t`The incentive pool cannot be terminated before the end time`,\n \"You have not available refund\": t`You have not available refund`,\n \"The incentive pool cannot be terminated because there are staked NFTs in the incentive pool\": t`The incentive pool cannot be terminated because there are staked NFTs in the incentive pool`,\n \"The position(LP) NFT canister has not been found\": t`The position(LP) NFT canister has not been found`,\n \"The position(LP) NFT you staked is incorrect and does not match the current incentive pool\": t`The position(LP) NFT you staked is incorrect and does not match the current incentive pool`,\n \"The position(LP) NFT has already staked\": t`The position(LP) NFT has already staked`,\n \"Incentive is closure\": t`Incentive pool is closure`,\n \"The incentive pool has not started\": t`The incentive pool has not started`,\n \"The incentive pool has ended\": t`The incentive pool has ended`,\n \"Cannot endincentive while depositsMap are staked\": t`Cannot endincentive while epositsMap are staked`,\n \"The incentive pool doesn't exist\": t`The incentive pool doesn't exist`,\n \"The position(LP) NFT has not incentive pool\": t`The position(LP) NFT has not incentive pool`,\n \"You can not stake position(LP) NFT of no liquidity\": t`You can not stake position(LP) NFT of no liquidity`,\n \"You may not stake the same NFT more than once\": t`You may not stake the same NFT more than once`,\n \"NFT you staked is not you\": t`NFT you staked is not you`,\n \"You cannot withdraw to staker the Position(LP) NFT\": t`You cannot withdraw to staker the Position(LP) NFT`,\n \"Only position(LP) nft owners can withdraw them before the end of the incentive pool\": t`Only position(LP) nft owners can withdraw them before the end of the incentive pool`,\n \"You withdrawed a position(LP) NFT of no liquidity\": t`You withdrew a position(LP) NFT of no liquidity`,\n \"Error in transferring NFT, please change your account and try again\": t`Error in transferring NFT, please change your account and try again`,\n \"Error in withdrawing, please change your account and try again\": t`Error in withdrawing, please change your account and try again`,\n \"The position(LP) NFT has not staked\": t`The position(LP) NFT has not staked`,\n \"Created successfully\": t`Created successfully`,\n \"End the incentive pool successfully\": t`Ended the incentive pool successfully`,\n \"Staked successfully\": t`Staked successfully`,\n \"Deposited Successfully\": t`Deposited Successfully`,\n \"Withdrew Successfully\": t`Withdrew Successfully`,\n \"Harvest successfully\": t`Harvested successfully`,\n \"Harvest Failurefully\": t`Failed to harvest`,\n \"StartTime must be now or in the future\": t`StartTime must be now or in the future`,\n \"StartTime too far intoFuture\": t`StartTime too far intoFuture`,\n \"StartTime must be before end time\": t`StartTime must be before end time`,\n \"Incentive duration is too long\": t`Incentive duration is too long`,\n \"A minimum of 1000 Tokens are required to create a pool\": t`A minimum of 1000 Tokens are required to create a pool`,\n \"Create Storage canister Failurefully\": t`Failed to created storage canister`,\n \"Create SwapStaker Canister Failurefully\": t`Failed to create SwapStaker canister`,\n \"Adapter metadata query error\": t`Adapter metadata query error`,\n \"Approved successfully\": t`Approved successfully`,\n \"Create SingleSmartChefStaker Successfully\": t`Created SingleSmartChefStaker successfully`,\n \"The amount of withdrawal is less than the staking token transfer fee\": t`The amount of withdrawal is less than the staking token transfer fee`,\n \"The amount of deposit is less than the staking token transfer fee\": t`The amount of deposit is less than the staking token transfer fee`,\n \"The withdrawal task is busy, and please try again later\": t`The withdrawal task is busy, and please try again later`,\n \"The amount of withdrawal can’t be 0\": t`The amount of withdrawal can’t be 0`,\n \"The amount of deposit can’t be 0\": t`The amount of deposit can’t be 0`,\n \"The deposit task is busy, and please try again later\": t`The deposit task is busy, and please try again later`,\n \"The harvest task is busy, and please try again later\": t`The harvest task is busy, and please try again later`,\n};\n\nexport const WICPLocales: Locals = {\n Unauthorized: t`Unauthorized`,\n error_to_address: t`Invalid To Address`,\n amount_too_small: t`Requested amount is too small`,\n used_block_height: t`The block height has been used`,\n block_error: t`Invalid block height`,\n insufficient_funds: t`Insufficient funds`,\n InsufficientBalance: \"Insufficient balance\",\n unexpected_error: \"Unexpected error\",\n};\n\nexport const VoteMessages: Locals = {\n \"Proposal has no voting rights allocated\": t`Proposal has no voting rights allocated`,\n};\n\nexport const XTCMessages: Locals = {\n InsufficientBalance: t`Insufficient Balance`,\n InvalidTokenContract: t`Invalid token contract`,\n NotSufficientLiquidity: t`Insufficient liquidity`,\n};\n\nexport const ClaimMessages: Locals = {\n \"Your claim quota wasn't found\": t`Sorry, this address is not eligible to claim`,\n};\n\n// This is a map of message and it's locale id\nexport const MessageMaps: Locals = {\n ...NFTLocals,\n ...TokenLocales,\n ...WICPLocales,\n ...StakingLocals,\n ...SwapLocales,\n ...ClaimMessages,\n ...XTCMessages,\n ...VoteMessages,\n};\n\nexport const getLocaleMessage = (message: string): string => {\n const id = MessageMaps[message];\n const msg = t({ id });\n\n return msg || message;\n};\n","import storage from \"redux-persist/lib/storage\";\n\nconst KEY = \"ICPSwap-all-canisters\";\n\nexport async function getAllCanisters() {\n const allCanisters = await storage.getItem(KEY);\n return allCanisters?.split(\",\");\n}\n\nexport async function setAllCanisters(canisterIds: string[]) {\n const storageAllCanisters = await getAllCanisters();\n\n const allCanisters = [...(storageAllCanisters ?? []), ...canisterIds];\n\n await storage.setItem(KEY, [...new Set(allCanisters)].join(\",\"));\n}\n\nexport async function updateCanisters(canisterIds: string[]) {\n await setAllCanisters(canisterIds);\n}\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { LoginState } from \"./states\";\n\nexport const login = createAction(\"auth/login\");\n\nexport const logout = createAction(\"auth/logout\");\n\nexport const updateConnected = createAction<{ isConnected: boolean }>(\"auth/updateConnected\");\n\nexport const updateWalletConnector = createAction(\"global/updateWalletConnector\");\n","import { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { principalToAccount, isPrincipal } from \"@icpswap/utils\";\nimport { Connector } from \"constants/wallet\";\nimport { Principal } from \"@dfinity/principal\";\nimport { getConnectorIsConnected, getConnectorPrincipal, connector, WalletConnector } from \"utils/connector\";\nimport { isMeWebview } from \"utils/connector/me\";\nimport { actor } from \"@icpswap/actor\";\nimport store from \"../index\";\nimport { login, logout, updateConnected, updateWalletConnector } from \"./actions\";\nimport { updateLockStatus as _updateLockStatus } from \"../session/actions\";\n\nexport function useIsUnLocked() {\n return useAppSelector((state) => state.session.isUnLocked);\n}\n\nexport function getConnectorType() {\n let connectorType = store.getState().auth.walletType;\n if (isMeWebview()) connectorType = Connector.ME;\n return connectorType;\n}\n\nexport function useConnectorType() {\n const connectorType = getConnectorType();\n return useMemo(() => connectorType, [connectorType]);\n}\n\nexport async function connectToConnector(connectorType: Connector) {\n await connector.init(connectorType);\n\n if (!(await connector.isConnected())) {\n await connector.connect();\n } else if (connector.connector) {\n window.icConnector = connector.connector;\n }\n\n return await getConnectorIsConnected();\n}\n\nexport function useConnectorStateConnected() {\n const isConnected = useAppSelector((state) => state.auth.isConnected);\n const isUnLocked = useAppSelector((state) => state.session.isUnLocked);\n const walletType = useAppSelector((state) => state.auth.walletType);\n\n if (!walletType) return false;\n if (walletType === Connector.PLUG && !isUnLocked) return false;\n return isConnected;\n}\n\nexport function getStoreWalletConnected() {\n const { auth } = store.getState();\n return auth.isConnected;\n}\n\nexport function getStoreWalletUnlocked() {\n const { session } = store.getState();\n return session.isUnLocked;\n}\n\nexport interface UpdateAuthProps {\n walletType: Connector;\n}\n\nexport async function updateAuth({ walletType }: UpdateAuthProps) {\n const state = store.getState();\n\n const principal = await getConnectorPrincipal();\n\n if (!principal) return;\n\n const account = principalToAccount(principal);\n\n const mnemonic =\n walletType === Connector.ICPSwap || walletType === Connector.STOIC_MNEMONIC ? state.auth.mnemonic : \"\";\n const password =\n walletType === Connector.ICPSwap || walletType === Connector.STOIC_MNEMONIC ? state.auth.password : \"\";\n\n store.dispatch(\n login({\n name: walletType,\n mnemonic,\n account,\n principal,\n walletType,\n password,\n }),\n );\n\n store.dispatch(updateConnected({ isConnected: true }));\n store.dispatch(_updateLockStatus(false));\n}\n\nexport function setActorHttpAgent() {\n const { auth } = store.getState();\n const { walletType } = auth;\n\n if (!walletType) return;\n\n actor.setConnector(walletType);\n}\n\nexport function updateLockStatus(locked: boolean) {\n store.dispatch(_updateLockStatus(locked));\n}\n\nexport function useUserLogout() {\n const dispatch = useAppDispatch();\n const walletType = useConnectorType();\n\n return useCallback(async () => {\n await dispatch(logout());\n if (walletType && window.icConnector) window.icConnector.disconnect();\n await updateLockStatus(true);\n dispatch(updateConnected({ isConnected: false }));\n }, [dispatch, updateLockStatus]);\n}\n\nexport function useConnectManager() {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(true);\n\n const connectorStateConnected = useConnectorStateConnected();\n const isUnLocked = useIsUnLocked();\n const logout = useUserLogout();\n\n useEffect(() => {\n async function call() {\n const connectorType = getConnectorType();\n if (!connectorType) {\n dispatch(updateConnected({ isConnected: false }));\n setLoading(false);\n return;\n }\n\n const new_connector = await WalletConnector.create(connectorType);\n const expired = await new_connector.expired();\n\n if (expired) {\n logout();\n setLoading(false);\n return;\n }\n\n const isConnected = await connectToConnector(connectorType);\n\n if (connectorType === Connector.ME) {\n updateAuth({ walletType: Connector.ME });\n }\n\n dispatch(updateConnected({ isConnected }));\n\n if (isConnected) setActorHttpAgent();\n\n setLoading(false);\n }\n\n call();\n }, [isUnLocked]);\n\n return useMemo(() => ({ isConnected: connectorStateConnected, loading }), [connectorStateConnected, loading]);\n}\n\nexport function useAccountPrincipal(): Principal | undefined {\n const principal = useAppSelector((state) => state.auth.principal);\n const walletType = useAppSelector((state) => state.auth.walletType);\n const isUnLocked = useAppSelector((state) => state.session.isUnLocked);\n\n return useMemo(() => {\n if (!principal) return undefined;\n if (walletType === Connector.PLUG && !isUnLocked) return undefined;\n if (isPrincipal(principal)) return principal as Principal;\n return Principal.fromText(principal);\n }, [principal, walletType, isUnLocked]);\n}\n\nexport function useAccount() {\n const principal = useAccountPrincipal();\n\n return useMemo(() => {\n if (!principal) return undefined;\n return principalToAccount(principal.toString());\n }, [principal]);\n}\n\nexport function useAccountPrincipalString() {\n const principal = useAccountPrincipal();\n\n return useMemo(() => {\n return principal?.toString();\n }, [principal]);\n}\n\nexport function useWalletConnectorManager(): [boolean, (open: boolean) => void] {\n const dispatch = useAppDispatch();\n const open = useAppSelector((state) => state.auth.walletConnectorOpen);\n\n const manage = useCallback(\n (open: boolean) => {\n dispatch(updateWalletConnector(open));\n },\n [dispatch],\n );\n\n return [open, manage];\n}\n","import { createAction } from \"@reduxjs/toolkit\";\n\nexport const updateCallResult = createAction<{ callKey: string; result: any }>(\"auth/updateCallResult\");\n\nexport const updateCallIndex = createAction(\"auth/updateCallIndex\");\n\nexport const updateCallKeys = createAction<{ callKey: string; callIndex: number }>(\"auth/updateCallKeys\");\n","import { createAction } from \"@reduxjs/toolkit\";\n\nexport const changeTheme = createAction(\"customization/changeTheme\");\nexport const updateLocal = createAction(\"customization/updateLocal\");\nexport const updateHideUnavailableClaim = createAction(\"customization/updateHideUnavailableClaim\");\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { ICPPriceInfo } from \"types/token\";\nimport { SupportedLocale } from \"constants/locales\";\nimport { TokenListMetadata } from \"types/token-list\";\nimport { type AllTokenOfSwapTokenInfo } from \"@icpswap/types\";\n\nexport const updateXDR2USD = createAction(\"global/updateXDR2USD\");\n\nexport const updateICPPriceList = createAction(\"global/updateICPPriceList\");\n\nexport const updateUserLocale = createAction(\"global/updateUserLocale\");\n\nexport const updateTokenList = createAction(\"global/updateTokenList\");\n\nexport const updateAllSwapTokens = createAction(\"global/updateAllSwapTokens\");\n","import { useCallback } from \"react\";\nimport { exchangeRate } from \"@icpswap/actor\";\nimport { useCallsData } from \"./useCallData\";\nimport { parseTokenAmount } from \"@icpswap/utils\";\n\nexport async function getExchangeRates() {\n return await (await exchangeRate()).get_exchange_rates();\n}\n\nexport function useExchangeRates() {\n return useCallsData(\n useCallback(async () => {\n return await getExchangeRates();\n }, [])\n );\n}\n\nexport async function getExchangeRate(pair: string) {\n return await (await exchangeRate()).get_exchange_rate(pair);\n}\n\nexport function useExchangeRate(pair: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n return await getExchangeRate(pair!);\n }, [pair]),\n !!pair\n );\n}\n\nexport async function getXDR2USD() {\n const result = await getExchangeRate(\"f_USD-f_XDR\");\n return parseTokenAmount(result.rate, result.decimals).toString();\n}\n\nexport function useXDR2USD() {\n return useCallsData(\n useCallback(async () => {\n return await getXDR2USD();\n }, [])\n );\n}\n","import { useCallback } from \"react\";\nimport { resultFormat } from \"@icpswap/utils\";\nimport { useCallsData } from \"./useCallData\";\n\ntype PriceResult = [number, number];\n\ntype ICPPriceResult = {\n icp_xdr_conversion_rates: PriceResult[];\n};\n\nexport async function get100ICPPriceInfo() {\n const now = new Date().getTime();\n const start = now - 10 * 24 * 60 * 60 * 1000;\n\n const fetch_result = await fetch(\n `https://ic-api.internetcomputer.org/api/v3/icp-xdr-conversion-rates?start=${parseInt(\n (start / 1000).toString(),\n 10,\n )}&end=${parseInt((now / 1000).toString(), 10)}&step=600`,\n ).catch(() => undefined);\n\n if (!fetch_result) return undefined;\n\n const result = (await fetch_result.json()) as { icp_xdr_conversion_rates: ICPPriceResult };\n\n return resultFormat(result.icp_xdr_conversion_rates).data;\n}\n\nexport function use100ICPPriceInfo() {\n return useCallsData(\n useCallback(async () => {\n return await get100ICPPriceInfo();\n }, []),\n );\n}\n","import { useEffect, useMemo, useState } from \"react\";\nimport { ICP } from \"@icpswap/tokens\";\nimport { parseTokenAmount, BigNumber } from \"@icpswap/utils\";\nimport { AppState } from \"store/index\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport {\n use100ICPPriceInfo,\n useXDR2USD,\n useTokensFromList,\n getLimitedInfinityCall,\n getAllTokensOfSwap,\n} from \"@icpswap/hooks\";\nimport { AllTokenOfSwapTokenInfo } from \"@icpswap/types\";\n\nimport { updateXDR2USD, updateICPPriceList, updateTokenList, updateAllSwapTokens } from \"./actions\";\n\nexport function useAccount() {\n return useAppSelector((state: AppState) => state.auth.account);\n}\n\nexport function useGlobalTokenList() {\n return useAppSelector((state: AppState) => state.global.tokenList);\n}\n\nexport function useICPPriceList() {\n return useAppSelector((state: AppState) => state.global.ICPPriceList);\n}\n\nexport interface SwapToken {\n canisterId: string;\n symbol: string;\n name: string;\n decimals: number;\n}\n\nexport function useICPPrice() {\n const ICPPriceList = useICPPriceList();\n\n return useMemo(() => {\n if (ICPPriceList && ICPPriceList.length) {\n const price = ICPPriceList[ICPPriceList.length - 1].value;\n return price;\n }\n return undefined;\n }, [ICPPriceList]);\n}\n\nexport function useICPAmountUSDValue(amount: number | null | string | undefined | bigint) {\n const ICPPrice = useICPPrice();\n\n return useMemo(() => {\n if (!ICPPrice || !amount) return undefined;\n return new BigNumber(ICPPrice).multipliedBy(parseTokenAmount(amount, ICP.decimals));\n }, [ICPPrice, amount]);\n}\n\nexport function useICP2CyclesManager() {\n const ICPPriceList = useICPPriceList();\n\n return useMemo(() => {\n if (ICPPriceList && ICPPriceList.length) {\n return ICPPriceList[ICPPriceList.length - 1]?.xdr ?? 0;\n }\n return 0;\n }, [ICPPriceList]);\n}\n\nexport function useStateXDR2USD() {\n return useAppSelector((state: AppState) => state.global.xdr_usdt);\n}\n\nexport function useFetchXDR2USD() {\n const dispatch = useAppDispatch();\n\n const { result: xdr_usd } = useXDR2USD();\n\n useEffect(() => {\n async function call() {\n if (xdr_usd) {\n dispatch(updateXDR2USD(Number(xdr_usd)));\n }\n }\n\n call();\n }, [xdr_usd]);\n}\n\nexport function useFetchICPPrices() {\n const dispatch = useAppDispatch();\n const xdr_usdt = useStateXDR2USD();\n\n const { result: icpPrices } = use100ICPPriceInfo();\n\n useEffect(() => {\n if (!icpPrices || !xdr_usdt || icpPrices.length === 0) return;\n\n const priceList = icpPrices.map((ele) => ({\n value: new BigNumber(new BigNumber(ele[1]).dividedBy(10000).times(xdr_usdt).toFixed(4)).toNumber(),\n timestamp: ele[0].toString(),\n xdr: new BigNumber(ele[1]).dividedBy(10000).toString(),\n }));\n\n dispatch(updateICPPriceList(priceList));\n }, [xdr_usdt, icpPrices]);\n}\n\nexport function useFetchGlobalTokenList() {\n const dispatch = useAppDispatch();\n const { result: tokens, loading } = useTokensFromList();\n\n useEffect(() => {\n if (tokens && tokens.length > 0) {\n const allTokensFromList = [...tokens].sort((a, b) => {\n if (a && b) {\n if (a.rank < b.rank) return -1;\n if (a.rank === b.rank) return 0;\n if (a.rank > b.rank) return 1;\n }\n\n return 0;\n });\n\n dispatch(updateTokenList(allTokensFromList));\n }\n }, [tokens, dispatch]);\n\n return {\n loading,\n result: tokens,\n };\n}\n\nexport function useTokenIsInTokenList(tokenId: string | undefined) {\n const globalTokenList = useGlobalTokenList();\n\n return useMemo(() => {\n if (!tokenId || !globalTokenList || globalTokenList.length === 0) return false;\n const token = globalTokenList.find((e) => e.canisterId === tokenId);\n return Boolean(token);\n }, [globalTokenList, tokenId]);\n}\n\nexport function useStateSwapAllTokens() {\n return useAppSelector((state: AppState) => state.global.allSwapTokens);\n}\n\nexport function useFetchAllSwapTokens() {\n const dispatch = useAppDispatch();\n const allSwapTokens = useStateSwapAllTokens();\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n const fetch = async (offset: number, limit: number) => {\n const result = await getAllTokensOfSwap(offset, limit);\n return result?.content;\n };\n\n async function call() {\n if (allSwapTokens.length > 0 || loading) return;\n\n setLoading(true);\n const data = await getLimitedInfinityCall(fetch, 1000, 2);\n dispatch(updateAllSwapTokens(data));\n setLoading(false);\n }\n\n call();\n }, [allSwapTokens, dispatch]);\n\n return useMemo(() => ({ loading, result: allSwapTokens }), [loading, allSwapTokens]);\n}\n","import { TypedUseSelectorHook, useDispatch, useSelector } from \"react-redux\";\nimport store, { AppState } from \"./index\";\n\nexport const useAppDispatch = () => useDispatch();\nexport const useAppSelector: TypedUseSelectorHook = useSelector;\n\nexport * from \"./swap/hooks\";\nexport * from \"./swap/cache/hooks\";\n","export interface CustomizationState {\n fontFamily: string;\n mode: string;\n locale: string;\n rtlLayout: boolean;\n hideUnavailableClaim: boolean;\n}\n\nexport const initialState: CustomizationState = {\n fontFamily: `'Poppins','Roboto',sans-serif`,\n mode: \"dark\",\n locale: \"en\",\n rtlLayout: false,\n hideUnavailableClaim: true,\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { changeTheme, updateLocal, updateHideUnavailableClaim } from \"./actions\";\nimport { initialState } from \"./states\";\n\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(changeTheme, (state, { payload }) => {\n state.mode = payload;\n })\n .addCase(updateLocal, (state, { payload }) => {\n state.locale = payload;\n })\n .addCase(updateHideUnavailableClaim, (state, { payload }) => {\n state.hideUnavailableClaim = payload;\n });\n});\n","import { SnackbarOrigin, AlertColor } from \"@mui/material\";\n\nexport interface SnackbarState {\n action: boolean;\n open: boolean;\n message: string;\n anchorOrigin: SnackbarOrigin;\n variant: string;\n alertSeverity: AlertColor;\n transition: string;\n close: boolean;\n actionButton: boolean;\n autoHideDuration: number;\n}\n\nexport const initialState: SnackbarState = {\n action: false,\n open: false,\n message: \"No Message Founded\",\n anchorOrigin: {\n vertical: \"top\",\n horizontal: \"right\",\n },\n variant: \"default\",\n alertSeverity: \"success\",\n transition: \"Fade\",\n close: true,\n actionButton: false,\n autoHideDuration: 4000,\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { closeSnackbar, openSnackbar } from \"./actions\";\nimport { initialState } from \"./states\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(openSnackbar, (state, { payload }) => {\n return {\n ...state,\n action: !state.action,\n open: true,\n message: payload.message ? payload.message : initialState.message,\n anchorOrigin: payload.anchorOrigin ? payload.anchorOrigin : initialState.anchorOrigin,\n variant: payload.variant ? payload.variant : initialState.variant,\n alertSeverity: payload.alertSeverity ? payload.alertSeverity : initialState.alertSeverity,\n transition: payload.transition ? payload.transition : initialState.transition,\n close: false,\n actionButton: payload.actionButton ? payload.actionButton : initialState.actionButton,\n };\n })\n .addCase(closeSnackbar, (state) => {\n return {\n ...state,\n action: !state.action,\n open: false,\n message: \"\",\n close: true,\n };\n });\n});\n","import { StoredTxValue } from \"types/ckBTC\";\nimport { WalletSortType, SortBalanceEnum } from \"types/index\";\n\nexport interface WalletState {\n taggedTokens: string[];\n ckBTCAddresses: { [key: string]: string };\n retrieveState: { [key: string]: StoredTxValue[] };\n sort: WalletSortType;\n sortBalance: SortBalanceEnum;\n}\n\nexport const initialState: WalletState = {\n ckBTCAddresses: {},\n retrieveState: {},\n taggedTokens: [],\n sort: \"Default\",\n sortBalance: SortBalanceEnum.ALL,\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport {\n updateTaggedTokens,\n deleteTaggedTokens,\n updateCK_BTCAddresses,\n updateRetrieveState,\n updateWalletSortType,\n updateSortBalance,\n} from \"./actions\";\nimport { initialState } from \"./states\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(updateTaggedTokens, (state, { payload }) => {\n const newTaggedTokens = [...state.taggedTokens, ...payload];\n\n return {\n ...state,\n taggedTokens: newTaggedTokens,\n };\n })\n .addCase(deleteTaggedTokens, (state, { payload }) => {\n const newTaggedTokens = [...state.taggedTokens].filter((token) => !payload.includes(token));\n\n return {\n ...state,\n taggedTokens: newTaggedTokens,\n };\n })\n .addCase(updateCK_BTCAddresses, (state, { payload }) => {\n state.ckBTCAddresses = {\n ...state.ckBTCAddresses,\n [`${payload.principal}_${payload.type}`]: payload.address,\n };\n })\n .addCase(updateRetrieveState, (state, { payload }) => {\n const states = state.retrieveState[`${payload.principal}`]\n ? [...state.retrieveState[`${payload.principal}`]].filter(\n (state) => state.block_index !== String(payload.block_index),\n )\n : [];\n\n const old_state = (\n state.retrieveState[`${payload.principal}`] ? [...state.retrieveState[`${payload.principal}`]] : []\n ).filter((state) => state.block_index === String(payload.block_index))[0];\n\n states.unshift({\n state: payload.state,\n txid: payload.txid,\n block_index: String(payload.block_index),\n value: payload.value ? payload.value : old_state ? old_state.value : \"\",\n });\n\n const _states = states.sort((a, b) => {\n if (Number(a.block_index) > Number(b.block_index)) return -1;\n if (Number(a.block_index) < Number(b.block_index)) return 1;\n return 0;\n });\n\n state.retrieveState[`${payload.principal}`] = _states;\n })\n .addCase(updateWalletSortType, (state, { payload }) => {\n state.sort = payload;\n })\n .addCase(updateSortBalance, (state, { payload }) => {\n state.sortBalance = payload;\n });\n});\n","import { DEFAULT_LOCALE, SupportedLocale } from \"constants/locales\";\nimport { ICPPriceInfo } from \"types/token\";\nimport { TokenListMetadata } from \"types/token-list\";\nimport { type AllTokenOfSwapTokenInfo } from \"@icpswap/types\";\n\nexport interface GlobalState {\n xdr_usdt: number;\n ICPPriceList: ICPPriceInfo[];\n tokenList: TokenListMetadata[];\n hasBeenClaimTestToken: boolean;\n swapTokenList: [];\n userLocale: SupportedLocale;\n poolStandardUpdated: boolean;\n allSwapTokens: AllTokenOfSwapTokenInfo[];\n}\n\nexport const initialState: GlobalState = {\n xdr_usdt: 1.33,\n ICPPriceList: [],\n tokenList: [],\n hasBeenClaimTestToken: false,\n swapTokenList: [],\n userLocale: DEFAULT_LOCALE,\n poolStandardUpdated: false,\n allSwapTokens: [],\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { updateXDR2USD, updateICPPriceList, updateUserLocale, updateTokenList, updateAllSwapTokens } from \"./actions\";\nimport { initialState } from \"./states\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(updateXDR2USD, (state, { payload }) => {\n state.xdr_usdt = payload;\n })\n .addCase(updateICPPriceList, (state, { payload }) => {\n state.ICPPriceList = payload;\n })\n .addCase(updateUserLocale, (state, { payload }) => {\n state.userLocale = payload;\n })\n .addCase(updateTokenList, (state, { payload }) => {\n state.tokenList = payload;\n })\n .addCase(updateAllSwapTokens, (state, { payload }) => {\n state.allSwapTokens = payload;\n });\n});\n","import { SWAP_FIELD } from \"constants/index\";\nimport { DEFAULT_SWAP_INPUT_ID, DEFAULT_SWAP_OUTPUT_ID } from \"constants/swap\";\n\nexport interface SwapState {\n [SWAP_FIELD.INPUT]: { currencyId: string | undefined };\n [SWAP_FIELD.OUTPUT]: { currencyId: string | undefined };\n typedValue: string;\n independentField: SWAP_FIELD;\n poolCanisterIds: { [key: string]: string };\n swapOutAmount: { [key: string]: bigint | undefined };\n decreaseLiquidityAmount: { [key: string]: { amount0: bigint | undefined; amount1: bigint | undefined } };\n}\n\nexport const initialState: SwapState = {\n [SWAP_FIELD.INPUT]: { currencyId: DEFAULT_SWAP_INPUT_ID },\n [SWAP_FIELD.OUTPUT]: { currencyId: DEFAULT_SWAP_OUTPUT_ID },\n typedValue: \"\",\n independentField: SWAP_FIELD.INPUT,\n poolCanisterIds: {},\n swapOutAmount: {},\n decreaseLiquidityAmount: {},\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { SWAP_FIELD } from \"constants/swap\";\nimport {\n typeInput,\n clearSwapState,\n selectCurrency,\n switchCurrencies,\n updatePoolCanisterIds,\n updateSwapOutAmount,\n updateDecreaseLiquidityAmount,\n} from \"./actions\";\nimport { initialState } from \"./state\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(typeInput, (state, { payload }) => {\n const { field: independentField, typedValue } = payload;\n\n state.independentField = independentField;\n state.typedValue = typedValue;\n })\n .addCase(selectCurrency, (state, { payload }) => {\n const { field, currencyId } = payload;\n\n const otherField = field === SWAP_FIELD.INPUT ? SWAP_FIELD.OUTPUT : SWAP_FIELD.INPUT;\n if (currencyId === state[otherField].currencyId) {\n return {\n ...state,\n independentField: state.independentField === SWAP_FIELD.INPUT ? SWAP_FIELD.OUTPUT : SWAP_FIELD.INPUT,\n [field]: { currencyId },\n [otherField]: { currencyId: state[field].currencyId },\n };\n } \n // the normal case\n return {\n ...state,\n [field]: { currencyId },\n };\n \n })\n .addCase(switchCurrencies, (state) => {\n return {\n ...state,\n typedValue: \"\",\n independentField: state.independentField === SWAP_FIELD.INPUT ? SWAP_FIELD.OUTPUT : SWAP_FIELD.INPUT,\n [SWAP_FIELD.INPUT]: { currencyId: state[SWAP_FIELD.OUTPUT].currencyId },\n [SWAP_FIELD.OUTPUT]: { currencyId: state[SWAP_FIELD.INPUT].currencyId },\n };\n })\n .addCase(clearSwapState, () => {\n return initialState;\n })\n .addCase(updatePoolCanisterIds, (state, { payload }) => {\n state.poolCanisterIds[payload.key] = payload.id;\n })\n .addCase(updateSwapOutAmount, (state, { payload }) => {\n state.swapOutAmount[payload.key] = payload.value;\n })\n .addCase(updateDecreaseLiquidityAmount, (state, { payload }) => {\n state.decreaseLiquidityAmount[payload.key] = { amount0: payload.amount0, amount1: payload.amount1 };\n });\n});\n","import { FIELD } from \"constants/swap\";\n\nexport interface SwapLiquidityState {\n leftRangeValue: string | boolean;\n rightRangeValue: string | boolean;\n startPrice: string;\n independentField: FIELD; // The currency input currently\n typedValue: string;\n}\n\nexport const initialState: SwapLiquidityState = {\n leftRangeValue: \"\",\n rightRangeValue: \"\",\n startPrice: \"\",\n independentField: FIELD.CURRENCY_A,\n typedValue: \"\",\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport {\n updateFiled,\n updateFullRange,\n updateLeftRange,\n updateRightRange,\n updateStartPrice,\n resetMintState,\n} from \"./actions\";\nimport { initialState } from \"./state\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n\n .addCase(updateFiled, (state, { payload }) => {\n const { field, typedValue } = payload;\n\n if (field === state.independentField) {\n return {\n ...state,\n independentField: field,\n typedValue,\n };\n } \n return {\n ...state,\n independentField: field,\n typedValue,\n };\n \n })\n .addCase(updateFullRange, (state) => {\n state.leftRangeValue = true;\n state.rightRangeValue = true;\n })\n .addCase(updateLeftRange, (state, { payload }) => {\n state.leftRangeValue = payload;\n })\n .addCase(updateRightRange, (state, { payload }) => {\n state.rightRangeValue = payload;\n })\n .addCase(updateStartPrice, (state, { payload }) => {\n state.startPrice = payload;\n })\n .addCase(resetMintState, () => {\n return initialState;\n });\n});\n","import {\n DEFAULT_BURN_SLIPPAGE,\n DEFAULT_SWAP_SLIPPAGE,\n DEFAULT_MINT_SLIPPAGE,\n DEFAULT_TRANSACTIONS_DEADLINE,\n DEFAULT_MULTIPLE_APPROVE,\n} from \"constants/swap\";\n\nexport interface SwapCacheState {\n userExpertMode: boolean;\n userSingleHop: boolean;\n userSelectedToken: string[];\n userSlippage: { [key: string]: number };\n userTransactionsDeadline: number;\n taggedTokens: string[];\n showClosedPosition: boolean;\n userPositionPools: string[];\n multipleApprove: number;\n swapProAutoRefresh: boolean;\n keepTokenInPools: boolean;\n}\n\nexport const initialState: SwapCacheState = {\n userExpertMode: false,\n userSingleHop: false,\n userSelectedToken: [],\n userSlippage: {\n swap: DEFAULT_SWAP_SLIPPAGE,\n mint: DEFAULT_MINT_SLIPPAGE,\n burn: DEFAULT_BURN_SLIPPAGE,\n },\n userTransactionsDeadline: DEFAULT_TRANSACTIONS_DEADLINE,\n taggedTokens: [],\n showClosedPosition: true,\n userPositionPools: [],\n multipleApprove: DEFAULT_MULTIPLE_APPROVE,\n swapProAutoRefresh: true,\n keepTokenInPools: false,\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport {\n updateUserExpertMode,\n updateUserSelectedToken,\n updateUserSingleHop,\n updateUserSlippage,\n updateUserTransactionsDeadline,\n updateTaggedTokens,\n removeTaggedTokens,\n updateShowClosedPosition,\n updateUserPositionPools,\n updateUserMultipleApprove,\n updateSwapProAutoRefresh,\n updateKeepTokenInPools,\n} from \"./actions\";\nimport { initialState } from \"./state\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(updateUserExpertMode, (state, { payload }) => {\n state.userExpertMode = payload;\n })\n .addCase(updateUserSelectedToken, (state, { payload }) => {\n state.userSelectedToken = payload;\n })\n .addCase(updateUserSingleHop, (state, { payload }) => {\n state.userSingleHop = payload;\n })\n .addCase(updateUserTransactionsDeadline, (state, { payload }) => {\n state.userTransactionsDeadline = payload;\n })\n .addCase(updateUserSlippage, (state, { payload }) => {\n const { type, value } = payload;\n state.userSlippage[type] = value;\n })\n .addCase(updateTaggedTokens, (state, { payload }) => {\n state.taggedTokens = [...state.taggedTokens, ...payload];\n })\n .addCase(removeTaggedTokens, (state, { payload }) => {\n state.taggedTokens = state.taggedTokens.filter((token) => payload.findIndex((_token) => _token === token) === -1);\n })\n .addCase(updateShowClosedPosition, (state, { payload }) => {\n state.showClosedPosition = payload;\n })\n .addCase(updateUserPositionPools, (state, { payload }) => {\n const { userPositionPools } = state;\n const allPoolIds = [...new Set([...userPositionPools, ...payload])];\n\n state.userPositionPools = allPoolIds;\n })\n .addCase(updateUserMultipleApprove, (state, { payload }) => {\n state.multipleApprove = payload;\n })\n .addCase(updateSwapProAutoRefresh, (state, { payload }) => {\n state.swapProAutoRefresh = payload;\n })\n .addCase(updateKeepTokenInPools, (state, { payload }) => {\n state.keepTokenInPools = payload;\n });\n});\n","import { BURN_FIELD } from \"constants/swap\";\n\nexport interface SwapBurnState {\n typedValue: string;\n independentField: BURN_FIELD;\n}\n\nexport const initialState: SwapBurnState = {\n independentField: BURN_FIELD.LIQUIDITY_PERCENT,\n typedValue: \"0\",\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { updateTypedInput, resetBurnState } from \"./actions\";\nimport { initialState } from \"./state\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(updateTypedInput, (state, { payload }) => {\n const { typedValue, independentField } = payload;\n\n state.independentField = independentField;\n state.typedValue = typedValue;\n })\n .addCase(resetBurnState, () => {\n return initialState;\n });\n});\n","import { ImportedNFT } from \"types/nft\";\n\nexport interface NFTState {\n userSelectedCanisters: string[];\n importedNFTs: ImportedNFT[];\n}\n\nexport const initialState: NFTState = {\n userSelectedCanisters: [],\n importedNFTs: [],\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { updateUserSelectedCanisters, deleteUserSelectedCanisters, importNFT, deleteNFT } from \"./actions\";\nimport { initialState } from \"./states\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(updateUserSelectedCanisters, (state, { payload }) => {\n state.userSelectedCanisters = [...state.userSelectedCanisters, ...(payload ?? [])];\n })\n .addCase(deleteUserSelectedCanisters, (state, { payload }) => {\n const userSelectedCanisters = new Set(state.userSelectedCanisters);\n\n userSelectedCanisters.delete(payload);\n\n state.userSelectedCanisters = [...userSelectedCanisters];\n })\n .addCase(importNFT, (state, { payload }) => {\n state.importedNFTs = state.importedNFTs.concat(payload);\n })\n .addCase(deleteNFT, (state, { payload }) => {\n state.importedNFTs = state.importedNFTs.filter((e) => e.canisterId !== payload.canisterId);\n });\n});\n","import { Connector } from \"constants/wallet\";\n\nexport type LoginState = {\n name: string;\n mnemonic: null | string;\n principal: string;\n walletType: null | Connector;\n account: string;\n password: string;\n};\n\nexport interface AuthState {\n name: string;\n mnemonic: null | string;\n principal: string;\n walletType: null | Connector;\n isConnected: boolean;\n account: string;\n password: string;\n walletConnectorOpen: boolean;\n}\n\nexport const initialState: AuthState = {\n name: \"\",\n mnemonic: null,\n principal: \"\",\n walletType: null,\n isConnected: false,\n account: \"\",\n password: \"\",\n walletConnectorOpen: false,\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { login, logout, updateConnected, updateWalletConnector } from \"./actions\";\nimport { initialState } from \"./states\";\n\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(login, (state, { payload }) => {\n return {\n ...state,\n ...payload,\n };\n })\n .addCase(logout, () => {\n return { ...initialState };\n })\n .addCase(updateConnected, (state, { payload }) => {\n state.isConnected = payload.isConnected;\n })\n .addCase(updateWalletConnector, (state, { payload }) => {\n state.walletConnectorOpen = payload;\n });\n});\n","export interface SessionState {\n isUnLocked: boolean;\n}\n\nexport const initialState: SessionState = {\n isUnLocked: false,\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { updateLockStatus } from \"./actions\";\nimport { initialState } from \"./states\";\n\nexport default createReducer(initialState, (builder) => {\n builder.addCase(updateLockStatus, (state, { payload }) => {\n state.isUnLocked = !payload;\n });\n});\n","import { TOKEN_STANDARD } from \"@icpswap/token-adapter\";\n\nexport interface TokenCacheState {\n standards: { [canisterId: string]: TOKEN_STANDARD };\n allTokenIds: string[];\n}\n\nexport const initialState: TokenCacheState = {\n standards: {},\n allTokenIds: [],\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { updateTokenStandards, updateAllTokenIds } from \"./actions\";\nimport { initialState } from \"./states\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(updateTokenStandards, (state, { payload }) => {\n payload.forEach(({ canisterId, standard }) => {\n if (canisterId) {\n state.standards[canisterId] = standard;\n }\n });\n })\n .addCase(updateAllTokenIds, (state, { payload }) => {\n state.allTokenIds = [...new Set(state.allTokenIds.concat(payload))];\n });\n});\n","export interface CallState {\n callResults: {\n [callKey: string]: any;\n };\n callIndex: number;\n callKeys: {\n [callKey: string]: number;\n };\n}\n\nexport const initialState: CallState = {\n callResults: {},\n callIndex: 0,\n callKeys: {},\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { updateCallResult, updateCallIndex, updateCallKeys } from \"./actions\";\nimport { initialState } from \"./states\";\n\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(updateCallResult, (state, { payload }) => {\n state.callResults = {\n ...state.callResults,\n [payload.callKey]: payload.result,\n };\n })\n .addCase(updateCallIndex, (state) => {\n state.callIndex += 1;\n })\n .addCase(updateCallKeys, (state, { payload }) => {\n state.callKeys = {\n ...state.callKeys,\n [payload.callKey]: payload.callIndex,\n };\n });\n});\n","import { ReactNode } from \"react\";\nimport { type StepContents } from \"types/step\";\n\nexport interface StepDetailsProps {\n title: ReactNode;\n onClose?: () => void;\n content: StepContents[];\n activeStep: number;\n errorStep: number | undefined;\n description?: string;\n}\n\nexport interface StepsState {\n steps: { [key: string]: StepDetailsProps };\n opened: string[];\n key: number;\n data: { [key: string]: any };\n}\n\nexport const initialState: StepsState = {\n steps: {},\n opened: [],\n key: 0,\n data: {},\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { open, close, updateStepDetails, updateKey, closeAll, updateData } from \"./actions\";\nimport { initialState } from \"./state\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(open, (state, { payload }) => {\n if (payload) {\n state.opened = [payload];\n }\n })\n .addCase(close, (state, { payload }) => {\n if (payload && state.opened.includes(payload)) {\n state.opened = [];\n }\n })\n .addCase(closeAll, (state) => {\n state.opened = [];\n })\n .addCase(updateStepDetails, (state, { payload }) => {\n state.steps = {\n ...state.steps,\n [payload.key]: payload.value,\n };\n })\n .addCase(updateKey, (state) => {\n state.key += 1;\n })\n .addCase(updateData, (state, { payload }) => {\n state.data = {\n ...state.data,\n [payload.key]: payload.data,\n };\n });\n});\n","import type { SnsTokensInfo } from \"@icpswap/types\";\n\nexport interface SnsState {\n snsAllTokensInfo: SnsTokensInfo[];\n}\n\nexport const initialState: SnsState = {\n snsAllTokensInfo: [],\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { updateSnsAllTokensInfo } from \"./actions\";\nimport { initialState } from \"./states\";\n\nexport default createReducer(initialState, (builder) => {\n builder.addCase(updateSnsAllTokensInfo, (state, { payload }) => {\n state.snsAllTokensInfo = payload;\n });\n});\n","import { UserPosition } from \"types/swapv2\";\nimport { FIELD } from \"constants/swap\";\n\nexport interface SwapLiquidityState {\n userPositions: (UserPosition | undefined)[];\n leftRangeValue: string | boolean;\n rightRangeValue: string | boolean;\n startPrice: string;\n independentField: FIELD; // The currency input currently\n typedValue: string;\n}\n\nexport const initialState: SwapLiquidityState = {\n userPositions: [],\n leftRangeValue: \"\",\n rightRangeValue: \"\",\n startPrice: \"\",\n independentField: FIELD.CURRENCY_A,\n typedValue: \"\",\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport {\n updateFiled,\n updateFullRange,\n updateLeftRange,\n updateRightRange,\n updateStartPrice,\n updateUserPositions,\n resetMintState,\n} from \"./actions\";\nimport { initialState } from \"./state\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(updateUserPositions, (state, { payload }) => {\n state.userPositions = payload;\n })\n .addCase(updateFiled, (state, { payload }) => {\n const { field, typedValue } = payload;\n\n if (field === state.independentField) {\n return {\n ...state,\n independentField: field,\n typedValue,\n };\n } \n return {\n ...state,\n independentField: field,\n typedValue,\n };\n \n })\n .addCase(updateFullRange, (state) => {\n state.leftRangeValue = true;\n state.rightRangeValue = true;\n })\n .addCase(updateLeftRange, (state, { payload }) => {\n state.leftRangeValue = payload;\n })\n .addCase(updateRightRange, (state, { payload }) => {\n state.rightRangeValue = payload;\n })\n .addCase(updateStartPrice, (state, { payload }) => {\n state.startPrice = payload;\n })\n .addCase(resetMintState, () => {\n return initialState;\n });\n});\n","import {\n DEFAULT_BURN_SLIPPAGE,\n DEFAULT_SWAP_SLIPPAGE,\n DEFAULT_MINT_SLIPPAGE,\n DEFAULT_TRANSACTIONS_DEADLINE,\n} from \"constants/swap\";\n\nexport interface SwapCacheState {\n userExpertMode: boolean;\n userSingleHop: boolean;\n userSelectedToken: string[];\n userSlippage: { [key: string]: number };\n userTransactionsDeadline: number;\n poolCanisterIds: { [key: string]: string };\n taggedTokens: string[];\n}\n\nexport const initialState: SwapCacheState = {\n userExpertMode: false,\n userSingleHop: false,\n userSelectedToken: [],\n userSlippage: {\n swap: DEFAULT_SWAP_SLIPPAGE,\n mint: DEFAULT_MINT_SLIPPAGE,\n burn: DEFAULT_BURN_SLIPPAGE,\n },\n userTransactionsDeadline: DEFAULT_TRANSACTIONS_DEADLINE,\n poolCanisterIds: {},\n taggedTokens: [],\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { updateUserSlippage } from \"./actions\";\nimport { initialState } from \"./state\";\n\nexport default createReducer(initialState, (builder) => {\n builder.addCase(updateUserSlippage, (state, { payload }) => {\n const { type, value } = payload;\n state.userSlippage[type] = value;\n });\n});\n","import { BURN_FIELD } from \"constants/swap\";\n\nexport interface SwapBurnState {\n typedValue: string;\n independentField: BURN_FIELD;\n}\n\nexport const initialState: SwapBurnState = {\n independentField: BURN_FIELD.LIQUIDITY_PERCENT,\n typedValue: \"0\",\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { updateTypedInput, resetBurnState } from \"./actions\";\nimport { initialState } from \"./state\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(updateTypedInput, (state, { payload }) => {\n const { typedValue, independentField } = payload;\n\n state.independentField = independentField;\n state.typedValue = typedValue;\n })\n .addCase(resetBurnState, () => {\n return initialState;\n });\n});\n","import { TX } from \"types/web3\";\nimport { StoredWithdrawTxValue } from \"types/ckETH\";\n\nexport interface Web3State {\n tx: { [principal: string]: TX[] };\n withdrawTx: { [principal: string]: StoredWithdrawTxValue[] };\n erc20Transactions: { [principal_ledger: string]: TX[] };\n}\n\nexport const initialState: Web3State = {\n tx: {},\n withdrawTx: {},\n erc20Transactions: {},\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { updateTX, updateErc20TX, updateWithdrawTX } from \"./actions\";\nimport { initialState } from \"./states\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(updateTX, (state, { payload }) => {\n const allTx = state.tx[`${payload.principal}`] ? [payload.tx, ...state.tx[`${payload.principal}`]] : [payload.tx];\n state.tx[`${payload.principal}`] = allTx;\n })\n .addCase(updateWithdrawTX, (state, { payload }) => {\n const otherStates = state.withdrawTx[`${payload.principal}`]\n ? [...state.withdrawTx[`${payload.principal}`]].filter(\n (transaction) => transaction.block_index !== String(payload.tx.block_index),\n )\n : [];\n\n const old_state = (\n state.withdrawTx[`${payload.principal}`] ? [...state.withdrawTx[`${payload.principal}`]] : []\n ).filter((transaction) => transaction.block_index === String(payload.tx.block_index))[0];\n\n otherStates.unshift({\n state: payload.tx.state,\n hash: payload.tx.hash ?? old_state?.hash,\n block_index: String(payload.tx.block_index),\n value: payload.tx.value ? payload.tx.value : old_state ? old_state.value : \"\",\n });\n\n const newStates = otherStates.sort((a, b) => {\n if (Number(a.block_index) > Number(b.block_index)) return -1;\n if (Number(a.block_index) < Number(b.block_index)) return 1;\n return 0;\n });\n\n state.withdrawTx[`${payload.principal}`] = newStates;\n })\n .addCase(updateErc20TX, (state, { payload }) => {\n const key = `${payload.principal}_${payload.ledger_id}`;\n const allTx = state.erc20Transactions[key] ? [payload.tx, ...state.erc20Transactions[key]] : [payload.tx];\n state.erc20Transactions[key] = allTx;\n });\n});\n","import customizationReducer from \"./customization/reducer\";\nimport snackbarReducer from \"./snackbar/reducer\";\nimport walletReducer from \"./wallet/reducer\";\nimport globalReducer from \"./global/reducer\";\nimport loadingReducer from \"./loadingReducer\";\nimport SwapReducer from \"./swap/reducer\";\nimport SwapLiquidityReducer from \"./swap/liquidity/reducer\";\nimport SwapCacheReducer from \"./swap/cache/reducer\";\nimport SwapBurn from \"./swap/burn/reducer\";\nimport NFTReducer from \"./nft/reducer\";\nimport AuthReducer from \"./auth/reducer\";\nimport sessionReducer from \"./session/reducer\";\nimport tokenCacheReducer from \"./token/cache/reducer\";\nimport callReducer from \"./call/reducer\";\nimport StepReducer from \"./steps/reducer\";\nimport SnsReducer from \"./sns/reducer\";\nimport TransactionsReducer from \"./transactions/reducer\";\n\nimport SwapV2LiquidityReducer from \"./swapv2/liquidity/reducer\";\nimport SwapV2CacheReducer from \"./swapv2/cache/reducer\";\nimport SwapV2Burn from \"./swapv2/burn/reducer\";\nimport Web3 from \"./web3/reducer\";\n\nexport { sessionReducer };\n\nexport default {\n customization: customizationReducer,\n snackbar: snackbarReducer,\n loading: loadingReducer,\n wallet: walletReducer,\n global: globalReducer,\n swap: SwapReducer,\n swapCache: SwapCacheReducer,\n swapLiquidity: SwapLiquidityReducer,\n swapBurn: SwapBurn,\n nft: NFTReducer,\n auth: AuthReducer,\n call: callReducer,\n step: StepReducer,\n tokenCache: tokenCacheReducer,\n transactions: TransactionsReducer,\n\n swapV2Cache: SwapV2CacheReducer,\n swapV2Liquidity: SwapV2LiquidityReducer,\n swapV2Burn: SwapV2Burn,\n web3: Web3,\n sns: SnsReducer,\n};\n","import { configureStore } from \"@reduxjs/toolkit\";\nimport { AnyAction, combineReducers } from \"redux\";\nimport { persistStore, persistReducer } from \"redux-persist\";\nimport storage from \"redux-persist/lib/storage\";\nimport sessionStorage from \"redux-persist/lib/storage/session\";\nimport autoMergeLevel2 from \"redux-persist/lib/stateReconciler/autoMergeLevel2\";\nimport { PersistState } from \"redux-persist/es/types\";\nimport allReducer, { sessionReducer } from \"./reducer\";\n\nimport { AuthState } from \"./auth/states\";\nimport { SessionState } from \"./session/states\";\nimport { GlobalState } from \"./global/states\";\nimport { NFTTradeState } from \"./NFTTrade/states\";\nimport { SnackbarState } from \"./snackbar/states\";\nimport { LoadingState } from \"./loadingReducer\";\nimport { NFTState } from \"./nft/states\";\nimport { WalletState } from \"./wallet/states\";\nimport { CustomizationState } from \"./customization/states\";\nimport { SwapBurnState } from \"./swap/burn/state\";\nimport { SwapLiquidityState } from \"./swap/liquidity/state\";\nimport { SwapCacheState } from \"./swap/cache/state\";\nimport { SwapState } from \"./swap/state\";\nimport { TokenCacheState } from \"./token/cache/states\";\nimport { CallState } from \"./call/states\";\nimport { StepsState } from \"./steps/state\";\nimport { Web3State } from \"./web3/states\";\nimport { SnsState } from \"./sns/states\";\nimport { TransactionsState } from \"./transactions/reducer\";\n\nimport { SwapBurnState as SwapV2BurnState } from \"./swapv2/burn/state\";\nimport { SwapLiquidityState as SwapV2LiquidityState } from \"./swapv2/liquidity/state\";\nimport { SwapCacheState as SwapV2CacheState } from \"./swapv2/cache/state\";\n\ninterface PersistPartial {\n _persist: PersistState;\n}\nexport interface AllState {\n auth: AuthState;\n session: SessionState & PersistPartial;\n global: GlobalState;\n loading: LoadingState;\n cache: any;\n snackbar: SnackbarState;\n swap: SwapState;\n swapLiquidity: SwapLiquidityState;\n swapBurn: SwapBurnState;\n swapCache: SwapCacheState;\n tokenCache: TokenCacheState;\n customization: CustomizationState;\n wallet: WalletState;\n nft: NFTState;\n NFTTrade: NFTTradeState;\n call: CallState;\n step: StepsState;\n swapV2Burn: SwapV2BurnState;\n swapV2Liquidity: SwapV2LiquidityState;\n swapV2Cache: SwapV2CacheState;\n web3: Web3State;\n sns: SnsState;\n transactions: TransactionsState;\n}\n\nconst defaultStorageConfig = {\n storage,\n stateReconciler: autoMergeLevel2,\n version: 0,\n};\n\nconst rootPersistConfig = {\n key: \"root\",\n ...defaultStorageConfig,\n blacklist: [\n \"cache\",\n \"session\",\n \"global\",\n \"loading\",\n \"snackbar\",\n \"swap\",\n \"swapLiquidity\",\n \"swapBurn\",\n \"call\",\n \"step\",\n \"swapV2Liquidity\",\n \"swapV2Burn\",\n \"sns\",\n ],\n migrate: (state: any) => {\n let newState = {};\n\n if (state?._persist?.version === -1) {\n newState = { ...(state ?? {}), auth: {} };\n } else {\n newState = { ...(state ?? {}) };\n }\n\n // 11/17/2023 Fix some incorrect token cache\n if (state?._persist?.version === 1) {\n newState = { ...(state ?? {}), tokenCache: {} };\n } else {\n newState = { ...(state ?? {}) };\n }\n\n // 12/06/2023 Fix ckETH cache\n if (state?._persist?.version === 2) {\n newState = { ...(state ?? {}), tokenCache: {} };\n } else {\n newState = { ...(state ?? {}) };\n }\n\n return Promise.resolve(newState);\n },\n version: 3,\n};\n\nconst SessionPersistConfig = {\n key: \"session\",\n storage: sessionStorage,\n stateReconciler: autoMergeLevel2,\n version: 3,\n};\n\nconst rootReducer = combineReducers({\n ...allReducer,\n session: persistReducer(SessionPersistConfig, sessionReducer),\n});\n\n// @ts-ignore\nconst PersistReducer = persistReducer(rootPersistConfig, rootReducer);\n\nconst store = configureStore({\n reducer: PersistReducer,\n middleware: (getDefaultMiddleware) => getDefaultMiddleware({ thunk: true, serializableCheck: false }),\n});\n\nexport const persistor = persistStore(store);\n\nexport type AppState = ReturnType;\nexport type AppDispatch = typeof store.dispatch;\n\nexport default store;\n","import { createAction , createReducer } from \"@reduxjs/toolkit\";\n\nexport const openLoading = createAction(\"loading/open\");\nexport const closeLoading = createAction(\"loading/close\");\n\nexport interface LoadingState {\n open: boolean;\n}\n\nconst initialState: LoadingState = {\n open: false,\n};\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(openLoading, (state) => {\n state.open = true;\n })\n .addCase(closeLoading, (state) => {\n state.open = false;\n });\n});\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { NFT_STANDARDS } from \"@icpswap/constants\";\n\nexport const updateUserSelectedCanisters = createAction(\"NFT/updateUserSelectedCanisters\");\n\nexport const deleteUserSelectedCanisters = createAction(\"NFT/deleteUserSelectedCanisters\");\n\nexport const importNFT = createAction<{ canisterId: string; standard: NFT_STANDARDS }>(\"NFT/importNFT\");\n\nexport const deleteNFT = createAction<{ canisterId: string }>(\"NFT/deleteNFT\");\n","import { createAction } from \"@reduxjs/toolkit\";\n\nexport const updateLockStatus = createAction(\"session/updateLockStatus\");\n","import { createAction } from \"@reduxjs/toolkit\";\n\nexport const openSnackbar = createAction<{ [key: string]: any }>(\"snackbar/openSnackbar\");\nexport const closeSnackbar = createAction(\"snackbar/closeSnackbar\");\n","import { createAction } from \"@reduxjs/toolkit\";\nimport type { SnsTokensInfo } from \"@icpswap/types\";\n\nexport const updateSnsAllTokensInfo = createAction(\"global/updateSnsAllTokensInfo\");\n","import { useEffect, useMemo, useState } from \"react\";\nimport { AppState } from \"store/index\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport { getSnsAllTokensInfo } from \"@icpswap/hooks\";\nimport { updateSnsAllTokensInfo } from \"./actions\";\n\nexport function useStateSnsAllTokensInfo() {\n return useAppSelector((state: AppState) => state.sns.snsAllTokensInfo);\n}\n\nexport function useFetchSnsAllTokensInfo() {\n const dispatch = useAppDispatch();\n const allTokensInfo = useStateSnsAllTokensInfo();\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n async function call() {\n if (allTokensInfo.length > 0 || loading) return;\n\n setLoading(true);\n const data = await getSnsAllTokensInfo();\n dispatch(updateSnsAllTokensInfo(data));\n setLoading(false);\n }\n\n call();\n }, [dispatch]);\n\n return useMemo(() => ({ loading, result: allTokensInfo }), [loading, allTokensInfo]);\n}\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { StepDetailsProps } from \"./state\";\n\nexport const updateStepDetails = createAction<{ key: string; value: StepDetailsProps }>(\"steps/updateStepDetails\");\n\nexport const open = createAction(\"steps/open\");\n\nexport const close = createAction(\"steps/close\");\n\nexport const updateKey = createAction(\"steps/updateKey\");\n\nexport const closeAll = createAction(\"steps/closeAll\");\n\nexport const updateData = createAction<{ key: string; data: any }>(\"steps/updateData\");\n","import { useCallback, useMemo } from \"react\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport type { StepDetails } from \"types/step\";\n\nimport { open, close, updateStepDetails, updateKey, closeAll, updateData } from \"./actions\";\nimport store from \"../index\";\n\nexport function getStepDetails(key: string) {\n return store.getState().step.steps[key];\n}\n\nexport function useCurrKey() {\n return useAppSelector((state) => state.step.key);\n}\n\nexport function useUpdateKey() {\n const dispatch = useAppDispatch();\n\n return useCallback(() => {\n dispatch(updateKey());\n }, [dispatch]);\n}\n\nexport function useStepManager() {\n const dispatch = useAppDispatch();\n\n const openCall = useCallback(\n (key: string | undefined) => {\n dispatch(open(key));\n },\n [dispatch],\n );\n\n const closeCall = useCallback(\n (key: string | undefined) => {\n dispatch(close(key));\n },\n [dispatch],\n );\n\n return useMemo(\n () => ({\n open: openCall,\n close: closeCall,\n }),\n [openCall, closeCall],\n );\n}\n\nexport function useCloseAllSteps() {\n const dispatch = useAppDispatch();\n\n return useCallback(() => {\n dispatch(closeAll());\n }, [dispatch]);\n}\n\nexport function useStepContentManager() {\n const dispatch = useAppDispatch();\n const { close } = useStepManager();\n\n return useCallback(\n (key: string, step: StepDetails) => {\n const prevStep = getStepDetails(key) ?? {};\n\n dispatch(\n updateStepDetails({\n key,\n value: {\n ...step,\n activeStep: prevStep.activeStep ?? 0,\n errorStep: prevStep.errorStep,\n onClose: () => close(key),\n },\n }),\n );\n },\n [dispatch, close],\n );\n}\n\nexport function useUpdateCallStep() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (key: string, activeStep: number, errorStep: number | undefined) => {\n const prevStep = getStepDetails(key) ?? {};\n\n dispatch(updateStepDetails({ key, value: { ...prevStep, activeStep, errorStep } }));\n },\n [dispatch],\n );\n}\n\nexport function useOpenedSteps() {\n return useAppSelector((state) => state.step.opened);\n}\n\nexport function useStepDetails(key: string) {\n return useAppSelector((state) => state.step.steps[key]);\n}\n\nexport function useStepData(key: string) {\n return useAppSelector((state) => state.step.data[key]) as T;\n}\n\nexport function getStepData(key: string) {\n return store.getState().step.data[key] as T;\n}\n\nexport function useUpdateStepData() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (key: string, data: any) => {\n dispatch(updateData({ key, data }));\n },\n [dispatch],\n );\n}\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { SWAP_FIELD } from \"constants/swap\";\n\nexport const selectCurrency = createAction<{ field: SWAP_FIELD; currencyId: string | undefined }>(\n \"swap/selectCurrency\",\n);\n\nexport const switchCurrencies = createAction(\"swap/switchCurrencies\");\n\nexport const typeInput = createAction<{ field: SWAP_FIELD; typedValue: string }>(\"swap/typeInput\");\n\nexport const clearSwapState = createAction(\"swap/clearSwapState\");\n\nexport type PoolCanisterRecord = { key: string; id: string };\n\nexport const updatePoolCanisterIds = createAction(\"swapCache/updatePoolCanisterIds\");\n\nexport const updateSwapOutAmount = createAction<{ key: string; value: bigint | undefined }>(\"swap/updateSwapOutAmount\");\n\nexport const updateDecreaseLiquidityAmount = createAction<{\n key: string;\n amount0: bigint | undefined;\n amount1: bigint | undefined;\n}>(\"swap/updateDecreaseLiquidityAmount\");\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { BURN_FIELD } from \"constants/swap\";\n\nexport interface updateTypedInputPayload {\n independentField: BURN_FIELD;\n typedValue: string;\n}\n\nexport const updateTypedInput = createAction(\"swapBurn/updateTypedInput\");\n\nexport const resetBurnState = createAction(\"swapBurn/resetBurnState\");\n","import { createAction } from \"@reduxjs/toolkit\";\n\nexport const updateUserExpertMode = createAction(\"swapCache/updateUserExpertMode\");\n\nexport const updateUserSingleHop = createAction(\"swapCache/updateUserSingleHop\");\n\nexport const updateUserSelectedToken = createAction(\"swapCache/updateUserSelectedToken\");\n\nexport const updateUserSlippage = createAction<{ type: string; value: number }>(\"swapCache/updateUserSlippage\");\n\nexport const updateUserTransactionsDeadline = createAction(\"swapCache/updateUserTransactionsDeadline\");\n\nexport const updateTaggedTokens = createAction(\"swapCache/updateTaggedToken\");\n\nexport const removeTaggedTokens = createAction(\"swapCache/removeTaggedTokens\");\n\nexport const updateShowClosedPosition = createAction(\"swapCache/updateShowClosedPosition\");\n\nexport const updateUserPositionPools = createAction(\"swapCache/updateUserPositionPools\");\n\nexport const updateUserMultipleApprove = createAction(\"swapCache/updateUserMultipleApprove\");\n\nexport const updateSwapProAutoRefresh = createAction(\"global/updateSwapProAutoRefresh\");\n\nexport const updateKeepTokenInPools = createAction(\"swapCache/updateKeepTokenInPools\");\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useUserPositionPools } from \"@icpswap/hooks\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport { slippageToPercent, getDefaultSlippageTolerance } from \"constants/swap\";\nimport { useAccount } from \"store/auth/hooks\";\nimport { Percent } from \"@icpswap/swap-sdk\";\nimport {\n updateUserExpertMode,\n updateUserSingleHop,\n updateUserSelectedToken,\n updateUserTransactionsDeadline,\n updateUserSlippage,\n updateTaggedTokens,\n removeTaggedTokens,\n updateShowClosedPosition,\n updateUserPositionPools,\n updateUserMultipleApprove,\n updateSwapProAutoRefresh,\n updateKeepTokenInPools,\n} from \"./actions\";\n\nexport function useIsExpertMode() {\n return useAppSelector((state) => state.swapCache.userExpertMode);\n}\n\nexport function useIsSingleHop() {\n return useAppSelector((state) => state.swapCache.userSingleHop);\n}\n\nexport function useUserSlippage() {\n return useAppSelector((state) => state.swapCache.userSlippage);\n}\n\nexport function useUserTransactionsDeadline() {\n return useAppSelector((state) => state.swapCache.userTransactionsDeadline);\n}\n\nexport function useExpertModeManager(): [boolean, () => void] {\n const dispatch = useAppDispatch();\n const expertMode = useIsExpertMode();\n\n const toggleSetExpertMode = useCallback(() => {\n dispatch(updateUserExpertMode(!expertMode));\n }, [dispatch, expertMode]);\n\n return [expertMode, toggleSetExpertMode];\n}\n\nexport function useSingleHopManager(): [boolean, () => void] {\n const dispatch = useAppDispatch();\n const singleHop = useIsSingleHop();\n\n const toggleSetSingleHop = useCallback(() => {\n dispatch(updateUserSingleHop(!singleHop));\n }, [dispatch, singleHop]);\n\n return [singleHop, toggleSetSingleHop];\n}\n\nexport function useUserSelectedToken() {\n return useAppSelector((state) => state.swapCache.userSelectedToken);\n}\n\nexport function useMultipleApproveManager() {\n const dispatch = useAppDispatch();\n const multipleApprove = useAppSelector((state) => state.swapCache.multipleApprove);\n\n const updateMultipleApprove = useCallback(\n (multipleApprove: number) => {\n dispatch(updateUserMultipleApprove(multipleApprove));\n },\n [dispatch, multipleApprove],\n );\n\n return useMemo(() => ({ multipleApprove, updateMultipleApprove }), [updateMultipleApprove, multipleApprove]);\n}\n\nexport function useSelectedTokenManage(): [string[], (tokenIds: string[]) => void] {\n const dispatch = useAppDispatch();\n const userSelectedToken = useUserSelectedToken();\n\n const setUserSelectedToken = useCallback(\n (checkedToken: string[]) => {\n dispatch(updateUserSelectedToken(checkedToken));\n },\n [dispatch],\n );\n return [userSelectedToken, setUserSelectedToken];\n}\n\nexport function useSlippageManager(type: string): [number, (value: number) => void] {\n const dispatch = useAppDispatch();\n const userSlippage = useUserSlippage()[type];\n\n const setUserSlippage = useCallback(\n (value: number) => {\n dispatch(updateUserSlippage({ type, value }));\n },\n [dispatch],\n );\n\n return [userSlippage, setUserSlippage];\n}\n\nexport function useSlippageToleranceToPercent(type: string) {\n const [slippageTolerance] = useSlippageManager(type);\n\n return useMemo(() => {\n if (slippageTolerance || slippageTolerance === 0) {\n return slippageToPercent(slippageTolerance);\n }\n\n let percentSlippage: Percent | null = null;\n // input change will case error when value is 0.\n try {\n percentSlippage = slippageToPercent(getDefaultSlippageTolerance(type));\n } catch {\n percentSlippage = slippageToPercent(getDefaultSlippageTolerance(type));\n }\n\n return percentSlippage;\n }, [slippageTolerance, slippageToPercent]);\n}\n\nexport function useTransactionsDeadlineManager(): [number, (value: number) => void] {\n const dispatch = useAppDispatch();\n const transactionDeadline = useUserTransactionsDeadline();\n\n const setTransactionsDeadline = useCallback(\n (value: number) => {\n dispatch(updateUserTransactionsDeadline(value));\n },\n [dispatch],\n );\n\n return [transactionDeadline, setTransactionsDeadline];\n}\n\nexport function useTaggedTokenManager(): [string[], (tokens: string[]) => void, (tokens: string[]) => void] {\n const dispatch = useAppDispatch();\n\n const taggedTokens = useAppSelector((state) => state.swapCache.taggedTokens);\n\n const updateTaggedTokensCall = useCallback(\n (tokens: string[]) => {\n dispatch(updateTaggedTokens(tokens));\n },\n [dispatch],\n );\n\n const removeTaggedTokensCall = useCallback(\n (tokens: string[]) => {\n dispatch(removeTaggedTokens(tokens));\n },\n [dispatch],\n );\n\n return useMemo(\n () => [taggedTokens, updateTaggedTokensCall, removeTaggedTokensCall],\n [taggedTokens, updateTaggedTokensCall, removeTaggedTokensCall],\n );\n}\n\nexport function useClosedPositionManager(): [boolean, (bool: boolean) => void] {\n const showClosedPosition = useAppSelector((state) => state.swapCache.showClosedPosition);\n const dispatch = useAppDispatch();\n\n const update = useCallback(\n (bool: boolean) => {\n dispatch(updateShowClosedPosition(bool));\n },\n [dispatch],\n );\n\n return useMemo(() => [showClosedPosition, update], [showClosedPosition, update]);\n}\n\nexport function useStoreUserPositionPools() {\n return useAppSelector((state) => state.swapCache.userPositionPools);\n}\n\nexport function useUpdateUserPositionPools() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (poolIds: string[]) => {\n dispatch(updateUserPositionPools(poolIds));\n },\n [dispatch],\n );\n}\n\nexport function useInitialUserPositionPools() {\n const account = useAccount();\n const storeUserPositionPools = useStoreUserPositionPools();\n const updateStoreUserPositionPools = useUpdateUserPositionPools();\n\n const [initialLoading, setInitialLoading] = useState(true);\n\n const { result: positionPools, loading } = useUserPositionPools(account);\n\n useEffect(() => {\n if (positionPools) {\n const allPoolIds = [...new Set([...storeUserPositionPools, ...positionPools])];\n updateStoreUserPositionPools(allPoolIds);\n setInitialLoading(false);\n } else if (loading === false) {\n setInitialLoading(false);\n }\n }, [JSON.stringify(storeUserPositionPools), positionPools, updateStoreUserPositionPools, loading]);\n\n return {\n loading: initialLoading,\n };\n}\n\nexport function useSwapProAutoRefresh() {\n return useAppSelector((state) => state.swapCache.swapProAutoRefresh);\n}\n\nexport function useSwapProAutoRefreshManager(): [boolean, (autoRefresh: boolean) => void] {\n const dispatch = useAppDispatch();\n const swapProAutoRefresh = useSwapProAutoRefresh();\n\n const callback = useCallback(\n (autoRefresh: boolean) => {\n dispatch(updateSwapProAutoRefresh(autoRefresh));\n },\n [dispatch],\n );\n\n return useMemo(() => [swapProAutoRefresh, callback], [swapProAutoRefresh, callback]);\n}\n\nexport function useSwapKeepTokenInPools() {\n return useAppSelector((state) => state.swapCache.keepTokenInPools);\n}\n\nexport function useSwapKeepTokenInPoolsManager(): [boolean, (autoRefresh: boolean) => void] {\n const dispatch = useAppDispatch();\n const keepTokenInPools = useSwapKeepTokenInPools();\n\n const callback = useCallback(\n (keepTokenInPools: boolean) => {\n dispatch(updateKeepTokenInPools(keepTokenInPools));\n },\n [dispatch],\n );\n\n return useMemo(() => [keepTokenInPools, callback], [keepTokenInPools, callback]);\n}\n","import { useCallback, useEffect, useMemo } from \"react\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport { SWAP_FIELD } from \"constants/swap\";\nimport { useToken } from \"hooks/useCurrency\";\nimport { tryParseAmount, inputNumberCheck, isUseTransfer } from \"utils/index\";\nimport { TradeState, useBestTrade } from \"hooks/swap/useTrade\";\nimport { useAccountPrincipal } from \"store/auth/hooks\";\nimport { useCurrencyBalance } from \"hooks/token/useTokenBalance\";\nimport { useSlippageToleranceToPercent } from \"store/swap/cache/hooks\";\nimport { t } from \"@lingui/macro\";\nimport { getTokenInsufficient } from \"hooks/swap/index\";\nimport useDebounce from \"hooks/useDebounce\";\nimport store from \"store/index\";\nimport { useParsedQueryString, useUserUnusedBalance, useTokenBalance, useDebouncedChangeHandler } from \"@icpswap/hooks\";\nimport { isValidPrincipal, formatTokenAmount, isNullArgs } from \"@icpswap/utils\";\nimport { SubAccount } from \"@dfinity/ledger-icp\";\nimport { useAllowance } from \"hooks/token\";\nimport { useAllBalanceMaxSpend } from \"hooks/swap/useMaxAmountSpend\";\n\nimport {\n selectCurrency,\n switchCurrencies,\n typeInput,\n clearSwapState,\n updatePoolCanisterIds,\n PoolCanisterRecord,\n updateSwapOutAmount,\n updateDecreaseLiquidityAmount,\n} from \"./actions\";\n\nexport function useSwapHandlers() {\n const dispatch = useAppDispatch();\n\n const onCurrencySelection = useCallback(\n (field: SWAP_FIELD, currencyId: string | undefined) => {\n dispatch(\n selectCurrency({\n field,\n currencyId,\n }),\n );\n },\n [dispatch],\n );\n\n const onSwitchTokens = useCallback(() => {\n dispatch(switchCurrencies());\n }, [dispatch]);\n\n const [, debouncedSwitchTokens] = useDebouncedChangeHandler(undefined, onSwitchTokens, 500);\n\n const onUserInput = useCallback(\n (field: SWAP_FIELD, typedValue: string) => {\n dispatch(typeInput({ field, typedValue }));\n },\n [dispatch],\n );\n\n return {\n onCurrencySelection,\n onSwitchTokens: debouncedSwitchTokens,\n onUserInput,\n };\n}\n\nexport function useSwapState() {\n return useAppSelector((state) => state.swap);\n}\n\nexport function useCleanSwapState() {\n const dispatch = useAppDispatch();\n\n return useCallback(() => dispatch(clearSwapState()), [dispatch]);\n}\n\nexport interface UseSwapInfoArgs {\n refresh?: number | boolean;\n}\n\nexport function useSwapInfo({ refresh }: UseSwapInfoArgs) {\n const principal = useAccountPrincipal();\n const userSlippageTolerance = useSlippageToleranceToPercent(\"swap\");\n\n const sub = useMemo(() => {\n return principal ? SubAccount.fromPrincipal(principal).toUint8Array() : undefined;\n }, [principal]);\n\n const {\n independentField,\n typedValue,\n [SWAP_FIELD.INPUT]: { currencyId: inputCurrencyId },\n [SWAP_FIELD.OUTPUT]: { currencyId: outputCurrencyId },\n } = useSwapState();\n\n const [inputCurrencyState, inputToken] = useToken(inputCurrencyId);\n const [outputCurrencyState, outputToken] = useToken(outputCurrencyId);\n\n const isExactIn = independentField === SWAP_FIELD.INPUT;\n\n const { result: inputCurrencyBalance } = useCurrencyBalance(principal, inputToken, refresh);\n const { result: outputCurrencyBalance } = useCurrencyBalance(principal, outputToken, refresh);\n\n const currencyBalances = {\n [SWAP_FIELD.INPUT]: inputCurrencyBalance,\n [SWAP_FIELD.OUTPUT]: outputCurrencyBalance,\n };\n\n const parsedAmount = tryParseAmount(typedValue, (isExactIn ? inputToken : outputToken) ?? undefined);\n\n const currencies = {\n [SWAP_FIELD.INPUT]: inputToken ?? undefined,\n [SWAP_FIELD.OUTPUT]: outputToken ?? undefined,\n };\n\n const otherCurrency = (isExactIn ? outputToken : inputToken) ?? undefined;\n\n const [debouncedTypedValue] = useDebounce(\n useMemo(() => [typedValue, otherCurrency], [typedValue, otherCurrency]),\n 600,\n );\n\n const Trade = useBestTrade(\n inputToken,\n outputToken,\n !typedValue || typedValue === \"0\" || debouncedTypedValue !== typedValue ? undefined : debouncedTypedValue,\n );\n\n const poolId = useMemo(() => Trade?.tradePoolId, [Trade]);\n\n // DIP20 not support subaccount balance\n // So useTokenBalance is 0 by default if standard is DIP20\n const { result: __inputTokenSubBalance } = useTokenBalance({\n canisterId: inputToken?.address,\n address: poolId,\n sub,\n refresh,\n });\n const { result: __outputTokenSubBalance } = useTokenBalance({\n canisterId: outputToken?.address,\n address: poolId,\n sub,\n refresh,\n });\n\n const inputTokenSubBalance = useMemo(() => {\n if (!principal) return undefined;\n return __inputTokenSubBalance;\n }, [__inputTokenSubBalance, principal]);\n\n const outputTokenSubBalance = useMemo(() => {\n if (!principal) return undefined;\n return __outputTokenSubBalance;\n }, [__outputTokenSubBalance]);\n\n const { result: unusedBalance } = useUserUnusedBalance(poolId, principal, refresh);\n const { inputTokenUnusedBalance, outputTokenUnusedBalance } = useMemo(() => {\n if (!poolId || !unusedBalance || !inputToken) return {};\n\n const pool = Trade.routes[0].pools[0];\n\n return {\n inputTokenUnusedBalance:\n pool.token0.address === inputToken.address ? unusedBalance.balance0 : unusedBalance.balance1,\n outputTokenUnusedBalance:\n pool.token0.address === inputToken.address ? unusedBalance.balance1 : unusedBalance.balance0,\n };\n }, [Trade, inputToken, unusedBalance]);\n\n const allowanceTokenId = useMemo(() => {\n if (!inputToken) return undefined;\n\n return isUseTransfer(inputToken) ? undefined : inputToken.address;\n }, [inputToken]);\n\n const { result: allowance } = useAllowance({\n canisterId: allowanceTokenId,\n owner: principal?.toString(),\n spender: poolId,\n });\n\n const tokenInsufficient = getTokenInsufficient({\n token: inputToken,\n subAccountBalance: inputTokenSubBalance,\n balance: formatTokenAmount(inputCurrencyBalance?.toExact(), inputToken?.decimals),\n formatTokenAmount: formatTokenAmount(typedValue, inputToken?.decimals).toString(),\n unusedBalance: inputTokenUnusedBalance,\n allowance,\n });\n\n const maxInputAmount = useAllBalanceMaxSpend({\n token: inputToken,\n balance: formatTokenAmount(inputCurrencyBalance?.toExact(), inputToken?.decimals).toString(),\n poolId: Trade?.tradePoolId,\n subBalance: inputTokenSubBalance,\n unusedBalance: inputTokenUnusedBalance,\n allowance,\n });\n\n const inputError = useMemo(() => {\n if (!currencies[SWAP_FIELD.INPUT] || !currencies[SWAP_FIELD.OUTPUT]) return t`Select a token`;\n if (!parsedAmount) return t`Enter an amount`;\n if (!typedValue || typedValue === \"0\") return t`Amount should large than trans fee`;\n if (!inputTokenSubBalance || isNullArgs(inputTokenUnusedBalance)) return t`Swap`;\n if (inputNumberCheck(typedValue) === false) return t`Amount exceeds limit`;\n if (typeof Trade.available === \"boolean\" && !Trade.available) return t`This pool is not available now`;\n if (tokenInsufficient === \"INSUFFICIENT\") return `Insufficient ${inputToken?.symbol} balance`;\n\n return null;\n }, [typedValue, parsedAmount, currencies, inputTokenSubBalance, inputTokenUnusedBalance, Trade, tokenInsufficient]);\n\n return {\n currencies,\n inputError,\n parsedAmount,\n trade: Trade?.trade,\n state: Trade?.state ?? TradeState.INVALID,\n available: Trade?.available,\n tradePoolId: Trade?.tradePoolId,\n routes: Trade?.routes,\n noLiquidity: Trade?.noLiquidity,\n currencyBalances,\n userSlippageTolerance,\n inputToken,\n outputToken,\n inputCurrencyState,\n outputCurrencyState,\n inputTokenUnusedBalance,\n outputTokenUnusedBalance,\n inputTokenSubBalance,\n outputTokenSubBalance,\n inputTokenBalance: formatTokenAmount(inputCurrencyBalance?.toExact(), inputCurrencyBalance?.currency.decimals),\n outputTokenBalance: formatTokenAmount(outputCurrencyBalance?.toExact(), outputCurrencyBalance?.currency.decimals),\n maxInputAmount,\n };\n}\n\nexport function useLoadDefaultParams() {\n const dispatch = useAppDispatch();\n\n const { input, output } = useParsedQueryString() as { input: string | undefined; output: string | undefined };\n\n useEffect(() => {\n if (input !== undefined && isValidPrincipal(input)) {\n dispatch(\n selectCurrency({\n field: SWAP_FIELD.INPUT,\n currencyId: input,\n }),\n );\n }\n\n if (output !== undefined && isValidPrincipal(output)) {\n dispatch(\n selectCurrency({\n field: SWAP_FIELD.OUTPUT,\n currencyId: output,\n }),\n );\n }\n }, [input, output, dispatch]);\n}\n\nexport function usePoolCanisterIdManager(\n key?: string | undefined,\n): [string | undefined, (params: PoolCanisterRecord) => void] {\n const dispatch = useAppDispatch();\n\n const poolIds = useAppSelector((state) => state.swap.poolCanisterIds);\n const poolId = !key ? undefined : poolIds[key];\n\n const updatePoolCanisterId = useCallback(\n ({ key, id }: PoolCanisterRecord) => {\n dispatch(updatePoolCanisterIds({ key, id }));\n },\n [dispatch],\n );\n\n return useMemo(() => [poolId, updatePoolCanisterId], [poolId, updatePoolCanisterId]);\n}\n\nexport function useSwapOutAmount() {\n return useAppSelector((state) => state.swap.swapOutAmount);\n}\n\nexport function getSwapOutAmount(key: string) {\n return store.getState().swap.swapOutAmount[key];\n}\n\nexport function useUpdateSwapOutAmount() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (key: string, amount: bigint | undefined) => {\n dispatch(updateSwapOutAmount({ key, value: amount }));\n },\n [dispatch],\n );\n}\n\nexport function getDecreaseLiquidityAmount(key: string) {\n return store.getState().swap.decreaseLiquidityAmount[key];\n}\n\nexport function useUpdateDecreaseLiquidityAmount() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (key: string, amount0: bigint | undefined, amount1: bigint | undefined) => {\n dispatch(updateDecreaseLiquidityAmount({ key, amount0, amount1 }));\n },\n [dispatch],\n );\n}\n","import { useEffect, useState } from \"react\";\n\n/**\n * Debounces updates to a value.\n * Non-primitives *must* wrap the value in useMemo, or the value will be updated due to referential inequality.\n */\n// modified from https://usehooks.com/useDebounce/\nexport default function useDebounce(value: T, delay: number): T {\n const [debouncedValue, setDebouncedValue] = useState(value);\n\n useEffect(() => {\n // Update debounced value after delay\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n // Cancel the timeout if value changes (also on delay change or unmount)\n // This is how we prevent debounced value from updating if value is changed ...\n // .. within the delay period. Timeout gets cleared and restarted.\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { FIELD } from \"constants/swap\";\n\nexport const updateFiled = createAction<{ field: FIELD; typedValue: string }>(\"swapLiquidity/updateFiled\");\n\nexport const updateLeftRange = createAction(\"swapLiquidity/updateLeftRange\");\n\nexport const updateRightRange = createAction(\"swapLiquidity/updateRightRange\");\n\nexport const updateStartPrice = createAction(\"swapLiquidity/updateStartPrice\");\n\nexport const updateFullRange = createAction(\"swapLiquidity/updateFullRange\");\n\nexport const resetMintState = createAction(\"swapLiquidity/resetMintState\");\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { BURN_FIELD } from \"constants/swap\";\n\nexport interface updateTypedInputPayload {\n independentField: BURN_FIELD;\n typedValue: string;\n}\n\nexport const updateTypedInput = createAction(\"swapV2Burn/updateTypedInput\");\n\nexport const resetBurnState = createAction(\"swapV2Burn/resetBurnState\");\n","import { createAction } from \"@reduxjs/toolkit\";\n\nexport const updateUserSlippage = createAction<{ type: string; value: number }>(\"swapV2Cache/updateUserSlippage\");\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { FIELD } from \"constants/swap\";\nimport { UserPosition } from \"types/swapv2\";\n\nexport const updateUserPositions = createAction<(UserPosition | undefined)[]>(\"swapV2Liquidity/updateUserPositions\");\n\nexport const updateFiled = createAction<{ field: FIELD; typedValue: string }>(\"swapV2Liquidity/updateFiled\");\n\nexport const updateLeftRange = createAction(\"swapV2Liquidity/updateLeftRange\");\n\nexport const updateRightRange = createAction(\"swapV2Liquidity/updateRightRange\");\n\nexport const updateStartPrice = createAction(\"swapV2Liquidity/updateStartPrice\");\n\nexport const updateFullRange = createAction(\"swapV2Liquidity/updateFullRange\");\n\nexport const resetMintState = createAction(\"swapV2Liquidity/resetMintState\");\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { TOKEN_STANDARD } from \"constants/tokens\";\n\nexport const updateTokenStandards =\n createAction<{ canisterId: string; standard: TOKEN_STANDARD }[]>(\"token/updateTokenStandard\");\n\nexport const updateAllTokenIds = createAction(\"token/updateAllTokenIds\");\n","import { useCallback, useMemo } from \"react\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport store from \"store/index\";\nimport { TOKEN_STANDARD } from \"constants/tokens\";\nimport { ICP } from \"@icpswap/tokens\";\nimport { registerTokens } from \"@icpswap/token-adapter\";\nimport { updateTokenStandards } from \"./actions\";\n\ninterface useUpdateTokenStandardProps {\n canisterId: string;\n standard: TOKEN_STANDARD;\n}\n\nexport function useUpdateTokenStandard() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (standards: useUpdateTokenStandardProps[]) => {\n const __standards = standards.map(({ standard, canisterId }) => {\n // Register icp as icrc2 token\n if (canisterId === ICP.address) {\n return { canisterId, standard: TOKEN_STANDARD.ICRC2 };\n // Register usdc as icrc2 token\n }\n\n if (\n canisterId === \"xevnm-gaaaa-aaaar-qafnq-cai\" ||\n canisterId === \"yfumr-cyaaa-aaaar-qaela-cai\" ||\n canisterId === \"vgqnj-miaaa-aaaal-qaapa-cai\"\n ) {\n return { canisterId, standard: TOKEN_STANDARD.ICRC2 };\n }\n\n if (canisterId === \"qfr6e-biaaa-aaaak-qafuq-cai\") {\n return { canisterId, standard: TOKEN_STANDARD.ICRC1 };\n }\n\n return { canisterId, standard };\n });\n\n dispatch(updateTokenStandards(__standards));\n registerTokens(__standards);\n },\n [dispatch],\n );\n}\n\nexport function useTokenStandard(canisterId: string | undefined) {\n const standards = useAppSelector((state) => state.tokenCache.standards);\n\n return useMemo(() => {\n if (canisterId) {\n return standards[canisterId];\n }\n }, [canisterId, standards]);\n}\n\nexport function getTokenStandard(canisterId: string | undefined) {\n const {\n tokenCache: { standards },\n } = store.getState();\n\n if (canisterId) {\n return standards[canisterId];\n }\n}\n\nexport function useTokenStandards() {\n return useAppSelector((state) => state.tokenCache.standards);\n}\n\nexport function useAllTokenIds() {\n return useAppSelector((state) => state.tokenCache.allTokenIds);\n}\n","/* eslint-disable guard-for-in */\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport type { TransactionResponse } from \"@ethersproject/providers\";\nimport { ChainId } from \"@icpswap/constants\";\nimport { SUPPORTED_CHAINS } from \"constants/web3\";\nimport { useWeb3React } from \"@web3-react/core\";\nimport { useCallback, useMemo } from \"react\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport { ERC20Token } from \"@icpswap/swap-sdk\";\n\nimport { addTransaction, cancelTransaction, removeTransaction } from \"./reducer\";\nimport { TransactionDetails, TransactionInfo, TransactionType } from \"./types\";\n\n// helper that can take a ethers library transaction response and add it to the list of transactions\nexport function useTransactionAdder(): (\n response: TransactionResponse,\n info: TransactionInfo,\n deadline?: number,\n) => void {\n const { chainId, account } = useWeb3React();\n const dispatch = useAppDispatch();\n\n return useCallback(\n (response: TransactionResponse, info: TransactionInfo, deadline?: number) => {\n if (!account) return;\n if (!chainId) return;\n\n const { hash, nonce } = response;\n if (!hash) {\n throw Error(\"No transaction hash found.\");\n }\n dispatch(addTransaction({ hash, from: account, info, chainId, nonce, deadline }));\n },\n [account, chainId, dispatch],\n );\n}\n\nexport function useTransactionRemover() {\n const { chainId, account } = useWeb3React();\n const dispatch = useAppDispatch();\n\n return useCallback(\n (hash: string) => {\n if (!account) return;\n if (!chainId) return;\n\n dispatch(removeTransaction({ hash, chainId }));\n },\n [account, chainId, dispatch],\n );\n}\n\nexport function useTransactionCanceller() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (hash: string, chainId: number, cancelHash: string) => {\n dispatch(cancelTransaction({ hash, chainId, cancelHash }));\n },\n [dispatch],\n );\n}\n\nexport function useMultichainTransactions(): [TransactionDetails, ChainId][] {\n const state = useAppSelector((state) => state.transactions);\n return SUPPORTED_CHAINS.flatMap((chainId) =>\n state[chainId] ? Object.values(state[chainId]).map((tx): [TransactionDetails, ChainId] => [tx, chainId]) : [],\n );\n}\n\n// returns all the transactions for the current chain\nfunction useAllTransactions(): { [txHash: string]: TransactionDetails } {\n const { chainId } = useWeb3React();\n\n const state = useAppSelector((state) => state.transactions);\n\n return chainId ? state[chainId] ?? {} : {};\n}\n\nexport function useTransaction(transactionHash?: string): TransactionDetails | undefined {\n const allTransactions = useAllTransactions();\n\n if (!transactionHash) {\n return undefined;\n }\n\n return allTransactions[transactionHash];\n}\n\nexport function isPendingTx(tx: TransactionDetails): boolean {\n return !tx.receipt && !tx.cancelled;\n}\n\nexport function useIsTransactionPending(transactionHash?: string): boolean {\n const transactions = useAllTransactions();\n\n if (!transactionHash || !transactions[transactionHash]) return false;\n\n return isPendingTx(transactions[transactionHash]);\n}\n\nexport function useIsTransactionConfirmed(transactionHash?: string): boolean {\n const transactions = useAllTransactions();\n\n if (!transactionHash || !transactions[transactionHash]) return false;\n\n return Boolean(transactions[transactionHash].receipt);\n}\n\n/**\n * Returns whether a transaction happened in the last day (86400 seconds * 1000 milliseconds / second)\n * @param tx to check for recency\n */\nfunction isTransactionRecent(tx: TransactionDetails): boolean {\n return new Date().getTime() - tx.addedTime < 86_400_000;\n}\n\nfunction usePendingApprovalAmount(token?: ERC20Token, spender?: string): BigNumber | undefined {\n const allTransactions = useAllTransactions();\n return useMemo(() => {\n if (typeof token?.address !== \"string\" || typeof spender !== \"string\") {\n return undefined;\n }\n for (const txHash in allTransactions) {\n const tx = allTransactions[txHash];\n if (!tx || tx.receipt || tx.info.type !== TransactionType.APPROVAL) continue;\n if (tx.info.spender === spender && tx.info.tokenAddress === token.address && isTransactionRecent(tx)) {\n return BigNumber.from(tx.info.amount);\n }\n }\n return undefined;\n }, [allTransactions, spender, token?.address]);\n}\n\n// returns whether a token has a pending approval transaction\nexport function useHasPendingApproval(token?: ERC20Token, spender?: string): boolean {\n return usePendingApprovalAmount(token, spender)?.gt(0) ?? false;\n}\n\nexport function useHasPendingRevocation(token?: ERC20Token, spender?: string): boolean {\n return usePendingApprovalAmount(token, spender)?.eq(0) ?? false;\n}\n\nexport function usePendingTransactions(): TransactionDetails[] {\n const allTransactions = useAllTransactions();\n const { account } = useWeb3React();\n\n return useMemo(\n () => Object.values(allTransactions).filter((tx) => tx.from === account && isPendingTx(tx)),\n [account, allTransactions],\n );\n}\n","/* eslint-disable no-param-reassign */\nimport { createSlice } from \"@reduxjs/toolkit\";\nimport { ChainId } from \"@icpswap/constants\";\n\nimport { SerializableTransactionReceipt, TransactionDetails, TransactionInfo } from \"./types\";\n\nexport interface TransactionsState {\n [chainId: number]: {\n [txHash: string]: TransactionDetails;\n };\n}\n\ninterface AddTransactionPayload {\n chainId: ChainId;\n from: string;\n hash: string;\n info: TransactionInfo;\n nonce?: number;\n deadline?: number;\n receipt?: SerializableTransactionReceipt;\n}\n\nexport const transactionsState: TransactionsState = {};\n\nconst transactionSlice = createSlice({\n name: \"transactions\",\n initialState: transactionsState,\n reducers: {\n addTransaction(\n transactions,\n { payload: { chainId, from, hash, info, nonce, deadline, receipt } }: { payload: AddTransactionPayload },\n ) {\n if (transactions[chainId]?.[hash]) {\n throw Error(\"Attempted to add existing transaction.\");\n }\n const txs = transactions[chainId] ?? {};\n txs[hash] = { hash, info, from, addedTime: Date.now(), nonce, deadline, receipt };\n transactions[chainId] = txs;\n },\n clearAllTransactions(transactions, { payload: { chainId } }) {\n if (!transactions[chainId]) return;\n transactions[chainId] = {};\n },\n removeTransaction(transactions, { payload: { chainId, hash } }) {\n if (transactions[chainId][hash]) {\n delete transactions[chainId][hash];\n }\n },\n checkedTransaction(transactions, { payload: { chainId, hash, blockNumber } }) {\n const tx = transactions[chainId]?.[hash];\n if (!tx) {\n return;\n }\n if (!tx.lastCheckedBlockNumber) {\n tx.lastCheckedBlockNumber = blockNumber;\n } else {\n tx.lastCheckedBlockNumber = Math.max(blockNumber, tx.lastCheckedBlockNumber);\n }\n },\n finalizeTransaction(transactions, { payload: { hash, chainId, receipt } }) {\n const tx = transactions[chainId]?.[hash];\n if (!tx) {\n return;\n }\n tx.receipt = receipt;\n tx.confirmedTime = Date.now();\n },\n cancelTransaction(transactions, { payload: { hash, chainId, cancelHash } }) {\n const tx = transactions[chainId]?.[hash];\n\n if (tx) {\n delete transactions[chainId]?.[hash];\n transactions[chainId][cancelHash] = {\n ...tx,\n hash: cancelHash,\n cancelled: true,\n };\n }\n },\n },\n});\n\nexport const {\n addTransaction,\n clearAllTransactions,\n checkedTransaction,\n finalizeTransaction,\n removeTransaction,\n cancelTransaction,\n} = transactionSlice.actions;\n\nexport default transactionSlice.reducer;\n","export interface SerializableTransactionReceipt {\n to: string;\n from: string;\n contractAddress: string;\n transactionIndex: number;\n blockHash: string;\n transactionHash: string;\n blockNumber: number;\n status?: number;\n}\n\n/**\n * Be careful adding to this enum, always assign a unique value (typescript will not prevent duplicate values).\n * These values is persisted in state and if you change the value it will cause errors\n */\nexport enum TransactionType {\n APPROVAL = 0,\n SWAP,\n DEPOSIT_LIQUIDITY_STAKING,\n WITHDRAW_LIQUIDITY_STAKING,\n CLAIM,\n VOTE,\n DELEGATE,\n WRAP,\n CREATE_V3_POOL,\n ADD_LIQUIDITY_V3_POOL,\n ADD_LIQUIDITY_V2_POOL,\n MIGRATE_LIQUIDITY_V3,\n COLLECT_FEES,\n REMOVE_LIQUIDITY_V3,\n SUBMIT_PROPOSAL,\n QUEUE,\n EXECUTE,\n BUY,\n SEND,\n RECEIVE,\n MINT,\n BURN,\n BORROW,\n REPAY,\n DEPLOY,\n CANCEL,\n LIMIT,\n}\n\ninterface BaseTransactionInfo {\n type: TransactionType;\n}\n\nexport interface QueueTransactionInfo extends BaseTransactionInfo {\n type: TransactionType.QUEUE;\n governorAddress: string;\n proposalId: number;\n}\n\nexport interface ExecuteTransactionInfo extends BaseTransactionInfo {\n type: TransactionType.EXECUTE;\n governorAddress: string;\n proposalId: number;\n}\n\nexport interface DelegateTransactionInfo extends BaseTransactionInfo {\n type: TransactionType.DELEGATE;\n delegatee: string;\n}\n\nexport interface ApproveTransactionInfo extends BaseTransactionInfo {\n type: TransactionType.APPROVAL;\n tokenAddress: string;\n spender: string;\n amount: string;\n}\n\ninterface DepositLiquidityStakingTransactionInfo {\n type: TransactionType.DEPOSIT_LIQUIDITY_STAKING;\n token0Address: string;\n token1Address: string;\n}\n\ninterface WithdrawLiquidityStakingTransactionInfo {\n type: TransactionType.WITHDRAW_LIQUIDITY_STAKING;\n token0Address: string;\n token1Address: string;\n}\n\nexport interface WrapTransactionInfo {\n type: TransactionType.WRAP;\n unwrapped: boolean;\n currencyAmountRaw: string;\n chainId?: number;\n}\n\nexport interface ClaimTransactionInfo {\n type: TransactionType.CLAIM;\n recipient: string;\n uniAmountRaw?: string;\n}\n\nexport interface CreateV3PoolTransactionInfo {\n type: TransactionType.CREATE_V3_POOL;\n baseCurrencyId: string;\n quoteCurrencyId: string;\n}\n\nexport interface AddLiquidityV3PoolTransactionInfo {\n type: TransactionType.ADD_LIQUIDITY_V3_POOL;\n createPool: boolean;\n baseCurrencyId: string;\n quoteCurrencyId: string;\n feeAmount: number;\n expectedAmountBaseRaw: string;\n expectedAmountQuoteRaw: string;\n}\n\nexport interface AddLiquidityV2PoolTransactionInfo {\n type: TransactionType.ADD_LIQUIDITY_V2_POOL;\n baseCurrencyId: string;\n quoteCurrencyId: string;\n expectedAmountBaseRaw: string;\n expectedAmountQuoteRaw: string;\n}\n\nexport interface MigrateV2LiquidityToV3TransactionInfo {\n type: TransactionType.MIGRATE_LIQUIDITY_V3;\n baseCurrencyId: string;\n quoteCurrencyId: string;\n isFork: boolean;\n}\n\nexport interface CollectFeesTransactionInfo {\n type: TransactionType.COLLECT_FEES;\n currencyId0: string;\n currencyId1: string;\n expectedCurrencyOwed0: string;\n expectedCurrencyOwed1: string;\n}\n\nexport interface RemoveLiquidityV3TransactionInfo {\n type: TransactionType.REMOVE_LIQUIDITY_V3;\n baseCurrencyId: string;\n quoteCurrencyId: string;\n expectedAmountBaseRaw: string;\n expectedAmountQuoteRaw: string;\n}\n\ninterface SubmitProposalTransactionInfo {\n type: TransactionType.SUBMIT_PROPOSAL;\n}\n\nexport interface SendTransactionInfo {\n type: TransactionType.SEND;\n currencyId: string;\n amount: string;\n recipient: string;\n}\n\nexport type TransactionInfo =\n | ApproveTransactionInfo\n | ClaimTransactionInfo\n | QueueTransactionInfo\n | ExecuteTransactionInfo\n | DelegateTransactionInfo\n | DepositLiquidityStakingTransactionInfo\n | WithdrawLiquidityStakingTransactionInfo\n | WrapTransactionInfo\n | CreateV3PoolTransactionInfo\n | AddLiquidityV3PoolTransactionInfo\n | AddLiquidityV2PoolTransactionInfo\n | MigrateV2LiquidityToV3TransactionInfo\n | CollectFeesTransactionInfo\n | RemoveLiquidityV3TransactionInfo\n | SubmitProposalTransactionInfo\n | SendTransactionInfo;\n\nexport interface TransactionDetails {\n hash: string;\n receipt?: SerializableTransactionReceipt;\n lastCheckedBlockNumber?: number;\n addedTime: number;\n confirmedTime?: number;\n deadline?: number;\n from: string;\n info: TransactionInfo;\n nonce?: number;\n cancelled?: boolean;\n}\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { BTCAddressType, TxState } from \"types/ckBTC\";\nimport { WalletSortType, SortBalanceEnum } from \"types/index\";\n\nexport const updateTaggedTokens = createAction(\"wallet/updateTaggedTokens\");\n\nexport const deleteTaggedTokens = createAction(\"wallet/deleteTaggedTokens\");\n\nexport const updateWalletSortType = createAction(\"wallet/updateWalletSortType\");\n\nexport const updateSortBalance = createAction(\"wallet/updateSortBalance\");\n\nexport const updateCK_BTCAddresses = createAction<{\n principal: string;\n address: string;\n type: BTCAddressType;\n}>(\"wallet/updateCK_BTCAddresses\");\n\nexport const updateRetrieveState = createAction<{\n principal: string;\n block_index: number;\n state: TxState;\n txid: string;\n value: string;\n}>(\"wallet/updateRetrieveState\");\n","import { useCallback, useMemo } from \"react\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport { RetrieveBtcStatus, TxState } from \"types/ckBTC\";\nimport { Principal } from \"@dfinity/principal\";\nimport { SortBalanceEnum, WalletSortType } from \"types/index\";\nimport {\n updateTaggedTokens,\n deleteTaggedTokens,\n updateCK_BTCAddresses,\n updateRetrieveState,\n updateWalletSortType,\n updateSortBalance,\n} from \"./actions\";\n\nexport function toHexString(byteArray: number[]) {\n return Array.from(byteArray, (byte) => {\n return `0${(byte & 0xff).toString(16)}`.slice(-2);\n }).join(\"\");\n}\n\nexport function useTaggedTokens() {\n return useAppSelector((state) => state.wallet.taggedTokens);\n}\n\nexport function useUpdateTaggedTokenCallback() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (tokens: string[]) => {\n dispatch(updateTaggedTokens(tokens));\n },\n [dispatch],\n );\n}\n\nexport function useDeleteTaggedTokenCallback() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (tokens: string[]) => {\n dispatch(deleteTaggedTokens(tokens));\n },\n [dispatch],\n );\n}\n\nexport function useTaggedTokenManager() {\n const taggedTokens = useTaggedTokens();\n\n const updateTaggedTokens = useUpdateTaggedTokenCallback();\n const deleteTaggedTokens = useDeleteTaggedTokenCallback();\n\n return useMemo(\n () => ({ taggedTokens, updateTaggedTokens, deleteTaggedTokens }),\n [taggedTokens, updateTaggedTokens, deleteTaggedTokens],\n );\n}\n\nexport function useUserBTCDepositAddress(principal: string | undefined) {\n return useAppSelector((state) => state.wallet.ckBTCAddresses)[`${principal}_deposit`];\n}\n\nexport function useUserBTCWithdrawAddress(principal: string | undefined) {\n const address = useAppSelector((state) => state.wallet.ckBTCAddresses)[`${principal}_withdraw`];\n if (!address) return undefined;\n const { owner, subaccount } = JSON.parse(address) as { owner: string; subaccount: number[] | undefined };\n\n return {\n owner,\n subaccount: subaccount && subaccount.length > 0 ? [Uint8Array.from(subaccount)] : [],\n };\n}\n\nexport function useUpdateUserBTCDepositAddress() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (principal: string, address: string) => {\n dispatch(updateCK_BTCAddresses({ principal, address, type: \"deposit\" }));\n },\n [dispatch],\n );\n}\n\nexport function useUpdateUserBTCWithdrawAddress() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (principal: string, owner: Principal, subaccount: Uint8Array[] | []) => {\n const address = JSON.stringify({ owner: owner.toString(), subaccount: [...(subaccount[0] ?? [])] });\n dispatch(updateCK_BTCAddresses({ principal, address, type: \"withdraw\" }));\n },\n [dispatch],\n );\n}\n\nexport function useUpdateUserTx() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (principal: string, block_index: bigint, status: undefined | RetrieveBtcStatus, value: string | undefined) => {\n const txid = status ? Object.values(status)[0]?.txid : undefined;\n const txIdString = txid ? toHexString([...txid].reverse()) : \"\";\n\n dispatch(\n updateRetrieveState({\n principal,\n block_index: Number(block_index),\n txid: txIdString,\n state: (status ? Object.keys(status)[0] : \"\") as TxState,\n value: value ?? \"\",\n }),\n );\n },\n [dispatch],\n );\n}\n\nexport function useUserTxs(principal: string | undefined) {\n const states = useAppSelector((state) => state.wallet.retrieveState);\n\n return useMemo(() => {\n if (principal && states) {\n return states[principal];\n }\n\n return undefined;\n }, [principal, states]);\n}\n\nexport function useWalletSortType() {\n return useAppSelector((state) => state.wallet.sort);\n}\n\nexport function useWalletSortManager() {\n const sortType = useWalletSortType();\n const dispatch = useAppDispatch();\n\n const update = useCallback(\n (val: WalletSortType) => {\n dispatch(updateWalletSortType(val));\n },\n [dispatch],\n );\n\n return useMemo(() => ({ sort: sortType, updateWalletSortType: update }), [update, sortType]);\n}\n\nexport function useSortBalanceValue() {\n return useAppSelector((state) => state.wallet.sortBalance);\n}\n\nexport function useSortBalanceManager() {\n const sortBalance = useSortBalanceValue();\n const dispatch = useAppDispatch();\n\n const update = useCallback(\n (val: SortBalanceEnum) => {\n dispatch(updateSortBalance(val));\n },\n [dispatch],\n );\n\n return useMemo(() => ({ sortBalance, updateSortBalance: update }), [update, sortBalance]);\n}\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { TX } from \"types/web3\";\nimport { StoredWithdrawTxValue } from \"types/ckETH\";\n\nexport const updateTX = createAction<{ principal: string; tx: TX }>(\"web3/updateTX\");\n\nexport const updateErc20TX = createAction<{ principal: string; ledger_id: string; tx: TX }>(\"web3/updateErc20TX\");\n\nexport const updateWithdrawTX = createAction<{ principal: string; tx: StoredWithdrawTxValue }>(\"web3/updateWithdrawTX\");\n","import type { Ed25519KeyIdentity, Secp256k1KeyIdentity } from \"@dfinity/identity\";\nimport { ActorIdentity } from \"@icpswap/types\";\n\nexport enum ResultStatus {\n ERROR = \"err\",\n OK = \"ok\",\n}\n\nexport type StatusResult = {\n readonly status: ResultStatus;\n readonly data: T | string;\n};\n\nexport type CallResult = {\n readonly result: ApiResult;\n readonly loading: boolean;\n};\n\nexport type ApiResult = undefined | T;\n\nexport type PaginationResult = {\n totalElements: number;\n offset: number;\n limit: number;\n content: T[];\n};\n\nexport type DynamicObject = {\n [key: string]: any;\n};\n\nexport type ICPIdentity = Ed25519KeyIdentity | Secp256k1KeyIdentity;\n\nexport type Identity = ActorIdentity;\n\nexport type Override = Omit & S;\n\nexport type WalletSortType = \"Default\" | \"High\" | \"Low\";\n\nexport enum SortBalanceEnum {\n ZERO = \"ZERO\",\n ONE = \"ONE\",\n TEN = \"TEN\",\n ALL = \"ALL\",\n}\n","import { Override, StakingPoolControllerPoolInfo, StakingPoolUserInfo } from \"@icpswap/types\";\n\nexport type UnusedBalance = Override<\n StakingPoolControllerPoolInfo,\n { poolId: string; balance: bigint; rewardTokenId: string }\n>;\n\nexport enum STATE {\n LIVE = \"LIVE\",\n UPCOMING = \"UNSTART\",\n FINISHED = \"FINISHED\",\n}\n\nexport enum FilterState {\n \"ALL\" = \"ALL\",\n \"NOT_STARTED\" = \"NOT_STARTED\",\n \"LIVE\" = \"LIVE\",\n \"FINISHED\" = \"FINISHED\",\n \"CLOSED\" = \"CLOSED\",\n \"YOUR\" = \"YOUR\",\n}\n\nexport type UserPendingRewards = Override<\n StakingPoolUserInfo,\n { poolId: string; rewardAmount: bigint; stakingAmount: bigint; rewardTokenId: string; stakeTokenId: string }\n>;\n","import { FarmInfoWithId, Override, UserPositionInfo } from \"@icpswap/types\";\n\nexport type PositionDetail = {\n pool: string;\n token0: string;\n token1: string;\n fee: string;\n tickUpper: bigint;\n tokensOwed0: bigint;\n tokensOwed1: bigint;\n feeGrowthInside1LastX128: bigint;\n liquidity: bigint;\n feeGrowthInside0LastX128: bigint;\n tickLower: bigint;\n positionId: string;\n};\n\nexport type UserPosition = Override<\n UserPositionInfo,\n { index: number; id: string; token0: string; token1: string; fee: string }\n>;\n\nexport type UserPositionForFarm = Override<\n UserPositionInfo,\n { index: number; id: string; token0: string; token1: string; fee: string; farm: FarmInfoWithId }\n>;\n\nexport enum PositionFilterState {\n Default = \"Default\",\n All = \"All\",\n InRanges = \"In ranges\",\n OutOfRanges = \"Out of ranges\",\n Closed = \"Closed\",\n}\n\nexport enum PositionSort {\n Default = \"Default\",\n PositionValue = \"Position value\",\n FeesValue = \"Uncollected fees\",\n}\n\nexport type PositionKey = string;\n","import { AuthClient, LocalStorage } from \"@dfinity/auth-client\";\nimport { Actor, ActorSubclass, HttpAgent } from \"@dfinity/agent\";\nimport type { Identity } from \"@dfinity/agent\";\nimport { requestTransfer } from \"@nfid/wallet\";\nimport { defaultWindowFeatures } from \"@nfid/core\";\nimport { type CreateActorArgs, IConnector, ConnectorType, WalletConnectorConfig } from \"./connectors\";\n\nconst APPLICATION_NAME = \"ICPSwap\";\nconst APPLICATION_LOGO_URL = \"https://r7ftp-xaaaa-aaaag-qbbsq-cai.raw.ic0.app/ICPSwap_96x96.png\";\nconst APP_META = `applicationName=${APPLICATION_NAME}&applicationLogo=${APPLICATION_LOGO_URL}`;\nconst AUTH_PATH = `/authenticate/?${ APP_META }#authorize`;\nconst NFID_ORIGIN = \"https://nfid.one\";\nconst NF_ID_AUTH_URL = NFID_ORIGIN + AUTH_PATH;\n\nexport const NF_ID_LOGIN_CONFIG = {\n maxTimeToLive: BigInt(Date.now() + 30 * 24 * 60 * 60 * 1e9),\n identityProvider: NF_ID_AUTH_URL,\n windowOpenerFeatures:\n `left=${window.screen.width / 2 - 525 / 2}, ` +\n `top=${window.screen.height / 2 - 705 / 2},` +\n `toolbar=0,location=0,menubar=0,width=525,height=705`,\n};\n\nexport class NF_IDConnector implements IConnector {\n private config: {\n whitelist: Array;\n host: string;\n providerUrl: string;\n dev: boolean;\n };\n\n private identity?: Identity;\n\n private principal?: string;\n\n private client?: AuthClient;\n\n public type = ConnectorType.NFID;\n\n public get getPrincipal() {\n return this.principal;\n }\n\n constructor(config: WalletConnectorConfig) {\n this.config = {\n whitelist: config.whitelist,\n host: config.host,\n providerUrl: NF_ID_AUTH_URL,\n dev: false,\n };\n }\n\n async init() {\n this.client = this.client\n ? this.client\n : await AuthClient.create({\n storage: new LocalStorage(),\n idleOptions: {\n idleTimeout: 30 * 24 * 3_600_000,\n disableIdle: true,\n disableDefaultIdleCallback: true,\n },\n });\n\n const isConnected = await this.isConnected();\n\n if (isConnected) {\n this.identity = this.client.getIdentity();\n this.principal = this.identity?.getPrincipal().toString();\n }\n\n return true;\n }\n\n async isConnected(): Promise {\n return !!(await this.client?.isAuthenticated());\n }\n\n async createActor({\n canisterId,\n interfaceFactory,\n }: CreateActorArgs): Promise | undefined> {\n const agent = new HttpAgent({\n ...this.config,\n identity: this.identity,\n });\n\n if (this.config.dev) {\n // Fetch root key for certificate validation during development\n agent.fetchRootKey().catch((err) => {\n console.warn(\"Unable to fetch root key. Check to ensure that your local replica is running\");\n console.error(err);\n });\n }\n\n return Actor.createActor(interfaceFactory, {\n agent,\n canisterId,\n });\n }\n\n async connect() {\n await new Promise((resolve, reject) => {\n this.client?.login({\n onSuccess: () => resolve(true),\n onError: reject,\n ...NF_ID_LOGIN_CONFIG,\n });\n });\n const identity = this.client?.getIdentity();\n const principal = identity?.getPrincipal().toString();\n\n this.identity = identity;\n this.principal = principal;\n return true;\n }\n\n async disconnect() {\n await this.client?.logout();\n }\n\n async expired() {\n return false;\n }\n}\n\nexport const NF_ID = {\n connector: NF_IDConnector,\n id: \"NF ID\",\n};\n\nconst REQ_TRANSFER = \"wallet/request-transfer\";\nconst PROVIDER_URL = new URL(`${NFID_ORIGIN}/${REQ_TRANSFER}?${APP_META}`);\n\nexport const NFIDRequestTransfer = async ({ to, amount }: { to: string; amount: number }) =>\n await requestTransfer(\n { to, amount },\n {\n provider: PROVIDER_URL,\n windowFeatures: defaultWindowFeatures,\n },\n );\n","import { getAllCanisters } from \"store/allCanisters\";\nimport { ALL_CANISTER_IDS } from \"./canister\";\nimport { LEDGER_CANISTER_ID } from \"./icp\";\nimport { ckBTC_MINTER_ID } from \"./ckBTC\";\n\nexport const DelegationIds = [...ALL_CANISTER_IDS, LEDGER_CANISTER_ID, ckBTC_MINTER_ID];\n\nexport const MAX_DELEGATION_TARGETS = 999;\n\nexport async function getDelegationIds() {\n const canisterIds = [...ALL_CANISTER_IDS, LEDGER_CANISTER_ID, ckBTC_MINTER_ID];\n const stateCanisterIds = await getAllCanisters();\n const delegationIds = [...new Set(canisterIds.concat(stateCanisterIds ?? []))];\n return delegationIds.length > MAX_DELEGATION_TARGETS ? delegationIds.slice(0, MAX_DELEGATION_TARGETS) : delegationIds;\n}\n","import { AuthClient } from \"@dfinity/auth-client\";\nimport { Actor, ActorSubclass, HttpAgent } from \"@dfinity/agent\";\nimport type { Identity } from \"@dfinity/agent\";\nimport { IConnector, CreateActorArgs, ConnectorType, type WalletConnectorConfig } from \"./connectors\";\n\nconst iiExpireTime = 7 * 24 * 3600; // seconds\n\nexport class InternetIdentityConnector implements IConnector {\n private config: {\n whitelist: Array;\n host: string;\n providerUrl: string;\n dev: boolean;\n };\n\n private identity?: Identity;\n\n private principal?: string;\n\n private client?: AuthClient;\n\n public type = ConnectorType.IC;\n\n public get getPrincipal() {\n return this.principal;\n }\n\n constructor(config: WalletConnectorConfig) {\n this.config = {\n whitelist: config.whitelist,\n host: config.host,\n providerUrl: \"https://identity.ic0.app\",\n dev: false,\n };\n }\n\n async init() {\n this.client = await AuthClient.create({\n idleOptions: {\n disableDefaultIdleCallback: true,\n },\n });\n const isConnected = await this.isConnected();\n\n if (isConnected) {\n this.identity = this.client.getIdentity();\n this.principal = this.identity?.getPrincipal().toString();\n }\n\n return true;\n }\n\n async isConnected(): Promise {\n return !!(await this.client?.isAuthenticated());\n }\n\n async createActor({\n canisterId,\n interfaceFactory,\n }: CreateActorArgs): Promise | undefined> {\n const agent = new HttpAgent({\n ...this.config,\n identity: this.identity,\n });\n\n if (this.config.dev) {\n // Fetch root key for certificate validation during development\n agent.fetchRootKey().catch((err) => {\n console.warn(\"Unable to fetch root key. Check to ensure that your local replica is running\");\n console.error(err);\n });\n }\n\n return Actor.createActor(interfaceFactory, {\n agent,\n canisterId,\n });\n }\n\n async connect() {\n await new Promise((resolve, reject) => {\n this.client?.login({\n identityProvider: this.config.providerUrl,\n onSuccess: () => resolve(true),\n onError: reject,\n maxTimeToLive: BigInt(iiExpireTime * 1000 * 1000 * 1000),\n });\n });\n window.localStorage.setItem(\"ii-expire-time\", (new Date().getTime() + iiExpireTime * 1000).toString());\n const identity = this.client?.getIdentity();\n const principal = identity?.getPrincipal().toString();\n this.identity = identity;\n this.principal = principal;\n return true;\n }\n\n async disconnect() {\n await this.client?.logout();\n }\n\n async expired() {\n const iiExpireTime = window.localStorage.getItem(\"ii-expire-time\");\n if (!iiExpireTime) return true;\n return new Date().getTime() >= Number(iiExpireTime);\n }\n}\n\nexport const InternetIdentity = {\n connector: InternetIdentityConnector,\n id: \"ii\",\n type: ConnectorType.IC,\n};\n","// @ts-ignore\nimport { StoicIdentity } from \"ic-stoic-identity\";\nimport { Actor, ActorSubclass, HttpAgent } from \"@dfinity/agent\";\nimport { Connector } from \"@icpswap/actor\";\nimport { type CreateActorArgs, IConnector, ConnectorType, type WalletConnectorConfig } from \"./connectors\";\n\nexport class StoicConnector implements IConnector {\n private config: {\n whitelist: Array;\n providerUrl: string;\n host: string;\n dev: boolean;\n };\n\n private identity?: any;\n\n private principal?: string;\n\n public type = ConnectorType.STOIC;\n\n public get getPrincipal() {\n return this.principal;\n }\n\n constructor(config: WalletConnectorConfig) {\n this.config = {\n whitelist: config.whitelist,\n host: config.host,\n providerUrl: \"https://www.stoicwallet.com\",\n dev: false,\n };\n }\n\n async init() {\n const identity = await StoicIdentity.load(this.config.providerUrl);\n\n if (identity) {\n this.identity = identity;\n this.principal = identity.getPrincipal().toText();\n }\n\n return true;\n }\n\n async createActor({\n canisterId,\n interfaceFactory,\n }: CreateActorArgs): Promise | undefined> {\n const agent = new HttpAgent({\n ...this.config,\n identity: this.identity,\n });\n\n // Fetch root key for certificate validation during development\n if (this.config.dev) {\n agent.fetchRootKey().catch((err) => {\n console.warn(\"Unable to fetch root key. Check to ensure that your local replica is running\");\n console.error(err);\n });\n }\n\n return Actor.createActor(interfaceFactory, {\n agent,\n canisterId,\n });\n }\n\n async isConnected() {\n const identity = await StoicIdentity.load();\n return !!identity;\n }\n\n async connect() {\n this.identity = await StoicIdentity.connect();\n this.principal = this.identity.getPrincipal().toText();\n return true;\n }\n\n async disconnect() {\n await StoicIdentity.disconnect();\n }\n\n async expired() {\n return false;\n }\n}\n\nexport const StoicWallet = {\n connector: StoicConnector,\n id: \"stoic\",\n type: Connector.STOIC,\n};\n","import { ActorSubclass } from \"@dfinity/agent\";\nimport { getStoreWalletUnlocked } from \"store/auth/hooks\";\nimport { type CreateActorArgs, IConnector, ConnectorType, type WalletConnectorConfig } from \"./connectors\";\n\nconst MAX_PLUG_WHITELIST_NUMBER = 200;\n\nexport class PlugConnector implements IConnector {\n private config: {\n whitelist: Array;\n providerUrl: string;\n host: string;\n dev: boolean;\n };\n\n private principal?: string;\n\n public type = ConnectorType.PLUG;\n\n public get getPrincipal() {\n return this.principal;\n }\n\n constructor(config: WalletConnectorConfig) {\n this.config = {\n whitelist: config.whitelist,\n host: config.host,\n providerUrl: \"\",\n dev: false,\n };\n }\n\n async init() {\n return true;\n }\n\n async createActor({\n canisterId,\n interfaceFactory,\n }: CreateActorArgs): Promise | undefined> {\n return await window.ic.plug.createActor({\n canisterId,\n interfaceFactory,\n });\n }\n\n async isConnected() {\n const isUnLocked = getStoreWalletUnlocked();\n\n if (typeof isUnLocked === \"boolean\" && !isUnLocked) {\n return false;\n }\n\n if (window.ic && window.ic.plug) {\n return await window.ic.plug.isConnected();\n }\n\n return false;\n }\n\n async connect() {\n // Fix tracing message if plug is uninstalled but still connect to\n if (!window.ic?.plug) {\n return false;\n }\n\n if (await this.isConnected()) {\n this.principal = window.ic.plug.principalId;\n } else {\n await window.ic.plug.requestConnect({\n whitelist:\n this.config.whitelist.length > MAX_PLUG_WHITELIST_NUMBER\n ? this.config.whitelist.slice(0, MAX_PLUG_WHITELIST_NUMBER)\n : this.config.whitelist,\n });\n this.principal = window.ic.plug.principalId;\n }\n\n return true;\n }\n\n async disconnect() {\n await window.ic.plug.disconnect();\n }\n\n async expired() {\n return false;\n }\n}\n","import { AuthClient } from \"@honopu/auth-client\";\nimport { Actor, ActorSubclass, HttpAgent } from \"@dfinity/agent\";\nimport type { Identity } from \"@dfinity/agent\";\nimport { type CreateActorArgs, IConnector, ConnectorType, WalletConnectorConfig } from \"./connectors\";\n\nconst EXPIRE_TIME = 7 * 24 * 3600; // seconds\n\nexport class ICPSwapConnector implements IConnector {\n private config: {\n whitelist: Array;\n host: string;\n providerUrl: string;\n dev: boolean;\n };\n\n private identity?: Identity;\n\n private principal?: string;\n\n private client?: AuthClient;\n\n public type = ConnectorType.ICPSwap;\n\n public get getPrincipal() {\n return this.principal;\n }\n\n constructor(config: WalletConnectorConfig) {\n this.config = {\n whitelist: config.whitelist,\n host: config.host,\n providerUrl: \"http://localhost:8088\",\n dev: false,\n };\n }\n\n async init() {\n this.client = await AuthClient.create({\n idleOptions: {\n disableDefaultIdleCallback: true,\n },\n keyType: \"Ed25519\",\n });\n const isConnected = await this.isConnected();\n\n if (isConnected) {\n this.identity = this.client.getIdentity();\n this.principal = this.identity?.getPrincipal().toString();\n }\n\n return true;\n }\n\n async isConnected(): Promise {\n return !!(await this.client?.isAuthenticated());\n }\n\n async createActor({\n canisterId,\n interfaceFactory,\n }: CreateActorArgs): Promise | undefined> {\n const agent = new HttpAgent({\n host: this.config.host,\n identity: this.identity,\n });\n\n if (this.config.dev) {\n // Fetch root key for certificate validation during development\n agent.fetchRootKey().catch((err) => {\n console.warn(\"Unable to fetch root key. Check to ensure that your local replica is running\");\n console.error(err);\n });\n }\n\n return Actor.createActor(interfaceFactory, {\n agent,\n canisterId,\n });\n }\n\n async connect() {\n await new Promise((resolve, reject) => {\n this.client?.login({\n onSuccess: () => resolve(true),\n onError: reject,\n maxTimeToLive: BigInt(EXPIRE_TIME * 1000 * 1000 * 1000),\n });\n });\n\n const identity = this.client?.getIdentity();\n const principal = identity?.getPrincipal().toString();\n this.identity = identity;\n this.principal = principal;\n\n window.localStorage.setItem(\"ICPSwap-wallet-expire-time\", (new Date().getTime() + EXPIRE_TIME * 1000).toString());\n\n return true;\n }\n\n async disconnect() {\n await this.client?.logout();\n }\n\n async expired() {\n const iiExpireTime = window.localStorage.getItem(\"ICPSwap-wallet-expire-time\");\n if (!iiExpireTime) return true;\n return new Date().getTime() >= Number(iiExpireTime);\n }\n}\n\nexport const ICPSwapWallet = {\n connector: ICPSwapConnector,\n id: \"ICPSwap\",\n type: ConnectorType.ICPSwap,\n};\n","import { ActorSubclass } from \"@dfinity/agent\";\nimport { getStoreWalletUnlocked } from \"store/auth/hooks\";\nimport { type CreateActorArgs, IConnector, ConnectorType, WalletConnectorConfig } from \"./connectors\";\n\nexport class InfinityConnector implements IConnector {\n private config: {\n whitelist: Array;\n providerUrl: string;\n host: string;\n dev: boolean;\n };\n\n private principal?: string;\n\n public type = ConnectorType.INFINITY;\n\n public get getPrincipal() {\n return this.principal;\n }\n\n constructor(config: WalletConnectorConfig) {\n this.config = {\n whitelist: config.whitelist,\n host: config.host,\n providerUrl: \"\",\n dev: false,\n };\n }\n\n async init() {\n return true;\n }\n\n async createActor({\n canisterId,\n interfaceFactory,\n }: CreateActorArgs): Promise | undefined> {\n return await window.ic.infinityWallet.createActor({ canisterId, interfaceFactory });\n }\n\n async isConnected() {\n const isUnLocked = getStoreWalletUnlocked();\n\n if (typeof isUnLocked === \"boolean\" && !isUnLocked) {\n return false;\n }\n\n if (window.ic.infinityWallet) {\n return await window.ic.infinityWallet.isConnected();\n }\n\n return false;\n }\n\n async connect() {\n if (await this.isConnected()) {\n this.principal = (await window.ic.infinityWallet.getPrincipal()).toString();\n } else {\n // disconnect first\n await window.ic.infinityWallet.disconnect();\n await window.ic.infinityWallet.requestConnect({ whitelist: this.config.whitelist });\n\n this.principal = (await window.ic.infinityWallet.getPrincipal()).toString();\n }\n\n return true;\n }\n\n async disconnect() {\n await window.ic.infinityWallet.disconnect();\n }\n\n async expired() {\n return false;\n }\n}\n\nexport const InfinitySwapWallet = {\n connector: InfinityConnector,\n id: \"infinity\",\n type: ConnectorType.INFINITY,\n};\n","import { type ActorSubclass, Actor, HttpAgent } from \"@dfinity/agent\";\nimport { Connector } from \"@icpswap/actor\";\nimport { MsqClient, MsqIdentity } from \"@fort-major/msq-client\";\nimport type { IConnector, CreateActorArgs, WalletConnectorConfig } from \"./connectors\";\n\nconst EXPIRE_TIME = 7 * 24 * 3600; // seconds\nconst EXPIRE_TIME_STORAGE_NAME = \"metamask-expire-time\";\n// const REQUEST_LINK_DOMAIN = \"https://app.icpswap.com\";\n\nexport class MetamaskConnector implements IConnector {\n private config: {\n whitelist: Array;\n providerUrl: string;\n host: string;\n dev: boolean;\n };\n\n private identity?: any;\n\n private principal?: string;\n\n private client?: MsqClient;\n\n public type = Connector.Metamask;\n\n public get getPrincipal() {\n return this.principal;\n }\n\n constructor(config: WalletConnectorConfig) {\n this.config = {\n whitelist: config.whitelist,\n host: config.host,\n dev: false,\n providerUrl: \"\",\n };\n }\n\n async init() {\n return true;\n }\n\n async isConnected() {\n return this.client ? await this.client?.isAuthorized() : false;\n }\n\n async connect() {\n if (this.client && (await this.isConnected())) {\n // const requestLinkResult: boolean = await this.client.requestLink(REQUEST_LINK_DOMAIN);\n // if (!requestLinkResult) return false;\n\n const identity: MsqIdentity | null = await this.client.requestLogin();\n\n if (identity === null) {\n // the user has rejected to log in\n return false;\n }\n\n window.localStorage.setItem(EXPIRE_TIME_STORAGE_NAME, (new Date().getTime() + EXPIRE_TIME * 1000).toString());\n this.identity = identity;\n this.principal = identity?.getPrincipal().toString();\n } else {\n const result = await MsqClient.create();\n\n if (!(\"Ok\" in result)) return false;\n\n const client = result.Ok;\n // const requestLinkResult: boolean = await client.requestLink(REQUEST_LINK_DOMAIN);\n // if (!requestLinkResult) return false;\n\n const identity: MsqIdentity | null = await client.requestLogin();\n\n if (identity === null) {\n // the user has rejected to log in\n return false;\n }\n\n window.localStorage.setItem(EXPIRE_TIME_STORAGE_NAME, (new Date().getTime() + EXPIRE_TIME * 1000).toString());\n this.identity = identity;\n this.principal = identity.getPrincipal().toString();\n this.client = client;\n\n return true;\n }\n\n return true;\n }\n\n async disconnect() {\n await this.client?.requestLogout();\n }\n\n async createActor({ canisterId, interfaceFactory }: CreateActorArgs): Promise> {\n const httpAgent = new HttpAgent({ identity: this.identity, host: this.config.host });\n\n return Actor.createActor(interfaceFactory, {\n agent: httpAgent,\n canisterId,\n });\n }\n\n async expired() {\n const expireTime = window.localStorage.getItem(EXPIRE_TIME_STORAGE_NAME);\n if (!expireTime) return true;\n return new Date().getTime() >= Number(expireTime);\n }\n}\n","import { IDL } from \"@dfinity/candid\";\nimport { ActorSubclass } from \"@dfinity/agent\";\nimport { Connector } from \"constants/wallet\";\nimport { host } from \"constants/server\";\nimport { updateAuth } from \"store/auth/hooks\";\nimport { getDelegationIds } from \"constants/connector\";\nimport { InternetIdentityConnector } from \"./internet-identity\";\nimport { StoicConnector } from \"./stoic\";\nimport { NF_IDConnector } from \"./NF_ID\";\nimport type { IConnector } from \"./connectors\";\nimport { PlugConnector } from \"./plug\";\nimport { ICPSwapConnector } from \"./icpswap\";\nimport { InfinityConnector } from \"./infinity\";\nimport { MeConnector } from \"./me\";\nimport { MetamaskConnector } from \"./metamask\";\n\ntype ConnectorClass = { new (...args: any[]): IConnector };\n\nexport type ProviderOptions = {\n connector: ConnectorClass;\n id: string;\n name: string;\n};\n\nexport type Provider = {\n connector: IConnector;\n id: string;\n name: string;\n};\n\nexport type ConnectConfig = {\n whitelist: Array;\n host: string;\n providerUrl: string;\n dev: boolean;\n};\n\nexport class WalletConnector {\n public connector: IConnector | null = null;\n\n public connectorType: Connector = Connector.ICPSwap;\n\n // initial connect instance\n public async init(connectorType: Connector) {\n const connector = await WalletConnector.create(connectorType);\n this.connectorType = connectorType;\n await connector?.init();\n this.connector = connector;\n }\n\n public static async create(connector: Connector) {\n const config = {\n host,\n whitelist: await getDelegationIds(),\n };\n\n switch (connector) {\n case Connector.IC:\n return new InternetIdentityConnector(config);\n case Connector.STOIC:\n return new StoicConnector(config);\n case Connector.NFID:\n return new NF_IDConnector(config);\n case Connector.PLUG:\n return new PlugConnector(config);\n case Connector.ICPSwap:\n return new ICPSwapConnector(config);\n case Connector.INFINITY:\n return new InfinityConnector(config);\n case Connector.ME:\n return new MeConnector(config);\n case Connector.Metamask:\n return new MetamaskConnector(config);\n default:\n throw new Error(`Connector error ${Connector}: Not support this connect for now`);\n }\n }\n\n public async connect() {\n if (!this.connector) return false;\n\n const isConnectedSuccessfully = await this.connector.connect();\n\n window.icConnector = this.connector;\n\n updateAuth({ walletType: this.connectorType });\n\n return isConnectedSuccessfully;\n }\n\n public async isConnected() {\n const isConnected = await this.connector?.isConnected();\n return isConnected;\n }\n\n public async createActor(\n canisterId: string,\n interfaceFactory: IDL.InterfaceFactory,\n ): Promise | undefined> {\n return await this.connector?.createActor({ canisterId, interfaceFactory });\n }\n}\n\nexport async function getConnectorIsConnected(): Promise {\n return window.icConnector.isConnected();\n}\n\nexport async function getConnectorPrincipal() {\n return window.icConnector.getPrincipal;\n}\n\nexport const connector = new WalletConnector();\n","import type { ActorSubclass } from \"@dfinity/agent\";\nimport { AstroXWebViewHandler } from \"@astrox/sdk-webview\";\nimport { IC as AuthClient } from \"@astrox/sdk-web\";\nimport { Connector } from \"@icpswap/actor\";\nimport type { IConnector, CreateActorArgs, WalletConnectorConfig } from \"./connectors\";\n\nconst MeExpireTime = 7 * 24 * 3600; // seconds\nconst MAX_DELEGATION_TARGETS = 900;\n\nexport function isMeWebview() {\n return !!window.astrox_webview;\n}\n\nconst astrox = new AstroXWebViewHandler();\n\nexport class MeConnector implements IConnector {\n private config: {\n whitelist: Array;\n providerUrl: string;\n host: string;\n dev: boolean;\n };\n\n private identity?: any;\n\n private principal?: string;\n\n private client?: AuthClient;\n\n public type = Connector.ME;\n\n public get getPrincipal() {\n return this.principal;\n }\n\n constructor(config: WalletConnectorConfig) {\n this.config = {\n whitelist: config.whitelist,\n host: config.host,\n dev: false,\n providerUrl: \"\",\n };\n }\n\n async init() {\n if (isMeWebview()) {\n await astrox.init();\n\n if (!this.isConnected()) {\n const boolean = await astrox.connect({\n delegationTargets: this.config.whitelist,\n host: this.config.host,\n customDomain: \"https://app.icpswap.com\",\n });\n\n this.principal = astrox.identity?.getPrincipal().toString();\n this.identity = astrox.identity;\n\n return boolean;\n }\n this.principal = astrox.identity?.getPrincipal().toString();\n this.identity = astrox.identity;\n } else {\n this.client = this.client\n ? this.client\n : await AuthClient.create({\n useFrame: document.body.clientWidth > 768 ? true : undefined,\n signerProviderUrl: \"https://63k2f-nyaaa-aaaah-aakla-cai.raw.ic0.app/signer\",\n identityProvider: `https://63k2f-nyaaa-aaaah-aakla-cai.raw.ic0.app/login#authorize`,\n walletProviderUrl: `https://63k2f-nyaaa-aaaah-aakla-cai.raw.ic0.app/transaction`,\n host: this.config.host,\n });\n\n const isConnected = await this.isConnected();\n\n if (isConnected) {\n this.identity = this.client.identity;\n this.principal = this.identity?.getPrincipal().toString();\n }\n }\n\n return true;\n }\n\n async isConnected() {\n if (isMeWebview()) {\n return await astrox.isConnected();\n }\n return this.client ? await this.client?.isAuthenticated() : false;\n }\n\n async connect() {\n if (await this.isConnected()) {\n this.principal = this.identity?.getPrincipal().toString();\n } else {\n if (isMeWebview()) {\n const boolean = await astrox.connect({\n // Max delegation targets is 1000 in Me Wallet\n delegationTargets: this.config.whitelist,\n host: this.config.host,\n customDomain: \"https://app.icpswap.com\",\n });\n\n const { identity } = astrox;\n\n this.principal = identity?.getPrincipal().toString();\n\n return boolean;\n }\n const delegationTargets = this.config.whitelist;\n\n const client = await this.client?.connect({\n useFrame: !(window.innerWidth < 768),\n signerProviderUrl: \"https://63k2f-nyaaa-aaaah-aakla-cai.raw.ic0.app/signer\",\n identityProvider: `https://63k2f-nyaaa-aaaah-aakla-cai.raw.ic0.app/login#authorize`,\n walletProviderUrl: `https://63k2f-nyaaa-aaaah-aakla-cai.raw.ic0.app/transaction`,\n delegationTargets:\n delegationTargets.length > MAX_DELEGATION_TARGETS\n ? delegationTargets.slice(0, MAX_DELEGATION_TARGETS)\n : delegationTargets,\n customDomain: \"https://app.icpswap.com\",\n maxTimeToLive: BigInt(MeExpireTime * 1000 * 1000 * 1000),\n });\n\n if (client) {\n window.localStorage.setItem(\"me-expire-time\", (new Date().getTime() + MeExpireTime * 1000).toString());\n this.identity = client.identity;\n this.principal = this.identity?.getPrincipal().toString();\n }\n\n return !!client;\n }\n\n return true;\n }\n\n async disconnect() {\n if (isMeWebview()) {\n await astrox.disconnect();\n } else {\n await this.client?.disconnect();\n }\n }\n\n async createActor({ canisterId, interfaceFactory }: CreateActorArgs): Promise> {\n if (isMeWebview()) {\n // @ts-ignore\n return await astrox.createActor(canisterId, interfaceFactory);\n }\n // @ts-ignore\n return await this.client?.createActor(interfaceFactory, canisterId);\n }\n\n async expired() {\n if (isMeWebview()) return false;\n const meExpireTime = window.localStorage.getItem(\"me-expire-time\");\n if (!meExpireTime) return true;\n return new Date().getTime() >= Number(meExpireTime);\n }\n}\n","/* eslint-disable no-extend-native */\n\nimport JSBI from \"jsbi\";\nimport BigNumber from \"bignumber.js\";\n\n// @ts-ignore hijack bigint\nBigInt.prototype.toJSON = function toJSON() {\n return this.toString();\n};\n\n// avoid scientific notation when use toString\nBigNumber.set({ EXPONENTIAL_AT: 10 ** 9 });\n\nBigNumber.config({\n ROUNDING_MODE: BigNumber.ROUND_DOWN,\n});\n\nexport const NO_GROUP_SEPARATOR_FORMATTER = {\n groupSeparator: \"\",\n};\n\nexport { JSBI };\n\nexport function isDarkTheme(theme: any): boolean {\n return theme.customization.mode === \"dark\";\n}\n\nexport function isICPSwapOfficial(account: string | undefined): boolean {\n return (\n account === \"b2b33b29fa0f9458ec7ba0025f6a53126043fad143dd17619d5f162f41e69869\" ||\n account === \"e695fda51d898ad6f46211d8f468f85dd1364819e52c7740e4b4db90918ea6bc\" ||\n account === \"fbe00b464da19fc7bf234cf05e376631ad896163558174c375f6e9be96d95e95\" ||\n account === \"1ce94412fa0ad3b93132c651105d86e17bb87bafc78e9010a9e24a47a98e5b03\" ||\n account === \"9b0812ed39fe6e63c442d7a81672c0c2568ce10011dffc0e50a635250ff6967f\"\n );\n}\n\nexport function stringToArrayBuffer(string: string): Uint8Array {\n return new TextEncoder().encode(string);\n}\n\nexport function arrayBufferToString(arrayBuffer: Uint8Array): string {\n return new TextDecoder(\"utf-8\").decode(arrayBuffer);\n}\n\nexport type CountingTime = {\n hour: string | number;\n min: string | number;\n sec: string | number;\n};\n\nexport function toDoubleNumber(string: number | string) {\n const newString = String(string);\n\n if (newString.length < 2) {\n return `0${newString}`;\n }\n\n return string;\n}\n\nexport function counter(time: string | number | Date): CountingTime {\n const now = new Date().getTime();\n const end = new Date(time).getTime();\n\n const diff = end - now;\n\n if (diff <= 0) {\n return {\n hour: \"00\",\n min: \"00\",\n sec: \"00\",\n };\n }\n\n const sec = parseInt(String((diff / 1000) % 60));\n const min = parseInt(String((diff / (60 * 1000)) % 60));\n const hour = parseInt(String(diff / (60 * 60 * 1000)));\n\n return {\n hour: toDoubleNumber(hour),\n min: toDoubleNumber(min),\n sec: toDoubleNumber(sec),\n };\n}\n\nexport function toFormat(value: string | number | BigNumber | undefined) {\n if (value === undefined) return \"\";\n return new BigNumber(value).toFormat();\n}\n\nexport function isHouseUserTokenTransactions(canisterId: string, principal: string) {\n return `https://637g5-siaaa-aaaaj-aasja-cai.raw.ic0.app/address/${canisterId}${principal ? `/${principal}` : \"\"}`;\n}\n\nexport function timeParser(time: any): Date {\n const date = new Date(time);\n const seconds = date.getSeconds();\n return new Date(date.getTime() - seconds * 1000);\n}\n\nexport * from \"./type\";\nexport * from \"./nft\";\nexport * from \"./swap\";\nexport * from \"./token\";\n","import type { NFTTransferArgs, NFTTransferResult, NFTAllowanceArgs, NFTApproveArgs } from \"@icpswap/types\";\nimport { StatusResult } from \"@icpswap/types\";\nimport { Identity } from \"types/global\";\n\nexport interface TransferParameters {\n identity: Identity;\n params: NFTTransferArgs;\n canisterId: string;\n}\nexport abstract class BaseNFTAdapter {\n public readonly actor: any;\n\n constructor({ actor }: { actor: (canister: string, identity?: Identity) => any }) {\n this.actor = actor;\n }\n\n public abstract transfer(params: TransferParameters): Promise>;\n\n public abstract allowance(params: { canisterId: string; params: NFTAllowanceArgs }): Promise>;\n\n public abstract approve(params: {\n canisterId: string;\n identity: Identity;\n params: NFTApproveArgs;\n }): Promise>;\n}\n","import type { NFTTransferArgs, NFTTransferResult, NFTAllowanceArgs, NFTApproveArgs } from \"@icpswap/types\";\nimport { resultFormat } from \"@icpswap/utils\";\nimport { NFTCanister } from \"@icpswap/actor\";\nimport { Identity } from \"types/global\";\nimport { BaseNFTAdapter } from \"./BaseNFTAdapter\";\n\nexport class ICPSwapNFT extends BaseNFTAdapter {\n public async transfer({\n canisterId,\n params,\n identity,\n }: {\n canisterId: string;\n params: NFTTransferArgs;\n identity: Identity;\n }) {\n return resultFormat(await (await this.actor(canisterId, identity)).transfer(params));\n }\n\n public async allowance({ params, canisterId }: { canisterId: string; params: NFTAllowanceArgs }) {\n return resultFormat(await (await this.actor(canisterId)).allowance(params));\n }\n\n public async approve({\n params,\n canisterId,\n identity,\n }: {\n identity: Identity;\n canisterId: string;\n params: NFTApproveArgs;\n }) {\n return resultFormat(await (await this.actor(canisterId, identity)).approve(params));\n }\n}\n\nexport const ICPSwapAdapter = new ICPSwapNFT({\n actor: NFTCanister,\n});\n","import { type NFTTransferArgs, type NFTAllowanceArgs, type NFTApproveArgs, ResultStatus } from \"@icpswap/types\";\nimport { Identity } from \"types/global\";\nimport { BaseNFTAdapter } from \"./BaseNFTAdapter\";\nimport { ICPSwapAdapter } from \"./ICPSwapNFTAdapter\";\n\nexport class NFT {\n public canisterAdapters = new Map();\n\n public adapters = new Map();\n\n public initialAdapter(name: AdapterName, adapter: BaseNFTAdapter) {\n if (this.adapters.get(name)) throw Error(\"This adapter is already initialed\");\n this.adapters.set(name, adapter);\n }\n\n public register({ canisterIds, name }: { canisterIds: string[]; name: AdapterName }) {\n canisterIds.forEach((canisterId) => {\n this.canisterAdapters.set(canisterId, name);\n });\n }\n\n public getAdapter(canisterId: string) {\n const adapterName = this.canisterAdapters.get(canisterId);\n return adapterName ? this.adapters.get(adapterName) : undefined;\n }\n\n public getAdapterByName(adapterName: AdapterName) {\n if (!this.adapters.get(adapterName)) throw Error(`Can't not found adapter ${adapterName}`);\n return this.adapters.get(adapterName);\n }\n\n public async transfer({\n adapterName,\n params,\n identity,\n canisterId,\n }: {\n identity: Identity;\n adapterName: AdapterName;\n params: NFTTransferArgs;\n canisterId: string;\n }) {\n const adapter = this.getAdapterByName(adapterName);\n\n if (!adapter) return { status: ResultStatus.ERROR, data: undefined, message: \"No adapter\" };\n\n return await adapter.transfer({ canisterId, params, identity });\n }\n\n public async allowance({\n adapterName,\n params,\n canisterId,\n }: {\n canisterId: string;\n adapterName: AdapterName;\n params: NFTAllowanceArgs;\n }) {\n const adapter = this.getAdapterByName(adapterName);\n if (!adapter) return { status: ResultStatus.ERROR, data: undefined, message: \"No adapter\" };\n return await adapter.allowance({\n canisterId,\n params,\n });\n }\n\n public async approve({\n params,\n canisterId,\n adapterName,\n identity,\n }: {\n adapterName: AdapterName;\n canisterId: string;\n params: NFTApproveArgs;\n identity: Identity;\n }) {\n const adapter = this.getAdapterByName(adapterName);\n if (!adapter) return { status: ResultStatus.ERROR, data: undefined, message: \"No adapter\" };\n return await adapter.approve({\n canisterId,\n identity,\n params,\n });\n }\n}\n\nexport const NFTs = new NFT();\n\nexport const registerNFTs = ({ canisterIds, name }: { canisterIds: string[]; name: AdapterName }) =>\n NFTs.register({ canisterIds, name });\n\nexport enum AdapterName {\n ICPSwap = \"ICPSwap\",\n}\n\nNFTs.initialAdapter(AdapterName.ICPSwap, ICPSwapAdapter);\n","import type { NFTBuyArgs, NFTSaleArgs, NFTRevokeArgs } from \"@icpswap/types\";\nimport { StatusResult } from \"@icpswap/types\";\nimport { Identity } from \"types/global\";\n\nexport interface BuyParameters {\n identity: Identity;\n params: NFTBuyArgs;\n}\n\nexport interface SaleParameters {\n identity: Identity;\n params: NFTSaleArgs;\n}\n\nexport interface RevokeParameters {\n identity: Identity;\n params: NFTRevokeArgs;\n}\n\nexport abstract class BaseNFTsTradeAdapter {\n public readonly actor: any;\n\n constructor({ actor }: { actor: any }) {\n this.actor = actor;\n }\n\n public abstract buy(params: BuyParameters): Promise>;\n\n public abstract sale(params: SaleParameters): Promise>;\n\n public abstract revoke(params: RevokeParameters): Promise>;\n}\n","import type { NFTBuyArgs, NFTSaleArgs, NFTRevokeArgs } from \"@icpswap/types\";\nimport { resultFormat } from \"@icpswap/utils\";\nimport { Identity } from \"types/global\";\nimport { NFTTradeCanister } from \"@icpswap/actor\";\nimport { BaseNFTsTradeAdapter } from \"./BaseNFTAdapter\";\n\nexport class ICPSwapNFTsTradeAdapter extends BaseNFTsTradeAdapter {\n public async buy({ params, identity }: { params: NFTBuyArgs; identity: Identity }) {\n return resultFormat(await (await this.actor(identity)).buy(params));\n }\n\n public async sale({ params, identity }: { params: NFTSaleArgs; identity: Identity }) {\n return resultFormat(await (await this.actor(identity)).sale(params));\n }\n\n public async revoke({ params, identity }: { params: NFTRevokeArgs; identity: Identity }) {\n return resultFormat(await (await this.actor(identity)).revoke(params));\n }\n}\n\nexport const ICPSwapTradeAdapter = new ICPSwapNFTsTradeAdapter({\n actor: NFTTradeCanister,\n});\n","import { ResultStatus, type NFTBuyArgs, type NFTRevokeArgs, type NFTSaleArgs } from \"@icpswap/types\";\nimport { Identity } from \"types/global\";\nimport { BaseNFTsTradeAdapter } from \"./BaseNFTAdapter\";\nimport { ICPSwapTradeAdapter } from \"./ICPSwapNFTTradeAdapter\";\n\nexport enum TradeAdapterName {\n ICPSwap = \"ICPSwap\",\n}\n\nexport class NFTsTradeAdapter {\n public canisterAdapters = new Map();\n\n public adapters = new Map();\n\n public initialAdapter(name: TradeAdapterName, adapter: BaseNFTsTradeAdapter) {\n if (this.adapters.get(name)) throw Error(\"This adapter is already initialed\");\n this.adapters.set(name, adapter);\n }\n\n public register({ canisterIds, name }: { canisterIds: string[]; name: TradeAdapterName }) {\n canisterIds.forEach((canisterId) => {\n this.canisterAdapters.set(canisterId, name);\n });\n }\n\n public getAdapter(canisterId: string) {\n const adapterName = this.canisterAdapters.get(canisterId);\n return adapterName ? this.adapters.get(adapterName) : undefined;\n }\n\n public getAdapterByName(adapterName: TradeAdapterName) {\n if (!this.adapters.get(adapterName)) throw Error(`Can't not found adapter ${adapterName}`);\n return this.adapters.get(adapterName);\n }\n\n public async sale({\n adapterName,\n params,\n identity,\n }: {\n identity: Identity;\n adapterName: TradeAdapterName;\n params: NFTSaleArgs;\n }) {\n const adapter = this.getAdapterByName(adapterName);\n if (!adapter) return { status: ResultStatus.ERROR, data: undefined, message: \"\" };\n return await adapter.sale({ params, identity });\n }\n\n public async revoke({\n adapterName,\n params,\n identity,\n }: {\n identity: Identity;\n adapterName: TradeAdapterName;\n params: NFTRevokeArgs;\n }) {\n const adapter = this.getAdapterByName(adapterName);\n if (!adapter) return { status: ResultStatus.ERROR, data: undefined, message: \"\" };\n return await adapter.revoke({ params, identity });\n }\n\n public async buy({\n adapterName,\n params,\n identity,\n }: {\n identity: Identity;\n adapterName: TradeAdapterName;\n params: NFTBuyArgs;\n }) {\n const adapter = this.getAdapterByName(adapterName);\n if (!adapter) return { status: ResultStatus.ERROR, data: undefined, message: \"\" };\n return await adapter.buy({ params, identity });\n }\n}\n\nexport const NFTsTrade = new NFTsTradeAdapter();\n\nNFTsTrade.initialAdapter(TradeAdapterName.ICPSwap, ICPSwapTradeAdapter);\n","import { Principal } from \"@dfinity/principal\";\nimport { type SwapNFTTokenMetadata } from \"@icpswap/types\";\n\nexport function from32bits(data: number[]) {\n let value;\n\n for (let i = 0; i < 4; i++) {\n // @ts-ignore\n value = (value << 8) | data[i];\n }\n\n return value;\n}\n\nexport function to32bits(num: number) {\n const arrayBuffer = new ArrayBuffer(4);\n new DataView(arrayBuffer).setUint32(0, num);\n return Array.from(new Uint8Array(arrayBuffer));\n}\n\nexport function toHexString(byteArray: number[]) {\n return Array.from(byteArray, (byte) => {\n return `0${(byte & 0xff).toString(16)}`.slice(-2);\n }).join(\"\");\n}\n\nexport function encodeTokenIdentifier(principal: string, index: number | bigint) {\n // @ts-ignore\n const padding = Buffer(\"\\x0Atid\");\n\n const array = new Uint8Array([\n ...padding,\n ...Principal.fromText(principal).toUint8Array(),\n ...to32bits(Number(index)),\n ]);\n return Principal.fromUint8Array(array).toText();\n}\n\nexport function decodeTokenId(tid: string) {\n const p = [...Principal.fromText(tid).toUint8Array()];\n const padding = p.splice(0, 4);\n\n // @ts-ignore\n if (toHexString(padding) !== toHexString(Buffer(\"\\x0Atid\"))) {\n return {\n index: 0,\n canister: tid,\n token: encodeTokenIdentifier(tid, 0),\n };\n }\n return {\n index: from32bits(p.splice(-4)),\n // @ts-ignore\n canister: Principal.fromUint8Array(p).toText(),\n token: tid,\n };\n}\n\nexport function getNFTSwapPoolId(nft: SwapNFTTokenMetadata) {\n let poolId = \"\";\n\n for (let i = 0; i < nft.attributes.length; i++) {\n if (nft.attributes[i].k === \"pool\") {\n poolId = nft.attributes[i].v;\n break;\n }\n }\n\n return poolId;\n}\n\nexport function getNFTSwapPositionId(nft: SwapNFTTokenMetadata) {\n let poolId = \"\";\n\n for (let i = 0; i < nft.attributes.length; i++) {\n if (nft.attributes[i].k === \"positionId\") {\n poolId = nft.attributes[i].v;\n break;\n }\n }\n\n return poolId;\n}\n\nexport * from \"./NFT\";\nexport * from \"./trade\";\n","import { StakingState } from \"@icpswap/types\";\nimport { FilterState } from \"types/staking-token\";\n\nexport function getStateValue(state: StakingState) {\n switch (state) {\n case StakingState.LIVE:\n return BigInt(2);\n case StakingState.NOT_STARTED:\n return BigInt(1);\n case StakingState.FINISHED:\n return BigInt(3);\n default:\n return undefined;\n }\n}\n\nexport function getStateValueByFilterState(__state: FilterState) {\n switch (__state) {\n case FilterState.ALL:\n return undefined;\n case FilterState.NOT_STARTED:\n return getStateValue(StakingState.NOT_STARTED);\n case FilterState.LIVE:\n return getStateValue(StakingState.LIVE);\n case FilterState.FINISHED:\n return getStateValue(StakingState.FINISHED);\n case FilterState.YOUR:\n return undefined;\n default:\n return undefined;\n }\n}\n","import BigNumber from \"bignumber.js\";\nimport { SAFE_DECIMALS_LENGTH } from \"constants/index\";\n\n/**\n * Given some token amount, check and format the amount by the max decimals\n * @param amount token amount\n * @param decimals token decimals\n */\nexport function maxAmountFormat(amount: string, decimals: number): string {\n if (!amount) return amount;\n\n if (decimals > SAFE_DECIMALS_LENGTH) {\n return new BigNumber(amount).toFixed(SAFE_DECIMALS_LENGTH);\n }\n\n return amount;\n}\n","export function sortToken(token0: string, token1: string) {\n return token0 > token1 ? { token0: token1, token1: token0 } : { token0, token1 };\n}\n","import { type Position } from \"@icpswap/swap-sdk\";\n\nexport function encodePositionKey(position: Position | undefined, index: bigint | number) {\n if (!position) return undefined;\n return `${position.pool.id}_${index.toString()}`;\n}\n\nexport function encodePositionKeyByPool(poolId: string | undefined, index: bigint | number) {\n if (!poolId) return undefined;\n return `${poolId}_${index.toString()}`;\n}\n\nexport function decodePositionKey(key: string | undefined) {\n if (!key || !key.includes(\"_\")) return {};\n\n const arr = key.split(\"_\");\n\n return {\n poolId: arr[0],\n positionIndex: arr[1],\n };\n}\n\nexport enum PositionState {\n OutOfRange = \"outOfRange\",\n InRange = \"inRange\",\n LEVEL0 = \"level0\",\n LEVEL1 = \"level1\",\n CLOSED = \"closed\",\n}\n\nexport const getStateColor = (state: PositionState) => {\n switch (state) {\n case PositionState.OutOfRange:\n return \"#9D332C\";\n case PositionState.InRange:\n return \"#54C081\";\n case PositionState.LEVEL0:\n return \"#FFD24C\";\n case PositionState.LEVEL1:\n return \"#D3625B\";\n case PositionState.CLOSED:\n return \"#8492C4\";\n default:\n return \"#54C081\";\n }\n};\n","import { Token, CurrencyAmount } from \"@icpswap/swap-sdk\";\nimport { SAFE_INTEGER_LENGTH, SAFE_DECIMALS_LENGTH } from \"constants/index\";\nimport { BigNumber } from \"@icpswap/utils\";\n\nexport function tryParseAmount(value?: string, currency?: T): CurrencyAmount | undefined {\n if (!value || !currency) {\n return undefined;\n }\n try {\n const typedValueParsed = new BigNumber(value)\n .multipliedBy(10 ** currency.decimals)\n .toFormat({ groupSeparator: \"\" });\n\n if (typedValueParsed !== \"0\") {\n return CurrencyAmount.fromRawAmount(currency, typedValueParsed);\n }\n } catch (error) {\n // should fail if the user specifies too many decimal places of precision (or maybe exceed max uint?)\n console.error(`Failed to parse input amount: \"${value}\"`, error);\n }\n // necessary for all paths to return a value\n return undefined;\n}\n\nexport function feeAmountToPercentage(feeAmount: number | string): string {\n return `${new BigNumber(feeAmount).div(10000).toFixed(2)}%`;\n}\n\nexport function inputNumberCheck(num: string | number): boolean {\n const integer = String(num).split(\".\")[0];\n const decimal = String(num).split(\".\")[1];\n\n if (decimal && decimal.length > SAFE_DECIMALS_LENGTH) {\n return false;\n }\n\n if (integer && integer.length > SAFE_INTEGER_LENGTH) {\n return false;\n }\n\n return true;\n}\n\nexport * from \"./maxAmountFormat\";\nexport * from \"./maxAmountSpend\";\nexport * from \"./sortToken\";\nexport * from \"./liquidity\";\nexport * from \"./mint\";\n","import {\n Price,\n Token,\n priceToClosestTick,\n nearestUsableTick,\n FeeAmount,\n TICK_SPACINGS,\n encodeSqrtRatioX96,\n TickMath,\n} from \"@icpswap/swap-sdk\";\nimport JSBI from \"jsbi\";\n\nexport function tryParsePrice(baseToken?: Token, quoteToken?: Token, value?: string) {\n if (!baseToken || !quoteToken || !value) {\n return undefined;\n }\n\n if (!value.match(/^\\d*\\.?\\d+$/)) {\n return undefined;\n }\n\n const [whole, fraction] = value.split(\".\");\n\n const decimals = fraction?.length ?? 0;\n const withoutDecimals = JSBI.BigInt((whole ?? \"\") + (fraction ?? \"\"));\n\n return new Price(\n baseToken,\n quoteToken,\n JSBI.multiply(JSBI.BigInt(10 ** decimals), JSBI.BigInt(10 ** baseToken.decimals)),\n JSBI.multiply(withoutDecimals, JSBI.BigInt(10 ** quoteToken.decimals)),\n );\n}\n\nexport function tryParseTick(\n baseToken?: Token,\n quoteToken?: Token,\n feeAmount?: FeeAmount,\n value?: string,\n): number | undefined {\n if (!baseToken || !quoteToken || !feeAmount || !value) {\n return undefined;\n }\n\n const price = tryParsePrice(baseToken, quoteToken, value);\n\n if (!price) {\n return undefined;\n }\n\n let tick: number;\n\n // check price is within min/max bounds, if outside return min/max\n const sqrtRatioX96 = encodeSqrtRatioX96(price.numerator, price.denominator);\n\n if (JSBI.greaterThanOrEqual(sqrtRatioX96, TickMath.MAX_SQRT_RATIO)) {\n tick = TickMath.MAX_TICK;\n } else if (JSBI.lessThanOrEqual(sqrtRatioX96, TickMath.MIN_SQRT_RATIO)) {\n tick = TickMath.MIN_TICK;\n } else {\n // this function is agnostic to the base, will always return the correct tick\n tick = priceToClosestTick(price);\n }\n\n return nearestUsableTick(tick, TICK_SPACINGS[feeAmount]);\n}\n","import { numberToString, BigNumber } from \"@icpswap/utils\";\nimport { TOKEN_STANDARD } from \"@icpswap/token-adapter\";\nimport { Token } from \"@icpswap/swap-sdk\";\n\nexport function isUseTransfer(token: Token | undefined) {\n if (token === undefined) return false;\n return token.standard.includes(\"ICRC1\") || token.standard === TOKEN_STANDARD.ICP;\n}\n\nexport function isUseTransferByStandard(standard: TOKEN_STANDARD) {\n return standard.includes(\"ICRC1\") || standard === TOKEN_STANDARD.ICP;\n}\n\nexport function actualAmountToPool(token: Token, amount: string) {\n if (isUseTransfer(token)) {\n if (!new BigNumber(amount).minus(token.transFee).isGreaterThan(0)) {\n return \"0\";\n }\n return numberToString(new BigNumber(amount).minus(token.transFee));\n }\n return amount;\n}\n","import { initializeConnector, Web3ReactHooks } from \"@web3-react/core\";\nimport { MetaMask } from \"@web3-react/metamask\";\nimport { Connector } from \"@web3-react/types\";\n\nexport enum ConnectionType {\n INJECTED = \"INJECTED\",\n COINBASE_WALLET = \"COINBASE_WALLET\",\n WALLET_CONNECT = \"WALLET_CONNECT\",\n NETWORK = \"NETWORK\",\n GNOSIS_SAFE = \"GNOSIS_SAFE\",\n}\n\nexport interface Connection {\n connector: Connector;\n hooks: Web3ReactHooks;\n type: ConnectionType;\n}\n\nfunction onError(error: Error) {\n console.error(`web3-react error: ${error}`);\n}\n\nconst [metamask, hooks] = initializeConnector((actions) => new MetaMask({ actions, onError }));\n\nexport const injectedConnection: Connection = {\n connector: metamask,\n hooks,\n type: ConnectionType.INJECTED,\n};\n\nexport { metamask, hooks };\n","import { getAddress } from \"@ethersproject/address\";\nimport { BigNumber as Big } from \"@ethersproject/bignumber\";\nimport { AddressZero } from \"@ethersproject/constants\";\nimport { Contract } from \"@ethersproject/contracts\";\nimport { JsonRpcProvider, JsonRpcSigner } from \"@ethersproject/providers\";\nimport BigNumber from \"bignumber.js\";\n\n// returns the checksummed address if the address is valid, otherwise returns false\nexport function isAddress(value: any): string | false {\n try {\n return getAddress(value);\n } catch {\n return false;\n }\n}\n\n// shorten the checksummed version of the input address to have 0x + 4 characters at start and end\nexport function shortenAddress(address: string, chars = 4): string {\n const parsed = isAddress(address);\n if (!parsed) {\n throw Error(`Invalid 'address' parameter '${address}'.`);\n }\n return `${parsed.substring(0, chars + 2)}...${parsed.substring(42 - chars)}`;\n}\n\n// account is not optional\nfunction getSigner(provider: JsonRpcProvider, account: string): JsonRpcSigner {\n return provider.getSigner(account).connectUnchecked();\n}\n\n// account is optional\nfunction getProviderOrSigner(\n provider: JsonRpcProvider | undefined,\n account?: string,\n): JsonRpcProvider | JsonRpcSigner | undefined {\n return account && provider ? getSigner(provider, account) : provider;\n}\n\n// account is optional\nexport function getContract(\n address: string,\n ABI: any,\n provider: JsonRpcProvider | undefined,\n account?: string,\n): Contract {\n if (!isAddress(address) || address === AddressZero) {\n throw Error(`Invalid 'address' parameter '${address}'.`);\n }\n\n return new Contract(address, ABI, getProviderOrSigner(provider, account) as any);\n}\n\nexport function escapeRegExp(string: string): string {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"); // $& means the whole matched string\n}\n\nexport function toHexString(amount: string | number, decimals = 18): string {\n return `0x0${new BigNumber(amount).multipliedBy(10 ** decimals).toString(16)}`;\n}\n\n/**\n * Returns the gas value plus a margin for unexpected or variable gas costs\n * @param value the gas value to pad\n */\nexport function calculateGasMargin(value: Big): Big {\n return value.mul(120).div(100);\n}\n","export const idlFactory = ({ IDL }: any) => {\n const Config = IDL.Record({ value: IDL.Text, name: IDL.Text });\n const Media = IDL.Record({ link: IDL.Text, mediaType: IDL.Text });\n const TokenMetadata = IDL.Record({\n fee: IDL.Nat,\n configs: IDL.Vec(Config),\n decimals: IDL.Nat,\n name: IDL.Text,\n rank: IDL.Nat32,\n mediaLinks: IDL.Vec(Media),\n totalSupply: IDL.Nat,\n introduction: IDL.Text,\n standard: IDL.Text,\n symbol: IDL.Text,\n canisterId: IDL.Text,\n });\n const BoolResult = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const Result_3 = IDL.Variant({\n ok: IDL.Opt(TokenMetadata),\n err: IDL.Text,\n });\n const Result_2 = IDL.Variant({ ok: IDL.Vec(IDL.Text), err: IDL.Text });\n const Result_1 = IDL.Variant({\n ok: IDL.Vec(TokenMetadata),\n err: IDL.Text,\n });\n const Result = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n return IDL.Service({\n add: IDL.Func([TokenMetadata], [BoolResult], []),\n addAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n edit: IDL.Func([IDL.Text, TokenMetadata], [BoolResult], []),\n get: IDL.Func([IDL.Text], [Result_3], [\"query\"]),\n getAdminList: IDL.Func([], [Result_2], [\"query\"]),\n getList: IDL.Func([], [Result_1], [\"query\"]),\n getLogo: IDL.Func([IDL.Text], [Result], [\"query\"]),\n remove: IDL.Func([IDL.Text], [BoolResult], []),\n removeAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n updateLogo: IDL.Func([IDL.Text, IDL.Text], [BoolResult], []),\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Result_2 = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n const Result = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const Subaccount = IDL.Vec(IDL.Nat8);\n const Account = IDL.Record({\n owner: IDL.Principal,\n subaccount: IDL.Opt(Subaccount),\n });\n const TokenInfo = IDL.Record({\n fee: IDL.Nat,\n decimals: IDL.Nat,\n minting_account: IDL.Opt(Account),\n logo: IDL.Opt(IDL.Text),\n name: IDL.Text,\n ledger_id: IDL.Principal,\n min_burn_amount: IDL.Nat,\n max_supply: IDL.Opt(IDL.Nat),\n index: IDL.Nat,\n standard: IDL.Text,\n total_supply: IDL.Nat,\n symbol: IDL.Text,\n });\n const Page = IDL.Record({\n content: IDL.Vec(TokenInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_1 = IDL.Variant({ ok: Page, err: IDL.Text });\n return IDL.Service({\n get_logo: IDL.Func([IDL.Principal], [Result_2], [\"query\"]),\n get_task_state: IDL.Func([], [Result], [\"query\"]),\n get_token_list: IDL.Func([IDL.Nat, IDL.Nat, IDL.Opt(IDL.Bool)], [Result_1], [\"query\"]),\n set_task_state: IDL.Func([IDL.Bool], [Result], []),\n set_token_index: IDL.Func([IDL.Principal, IDL.Nat], [Result], []),\n set_token_logo: IDL.Func([IDL.Principal, IDL.Text], [Result], []),\n });\n};\n","export const ic_host = \"https://icp0.io\";\n","import { HttpAgent, ActorSubclass } from \"@dfinity/agent\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport { IDL } from \"@dfinity/candid\";\nimport { ic_host } from \"@icpswap/constants\";\nimport { ActorName } from \"./ActorName\";\nimport { createBaseActor } from \"./BaseActor\";\n\nlet cachedCanisterIds: { [key: string]: string } = {};\n\nexport type ActorConstructor = {\n canisterId?: string;\n actorName?: ActorName;\n host?: string;\n idlFactory: IDL.InterfaceFactory;\n identity?: ActorIdentity;\n agent?: HttpAgent;\n};\n\nexport enum Connector {\n ICPSwap = \"ICPSwap\",\n PLUG = \"PLUG\",\n STOIC = \"STOIC\",\n IC = \"IC\",\n NFID = \"NFID\",\n INFINITY = \"INFINITY\",\n ME = \"ME\",\n STOIC_MNEMONIC = \"STOIC_MNEMONIC\",\n Metamask = \"Metamask\",\n}\n\nexport function isICConnector(connector: Connector) {\n return connector === Connector.IC || connector === Connector.STOIC || connector === Connector.NFID;\n}\n\nexport type ActorError = {\n canisterId: string;\n message: string;\n method: string;\n};\nexport type ActorErrorCallback = (error: ActorError) => void;\nexport type BeforeSubmitArgs = {\n canisterId: string;\n method: string;\n identity: ActorIdentity | undefined;\n connector: Connector;\n};\nexport type BeforeSubmitCallback = (args: BeforeSubmitArgs) => Promise<{ success: boolean; message: string }>;\n\nexport function isPlugTypeConnector(connector: Connector) {\n return connector === Connector.PLUG || connector === Connector.INFINITY;\n}\n\nexport function isMeConnector(connector: Connector) {\n return connector === Connector.ME;\n}\n\nexport class Actor {\n private connector: Connector = Connector.ICPSwap;\n\n private agent: null | HttpAgent = null;\n\n private host: string = ic_host;\n\n private errorCallbacks: ActorErrorCallback[] = [];\n\n private beforeSubmit: BeforeSubmitCallback;\n\n public log = false;\n\n public setConnector(connector: Connector) {\n this.connector = connector;\n }\n\n public async create({\n canisterId,\n host,\n idlFactory,\n identity,\n agent,\n actorName,\n }: ActorConstructor): Promise> {\n let id = canisterId;\n if (!id && actorName) id = cachedCanisterIds[actorName];\n if (!id) throw new Error(\"No canister id\");\n\n const _host = host ?? this.host;\n\n const isRejected = false;\n\n const serviceClass = idlFactory({ IDL });\n\n let actor: ActorSubclass | null = null;\n\n // catch create infinity actor rejected\n let createActorError: null | string = null;\n\n if (identity) {\n try {\n actor = await window.icConnector.createActor({\n canisterId: id,\n interfaceFactory: idlFactory,\n });\n } catch (error) {\n createActorError = String(error);\n }\n } else {\n actor = await createBaseActor({\n canisterId: id,\n interfaceFactory: idlFactory,\n agent: this.AnonymousAgent(_host),\n fetchRootKey: _host !== ic_host,\n });\n }\n\n const _actor: any = {};\n\n serviceClass._fields.forEach((ele) => {\n const key = ele[0];\n\n _actor[key] = async (...args) => {\n if (createActorError)\n return {\n err: `${createActorError}. Please try reconnecting your wallet and ensure the account inside matches the account displayed on the ICPSwap page.`,\n };\n\n if (isRejected) {\n return {\n err: \"The agent creation was rejected. Please try reconnecting your wallet and ensure the account inside matches the account displayed on the ICPSwap page.\",\n };\n }\n\n try {\n if (!actor) return { err: \"no actor\" };\n\n if (this.beforeSubmit) {\n const checkResult = await this.beforeSubmit({\n canisterId: id ?? \"\",\n method: key,\n identity,\n connector: this.connector,\n });\n\n if (checkResult.success === false) {\n return { err: checkResult.message };\n }\n }\n\n const result = actor[key](...args) as Promise;\n return await result;\n } catch (error) {\n const _error = String(error);\n\n let message = \"\";\n if (_error.includes(\"Reject text:\")) {\n const _message = _error.split(`Reject text: `)[1]?.split(\" at\") ?? \"\";\n message = _message ? _message[0]?.trim() : _error;\n } else {\n const _message = _error.includes(`\"Message\"`) ? _error.split(`\"Message\": `)[1]?.split('\"') : \"\";\n message = _error.includes(`\"Message\"`) && !!_message ? _message[1] : _error;\n }\n\n if (this.log) {\n console.log(\"Actor =====================>\");\n console.log(\"canister: \", id);\n console.log(\"method: \", key);\n console.log(\"rejected: \", message);\n console.log(\"Actor =====================>\");\n }\n\n this.errorCallbacks.forEach((call) => {\n call({ canisterId: id ?? \"\", method: key, message });\n });\n\n return { err: message };\n }\n };\n });\n\n return _actor as ActorSubclass;\n }\n\n public AnonymousAgent(host?: string) {\n return new HttpAgent({\n host: host ?? this.host,\n });\n }\n\n public async createAgent(canisterId: string, host: string, identity?: ActorIdentity): Promise {\n // connector is plug type\n if (identity === true) {\n if (this.connector === Connector.PLUG) {\n await window.ic.plug.createAgent({ whitelist: [canisterId], host });\n return window.ic.plug.agent;\n }\n if (this.connector === Connector.INFINITY) {\n return new HttpAgent({\n host,\n });\n }\n return window.icConnector.httpAgent;\n }\n\n return new HttpAgent({\n host,\n });\n }\n\n public setAgent(agent: HttpAgent | null) {\n this.agent = agent;\n }\n\n public setHost(host: string) {\n this.host = host;\n }\n\n public static setActorCanisterIds(canisterIds: { [key: string]: string }) {\n cachedCanisterIds = canisterIds;\n }\n\n public onError(callback: ActorErrorCallback) {\n this.errorCallbacks.push(callback);\n }\n\n public onSubmit(callback: BeforeSubmitCallback) {\n this.beforeSubmit = callback;\n }\n\n public setLog(log: boolean) {\n this.log = log;\n }\n}\n\nexport const actor = new Actor();\n","import { Actor, HttpAgent } from \"@dfinity/agent\";\nimport { IDL } from \"@dfinity/candid\";\n\nexport interface CreateBaseActorProps {\n canisterId: string;\n interfaceFactory: IDL.InterfaceFactory;\n actorOptions?: any;\n agent: HttpAgent;\n fetchRootKey?: boolean;\n}\n\nexport async function createBaseActor({\n canisterId,\n interfaceFactory,\n actorOptions,\n agent,\n fetchRootKey = false,\n}: CreateBaseActorProps) {\n // Fetch root key for certificate validation during development\n if (fetchRootKey) {\n await agent?.fetchRootKey().catch((err) => {\n console.warn(\n \"Unable to fetch root key. Check to ensure that your local replica is running\"\n );\n console.error(err);\n });\n }\n\n return Actor.createActor(interfaceFactory, {\n agent: agent,\n canisterId,\n ...(actorOptions ?? {}),\n });\n}\n","export enum ActorName {\n SwapPool = \"SwapPool\",\n SwapFactory = \"SwapFactory\",\n SwapNFTCanister = \"SwapNFT\",\n Position = \"PositionIndex\",\n PassCodeManager = \"PassCodeManager\",\n\n SwapGraphRecord = \"BaseDataStructure\",\n SwapGraphPool = \"Pools\",\n SwapGraphToken = \"Token\",\n SwapTicket = \"Ticket\",\n GraphICP = \"ICPPrice\",\n TVL = \"TVL\",\n\n TokenList = \"TokenList\",\n AllTokenOfSwap = \"AllTokenOfSwap\",\n\n Token = \"token\",\n WICP = \"wicp\",\n\n FarmController = \"FarmController\",\n Farm = \"Farm\",\n FarmStorage = \"FarmStorage\",\n FarmIndex = \"FarmIndex\",\n\n NFTCanisterController = \"V3NFTCanisterController\",\n NFTCanister = \"NFTDynamicCanister\",\n NFTTradeCanister = \"V3TradeCanister\",\n NFTTradeStat = \"V3TradeStat\",\n\n LaunchpadCanister = \"LaunchpadCanister\",\n LaunchpadController = \"LaunchpadController\",\n LaunchpadManager = \"LaunchpadManager\",\n LaunchpadStorage = \"LaunchpadStorage\",\n\n ClaimController = \"ClaimController\",\n ClaimStorage = \"ClaimStorage\",\n\n VotingController = \"VoteController\",\n VotingCanister = \"VoteProjectCanister\",\n VotingFileCanister = \"VoteFileCanister\",\n\n StakingTokenController = \"StakingTokenController\",\n TokenPool = \"TokenPool\",\n TokenPoolStorage = \"TokenPoolStorage\",\n StakeIndex = \"StakeIndex\",\n\n V1TokenPoolController = \"V1TokenPoolController\",\n V1TokenPool = \"V1TokenPool\",\n V1TokenPoolStorage = \"V1TokenPoolStorage\",\n\n GlobalIndex = \"GlobalIndex\",\n NodeIndex = \"NodeIndex\",\n BaseIndex = \"BaseIndex\",\n\n LiquidityLocks = \"LiquidityLocks\",\n}\n","import {\n TokenListService,\n TokenListInterfaceFactory,\n AllTokenOfSwapInterfaceFactory,\n AllTokenOfSwapService,\n} from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\nimport { ActorName } from \"../ActorName\";\n\nexport const tokenList = async (identity?: true) =>\n actor.create({\n actorName: ActorName.TokenList,\n identity,\n idlFactory: TokenListInterfaceFactory,\n });\n\nexport const allTokenOfSwap = async () =>\n actor.create({\n canisterId: \"aofop-yyaaa-aaaag-qdiqa-cai\",\n idlFactory: AllTokenOfSwapInterfaceFactory,\n });\n","import { SNS_ROOT_SERVE, SNS_INTERFACE_FACTORY } from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\n\nexport const sns_root = async (canisterId: string) =>\n actor.create({\n canisterId,\n idlFactory: SNS_INTERFACE_FACTORY,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const SnsWasmCanisterInitPayload = IDL.Record({\n allowed_principals: IDL.Vec(IDL.Principal),\n access_controls_enabled: IDL.Bool,\n sns_subnet_ids: IDL.Vec(IDL.Principal),\n });\n const SnsWasm = IDL.Record({\n wasm: IDL.Vec(IDL.Nat8),\n canister_type: IDL.Int32,\n });\n const AddWasmRequest = IDL.Record({\n hash: IDL.Vec(IDL.Nat8),\n wasm: IDL.Opt(SnsWasm),\n });\n const SnsWasmError = IDL.Record({ message: IDL.Text });\n const Result = IDL.Variant({\n Error: SnsWasmError,\n Hash: IDL.Vec(IDL.Nat8),\n });\n const AddWasmResponse = IDL.Record({ result: IDL.Opt(Result) });\n const NeuronBasketConstructionParameters = IDL.Record({\n dissolve_delay_interval_seconds: IDL.Nat64,\n count: IDL.Nat64,\n });\n const Canister = IDL.Record({ id: IDL.Opt(IDL.Principal) });\n const DappCanisters = IDL.Record({ canisters: IDL.Vec(Canister) });\n const LinearScalingCoefficient = IDL.Record({\n slope_numerator: IDL.Opt(IDL.Nat64),\n intercept_icp_e8s: IDL.Opt(IDL.Nat64),\n from_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n slope_denominator: IDL.Opt(IDL.Nat64),\n to_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n });\n const IdealMatchedParticipationFunction = IDL.Record({\n serialized_representation: IDL.Opt(IDL.Text),\n });\n const NeuronsFundParticipationConstraints = IDL.Record({\n coefficient_intervals: IDL.Vec(LinearScalingCoefficient),\n max_neurons_fund_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n min_direct_participation_threshold_icp_e8s: IDL.Opt(IDL.Nat64),\n ideal_matched_participation_function: IDL.Opt(\n IdealMatchedParticipationFunction\n ),\n });\n const CfNeuron = IDL.Record({\n has_created_neuron_recipes: IDL.Opt(IDL.Bool),\n nns_neuron_id: IDL.Nat64,\n amount_icp_e8s: IDL.Nat64,\n });\n const CfParticipant = IDL.Record({\n hotkey_principal: IDL.Text,\n cf_neurons: IDL.Vec(CfNeuron),\n });\n const NeuronsFundParticipants = IDL.Record({\n participants: IDL.Vec(CfParticipant),\n });\n const TreasuryDistribution = IDL.Record({ total_e8s: IDL.Nat64 });\n const NeuronDistribution = IDL.Record({\n controller: IDL.Opt(IDL.Principal),\n dissolve_delay_seconds: IDL.Nat64,\n memo: IDL.Nat64,\n stake_e8s: IDL.Nat64,\n vesting_period_seconds: IDL.Opt(IDL.Nat64),\n });\n const DeveloperDistribution = IDL.Record({\n developer_neurons: IDL.Vec(NeuronDistribution),\n });\n const AirdropDistribution = IDL.Record({\n airdrop_neurons: IDL.Vec(NeuronDistribution),\n });\n const SwapDistribution = IDL.Record({\n total_e8s: IDL.Nat64,\n initial_swap_amount_e8s: IDL.Nat64,\n });\n const FractionalDeveloperVotingPower = IDL.Record({\n treasury_distribution: IDL.Opt(TreasuryDistribution),\n developer_distribution: IDL.Opt(DeveloperDistribution),\n airdrop_distribution: IDL.Opt(AirdropDistribution),\n swap_distribution: IDL.Opt(SwapDistribution),\n });\n const InitialTokenDistribution = IDL.Variant({\n FractionalDeveloperVotingPower: FractionalDeveloperVotingPower,\n });\n const Countries = IDL.Record({ iso_codes: IDL.Vec(IDL.Text) });\n const SnsInitPayload = IDL.Record({\n url: IDL.Opt(IDL.Text),\n max_dissolve_delay_seconds: IDL.Opt(IDL.Nat64),\n max_dissolve_delay_bonus_percentage: IDL.Opt(IDL.Nat64),\n nns_proposal_id: IDL.Opt(IDL.Nat64),\n neurons_fund_participation: IDL.Opt(IDL.Bool),\n min_participant_icp_e8s: IDL.Opt(IDL.Nat64),\n neuron_basket_construction_parameters: IDL.Opt(\n NeuronBasketConstructionParameters\n ),\n fallback_controller_principal_ids: IDL.Vec(IDL.Text),\n token_symbol: IDL.Opt(IDL.Text),\n final_reward_rate_basis_points: IDL.Opt(IDL.Nat64),\n max_icp_e8s: IDL.Opt(IDL.Nat64),\n neuron_minimum_stake_e8s: IDL.Opt(IDL.Nat64),\n confirmation_text: IDL.Opt(IDL.Text),\n logo: IDL.Opt(IDL.Text),\n name: IDL.Opt(IDL.Text),\n swap_start_timestamp_seconds: IDL.Opt(IDL.Nat64),\n swap_due_timestamp_seconds: IDL.Opt(IDL.Nat64),\n initial_voting_period_seconds: IDL.Opt(IDL.Nat64),\n neuron_minimum_dissolve_delay_to_vote_seconds: IDL.Opt(IDL.Nat64),\n description: IDL.Opt(IDL.Text),\n max_neuron_age_seconds_for_age_bonus: IDL.Opt(IDL.Nat64),\n min_participants: IDL.Opt(IDL.Nat64),\n initial_reward_rate_basis_points: IDL.Opt(IDL.Nat64),\n wait_for_quiet_deadline_increase_seconds: IDL.Opt(IDL.Nat64),\n transaction_fee_e8s: IDL.Opt(IDL.Nat64),\n dapp_canisters: IDL.Opt(DappCanisters),\n neurons_fund_participation_constraints: IDL.Opt(\n NeuronsFundParticipationConstraints\n ),\n neurons_fund_participants: IDL.Opt(NeuronsFundParticipants),\n max_age_bonus_percentage: IDL.Opt(IDL.Nat64),\n initial_token_distribution: IDL.Opt(InitialTokenDistribution),\n reward_rate_transition_duration_seconds: IDL.Opt(IDL.Nat64),\n token_logo: IDL.Opt(IDL.Text),\n token_name: IDL.Opt(IDL.Text),\n max_participant_icp_e8s: IDL.Opt(IDL.Nat64),\n min_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n proposal_reject_cost_e8s: IDL.Opt(IDL.Nat64),\n restricted_countries: IDL.Opt(Countries),\n min_icp_e8s: IDL.Opt(IDL.Nat64),\n max_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n });\n const DeployNewSnsRequest = IDL.Record({\n sns_init_payload: IDL.Opt(SnsInitPayload),\n });\n const DappCanistersTransferResult = IDL.Record({\n restored_dapp_canisters: IDL.Vec(Canister),\n nns_controlled_dapp_canisters: IDL.Vec(Canister),\n sns_controlled_dapp_canisters: IDL.Vec(Canister),\n });\n const SnsCanisterIds = IDL.Record({\n root: IDL.Opt(IDL.Principal),\n swap: IDL.Opt(IDL.Principal),\n ledger: IDL.Opt(IDL.Principal),\n index: IDL.Opt(IDL.Principal),\n governance: IDL.Opt(IDL.Principal),\n });\n const DeployNewSnsResponse = IDL.Record({\n dapp_canisters_transfer_result: IDL.Opt(DappCanistersTransferResult),\n subnet_id: IDL.Opt(IDL.Principal),\n error: IDL.Opt(SnsWasmError),\n canisters: IDL.Opt(SnsCanisterIds),\n });\n const GetAllowedPrincipalsResponse = IDL.Record({\n allowed_principals: IDL.Vec(IDL.Principal),\n });\n const GetDeployedSnsByProposalIdRequest = IDL.Record({\n proposal_id: IDL.Nat64,\n });\n const DeployedSns = IDL.Record({\n root_canister_id: IDL.Opt(IDL.Principal),\n governance_canister_id: IDL.Opt(IDL.Principal),\n index_canister_id: IDL.Opt(IDL.Principal),\n swap_canister_id: IDL.Opt(IDL.Principal),\n ledger_canister_id: IDL.Opt(IDL.Principal),\n });\n const GetDeployedSnsByProposalIdResult = IDL.Variant({\n Error: SnsWasmError,\n DeployedSns: DeployedSns,\n });\n const GetDeployedSnsByProposalIdResponse = IDL.Record({\n get_deployed_sns_by_proposal_id_result: IDL.Opt(\n GetDeployedSnsByProposalIdResult\n ),\n });\n const SnsVersion = IDL.Record({\n archive_wasm_hash: IDL.Vec(IDL.Nat8),\n root_wasm_hash: IDL.Vec(IDL.Nat8),\n swap_wasm_hash: IDL.Vec(IDL.Nat8),\n ledger_wasm_hash: IDL.Vec(IDL.Nat8),\n governance_wasm_hash: IDL.Vec(IDL.Nat8),\n index_wasm_hash: IDL.Vec(IDL.Nat8),\n });\n const GetNextSnsVersionRequest = IDL.Record({\n governance_canister_id: IDL.Opt(IDL.Principal),\n current_version: IDL.Opt(SnsVersion),\n });\n const GetNextSnsVersionResponse = IDL.Record({\n next_version: IDL.Opt(SnsVersion),\n });\n const GetSnsSubnetIdsResponse = IDL.Record({\n sns_subnet_ids: IDL.Vec(IDL.Principal),\n });\n const GetWasmRequest = IDL.Record({ hash: IDL.Vec(IDL.Nat8) });\n const GetWasmResponse = IDL.Record({ wasm: IDL.Opt(SnsWasm) });\n const SnsUpgrade = IDL.Record({\n next_version: IDL.Opt(SnsVersion),\n current_version: IDL.Opt(SnsVersion),\n });\n const InsertUpgradePathEntriesRequest = IDL.Record({\n upgrade_path: IDL.Vec(SnsUpgrade),\n sns_governance_canister_id: IDL.Opt(IDL.Principal),\n });\n const InsertUpgradePathEntriesResponse = IDL.Record({\n error: IDL.Opt(SnsWasmError),\n });\n const ListDeployedSnsesResponse = IDL.Record({\n instances: IDL.Vec(DeployedSns),\n });\n const ListUpgradeStepsRequest = IDL.Record({\n limit: IDL.Nat32,\n starting_at: IDL.Opt(SnsVersion),\n sns_governance_canister_id: IDL.Opt(IDL.Principal),\n });\n const PrettySnsVersion = IDL.Record({\n archive_wasm_hash: IDL.Text,\n root_wasm_hash: IDL.Text,\n swap_wasm_hash: IDL.Text,\n ledger_wasm_hash: IDL.Text,\n governance_wasm_hash: IDL.Text,\n index_wasm_hash: IDL.Text,\n });\n const ListUpgradeStep = IDL.Record({\n pretty_version: IDL.Opt(PrettySnsVersion),\n version: IDL.Opt(SnsVersion),\n });\n const ListUpgradeStepsResponse = IDL.Record({\n steps: IDL.Vec(ListUpgradeStep),\n });\n const UpdateAllowedPrincipalsRequest = IDL.Record({\n added_principals: IDL.Vec(IDL.Principal),\n removed_principals: IDL.Vec(IDL.Principal),\n });\n const UpdateAllowedPrincipalsResult = IDL.Variant({\n Error: SnsWasmError,\n AllowedPrincipals: GetAllowedPrincipalsResponse,\n });\n const UpdateAllowedPrincipalsResponse = IDL.Record({\n update_allowed_principals_result: IDL.Opt(UpdateAllowedPrincipalsResult),\n });\n const UpdateSnsSubnetListRequest = IDL.Record({\n sns_subnet_ids_to_add: IDL.Vec(IDL.Principal),\n sns_subnet_ids_to_remove: IDL.Vec(IDL.Principal),\n });\n const UpdateSnsSubnetListResponse = IDL.Record({\n error: IDL.Opt(SnsWasmError),\n });\n return IDL.Service({\n add_wasm: IDL.Func([AddWasmRequest], [AddWasmResponse], []),\n deploy_new_sns: IDL.Func([DeployNewSnsRequest], [DeployNewSnsResponse], []),\n get_allowed_principals: IDL.Func(\n [IDL.Record({})],\n [GetAllowedPrincipalsResponse],\n [\"query\"]\n ),\n get_deployed_sns_by_proposal_id: IDL.Func(\n [GetDeployedSnsByProposalIdRequest],\n [GetDeployedSnsByProposalIdResponse],\n [\"query\"]\n ),\n get_latest_sns_version_pretty: IDL.Func(\n [IDL.Null],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))],\n [\"query\"]\n ),\n get_next_sns_version: IDL.Func(\n [GetNextSnsVersionRequest],\n [GetNextSnsVersionResponse],\n [\"query\"]\n ),\n get_sns_subnet_ids: IDL.Func(\n [IDL.Record({})],\n [GetSnsSubnetIdsResponse],\n [\"query\"]\n ),\n get_wasm: IDL.Func([GetWasmRequest], [GetWasmResponse], [\"query\"]),\n insert_upgrade_path_entries: IDL.Func(\n [InsertUpgradePathEntriesRequest],\n [InsertUpgradePathEntriesResponse],\n []\n ),\n list_deployed_snses: IDL.Func(\n [IDL.Record({})],\n [ListDeployedSnsesResponse],\n [\"query\"]\n ),\n list_upgrade_steps: IDL.Func(\n [ListUpgradeStepsRequest],\n [ListUpgradeStepsResponse],\n [\"query\"]\n ),\n update_allowed_principals: IDL.Func(\n [UpdateAllowedPrincipalsRequest],\n [UpdateAllowedPrincipalsResponse],\n []\n ),\n update_sns_subnet_list: IDL.Func(\n [UpdateSnsSubnetListRequest],\n [UpdateSnsSubnetListResponse],\n []\n ),\n });\n};\n","import { SNS_WASM_SERVICE, SNS_WASM_INTERFACE_FACTORY } from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\n\nexport const sns_wasm = async () =>\n actor.create({\n canisterId: \"qaa6y-5yaaa-aaaaa-aaafa-cai\",\n idlFactory: SNS_WASM_INTERFACE_FACTORY,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const NeuronBasketConstructionParameters = IDL.Record({\n dissolve_delay_interval_seconds: IDL.Nat64,\n count: IDL.Nat64,\n });\n const LinearScalingCoefficient = IDL.Record({\n slope_numerator: IDL.Opt(IDL.Nat64),\n intercept_icp_e8s: IDL.Opt(IDL.Nat64),\n from_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n slope_denominator: IDL.Opt(IDL.Nat64),\n to_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n });\n const IdealMatchedParticipationFunction = IDL.Record({\n serialized_representation: IDL.Opt(IDL.Text),\n });\n const NeuronsFundParticipationConstraints = IDL.Record({\n coefficient_intervals: IDL.Vec(LinearScalingCoefficient),\n max_neurons_fund_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n min_direct_participation_threshold_icp_e8s: IDL.Opt(IDL.Nat64),\n ideal_matched_participation_function: IDL.Opt(\n IdealMatchedParticipationFunction\n ),\n });\n const CfNeuron = IDL.Record({\n has_created_neuron_recipes: IDL.Opt(IDL.Bool),\n nns_neuron_id: IDL.Nat64,\n amount_icp_e8s: IDL.Nat64,\n });\n const CfParticipant = IDL.Record({\n hotkey_principal: IDL.Text,\n cf_neurons: IDL.Vec(CfNeuron),\n });\n const NeuronsFundParticipants = IDL.Record({\n cf_participants: IDL.Vec(CfParticipant),\n });\n const Countries = IDL.Record({ iso_codes: IDL.Vec(IDL.Text) });\n const Init = IDL.Record({\n nns_proposal_id: IDL.Opt(IDL.Nat64),\n sns_root_canister_id: IDL.Text,\n neurons_fund_participation: IDL.Opt(IDL.Bool),\n min_participant_icp_e8s: IDL.Opt(IDL.Nat64),\n neuron_basket_construction_parameters: IDL.Opt(\n NeuronBasketConstructionParameters\n ),\n fallback_controller_principal_ids: IDL.Vec(IDL.Text),\n max_icp_e8s: IDL.Opt(IDL.Nat64),\n neuron_minimum_stake_e8s: IDL.Opt(IDL.Nat64),\n confirmation_text: IDL.Opt(IDL.Text),\n swap_start_timestamp_seconds: IDL.Opt(IDL.Nat64),\n swap_due_timestamp_seconds: IDL.Opt(IDL.Nat64),\n min_participants: IDL.Opt(IDL.Nat32),\n sns_token_e8s: IDL.Opt(IDL.Nat64),\n nns_governance_canister_id: IDL.Text,\n transaction_fee_e8s: IDL.Opt(IDL.Nat64),\n icp_ledger_canister_id: IDL.Text,\n sns_ledger_canister_id: IDL.Text,\n neurons_fund_participation_constraints: IDL.Opt(\n NeuronsFundParticipationConstraints\n ),\n neurons_fund_participants: IDL.Opt(NeuronsFundParticipants),\n should_auto_finalize: IDL.Opt(IDL.Bool),\n max_participant_icp_e8s: IDL.Opt(IDL.Nat64),\n sns_governance_canister_id: IDL.Text,\n min_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n restricted_countries: IDL.Opt(Countries),\n min_icp_e8s: IDL.Opt(IDL.Nat64),\n max_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n });\n const ErrorRefundIcpRequest = IDL.Record({\n source_principal_id: IDL.Opt(IDL.Principal),\n });\n const Ok = IDL.Record({ block_height: IDL.Opt(IDL.Nat64) });\n const Err = IDL.Record({\n description: IDL.Opt(IDL.Text),\n error_type: IDL.Opt(IDL.Int32),\n });\n const Result = IDL.Variant({ Ok: Ok, Err: Err });\n const ErrorRefundIcpResponse = IDL.Record({ result: IDL.Opt(Result) });\n const CanisterCallError = IDL.Record({\n code: IDL.Opt(IDL.Int32),\n description: IDL.Text,\n });\n const FailedUpdate = IDL.Record({\n err: IDL.Opt(CanisterCallError),\n dapp_canister_id: IDL.Opt(IDL.Principal),\n });\n const SetDappControllersResponse = IDL.Record({\n failed_updates: IDL.Vec(FailedUpdate),\n });\n const Possibility = IDL.Variant({\n Ok: SetDappControllersResponse,\n Err: CanisterCallError,\n });\n const SetDappControllersCallResult = IDL.Record({\n possibility: IDL.Opt(Possibility),\n });\n const SweepResult = IDL.Record({\n failure: IDL.Nat32,\n skipped: IDL.Nat32,\n invalid: IDL.Nat32,\n success: IDL.Nat32,\n global_failures: IDL.Nat32,\n });\n const GovernanceError = IDL.Record({\n error_message: IDL.Text,\n error_type: IDL.Int32,\n });\n const Response = IDL.Record({\n governance_error: IDL.Opt(GovernanceError),\n });\n const Possibility_1 = IDL.Variant({\n Ok: Response,\n Err: CanisterCallError,\n });\n const SettleCommunityFundParticipationResult = IDL.Record({\n possibility: IDL.Opt(Possibility_1),\n });\n const Ok_1 = IDL.Record({\n neurons_fund_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n neurons_fund_neurons_count: IDL.Opt(IDL.Nat64),\n });\n const Error = IDL.Record({ message: IDL.Opt(IDL.Text) });\n const Possibility_2 = IDL.Variant({ Ok: Ok_1, Err: Error });\n const SettleNeuronsFundParticipationResult = IDL.Record({\n possibility: IDL.Opt(Possibility_2),\n });\n const Possibility_3 = IDL.Variant({\n Ok: IDL.Record({}),\n Err: CanisterCallError,\n });\n const SetModeCallResult = IDL.Record({\n possibility: IDL.Opt(Possibility_3),\n });\n const FinalizeSwapResponse = IDL.Record({\n set_dapp_controllers_call_result: IDL.Opt(SetDappControllersCallResult),\n create_sns_neuron_recipes_result: IDL.Opt(SweepResult),\n settle_community_fund_participation_result: IDL.Opt(\n SettleCommunityFundParticipationResult\n ),\n error_message: IDL.Opt(IDL.Text),\n settle_neurons_fund_participation_result: IDL.Opt(\n SettleNeuronsFundParticipationResult\n ),\n set_mode_call_result: IDL.Opt(SetModeCallResult),\n sweep_icp_result: IDL.Opt(SweepResult),\n claim_neuron_result: IDL.Opt(SweepResult),\n sweep_sns_result: IDL.Opt(SweepResult),\n });\n const GetAutoFinalizationStatusResponse = IDL.Record({\n auto_finalize_swap_response: IDL.Opt(FinalizeSwapResponse),\n has_auto_finalize_been_attempted: IDL.Opt(IDL.Bool),\n is_auto_finalize_enabled: IDL.Opt(IDL.Bool),\n });\n const GetBuyerStateRequest = IDL.Record({\n principal_id: IDL.Opt(IDL.Principal),\n });\n const TransferableAmount = IDL.Record({\n transfer_fee_paid_e8s: IDL.Opt(IDL.Nat64),\n transfer_start_timestamp_seconds: IDL.Nat64,\n amount_e8s: IDL.Nat64,\n amount_transferred_e8s: IDL.Opt(IDL.Nat64),\n transfer_success_timestamp_seconds: IDL.Nat64,\n });\n const BuyerState = IDL.Record({\n icp: IDL.Opt(TransferableAmount),\n has_created_neuron_recipes: IDL.Opt(IDL.Bool),\n });\n const GetBuyerStateResponse = IDL.Record({\n buyer_state: IDL.Opt(BuyerState),\n });\n const GetBuyersTotalResponse = IDL.Record({ buyers_total: IDL.Nat64 });\n const CanisterStatusType = IDL.Variant({\n stopped: IDL.Null,\n stopping: IDL.Null,\n running: IDL.Null,\n });\n const DefiniteCanisterSettingsArgs = IDL.Record({\n freezing_threshold: IDL.Nat,\n controllers: IDL.Vec(IDL.Principal),\n memory_allocation: IDL.Nat,\n compute_allocation: IDL.Nat,\n });\n const CanisterStatusResultV2 = IDL.Record({\n status: CanisterStatusType,\n memory_size: IDL.Nat,\n cycles: IDL.Nat,\n settings: DefiniteCanisterSettingsArgs,\n idle_cycles_burned_per_day: IDL.Nat,\n module_hash: IDL.Opt(IDL.Vec(IDL.Nat8)),\n });\n const GetDerivedStateResponse = IDL.Record({\n sns_tokens_per_icp: IDL.Opt(IDL.Float64),\n buyer_total_icp_e8s: IDL.Opt(IDL.Nat64),\n cf_participant_count: IDL.Opt(IDL.Nat64),\n neurons_fund_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n direct_participant_count: IDL.Opt(IDL.Nat64),\n cf_neuron_count: IDL.Opt(IDL.Nat64),\n });\n const GetInitResponse = IDL.Record({ init: IDL.Opt(Init) });\n const GetLifecycleResponse = IDL.Record({\n decentralization_sale_open_timestamp_seconds: IDL.Opt(IDL.Nat64),\n lifecycle: IDL.Opt(IDL.Int32),\n decentralization_swap_termination_timestamp_seconds: IDL.Opt(IDL.Nat64),\n });\n const Icrc1Account = IDL.Record({\n owner: IDL.Opt(IDL.Principal),\n subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n });\n const Ticket = IDL.Record({\n creation_time: IDL.Nat64,\n ticket_id: IDL.Nat64,\n account: IDL.Opt(Icrc1Account),\n amount_icp_e8s: IDL.Nat64,\n });\n const Ok_2 = IDL.Record({ ticket: IDL.Opt(Ticket) });\n const Err_1 = IDL.Record({ error_type: IDL.Opt(IDL.Int32) });\n const Result_1 = IDL.Variant({ Ok: Ok_2, Err: Err_1 });\n const GetOpenTicketResponse = IDL.Record({ result: IDL.Opt(Result_1) });\n const Params = IDL.Record({\n min_participant_icp_e8s: IDL.Nat64,\n neuron_basket_construction_parameters: IDL.Opt(\n NeuronBasketConstructionParameters\n ),\n max_icp_e8s: IDL.Nat64,\n swap_due_timestamp_seconds: IDL.Nat64,\n min_participants: IDL.Nat32,\n sns_token_e8s: IDL.Nat64,\n sale_delay_seconds: IDL.Opt(IDL.Nat64),\n max_participant_icp_e8s: IDL.Nat64,\n min_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n min_icp_e8s: IDL.Nat64,\n max_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n });\n const GetSaleParametersResponse = IDL.Record({ params: IDL.Opt(Params) });\n const NeuronId = IDL.Record({ id: IDL.Vec(IDL.Nat8) });\n const NeuronAttributes = IDL.Record({\n dissolve_delay_seconds: IDL.Nat64,\n memo: IDL.Nat64,\n followees: IDL.Vec(NeuronId),\n });\n const CfInvestment = IDL.Record({\n hotkey_principal: IDL.Text,\n nns_neuron_id: IDL.Nat64,\n });\n const DirectInvestment = IDL.Record({ buyer_principal: IDL.Text });\n const Investor = IDL.Variant({\n CommunityFund: CfInvestment,\n Direct: DirectInvestment,\n });\n const SnsNeuronRecipe = IDL.Record({\n sns: IDL.Opt(TransferableAmount),\n claimed_status: IDL.Opt(IDL.Int32),\n neuron_attributes: IDL.Opt(NeuronAttributes),\n investor: IDL.Opt(Investor),\n });\n const Swap = IDL.Record({\n auto_finalize_swap_response: IDL.Opt(FinalizeSwapResponse),\n neuron_recipes: IDL.Vec(SnsNeuronRecipe),\n next_ticket_id: IDL.Opt(IDL.Nat64),\n decentralization_sale_open_timestamp_seconds: IDL.Opt(IDL.Nat64),\n finalize_swap_in_progress: IDL.Opt(IDL.Bool),\n cf_participants: IDL.Vec(CfParticipant),\n init: IDL.Opt(Init),\n already_tried_to_auto_finalize: IDL.Opt(IDL.Bool),\n neurons_fund_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n purge_old_tickets_last_completion_timestamp_nanoseconds: IDL.Opt(IDL.Nat64),\n direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n lifecycle: IDL.Int32,\n purge_old_tickets_next_principal: IDL.Opt(IDL.Vec(IDL.Nat8)),\n decentralization_swap_termination_timestamp_seconds: IDL.Opt(IDL.Nat64),\n buyers: IDL.Vec(IDL.Tuple(IDL.Text, BuyerState)),\n params: IDL.Opt(Params),\n open_sns_token_swap_proposal_id: IDL.Opt(IDL.Nat64),\n });\n const DerivedState = IDL.Record({\n sns_tokens_per_icp: IDL.Float32,\n buyer_total_icp_e8s: IDL.Nat64,\n cf_participant_count: IDL.Opt(IDL.Nat64),\n neurons_fund_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n direct_participant_count: IDL.Opt(IDL.Nat64),\n cf_neuron_count: IDL.Opt(IDL.Nat64),\n });\n const GetStateResponse = IDL.Record({\n swap: IDL.Opt(Swap),\n derived: IDL.Opt(DerivedState),\n });\n const ListCommunityFundParticipantsRequest = IDL.Record({\n offset: IDL.Opt(IDL.Nat64),\n limit: IDL.Opt(IDL.Nat32),\n });\n const ListDirectParticipantsRequest = IDL.Record({\n offset: IDL.Opt(IDL.Nat32),\n limit: IDL.Opt(IDL.Nat32),\n });\n const Participant = IDL.Record({\n participation: IDL.Opt(BuyerState),\n participant_id: IDL.Opt(IDL.Principal),\n });\n const ListDirectParticipantsResponse = IDL.Record({\n participants: IDL.Vec(Participant),\n });\n const ListSnsNeuronRecipesRequest = IDL.Record({\n offset: IDL.Opt(IDL.Nat64),\n limit: IDL.Opt(IDL.Nat32),\n });\n const ListSnsNeuronRecipesResponse = IDL.Record({\n sns_neuron_recipes: IDL.Vec(SnsNeuronRecipe),\n });\n const NewSaleTicketRequest = IDL.Record({\n subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n amount_icp_e8s: IDL.Nat64,\n });\n const InvalidUserAmount = IDL.Record({\n min_amount_icp_e8s_included: IDL.Nat64,\n max_amount_icp_e8s_included: IDL.Nat64,\n });\n const Err_2 = IDL.Record({\n invalid_user_amount: IDL.Opt(InvalidUserAmount),\n existing_ticket: IDL.Opt(Ticket),\n error_type: IDL.Int32,\n });\n const Result_2 = IDL.Variant({ Ok: Ok_2, Err: Err_2 });\n const NewSaleTicketResponse = IDL.Record({ result: IDL.Opt(Result_2) });\n const OpenRequest = IDL.Record({\n cf_participants: IDL.Vec(CfParticipant),\n params: IDL.Opt(Params),\n open_sns_token_swap_proposal_id: IDL.Opt(IDL.Nat64),\n });\n const RefreshBuyerTokensRequest = IDL.Record({\n confirmation_text: IDL.Opt(IDL.Text),\n buyer: IDL.Text,\n });\n const RefreshBuyerTokensResponse = IDL.Record({\n icp_accepted_participation_e8s: IDL.Nat64,\n icp_ledger_account_balance_e8s: IDL.Nat64,\n });\n return IDL.Service({\n error_refund_icp: IDL.Func(\n [ErrorRefundIcpRequest],\n [ErrorRefundIcpResponse],\n []\n ),\n finalize_swap: IDL.Func([IDL.Record({})], [FinalizeSwapResponse], []),\n get_auto_finalization_status: IDL.Func(\n [IDL.Record({})],\n [GetAutoFinalizationStatusResponse],\n [\"query\"]\n ),\n get_buyer_state: IDL.Func(\n [GetBuyerStateRequest],\n [GetBuyerStateResponse],\n [\"query\"]\n ),\n get_buyers_total: IDL.Func([IDL.Record({})], [GetBuyersTotalResponse], []),\n get_canister_status: IDL.Func(\n [IDL.Record({})],\n [CanisterStatusResultV2],\n []\n ),\n get_derived_state: IDL.Func(\n [IDL.Record({})],\n [GetDerivedStateResponse],\n [\"query\"]\n ),\n get_init: IDL.Func([IDL.Record({})], [GetInitResponse], [\"query\"]),\n get_lifecycle: IDL.Func(\n [IDL.Record({})],\n [GetLifecycleResponse],\n [\"query\"]\n ),\n get_open_ticket: IDL.Func(\n [IDL.Record({})],\n [GetOpenTicketResponse],\n [\"query\"]\n ),\n get_sale_parameters: IDL.Func(\n [IDL.Record({})],\n [GetSaleParametersResponse],\n [\"query\"]\n ),\n get_state: IDL.Func([IDL.Record({})], [GetStateResponse], [\"query\"]),\n list_community_fund_participants: IDL.Func(\n [ListCommunityFundParticipantsRequest],\n [NeuronsFundParticipants],\n [\"query\"]\n ),\n list_direct_participants: IDL.Func(\n [ListDirectParticipantsRequest],\n [ListDirectParticipantsResponse],\n [\"query\"]\n ),\n list_sns_neuron_recipes: IDL.Func(\n [ListSnsNeuronRecipesRequest],\n [ListSnsNeuronRecipesResponse],\n [\"query\"]\n ),\n new_sale_ticket: IDL.Func(\n [NewSaleTicketRequest],\n [NewSaleTicketResponse],\n []\n ),\n notify_payment_failure: IDL.Func([IDL.Record({})], [Ok_2], []),\n open: IDL.Func([OpenRequest], [IDL.Record({})], []),\n refresh_buyer_tokens: IDL.Func(\n [RefreshBuyerTokensRequest],\n [RefreshBuyerTokensResponse],\n []\n ),\n restore_dapp_controllers: IDL.Func(\n [IDL.Record({})],\n [SetDappControllersCallResult],\n []\n ),\n });\n};\nexport const init = ({ IDL }: any) => {\n const NeuronBasketConstructionParameters = IDL.Record({\n dissolve_delay_interval_seconds: IDL.Nat64,\n count: IDL.Nat64,\n });\n const LinearScalingCoefficient = IDL.Record({\n slope_numerator: IDL.Opt(IDL.Nat64),\n intercept_icp_e8s: IDL.Opt(IDL.Nat64),\n from_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n slope_denominator: IDL.Opt(IDL.Nat64),\n to_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n });\n const IdealMatchedParticipationFunction = IDL.Record({\n serialized_representation: IDL.Opt(IDL.Text),\n });\n const NeuronsFundParticipationConstraints = IDL.Record({\n coefficient_intervals: IDL.Vec(LinearScalingCoefficient),\n max_neurons_fund_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n min_direct_participation_threshold_icp_e8s: IDL.Opt(IDL.Nat64),\n ideal_matched_participation_function: IDL.Opt(\n IdealMatchedParticipationFunction\n ),\n });\n const CfNeuron = IDL.Record({\n has_created_neuron_recipes: IDL.Opt(IDL.Bool),\n nns_neuron_id: IDL.Nat64,\n amount_icp_e8s: IDL.Nat64,\n });\n const CfParticipant = IDL.Record({\n hotkey_principal: IDL.Text,\n cf_neurons: IDL.Vec(CfNeuron),\n });\n const NeuronsFundParticipants = IDL.Record({\n cf_participants: IDL.Vec(CfParticipant),\n });\n const Countries = IDL.Record({ iso_codes: IDL.Vec(IDL.Text) });\n const Init = IDL.Record({\n nns_proposal_id: IDL.Opt(IDL.Nat64),\n sns_root_canister_id: IDL.Text,\n neurons_fund_participation: IDL.Opt(IDL.Bool),\n min_participant_icp_e8s: IDL.Opt(IDL.Nat64),\n neuron_basket_construction_parameters: IDL.Opt(\n NeuronBasketConstructionParameters\n ),\n fallback_controller_principal_ids: IDL.Vec(IDL.Text),\n max_icp_e8s: IDL.Opt(IDL.Nat64),\n neuron_minimum_stake_e8s: IDL.Opt(IDL.Nat64),\n confirmation_text: IDL.Opt(IDL.Text),\n swap_start_timestamp_seconds: IDL.Opt(IDL.Nat64),\n swap_due_timestamp_seconds: IDL.Opt(IDL.Nat64),\n min_participants: IDL.Opt(IDL.Nat32),\n sns_token_e8s: IDL.Opt(IDL.Nat64),\n nns_governance_canister_id: IDL.Text,\n transaction_fee_e8s: IDL.Opt(IDL.Nat64),\n icp_ledger_canister_id: IDL.Text,\n sns_ledger_canister_id: IDL.Text,\n neurons_fund_participation_constraints: IDL.Opt(\n NeuronsFundParticipationConstraints\n ),\n neurons_fund_participants: IDL.Opt(NeuronsFundParticipants),\n should_auto_finalize: IDL.Opt(IDL.Bool),\n max_participant_icp_e8s: IDL.Opt(IDL.Nat64),\n sns_governance_canister_id: IDL.Text,\n min_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n restricted_countries: IDL.Opt(Countries),\n min_icp_e8s: IDL.Opt(IDL.Nat64),\n max_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n });\n return [Init];\n};\n","import { SNS_SWAP_SERVICE, SNS_SWAP_INTERFACE_FACTORY } from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\n\nexport const sns_swap = async (canisterId: string, identity?: true) =>\n actor.create({\n canisterId,\n idlFactory: SNS_SWAP_INTERFACE_FACTORY,\n identity,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const GenericNervousSystemFunction = IDL.Record({\n validator_canister_id: IDL.Opt(IDL.Principal),\n target_canister_id: IDL.Opt(IDL.Principal),\n validator_method_name: IDL.Opt(IDL.Text),\n target_method_name: IDL.Opt(IDL.Text),\n });\n const FunctionType = IDL.Variant({\n NativeNervousSystemFunction: IDL.Record({}),\n GenericNervousSystemFunction: GenericNervousSystemFunction,\n });\n const NervousSystemFunction = IDL.Record({\n id: IDL.Nat64,\n name: IDL.Text,\n description: IDL.Opt(IDL.Text),\n function_type: IDL.Opt(FunctionType),\n });\n const GovernanceCachedMetrics = IDL.Record({\n not_dissolving_neurons_e8s_buckets: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Float64)),\n garbage_collectable_neurons_count: IDL.Nat64,\n neurons_with_invalid_stake_count: IDL.Nat64,\n not_dissolving_neurons_count_buckets: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Nat64)),\n neurons_with_less_than_6_months_dissolve_delay_count: IDL.Nat64,\n dissolved_neurons_count: IDL.Nat64,\n total_staked_e8s: IDL.Nat64,\n total_supply_governance_tokens: IDL.Nat64,\n not_dissolving_neurons_count: IDL.Nat64,\n dissolved_neurons_e8s: IDL.Nat64,\n neurons_with_less_than_6_months_dissolve_delay_e8s: IDL.Nat64,\n dissolving_neurons_count_buckets: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Nat64)),\n dissolving_neurons_count: IDL.Nat64,\n dissolving_neurons_e8s_buckets: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Float64)),\n timestamp_seconds: IDL.Nat64,\n });\n const MaturityModulation = IDL.Record({\n current_basis_points: IDL.Opt(IDL.Int32),\n updated_at_timestamp_seconds: IDL.Opt(IDL.Nat64),\n });\n const NeuronId = IDL.Record({ id: IDL.Vec(IDL.Nat8) });\n const Followees = IDL.Record({ followees: IDL.Vec(NeuronId) });\n const DefaultFollowees = IDL.Record({\n followees: IDL.Vec(IDL.Tuple(IDL.Nat64, Followees)),\n });\n const NeuronPermissionList = IDL.Record({\n permissions: IDL.Vec(IDL.Int32),\n });\n const VotingRewardsParameters = IDL.Record({\n final_reward_rate_basis_points: IDL.Opt(IDL.Nat64),\n initial_reward_rate_basis_points: IDL.Opt(IDL.Nat64),\n reward_rate_transition_duration_seconds: IDL.Opt(IDL.Nat64),\n round_duration_seconds: IDL.Opt(IDL.Nat64),\n });\n const NervousSystemParameters = IDL.Record({\n default_followees: IDL.Opt(DefaultFollowees),\n max_dissolve_delay_seconds: IDL.Opt(IDL.Nat64),\n max_dissolve_delay_bonus_percentage: IDL.Opt(IDL.Nat64),\n max_followees_per_function: IDL.Opt(IDL.Nat64),\n neuron_claimer_permissions: IDL.Opt(NeuronPermissionList),\n neuron_minimum_stake_e8s: IDL.Opt(IDL.Nat64),\n max_neuron_age_for_age_bonus: IDL.Opt(IDL.Nat64),\n initial_voting_period_seconds: IDL.Opt(IDL.Nat64),\n neuron_minimum_dissolve_delay_to_vote_seconds: IDL.Opt(IDL.Nat64),\n reject_cost_e8s: IDL.Opt(IDL.Nat64),\n max_proposals_to_keep_per_action: IDL.Opt(IDL.Nat32),\n wait_for_quiet_deadline_increase_seconds: IDL.Opt(IDL.Nat64),\n max_number_of_neurons: IDL.Opt(IDL.Nat64),\n transaction_fee_e8s: IDL.Opt(IDL.Nat64),\n max_number_of_proposals_with_ballots: IDL.Opt(IDL.Nat64),\n max_age_bonus_percentage: IDL.Opt(IDL.Nat64),\n neuron_grantable_permissions: IDL.Opt(NeuronPermissionList),\n voting_rewards_parameters: IDL.Opt(VotingRewardsParameters),\n maturity_modulation_disabled: IDL.Opt(IDL.Bool),\n max_number_of_principals_per_neuron: IDL.Opt(IDL.Nat64),\n });\n const Version = IDL.Record({\n archive_wasm_hash: IDL.Vec(IDL.Nat8),\n root_wasm_hash: IDL.Vec(IDL.Nat8),\n swap_wasm_hash: IDL.Vec(IDL.Nat8),\n ledger_wasm_hash: IDL.Vec(IDL.Nat8),\n governance_wasm_hash: IDL.Vec(IDL.Nat8),\n index_wasm_hash: IDL.Vec(IDL.Nat8),\n });\n const ProposalId = IDL.Record({ id: IDL.Nat64 });\n const RewardEvent = IDL.Record({\n rounds_since_last_distribution: IDL.Opt(IDL.Nat64),\n actual_timestamp_seconds: IDL.Nat64,\n end_timestamp_seconds: IDL.Opt(IDL.Nat64),\n distributed_e8s_equivalent: IDL.Nat64,\n round: IDL.Nat64,\n settled_proposals: IDL.Vec(ProposalId),\n });\n const UpgradeInProgress = IDL.Record({\n mark_failed_at_seconds: IDL.Nat64,\n checking_upgrade_lock: IDL.Nat64,\n proposal_id: IDL.Nat64,\n target_version: IDL.Opt(Version),\n });\n const GovernanceError = IDL.Record({\n error_message: IDL.Text,\n error_type: IDL.Int32,\n });\n const Ballot = IDL.Record({\n vote: IDL.Int32,\n cast_timestamp_seconds: IDL.Nat64,\n voting_power: IDL.Nat64,\n });\n const Percentage = IDL.Record({ basis_points: IDL.Opt(IDL.Nat64) });\n const Tally = IDL.Record({\n no: IDL.Nat64,\n yes: IDL.Nat64,\n total: IDL.Nat64,\n timestamp_seconds: IDL.Nat64,\n });\n const ManageDappCanisterSettings = IDL.Record({\n freezing_threshold: IDL.Opt(IDL.Nat64),\n canister_ids: IDL.Vec(IDL.Principal),\n reserved_cycles_limit: IDL.Opt(IDL.Nat64),\n log_visibility: IDL.Opt(IDL.Int32),\n memory_allocation: IDL.Opt(IDL.Nat64),\n compute_allocation: IDL.Opt(IDL.Nat64),\n });\n const RegisterDappCanisters = IDL.Record({\n canister_ids: IDL.Vec(IDL.Principal),\n });\n const Subaccount = IDL.Record({ subaccount: IDL.Vec(IDL.Nat8) });\n const TransferSnsTreasuryFunds = IDL.Record({\n from_treasury: IDL.Int32,\n to_principal: IDL.Opt(IDL.Principal),\n to_subaccount: IDL.Opt(Subaccount),\n memo: IDL.Opt(IDL.Nat64),\n amount_e8s: IDL.Nat64,\n });\n const UpgradeSnsControlledCanister = IDL.Record({\n new_canister_wasm: IDL.Vec(IDL.Nat8),\n mode: IDL.Opt(IDL.Int32),\n canister_id: IDL.Opt(IDL.Principal),\n canister_upgrade_arg: IDL.Opt(IDL.Vec(IDL.Nat8)),\n });\n const DeregisterDappCanisters = IDL.Record({\n canister_ids: IDL.Vec(IDL.Principal),\n new_controllers: IDL.Vec(IDL.Principal),\n });\n const MintSnsTokens = IDL.Record({\n to_principal: IDL.Opt(IDL.Principal),\n to_subaccount: IDL.Opt(Subaccount),\n memo: IDL.Opt(IDL.Nat64),\n amount_e8s: IDL.Opt(IDL.Nat64),\n });\n const ManageSnsMetadata = IDL.Record({\n url: IDL.Opt(IDL.Text),\n logo: IDL.Opt(IDL.Text),\n name: IDL.Opt(IDL.Text),\n description: IDL.Opt(IDL.Text),\n });\n const ExecuteGenericNervousSystemFunction = IDL.Record({\n function_id: IDL.Nat64,\n payload: IDL.Vec(IDL.Nat8),\n });\n const ManageLedgerParameters = IDL.Record({\n transfer_fee: IDL.Opt(IDL.Nat64),\n });\n const Motion = IDL.Record({ motion_text: IDL.Text });\n const Action = IDL.Variant({\n ManageNervousSystemParameters: NervousSystemParameters,\n AddGenericNervousSystemFunction: NervousSystemFunction,\n ManageDappCanisterSettings: ManageDappCanisterSettings,\n RemoveGenericNervousSystemFunction: IDL.Nat64,\n UpgradeSnsToNextVersion: IDL.Record({}),\n RegisterDappCanisters: RegisterDappCanisters,\n TransferSnsTreasuryFunds: TransferSnsTreasuryFunds,\n UpgradeSnsControlledCanister: UpgradeSnsControlledCanister,\n DeregisterDappCanisters: DeregisterDappCanisters,\n MintSnsTokens: MintSnsTokens,\n Unspecified: IDL.Record({}),\n ManageSnsMetadata: ManageSnsMetadata,\n ExecuteGenericNervousSystemFunction: ExecuteGenericNervousSystemFunction,\n ManageLedgerParameters: ManageLedgerParameters,\n Motion: Motion,\n });\n const Proposal = IDL.Record({\n url: IDL.Text,\n title: IDL.Text,\n action: IDL.Opt(Action),\n summary: IDL.Text,\n });\n const WaitForQuietState = IDL.Record({\n current_deadline_timestamp_seconds: IDL.Nat64,\n });\n const ProposalData = IDL.Record({\n id: IDL.Opt(ProposalId),\n payload_text_rendering: IDL.Opt(IDL.Text),\n action: IDL.Nat64,\n failure_reason: IDL.Opt(GovernanceError),\n ballots: IDL.Vec(IDL.Tuple(IDL.Text, Ballot)),\n minimum_yes_proportion_of_total: IDL.Opt(Percentage),\n reward_event_round: IDL.Nat64,\n failed_timestamp_seconds: IDL.Nat64,\n reward_event_end_timestamp_seconds: IDL.Opt(IDL.Nat64),\n proposal_creation_timestamp_seconds: IDL.Nat64,\n initial_voting_period_seconds: IDL.Nat64,\n reject_cost_e8s: IDL.Nat64,\n latest_tally: IDL.Opt(Tally),\n wait_for_quiet_deadline_increase_seconds: IDL.Nat64,\n decided_timestamp_seconds: IDL.Nat64,\n proposal: IDL.Opt(Proposal),\n proposer: IDL.Opt(NeuronId),\n wait_for_quiet_state: IDL.Opt(WaitForQuietState),\n minimum_yes_proportion_of_exercised: IDL.Opt(Percentage),\n is_eligible_for_rewards: IDL.Bool,\n executed_timestamp_seconds: IDL.Nat64,\n });\n const Split = IDL.Record({ memo: IDL.Nat64, amount_e8s: IDL.Nat64 });\n const Follow = IDL.Record({\n function_id: IDL.Nat64,\n followees: IDL.Vec(NeuronId),\n });\n const Account = IDL.Record({\n owner: IDL.Opt(IDL.Principal),\n subaccount: IDL.Opt(Subaccount),\n });\n const DisburseMaturity = IDL.Record({\n to_account: IDL.Opt(Account),\n percentage_to_disburse: IDL.Nat32,\n });\n const ChangeAutoStakeMaturity = IDL.Record({\n requested_setting_for_auto_stake_maturity: IDL.Bool,\n });\n const IncreaseDissolveDelay = IDL.Record({\n additional_dissolve_delay_seconds: IDL.Nat32,\n });\n const SetDissolveTimestamp = IDL.Record({\n dissolve_timestamp_seconds: IDL.Nat64,\n });\n const Operation = IDL.Variant({\n ChangeAutoStakeMaturity: ChangeAutoStakeMaturity,\n StopDissolving: IDL.Record({}),\n StartDissolving: IDL.Record({}),\n IncreaseDissolveDelay: IncreaseDissolveDelay,\n SetDissolveTimestamp: SetDissolveTimestamp,\n });\n const Configure = IDL.Record({ operation: IDL.Opt(Operation) });\n const RegisterVote = IDL.Record({\n vote: IDL.Int32,\n proposal: IDL.Opt(ProposalId),\n });\n const FinalizeDisburseMaturity = IDL.Record({\n amount_to_be_disbursed_e8s: IDL.Nat64,\n to_account: IDL.Opt(Account),\n });\n const MemoAndController = IDL.Record({\n controller: IDL.Opt(IDL.Principal),\n memo: IDL.Nat64,\n });\n const By = IDL.Variant({\n MemoAndController: MemoAndController,\n NeuronId: IDL.Record({}),\n });\n const ClaimOrRefresh = IDL.Record({ by: IDL.Opt(By) });\n const RemoveNeuronPermissions = IDL.Record({\n permissions_to_remove: IDL.Opt(NeuronPermissionList),\n principal_id: IDL.Opt(IDL.Principal),\n });\n const AddNeuronPermissions = IDL.Record({\n permissions_to_add: IDL.Opt(NeuronPermissionList),\n principal_id: IDL.Opt(IDL.Principal),\n });\n const MergeMaturity = IDL.Record({ percentage_to_merge: IDL.Nat32 });\n const Amount = IDL.Record({ e8s: IDL.Nat64 });\n const Disburse = IDL.Record({\n to_account: IDL.Opt(Account),\n amount: IDL.Opt(Amount),\n });\n const Command_2 = IDL.Variant({\n Split: Split,\n Follow: Follow,\n DisburseMaturity: DisburseMaturity,\n Configure: Configure,\n RegisterVote: RegisterVote,\n SyncCommand: IDL.Record({}),\n MakeProposal: Proposal,\n FinalizeDisburseMaturity: FinalizeDisburseMaturity,\n ClaimOrRefreshNeuron: ClaimOrRefresh,\n RemoveNeuronPermissions: RemoveNeuronPermissions,\n AddNeuronPermissions: AddNeuronPermissions,\n MergeMaturity: MergeMaturity,\n Disburse: Disburse,\n });\n const NeuronInFlightCommand = IDL.Record({\n command: IDL.Opt(Command_2),\n timestamp: IDL.Nat64,\n });\n const NeuronPermission = IDL.Record({\n principal: IDL.Opt(IDL.Principal),\n permission_type: IDL.Vec(IDL.Int32),\n });\n const DissolveState = IDL.Variant({\n DissolveDelaySeconds: IDL.Nat64,\n WhenDissolvedTimestampSeconds: IDL.Nat64,\n });\n const DisburseMaturityInProgress = IDL.Record({\n timestamp_of_disbursement_seconds: IDL.Nat64,\n amount_e8s: IDL.Nat64,\n account_to_disburse_to: IDL.Opt(Account),\n finalize_disbursement_timestamp_seconds: IDL.Opt(IDL.Nat64),\n });\n const Neuron = IDL.Record({\n id: IDL.Opt(NeuronId),\n staked_maturity_e8s_equivalent: IDL.Opt(IDL.Nat64),\n permissions: IDL.Vec(NeuronPermission),\n maturity_e8s_equivalent: IDL.Nat64,\n cached_neuron_stake_e8s: IDL.Nat64,\n created_timestamp_seconds: IDL.Nat64,\n source_nns_neuron_id: IDL.Opt(IDL.Nat64),\n auto_stake_maturity: IDL.Opt(IDL.Bool),\n aging_since_timestamp_seconds: IDL.Nat64,\n dissolve_state: IDL.Opt(DissolveState),\n voting_power_percentage_multiplier: IDL.Nat64,\n vesting_period_seconds: IDL.Opt(IDL.Nat64),\n disburse_maturity_in_progress: IDL.Vec(DisburseMaturityInProgress),\n followees: IDL.Vec(IDL.Tuple(IDL.Nat64, Followees)),\n neuron_fees_e8s: IDL.Nat64,\n });\n const Governance = IDL.Record({\n root_canister_id: IDL.Opt(IDL.Principal),\n id_to_nervous_system_functions: IDL.Vec(IDL.Tuple(IDL.Nat64, NervousSystemFunction)),\n metrics: IDL.Opt(GovernanceCachedMetrics),\n maturity_modulation: IDL.Opt(MaturityModulation),\n mode: IDL.Int32,\n parameters: IDL.Opt(NervousSystemParameters),\n is_finalizing_disburse_maturity: IDL.Opt(IDL.Bool),\n deployed_version: IDL.Opt(Version),\n sns_initialization_parameters: IDL.Text,\n latest_reward_event: IDL.Opt(RewardEvent),\n pending_version: IDL.Opt(UpgradeInProgress),\n swap_canister_id: IDL.Opt(IDL.Principal),\n ledger_canister_id: IDL.Opt(IDL.Principal),\n proposals: IDL.Vec(IDL.Tuple(IDL.Nat64, ProposalData)),\n in_flight_commands: IDL.Vec(IDL.Tuple(IDL.Text, NeuronInFlightCommand)),\n sns_metadata: IDL.Opt(ManageSnsMetadata),\n neurons: IDL.Vec(IDL.Tuple(IDL.Text, Neuron)),\n genesis_timestamp_seconds: IDL.Nat64,\n });\n const NeuronParameters = IDL.Record({\n controller: IDL.Opt(IDL.Principal),\n dissolve_delay_seconds: IDL.Opt(IDL.Nat64),\n source_nns_neuron_id: IDL.Opt(IDL.Nat64),\n stake_e8s: IDL.Opt(IDL.Nat64),\n followees: IDL.Vec(NeuronId),\n hotkey: IDL.Opt(IDL.Principal),\n neuron_id: IDL.Opt(NeuronId),\n });\n const ClaimSwapNeuronsRequest = IDL.Record({\n neuron_parameters: IDL.Vec(NeuronParameters),\n });\n const SwapNeuron = IDL.Record({\n id: IDL.Opt(NeuronId),\n status: IDL.Int32,\n });\n const ClaimedSwapNeurons = IDL.Record({\n swap_neurons: IDL.Vec(SwapNeuron),\n });\n const ClaimSwapNeuronsResult = IDL.Variant({\n Ok: ClaimedSwapNeurons,\n Err: IDL.Int32,\n });\n const ClaimSwapNeuronsResponse = IDL.Record({\n claim_swap_neurons_result: IDL.Opt(ClaimSwapNeuronsResult),\n });\n const GetMaturityModulationResponse = IDL.Record({\n maturity_modulation: IDL.Opt(MaturityModulation),\n });\n const GetMetadataResponse = IDL.Record({\n url: IDL.Opt(IDL.Text),\n logo: IDL.Opt(IDL.Text),\n name: IDL.Opt(IDL.Text),\n description: IDL.Opt(IDL.Text),\n });\n const GetModeResponse = IDL.Record({ mode: IDL.Opt(IDL.Int32) });\n const GetNeuron = IDL.Record({ neuron_id: IDL.Opt(NeuronId) });\n const Result = IDL.Variant({ Error: GovernanceError, Neuron: Neuron });\n const GetNeuronResponse = IDL.Record({ result: IDL.Opt(Result) });\n const GetProposal = IDL.Record({ proposal_id: IDL.Opt(ProposalId) });\n const Result_1 = IDL.Variant({\n Error: GovernanceError,\n Proposal: ProposalData,\n });\n const GetProposalResponse = IDL.Record({ result: IDL.Opt(Result_1) });\n const CanisterStatusType = IDL.Variant({\n stopped: IDL.Null,\n stopping: IDL.Null,\n running: IDL.Null,\n });\n const DefiniteCanisterSettingsArgs = IDL.Record({\n freezing_threshold: IDL.Nat,\n controllers: IDL.Vec(IDL.Principal),\n memory_allocation: IDL.Nat,\n compute_allocation: IDL.Nat,\n });\n const CanisterStatusResultV2 = IDL.Record({\n status: CanisterStatusType,\n memory_size: IDL.Nat,\n cycles: IDL.Nat,\n settings: DefiniteCanisterSettingsArgs,\n idle_cycles_burned_per_day: IDL.Nat,\n module_hash: IDL.Opt(IDL.Vec(IDL.Nat8)),\n });\n const GetRunningSnsVersionResponse = IDL.Record({\n deployed_version: IDL.Opt(Version),\n pending_version: IDL.Opt(UpgradeInProgress),\n });\n const GetSnsInitializationParametersResponse = IDL.Record({\n sns_initialization_parameters: IDL.Text,\n });\n const ListNervousSystemFunctionsResponse = IDL.Record({\n reserved_ids: IDL.Vec(IDL.Nat64),\n functions: IDL.Vec(NervousSystemFunction),\n });\n const ListNeurons = IDL.Record({\n of_principal: IDL.Opt(IDL.Principal),\n limit: IDL.Nat32,\n start_page_at: IDL.Opt(NeuronId),\n });\n const ListNeuronsResponse = IDL.Record({ neurons: IDL.Vec(Neuron) });\n const ListProposals = IDL.Record({\n include_reward_status: IDL.Vec(IDL.Int32),\n before_proposal: IDL.Opt(ProposalId),\n limit: IDL.Nat32,\n exclude_type: IDL.Vec(IDL.Nat64),\n include_status: IDL.Vec(IDL.Int32),\n });\n const ListProposalsResponse = IDL.Record({\n proposals: IDL.Vec(ProposalData),\n });\n const StakeMaturity = IDL.Record({\n percentage_to_stake: IDL.Opt(IDL.Nat32),\n });\n const Command = IDL.Variant({\n Split: Split,\n Follow: Follow,\n DisburseMaturity: DisburseMaturity,\n ClaimOrRefresh: ClaimOrRefresh,\n Configure: Configure,\n RegisterVote: RegisterVote,\n MakeProposal: Proposal,\n StakeMaturity: StakeMaturity,\n RemoveNeuronPermissions: RemoveNeuronPermissions,\n AddNeuronPermissions: AddNeuronPermissions,\n MergeMaturity: MergeMaturity,\n Disburse: Disburse,\n });\n const ManageNeuron = IDL.Record({\n subaccount: IDL.Vec(IDL.Nat8),\n command: IDL.Opt(Command),\n });\n const SplitResponse = IDL.Record({ created_neuron_id: IDL.Opt(NeuronId) });\n const DisburseMaturityResponse = IDL.Record({\n amount_disbursed_e8s: IDL.Nat64,\n amount_deducted_e8s: IDL.Opt(IDL.Nat64),\n });\n const ClaimOrRefreshResponse = IDL.Record({\n refreshed_neuron_id: IDL.Opt(NeuronId),\n });\n const StakeMaturityResponse = IDL.Record({\n maturity_e8s: IDL.Nat64,\n staked_maturity_e8s: IDL.Nat64,\n });\n const MergeMaturityResponse = IDL.Record({\n merged_maturity_e8s: IDL.Nat64,\n new_stake_e8s: IDL.Nat64,\n });\n const DisburseResponse = IDL.Record({ transfer_block_height: IDL.Nat64 });\n const Command_1 = IDL.Variant({\n Error: GovernanceError,\n Split: SplitResponse,\n Follow: IDL.Record({}),\n DisburseMaturity: DisburseMaturityResponse,\n ClaimOrRefresh: ClaimOrRefreshResponse,\n Configure: IDL.Record({}),\n RegisterVote: IDL.Record({}),\n MakeProposal: GetProposal,\n RemoveNeuronPermission: IDL.Record({}),\n StakeMaturity: StakeMaturityResponse,\n MergeMaturity: MergeMaturityResponse,\n Disburse: DisburseResponse,\n AddNeuronPermission: IDL.Record({}),\n });\n const ManageNeuronResponse = IDL.Record({ command: IDL.Opt(Command_1) });\n const SetMode = IDL.Record({ mode: IDL.Int32 });\n return IDL.Service({\n claim_swap_neurons: IDL.Func([ClaimSwapNeuronsRequest], [ClaimSwapNeuronsResponse], []),\n fail_stuck_upgrade_in_progress: IDL.Func([IDL.Record({})], [IDL.Record({})], []),\n get_build_metadata: IDL.Func([], [IDL.Text], [\"query\"]),\n get_latest_reward_event: IDL.Func([], [RewardEvent], [\"query\"]),\n get_maturity_modulation: IDL.Func([IDL.Record({})], [GetMaturityModulationResponse], []),\n get_metadata: IDL.Func([IDL.Record({})], [GetMetadataResponse], [\"query\"]),\n get_mode: IDL.Func([IDL.Record({})], [GetModeResponse], [\"query\"]),\n get_nervous_system_parameters: IDL.Func([IDL.Null], [NervousSystemParameters], [\"query\"]),\n get_neuron: IDL.Func([GetNeuron], [GetNeuronResponse], [\"query\"]),\n get_proposal: IDL.Func([GetProposal], [GetProposalResponse], [\"query\"]),\n get_root_canister_status: IDL.Func([IDL.Null], [CanisterStatusResultV2], []),\n get_running_sns_version: IDL.Func([IDL.Record({})], [GetRunningSnsVersionResponse], [\"query\"]),\n get_sns_initialization_parameters: IDL.Func([IDL.Record({})], [GetSnsInitializationParametersResponse], [\"query\"]),\n list_nervous_system_functions: IDL.Func([], [ListNervousSystemFunctionsResponse], [\"query\"]),\n list_neurons: IDL.Func([ListNeurons], [ListNeuronsResponse], [\"query\"]),\n list_proposals: IDL.Func([ListProposals], [ListProposalsResponse], [\"query\"]),\n manage_neuron: IDL.Func([ManageNeuron], [ManageNeuronResponse], []),\n set_mode: IDL.Func([SetMode], [IDL.Record({})], []),\n });\n};\nexport const init = ({ IDL }: any) => {\n const GenericNervousSystemFunction = IDL.Record({\n validator_canister_id: IDL.Opt(IDL.Principal),\n target_canister_id: IDL.Opt(IDL.Principal),\n validator_method_name: IDL.Opt(IDL.Text),\n target_method_name: IDL.Opt(IDL.Text),\n });\n const FunctionType = IDL.Variant({\n NativeNervousSystemFunction: IDL.Record({}),\n GenericNervousSystemFunction: GenericNervousSystemFunction,\n });\n const NervousSystemFunction = IDL.Record({\n id: IDL.Nat64,\n name: IDL.Text,\n description: IDL.Opt(IDL.Text),\n function_type: IDL.Opt(FunctionType),\n });\n const GovernanceCachedMetrics = IDL.Record({\n not_dissolving_neurons_e8s_buckets: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Float64)),\n garbage_collectable_neurons_count: IDL.Nat64,\n neurons_with_invalid_stake_count: IDL.Nat64,\n not_dissolving_neurons_count_buckets: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Nat64)),\n neurons_with_less_than_6_months_dissolve_delay_count: IDL.Nat64,\n dissolved_neurons_count: IDL.Nat64,\n total_staked_e8s: IDL.Nat64,\n total_supply_governance_tokens: IDL.Nat64,\n not_dissolving_neurons_count: IDL.Nat64,\n dissolved_neurons_e8s: IDL.Nat64,\n neurons_with_less_than_6_months_dissolve_delay_e8s: IDL.Nat64,\n dissolving_neurons_count_buckets: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Nat64)),\n dissolving_neurons_count: IDL.Nat64,\n dissolving_neurons_e8s_buckets: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Float64)),\n timestamp_seconds: IDL.Nat64,\n });\n const MaturityModulation = IDL.Record({\n current_basis_points: IDL.Opt(IDL.Int32),\n updated_at_timestamp_seconds: IDL.Opt(IDL.Nat64),\n });\n const NeuronId = IDL.Record({ id: IDL.Vec(IDL.Nat8) });\n const Followees = IDL.Record({ followees: IDL.Vec(NeuronId) });\n const DefaultFollowees = IDL.Record({\n followees: IDL.Vec(IDL.Tuple(IDL.Nat64, Followees)),\n });\n const NeuronPermissionList = IDL.Record({\n permissions: IDL.Vec(IDL.Int32),\n });\n const VotingRewardsParameters = IDL.Record({\n final_reward_rate_basis_points: IDL.Opt(IDL.Nat64),\n initial_reward_rate_basis_points: IDL.Opt(IDL.Nat64),\n reward_rate_transition_duration_seconds: IDL.Opt(IDL.Nat64),\n round_duration_seconds: IDL.Opt(IDL.Nat64),\n });\n const NervousSystemParameters = IDL.Record({\n default_followees: IDL.Opt(DefaultFollowees),\n max_dissolve_delay_seconds: IDL.Opt(IDL.Nat64),\n max_dissolve_delay_bonus_percentage: IDL.Opt(IDL.Nat64),\n max_followees_per_function: IDL.Opt(IDL.Nat64),\n neuron_claimer_permissions: IDL.Opt(NeuronPermissionList),\n neuron_minimum_stake_e8s: IDL.Opt(IDL.Nat64),\n max_neuron_age_for_age_bonus: IDL.Opt(IDL.Nat64),\n initial_voting_period_seconds: IDL.Opt(IDL.Nat64),\n neuron_minimum_dissolve_delay_to_vote_seconds: IDL.Opt(IDL.Nat64),\n reject_cost_e8s: IDL.Opt(IDL.Nat64),\n max_proposals_to_keep_per_action: IDL.Opt(IDL.Nat32),\n wait_for_quiet_deadline_increase_seconds: IDL.Opt(IDL.Nat64),\n max_number_of_neurons: IDL.Opt(IDL.Nat64),\n transaction_fee_e8s: IDL.Opt(IDL.Nat64),\n max_number_of_proposals_with_ballots: IDL.Opt(IDL.Nat64),\n max_age_bonus_percentage: IDL.Opt(IDL.Nat64),\n neuron_grantable_permissions: IDL.Opt(NeuronPermissionList),\n voting_rewards_parameters: IDL.Opt(VotingRewardsParameters),\n maturity_modulation_disabled: IDL.Opt(IDL.Bool),\n max_number_of_principals_per_neuron: IDL.Opt(IDL.Nat64),\n });\n const Version = IDL.Record({\n archive_wasm_hash: IDL.Vec(IDL.Nat8),\n root_wasm_hash: IDL.Vec(IDL.Nat8),\n swap_wasm_hash: IDL.Vec(IDL.Nat8),\n ledger_wasm_hash: IDL.Vec(IDL.Nat8),\n governance_wasm_hash: IDL.Vec(IDL.Nat8),\n index_wasm_hash: IDL.Vec(IDL.Nat8),\n });\n const ProposalId = IDL.Record({ id: IDL.Nat64 });\n const RewardEvent = IDL.Record({\n rounds_since_last_distribution: IDL.Opt(IDL.Nat64),\n actual_timestamp_seconds: IDL.Nat64,\n end_timestamp_seconds: IDL.Opt(IDL.Nat64),\n distributed_e8s_equivalent: IDL.Nat64,\n round: IDL.Nat64,\n settled_proposals: IDL.Vec(ProposalId),\n });\n const UpgradeInProgress = IDL.Record({\n mark_failed_at_seconds: IDL.Nat64,\n checking_upgrade_lock: IDL.Nat64,\n proposal_id: IDL.Nat64,\n target_version: IDL.Opt(Version),\n });\n const GovernanceError = IDL.Record({\n error_message: IDL.Text,\n error_type: IDL.Int32,\n });\n const Ballot = IDL.Record({\n vote: IDL.Int32,\n cast_timestamp_seconds: IDL.Nat64,\n voting_power: IDL.Nat64,\n });\n const Percentage = IDL.Record({ basis_points: IDL.Opt(IDL.Nat64) });\n const Tally = IDL.Record({\n no: IDL.Nat64,\n yes: IDL.Nat64,\n total: IDL.Nat64,\n timestamp_seconds: IDL.Nat64,\n });\n const ManageDappCanisterSettings = IDL.Record({\n freezing_threshold: IDL.Opt(IDL.Nat64),\n canister_ids: IDL.Vec(IDL.Principal),\n reserved_cycles_limit: IDL.Opt(IDL.Nat64),\n log_visibility: IDL.Opt(IDL.Int32),\n memory_allocation: IDL.Opt(IDL.Nat64),\n compute_allocation: IDL.Opt(IDL.Nat64),\n });\n const RegisterDappCanisters = IDL.Record({\n canister_ids: IDL.Vec(IDL.Principal),\n });\n const Subaccount = IDL.Record({ subaccount: IDL.Vec(IDL.Nat8) });\n const TransferSnsTreasuryFunds = IDL.Record({\n from_treasury: IDL.Int32,\n to_principal: IDL.Opt(IDL.Principal),\n to_subaccount: IDL.Opt(Subaccount),\n memo: IDL.Opt(IDL.Nat64),\n amount_e8s: IDL.Nat64,\n });\n const UpgradeSnsControlledCanister = IDL.Record({\n new_canister_wasm: IDL.Vec(IDL.Nat8),\n mode: IDL.Opt(IDL.Int32),\n canister_id: IDL.Opt(IDL.Principal),\n canister_upgrade_arg: IDL.Opt(IDL.Vec(IDL.Nat8)),\n });\n const DeregisterDappCanisters = IDL.Record({\n canister_ids: IDL.Vec(IDL.Principal),\n new_controllers: IDL.Vec(IDL.Principal),\n });\n const MintSnsTokens = IDL.Record({\n to_principal: IDL.Opt(IDL.Principal),\n to_subaccount: IDL.Opt(Subaccount),\n memo: IDL.Opt(IDL.Nat64),\n amount_e8s: IDL.Opt(IDL.Nat64),\n });\n const ManageSnsMetadata = IDL.Record({\n url: IDL.Opt(IDL.Text),\n logo: IDL.Opt(IDL.Text),\n name: IDL.Opt(IDL.Text),\n description: IDL.Opt(IDL.Text),\n });\n const ExecuteGenericNervousSystemFunction = IDL.Record({\n function_id: IDL.Nat64,\n payload: IDL.Vec(IDL.Nat8),\n });\n const ManageLedgerParameters = IDL.Record({\n transfer_fee: IDL.Opt(IDL.Nat64),\n });\n const Motion = IDL.Record({ motion_text: IDL.Text });\n const Action = IDL.Variant({\n ManageNervousSystemParameters: NervousSystemParameters,\n AddGenericNervousSystemFunction: NervousSystemFunction,\n ManageDappCanisterSettings: ManageDappCanisterSettings,\n RemoveGenericNervousSystemFunction: IDL.Nat64,\n UpgradeSnsToNextVersion: IDL.Record({}),\n RegisterDappCanisters: RegisterDappCanisters,\n TransferSnsTreasuryFunds: TransferSnsTreasuryFunds,\n UpgradeSnsControlledCanister: UpgradeSnsControlledCanister,\n DeregisterDappCanisters: DeregisterDappCanisters,\n MintSnsTokens: MintSnsTokens,\n Unspecified: IDL.Record({}),\n ManageSnsMetadata: ManageSnsMetadata,\n ExecuteGenericNervousSystemFunction: ExecuteGenericNervousSystemFunction,\n ManageLedgerParameters: ManageLedgerParameters,\n Motion: Motion,\n });\n const Proposal = IDL.Record({\n url: IDL.Text,\n title: IDL.Text,\n action: IDL.Opt(Action),\n summary: IDL.Text,\n });\n const WaitForQuietState = IDL.Record({\n current_deadline_timestamp_seconds: IDL.Nat64,\n });\n const ProposalData = IDL.Record({\n id: IDL.Opt(ProposalId),\n payload_text_rendering: IDL.Opt(IDL.Text),\n action: IDL.Nat64,\n failure_reason: IDL.Opt(GovernanceError),\n ballots: IDL.Vec(IDL.Tuple(IDL.Text, Ballot)),\n minimum_yes_proportion_of_total: IDL.Opt(Percentage),\n reward_event_round: IDL.Nat64,\n failed_timestamp_seconds: IDL.Nat64,\n reward_event_end_timestamp_seconds: IDL.Opt(IDL.Nat64),\n proposal_creation_timestamp_seconds: IDL.Nat64,\n initial_voting_period_seconds: IDL.Nat64,\n reject_cost_e8s: IDL.Nat64,\n latest_tally: IDL.Opt(Tally),\n wait_for_quiet_deadline_increase_seconds: IDL.Nat64,\n decided_timestamp_seconds: IDL.Nat64,\n proposal: IDL.Opt(Proposal),\n proposer: IDL.Opt(NeuronId),\n wait_for_quiet_state: IDL.Opt(WaitForQuietState),\n minimum_yes_proportion_of_exercised: IDL.Opt(Percentage),\n is_eligible_for_rewards: IDL.Bool,\n executed_timestamp_seconds: IDL.Nat64,\n });\n const Split = IDL.Record({ memo: IDL.Nat64, amount_e8s: IDL.Nat64 });\n const Follow = IDL.Record({\n function_id: IDL.Nat64,\n followees: IDL.Vec(NeuronId),\n });\n const Account = IDL.Record({\n owner: IDL.Opt(IDL.Principal),\n subaccount: IDL.Opt(Subaccount),\n });\n const DisburseMaturity = IDL.Record({\n to_account: IDL.Opt(Account),\n percentage_to_disburse: IDL.Nat32,\n });\n const ChangeAutoStakeMaturity = IDL.Record({\n requested_setting_for_auto_stake_maturity: IDL.Bool,\n });\n const IncreaseDissolveDelay = IDL.Record({\n additional_dissolve_delay_seconds: IDL.Nat32,\n });\n const SetDissolveTimestamp = IDL.Record({\n dissolve_timestamp_seconds: IDL.Nat64,\n });\n const Operation = IDL.Variant({\n ChangeAutoStakeMaturity: ChangeAutoStakeMaturity,\n StopDissolving: IDL.Record({}),\n StartDissolving: IDL.Record({}),\n IncreaseDissolveDelay: IncreaseDissolveDelay,\n SetDissolveTimestamp: SetDissolveTimestamp,\n });\n const Configure = IDL.Record({ operation: IDL.Opt(Operation) });\n const RegisterVote = IDL.Record({\n vote: IDL.Int32,\n proposal: IDL.Opt(ProposalId),\n });\n const FinalizeDisburseMaturity = IDL.Record({\n amount_to_be_disbursed_e8s: IDL.Nat64,\n to_account: IDL.Opt(Account),\n });\n const MemoAndController = IDL.Record({\n controller: IDL.Opt(IDL.Principal),\n memo: IDL.Nat64,\n });\n const By = IDL.Variant({\n MemoAndController: MemoAndController,\n NeuronId: IDL.Record({}),\n });\n const ClaimOrRefresh = IDL.Record({ by: IDL.Opt(By) });\n const RemoveNeuronPermissions = IDL.Record({\n permissions_to_remove: IDL.Opt(NeuronPermissionList),\n principal_id: IDL.Opt(IDL.Principal),\n });\n const AddNeuronPermissions = IDL.Record({\n permissions_to_add: IDL.Opt(NeuronPermissionList),\n principal_id: IDL.Opt(IDL.Principal),\n });\n const MergeMaturity = IDL.Record({ percentage_to_merge: IDL.Nat32 });\n const Amount = IDL.Record({ e8s: IDL.Nat64 });\n const Disburse = IDL.Record({\n to_account: IDL.Opt(Account),\n amount: IDL.Opt(Amount),\n });\n const Command_2 = IDL.Variant({\n Split: Split,\n Follow: Follow,\n DisburseMaturity: DisburseMaturity,\n Configure: Configure,\n RegisterVote: RegisterVote,\n SyncCommand: IDL.Record({}),\n MakeProposal: Proposal,\n FinalizeDisburseMaturity: FinalizeDisburseMaturity,\n ClaimOrRefreshNeuron: ClaimOrRefresh,\n RemoveNeuronPermissions: RemoveNeuronPermissions,\n AddNeuronPermissions: AddNeuronPermissions,\n MergeMaturity: MergeMaturity,\n Disburse: Disburse,\n });\n const NeuronInFlightCommand = IDL.Record({\n command: IDL.Opt(Command_2),\n timestamp: IDL.Nat64,\n });\n const NeuronPermission = IDL.Record({\n principal: IDL.Opt(IDL.Principal),\n permission_type: IDL.Vec(IDL.Int32),\n });\n const DissolveState = IDL.Variant({\n DissolveDelaySeconds: IDL.Nat64,\n WhenDissolvedTimestampSeconds: IDL.Nat64,\n });\n const DisburseMaturityInProgress = IDL.Record({\n timestamp_of_disbursement_seconds: IDL.Nat64,\n amount_e8s: IDL.Nat64,\n account_to_disburse_to: IDL.Opt(Account),\n finalize_disbursement_timestamp_seconds: IDL.Opt(IDL.Nat64),\n });\n const Neuron = IDL.Record({\n id: IDL.Opt(NeuronId),\n staked_maturity_e8s_equivalent: IDL.Opt(IDL.Nat64),\n permissions: IDL.Vec(NeuronPermission),\n maturity_e8s_equivalent: IDL.Nat64,\n cached_neuron_stake_e8s: IDL.Nat64,\n created_timestamp_seconds: IDL.Nat64,\n source_nns_neuron_id: IDL.Opt(IDL.Nat64),\n auto_stake_maturity: IDL.Opt(IDL.Bool),\n aging_since_timestamp_seconds: IDL.Nat64,\n dissolve_state: IDL.Opt(DissolveState),\n voting_power_percentage_multiplier: IDL.Nat64,\n vesting_period_seconds: IDL.Opt(IDL.Nat64),\n disburse_maturity_in_progress: IDL.Vec(DisburseMaturityInProgress),\n followees: IDL.Vec(IDL.Tuple(IDL.Nat64, Followees)),\n neuron_fees_e8s: IDL.Nat64,\n });\n const Governance = IDL.Record({\n root_canister_id: IDL.Opt(IDL.Principal),\n id_to_nervous_system_functions: IDL.Vec(IDL.Tuple(IDL.Nat64, NervousSystemFunction)),\n metrics: IDL.Opt(GovernanceCachedMetrics),\n maturity_modulation: IDL.Opt(MaturityModulation),\n mode: IDL.Int32,\n parameters: IDL.Opt(NervousSystemParameters),\n is_finalizing_disburse_maturity: IDL.Opt(IDL.Bool),\n deployed_version: IDL.Opt(Version),\n sns_initialization_parameters: IDL.Text,\n latest_reward_event: IDL.Opt(RewardEvent),\n pending_version: IDL.Opt(UpgradeInProgress),\n swap_canister_id: IDL.Opt(IDL.Principal),\n ledger_canister_id: IDL.Opt(IDL.Principal),\n proposals: IDL.Vec(IDL.Tuple(IDL.Nat64, ProposalData)),\n in_flight_commands: IDL.Vec(IDL.Tuple(IDL.Text, NeuronInFlightCommand)),\n sns_metadata: IDL.Opt(ManageSnsMetadata),\n neurons: IDL.Vec(IDL.Tuple(IDL.Text, Neuron)),\n genesis_timestamp_seconds: IDL.Nat64,\n });\n return [Governance];\n};\n","import { SNS_GOVERNANCE_INTERFACE_FACTORY, SNS_GOVERNANCE_SERVICE } from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\n\nexport const sns_governance = async (canisterId: string, identity?: true) =>\n actor.create({\n canisterId,\n idlFactory: SNS_GOVERNANCE_INTERFACE_FACTORY,\n identity,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const TransactionType = IDL.Variant({\n decreaseLiquidity: IDL.Null,\n claim: IDL.Null,\n swap: IDL.Null,\n addLiquidity: IDL.Null,\n increaseLiquidity: IDL.Null,\n });\n const Transaction = IDL.Record({\n to: IDL.Text,\n action: TransactionType,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n liquidityTotal: IDL.Nat,\n from: IDL.Text,\n hash: IDL.Text,\n tick: IDL.Int,\n token1Price: IDL.Float64,\n recipient: IDL.Text,\n token0ChangeAmount: IDL.Float64,\n sender: IDL.Text,\n liquidityChange: IDL.Nat,\n token1Standard: IDL.Text,\n token0Fee: IDL.Float64,\n token1Fee: IDL.Float64,\n timestamp: IDL.Int,\n token1ChangeAmount: IDL.Float64,\n token1Decimals: IDL.Float64,\n token0Standard: IDL.Text,\n amountUSD: IDL.Float64,\n amountToken0: IDL.Float64,\n amountToken1: IDL.Float64,\n poolFee: IDL.Nat,\n token0Symbol: IDL.Text,\n token0Decimals: IDL.Float64,\n token0Price: IDL.Float64,\n token1Symbol: IDL.Text,\n poolId: IDL.Text,\n });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const PublicPoolOverView = IDL.Record({\n id: IDL.Nat,\n token0TotalVolume: IDL.Float64,\n volumeUSD1d: IDL.Float64,\n volumeUSD7d: IDL.Float64,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n token1Volume24H: IDL.Float64,\n totalVolumeUSD: IDL.Float64,\n sqrtPrice: IDL.Float64,\n pool: IDL.Text,\n tick: IDL.Int,\n liquidity: IDL.Nat,\n token1Price: IDL.Float64,\n feeTier: IDL.Nat,\n token1TotalVolume: IDL.Float64,\n volumeUSD: IDL.Float64,\n feesUSD: IDL.Float64,\n token0Volume24H: IDL.Float64,\n token1Standard: IDL.Text,\n txCount: IDL.Nat,\n token1Decimals: IDL.Float64,\n token0Standard: IDL.Text,\n token0Symbol: IDL.Text,\n token0Decimals: IDL.Float64,\n token0Price: IDL.Float64,\n token1Symbol: IDL.Text,\n });\n const PublicTokenOverview = IDL.Record({\n id: IDL.Nat,\n volumeUSD1d: IDL.Float64,\n volumeUSD7d: IDL.Float64,\n totalVolumeUSD: IDL.Float64,\n name: IDL.Text,\n volumeUSD: IDL.Float64,\n feesUSD: IDL.Float64,\n priceUSDChange: IDL.Float64,\n address: IDL.Text,\n txCount: IDL.Int,\n priceUSD: IDL.Float64,\n standard: IDL.Text,\n symbol: IDL.Text,\n });\n const Address = IDL.Text;\n return IDL.Service({\n addOwner: IDL.Func([IDL.Principal], [], []),\n addQuoteToken: IDL.Func([IDL.Text, IDL.Bool], [], []),\n allPoolStorage: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"]),\n allTokenStorage: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"]),\n allUserStorage: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"]),\n batchInsert: IDL.Func([IDL.Vec(Transaction)], [], []),\n clean: IDL.Func([], [], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n getAllPools: IDL.Func([], [IDL.Vec(PublicPoolOverView)], [\"query\"]),\n getAllTokens: IDL.Func([], [IDL.Vec(PublicTokenOverview)], [\"query\"]),\n getControllers: IDL.Func([], [IDL.Vec(IDL.Principal)], [\"query\"]),\n getDataQueueSize: IDL.Func([], [IDL.Nat], [\"query\"]),\n getLastDataTime: IDL.Func([], [IDL.Int], [\"query\"]),\n getOwners: IDL.Func([], [IDL.Vec(IDL.Principal)], [\"query\"]),\n getPoolQueueSize: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Nat))],\n [\"query\"]\n ),\n getPoolsForToken: IDL.Func(\n [IDL.Text],\n [IDL.Vec(PublicPoolOverView)],\n [\"query\"]\n ),\n getQuoteTokens: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"]),\n getSyncLock: IDL.Func([], [IDL.Bool], [\"query\"]),\n getSyncStatus: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Bool, IDL.Text))],\n [\"query\"]\n ),\n getTokenQueueSize: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Nat))],\n [\"query\"]\n ),\n getTotalVolumeAndUser: IDL.Func([], [IDL.Float64, IDL.Nat], [\"query\"]),\n getUserQueueSize: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Nat))],\n [\"query\"]\n ),\n insert: IDL.Func([Transaction], [], []),\n poolMapping: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))],\n [\"query\"]\n ),\n poolStorage: IDL.Func([IDL.Text], [IDL.Opt(IDL.Text)], [\"query\"]),\n setPoolSyncStatus: IDL.Func([IDL.Bool], [IDL.Bool], []),\n setQuoteTokens: IDL.Func([IDL.Vec(IDL.Text), IDL.Bool], [], []),\n setTokenSyncStatus: IDL.Func([IDL.Bool], [IDL.Bool], []),\n setUserSyncStatus: IDL.Func([IDL.Bool], [IDL.Bool], []),\n syncOverview: IDL.Func([], [], []),\n tokenMapping: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))],\n [\"query\"]\n ),\n tokenStorage: IDL.Func([IDL.Text], [IDL.Opt(IDL.Text)], [\"query\"]),\n userMapping: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))],\n [\"query\"]\n ),\n userStorage: IDL.Func([Address], [IDL.Opt(IDL.Text)], [\"query\"]),\n });\n};\n","import { NodeIndex, NodeIndexInterfaceFactory } from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\nimport { ActorName } from \"../ActorName\";\n\nexport const node_index = () =>\n actor.create({\n actorName: ActorName.NodeIndex,\n idlFactory: NodeIndexInterfaceFactory,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const TransactionType = IDL.Variant({\n decreaseLiquidity: IDL.Null,\n claim: IDL.Null,\n swap: IDL.Null,\n addLiquidity: IDL.Null,\n increaseLiquidity: IDL.Null,\n });\n const SwapRecordInfo = IDL.Record({\n to: IDL.Text,\n feeAmount: IDL.Int,\n action: TransactionType,\n feeAmountTotal: IDL.Int,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n token0AmountTotal: IDL.Nat,\n liquidityTotal: IDL.Nat,\n from: IDL.Text,\n tick: IDL.Int,\n feeTire: IDL.Nat,\n recipient: IDL.Text,\n token0ChangeAmount: IDL.Nat,\n token1AmountTotal: IDL.Nat,\n liquidityChange: IDL.Nat,\n token1Standard: IDL.Text,\n token0Fee: IDL.Nat,\n token1Fee: IDL.Nat,\n timestamp: IDL.Int,\n token1ChangeAmount: IDL.Nat,\n token0Standard: IDL.Text,\n price: IDL.Nat,\n poolId: IDL.Text,\n });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const BaseIndex = IDL.Service({\n addOwner: IDL.Func([IDL.Principal], [], []),\n baseLastStorage: IDL.Func([], [IDL.Text], [\"query\"]),\n baseStorage: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"]),\n batchPush: IDL.Func([IDL.Vec(SwapRecordInfo)], [], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n getAllowTokens: IDL.Func([], [IDL.Vec(IDL.Text)], []),\n getEnableSync: IDL.Func([], [IDL.Bool], [\"query\"]),\n getOwners: IDL.Func([], [IDL.Vec(IDL.Principal)], []),\n getPoolLastPrice: IDL.Func([IDL.Text], [IDL.Float64], [\"query\"]),\n getSyncError: IDL.Func([], [IDL.Text], [\"query\"]),\n getSyncLock: IDL.Func([], [IDL.Bool], [\"query\"]),\n getSyncOffset: IDL.Func([], [IDL.Nat], [\"query\"]),\n getSyncStatus: IDL.Func([], [IDL.Bool], [\"query\"]),\n priceCanister: IDL.Func([], [IDL.Vec(IDL.Text)], []),\n push: IDL.Func([SwapRecordInfo], [], []),\n setEnableSync: IDL.Func([IDL.Bool], [IDL.Bool], [\"query\"]),\n setPriceCanister: IDL.Func([IDL.Text], [], []),\n syncOldDataToLast: IDL.Func([IDL.Nat], [IDL.Bool], []),\n });\n return BaseIndex;\n};\n","export const idlFactory = ({ IDL }: any) => {\n const TransactionType = IDL.Variant({\n decreaseLiquidity: IDL.Null,\n claim: IDL.Null,\n swap: IDL.Null,\n addLiquidity: IDL.Null,\n increaseLiquidity: IDL.Null,\n });\n const Transaction = IDL.Record({\n to: IDL.Text,\n action: TransactionType,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n liquidityTotal: IDL.Nat,\n from: IDL.Text,\n hash: IDL.Text,\n tick: IDL.Int,\n token1Price: IDL.Float64,\n recipient: IDL.Text,\n token0ChangeAmount: IDL.Float64,\n sender: IDL.Text,\n liquidityChange: IDL.Nat,\n token1Standard: IDL.Text,\n token0Fee: IDL.Float64,\n token1Fee: IDL.Float64,\n timestamp: IDL.Int,\n token1ChangeAmount: IDL.Float64,\n token1Decimals: IDL.Float64,\n token0Standard: IDL.Text,\n amountUSD: IDL.Float64,\n amountToken0: IDL.Float64,\n amountToken1: IDL.Float64,\n poolFee: IDL.Nat,\n token0Symbol: IDL.Text,\n token0Decimals: IDL.Float64,\n token0Price: IDL.Float64,\n token1Symbol: IDL.Text,\n poolId: IDL.Text,\n });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const RecordPage = IDL.Record({\n content: IDL.Vec(Transaction),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n return IDL.Service({\n addOwners: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n batchInsert: IDL.Func([IDL.Vec(Transaction)], [], []),\n clean: IDL.Func([], [], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n getBaseRecord: IDL.Func([IDL.Nat, IDL.Nat, IDL.Vec(IDL.Text)], [RecordPage], [\"query\"]),\n getByPool: IDL.Func([IDL.Nat, IDL.Nat, IDL.Text], [RecordPage], [\"query\"]),\n getByToken: IDL.Func([IDL.Nat, IDL.Nat, IDL.Text], [RecordPage], [\"query\"]),\n getOwners: IDL.Func([], [IDL.Vec(IDL.Principal)], []),\n getTxCount: IDL.Func([], [IDL.Nat], [\"query\"]),\n insert: IDL.Func([Transaction], [], []),\n });\n};\n","import { actor } from \"../actor\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport { ActorName } from \"../ActorName\";\n\nimport {\n BaseIndex,\n BaseStorage,\n BaseIndexInterfaceFactory,\n BaseStorageInterfaceFactory,\n} from \"@icpswap/candid\";\n\nexport const baseIndex = (identity?: ActorIdentity) =>\n actor.create({\n idlFactory: BaseIndexInterfaceFactory,\n actorName: ActorName.BaseIndex,\n identity,\n });\n\nexport const baseStorage = (id: string, identity?: ActorIdentity) =>\n actor.create({\n idlFactory: BaseStorageInterfaceFactory,\n canisterId: id,\n identity,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const TvlOverview = IDL.Record({\n tvlUSD: IDL.Float64,\n tvlUSDChange: IDL.Float64\n });\n const PublicProtocolData = IDL.Record({\n volumeUSD: IDL.Float64,\n feesUSD: IDL.Float64,\n tvlUSD: IDL.Float64,\n txCount: IDL.Int\n });\n return IDL.Service({\n addOwner: IDL.Func([IDL.Principal], [], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n getAllPoolTvl: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Float64))], [\"query\"]),\n getAllTokenTvl: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Float64))], [\"query\"]),\n getAllowTokens: IDL.Func([], [IDL.Vec(IDL.Text)], []),\n getOwners: IDL.Func([], [IDL.Vec(IDL.Principal)], []),\n getPoolLastTvl: IDL.Func([IDL.Text], [TvlOverview], [\"query\"]),\n getProtocolData: IDL.Func([], [PublicProtocolData], [\"query\"]),\n getSyncError: IDL.Func([], [IDL.Text], [\"query\"]),\n getSyncState: IDL.Func([], [IDL.Bool], [\"query\"]),\n getSyncTime: IDL.Func([], [IDL.Int], [\"query\"]),\n getTokenLastTvl: IDL.Func([IDL.Text], [TvlOverview], [\"query\"]),\n getTvlSyncState: IDL.Func([], [IDL.Bool], [\"query\"]),\n globalLastStorageCanister: IDL.Func([], [IDL.Text], [\"query\"]),\n globalStorageCanister: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"]),\n syncGlobal: IDL.Func([], [], []),\n syncTvl: IDL.Func([], [], []),\n syncTvlStatus: IDL.Func([], [IDL.Bool], [\"query\"]),\n tvlLastStorageCanister: IDL.Func([], [IDL.Text], [\"query\"]),\n tvlStorageCanister: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"])\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const NatResult__2 = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const TvlChartDayData = IDL.Record({\n id: IDL.Nat,\n tvlUSD: IDL.Float64,\n timestamp: IDL.Int\n });\n return IDL.Service({\n addOwners: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n cycleAvailable: IDL.Func([], [NatResult__2], []),\n cycleBalance: IDL.Func([], [NatResult__2], [\"query\"]),\n getOwners: IDL.Func([], [IDL.Vec(IDL.Principal)], []),\n getPoolChartTvl: IDL.Func([IDL.Text, IDL.Nat, IDL.Nat], [IDL.Vec(TvlChartDayData)], [\"query\"]),\n getTokenChartTvl: IDL.Func([IDL.Text, IDL.Nat, IDL.Nat], [IDL.Vec(TvlChartDayData)], [\"query\"]),\n insert: IDL.Func(\n [IDL.Vec(IDL.Tuple(IDL.Text, TvlChartDayData)), IDL.Vec(IDL.Tuple(IDL.Text, TvlChartDayData))],\n [IDL.Nat],\n []\n )\n });\n};\n","import { actor } from \"../actor\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport { ActorName } from \"../ActorName\";\n\nimport {\n GlobalIndex,\n GlobalIndexInterfaceFactory,\n GlobalStorage,\n GlobalStorageInterfaceFactory,\n GlobalTVL,\n GlobalTVLInterfaceFactory,\n} from \"@icpswap/candid\";\n\nexport const globalIndex = (identity?: ActorIdentity) =>\n actor.create({\n idlFactory: GlobalIndexInterfaceFactory,\n actorName: ActorName.GlobalIndex,\n identity,\n });\n\nexport const globalStorage = (id: string) =>\n actor.create({\n idlFactory: GlobalStorageInterfaceFactory,\n canisterId: id,\n });\n\nexport const globalTVL = (id: string, identity?: ActorIdentity) =>\n actor.create({\n idlFactory: GlobalTVLInterfaceFactory,\n canisterId: id,\n identity,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const PublicPoolOverView = IDL.Record({\n id: IDL.Nat,\n volumeUSD1d: IDL.Float64,\n volumeUSD7d: IDL.Float64,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n totalVolumeUSD: IDL.Float64,\n sqrtPrice: IDL.Float64,\n pool: IDL.Text,\n tick: IDL.Int,\n liquidity: IDL.Nat,\n token1Price: IDL.Float64,\n feeTier: IDL.Nat,\n volumeUSD: IDL.Float64,\n feesUSD: IDL.Float64,\n token1Standard: IDL.Text,\n txCount: IDL.Nat,\n token1Decimals: IDL.Float64,\n token0Standard: IDL.Text,\n token0Symbol: IDL.Text,\n token0Decimals: IDL.Float64,\n token0Price: IDL.Float64,\n token1Symbol: IDL.Text\n });\n const PublicPoolChartDayData = IDL.Record({\n id: IDL.Int,\n volumeUSD: IDL.Float64,\n timestamp: IDL.Int,\n txCount: IDL.Int\n });\n const TransactionType = IDL.Variant({\n decreaseLiquidity: IDL.Null,\n claim: IDL.Null,\n swap: IDL.Null,\n addLiquidity: IDL.Null,\n increaseLiquidity: IDL.Null\n });\n const Transaction = IDL.Record({\n to: IDL.Text,\n action: TransactionType,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n liquidityTotal: IDL.Nat,\n from: IDL.Text,\n hash: IDL.Text,\n tick: IDL.Int,\n token1Price: IDL.Float64,\n recipient: IDL.Text,\n token0ChangeAmount: IDL.Float64,\n sender: IDL.Text,\n liquidityChange: IDL.Nat,\n token1Standard: IDL.Text,\n token0Fee: IDL.Float64,\n token1Fee: IDL.Float64,\n timestamp: IDL.Int,\n token1ChangeAmount: IDL.Float64,\n token1Decimals: IDL.Float64,\n token0Standard: IDL.Text,\n amountUSD: IDL.Float64,\n amountToken0: IDL.Float64,\n amountToken1: IDL.Float64,\n poolFee: IDL.Nat,\n token0Symbol: IDL.Text,\n token0Decimals: IDL.Float64,\n token0Price: IDL.Float64,\n token1Symbol: IDL.Text,\n poolId: IDL.Text\n });\n return IDL.Service({\n addOwners: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n getAllPools: IDL.Func([], [IDL.Vec(PublicPoolOverView)], [\"query\"]),\n getOwners: IDL.Func([], [IDL.Vec(IDL.Principal)], []),\n getPool: IDL.Func([IDL.Text], [PublicPoolOverView], [\"query\"]),\n getPoolChartData: IDL.Func([IDL.Text, IDL.Nat, IDL.Nat], [IDL.Vec(PublicPoolChartDayData)], [\"query\"]),\n getPoolTransactions: IDL.Func([IDL.Text, IDL.Nat, IDL.Nat], [IDL.Vec(Transaction)], [\"query\"]),\n insert: IDL.Func([Transaction], [], [])\n });\n};\n","import { actor } from \"../actor\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport { PoolStorage, PoolStorageInterfaceFactory } from \"@icpswap/candid\";\n\nexport const poolStorage = (id: string, identity?: ActorIdentity) =>\n actor.create({\n idlFactory: PoolStorageInterfaceFactory,\n canisterId: id,\n identity,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const PublicTokenOverview = IDL.Record({\n id: IDL.Nat,\n volumeUSD1d: IDL.Float64,\n volumeUSD7d: IDL.Float64,\n totalVolumeUSD: IDL.Float64,\n name: IDL.Text,\n volumeUSD: IDL.Float64,\n feesUSD: IDL.Float64,\n priceUSDChange: IDL.Float64,\n address: IDL.Text,\n txCount: IDL.Int,\n priceUSD: IDL.Float64,\n standard: IDL.Text,\n symbol: IDL.Text\n });\n const PoolInfo = IDL.Record({\n fee: IDL.Int,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n pool: IDL.Text,\n token1Price: IDL.Float64,\n token1Standard: IDL.Text,\n token1Decimals: IDL.Float64,\n token0Standard: IDL.Text,\n token0Symbol: IDL.Text,\n token0Decimals: IDL.Float64,\n token0Price: IDL.Float64,\n token1Symbol: IDL.Text\n });\n const PublicTokenChartDayData = IDL.Record({\n id: IDL.Int,\n volumeUSD: IDL.Float64,\n timestamp: IDL.Int,\n txCount: IDL.Int\n });\n const PublicTokenPricesData = IDL.Record({\n id: IDL.Int,\n low: IDL.Float64,\n high: IDL.Float64,\n close: IDL.Float64,\n open: IDL.Float64,\n timestamp: IDL.Int\n });\n const TransactionType = IDL.Variant({\n decreaseLiquidity: IDL.Null,\n claim: IDL.Null,\n swap: IDL.Null,\n addLiquidity: IDL.Null,\n increaseLiquidity: IDL.Null\n });\n const Transaction = IDL.Record({\n to: IDL.Text,\n action: TransactionType,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n liquidityTotal: IDL.Nat,\n from: IDL.Text,\n hash: IDL.Text,\n tick: IDL.Int,\n token1Price: IDL.Float64,\n recipient: IDL.Text,\n token0ChangeAmount: IDL.Float64,\n sender: IDL.Text,\n liquidityChange: IDL.Nat,\n token1Standard: IDL.Text,\n token0Fee: IDL.Float64,\n token1Fee: IDL.Float64,\n timestamp: IDL.Int,\n token1ChangeAmount: IDL.Float64,\n token1Decimals: IDL.Float64,\n token0Standard: IDL.Text,\n amountUSD: IDL.Float64,\n amountToken0: IDL.Float64,\n amountToken1: IDL.Float64,\n poolFee: IDL.Nat,\n token0Symbol: IDL.Text,\n token0Decimals: IDL.Float64,\n token0Price: IDL.Float64,\n token1Symbol: IDL.Text,\n poolId: IDL.Text\n });\n return IDL.Service({\n addOwners: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n getAllTokens: IDL.Func([], [IDL.Vec(PublicTokenOverview)], [\"query\"]),\n getOwners: IDL.Func([], [IDL.Vec(IDL.Principal)], []),\n getPoolsForToken: IDL.Func([IDL.Text], [IDL.Vec(PoolInfo)], [\"query\"]),\n getToken: IDL.Func([IDL.Text], [PublicTokenOverview], [\"query\"]),\n getTokenChartData: IDL.Func([IDL.Text, IDL.Nat, IDL.Nat], [IDL.Vec(PublicTokenChartDayData)], [\"query\"]),\n getTokenPricesData: IDL.Func([IDL.Text, IDL.Int, IDL.Int, IDL.Nat], [IDL.Vec(PublicTokenPricesData)], [\"query\"]),\n getTokenTransactions: IDL.Func([IDL.Text, IDL.Nat, IDL.Nat], [IDL.Vec(Transaction)], [\"query\"]),\n insert: IDL.Func([IDL.Text, Transaction], [], [])\n });\n};\n","import { actor } from \"../actor\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport { TokenStorage, TokenStorageInterfaceFactory } from \"@icpswap/candid\";\n\nexport const tokenStorage = (id: string, identity?: ActorIdentity) =>\n actor.create({\n idlFactory: TokenStorageInterfaceFactory,\n canisterId: id,\n identity,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const TransactionType = IDL.Variant({\n decreaseLiquidity: IDL.Null,\n claim: IDL.Null,\n swap: IDL.Null,\n addLiquidity: IDL.Null,\n increaseLiquidity: IDL.Null,\n });\n const Transaction = IDL.Record({\n to: IDL.Text,\n action: TransactionType,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n liquidityTotal: IDL.Nat,\n from: IDL.Text,\n hash: IDL.Text,\n tick: IDL.Int,\n token1Price: IDL.Float64,\n recipient: IDL.Text,\n token0ChangeAmount: IDL.Float64,\n sender: IDL.Text,\n liquidityChange: IDL.Nat,\n token1Standard: IDL.Text,\n token0Fee: IDL.Float64,\n token1Fee: IDL.Float64,\n timestamp: IDL.Int,\n token1ChangeAmount: IDL.Float64,\n token1Decimals: IDL.Float64,\n token0Standard: IDL.Text,\n amountUSD: IDL.Float64,\n amountToken0: IDL.Float64,\n amountToken1: IDL.Float64,\n poolFee: IDL.Nat,\n token0Symbol: IDL.Text,\n token0Decimals: IDL.Float64,\n token0Price: IDL.Float64,\n token1Symbol: IDL.Text,\n poolId: IDL.Text,\n });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const Address = IDL.Text;\n const RecordPage = IDL.Record({\n content: IDL.Vec(Transaction),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n return IDL.Service({\n addOwners: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n batchInsert: IDL.Func([IDL.Text, IDL.Vec(Transaction)], [], []),\n clean: IDL.Func([], [], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n get: IDL.Func([Address, IDL.Nat, IDL.Nat, IDL.Vec(IDL.Text)], [RecordPage], [\"query\"]),\n getOwners: IDL.Func([], [IDL.Vec(IDL.Principal)], []),\n insert: IDL.Func([Transaction], [], []),\n });\n};\n","import { actor } from \"../actor\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport { UserStorage, UserStorageInterfaceFactory } from \"@icpswap/candid\";\n\nexport const userStorage = (id: string, identity?: ActorIdentity) =>\n actor.create({\n idlFactory: UserStorageInterfaceFactory,\n canisterId: id,\n identity,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const Value = IDL.Rec();\n const Map = IDL.Vec(IDL.Tuple(IDL.Text, Value));\n Value.fill(\n IDL.Variant({\n Int: IDL.Int,\n Map: Map,\n Nat: IDL.Nat,\n Nat64: IDL.Nat64,\n Blob: IDL.Vec(IDL.Nat8),\n Text: IDL.Text,\n Array: IDL.Vec(Value)\n })\n );\n const Block = Value;\n const Account = IDL.Record({\n owner: IDL.Principal,\n subaccount: IDL.Opt(IDL.Vec(IDL.Nat8))\n });\n const Transaction = IDL.Record({\n burn: IDL.Opt(\n IDL.Record({\n from: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat\n })\n ),\n kind: IDL.Text,\n mint: IDL.Opt(\n IDL.Record({\n to: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat\n })\n ),\n timestamp: IDL.Nat64,\n transfer: IDL.Opt(\n IDL.Record({\n to: Account,\n from: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat\n })\n )\n });\n return IDL.Service({\n append_blocks: IDL.Func([IDL.Vec(IDL.Vec(IDL.Nat8))], [], []),\n get_blocks: IDL.Func(\n [IDL.Record({ start: IDL.Nat, length: IDL.Nat })],\n [IDL.Record({ blocks: IDL.Vec(Block) })],\n [\"query\"]\n ),\n get_transaction: IDL.Func([IDL.Nat64], [IDL.Opt(Transaction)], [\"query\"]),\n get_transactions: IDL.Func(\n [IDL.Record({ start: IDL.Nat, length: IDL.Nat })],\n [IDL.Record({ transactions: IDL.Vec(Transaction) })],\n [\"query\"]\n ),\n remaining_capacity: IDL.Func([], [IDL.Nat64], [\"query\"])\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Subaccount = IDL.Vec(IDL.Nat8);\n const Account = IDL.Record({\n owner: IDL.Principal,\n subaccount: IDL.Opt(Subaccount)\n });\n const Tokens = IDL.Nat;\n const Value = IDL.Variant({\n Int: IDL.Int,\n Nat: IDL.Nat,\n Blob: IDL.Vec(IDL.Nat8),\n Text: IDL.Text\n });\n const Memo = IDL.Vec(IDL.Nat8);\n const Timestamp = IDL.Nat64;\n const TxIndex = IDL.Nat;\n const TransferError = IDL.Variant({\n GenericError: IDL.Record({\n message: IDL.Text,\n error_code: IDL.Nat\n }),\n TemporarilyUnavailable: IDL.Null,\n BadBurn: IDL.Record({ min_burn_amount: Tokens }),\n Duplicate: IDL.Record({ duplicate_of: TxIndex }),\n BadFee: IDL.Record({ expected_fee: Tokens }),\n CreatedInFuture: IDL.Record({ ledger_time: Timestamp }),\n TooOld: IDL.Null,\n InsufficientFunds: IDL.Record({ balance: Tokens })\n });\n const TransferResult = IDL.Variant({ Ok: TxIndex, Err: TransferError });\n const GetTransactionsRequest = IDL.Record({\n start: IDL.Nat,\n length: IDL.Nat\n });\n const Burn = IDL.Record({\n from: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat\n });\n const Mint = IDL.Record({\n to: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat\n });\n const Transfer = IDL.Record({\n to: Account,\n fee: IDL.Opt(IDL.Nat),\n from: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat\n });\n const Transaction = IDL.Record({\n burn: IDL.Opt(Burn),\n kind: IDL.Text,\n mint: IDL.Opt(Mint),\n timestamp: IDL.Nat64,\n transfer: IDL.Opt(Transfer)\n });\n const ArchivedTransactionRange = IDL.Record({\n callback: IDL.Func([GetTransactionsRequest], [IDL.Record({ transactions: IDL.Vec(Transaction) })], [\"query\"]),\n start: IDL.Nat,\n length: IDL.Nat\n });\n const GetTransactionsResponse = IDL.Record({\n first_index: IDL.Nat,\n log_length: IDL.Nat,\n transactions: IDL.Vec(Transaction),\n archived_transactions: IDL.Vec(ArchivedTransactionRange)\n });\n const Ledger = IDL.Service({\n get_transactions: IDL.Func([GetTransactionsRequest], [GetTransactionsResponse], [\"query\"]),\n icrc1_balance_of: IDL.Func([Account], [Tokens], [\"query\"]),\n icrc1_decimals: IDL.Func([], [IDL.Nat8], [\"query\"]),\n icrc1_fee: IDL.Func([], [IDL.Nat], [\"query\"]),\n icrc1_metadata: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, Value))], [\"query\"]),\n icrc1_minting_account: IDL.Func([], [IDL.Opt(Account)], [\"query\"]),\n icrc1_name: IDL.Func([], [IDL.Text], [\"query\"]),\n icrc1_supported_standards: IDL.Func([], [IDL.Vec(IDL.Record({ url: IDL.Text, name: IDL.Text }))], [\"query\"]),\n icrc1_symbol: IDL.Func([], [IDL.Text], [\"query\"]),\n icrc1_total_supply: IDL.Func([], [Tokens], [\"query\"]),\n icrc1_logo: IDL.Func([], [IDL.Text], [\"query\"]),\n icrc1_transfer: IDL.Func(\n [\n IDL.Record({\n to: Account,\n fee: IDL.Opt(Tokens),\n memo: IDL.Opt(Memo),\n from_subaccount: IDL.Opt(Subaccount),\n created_at_time: IDL.Opt(Timestamp),\n amount: Tokens\n })\n ],\n [TransferResult],\n []\n )\n });\n return Ledger;\n};\n\nexport const init = ({ IDL }: any) => {\n return [\n IDL.Record({\n decimals: IDL.Nat8,\n token_symbol: IDL.Text,\n transfer_fee: IDL.Nat,\n minting_account: IDL.Record({\n owner: IDL.Principal,\n subaccount: IDL.Opt(IDL.Vec(IDL.Nat8))\n }),\n initial_mints: IDL.Vec(\n IDL.Record({\n account: IDL.Record({\n owner: IDL.Principal,\n subaccount: IDL.Opt(IDL.Vec(IDL.Nat8))\n }),\n amount: IDL.Nat\n })\n ),\n token_name: IDL.Text\n })\n ];\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Value = IDL.Rec();\n const Vec = IDL.Rec();\n const MetadataValue = IDL.Variant({\n Int: IDL.Int,\n Nat: IDL.Nat,\n Blob: IDL.Vec(IDL.Nat8),\n Text: IDL.Text\n });\n const Account = IDL.Record({\n owner: IDL.Principal,\n subaccount: IDL.Opt(IDL.Vec(IDL.Nat8))\n });\n const ChangeFeeCollector = IDL.Variant({\n SetTo: Account,\n Unset: IDL.Null\n });\n const FeatureFlags = IDL.Record({ icrc2: IDL.Bool });\n const UpgradeArgs = IDL.Record({\n token_symbol: IDL.Opt(IDL.Text),\n transfer_fee: IDL.Opt(IDL.Nat),\n metadata: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, MetadataValue))),\n maximum_number_of_accounts: IDL.Opt(IDL.Nat64),\n accounts_overflow_trim_quantity: IDL.Opt(IDL.Nat64),\n change_fee_collector: IDL.Opt(ChangeFeeCollector),\n max_memo_length: IDL.Opt(IDL.Nat16),\n token_name: IDL.Opt(IDL.Text),\n feature_flags: IDL.Opt(FeatureFlags)\n });\n const ArchiveOptions = IDL.Record({\n num_blocks_to_archive: IDL.Nat64,\n max_transactions_per_response: IDL.Opt(IDL.Nat64),\n trigger_threshold: IDL.Nat64,\n max_message_size_bytes: IDL.Opt(IDL.Nat64),\n cycles_for_archive_creation: IDL.Opt(IDL.Nat64),\n node_max_memory_size_bytes: IDL.Opt(IDL.Nat64),\n controller_id: IDL.Principal\n });\n const InitArgs = IDL.Record({\n decimals: IDL.Opt(IDL.Nat8),\n token_symbol: IDL.Text,\n transfer_fee: IDL.Nat,\n metadata: IDL.Vec(IDL.Tuple(IDL.Text, MetadataValue)),\n minting_account: Account,\n initial_balances: IDL.Vec(IDL.Tuple(Account, IDL.Nat)),\n maximum_number_of_accounts: IDL.Opt(IDL.Nat64),\n accounts_overflow_trim_quantity: IDL.Opt(IDL.Nat64),\n fee_collector_account: IDL.Opt(Account),\n archive_options: ArchiveOptions,\n max_memo_length: IDL.Opt(IDL.Nat16),\n token_name: IDL.Text,\n feature_flags: IDL.Opt(FeatureFlags)\n });\n const LedgerArgument = IDL.Variant({\n Upgrade: IDL.Opt(UpgradeArgs),\n Init: InitArgs\n });\n const GetBlocksRequest = IDL.Record({\n start: IDL.Nat,\n length: IDL.Nat\n });\n Vec.fill(\n IDL.Vec(\n IDL.Variant({\n Int: IDL.Int,\n Map: IDL.Vec(IDL.Tuple(IDL.Text, Value)),\n Nat: IDL.Nat,\n Nat64: IDL.Nat64,\n Blob: IDL.Vec(IDL.Nat8),\n Text: IDL.Text,\n Array: Vec\n })\n )\n );\n Value.fill(\n IDL.Variant({\n Int: IDL.Int,\n Map: IDL.Vec(IDL.Tuple(IDL.Text, Value)),\n Nat: IDL.Nat,\n Nat64: IDL.Nat64,\n Blob: IDL.Vec(IDL.Nat8),\n Text: IDL.Text,\n Array: Vec\n })\n );\n const BlockRange = IDL.Record({ blocks: IDL.Vec(Value) });\n const ArchivedRange = IDL.Record({\n callback: IDL.Func([GetBlocksRequest], [BlockRange], [\"query\"]),\n start: IDL.Nat,\n length: IDL.Nat\n });\n const GetBlocksResponse = IDL.Record({\n certificate: IDL.Opt(IDL.Vec(IDL.Nat8)),\n first_index: IDL.Nat,\n blocks: IDL.Vec(Value),\n chain_length: IDL.Nat64,\n archived_blocks: IDL.Vec(ArchivedRange)\n });\n const DataCertificate = IDL.Record({\n certificate: IDL.Opt(IDL.Vec(IDL.Nat8)),\n hash_tree: IDL.Vec(IDL.Nat8)\n });\n const Burn = IDL.Record({\n from: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat,\n spender: IDL.Opt(Account)\n });\n const Mint = IDL.Record({\n to: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat\n });\n const Approve = IDL.Record({\n fee: IDL.Opt(IDL.Nat),\n from: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat,\n expected_allowance: IDL.Opt(IDL.Nat),\n expires_at: IDL.Opt(IDL.Nat64),\n spender: Account\n });\n const Transfer = IDL.Record({\n to: Account,\n fee: IDL.Opt(IDL.Nat),\n from: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat,\n spender: IDL.Opt(Account)\n });\n const Transaction = IDL.Record({\n burn: IDL.Opt(Burn),\n kind: IDL.Text,\n mint: IDL.Opt(Mint),\n approve: IDL.Opt(Approve),\n timestamp: IDL.Nat64,\n transfer: IDL.Opt(Transfer)\n });\n const TransactionRange = IDL.Record({\n transactions: IDL.Vec(Transaction)\n });\n const ArchivedRange_1 = IDL.Record({\n callback: IDL.Func([GetBlocksRequest], [TransactionRange], [\"query\"]),\n start: IDL.Nat,\n length: IDL.Nat\n });\n const GetTransactionsResponse = IDL.Record({\n first_index: IDL.Nat,\n log_length: IDL.Nat,\n transactions: IDL.Vec(Transaction),\n archived_transactions: IDL.Vec(ArchivedRange_1)\n });\n const StandardRecord = IDL.Record({ url: IDL.Text, name: IDL.Text });\n const TransferArg = IDL.Record({\n to: Account,\n fee: IDL.Opt(IDL.Nat),\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n from_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat\n });\n const TransferError = IDL.Variant({\n GenericError: IDL.Record({\n message: IDL.Text,\n error_code: IDL.Nat\n }),\n TemporarilyUnavailable: IDL.Null,\n BadBurn: IDL.Record({ min_burn_amount: IDL.Nat }),\n Duplicate: IDL.Record({ duplicate_of: IDL.Nat }),\n BadFee: IDL.Record({ expected_fee: IDL.Nat }),\n CreatedInFuture: IDL.Record({ ledger_time: IDL.Nat64 }),\n TooOld: IDL.Null,\n InsufficientFunds: IDL.Record({ balance: IDL.Nat })\n });\n const Result = IDL.Variant({ Ok: IDL.Nat, Err: TransferError });\n const AllowanceArgs = IDL.Record({\n account: Account,\n spender: Account\n });\n const Allowance = IDL.Record({\n allowance: IDL.Nat,\n expires_at: IDL.Opt(IDL.Nat64)\n });\n const ApproveArgs = IDL.Record({\n fee: IDL.Opt(IDL.Nat),\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n from_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat,\n expected_allowance: IDL.Opt(IDL.Nat),\n expires_at: IDL.Opt(IDL.Nat64),\n spender: Account\n });\n const ApproveError = IDL.Variant({\n GenericError: IDL.Record({\n message: IDL.Text,\n error_code: IDL.Nat\n }),\n TemporarilyUnavailable: IDL.Null,\n Duplicate: IDL.Record({ duplicate_of: IDL.Nat }),\n BadFee: IDL.Record({ expected_fee: IDL.Nat }),\n AllowanceChanged: IDL.Record({ current_allowance: IDL.Nat }),\n CreatedInFuture: IDL.Record({ ledger_time: IDL.Nat64 }),\n TooOld: IDL.Null,\n Expired: IDL.Record({ ledger_time: IDL.Nat64 }),\n InsufficientFunds: IDL.Record({ balance: IDL.Nat })\n });\n const Result_1 = IDL.Variant({ Ok: IDL.Nat, Err: ApproveError });\n const TransferFromArgs = IDL.Record({\n to: Account,\n fee: IDL.Opt(IDL.Nat),\n spender_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n from: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat\n });\n const TransferFromError = IDL.Variant({\n GenericError: IDL.Record({\n message: IDL.Text,\n error_code: IDL.Nat\n }),\n TemporarilyUnavailable: IDL.Null,\n InsufficientAllowance: IDL.Record({ allowance: IDL.Nat }),\n BadBurn: IDL.Record({ min_burn_amount: IDL.Nat }),\n Duplicate: IDL.Record({ duplicate_of: IDL.Nat }),\n BadFee: IDL.Record({ expected_fee: IDL.Nat }),\n CreatedInFuture: IDL.Record({ ledger_time: IDL.Nat64 }),\n TooOld: IDL.Null,\n InsufficientFunds: IDL.Record({ balance: IDL.Nat })\n });\n const Result_2 = IDL.Variant({ Ok: IDL.Nat, Err: TransferFromError });\n return IDL.Service({\n get_blocks: IDL.Func([GetBlocksRequest], [GetBlocksResponse], [\"query\"]),\n get_data_certificate: IDL.Func([], [DataCertificate], [\"query\"]),\n get_transactions: IDL.Func([GetBlocksRequest], [GetTransactionsResponse], [\"query\"]),\n icrc1_balance_of: IDL.Func([Account], [IDL.Nat], [\"query\"]),\n icrc1_decimals: IDL.Func([], [IDL.Nat8], [\"query\"]),\n icrc1_fee: IDL.Func([], [IDL.Nat], [\"query\"]),\n icrc1_metadata: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, MetadataValue))], [\"query\"]),\n icrc1_minting_account: IDL.Func([], [IDL.Opt(Account)], [\"query\"]),\n icrc1_name: IDL.Func([], [IDL.Text], [\"query\"]),\n icrc1_supported_standards: IDL.Func([], [IDL.Vec(StandardRecord)], [\"query\"]),\n icrc1_symbol: IDL.Func([], [IDL.Text], [\"query\"]),\n icrc1_total_supply: IDL.Func([], [IDL.Nat], [\"query\"]),\n icrc1_transfer: IDL.Func([TransferArg], [Result], []),\n icrc2_allowance: IDL.Func([AllowanceArgs], [Allowance], [\"query\"]),\n icrc2_approve: IDL.Func([ApproveArgs], [Result_1], []),\n icrc2_transfer_from: IDL.Func([TransferFromArgs], [Result_2], [])\n });\n};\nexport const init = ({ IDL }) => {\n const MetadataValue = IDL.Variant({\n Int: IDL.Int,\n Nat: IDL.Nat,\n Blob: IDL.Vec(IDL.Nat8),\n Text: IDL.Text\n });\n const Account = IDL.Record({\n owner: IDL.Principal,\n subaccount: IDL.Opt(IDL.Vec(IDL.Nat8))\n });\n const ChangeFeeCollector = IDL.Variant({\n SetTo: Account,\n Unset: IDL.Null\n });\n const FeatureFlags = IDL.Record({ icrc2: IDL.Bool });\n const UpgradeArgs = IDL.Record({\n token_symbol: IDL.Opt(IDL.Text),\n transfer_fee: IDL.Opt(IDL.Nat),\n metadata: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, MetadataValue))),\n maximum_number_of_accounts: IDL.Opt(IDL.Nat64),\n accounts_overflow_trim_quantity: IDL.Opt(IDL.Nat64),\n change_fee_collector: IDL.Opt(ChangeFeeCollector),\n max_memo_length: IDL.Opt(IDL.Nat16),\n token_name: IDL.Opt(IDL.Text),\n feature_flags: IDL.Opt(FeatureFlags)\n });\n const ArchiveOptions = IDL.Record({\n num_blocks_to_archive: IDL.Nat64,\n max_transactions_per_response: IDL.Opt(IDL.Nat64),\n trigger_threshold: IDL.Nat64,\n max_message_size_bytes: IDL.Opt(IDL.Nat64),\n cycles_for_archive_creation: IDL.Opt(IDL.Nat64),\n node_max_memory_size_bytes: IDL.Opt(IDL.Nat64),\n controller_id: IDL.Principal\n });\n const InitArgs = IDL.Record({\n decimals: IDL.Opt(IDL.Nat8),\n token_symbol: IDL.Text,\n transfer_fee: IDL.Nat,\n metadata: IDL.Vec(IDL.Tuple(IDL.Text, MetadataValue)),\n minting_account: Account,\n initial_balances: IDL.Vec(IDL.Tuple(Account, IDL.Nat)),\n maximum_number_of_accounts: IDL.Opt(IDL.Nat64),\n accounts_overflow_trim_quantity: IDL.Opt(IDL.Nat64),\n fee_collector_account: IDL.Opt(Account),\n archive_options: ArchiveOptions,\n max_memo_length: IDL.Opt(IDL.Nat16),\n token_name: IDL.Text,\n feature_flags: IDL.Opt(FeatureFlags)\n });\n const LedgerArgument = IDL.Variant({\n Upgrade: IDL.Opt(UpgradeArgs),\n Init: InitArgs\n });\n return [LedgerArgument];\n};\n","import { actor } from \"../actor\";\nimport {\n ICRCArchive,\n ICRCArchiveInterfaceFactory,\n ICRC1_SERVICE,\n ICRC1InterfaceFactory,\n ICRC2,\n ICRC2InterfaceFactory,\n} from \"@icpswap/candid\";\nimport type { ActorIdentity } from \"@icpswap/types\";\n\nexport const icrcArchive = (canisterId: string) =>\n actor.create({\n idlFactory: ICRCArchiveInterfaceFactory,\n canisterId,\n });\n\nexport const icrc1 = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n identity,\n idlFactory: ICRC1InterfaceFactory,\n canisterId,\n });\n\nexport const icrc2 = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n identity,\n idlFactory: ICRC2InterfaceFactory,\n canisterId,\n });\n","export default ({ IDL }) => {\n const TxError = IDL.Variant({\n InsufficientAllowance: IDL.Null,\n InsufficientBalance: IDL.Null,\n ErrorOperationStyle: IDL.Null,\n Unauthorized: IDL.Null,\n LedgerTrap: IDL.Null,\n ErrorTo: IDL.Null,\n Other: IDL.Null,\n BlockUsed: IDL.Null,\n AmountTooSmall: IDL.Null,\n });\n const TxReceipt = IDL.Variant({ Ok: IDL.Nat, Err: TxError });\n const TransactionId = IDL.Nat64;\n const BurnError = IDL.Variant({\n InsufficientBalance: IDL.Null,\n InvalidTokenContract: IDL.Null,\n NotSufficientLiquidity: IDL.Null,\n });\n const BurnResult = IDL.Variant({ Ok: TransactionId, Err: BurnError });\n const TransactionStatus = IDL.Variant({\n FAILED: IDL.Null,\n SUCCEEDED: IDL.Null,\n });\n const EventDetail = IDL.Variant({\n Approve: IDL.Record({ to: IDL.Principal, from: IDL.Principal }),\n Burn: IDL.Record({ to: IDL.Principal, from: IDL.Principal }),\n Mint: IDL.Record({ to: IDL.Principal }),\n CanisterCreated: IDL.Record({\n from: IDL.Principal,\n canister: IDL.Principal,\n }),\n CanisterCalled: IDL.Record({\n from: IDL.Principal,\n method_name: IDL.Text,\n canister: IDL.Principal,\n }),\n Transfer: IDL.Record({ to: IDL.Principal, from: IDL.Principal }),\n TransferFrom: IDL.Record({\n to: IDL.Principal,\n from: IDL.Principal,\n caller: IDL.Principal,\n }),\n });\n const Event = IDL.Record({\n fee: IDL.Nat64,\n status: TransactionStatus,\n kind: EventDetail,\n cycles: IDL.Nat64,\n timestamp: IDL.Nat64,\n });\n const EventsConnection = IDL.Record({\n data: IDL.Vec(Event),\n next_offset: TransactionId,\n next_canister_id: IDL.Opt(IDL.Principal),\n });\n const Metadata = IDL.Record({\n fee: IDL.Nat,\n decimals: IDL.Nat8,\n owner: IDL.Principal,\n logo: IDL.Text,\n name: IDL.Text,\n totalSupply: IDL.Nat,\n symbol: IDL.Text,\n });\n const Operation = IDL.Variant({\n transferFrom: IDL.Null,\n burn: IDL.Null,\n mint: IDL.Null,\n approve: IDL.Null,\n canisterCalled: IDL.Null,\n transfer: IDL.Null,\n canisterCreated: IDL.Null,\n });\n const Time = IDL.Int;\n const TxRecord = IDL.Record({\n op: Operation,\n to: IDL.Principal,\n fee: IDL.Nat,\n status: TransactionStatus,\n from: IDL.Principal,\n timestamp: Time,\n caller: IDL.Opt(IDL.Principal),\n index: IDL.Nat,\n amount: IDL.Nat,\n });\n const MintError = IDL.Variant({ NotSufficientLiquidity: IDL.Null });\n const MintResult = IDL.Variant({ Ok: TransactionId, Err: MintError });\n const Stats = IDL.Record({\n fee: IDL.Nat,\n transfers_count: IDL.Nat64,\n balance: IDL.Nat64,\n mints_count: IDL.Nat64,\n transfers_from_count: IDL.Nat64,\n canisters_created_count: IDL.Nat64,\n supply: IDL.Nat,\n burns_count: IDL.Nat64,\n approvals_count: IDL.Nat64,\n proxy_calls_count: IDL.Nat64,\n history_events: IDL.Nat64,\n });\n const ResultCall = IDL.Variant({\n Ok: IDL.Record({ return: IDL.Vec(IDL.Nat8) }),\n Err: IDL.Text,\n });\n const CreateResult = IDL.Variant({\n Ok: IDL.Record({ canister_id: IDL.Principal }),\n Err: IDL.Text,\n });\n const ResultSend = IDL.Variant({ Ok: IDL.Null, Err: IDL.Text });\n return IDL.Service({\n allowance: IDL.Func([IDL.Principal, IDL.Principal], [IDL.Nat], [\"query\"]),\n approve: IDL.Func([IDL.Principal, IDL.Nat], [TxReceipt], []),\n balance: IDL.Func([IDL.Opt(IDL.Principal)], [IDL.Nat64], []),\n balanceOf: IDL.Func([IDL.Principal], [IDL.Nat], [\"query\"]),\n burn: IDL.Func([IDL.Record({ canister_id: IDL.Principal, amount: IDL.Nat64 })], [BurnResult], []),\n decimals: IDL.Func([], [IDL.Nat8], [\"query\"]),\n events: IDL.Func([IDL.Record({ offset: IDL.Opt(IDL.Nat64), limit: IDL.Nat16 })], [EventsConnection], [\"query\"]),\n getMetadata: IDL.Func([], [Metadata], [\"query\"]),\n getTransaction: IDL.Func([IDL.Nat], [TxRecord], []),\n getTransactions: IDL.Func([IDL.Nat, IDL.Nat], [IDL.Vec(TxRecord)], []),\n get_transaction: IDL.Func([TransactionId], [IDL.Opt(Event)], []),\n halt: IDL.Func([], [], []),\n historySize: IDL.Func([], [IDL.Nat], [\"query\"]),\n logo: IDL.Func([], [IDL.Text], [\"query\"]),\n mint: IDL.Func([IDL.Principal, IDL.Nat], [MintResult], []),\n name: IDL.Func([], [IDL.Text], [\"query\"]),\n nameErc20: IDL.Func([], [IDL.Text], [\"query\"]),\n stats: IDL.Func([], [Stats], [\"query\"]),\n symbol: IDL.Func([], [IDL.Text], [\"query\"]),\n totalSupply: IDL.Func([], [IDL.Nat], [\"query\"]),\n transfer: IDL.Func([IDL.Principal, IDL.Nat], [TxReceipt], []),\n transferErc20: IDL.Func([IDL.Principal, IDL.Nat], [TxReceipt], []),\n transferFrom: IDL.Func([IDL.Principal, IDL.Principal, IDL.Nat], [TxReceipt], []),\n wallet_balance: IDL.Func([], [IDL.Record({ amount: IDL.Nat64 })], [\"query\"]),\n wallet_call: IDL.Func(\n [\n IDL.Record({\n args: IDL.Vec(IDL.Nat8),\n cycles: IDL.Nat64,\n method_name: IDL.Text,\n canister: IDL.Principal,\n }),\n ],\n [ResultCall],\n []\n ),\n wallet_create_canister: IDL.Func(\n [\n IDL.Record({\n controller: IDL.Opt(IDL.Principal),\n cycles: IDL.Nat64,\n }),\n ],\n [CreateResult],\n []\n ),\n wallet_create_wallet: IDL.Func(\n [\n IDL.Record({\n controller: IDL.Opt(IDL.Principal),\n cycles: IDL.Nat64,\n }),\n ],\n [CreateResult],\n []\n ),\n wallet_send: IDL.Func([IDL.Record({ canister: IDL.Principal, amount: IDL.Nat64 })], [ResultSend], []),\n });\n};\nexport const init = () => {\n return [];\n};\n","export default ({ IDL }: any) => {\n const TxReceipt = IDL.Variant({\n Ok: IDL.Nat,\n Err: IDL.Variant({\n InsufficientAllowance: IDL.Null,\n InsufficientBalance: IDL.Null,\n ErrorOperationStyle: IDL.Null,\n Unauthorized: IDL.Null,\n LedgerTrap: IDL.Null,\n ErrorTo: IDL.Null,\n Other: IDL.Text,\n BlockUsed: IDL.Null,\n AmountTooSmall: IDL.Null\n })\n });\n const Metadata = IDL.Record({\n fee: IDL.Nat,\n decimals: IDL.Nat8,\n owner: IDL.Principal,\n logo: IDL.Text,\n name: IDL.Text,\n totalSupply: IDL.Nat,\n symbol: IDL.Text\n });\n const Time = IDL.Int;\n const TokenInfo = IDL.Record({\n holderNumber: IDL.Nat,\n deployTime: Time,\n metadata: Metadata,\n historySize: IDL.Nat,\n cycles: IDL.Nat,\n feeTo: IDL.Principal\n });\n return IDL.Service({\n allowance: IDL.Func([IDL.Principal, IDL.Principal], [IDL.Nat], [\"query\"]),\n approve: IDL.Func([IDL.Principal, IDL.Nat], [TxReceipt], []),\n balanceOf: IDL.Func([IDL.Principal], [IDL.Nat], [\"query\"]),\n burn: IDL.Func([IDL.Nat], [TxReceipt], []),\n decimals: IDL.Func([], [IDL.Nat8], [\"query\"]),\n getAllowanceSize: IDL.Func([], [IDL.Nat], [\"query\"]),\n getHolders: IDL.Func([IDL.Nat, IDL.Nat], [IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Nat))], [\"query\"]),\n getMetadata: IDL.Func([], [Metadata], [\"query\"]),\n getTokenFee: IDL.Func([], [IDL.Nat], [\"query\"]),\n getTokenInfo: IDL.Func([], [TokenInfo], [\"query\"]),\n getUserApprovals: IDL.Func([IDL.Principal], [IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Nat))], [\"query\"]),\n historySize: IDL.Func([], [IDL.Nat], [\"query\"]),\n logo: IDL.Func([], [IDL.Text], [\"query\"]),\n mint: IDL.Func([IDL.Principal, IDL.Nat], [TxReceipt], []),\n name: IDL.Func([], [IDL.Text], [\"query\"]),\n setFee: IDL.Func([IDL.Nat], [], [\"oneway\"]),\n setFeeTo: IDL.Func([IDL.Principal], [], [\"oneway\"]),\n setLogo: IDL.Func([IDL.Text], [], [\"oneway\"]),\n setName: IDL.Func([IDL.Text], [], [\"oneway\"]),\n setOwner: IDL.Func([IDL.Principal], [], [\"oneway\"]),\n symbol: IDL.Func([], [IDL.Text], [\"query\"]),\n totalSupply: IDL.Func([], [IDL.Nat], [\"query\"]),\n transfer: IDL.Func([IDL.Principal, IDL.Nat], [TxReceipt], []),\n transferFrom: IDL.Func([IDL.Principal, IDL.Principal, IDL.Nat], [TxReceipt], [])\n });\n};\n","export default ({ IDL }) => {\n return IDL.Service({\n balanceOf: IDL.Func([IDL.Principal], [IDL.Nat], []),\n });\n};\n","export default ({ IDL }) => {\n return IDL.Service({\n totalSupply: IDL.Func([], [IDL.Nat], [])\n });\n};\n","import { actor } from \"../actor\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport {\n DIP20,\n DIP20Balance,\n DIP20InterfaceFactory,\n DIP20BalanceInterfaceFactory,\n XTC,\n XTCInterfaceFactory,\n DIP20Supply,\n DIP20SupplyInterfaceFactory,\n} from \"@icpswap/candid\";\n\nexport const xtc = (identity?: ActorIdentity) =>\n actor.create({\n identity,\n idlFactory: XTCInterfaceFactory,\n canisterId: \"aanaa-xaaaa-aaaah-aaeiq-cai\",\n });\n\nexport const dip20 = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n identity,\n idlFactory: DIP20InterfaceFactory,\n canisterId,\n });\n\nexport const dip20BalanceActor = (\n canisterId: string,\n identity?: ActorIdentity\n) =>\n actor.create({\n identity,\n idlFactory: DIP20BalanceInterfaceFactory,\n canisterId,\n });\n\nexport const dip20SupplyActor = (\n canisterId: string,\n identity?: ActorIdentity\n) =>\n actor.create({\n identity,\n idlFactory: DIP20SupplyInterfaceFactory,\n canisterId,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const Balance = IDL.Nat;\n const AccountIdentifier = IDL.Text;\n const User = IDL.Variant({\n principal: IDL.Principal,\n address: AccountIdentifier\n });\n const SubAccount = IDL.Vec(IDL.Nat8);\n const AllowanceRequest = IDL.Record({\n owner: User,\n subaccount: IDL.Opt(SubAccount),\n spender: IDL.Principal\n });\n const Balance__1 = IDL.Nat;\n const TokenIdentifier = IDL.Text;\n const CommonError__1 = IDL.Variant({\n InsufficientBalance: IDL.Null,\n InvalidToken: TokenIdentifier,\n Unauthorized: AccountIdentifier,\n Other: IDL.Text\n });\n const Result_2 = IDL.Variant({ ok: Balance__1, err: CommonError__1 });\n const ApproveRequest = IDL.Record({\n subaccount: IDL.Opt(SubAccount),\n allowance: Balance,\n spender: IDL.Principal\n });\n const Result_3 = IDL.Variant({ ok: IDL.Bool, err: CommonError__1 });\n const BalanceRequest = IDL.Record({\n token: TokenIdentifier,\n user: User\n });\n const CommonError = IDL.Variant({\n InsufficientBalance: IDL.Null,\n InvalidToken: TokenIdentifier,\n Unauthorized: AccountIdentifier,\n Other: IDL.Text\n });\n const BalanceResponse = IDL.Variant({ ok: Balance, err: CommonError });\n const Result_7 = IDL.Variant({ ok: IDL.Nat, err: CommonError__1 });\n const Extension = IDL.Text;\n const HoldersRequest = IDL.Record({\n offset: IDL.Opt(IDL.Nat),\n limit: IDL.Opt(IDL.Nat)\n });\n const Holder = IDL.Record({\n balance: IDL.Nat,\n account: AccountIdentifier\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(Holder),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const Result_6 = IDL.Variant({ ok: Page_1, err: CommonError });\n const Result_5 = IDL.Variant({ ok: IDL.Text, err: CommonError__1 });\n const Metadata = IDL.Variant({\n fungible: IDL.Record({\n decimals: IDL.Nat8,\n ownerAccount: AccountIdentifier,\n metadata: IDL.Opt(IDL.Vec(IDL.Nat8)),\n name: IDL.Text,\n symbol: IDL.Text\n }),\n nonfungible: IDL.Record({ metadata: IDL.Opt(IDL.Vec(IDL.Nat8)) })\n });\n const Result_4 = IDL.Variant({ ok: Metadata, err: CommonError__1 });\n const MintRequest = IDL.Record({ to: User, amount: Balance });\n const TransferResponse = IDL.Variant({\n ok: Balance,\n err: IDL.Variant({\n InsufficientAllowance: IDL.Null,\n CannotNotify: AccountIdentifier,\n InsufficientBalance: IDL.Null,\n InvalidToken: TokenIdentifier,\n Rejected: IDL.Null,\n Unauthorized: AccountIdentifier,\n Other: IDL.Text\n })\n });\n const AccountIdentifier__1 = IDL.Text;\n const User__1 = IDL.Variant({\n principal: IDL.Principal,\n address: AccountIdentifier\n });\n const Result_1 = IDL.Variant({ ok: IDL.Nat, err: CommonError });\n const TransactionRequest = IDL.Record({\n hash: IDL.Opt(IDL.Text),\n user: IDL.Opt(User),\n offset: IDL.Opt(IDL.Nat),\n limit: IDL.Opt(IDL.Nat),\n index: IDL.Opt(IDL.Nat)\n });\n const TransType = IDL.Variant({\n burn: IDL.Null,\n mint: IDL.Null,\n approve: IDL.Null,\n transfer: IDL.Null\n });\n const Transaction = IDL.Record({\n to: AccountIdentifier,\n fee: Balance,\n status: IDL.Text,\n transType: TransType,\n from: AccountIdentifier,\n hash: IDL.Text,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n timestamp: IDL.Int,\n index: IDL.Nat,\n amount: Balance\n });\n const Page = IDL.Record({\n content: IDL.Vec(Transaction),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const Result = IDL.Variant({ ok: Page, err: CommonError });\n const Memo = IDL.Vec(IDL.Nat8);\n const TransferRequest = IDL.Record({\n to: User,\n token: TokenIdentifier,\n notify: IDL.Bool,\n from: User,\n memo: Memo,\n subaccount: IDL.Opt(SubAccount),\n nonce: IDL.Opt(IDL.Nat),\n amount: Balance\n });\n const Token = IDL.Service({\n allowance: IDL.Func([AllowanceRequest], [Result_2], [\"query\"]),\n approve: IDL.Func([ApproveRequest], [Result_3], []),\n balance: IDL.Func([BalanceRequest], [BalanceResponse], [\"query\"]),\n cycleAvailable: IDL.Func([], [Result_7], []),\n cycleBalance: IDL.Func([], [Result_7], [\"query\"]),\n extensions: IDL.Func([], [IDL.Vec(Extension)], [\"query\"]),\n getFee: IDL.Func([], [Result_2], [\"query\"]),\n holders: IDL.Func([HoldersRequest], [Result_6], [\"query\"]),\n logo: IDL.Func([], [Result_5], [\"query\"]),\n metadata: IDL.Func([], [Result_4], [\"query\"]),\n mint: IDL.Func([MintRequest], [TransferResponse], []),\n registry: IDL.Func([], [IDL.Vec(IDL.Tuple(AccountIdentifier__1, Balance__1))], [\"query\"]),\n setFee: IDL.Func([Balance__1], [Result_3], []),\n setFeeTo: IDL.Func([User__1], [Result_3], []),\n setLogo: IDL.Func([IDL.Text], [Result_3], []),\n supply: IDL.Func([], [Result_2], [\"query\"]),\n totalHolders: IDL.Func([], [Result_1], [\"query\"]),\n transactions: IDL.Func([TransactionRequest], [Result], [\"query\"]),\n transfer: IDL.Func([TransferRequest], [TransferResponse], []),\n transferFrom: IDL.Func([TransferRequest], [TransferResponse], [])\n });\n return Token;\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Balance = IDL.Nat;\n const AccountIdentifier = IDL.Text;\n const User = IDL.Variant({\n principal: IDL.Principal,\n address: AccountIdentifier\n });\n const SubAccount = IDL.Vec(IDL.Nat8);\n const AllowanceRequest = IDL.Record({\n owner: User,\n subaccount: IDL.Opt(SubAccount),\n spender: IDL.Principal\n });\n const Balance__1 = IDL.Nat;\n const TokenIdentifier = IDL.Text;\n const CommonError__1 = IDL.Variant({\n InsufficientBalance: IDL.Null,\n InvalidToken: TokenIdentifier,\n Unauthorized: AccountIdentifier,\n Other: IDL.Text\n });\n const Result_4 = IDL.Variant({ ok: Balance__1, err: CommonError__1 });\n const ApproveRequest = IDL.Record({\n subaccount: IDL.Opt(SubAccount),\n allowance: Balance,\n spender: IDL.Principal\n });\n const Result_5 = IDL.Variant({ ok: IDL.Bool, err: CommonError__1 });\n const BalanceRequest = IDL.Record({\n token: TokenIdentifier,\n user: User\n });\n const CommonError = IDL.Variant({\n InsufficientBalance: IDL.Null,\n InvalidToken: TokenIdentifier,\n Unauthorized: AccountIdentifier,\n Other: IDL.Text\n });\n const BalanceResponse = IDL.Variant({ ok: Balance, err: CommonError });\n const Result_10 = IDL.Variant({ ok: IDL.Nat, err: CommonError__1 });\n const Extension = IDL.Text;\n const HoldersRequest = IDL.Record({\n offset: IDL.Opt(IDL.Nat),\n limit: IDL.Opt(IDL.Nat)\n });\n const Holder = IDL.Record({\n balance: IDL.Nat,\n account: AccountIdentifier\n });\n const Page_2 = IDL.Record({\n content: IDL.Vec(Holder),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const Result_9 = IDL.Variant({ ok: Page_2, err: CommonError });\n const Result_8 = IDL.Variant({ ok: IDL.Text, err: CommonError__1 });\n const Metadata = IDL.Variant({\n fungible: IDL.Record({\n decimals: IDL.Nat8,\n ownerAccount: AccountIdentifier,\n metadata: IDL.Opt(IDL.Vec(IDL.Nat8)),\n name: IDL.Text,\n symbol: IDL.Text\n }),\n nonfungible: IDL.Record({ metadata: IDL.Opt(IDL.Vec(IDL.Nat8)) })\n });\n const Result_7 = IDL.Variant({ ok: Metadata, err: CommonError__1 });\n const BlockHeight = IDL.Nat64;\n const MintRequest = IDL.Record({ to: User, blockHeight: BlockHeight });\n const Result_6 = IDL.Variant({ ok: IDL.Bool, err: CommonError });\n const AccountIdentifier__1 = IDL.Text;\n const User__1 = IDL.Variant({\n principal: IDL.Principal,\n address: AccountIdentifier\n });\n const Result_3 = IDL.Variant({ ok: IDL.Nat, err: CommonError });\n const TransactionRequest = IDL.Record({\n hash: IDL.Opt(IDL.Text),\n user: IDL.Opt(User),\n offset: IDL.Opt(IDL.Nat),\n limit: IDL.Opt(IDL.Nat),\n index: IDL.Opt(IDL.Nat)\n });\n const TransType = IDL.Variant({\n burn: IDL.Null,\n mint: IDL.Null,\n approve: IDL.Null,\n transfer: IDL.Null\n });\n const Transaction = IDL.Record({\n to: AccountIdentifier,\n fee: Balance,\n status: IDL.Text,\n transType: TransType,\n from: AccountIdentifier,\n hash: IDL.Text,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n timestamp: IDL.Int,\n index: IDL.Nat,\n amount: Balance\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(Transaction),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const Result_2 = IDL.Variant({ ok: Page_1, err: CommonError });\n const Memo = IDL.Vec(IDL.Nat8);\n const TransferRequest = IDL.Record({\n to: User,\n token: TokenIdentifier,\n notify: IDL.Bool,\n from: User,\n memo: Memo,\n subaccount: IDL.Opt(SubAccount),\n nonce: IDL.Opt(IDL.Nat),\n amount: Balance\n });\n const TransferResponse = IDL.Variant({\n ok: Balance,\n err: IDL.Variant({\n InsufficientAllowance: IDL.Null,\n CannotNotify: AccountIdentifier,\n InsufficientBalance: IDL.Null,\n InvalidToken: TokenIdentifier,\n Rejected: IDL.Null,\n Unauthorized: AccountIdentifier,\n Other: IDL.Text\n })\n });\n const WithdrawRequest = IDL.Record({ to: User, amount: Balance });\n const BlockHeight__1 = IDL.Nat64;\n const Result_1 = IDL.Variant({ ok: BlockHeight__1, err: CommonError });\n const WrapRequest = IDL.Record({\n user: IDL.Opt(User),\n offset: IDL.Opt(IDL.Nat),\n limit: IDL.Opt(IDL.Nat),\n index: IDL.Opt(IDL.Nat)\n });\n const Date = IDL.Nat64;\n const WrapType = IDL.Variant({ wrap: IDL.Null, unwrap: IDL.Null });\n const WrapRecord = IDL.Record({\n to: AccountIdentifier,\n date: Date,\n from: AccountIdentifier,\n wrapType: WrapType,\n blockHeight: BlockHeight,\n index: IDL.Nat,\n amount: Balance\n });\n const Page = IDL.Record({\n content: IDL.Vec(WrapRecord),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const Result = IDL.Variant({ ok: Page, err: CommonError });\n const WrapToken = IDL.Service({\n allowance: IDL.Func([AllowanceRequest], [Result_4], [\"query\"]),\n approve: IDL.Func([ApproveRequest], [Result_5], []),\n balance: IDL.Func([BalanceRequest], [BalanceResponse], [\"query\"]),\n cycleAvailable: IDL.Func([], [Result_10], []),\n cycleBalance: IDL.Func([], [Result_10], [\"query\"]),\n extensions: IDL.Func([], [IDL.Vec(Extension)], [\"query\"]),\n getFee: IDL.Func([], [Result_4], [\"query\"]),\n holders: IDL.Func([HoldersRequest], [Result_9], [\"query\"]),\n logo: IDL.Func([], [Result_8], [\"query\"]),\n metadata: IDL.Func([], [Result_7], [\"query\"]),\n mint: IDL.Func([MintRequest], [Result_6], []),\n registry: IDL.Func([], [IDL.Vec(IDL.Tuple(AccountIdentifier__1, Balance__1))], [\"query\"]),\n setFee: IDL.Func([Balance__1], [Result_5], []),\n setFeeTo: IDL.Func([User__1], [Result_5], []),\n setLogo: IDL.Func([IDL.Text], [Result_5], []),\n supply: IDL.Func([], [Result_4], [\"query\"]),\n totalHolders: IDL.Func([], [Result_3], [\"query\"]),\n transactions: IDL.Func([TransactionRequest], [Result_2], [\"query\"]),\n transfer: IDL.Func([TransferRequest], [TransferResponse], []),\n transferFrom: IDL.Func([TransferRequest], [TransferResponse], []),\n withdraw: IDL.Func([WithdrawRequest], [Result_1], []),\n wrappedTx: IDL.Func([WrapRequest], [Result], [])\n });\n return WrapToken;\n};\n","import { actor } from \"../actor\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport { ActorName } from \"../ActorName\";\nimport {\n WrapICP,\n WrapICPInterfaceFactory,\n EXTToken,\n EXTTokenInterfaceFactory,\n} from \"@icpswap/candid\";\n\nexport const ext = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n identity,\n canisterId,\n idlFactory: EXTTokenInterfaceFactory,\n });\n\nexport const wrapICP = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.WICP,\n identity,\n idlFactory: WrapICPInterfaceFactory,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const Account = IDL.Record({\n owner: IDL.Principal,\n subaccount: IDL.Opt(IDL.Vec(IDL.Nat8))\n });\n const UpgradeArgs = IDL.Record({\n maximum_number_of_accounts: IDL.Opt(IDL.Nat64),\n icrc1_minting_account: IDL.Opt(Account)\n });\n const Tokens = IDL.Record({ e8s: IDL.Nat64 });\n const Duration = IDL.Record({ secs: IDL.Nat64, nanos: IDL.Nat32 });\n const ArchiveOptions = IDL.Record({\n num_blocks_to_archive: IDL.Nat64,\n max_transactions_per_response: IDL.Opt(IDL.Nat64),\n trigger_threshold: IDL.Nat64,\n max_message_size_bytes: IDL.Opt(IDL.Nat64),\n cycles_for_archive_creation: IDL.Opt(IDL.Nat64),\n node_max_memory_size_bytes: IDL.Opt(IDL.Nat64),\n controller_id: IDL.Principal\n });\n const InitArgs = IDL.Record({\n send_whitelist: IDL.Vec(IDL.Principal),\n token_symbol: IDL.Opt(IDL.Text),\n transfer_fee: IDL.Opt(Tokens),\n minting_account: IDL.Text,\n transaction_window: IDL.Opt(Duration),\n max_message_size_bytes: IDL.Opt(IDL.Nat64),\n icrc1_minting_account: IDL.Opt(Account),\n archive_options: IDL.Opt(ArchiveOptions),\n initial_values: IDL.Vec(IDL.Tuple(IDL.Text, Tokens)),\n token_name: IDL.Opt(IDL.Text)\n });\n const LedgerCanisterPayload = IDL.Variant({\n Upgrade: IDL.Opt(UpgradeArgs),\n Init: InitArgs\n });\n const BinaryAccountBalanceArgs = IDL.Record({\n account: IDL.Vec(IDL.Nat8)\n });\n const AccountBalanceArgs = IDL.Record({ account: IDL.Text });\n const ArchiveInfo = IDL.Record({ canister_id: IDL.Principal });\n const Archives = IDL.Record({ archives: IDL.Vec(ArchiveInfo) });\n const Decimals = IDL.Record({ decimals: IDL.Nat32 });\n const MetadataValue = IDL.Variant({\n Int: IDL.Int,\n Nat: IDL.Nat,\n Blob: IDL.Vec(IDL.Nat8),\n Text: IDL.Text\n });\n const StandardRecord = IDL.Record({ url: IDL.Text, name: IDL.Text });\n const TransferArg = IDL.Record({\n to: Account,\n fee: IDL.Opt(IDL.Nat),\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n from_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat\n });\n const TransferError = IDL.Variant({\n GenericError: IDL.Record({\n message: IDL.Text,\n error_code: IDL.Nat\n }),\n TemporarilyUnavailable: IDL.Null,\n BadBurn: IDL.Record({ min_burn_amount: IDL.Nat }),\n Duplicate: IDL.Record({ duplicate_of: IDL.Nat }),\n BadFee: IDL.Record({ expected_fee: IDL.Nat }),\n CreatedInFuture: IDL.Record({ ledger_time: IDL.Nat64 }),\n TooOld: IDL.Null,\n InsufficientFunds: IDL.Record({ balance: IDL.Nat })\n });\n const Result = IDL.Variant({ Ok: IDL.Nat, Err: TransferError });\n const Name = IDL.Record({ name: IDL.Text });\n const GetBlocksArgs = IDL.Record({\n start: IDL.Nat64,\n length: IDL.Nat64\n });\n const TimeStamp = IDL.Record({ timestamp_nanos: IDL.Nat64 });\n const CandidOperation = IDL.Variant({\n Approve: IDL.Record({\n fee: Tokens,\n from: IDL.Vec(IDL.Nat8),\n allowance_e8s: IDL.Int,\n allowance: Tokens,\n expires_at: IDL.Opt(TimeStamp),\n spender: IDL.Vec(IDL.Nat8)\n }),\n Burn: IDL.Record({ from: IDL.Vec(IDL.Nat8), amount: Tokens }),\n Mint: IDL.Record({ to: IDL.Vec(IDL.Nat8), amount: Tokens }),\n Transfer: IDL.Record({\n to: IDL.Vec(IDL.Nat8),\n fee: Tokens,\n from: IDL.Vec(IDL.Nat8),\n amount: Tokens\n }),\n TransferFrom: IDL.Record({\n to: IDL.Vec(IDL.Nat8),\n fee: Tokens,\n from: IDL.Vec(IDL.Nat8),\n amount: Tokens,\n spender: IDL.Vec(IDL.Nat8)\n })\n });\n const CandidTransaction = IDL.Record({\n memo: IDL.Nat64,\n icrc1_memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n operation: IDL.Opt(CandidOperation),\n created_at_time: TimeStamp\n });\n const CandidBlock = IDL.Record({\n transaction: CandidTransaction,\n timestamp: TimeStamp,\n parent_hash: IDL.Opt(IDL.Vec(IDL.Nat8))\n });\n const BlockRange = IDL.Record({ blocks: IDL.Vec(CandidBlock) });\n const GetBlocksError = IDL.Variant({\n BadFirstBlockIndex: IDL.Record({\n requested_index: IDL.Nat64,\n first_valid_index: IDL.Nat64\n }),\n Other: IDL.Record({\n error_message: IDL.Text,\n error_code: IDL.Nat64\n })\n });\n const ArchivedBlocksRange = IDL.Record({\n callback: IDL.Func([GetBlocksArgs], [IDL.Variant({ Ok: BlockRange, Err: GetBlocksError })], [\"query\"]),\n start: IDL.Nat64,\n length: IDL.Nat64\n });\n const QueryBlocksResponse = IDL.Record({\n certificate: IDL.Opt(IDL.Vec(IDL.Nat8)),\n blocks: IDL.Vec(CandidBlock),\n chain_length: IDL.Nat64,\n first_block_index: IDL.Nat64,\n archived_blocks: IDL.Vec(ArchivedBlocksRange)\n });\n const ArchivedEncodedBlocksRange = IDL.Record({\n callback: IDL.Func(\n [GetBlocksArgs],\n [\n IDL.Variant({\n Ok: IDL.Vec(IDL.Vec(IDL.Nat8)),\n Err: GetBlocksError\n })\n ],\n [\"query\"]\n ),\n start: IDL.Nat64,\n length: IDL.Nat64\n });\n const QueryEncodedBlocksResponse = IDL.Record({\n certificate: IDL.Opt(IDL.Vec(IDL.Nat8)),\n blocks: IDL.Vec(IDL.Vec(IDL.Nat8)),\n chain_length: IDL.Nat64,\n first_block_index: IDL.Nat64,\n archived_blocks: IDL.Vec(ArchivedEncodedBlocksRange)\n });\n const SendArgs = IDL.Record({\n to: IDL.Text,\n fee: Tokens,\n memo: IDL.Nat64,\n from_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(TimeStamp),\n amount: Tokens\n });\n const Symbol = IDL.Record({ symbol: IDL.Text });\n const TransferArgs = IDL.Record({\n to: IDL.Vec(IDL.Nat8),\n fee: Tokens,\n memo: IDL.Nat64,\n from_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(TimeStamp),\n amount: Tokens\n });\n const TransferError_1 = IDL.Variant({\n TxTooOld: IDL.Record({ allowed_window_nanos: IDL.Nat64 }),\n BadFee: IDL.Record({ expected_fee: Tokens }),\n TxDuplicate: IDL.Record({ duplicate_of: IDL.Nat64 }),\n TxCreatedInFuture: IDL.Null,\n InsufficientFunds: IDL.Record({ balance: Tokens })\n });\n const Result_1 = IDL.Variant({ Ok: IDL.Nat64, Err: TransferError_1 });\n const TransferFee = IDL.Record({ transfer_fee: Tokens });\n return IDL.Service({\n account_balance: IDL.Func([BinaryAccountBalanceArgs], [Tokens], [\"query\"]),\n account_balance_dfx: IDL.Func([AccountBalanceArgs], [Tokens], [\"query\"]),\n archives: IDL.Func([], [Archives], [\"query\"]),\n decimals: IDL.Func([], [Decimals], [\"query\"]),\n icrc1_balance_of: IDL.Func([Account], [IDL.Nat], [\"query\"]),\n icrc1_decimals: IDL.Func([], [IDL.Nat8], [\"query\"]),\n icrc1_fee: IDL.Func([], [IDL.Nat], [\"query\"]),\n icrc1_metadata: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, MetadataValue))], [\"query\"]),\n icrc1_minting_account: IDL.Func([], [IDL.Opt(Account)], [\"query\"]),\n icrc1_name: IDL.Func([], [IDL.Text], [\"query\"]),\n icrc1_supported_standards: IDL.Func([], [IDL.Vec(StandardRecord)], [\"query\"]),\n icrc1_symbol: IDL.Func([], [IDL.Text], [\"query\"]),\n icrc1_total_supply: IDL.Func([], [IDL.Nat], [\"query\"]),\n icrc1_transfer: IDL.Func([TransferArg], [Result], []),\n name: IDL.Func([], [Name], [\"query\"]),\n query_blocks: IDL.Func([GetBlocksArgs], [QueryBlocksResponse], [\"query\"]),\n query_encoded_blocks: IDL.Func([GetBlocksArgs], [QueryEncodedBlocksResponse], [\"query\"]),\n send_dfx: IDL.Func([SendArgs], [IDL.Nat64], []),\n symbol: IDL.Func([], [Symbol], [\"query\"]),\n transfer: IDL.Func([TransferArgs], [Result_1], []),\n transfer_fee: IDL.Func([IDL.Record({})], [TransferFee], [\"query\"])\n });\n};\n","import { actor } from \"../actor\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport { Ledger, LedgerInterfaceFactory } from \"@icpswap/candid\";\n\nimport { LEDGER_CANISTER_ID, ic_host } from \"@icpswap/constants\";\n\nexport const ledgerService = (identity?: ActorIdentity) =>\n actor.create({\n idlFactory: LedgerInterfaceFactory,\n canisterId: LEDGER_CANISTER_ID,\n identity,\n host: ic_host,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const BoolResult = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const AccountIdentifier = IDL.Text;\n const KVPair = IDL.Record({ k: IDL.Text, v: IDL.Text });\n const CanisterInfo = IDL.Record({\n cid: IDL.Text,\n creator: AccountIdentifier,\n linkMap: IDL.Vec(KVPair),\n ownerName: IDL.Text,\n owner: AccountIdentifier,\n name: IDL.Text,\n createTime: IDL.Int,\n totalSupply: IDL.Nat,\n introduction: IDL.Text,\n mintSupply: IDL.Nat,\n royalties: IDL.Nat,\n image: IDL.Text\n });\n const ResponseResult_5 = IDL.Variant({\n ok: CanisterInfo,\n err: IDL.Text\n });\n const CanisterRequest = IDL.Record({\n linkMap: IDL.Vec(KVPair),\n ownerName: IDL.Text,\n name: IDL.Text,\n introduction: IDL.Text,\n royalties: IDL.Nat,\n image: IDL.Text\n });\n const TextResult = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n const ResponseResult = IDL.Variant({\n ok: IDL.Tuple(IDL.Nat, IDL.Nat, IDL.Text, IDL.Text),\n err: IDL.Text\n });\n const PageResponse = IDL.Record({\n content: IDL.Vec(CanisterInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_2 = IDL.Variant({\n ok: PageResponse,\n err: IDL.Text\n });\n const ResponseResult_4 = IDL.Variant({\n ok: IDL.Tuple(IDL.Nat, IDL.Text, IDL.Text, IDL.Text),\n err: IDL.Text\n });\n const Page = IDL.Record({\n content: IDL.Vec(CanisterInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_3 = IDL.Variant({ ok: Page, err: IDL.Text });\n const ResponseResult_1 = IDL.Variant({\n ok: IDL.Vec(IDL.Text),\n err: IDL.Text\n });\n return IDL.Service({\n add: IDL.Func([IDL.Text, IDL.Nat], [NatResult], []),\n addAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n canisterInfo: IDL.Func([IDL.Text], [ResponseResult_5], [\"query\"]),\n create: IDL.Func([CanisterRequest], [TextResult], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], []),\n delete: IDL.Func([IDL.Text], [BoolResult], []),\n deleteTradeStatCanister: IDL.Func([IDL.Text], [BoolResult], []),\n feeInfo: IDL.Func([], [ResponseResult], [\"query\"]),\n findCanister: IDL.Func([IDL.Nat, IDL.Nat], [ResponseResult_2], [\"query\"]),\n findCanisterConfig: IDL.Func([], [ResponseResult_4], [\"query\"]),\n findTop5Canister: IDL.Func([IDL.Nat, IDL.Nat], [ResponseResult_3], [\"query\"]),\n findUserCanister: IDL.Func([IDL.Text, IDL.Nat, IDL.Nat], [ResponseResult_2], [\"query\"]),\n getAdminList: IDL.Func([], [ResponseResult_1], [\"query\"]),\n initLogo: IDL.Func([], [BoolResult], []),\n insert: IDL.Func([CanisterInfo], [NatResult], []),\n removeAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n setCanisterConfig: IDL.Func(\n [IDL.Nat, IDL.Opt(IDL.Text), IDL.Opt(IDL.Text), IDL.Opt(IDL.Text), IDL.Nat32],\n [BoolResult],\n []\n ),\n setFeeInfo: IDL.Func([IDL.Nat, IDL.Nat, IDL.Text, IDL.Text], [ResponseResult], []),\n setLogo: IDL.Func([IDL.Text, IDL.Text], [BoolResult], [])\n });\n};\n","export const idlFactory = ({ IDL }) => {\n const TokenIdentifier = IDL.Text;\n const AccountIdentifier = IDL.Text;\n const User = IDL.Variant({\n 'principal' : IDL.Principal,\n 'address' : AccountIdentifier,\n });\n const AllowanceRequest = IDL.Record({\n 'token' : TokenIdentifier,\n 'owner' : User,\n 'spender' : IDL.Principal,\n });\n const Balance__1 = IDL.Nat;\n const CommonError = IDL.Variant({\n 'InsufficientBalance' : IDL.Null,\n 'InvalidToken' : TokenIdentifier,\n 'Unauthorized' : AccountIdentifier,\n 'Other' : IDL.Text,\n });\n const Result_1 = IDL.Variant({ 'ok' : Balance__1, 'err' : CommonError });\n const SubAccount = IDL.Vec(IDL.Nat8);\n const Balance = IDL.Nat;\n const ApproveRequest = IDL.Record({\n 'token' : TokenIdentifier,\n 'subaccount' : IDL.Opt(SubAccount),\n 'allowance' : Balance,\n 'spender' : IDL.Principal,\n });\n const ApproveAllRequest = IDL.Record({\n 'approved' : IDL.Bool,\n 'spender' : User,\n });\n const BoolResult = IDL.Variant({ 'ok' : IDL.Bool, 'err' : IDL.Text });\n const BalanceRequest = IDL.Record({\n 'token' : TokenIdentifier,\n 'user' : User,\n });\n const CommonError__1 = IDL.Variant({\n 'InsufficientBalance' : IDL.Null,\n 'InvalidToken' : TokenIdentifier,\n 'Unauthorized' : AccountIdentifier,\n 'Other' : IDL.Text,\n });\n const BalanceResponse = IDL.Variant({\n 'ok' : Balance,\n 'err' : CommonError__1,\n });\n const TokenIdentifier__1 = IDL.Text;\n const AccountIdentifier__1 = IDL.Text;\n const Result_4 = IDL.Variant({\n 'ok' : AccountIdentifier__1,\n 'err' : CommonError,\n });\n const AccountIdentifier__2 = IDL.Text;\n const KVPair__1 = IDL.Record({ 'k' : IDL.Text, 'v' : IDL.Text });\n const CanisterInfo = IDL.Record({\n 'cid' : IDL.Text,\n 'creator' : AccountIdentifier__2,\n 'linkMap' : IDL.Vec(KVPair__1),\n 'ownerName' : IDL.Text,\n 'owner' : AccountIdentifier__2,\n 'name' : IDL.Text,\n 'createTime' : IDL.Int,\n 'totalSupply' : IDL.Nat,\n 'introduction' : IDL.Text,\n 'mintSupply' : IDL.Nat,\n 'royalties' : IDL.Nat,\n 'image' : IDL.Text,\n });\n const ResponseResult_6 = IDL.Variant({\n 'ok' : CanisterInfo,\n 'err' : IDL.Text,\n });\n const TokenIndex = IDL.Nat32;\n const TextResult = IDL.Variant({ 'ok' : IDL.Text, 'err' : IDL.Text });\n const Chunk = IDL.Record({\n 'content' : IDL.Vec(IDL.Nat8),\n 'batch_id' : IDL.Nat,\n });\n const NatResult = IDL.Variant({ 'ok' : IDL.Nat, 'err' : IDL.Text });\n const Extension = IDL.Text;\n const User__1 = IDL.Variant({\n 'principal' : IDL.Principal,\n 'address' : AccountIdentifier,\n });\n const TokenIndex__1 = IDL.Nat32;\n const KVPair = IDL.Record({ 'k' : IDL.Text, 'v' : IDL.Text });\n const IcsMetadata = IDL.Record({\n 'cId' : IDL.Text,\n 'tokenId' : TokenIndex__1,\n 'owner' : AccountIdentifier,\n 'metadata' : IDL.Opt(IDL.Vec(IDL.Nat8)),\n 'link' : IDL.Text,\n 'name' : IDL.Text,\n 'minter' : AccountIdentifier,\n 'filePath' : IDL.Text,\n 'fileType' : IDL.Text,\n 'mintTime' : IDL.Int,\n 'introduction' : IDL.Text,\n 'attributes' : IDL.Vec(KVPair),\n 'royalties' : IDL.Nat,\n 'nftType' : IDL.Text,\n 'artistName' : IDL.Text,\n });\n const Page_1 = IDL.Record({\n 'content' : IDL.Vec(IcsMetadata),\n 'offset' : IDL.Nat,\n 'limit' : IDL.Nat,\n 'totalElements' : IDL.Nat,\n });\n const ResponseResult_5 = IDL.Variant({ 'ok' : Page_1, 'err' : IDL.Text });\n const Remark = IDL.Text;\n const Memo = IDL.Vec(IDL.Nat8);\n const TransType = IDL.Variant({\n 'burn' : IDL.Null,\n 'mint' : IDL.Null,\n 'approve' : IDL.Null,\n 'transfer' : IDL.Null,\n });\n const TransferRecord = IDL.Record({\n 'to' : AccountIdentifier,\n 'remark' : Remark,\n 'tokenId' : TokenIndex__1,\n 'from' : AccountIdentifier,\n 'hash' : IDL.Text,\n 'memo' : IDL.Opt(Memo),\n 'time' : IDL.Int,\n 'tokenName' : IDL.Text,\n 'txType' : TransType,\n 'caller' : AccountIdentifier,\n 'price' : Balance,\n 'amount' : Balance,\n });\n const Page = IDL.Record({\n 'content' : IDL.Vec(TransferRecord),\n 'offset' : IDL.Nat,\n 'limit' : IDL.Nat,\n 'totalElements' : IDL.Nat,\n });\n const ResponseResult_4 = IDL.Variant({ 'ok' : Page, 'err' : IDL.Text });\n const ResponseResult_3 = IDL.Variant({\n 'ok' : IDL.Tuple(IDL.Nat, IDL.Nat),\n 'err' : IDL.Text,\n });\n const Metadata = IDL.Variant({\n 'fungible' : IDL.Record({\n 'decimals' : IDL.Nat8,\n 'ownerAccount' : AccountIdentifier,\n 'metadata' : IDL.Opt(IDL.Vec(IDL.Nat8)),\n 'name' : IDL.Text,\n 'symbol' : IDL.Text,\n }),\n 'nonfungible' : IDL.Record({ 'metadata' : IDL.Opt(IDL.Vec(IDL.Nat8)) }),\n });\n const HeaderField = IDL.Tuple(IDL.Text, IDL.Text);\n const HttpRequest = IDL.Record({\n 'url' : IDL.Text,\n 'method' : IDL.Text,\n 'body' : IDL.Vec(IDL.Nat8),\n 'headers' : IDL.Vec(HeaderField),\n });\n const StreamingCallbackToken__1 = IDL.Record({\n 'key' : IDL.Text,\n 'index' : IDL.Nat,\n 'content_encoding' : IDL.Text,\n });\n const StreamingStrategy = IDL.Variant({\n 'Callback' : IDL.Record({\n 'token' : StreamingCallbackToken__1,\n 'callback' : IDL.Func([], [], []),\n }),\n });\n const HttpResponse = IDL.Record({\n 'body' : IDL.Vec(IDL.Nat8),\n 'headers' : IDL.Vec(HeaderField),\n 'streaming_strategy' : IDL.Opt(StreamingStrategy),\n 'status_code' : IDL.Nat16,\n });\n const StreamingCallbackToken = IDL.Record({\n 'key' : IDL.Text,\n 'index' : IDL.Nat,\n 'content_encoding' : IDL.Text,\n });\n const StreamingCallbackHttpResponse = IDL.Record({\n 'token' : IDL.Opt(StreamingCallbackToken__1),\n 'body' : IDL.Vec(IDL.Nat8),\n });\n const ResponseResult_2 = IDL.Variant({\n 'ok' : IcsMetadata,\n 'err' : IDL.Text,\n });\n const ResponseResult = IDL.Variant({ 'ok' : Balance__1, 'err' : IDL.Text });\n const Result_3 = IDL.Variant({ 'ok' : IDL.Text, 'err' : IDL.Text });\n const Result_2 = IDL.Variant({ 'ok' : Metadata, 'err' : CommonError });\n const IcsMintRequest = IDL.Record({\n 'owner' : User,\n 'metadata' : IDL.Opt(IDL.Vec(IDL.Nat8)),\n 'link' : IDL.Text,\n 'name' : IDL.Text,\n 'filePath' : IDL.Text,\n 'fileType' : IDL.Text,\n 'introduction' : IDL.Text,\n 'attributes' : IDL.Vec(KVPair),\n 'royalties' : IDL.Nat,\n 'nftType' : IDL.Text,\n 'image' : IDL.Text,\n 'artistName' : IDL.Text,\n });\n const ResponseResult_1 = IDL.Variant({ 'ok' : TokenIndex, 'err' : IDL.Text });\n const MintRequest = IDL.Record({\n 'to' : User,\n 'metadata' : IDL.Opt(IDL.Vec(IDL.Nat8)),\n });\n const IcsMintRequests = IDL.Record({\n 'owner' : User,\n 'metadata' : IDL.Opt(IDL.Vec(IDL.Nat8)),\n 'link' : IDL.Text,\n 'name' : IDL.Text,\n 'count' : IDL.Nat,\n 'filePath' : IDL.Text,\n 'fileType' : IDL.Text,\n 'introduction' : IDL.Text,\n 'attributes' : IDL.Vec(KVPair),\n 'royalties' : IDL.Nat,\n 'nftType' : IDL.Text,\n 'image' : IDL.Text,\n 'artistName' : IDL.Text,\n });\n const Time = IDL.Int;\n const Listing = IDL.Record({\n 'locked' : IDL.Opt(Time),\n 'seller' : IDL.Principal,\n 'price' : IDL.Nat64,\n });\n const Result = IDL.Variant({\n 'ok' : IDL.Vec(\n IDL.Tuple(TokenIndex, IDL.Opt(Listing), IDL.Opt(IDL.Vec(IDL.Nat8)))\n ),\n 'err' : CommonError,\n });\n const TransferRequest = IDL.Record({\n 'to' : User,\n 'token' : TokenIdentifier,\n 'notify' : IDL.Bool,\n 'from' : User,\n 'memo' : Memo,\n 'subaccount' : IDL.Opt(SubAccount),\n 'nonce' : IDL.Opt(IDL.Nat),\n 'amount' : Balance,\n });\n const TransferResponse = IDL.Variant({\n 'ok' : Balance,\n 'err' : IDL.Variant({\n 'InsufficientAllowance' : IDL.Null,\n 'CannotNotify' : AccountIdentifier,\n 'InsufficientBalance' : IDL.Null,\n 'InvalidToken' : TokenIdentifier,\n 'Rejected' : IDL.Null,\n 'Unauthorized' : AccountIdentifier,\n 'Other' : IDL.Text,\n }),\n });\n const NFTDynamicCanister = IDL.Service({\n 'acceptCycles' : IDL.Func([], [], []),\n 'allowance' : IDL.Func([AllowanceRequest], [Result_1], ['query']),\n 'approve' : IDL.Func([ApproveRequest], [], []),\n 'approveForAll' : IDL.Func([ApproveAllRequest], [BoolResult], []),\n 'availableCycles' : IDL.Func([], [IDL.Nat], ['query']),\n 'balance' : IDL.Func([BalanceRequest], [BalanceResponse], ['query']),\n 'bearer' : IDL.Func([TokenIdentifier__1], [Result_4], ['query']),\n 'canisterInfo' : IDL.Func([], [ResponseResult_6], ['query']),\n 'chunkSize' : IDL.Func([], [IDL.Nat], ['query']),\n 'clearChunk' : IDL.Func([], [IDL.Bool], []),\n 'commit_batch' : IDL.Func(\n [\n IDL.Record({\n 'batch_id' : IDL.Nat,\n 'content_type' : IDL.Text,\n 'chunk_ids' : IDL.Vec(IDL.Nat),\n }),\n ],\n [],\n [],\n ),\n 'create' : IDL.Func([CanisterInfo, TokenIndex, IDL.Text], [TextResult], []),\n 'create_batch' : IDL.Func([], [IDL.Record({ 'batch_id' : IDL.Nat })], []),\n 'create_chunk' : IDL.Func(\n [Chunk],\n [IDL.Record({ 'chunk_id' : IDL.Nat })],\n [],\n ),\n 'cycleAvailable' : IDL.Func([], [NatResult], []),\n 'cycleBalance' : IDL.Func([], [NatResult], []),\n 'extensions' : IDL.Func([], [IDL.Vec(Extension)], ['query']),\n 'findCanisterId' : IDL.Func([], [TextResult], []),\n 'findTokenList' : IDL.Func(\n [User__1, IDL.Nat, IDL.Nat],\n [ResponseResult_5],\n ['query'],\n ),\n 'findTokenMarket' : IDL.Func(\n [IDL.Vec(IDL.Text), IDL.Nat, IDL.Nat],\n [ResponseResult_5],\n ['query'],\n ),\n 'findTokenTxRecord' : IDL.Func(\n [User__1, IDL.Nat, IDL.Nat],\n [ResponseResult_4],\n ['query'],\n ),\n 'findTxRecord' : IDL.Func(\n [TokenIdentifier, IDL.Nat, IDL.Nat],\n [ResponseResult_4],\n ['query'],\n ),\n 'getAllowances' : IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, IDL.Vec(AccountIdentifier__1)))],\n ['query'],\n ),\n 'getMinter' : IDL.Func([], [IDL.Principal], ['query']),\n 'getNftStat' : IDL.Func([], [ResponseResult_3], ['query']),\n 'getRegistry' : IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, AccountIdentifier__1))],\n ['query'],\n ),\n 'getTokens' : IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, Metadata))],\n ['query'],\n ),\n 'http_request' : IDL.Func([HttpRequest], [HttpResponse], ['query']),\n 'http_request_streaming_callback' : IDL.Func(\n [StreamingCallbackToken],\n [StreamingCallbackHttpResponse],\n ['query'],\n ),\n 'icsMetadata' : IDL.Func([TokenIndex], [ResponseResult_2], ['query']),\n 'isApproveForAll' : IDL.Func(\n [AccountIdentifier__1, AccountIdentifier__1],\n [BoolResult],\n ['query'],\n ),\n 'isApproveForToken' : IDL.Func(\n [TokenIndex, AccountIdentifier__1, AccountIdentifier__1],\n [ResponseResult],\n ['query'],\n ),\n 'maxFileSize' : IDL.Func([IDL.Nat], [Result_3], []),\n 'metadata' : IDL.Func([TokenIdentifier__1], [Result_2], ['query']),\n 'mint' : IDL.Func([IcsMintRequest], [ResponseResult_1], []),\n 'mintNFT' : IDL.Func([MintRequest], [TokenIndex], []),\n 'mint_batch' : IDL.Func([IcsMintRequests], [ResponseResult_1], []),\n 'ownerNFTCount' : IDL.Func([User__1], [ResponseResult], ['query']),\n 'removeAllApproval' : IDL.Func([ApproveAllRequest], [BoolResult], []),\n 'removeApproval' : IDL.Func([ApproveRequest], [BoolResult], []),\n 'setCanisterId' : IDL.Func([IDL.Opt(IDL.Text)], [BoolResult], []),\n 'setLogo' : IDL.Func([IDL.Text], [BoolResult], []),\n 'setMinter' : IDL.Func([IDL.Principal], [], []),\n 'spenderRemoveApproval' : IDL.Func([TokenIdentifier], [BoolResult], []),\n 'supply' : IDL.Func([TokenIdentifier__1], [Result_1], ['query']),\n 'tokens_ext' : IDL.Func([AccountIdentifier__1], [Result], ['query']),\n 'transfer' : IDL.Func([TransferRequest], [TransferResponse], []),\n });\n return NFTDynamicCanister;\n};\nexport const init = ({ IDL }) => { return [IDL.Principal]; };\n","export const idlFactory = ({ IDL }: any) => {\n const BoolResult = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const TokenIndex__1 = IDL.Nat32;\n const BuyRequest = IDL.Record({\n nftCid: IDL.Text,\n tokenIndex: TokenIndex__1\n });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const ResponseResult_6 = IDL.Variant({\n ok: IDL.Tuple(IDL.Text, IDL.Text),\n err: IDL.Text\n });\n const Time = IDL.Int;\n const AccountIdentifier = IDL.Text;\n const OrderInfo = IDL.Record({\n cid: IDL.Text,\n nftCid: IDL.Text,\n tokenIndex: TokenIndex__1,\n hash: IDL.Text,\n link: IDL.Text,\n name: IDL.Text,\n time: Time,\n minter: AccountIdentifier,\n filePath: IDL.Text,\n fileType: IDL.Text,\n seller: AccountIdentifier,\n introduction: IDL.Text,\n royalties: IDL.Nat,\n artistName: IDL.Text,\n price: IDL.Nat\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(OrderInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_5 = IDL.Variant({ ok: Page_1, err: IDL.Text });\n const AccountIdentifier__1 = IDL.Text;\n const TokenIndex = IDL.Nat32;\n const TxInfoResponse = IDL.Record({\n cid: IDL.Text,\n nftCid: IDL.Text,\n txFee: IDL.Nat,\n tokenIndex: TokenIndex__1,\n hash: IDL.Text,\n name: IDL.Text,\n time: Time,\n minter: AccountIdentifier,\n settleAmountStatus: IDL.Text,\n royaltiesFeeStatus: IDL.Text,\n royaltiesFee: IDL.Nat,\n filePath: IDL.Text,\n fileType: IDL.Text,\n txFeeStatus: IDL.Text,\n seller: AccountIdentifier,\n txStatus: IDL.Text,\n settleAmount: IDL.Nat,\n buyer: AccountIdentifier,\n price: IDL.Nat\n });\n const Page = IDL.Record({\n content: IDL.Vec(TxInfoResponse),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_4 = IDL.Variant({ ok: Page, err: IDL.Text });\n const ResponseResult_3 = IDL.Variant({\n ok: IDL.Vec(IDL.Text),\n err: IDL.Text\n });\n const ResponseResult_2 = IDL.Variant({ ok: OrderInfo, err: IDL.Text });\n const StatResponse = IDL.Record({\n totalVolume: IDL.Nat,\n listSize: IDL.Nat,\n totalTurnover: IDL.Nat,\n avgPrice: IDL.Nat,\n maxPrice: IDL.Nat,\n minPrice: IDL.Nat\n });\n const ResponseResult_1 = IDL.Variant({\n ok: StatResponse,\n err: IDL.Text\n });\n const ResponseResult = IDL.Variant({\n ok: IDL.Tuple(IDL.Bool, IDL.Nat, IDL.Nat, IDL.Nat),\n err: IDL.Text\n });\n const RevokeRequest = IDL.Record({\n nftCid: IDL.Text,\n tokenIndex: TokenIndex__1\n });\n const SaleRequest = IDL.Record({\n nftCid: IDL.Text,\n tokenIndex: TokenIndex__1,\n price: IDL.Nat\n });\n return IDL.Service({\n addAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n buy: IDL.Func([BuyRequest], [BoolResult], []),\n cancel: IDL.Func([IDL.Nat32, IDL.Text], [BoolResult], []),\n cancelOrder: IDL.Func([IDL.Nat32], [BoolResult], []),\n checkPayment: IDL.Func([IDL.Text], [BoolResult], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], []),\n findCanisterId: IDL.Func([], [ResponseResult_6], []),\n findCanisterRecommend: IDL.Func([IDL.Text, IDL.Nat, IDL.Nat], [ResponseResult_5], [\"query\"]),\n findOrderPage: IDL.Func(\n [\n IDL.Opt(IDL.Text),\n IDL.Opt(IDL.Text),\n IDL.Opt(AccountIdentifier__1),\n IDL.Opt(TokenIndex),\n IDL.Nat,\n IDL.Nat,\n IDL.Text,\n IDL.Bool\n ],\n [ResponseResult_5],\n [\"query\"]\n ),\n findRecommend: IDL.Func([IDL.Nat, IDL.Nat], [ResponseResult_5], [\"query\"]),\n findTokenOrderPage: IDL.Func(\n [TokenIndex, IDL.Text, IDL.Nat, IDL.Nat, IDL.Text, IDL.Bool],\n [ResponseResult_5],\n [\"query\"]\n ),\n findTokenTxPage: IDL.Func(\n [TokenIndex, IDL.Text, IDL.Nat, IDL.Nat, IDL.Text, IDL.Bool],\n [ResponseResult_4],\n [\"query\"]\n ),\n findTxPage: IDL.Func(\n [IDL.Opt(IDL.Text), IDL.Opt(IDL.Text), IDL.Opt(TokenIndex), IDL.Nat, IDL.Nat, IDL.Text, IDL.Bool],\n [ResponseResult_4],\n [\"query\"]\n ),\n findUserTxPage: IDL.Func(\n [AccountIdentifier__1, IDL.Opt(IDL.Text), IDL.Opt(IDL.Text), IDL.Nat, IDL.Nat, IDL.Text, IDL.Bool],\n [ResponseResult_4],\n [\"query\"]\n ),\n getAddress: IDL.Func([], [IDL.Text], [\"query\"]),\n getAdminList: IDL.Func([], [ResponseResult_3], [\"query\"]),\n getOrder: IDL.Func([IDL.Text, TokenIndex], [ResponseResult_2], [\"query\"]),\n getStat: IDL.Func([], [ResponseResult_1], [\"query\"]),\n getTradeState: IDL.Func([], [ResponseResult], [\"query\"]),\n removeAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n removeList: IDL.Func([], [BoolResult], []),\n revoke: IDL.Func([RevokeRequest], [BoolResult], []),\n sale: IDL.Func([SaleRequest], [BoolResult], []),\n setCanisterId: IDL.Func([IDL.Opt(IDL.Text), IDL.Opt(IDL.Text), IDL.Opt(IDL.Text)], [BoolResult], []),\n setState: IDL.Func([IDL.Text, IDL.Text, IDL.Text], [BoolResult], []),\n setTradeState: IDL.Func([IDL.Bool], [BoolResult], []),\n unlock: IDL.Func([IDL.Text, TokenIndex], [BoolResult], [])\n });\n};\n","export const idlFactory = ({ IDL }) => {\n const BoolResult = IDL.Variant({ 'ok' : IDL.Bool, 'err' : IDL.Text });\n const NatResult = IDL.Variant({ 'ok' : IDL.Nat, 'err' : IDL.Text });\n const TradeStatResp = IDL.Record({\n 'cid' : IDL.Text,\n 'totalVolume' : IDL.Nat,\n 'listSize' : IDL.Nat,\n 'name' : IDL.Text,\n 'totalTurnover' : IDL.Nat,\n 'floorPrice' : IDL.Nat,\n 'avgPrice' : IDL.Nat,\n 'maxPrice' : IDL.Nat,\n 'minPrice' : IDL.Nat,\n 'transactionCount' : IDL.Nat,\n });\n const Page = IDL.Record({\n 'content' : IDL.Vec(TradeStatResp),\n 'offset' : IDL.Nat,\n 'limit' : IDL.Nat,\n 'totalElements' : IDL.Nat,\n });\n const ResponseResult_3 = IDL.Variant({ 'ok' : Page, 'err' : IDL.Text });\n const ResponseResult_2 = IDL.Variant({\n 'ok' : IDL.Vec(IDL.Text),\n 'err' : IDL.Text,\n });\n const ResponseResult_1 = IDL.Variant({\n 'ok' : TradeStatResp,\n 'err' : IDL.Text,\n });\n const StatResponse = IDL.Record({\n 'totalVolume' : IDL.Nat,\n 'listSize' : IDL.Nat,\n 'totalTurnover' : IDL.Nat,\n 'avgPrice' : IDL.Nat,\n 'maxPrice' : IDL.Nat,\n 'minPrice' : IDL.Nat,\n });\n const ResponseResult = IDL.Variant({ 'ok' : StatResponse, 'err' : IDL.Text });\n return IDL.Service({\n 'addAdmin' : IDL.Func([IDL.Text], [BoolResult], []),\n 'cycleAvailable' : IDL.Func([], [NatResult], []),\n 'cycleBalance' : IDL.Func([], [NatResult], []),\n 'findCanisterStat' : IDL.Func(\n [IDL.Nat, IDL.Nat],\n [ResponseResult_3],\n ['query'],\n ),\n 'findNameStat' : IDL.Func(\n [IDL.Text, IDL.Nat, IDL.Nat],\n [ResponseResult_3],\n ['query'],\n ),\n 'getAdminList' : IDL.Func([], [ResponseResult_2], ['query']),\n 'getCanisterStat' : IDL.Func([IDL.Text], [ResponseResult_1], ['query']),\n 'getNameStat' : IDL.Func([IDL.Text], [ResponseResult_1], ['query']),\n 'getStat' : IDL.Func([], [ResponseResult], ['query']),\n 'init' : IDL.Func([], [NatResult], []),\n 'listStat' : IDL.Func(\n [IDL.Text, IDL.Text, IDL.Nat, IDL.Bool],\n [BoolResult],\n [],\n ),\n 'removeAdmin' : IDL.Func([IDL.Text], [BoolResult], []),\n 'setCanisterId' : IDL.Func(\n [IDL.Opt(IDL.Text), IDL.Opt(IDL.Text), IDL.Opt(IDL.Text)],\n [BoolResult],\n [],\n ),\n 'tradeStat' : IDL.Func(\n [IDL.Nat, IDL.Nat, IDL.Text, IDL.Text],\n [BoolResult],\n [],\n ),\n });\n};\nexport const init = ({ IDL }) => { return []; };\n","export const idlFactory = ({ IDL }: any) => {\n const AssetHandle = IDL.Text;\n const AccountIdentifier__1 = IDL.Text;\n const TokenIndex = IDL.Nat32;\n const SubAccount__1 = IDL.Vec(IDL.Nat8);\n const TokenIdentifier = IDL.Text;\n const AccountIdentifier = IDL.Text;\n const User = IDL.Variant({\n principal: IDL.Principal,\n address: AccountIdentifier,\n });\n const BalanceRequest = IDL.Record({\n token: TokenIdentifier,\n user: User,\n });\n const Balance = IDL.Nat;\n const CommonError__1 = IDL.Variant({\n InvalidToken: TokenIdentifier,\n Other: IDL.Text,\n });\n const BalanceResponse = IDL.Variant({\n ok: Balance,\n err: CommonError__1,\n });\n const TokenIdentifier__1 = IDL.Text;\n const CommonError = IDL.Variant({\n InvalidToken: TokenIdentifier,\n Other: IDL.Text,\n });\n const Result_7 = IDL.Variant({\n ok: AccountIdentifier__1,\n err: CommonError,\n });\n const Time = IDL.Int;\n const Listing = IDL.Record({\n locked: IDL.Opt(Time),\n seller: IDL.Principal,\n price: IDL.Nat64,\n });\n const Result_10 = IDL.Variant({\n ok: IDL.Tuple(AccountIdentifier__1, IDL.Opt(Listing)),\n err: CommonError,\n });\n const AssetId = IDL.Nat32;\n const ChunkId = IDL.Nat32;\n const AssetType = IDL.Variant({\n other: IDL.Text,\n canister: IDL.Record({ id: AssetId, canister: IDL.Text }),\n direct: IDL.Vec(ChunkId),\n });\n const Extension = IDL.Text;\n const ListRequest = IDL.Record({\n token: TokenIdentifier__1,\n from_subaccount: IDL.Opt(SubAccount__1),\n price: IDL.Opt(IDL.Nat64),\n });\n const Result_3 = IDL.Variant({ ok: IDL.Null, err: CommonError });\n const MetadataValue = IDL.Tuple(\n IDL.Text,\n IDL.Variant({\n nat: IDL.Nat,\n blob: IDL.Vec(IDL.Nat8),\n nat8: IDL.Nat8,\n text: IDL.Text,\n })\n );\n const MetadataContainer = IDL.Variant({\n blob: IDL.Vec(IDL.Nat8),\n data: IDL.Vec(MetadataValue),\n json: IDL.Text,\n });\n const Metadata = IDL.Variant({\n fungible: IDL.Record({\n decimals: IDL.Nat8,\n metadata: IDL.Opt(MetadataContainer),\n name: IDL.Text,\n symbol: IDL.Text,\n }),\n nonfungible: IDL.Record({\n thumbnail: IDL.Text,\n asset: IDL.Text,\n metadata: IDL.Opt(MetadataContainer),\n name: IDL.Text,\n }),\n });\n const Result_9 = IDL.Variant({\n ok: IDL.Tuple(AccountIdentifier__1, IDL.Nat64),\n err: CommonError,\n });\n const Transaction = IDL.Record({\n token: TokenIndex,\n time: Time,\n seller: AccountIdentifier__1,\n buyer: AccountIdentifier__1,\n price: IDL.Nat64,\n });\n const Result_8 = IDL.Variant({ ok: Metadata, err: CommonError });\n const PaymentType = IDL.Variant({\n nft: TokenIndex,\n nfts: IDL.Vec(TokenIndex),\n sale: IDL.Nat64,\n });\n const Payment = IDL.Record({\n expires: Time,\n subaccount: SubAccount__1,\n payer: AccountIdentifier__1,\n amount: IDL.Nat64,\n purchase: PaymentType,\n });\n const SalePricingGroup = IDL.Record({\n end: Time,\n participants: IDL.Vec(AccountIdentifier__1),\n name: IDL.Text,\n limit: IDL.Tuple(IDL.Nat64, IDL.Nat64),\n pricing: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Nat64)),\n start: Time,\n });\n const SaleRemaining = IDL.Variant({\n retain: IDL.Null,\n burn: IDL.Null,\n send: AccountIdentifier__1,\n });\n const Sale = IDL.Record({\n end: Time,\n groups: IDL.Vec(SalePricingGroup),\n start: Time,\n quantity: IDL.Nat,\n remaining: SaleRemaining,\n });\n const Result_5 = IDL.Variant({\n ok: IDL.Tuple(AccountIdentifier__1, IDL.Nat64),\n err: IDL.Text,\n });\n const SaleDetailGroup = IDL.Record({\n id: IDL.Nat,\n end: Time,\n name: IDL.Text,\n available: IDL.Bool,\n pricing: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Nat64)),\n start: Time,\n });\n const SaleDetails = IDL.Record({\n end: Time,\n groups: IDL.Vec(SaleDetailGroup),\n start: Time,\n quantity: IDL.Nat,\n remaining: IDL.Nat,\n });\n const Result_4 = IDL.Variant({ ok: IDL.Null, err: IDL.Text });\n const SaleTransaction = IDL.Record({\n time: Time,\n seller: IDL.Principal,\n tokens: IDL.Vec(TokenIndex),\n buyer: AccountIdentifier__1,\n price: IDL.Nat64,\n });\n const Memo = IDL.Vec(IDL.Nat8);\n const SubAccount = IDL.Vec(IDL.Nat8);\n const TransferRequest = IDL.Record({\n to: User,\n token: TokenIdentifier,\n notify: IDL.Bool,\n from: User,\n memo: Memo,\n subaccount: IDL.Opt(SubAccount),\n amount: Balance,\n });\n const TransferResponse = IDL.Variant({\n ok: Balance,\n err: IDL.Variant({\n CannotNotify: AccountIdentifier,\n InsufficientBalance: IDL.Null,\n InvalidToken: TokenIdentifier,\n Rejected: IDL.Null,\n Unauthorized: AccountIdentifier,\n Other: IDL.Text,\n }),\n });\n const Balance__1 = IDL.Nat;\n const Result_2 = IDL.Variant({ ok: Balance__1, err: CommonError });\n const MetadataLegacy = IDL.Variant({\n fungible: IDL.Record({\n decimals: IDL.Nat8,\n metadata: IDL.Opt(IDL.Vec(IDL.Nat8)),\n name: IDL.Text,\n symbol: IDL.Text,\n }),\n nonfungible: IDL.Record({ metadata: IDL.Opt(IDL.Vec(IDL.Nat8)) }),\n });\n const HeaderField = IDL.Tuple(IDL.Text, IDL.Text);\n const HttpRequest = IDL.Record({\n url: IDL.Text,\n method: IDL.Text,\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(HeaderField),\n });\n const HttpStreamingCallbackToken = IDL.Record({\n key: IDL.Text,\n sha256: IDL.Opt(IDL.Vec(IDL.Nat8)),\n index: IDL.Nat,\n content_encoding: IDL.Text,\n });\n const HttpStreamingCallbackResponse = IDL.Record({\n token: IDL.Opt(HttpStreamingCallbackToken),\n body: IDL.Vec(IDL.Nat8),\n });\n const HttpStreamingStrategy = IDL.Variant({\n Callback: IDL.Record({\n token: HttpStreamingCallbackToken,\n callback: IDL.Func(\n [HttpStreamingCallbackToken],\n [HttpStreamingCallbackResponse],\n [\"query\"]\n ),\n }),\n });\n const HttpResponse = IDL.Record({\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(HeaderField),\n upgrade: IDL.Bool,\n streaming_strategy: IDL.Opt(HttpStreamingStrategy),\n status_code: IDL.Nat16,\n });\n const Result_6 = IDL.Variant({ ok: MetadataLegacy, err: CommonError });\n const SaleSettings = IDL.Record({\n startTime: Time,\n whitelist: IDL.Bool,\n totalToSell: IDL.Nat,\n sold: IDL.Nat,\n bulkPricing: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Nat64)),\n whitelistTime: Time,\n salePrice: IDL.Nat64,\n remaining: IDL.Nat,\n price: IDL.Nat64,\n });\n const Result_1 = IDL.Variant({\n ok: IDL.Vec(TokenIndex),\n err: CommonError,\n });\n const Result = IDL.Variant({\n ok: IDL.Vec(\n IDL.Tuple(TokenIndex, IDL.Opt(Listing), IDL.Opt(IDL.Vec(IDL.Nat8)))\n ),\n err: CommonError,\n });\n return IDL.Service({\n acceptCycles: IDL.Func([], [], []),\n addAsset: IDL.Func(\n [AssetHandle, IDL.Nat32, IDL.Text, IDL.Text, IDL.Text],\n [],\n []\n ),\n addThumbnail: IDL.Func([AssetHandle, IDL.Vec(IDL.Nat8)], [], []),\n adminKillHeartbeat: IDL.Func([], [], []),\n adminRefund: IDL.Func(\n [IDL.Text, AccountIdentifier__1, AccountIdentifier__1],\n [IDL.Text],\n []\n ),\n adminStartHeartbeat: IDL.Func([], [], []),\n allSettlements: IDL.Func(\n [],\n [\n IDL.Vec(\n IDL.Tuple(\n TokenIndex,\n IDL.Record({\n subaccount: SubAccount__1,\n seller: IDL.Principal,\n buyer: AccountIdentifier__1,\n price: IDL.Nat64,\n })\n )\n ),\n ],\n [\"query\"]\n ),\n availableCycles: IDL.Func([], [IDL.Nat], [\"query\"]),\n balance: IDL.Func([BalanceRequest], [BalanceResponse], [\"query\"]),\n bearer: IDL.Func([TokenIdentifier__1], [Result_7], [\"query\"]),\n details: IDL.Func([TokenIdentifier__1], [Result_10], [\"query\"]),\n ext_addAssetCanister: IDL.Func([], [], []),\n ext_admin: IDL.Func([], [IDL.Principal], [\"query\"]),\n ext_assetAdd: IDL.Func(\n [AssetHandle, IDL.Text, IDL.Text, AssetType, IDL.Nat],\n [],\n []\n ),\n ext_assetExists: IDL.Func([AssetHandle], [IDL.Bool], [\"query\"]),\n ext_assetFits: IDL.Func([IDL.Bool, IDL.Nat], [IDL.Bool], [\"query\"]),\n ext_assetStream: IDL.Func(\n [AssetHandle, IDL.Vec(IDL.Nat8), IDL.Bool],\n [IDL.Bool],\n []\n ),\n ext_balance: IDL.Func([BalanceRequest], [BalanceResponse], [\"query\"]),\n ext_bearer: IDL.Func([TokenIdentifier__1], [Result_7], [\"query\"]),\n ext_capInit: IDL.Func([], [], []),\n ext_expired: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(AccountIdentifier__1, SubAccount__1))],\n [\"query\"]\n ),\n ext_extensions: IDL.Func([], [IDL.Vec(Extension)], [\"query\"]),\n ext_marketplaceList: IDL.Func([ListRequest], [Result_3], []),\n ext_marketplaceListings: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, Listing, Metadata))],\n [\"query\"]\n ),\n ext_marketplacePurchase: IDL.Func(\n [TokenIdentifier__1, IDL.Nat64, AccountIdentifier__1],\n [Result_9],\n []\n ),\n ext_marketplaceSettle: IDL.Func([AccountIdentifier__1], [Result_3], []),\n ext_marketplaceStats: IDL.Func(\n [],\n [IDL.Nat64, IDL.Nat64, IDL.Nat64, IDL.Nat64, IDL.Nat, IDL.Nat, IDL.Nat],\n [\"query\"]\n ),\n ext_marketplaceTransactions: IDL.Func(\n [],\n [IDL.Vec(Transaction)],\n [\"query\"]\n ),\n ext_metadata: IDL.Func([TokenIdentifier__1], [Result_8], [\"query\"]),\n ext_mint: IDL.Func(\n [IDL.Vec(IDL.Tuple(AccountIdentifier__1, Metadata))],\n [IDL.Vec(TokenIndex)],\n []\n ),\n ext_payments: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(AccountIdentifier__1, Payment))],\n [\"query\"]\n ),\n ext_removeAdmin: IDL.Func([], [], []),\n ext_saleClose: IDL.Func([], [IDL.Bool], []),\n ext_saleCurrent: IDL.Func([], [IDL.Opt(Sale)], [\"query\"]),\n ext_saleEnd: IDL.Func([], [IDL.Bool], []),\n ext_saleOpen: IDL.Func(\n [IDL.Vec(SalePricingGroup), SaleRemaining, IDL.Vec(AccountIdentifier__1)],\n [IDL.Bool],\n []\n ),\n ext_salePause: IDL.Func([], [IDL.Bool], []),\n ext_salePurchase: IDL.Func(\n [IDL.Nat, IDL.Nat64, IDL.Nat64, AccountIdentifier__1],\n [Result_5],\n []\n ),\n ext_saleResume: IDL.Func([], [IDL.Bool], []),\n ext_saleSettings: IDL.Func(\n [AccountIdentifier__1],\n [IDL.Opt(SaleDetails)],\n [\"query\"]\n ),\n ext_saleSettle: IDL.Func([AccountIdentifier__1], [Result_4], []),\n ext_saleTransactions: IDL.Func([], [IDL.Vec(SaleTransaction)], [\"query\"]),\n ext_saleUpdate: IDL.Func(\n [\n IDL.Opt(IDL.Vec(SalePricingGroup)),\n IDL.Opt(SaleRemaining),\n IDL.Opt(IDL.Vec(AccountIdentifier__1)),\n ],\n [IDL.Bool],\n []\n ),\n ext_setAdmin: IDL.Func([IDL.Principal], [], []),\n ext_setCollectionMetadata: IDL.Func([IDL.Text, IDL.Text], [], []),\n ext_setMarketplaceOpen: IDL.Func([Time], [], []),\n ext_setOwner: IDL.Func([IDL.Principal], [], []),\n ext_setRoyalty: IDL.Func([AccountIdentifier__1, IDL.Nat64], [], []),\n ext_transfer: IDL.Func([TransferRequest], [TransferResponse], []),\n extdata_supply: IDL.Func([TokenIdentifier__1], [Result_2], [\"query\"]),\n extensions: IDL.Func([], [IDL.Vec(Extension)], [\"query\"]),\n failedSales: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(AccountIdentifier__1, SubAccount__1))],\n [\"query\"]\n ),\n getMetadata: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, MetadataLegacy))],\n [\"query\"]\n ),\n getMinter: IDL.Func([], [IDL.Principal], [\"query\"]),\n getRegistry: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, AccountIdentifier__1))],\n [\"query\"]\n ),\n getTokens: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, MetadataLegacy))],\n [\"query\"]\n ),\n heartbeat_assetCanisters: IDL.Func([], [], []),\n heartbeat_capEvents: IDL.Func([], [], []),\n heartbeat_disbursements: IDL.Func([], [], []),\n heartbeat_external: IDL.Func([], [], []),\n heartbeat_isRunning: IDL.Func([], [IDL.Bool], [\"query\"]),\n heartbeat_paymentSettlements: IDL.Func([], [], []),\n heartbeat_pending: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Nat))],\n [\"query\"]\n ),\n heartbeat_start: IDL.Func([], [], []),\n heartbeat_stop: IDL.Func([], [], []),\n http_request: IDL.Func([HttpRequest], [HttpResponse], [\"query\"]),\n http_request_streaming_callback: IDL.Func(\n [HttpStreamingCallbackToken],\n [HttpStreamingCallbackResponse],\n [\"query\"]\n ),\n http_request_update: IDL.Func([HttpRequest], [HttpResponse], []),\n isHeartbeatRunning: IDL.Func([], [IDL.Bool], [\"query\"]),\n list: IDL.Func([ListRequest], [Result_3], []),\n listings: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, Listing, MetadataLegacy))],\n [\"query\"]\n ),\n lock: IDL.Func(\n [TokenIdentifier__1, IDL.Nat64, AccountIdentifier__1, SubAccount__1],\n [Result_7],\n []\n ),\n metadata: IDL.Func([TokenIdentifier__1], [Result_6], [\"query\"]),\n reserve: IDL.Func(\n [IDL.Nat64, IDL.Nat64, AccountIdentifier__1, SubAccount__1],\n [Result_5],\n []\n ),\n retreive: IDL.Func([AccountIdentifier__1], [Result_4], []),\n saleTransactions: IDL.Func([], [IDL.Vec(SaleTransaction)], [\"query\"]),\n salesSettings: IDL.Func([AccountIdentifier__1], [SaleSettings], [\"query\"]),\n setMinter: IDL.Func([IDL.Principal], [], []),\n settle: IDL.Func([TokenIdentifier__1], [Result_3], []),\n settlements: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, AccountIdentifier__1, IDL.Nat64))],\n [\"query\"]\n ),\n stats: IDL.Func(\n [],\n [IDL.Nat64, IDL.Nat64, IDL.Nat64, IDL.Nat64, IDL.Nat, IDL.Nat, IDL.Nat],\n [\"query\"]\n ),\n supply: IDL.Func([TokenIdentifier__1], [Result_2], [\"query\"]),\n tokens: IDL.Func([AccountIdentifier__1], [Result_1], [\"query\"]),\n tokens_ext: IDL.Func([AccountIdentifier__1], [Result], [\"query\"]),\n transactions: IDL.Func([], [IDL.Vec(Transaction)], [\"query\"]),\n transfer: IDL.Func([TransferRequest], [TransferResponse], []),\n });\n};\n","import { actor } from \"../actor\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport { ActorName } from \"../ActorName\";\n\nimport {\n V3TradeCanister,\n V3TradeCanisterInterfaceFactory,\n NFTCanister as NFT_SERVICE,\n NFTCanisterInterfaceFactory,\n V3TradeStat,\n V3TradeStatInterfaceFactory,\n V3NFTCanisterController,\n V3NFTCanisterControllerInterfaceFactory,\n NFTFile,\n NFTFileInterfaceFactory,\n V1NFTCanister,\n V1NFTCanisterInterfaceFactory,\n ExtNFTInterfaceFactory,\n ExtNFTService,\n} from \"@icpswap/candid\";\n\nexport const NFTCanisterController = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.NFTCanisterController,\n identity,\n idlFactory: V3NFTCanisterControllerInterfaceFactory,\n });\n\nexport const NFTCanister = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n canisterId,\n identity,\n actorName: ActorName.NFTCanister,\n idlFactory: NFTCanisterInterfaceFactory,\n });\n\nexport const NFTTradeCanister = (identity?: ActorIdentity) => {\n return actor.create({\n identity,\n actorName: ActorName.NFTTradeCanister,\n idlFactory: V3TradeCanisterInterfaceFactory,\n });\n};\n\nexport const NFTTradeStat = (identity?: ActorIdentity) => {\n return actor.create({\n identity,\n actorName: ActorName.NFTTradeStat,\n idlFactory: V3TradeStatInterfaceFactory,\n });\n};\n\nexport const NFT_V1 = (canisterId: string, identity?: ActorIdentity) => {\n return actor.create({\n identity,\n idlFactory: V1NFTCanisterInterfaceFactory,\n canisterId,\n });\n};\n\nexport const nftFile = (canisterId: string, identity?: ActorIdentity) => {\n return actor.create({\n identity,\n idlFactory: NFTFileInterfaceFactory,\n canisterId,\n });\n};\n\nexport const ext_nft = (canisterId: string, identity?: ActorIdentity) => {\n return actor.create({\n identity,\n idlFactory: ExtNFTInterfaceFactory,\n canisterId,\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const AssetClass = IDL.Variant({\n Cryptocurrency: IDL.Null,\n FiatCurrency: IDL.Null\n });\n const Asset = IDL.Record({ class: AssetClass, symbol: IDL.Text });\n const ExchangeRateError = IDL.Variant({\n AnonymousPrincipalNotAllowed: IDL.Null,\n CryptoQuoteAssetNotFound: IDL.Null,\n FailedToAcceptCycles: IDL.Null,\n ForexBaseAssetNotFound: IDL.Null,\n CryptoBaseAssetNotFound: IDL.Null,\n StablecoinRateTooFewRates: IDL.Null,\n ForexAssetsNotFound: IDL.Null,\n InconsistentRatesReceived: IDL.Null,\n RateLimited: IDL.Null,\n StablecoinRateZeroRate: IDL.Null,\n Other: IDL.Record({ code: IDL.Nat32, description: IDL.Text }),\n ForexInvalidTimestamp: IDL.Null,\n NotEnoughCycles: IDL.Null,\n ForexQuoteAssetNotFound: IDL.Null,\n StablecoinRateNotFound: IDL.Null,\n Pending: IDL.Null\n });\n const Error = IDL.Record({\n message: ExchangeRateError,\n timestamp: IDL.Int\n });\n const ExchangeRate__1 = IDL.Record({\n decimals: IDL.Nat32,\n rate: IDL.Nat64,\n error: IDL.Opt(Error),\n timestamp: IDL.Nat64,\n quote_symbol: IDL.Text,\n quote_class: IDL.Text,\n base_symbol: IDL.Text,\n base_class: IDL.Text\n });\n return IDL.Service({\n add_asset: IDL.Func([Asset, Asset], [], []),\n force_update_rate: IDL.Func([], [], []),\n get_assets: IDL.Func([], [IDL.Vec(IDL.Tuple(Asset, Asset))], [\"query\"]),\n get_exchange_rate: IDL.Func([IDL.Text], [ExchangeRate__1], [\"query\"]),\n get_exchange_rates: IDL.Func([], [IDL.Vec(ExchangeRate__1)], [\"query\"])\n });\n};\n","import { actor } from \"../actor\";\nimport { ExchangeRate, ExchangeRateInterfaceFactory } from \"@icpswap/candid\";\n\nexport const exchangeRate = () =>\n actor.create({\n canisterId: \"2ixw4-taaaa-aaaag-qcpdq-cai\",\n idlFactory: ExchangeRateInterfaceFactory,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const BlockTag = IDL.Variant({\n Safe: IDL.Null,\n Finalized: IDL.Null,\n Latest: IDL.Null,\n });\n const UpgradeArg = IDL.Record({\n next_transaction_nonce: IDL.Opt(IDL.Nat),\n ledger_suite_orchestrator_id: IDL.Opt(IDL.Principal),\n erc20_helper_contract_address: IDL.Opt(IDL.Text),\n last_erc20_scraped_block_number: IDL.Opt(IDL.Nat),\n ethereum_contract_address: IDL.Opt(IDL.Text),\n minimum_withdrawal_amount: IDL.Opt(IDL.Nat),\n ethereum_block_height: IDL.Opt(BlockTag),\n });\n const EthereumNetwork = IDL.Variant({\n Mainnet: IDL.Null,\n Sepolia: IDL.Null,\n });\n const InitArg = IDL.Record({\n ethereum_network: EthereumNetwork,\n last_scraped_block_number: IDL.Nat,\n ecdsa_key_name: IDL.Text,\n next_transaction_nonce: IDL.Nat,\n ledger_id: IDL.Principal,\n ethereum_contract_address: IDL.Opt(IDL.Text),\n minimum_withdrawal_amount: IDL.Nat,\n ethereum_block_height: BlockTag,\n });\n const MinterArg = IDL.Variant({\n UpgradeArg: UpgradeArg,\n InitArg: InitArg,\n });\n const AddCkErc20Token = IDL.Record({\n ckerc20_ledger_id: IDL.Principal,\n chain_id: IDL.Nat,\n address: IDL.Text,\n ckerc20_token_symbol: IDL.Text,\n });\n const Eip1559TransactionPrice = IDL.Record({\n max_priority_fee_per_gas: IDL.Nat,\n max_fee_per_gas: IDL.Nat,\n max_transaction_fee: IDL.Nat,\n timestamp: IDL.Opt(IDL.Nat64),\n gas_limit: IDL.Nat,\n });\n const CanisterStatusType = IDL.Variant({\n stopped: IDL.Null,\n stopping: IDL.Null,\n running: IDL.Null,\n });\n const DefiniteCanisterSettings = IDL.Record({\n freezing_threshold: IDL.Nat,\n controllers: IDL.Vec(IDL.Principal),\n reserved_cycles_limit: IDL.Nat,\n memory_allocation: IDL.Nat,\n compute_allocation: IDL.Nat,\n });\n const QueryStats = IDL.Record({\n response_payload_bytes_total: IDL.Nat,\n num_instructions_total: IDL.Nat,\n num_calls_total: IDL.Nat,\n request_payload_bytes_total: IDL.Nat,\n });\n const CanisterStatusResponse = IDL.Record({\n status: CanisterStatusType,\n memory_size: IDL.Nat,\n cycles: IDL.Nat,\n settings: DefiniteCanisterSettings,\n query_stats: QueryStats,\n idle_cycles_burned_per_day: IDL.Nat,\n module_hash: IDL.Opt(IDL.Vec(IDL.Nat8)),\n reserved_cycles: IDL.Nat,\n });\n const EventSource = IDL.Record({\n transaction_hash: IDL.Text,\n log_index: IDL.Nat,\n });\n const UnsignedTransaction = IDL.Record({\n destination: IDL.Text,\n value: IDL.Nat,\n max_priority_fee_per_gas: IDL.Nat,\n data: IDL.Vec(IDL.Nat8),\n max_fee_per_gas: IDL.Nat,\n chain_id: IDL.Nat,\n nonce: IDL.Nat,\n gas_limit: IDL.Nat,\n access_list: IDL.Vec(\n IDL.Record({\n storage_keys: IDL.Vec(IDL.Vec(IDL.Nat8)),\n address: IDL.Text,\n }),\n ),\n });\n const ReimbursementIndex = IDL.Variant({\n CkErc20: IDL.Record({\n cketh_ledger_burn_index: IDL.Nat,\n ledger_id: IDL.Principal,\n ckerc20_ledger_burn_index: IDL.Nat,\n }),\n CkEth: IDL.Record({ ledger_burn_index: IDL.Nat }),\n });\n const TransactionReceipt = IDL.Record({\n effective_gas_price: IDL.Nat,\n status: IDL.Variant({ Success: IDL.Null, Failure: IDL.Null }),\n transaction_hash: IDL.Text,\n block_hash: IDL.Text,\n block_number: IDL.Nat,\n gas_used: IDL.Nat,\n });\n const Event = IDL.Record({\n timestamp: IDL.Nat64,\n payload: IDL.Variant({\n SkippedBlock: IDL.Record({ block_number: IDL.Nat }),\n AcceptedErc20Deposit: IDL.Record({\n principal: IDL.Principal,\n transaction_hash: IDL.Text,\n value: IDL.Nat,\n log_index: IDL.Nat,\n block_number: IDL.Nat,\n erc20_contract_address: IDL.Text,\n from_address: IDL.Text,\n }),\n SignedTransaction: IDL.Record({\n raw_transaction: IDL.Text,\n withdrawal_id: IDL.Nat,\n }),\n Upgrade: UpgradeArg,\n Init: InitArg,\n AddedCkErc20Token: IDL.Record({\n ckerc20_ledger_id: IDL.Principal,\n chain_id: IDL.Nat,\n address: IDL.Text,\n ckerc20_token_symbol: IDL.Text,\n }),\n QuarantinedDeposit: IDL.Record({ event_source: EventSource }),\n SyncedToBlock: IDL.Record({ block_number: IDL.Nat }),\n AcceptedDeposit: IDL.Record({\n principal: IDL.Principal,\n transaction_hash: IDL.Text,\n value: IDL.Nat,\n log_index: IDL.Nat,\n block_number: IDL.Nat,\n from_address: IDL.Text,\n }),\n ReplacedTransaction: IDL.Record({\n withdrawal_id: IDL.Nat,\n transaction: UnsignedTransaction,\n }),\n QuarantinedReimbursement: IDL.Record({ index: ReimbursementIndex }),\n MintedCkEth: IDL.Record({\n event_source: EventSource,\n mint_block_index: IDL.Nat,\n }),\n ReimbursedEthWithdrawal: IDL.Record({\n transaction_hash: IDL.Opt(IDL.Text),\n withdrawal_id: IDL.Nat,\n reimbursed_amount: IDL.Nat,\n reimbursed_in_block: IDL.Nat,\n }),\n FailedErc20WithdrawalRequest: IDL.Record({\n to: IDL.Principal,\n withdrawal_id: IDL.Nat,\n reimbursed_amount: IDL.Nat,\n to_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n }),\n ReimbursedErc20Withdrawal: IDL.Record({\n burn_in_block: IDL.Nat,\n transaction_hash: IDL.Opt(IDL.Text),\n withdrawal_id: IDL.Nat,\n reimbursed_amount: IDL.Nat,\n ledger_id: IDL.Principal,\n reimbursed_in_block: IDL.Nat,\n }),\n MintedCkErc20: IDL.Record({\n event_source: EventSource,\n erc20_contract_address: IDL.Text,\n mint_block_index: IDL.Nat,\n ckerc20_token_symbol: IDL.Text,\n }),\n CreatedTransaction: IDL.Record({\n withdrawal_id: IDL.Nat,\n transaction: UnsignedTransaction,\n }),\n InvalidDeposit: IDL.Record({\n event_source: EventSource,\n reason: IDL.Text,\n }),\n SyncedErc20ToBlock: IDL.Record({ block_number: IDL.Nat }),\n AcceptedErc20WithdrawalRequest: IDL.Record({\n cketh_ledger_burn_index: IDL.Nat,\n destination: IDL.Text,\n ckerc20_ledger_id: IDL.Principal,\n withdrawal_amount: IDL.Nat,\n from: IDL.Principal,\n created_at: IDL.Nat64,\n from_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n erc20_contract_address: IDL.Text,\n ckerc20_ledger_burn_index: IDL.Nat,\n max_transaction_fee: IDL.Nat,\n }),\n AcceptedEthWithdrawalRequest: IDL.Record({\n ledger_burn_index: IDL.Nat,\n destination: IDL.Text,\n withdrawal_amount: IDL.Nat,\n from: IDL.Principal,\n created_at: IDL.Opt(IDL.Nat64),\n from_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n }),\n FinalizedTransaction: IDL.Record({\n withdrawal_id: IDL.Nat,\n transaction_receipt: TransactionReceipt,\n }),\n }),\n });\n const CkErc20Token = IDL.Record({\n erc20_contract_address: IDL.Text,\n ledger_canister_id: IDL.Principal,\n ckerc20_token_symbol: IDL.Text,\n });\n const GasFeeEstimate = IDL.Record({\n max_priority_fee_per_gas: IDL.Nat,\n max_fee_per_gas: IDL.Nat,\n timestamp: IDL.Nat64,\n });\n const MinterInfo = IDL.Record({\n eth_balance: IDL.Opt(IDL.Nat),\n eth_helper_contract_address: IDL.Opt(IDL.Text),\n last_observed_block_number: IDL.Opt(IDL.Nat),\n erc20_helper_contract_address: IDL.Opt(IDL.Text),\n last_erc20_scraped_block_number: IDL.Opt(IDL.Nat),\n supported_ckerc20_tokens: IDL.Opt(IDL.Vec(CkErc20Token)),\n last_gas_fee_estimate: IDL.Opt(GasFeeEstimate),\n smart_contract_address: IDL.Opt(IDL.Text),\n last_eth_scraped_block_number: IDL.Opt(IDL.Nat),\n minimum_withdrawal_amount: IDL.Opt(IDL.Nat),\n erc20_balances: IDL.Opt(IDL.Vec(IDL.Record({ balance: IDL.Nat, erc20_contract_address: IDL.Text }))),\n minter_address: IDL.Opt(IDL.Text),\n ethereum_block_height: IDL.Opt(BlockTag),\n });\n const EthTransaction = IDL.Record({ transaction_hash: IDL.Text });\n const TxFinalizedStatus = IDL.Variant({\n Success: IDL.Record({\n transaction_hash: IDL.Text,\n effective_transaction_fee: IDL.Opt(IDL.Nat),\n }),\n Reimbursed: IDL.Record({\n transaction_hash: IDL.Text,\n reimbursed_amount: IDL.Nat,\n reimbursed_in_block: IDL.Nat,\n }),\n PendingReimbursement: EthTransaction,\n });\n const RetrieveEthStatus = IDL.Variant({\n NotFound: IDL.Null,\n TxFinalized: TxFinalizedStatus,\n TxSent: EthTransaction,\n TxCreated: IDL.Null,\n Pending: IDL.Null,\n });\n const WithdrawErc20Arg = IDL.Record({\n ckerc20_ledger_id: IDL.Principal,\n recipient: IDL.Text,\n amount: IDL.Nat,\n });\n const RetrieveErc20Request = IDL.Record({\n ckerc20_block_index: IDL.Nat,\n cketh_block_index: IDL.Nat,\n });\n const LedgerError = IDL.Variant({\n TemporarilyUnavailable: IDL.Text,\n InsufficientAllowance: IDL.Record({\n token_symbol: IDL.Text,\n ledger_id: IDL.Principal,\n allowance: IDL.Nat,\n failed_burn_amount: IDL.Nat,\n }),\n AmountTooLow: IDL.Record({\n minimum_burn_amount: IDL.Nat,\n token_symbol: IDL.Text,\n ledger_id: IDL.Principal,\n failed_burn_amount: IDL.Nat,\n }),\n InsufficientFunds: IDL.Record({\n balance: IDL.Nat,\n token_symbol: IDL.Text,\n ledger_id: IDL.Principal,\n failed_burn_amount: IDL.Nat,\n }),\n });\n const WithdrawErc20Error = IDL.Variant({\n TokenNotSupported: IDL.Record({\n supported_tokens: IDL.Vec(CkErc20Token),\n }),\n TemporarilyUnavailable: IDL.Text,\n CkErc20LedgerError: IDL.Record({\n error: LedgerError,\n cketh_block_index: IDL.Nat,\n }),\n CkEthLedgerError: IDL.Record({ error: LedgerError }),\n RecipientAddressBlocked: IDL.Record({ address: IDL.Text }),\n });\n const WithdrawalArg = IDL.Record({\n recipient: IDL.Text,\n amount: IDL.Nat,\n });\n const RetrieveEthRequest = IDL.Record({ block_index: IDL.Nat });\n const WithdrawalError = IDL.Variant({\n TemporarilyUnavailable: IDL.Text,\n InsufficientAllowance: IDL.Record({ allowance: IDL.Nat }),\n AmountTooLow: IDL.Record({ min_withdrawal_amount: IDL.Nat }),\n RecipientAddressBlocked: IDL.Record({ address: IDL.Text }),\n InsufficientFunds: IDL.Record({ balance: IDL.Nat }),\n });\n const Account = IDL.Record({\n owner: IDL.Principal,\n subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n });\n const WithdrawalSearchParameter = IDL.Variant({\n ByRecipient: IDL.Text,\n BySenderAccount: Account,\n ByWithdrawalId: IDL.Nat64,\n });\n const WithdrawalStatus = IDL.Variant({\n TxFinalized: TxFinalizedStatus,\n TxSent: EthTransaction,\n TxCreated: IDL.Null,\n Pending: IDL.Null,\n });\n const WithdrawalDetail = IDL.Record({\n status: WithdrawalStatus,\n token_symbol: IDL.Text,\n withdrawal_amount: IDL.Nat,\n withdrawal_id: IDL.Nat64,\n from: IDL.Principal,\n from_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n max_transaction_fee: IDL.Opt(IDL.Nat),\n recipient_address: IDL.Text,\n });\n return IDL.Service({\n add_ckerc20_token: IDL.Func([AddCkErc20Token], [], []),\n eip_1559_transaction_price: IDL.Func([], [Eip1559TransactionPrice], [\"query\"]),\n get_canister_status: IDL.Func([], [CanisterStatusResponse], []),\n get_events: IDL.Func(\n [IDL.Record({ start: IDL.Nat64, length: IDL.Nat64 })],\n [\n IDL.Record({\n total_event_count: IDL.Nat64,\n events: IDL.Vec(Event),\n }),\n ],\n [\"query\"],\n ),\n get_minter_info: IDL.Func([], [MinterInfo], [\"query\"]),\n is_address_blocked: IDL.Func([IDL.Text], [IDL.Bool], [\"query\"]),\n minter_address: IDL.Func([], [IDL.Text], []),\n retrieve_eth_status: IDL.Func([IDL.Nat64], [RetrieveEthStatus], []),\n smart_contract_address: IDL.Func([], [IDL.Text], [\"query\"]),\n withdraw_erc20: IDL.Func(\n [WithdrawErc20Arg],\n [\n IDL.Variant({\n Ok: RetrieveErc20Request,\n Err: WithdrawErc20Error,\n }),\n ],\n [],\n ),\n withdraw_eth: IDL.Func([WithdrawalArg], [IDL.Variant({ Ok: RetrieveEthRequest, Err: WithdrawalError })], []),\n withdrawal_status: IDL.Func([WithdrawalSearchParameter], [IDL.Vec(WithdrawalDetail)], [\"query\"]),\n });\n};\nexport const init = ({ IDL }: any) => {\n const BlockTag = IDL.Variant({\n Safe: IDL.Null,\n Finalized: IDL.Null,\n Latest: IDL.Null,\n });\n const UpgradeArg = IDL.Record({\n next_transaction_nonce: IDL.Opt(IDL.Nat),\n ledger_suite_orchestrator_id: IDL.Opt(IDL.Principal),\n erc20_helper_contract_address: IDL.Opt(IDL.Text),\n last_erc20_scraped_block_number: IDL.Opt(IDL.Nat),\n ethereum_contract_address: IDL.Opt(IDL.Text),\n minimum_withdrawal_amount: IDL.Opt(IDL.Nat),\n ethereum_block_height: IDL.Opt(BlockTag),\n });\n const EthereumNetwork = IDL.Variant({\n Mainnet: IDL.Null,\n Sepolia: IDL.Null,\n });\n const InitArg = IDL.Record({\n ethereum_network: EthereumNetwork,\n last_scraped_block_number: IDL.Nat,\n ecdsa_key_name: IDL.Text,\n next_transaction_nonce: IDL.Nat,\n ledger_id: IDL.Principal,\n ethereum_contract_address: IDL.Opt(IDL.Text),\n minimum_withdrawal_amount: IDL.Nat,\n ethereum_block_height: BlockTag,\n });\n const MinterArg = IDL.Variant({\n UpgradeArg: UpgradeArg,\n InitArg: InitArg,\n });\n return [MinterArg];\n};\n","import { Erc20MinterInterfaceFactory, Erc20MinterService } from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\n\nexport const erc20Minter = (canisterId: string, identity?: true) =>\n actor.create({\n canisterId,\n idlFactory: Erc20MinterInterfaceFactory,\n identity,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const Result = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const Result_2 = IDL.Variant({\n ok: IDL.Vec(IDL.Principal),\n err: IDL.Text,\n });\n const AliasResult = IDL.Record({\n is_public: IDL.Bool,\n alias: IDL.Opt(IDL.Text),\n governance_id: IDL.Opt(IDL.Principal),\n ledger_id: IDL.Principal,\n });\n const Page = IDL.Record({\n content: IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Text)),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_1 = IDL.Variant({ ok: Page, err: IDL.Text });\n return IDL.Service({\n addPrincipalAlias: IDL.Func([IDL.Principal, IDL.Text], [Result], []),\n addSharedPrincipal: IDL.Func([IDL.Principal], [Result], []),\n cycleBalance: IDL.Func([], [IDL.Nat], []),\n getAdmins: IDL.Func([], [Result_2], [\"query\"]),\n getAllPrincipalAliases: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Text))], [\"query\"]),\n getPrincipalAlias: IDL.Func([IDL.Principal], [IDL.Opt(IDL.Text)], [\"query\"]),\n getPrincipalAliasByLedger: IDL.Func([IDL.Principal], [IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Text))], [\"query\"]),\n getPrincipalAliasByLedgers: IDL.Func([IDL.Vec(IDL.Principal)], [IDL.Vec(AliasResult)], [\"query\"]),\n queryPrincipalAliasPage: IDL.Func([IDL.Nat, IDL.Nat], [Result_1], [\"query\"]),\n setAdmins: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n syncSNSProject: IDL.Func([], [Result], []),\n });\n};\n","import { LiquidityLocksService, LiquidityLocksInterfaceFactory } from \"@icpswap/candid\";\nimport { ActorName } from \"../ActorName\";\n\nimport { actor } from \"../actor\";\n\nexport const liquidityLocks = () =>\n actor.create({\n actorName: ActorName.LiquidityLocks,\n idlFactory: LiquidityLocksInterfaceFactory,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const DepositArgs = IDL.Record({ fee: IDL.Nat, amount: IDL.Nat });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result = IDL.Variant({ ok: IDL.Nat, err: Error });\n const Result_1 = IDL.Variant({ ok: IDL.Text, err: Error });\n const WithdrawArgs = IDL.Record({ fee: IDL.Nat, amount: IDL.Nat });\n return IDL.Service({\n balanceOf: IDL.Func([IDL.Principal], [IDL.Nat], []),\n deposit: IDL.Func([DepositArgs], [Result], []),\n depositFrom: IDL.Func([DepositArgs], [Result], []),\n destoryPasscode: IDL.Func(\n [IDL.Principal, IDL.Principal, IDL.Nat],\n [Result_1],\n []\n ),\n getFactoryCid: IDL.Func([], [IDL.Principal], [\"query\"]),\n getTokenCid: IDL.Func([], [IDL.Principal], [\"query\"]),\n metadata: IDL.Func(\n [],\n [\n IDL.Record({\n passcodePrice: IDL.Nat,\n tokenCid: IDL.Principal,\n factoryCid: IDL.Principal,\n }),\n ],\n []\n ),\n requestPasscode: IDL.Func(\n [IDL.Principal, IDL.Principal, IDL.Nat],\n [Result_1],\n []\n ),\n withdraw: IDL.Func([WithdrawArgs], [Result], []),\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const TokenIdentifier = IDL.Text;\n const AccountIdentifier = IDL.Text;\n const User = IDL.Variant({\n principal: IDL.Principal,\n address: AccountIdentifier\n });\n const AllowanceRequest = IDL.Record({\n token: TokenIdentifier,\n owner: User,\n spender: IDL.Principal\n });\n const CommonError = IDL.Variant({\n InsufficientBalance: IDL.Null,\n InvalidToken: TokenIdentifier,\n Unauthorized: AccountIdentifier,\n Other: IDL.Text\n });\n const Result_17 = IDL.Variant({ ok: IDL.Nat, err: CommonError });\n const SubAccount = IDL.Vec(IDL.Nat8);\n const Balance = IDL.Nat;\n const ApproveRequest = IDL.Record({\n token: TokenIdentifier,\n subaccount: IDL.Opt(SubAccount),\n allowance: Balance,\n spender: IDL.Principal\n });\n const ApproveAllRequest = IDL.Record({\n approved: IDL.Bool,\n spender: User\n });\n const Result_3 = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const BalanceRequest = IDL.Record({\n token: TokenIdentifier,\n user: User\n });\n const BalanceResponse = IDL.Variant({ ok: Balance, err: CommonError });\n const Result_16 = IDL.Variant({ ok: IDL.Text, err: CommonError });\n const Chunk = IDL.Record({\n content: IDL.Vec(IDL.Nat8),\n batch_id: IDL.Nat\n });\n const Extension = IDL.Text;\n const TokenIndex = IDL.Nat32;\n const KVPair = IDL.Record({ k: IDL.Text, v: IDL.Text });\n const TokenMetadata = IDL.Record({\n cId: IDL.Text,\n tokenId: TokenIndex,\n owner: AccountIdentifier,\n metadata: IDL.Opt(IDL.Vec(IDL.Nat8)),\n link: IDL.Text,\n name: IDL.Text,\n minter: AccountIdentifier,\n filePath: IDL.Text,\n fileType: IDL.Text,\n mintTime: IDL.Int,\n introduction: IDL.Text,\n attributes: IDL.Vec(KVPair),\n royalties: IDL.Nat,\n nftType: IDL.Text,\n artistName: IDL.Text\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(TokenMetadata),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const Result_15 = IDL.Variant({ ok: Page_1, err: IDL.Text });\n const Remark = IDL.Text;\n const Memo = IDL.Vec(IDL.Nat8);\n const TransType = IDL.Variant({\n burn: IDL.Null,\n mint: IDL.Null,\n approve: IDL.Null,\n transfer: IDL.Null\n });\n const TransferRecord = IDL.Record({\n to: AccountIdentifier,\n remark: Remark,\n tokenId: TokenIndex,\n from: AccountIdentifier,\n hash: IDL.Text,\n memo: IDL.Opt(Memo),\n time: IDL.Int,\n tokenName: IDL.Text,\n txType: TransType,\n caller: AccountIdentifier,\n price: Balance,\n amount: Balance\n });\n const Page = IDL.Record({\n content: IDL.Vec(TransferRecord),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const Result_14 = IDL.Variant({ ok: Page, err: IDL.Text });\n const KVPair__1 = IDL.Record({ k: IDL.Text, v: IDL.Text });\n const CanisterInfo = IDL.Record({\n cid: IDL.Text,\n creator: AccountIdentifier,\n linkMap: IDL.Vec(KVPair__1),\n ownerName: IDL.Text,\n owner: AccountIdentifier,\n name: IDL.Text,\n createTime: IDL.Int,\n totalSupply: IDL.Nat,\n introduction: IDL.Text,\n mintSupply: IDL.Nat,\n royalties: IDL.Nat,\n image: IDL.Text\n });\n const Result_13 = IDL.Variant({ ok: CanisterInfo, err: IDL.Text });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null\n });\n const Result_12 = IDL.Variant({ ok: CycleInfo, err: Error });\n const Result_11 = IDL.Variant({\n ok: IDL.Tuple(IDL.Nat, IDL.Nat),\n err: IDL.Text\n });\n const Result_10 = IDL.Variant({ ok: IDL.Vec(IDL.Text), err: IDL.Text });\n const Result_6 = IDL.Variant({ ok: TokenIndex, err: IDL.Text });\n const Result_1 = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n const HeaderField = IDL.Tuple(IDL.Text, IDL.Text);\n const HttpRequest = IDL.Record({\n url: IDL.Text,\n method: IDL.Text,\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(HeaderField)\n });\n const StreamingCallbackToken = IDL.Record({\n key: IDL.Text,\n index: IDL.Nat,\n content_encoding: IDL.Text\n });\n const StreamingStrategy = IDL.Variant({\n Callback: IDL.Record({\n token: StreamingCallbackToken,\n callback: IDL.Func([], [], [])\n })\n });\n const HttpResponse = IDL.Record({\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(HeaderField),\n streaming_strategy: IDL.Opt(StreamingStrategy),\n status_code: IDL.Nat16\n });\n const StreamingCallbackHttpResponse = IDL.Record({\n token: IDL.Opt(StreamingCallbackToken),\n body: IDL.Vec(IDL.Nat8)\n });\n const Result_9 = IDL.Variant({ ok: TokenMetadata, err: IDL.Text });\n const Result_8 = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const Metadata = IDL.Variant({\n fungible: IDL.Record({\n decimals: IDL.Nat8,\n ownerAccount: AccountIdentifier,\n metadata: IDL.Opt(IDL.Vec(IDL.Nat8)),\n name: IDL.Text,\n symbol: IDL.Text\n }),\n nonfungible: IDL.Record({ metadata: IDL.Opt(IDL.Vec(IDL.Nat8)) })\n });\n const Result_7 = IDL.Variant({ ok: Metadata, err: CommonError });\n const MintRequest = IDL.Record({\n owner: User,\n metadata: IDL.Opt(IDL.Vec(IDL.Nat8)),\n link: IDL.Text,\n name: IDL.Text,\n filePath: IDL.Text,\n fileType: IDL.Text,\n introduction: IDL.Text,\n attributes: IDL.Vec(KVPair),\n royalties: IDL.Nat,\n nftType: IDL.Text,\n image: IDL.Text,\n artistName: IDL.Text\n });\n const Result_5 = IDL.Variant({ ok: Balance, err: IDL.Text });\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const QueryPositionResult = IDL.Record({\n fee: IDL.Nat,\n tickUpper: IDL.Int,\n feeGrowthInside1LastX128: IDL.Nat,\n pool: IDL.Text,\n liquidity: IDL.Nat,\n feeGrowthInside0LastX128: IDL.Nat,\n positionId: IDL.Text,\n token0: Token,\n token1: Token,\n tickLower: IDL.Int\n });\n const Result_4 = IDL.Variant({\n ok: QueryPositionResult,\n err: IDL.Text\n });\n const Result_2 = IDL.Variant({ ok: Balance, err: CommonError });\n const Time = IDL.Int;\n const Listing = IDL.Record({\n locked: IDL.Opt(Time),\n seller: IDL.Principal,\n price: IDL.Nat64\n });\n const Result = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(TokenIndex, IDL.Opt(Listing), IDL.Opt(IDL.Vec(IDL.Nat8)))),\n err: CommonError\n });\n const TransferRequest = IDL.Record({\n to: User,\n token: TokenIdentifier,\n notify: IDL.Bool,\n from: User,\n memo: Memo,\n subaccount: IDL.Opt(SubAccount),\n nonce: IDL.Opt(IDL.Nat),\n amount: Balance\n });\n const TransferResponse = IDL.Variant({\n ok: Balance,\n err: IDL.Variant({\n InsufficientAllowance: IDL.Null,\n CannotNotify: AccountIdentifier,\n InsufficientBalance: IDL.Null,\n InvalidToken: TokenIdentifier,\n Rejected: IDL.Null,\n Unauthorized: AccountIdentifier,\n Other: IDL.Text\n })\n });\n const SwapNFT = IDL.Service({\n allowance: IDL.Func([AllowanceRequest], [Result_17], [\"query\"]),\n approve: IDL.Func([ApproveRequest], [], []),\n approveForAll: IDL.Func([ApproveAllRequest], [Result_3], []),\n balance: IDL.Func([BalanceRequest], [BalanceResponse], [\"query\"]),\n bearer: IDL.Func([TokenIdentifier], [Result_16], [\"query\"]),\n checkOperator: IDL.Func([IDL.Text, IDL.Text, IDL.Text], [IDL.Bool], []),\n chunkSize: IDL.Func([], [IDL.Nat], [\"query\"]),\n clearChunk: IDL.Func([], [IDL.Bool], []),\n commit_batch: IDL.Func(\n [\n IDL.Record({\n batch_id: IDL.Nat,\n content_type: IDL.Text,\n chunk_ids: IDL.Vec(IDL.Nat)\n })\n ],\n [],\n []\n ),\n create_batch: IDL.Func([], [IDL.Record({ batch_id: IDL.Nat })], []),\n create_chunk: IDL.Func([Chunk], [IDL.Record({ chunk_id: IDL.Nat })], []),\n deletePool: IDL.Func([IDL.Text], [], []),\n extensions: IDL.Func([], [IDL.Vec(Extension)], [\"query\"]),\n findRemovedTokenList: IDL.Func([User, IDL.Nat, IDL.Nat], [Result_15], [\"query\"]),\n findTokenList: IDL.Func([User, IDL.Nat, IDL.Nat], [Result_15], [\"query\"]),\n findTokenListByPool: IDL.Func([IDL.Text, IDL.Nat, IDL.Nat], [Result_15], [\"query\"]),\n findTokenMarket: IDL.Func([IDL.Vec(IDL.Text), IDL.Nat, IDL.Nat], [Result_15], [\"query\"]),\n findTokenTxRecord: IDL.Func([User, IDL.Nat, IDL.Nat], [Result_14], [\"query\"]),\n findTxRecord: IDL.Func([TokenIdentifier, IDL.Nat, IDL.Nat], [Result_14], [\"query\"]),\n getAllowances: IDL.Func([], [IDL.Vec(IDL.Tuple(TokenIndex, IDL.Vec(AccountIdentifier)))], [\"query\"]),\n getCanisterInfo: IDL.Func([], [Result_13], [\"query\"]),\n getCycleInfo: IDL.Func([], [Result_12], []),\n getMinter: IDL.Func([], [IDL.Principal], [\"query\"]),\n getNftStat: IDL.Func([], [Result_11], [\"query\"]),\n getRegistry: IDL.Func([], [IDL.Vec(IDL.Tuple(TokenIndex, IDL.Text))], [\"query\"]),\n getRemovedPools: IDL.Func([], [Result_10], [\"query\"]),\n getTokenId: IDL.Func([IDL.Text, IDL.Text], [Result_6], [\"query\"]),\n getTokens: IDL.Func([], [IDL.Vec(IDL.Tuple(TokenIndex, TokenMetadata))], [\"query\"]),\n getTradeCanisterId: IDL.Func([], [Result_1], [\"query\"]),\n http_request: IDL.Func([HttpRequest], [HttpResponse], [\"query\"]),\n http_request_streaming_callback: IDL.Func([StreamingCallbackToken], [StreamingCallbackHttpResponse], [\"query\"]),\n icsMetadata: IDL.Func([TokenIndex], [Result_9], [\"query\"]),\n initNFTCanisterInfo: IDL.Func([CanisterInfo, TokenIndex, IDL.Text], [Result_1], []),\n isApproveForAll: IDL.Func([IDL.Text, IDL.Text], [Result_3], [\"query\"]),\n isApproveForToken: IDL.Func([TokenIndex, IDL.Text, IDL.Text], [Result_8], [\"query\"]),\n maxFileSize: IDL.Func([IDL.Nat], [Result_1], []),\n metadata: IDL.Func([TokenIdentifier], [Result_7], [\"query\"]),\n mint: IDL.Func([MintRequest], [Result_6], []),\n ownerNFTCount: IDL.Func([User], [Result_5], [\"query\"]),\n positions: IDL.Func([TokenIndex], [Result_4], []),\n removeAllApproval: IDL.Func([ApproveAllRequest], [Result_3], []),\n removeApproval: IDL.Func([ApproveRequest], [Result_3], []),\n removePool: IDL.Func([IDL.Text], [], []),\n setLogo: IDL.Func([IDL.Text], [Result_3], []),\n setMinter: IDL.Func([IDL.Principal], [], []),\n setTradeCanisterId: IDL.Func([IDL.Opt(IDL.Text)], [Result_3], []),\n spenderRemoveApproval: IDL.Func([TokenIdentifier], [Result_3], []),\n supply: IDL.Func([TokenIdentifier], [Result_2], [\"query\"]),\n tokenURI: IDL.Func([IDL.Nat], [Result_1], []),\n tokens_ext: IDL.Func([AccountIdentifier], [Result], [\"query\"]),\n transfer: IDL.Func([TransferRequest], [TransferResponse], [])\n });\n return SwapNFT;\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Passcode = IDL.Record({\n fee: IDL.Nat,\n token0: IDL.Principal,\n token1: IDL.Principal,\n });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result_1 = IDL.Variant({ ok: IDL.Null, err: Error });\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const CreatePoolArgs = IDL.Record({\n fee: IDL.Nat,\n sqrtPriceX96: IDL.Text,\n token0: Token,\n token1: Token,\n });\n const PoolData = IDL.Record({\n fee: IDL.Nat,\n key: IDL.Text,\n tickSpacing: IDL.Int,\n token0: Token,\n token1: Token,\n canisterId: IDL.Principal,\n });\n const Result_4 = IDL.Variant({ ok: PoolData, err: Error });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Result_7 = IDL.Variant({ ok: CycleInfo, err: Error });\n const Result_6 = IDL.Variant({\n ok: IDL.Opt(IDL.Principal),\n err: Error,\n });\n const Result_5 = IDL.Variant({ ok: IDL.Vec(Passcode), err: Error });\n const GetPoolArgs = IDL.Record({\n fee: IDL.Nat,\n token0: Token,\n token1: Token,\n });\n const Result_2 = IDL.Variant({ ok: IDL.Vec(PoolData), err: Error });\n const Result_3 = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Vec(Passcode))),\n err: Error,\n });\n const Result = IDL.Variant({ ok: IDL.Text, err: Error });\n return IDL.Service({\n addPasscode: IDL.Func([IDL.Principal, Passcode], [Result_1], []),\n addPoolControllers: IDL.Func(\n [IDL.Principal, IDL.Vec(IDL.Principal)],\n [],\n []\n ),\n batchAddPoolControllers: IDL.Func(\n [IDL.Vec(IDL.Principal), IDL.Vec(IDL.Principal)],\n [],\n []\n ),\n batchRemovePoolControllers: IDL.Func(\n [IDL.Vec(IDL.Principal), IDL.Vec(IDL.Principal)],\n [],\n []\n ),\n batchSetPoolAdmins: IDL.Func(\n [IDL.Vec(IDL.Principal), IDL.Vec(IDL.Principal)],\n [],\n []\n ),\n clearRemovedPool: IDL.Func([IDL.Principal], [IDL.Text], []),\n createPool: IDL.Func([CreatePoolArgs], [Result_4], []),\n deletePasscode: IDL.Func([IDL.Principal, Passcode], [Result_1], []),\n getCycleInfo: IDL.Func([], [Result_7], []),\n getGovernanceCid: IDL.Func([], [Result_6], [\"query\"]),\n getPasscodesByPrincipal: IDL.Func([IDL.Principal], [Result_5], [\"query\"]),\n getPool: IDL.Func([GetPoolArgs], [Result_4], [\"query\"]),\n getPools: IDL.Func([], [Result_2], [\"query\"]),\n getPrincipalPasscodes: IDL.Func([], [Result_3], [\"query\"]),\n getRemovedPools: IDL.Func([], [Result_2], [\"query\"]),\n getVersion: IDL.Func([], [IDL.Text], [\"query\"]),\n removePool: IDL.Func([GetPoolArgs], [IDL.Text], []),\n removePoolControllers: IDL.Func(\n [IDL.Principal, IDL.Vec(IDL.Principal)],\n [],\n []\n ),\n removePoolWithdrawErrorLog: IDL.Func(\n [IDL.Principal, IDL.Nat, IDL.Bool],\n [Result_1],\n []\n ),\n restorePool: IDL.Func([IDL.Principal], [IDL.Text], []),\n setPoolAdmins: IDL.Func([IDL.Principal, IDL.Vec(IDL.Principal)], [], []),\n upgradePoolTokenStandard: IDL.Func(\n [IDL.Principal, IDL.Principal],\n [Result],\n []\n ),\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const AccountBalance = IDL.Record({\n balance0: IDL.Nat,\n balance1: IDL.Nat,\n });\n const Page_5 = IDL.Record({\n content: IDL.Vec(IDL.Tuple(IDL.Principal, AccountBalance)),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result_26 = IDL.Variant({ ok: Page_5, err: Error });\n const Result_2 = IDL.Variant({ ok: IDL.Bool, err: Error });\n const Result_25 = IDL.Variant({\n ok: IDL.Record({\n tokenIncome: IDL.Vec(\n IDL.Tuple(\n IDL.Nat,\n IDL.Record({ tokensOwed0: IDL.Nat, tokensOwed1: IDL.Nat })\n )\n ),\n totalTokensOwed0: IDL.Nat,\n totalTokensOwed1: IDL.Nat,\n }),\n err: Error,\n });\n const ClaimArgs = IDL.Record({ positionId: IDL.Nat });\n const Result_24 = IDL.Variant({\n ok: IDL.Record({ amount0: IDL.Nat, amount1: IDL.Nat }),\n err: Error,\n });\n const DecreaseLiquidityArgs = IDL.Record({\n liquidity: IDL.Text,\n positionId: IDL.Nat,\n });\n const DepositArgs = IDL.Record({\n fee: IDL.Nat,\n token: IDL.Text,\n amount: IDL.Nat,\n });\n const Result = IDL.Variant({ ok: IDL.Nat, err: Error });\n const DepositAndMintArgs = IDL.Record({\n tickUpper: IDL.Int,\n fee0: IDL.Nat,\n fee1: IDL.Nat,\n amount0: IDL.Nat,\n amount1: IDL.Nat,\n positionOwner: IDL.Principal,\n amount0Desired: IDL.Text,\n amount1Desired: IDL.Text,\n tickLower: IDL.Int,\n });\n const Result_23 = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Principal)),\n err: Error,\n });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Result_22 = IDL.Variant({ ok: CycleInfo, err: Error });\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const GetPositionArgs = IDL.Record({\n tickUpper: IDL.Int,\n tickLower: IDL.Int,\n });\n const PositionInfo = IDL.Record({\n tokensOwed0: IDL.Nat,\n tokensOwed1: IDL.Nat,\n feeGrowthInside1LastX128: IDL.Nat,\n liquidity: IDL.Nat,\n feeGrowthInside0LastX128: IDL.Nat,\n });\n const Result_21 = IDL.Variant({ ok: PositionInfo, err: Error });\n const PositionInfoWithId = IDL.Record({\n id: IDL.Text,\n tokensOwed0: IDL.Nat,\n tokensOwed1: IDL.Nat,\n feeGrowthInside1LastX128: IDL.Nat,\n liquidity: IDL.Nat,\n feeGrowthInside0LastX128: IDL.Nat,\n });\n const Page_4 = IDL.Record({\n content: IDL.Vec(PositionInfoWithId),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_20 = IDL.Variant({ ok: Page_4, err: Error });\n const Result_19 = IDL.Variant({ ok: IDL.Principal, err: Error });\n const TransactionType = IDL.Variant({\n decreaseLiquidity: IDL.Null,\n claim: IDL.Null,\n swap: IDL.Null,\n addLiquidity: IDL.Null,\n increaseLiquidity: IDL.Null,\n });\n const SwapRecordInfo = IDL.Record({\n to: IDL.Text,\n feeAmount: IDL.Int,\n action: TransactionType,\n feeAmountTotal: IDL.Int,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n token0AmountTotal: IDL.Nat,\n liquidityTotal: IDL.Nat,\n from: IDL.Text,\n tick: IDL.Int,\n feeTire: IDL.Nat,\n recipient: IDL.Text,\n token0ChangeAmount: IDL.Nat,\n token1AmountTotal: IDL.Nat,\n liquidityChange: IDL.Nat,\n token1Standard: IDL.Text,\n TVLToken0: IDL.Int,\n TVLToken1: IDL.Int,\n token0Fee: IDL.Nat,\n token1Fee: IDL.Nat,\n timestamp: IDL.Int,\n token1ChangeAmount: IDL.Nat,\n token0Standard: IDL.Text,\n price: IDL.Nat,\n poolId: IDL.Text,\n });\n const PushError = IDL.Record({ time: IDL.Int, message: IDL.Text });\n const Result_18 = IDL.Variant({\n ok: IDL.Record({\n infoCid: IDL.Text,\n records: IDL.Vec(SwapRecordInfo),\n errors: IDL.Vec(PushError),\n retryCount: IDL.Nat,\n }),\n err: Error,\n });\n const TickLiquidityInfo = IDL.Record({\n tickIndex: IDL.Int,\n price0Decimal: IDL.Nat,\n liquidityNet: IDL.Int,\n price0: IDL.Nat,\n price1: IDL.Nat,\n liquidityGross: IDL.Nat,\n price1Decimal: IDL.Nat,\n });\n const Page_3 = IDL.Record({\n content: IDL.Vec(TickLiquidityInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_17 = IDL.Variant({ ok: Page_3, err: Error });\n const TickInfoWithId = IDL.Record({\n id: IDL.Text,\n initialized: IDL.Bool,\n feeGrowthOutside1X128: IDL.Nat,\n secondsPerLiquidityOutsideX128: IDL.Nat,\n liquidityNet: IDL.Int,\n secondsOutside: IDL.Nat,\n liquidityGross: IDL.Nat,\n feeGrowthOutside0X128: IDL.Nat,\n tickCumulativeOutside: IDL.Int,\n });\n const Page_2 = IDL.Record({\n content: IDL.Vec(TickInfoWithId),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_16 = IDL.Variant({ ok: Page_2, err: Error });\n const Result_15 = IDL.Variant({\n ok: IDL.Record({\n swapFee0Repurchase: IDL.Nat,\n token0Amount: IDL.Nat,\n swapFeeReceiver: IDL.Text,\n token1Amount: IDL.Nat,\n swapFee1Repurchase: IDL.Nat,\n }),\n err: Error,\n });\n const Value = IDL.Variant({\n Int: IDL.Int,\n Nat: IDL.Nat,\n Blob: IDL.Vec(IDL.Nat8),\n Text: IDL.Text,\n });\n const TransferLog = IDL.Record({\n to: IDL.Principal,\n fee: IDL.Nat,\n result: IDL.Text,\n token: Token,\n action: IDL.Text,\n daysFrom19700101: IDL.Nat,\n owner: IDL.Principal,\n from: IDL.Principal,\n fromSubaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n timestamp: IDL.Nat,\n index: IDL.Nat,\n amount: IDL.Nat,\n errorMsg: IDL.Text,\n });\n const Result_14 = IDL.Variant({ ok: IDL.Vec(TransferLog), err: Error });\n const Result_1 = IDL.Variant({ ok: IDL.Text, err: Error });\n const UserPositionInfo = IDL.Record({\n tickUpper: IDL.Int,\n tokensOwed0: IDL.Nat,\n tokensOwed1: IDL.Nat,\n feeGrowthInside1LastX128: IDL.Nat,\n liquidity: IDL.Nat,\n feeGrowthInside0LastX128: IDL.Nat,\n tickLower: IDL.Int,\n });\n const Result_13 = IDL.Variant({ ok: UserPositionInfo, err: Error });\n const Result_12 = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Vec(IDL.Nat))),\n err: Error,\n });\n const Result_11 = IDL.Variant({ ok: IDL.Vec(IDL.Nat), err: Error });\n const UserPositionInfoWithTokenAmount = IDL.Record({\n id: IDL.Nat,\n tickUpper: IDL.Int,\n tokensOwed0: IDL.Nat,\n tokensOwed1: IDL.Nat,\n feeGrowthInside1LastX128: IDL.Nat,\n liquidity: IDL.Nat,\n feeGrowthInside0LastX128: IDL.Nat,\n token0Amount: IDL.Nat,\n token1Amount: IDL.Nat,\n tickLower: IDL.Int,\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(UserPositionInfoWithTokenAmount),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_10 = IDL.Variant({ ok: Page_1, err: Error });\n const UserPositionInfoWithId = IDL.Record({\n id: IDL.Nat,\n tickUpper: IDL.Int,\n tokensOwed0: IDL.Nat,\n tokensOwed1: IDL.Nat,\n feeGrowthInside1LastX128: IDL.Nat,\n liquidity: IDL.Nat,\n feeGrowthInside0LastX128: IDL.Nat,\n tickLower: IDL.Int,\n });\n const Page = IDL.Record({\n content: IDL.Vec(UserPositionInfoWithId),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_9 = IDL.Variant({ ok: Page, err: Error });\n const Result_8 = IDL.Variant({\n ok: IDL.Vec(UserPositionInfoWithId),\n err: Error,\n });\n const Result_7 = IDL.Variant({\n ok: IDL.Record({ balance0: IDL.Nat, balance1: IDL.Nat }),\n err: Error,\n });\n const WithdrawErrorLog = IDL.Record({\n token: Token,\n time: IDL.Int,\n user: IDL.Principal,\n amount: IDL.Nat,\n });\n const Result_6 = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(IDL.Nat, WithdrawErrorLog)),\n err: Error,\n });\n const IncreaseLiquidityArgs = IDL.Record({\n positionId: IDL.Nat,\n amount0Desired: IDL.Text,\n amount1Desired: IDL.Text,\n });\n const PoolMetadata = IDL.Record({\n fee: IDL.Nat,\n key: IDL.Text,\n sqrtPriceX96: IDL.Nat,\n tick: IDL.Int,\n liquidity: IDL.Nat,\n token0: Token,\n token1: Token,\n maxLiquidityPerTick: IDL.Nat,\n nextPositionId: IDL.Nat,\n });\n const Result_5 = IDL.Variant({ ok: PoolMetadata, err: Error });\n const MintArgs = IDL.Record({\n fee: IDL.Nat,\n tickUpper: IDL.Int,\n token0: IDL.Text,\n token1: IDL.Text,\n amount0Desired: IDL.Text,\n amount1Desired: IDL.Text,\n tickLower: IDL.Int,\n });\n const SwapArgs = IDL.Record({\n amountIn: IDL.Text,\n zeroForOne: IDL.Bool,\n amountOutMinimum: IDL.Text,\n });\n const Result_4 = IDL.Variant({\n ok: IDL.Record({ tokensOwed0: IDL.Nat, tokensOwed1: IDL.Nat }),\n err: Error,\n });\n const Result_3 = IDL.Variant({ ok: IDL.Int, err: Error });\n const WithdrawArgs = IDL.Record({\n fee: IDL.Nat,\n token: IDL.Text,\n amount: IDL.Nat,\n });\n return IDL.Service({\n allTokenBalance: IDL.Func([IDL.Nat, IDL.Nat], [Result_26], [\"query\"]),\n approvePosition: IDL.Func([IDL.Principal, IDL.Nat], [Result_2], []),\n batchRefreshIncome: IDL.Func([IDL.Vec(IDL.Nat)], [Result_25], [\"query\"]),\n checkOwnerOfUserPosition: IDL.Func(\n [IDL.Principal, IDL.Nat],\n [Result_2],\n [\"query\"]\n ),\n claim: IDL.Func([ClaimArgs], [Result_24], []),\n decreaseLiquidity: IDL.Func([DecreaseLiquidityArgs], [Result_24], []),\n deposit: IDL.Func([DepositArgs], [Result], []),\n depositAllAndMint: IDL.Func([DepositAndMintArgs], [Result], []),\n depositFrom: IDL.Func([DepositArgs], [Result], []),\n getAddressPrincipals: IDL.Func([], [Result_23], [\"query\"]),\n getAdmins: IDL.Func([], [IDL.Vec(IDL.Principal)], [\"query\"]),\n getAvailabilityState: IDL.Func(\n [],\n [\n IDL.Record({\n whiteList: IDL.Vec(IDL.Principal),\n available: IDL.Bool,\n }),\n ],\n [\"query\"]\n ),\n getClaimLog: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"]),\n getCycleInfo: IDL.Func([], [Result_22], []),\n getMistransferBalance: IDL.Func([Token], [Result], []),\n getPosition: IDL.Func([GetPositionArgs], [Result_21], [\"query\"]),\n getPositions: IDL.Func([IDL.Nat, IDL.Nat], [Result_20], [\"query\"]),\n getPrincipal: IDL.Func([IDL.Text], [Result_19], [\"query\"]),\n getSwapRecordState: IDL.Func([], [Result_18], [\"query\"]),\n getTickInfos: IDL.Func([IDL.Nat, IDL.Nat], [Result_17], [\"query\"]),\n getTicks: IDL.Func([IDL.Nat, IDL.Nat], [Result_16], [\"query\"]),\n getTokenAmountState: IDL.Func([], [Result_15], [\"query\"]),\n getTokenBalance: IDL.Func(\n [],\n [IDL.Record({ token0: IDL.Nat, token1: IDL.Nat })],\n []\n ),\n getTokenMeta: IDL.Func(\n [],\n [\n IDL.Record({\n token0: IDL.Vec(IDL.Tuple(IDL.Text, Value)),\n token1: IDL.Vec(IDL.Tuple(IDL.Text, Value)),\n }),\n ],\n []\n ),\n getTransferLogs: IDL.Func([], [Result_14], [\"query\"]),\n getUserByPositionId: IDL.Func([IDL.Nat], [Result_1], [\"query\"]),\n getUserPosition: IDL.Func([IDL.Nat], [Result_13], [\"query\"]),\n getUserPositionIds: IDL.Func([], [Result_12], [\"query\"]),\n getUserPositionIdsByPrincipal: IDL.Func(\n [IDL.Principal],\n [Result_11],\n [\"query\"]\n ),\n getUserPositionWithTokenAmount: IDL.Func(\n [IDL.Nat, IDL.Nat],\n [Result_10],\n [\"query\"]\n ),\n getUserPositions: IDL.Func([IDL.Nat, IDL.Nat], [Result_9], [\"query\"]),\n getUserPositionsByPrincipal: IDL.Func(\n [IDL.Principal],\n [Result_8],\n [\"query\"]\n ),\n getUserUnusedBalance: IDL.Func([IDL.Principal], [Result_7], [\"query\"]),\n getVersion: IDL.Func([], [IDL.Text], [\"query\"]),\n getWithdrawErrorLog: IDL.Func([], [Result_6], [\"query\"]),\n increaseLiquidity: IDL.Func([IncreaseLiquidityArgs], [Result], []),\n init: IDL.Func([IDL.Nat, IDL.Int, IDL.Nat], [], []),\n metadata: IDL.Func([], [Result_5], [\"query\"]),\n mint: IDL.Func([MintArgs], [Result], []),\n quote: IDL.Func([SwapArgs], [Result], [\"query\"]),\n quoteForAll: IDL.Func([SwapArgs], [Result], [\"query\"]),\n refreshIncome: IDL.Func([IDL.Nat], [Result_4], [\"query\"]),\n removeErrorTransferLog: IDL.Func([IDL.Nat, IDL.Bool], [], []),\n removeWithdrawErrorLog: IDL.Func([IDL.Nat, IDL.Bool], [], []),\n resetTokenAmountState: IDL.Func(\n [IDL.Nat, IDL.Nat, IDL.Nat, IDL.Nat],\n [],\n []\n ),\n setAdmins: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n setAvailable: IDL.Func([IDL.Bool], [], []),\n setWhiteList: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n sumTick: IDL.Func([], [Result_3], [\"query\"]),\n swap: IDL.Func([SwapArgs], [Result], []),\n transferPosition: IDL.Func(\n [IDL.Principal, IDL.Principal, IDL.Nat],\n [Result_2],\n []\n ),\n upgradeTokenStandard: IDL.Func([IDL.Principal], [Result_1], []),\n withdraw: IDL.Func([WithdrawArgs], [Result], []),\n withdrawMistransferBalance: IDL.Func([Token], [Result], []),\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result = IDL.Variant({ ok: IDL.Bool, err: Error });\n const Result_3 = IDL.Variant({\n ok: IDL.Vec(IDL.Principal),\n err: Error,\n });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Result_2 = IDL.Variant({ ok: CycleInfo, err: Error });\n const Result_1 = IDL.Variant({ ok: IDL.Vec(IDL.Text), err: Error });\n const PositionIndex = IDL.Service({\n addPoolId: IDL.Func([IDL.Text], [Result], []),\n getControllers: IDL.Func([], [Result_3], [\"query\"]),\n getCycleInfo: IDL.Func([], [Result_2], []),\n getPools: IDL.Func([], [Result_1], [\"query\"]),\n getUserPools: IDL.Func([IDL.Text], [Result_1], [\"query\"]),\n initUserPoolMap: IDL.Func([IDL.Vec(IDL.Tuple(IDL.Text, IDL.Vec(IDL.Text)))], [], []),\n removePoolId: IDL.Func([IDL.Text], [Result], []),\n removePoolIdWithoutCheck: IDL.Func([IDL.Text], [Result], []),\n setOwners: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n updatePoolIds: IDL.Func([], [], []),\n });\n return PositionIndex;\n};\n","import { actor } from \"../actor\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport { ActorName } from \"../ActorName\";\n\nimport {\n SwapFactory,\n SwapFactoryInterfaceFactory,\n SwapNFT,\n SwapNFTInterfaceFactory,\n SwapPool,\n SwapPoolInterfaceFactory,\n TICKET_SERVICE,\n TicketInterfaceFactory,\n PositionIndex,\n PositionIndexInterfaceFactory,\n} from \"@icpswap/candid\";\n\nexport const swapNFT = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.SwapNFTCanister,\n identity,\n idlFactory: SwapNFTInterfaceFactory,\n });\n\nexport const swapFactory = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.SwapFactory,\n identity,\n idlFactory: SwapFactoryInterfaceFactory,\n });\n\nexport const swapPool = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n identity,\n canisterId: canisterId,\n idlFactory: SwapPoolInterfaceFactory,\n });\n\nexport const swapTicket = () =>\n actor.create({\n actorName: ActorName.SwapTicket,\n idlFactory: TicketInterfaceFactory,\n });\n\nexport const swapPosition = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.Position,\n idlFactory: PositionIndexInterfaceFactory,\n identity,\n });\n","import {\n PassCodeManagerService,\n PassCodeManagerInterfaceFactory,\n} from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\nimport { ActorName } from \"../ActorName\";\n\nexport const passCodeManager = async (identity?: true) =>\n actor.create({\n identity,\n idlFactory: PassCodeManagerInterfaceFactory,\n actorName: ActorName.PassCodeManager,\n });\n\nexport * from \"./global\";\n","export const idlFactory = ({ IDL }: any) => {\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const CreateFarmArgs = IDL.Record({\n startTime: IDL.Nat,\n secondPerCycle: IDL.Nat,\n rewardToken: Token,\n endTime: IDL.Nat,\n rewardAmount: IDL.Nat,\n pool: IDL.Principal,\n refunder: IDL.Principal,\n priceInsideLimit: IDL.Bool,\n token0AmountLimit: IDL.Nat,\n token1AmountLimit: IDL.Nat,\n });\n const Result_4 = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result_3 = IDL.Variant({\n ok: IDL.Vec(IDL.Principal),\n err: Error,\n });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Result_2 = IDL.Variant({ ok: CycleInfo, err: Error });\n const Result_1 = IDL.Variant({ ok: IDL.Nat, err: Error });\n const Result = IDL.Variant({\n ok: IDL.Record({\n farmIndexCid: IDL.Principal,\n governanceCid: IDL.Opt(IDL.Principal),\n feeReceiverCid: IDL.Principal,\n }),\n err: Error,\n });\n return IDL.Service({\n addFarmControllers: IDL.Func([IDL.Principal, IDL.Vec(IDL.Principal)], [], []),\n create: IDL.Func([CreateFarmArgs], [Result_4], []),\n getAdmins: IDL.Func([], [Result_3], [\"query\"]),\n getAllFarms: IDL.Func([], [Result_3], [\"query\"]),\n getCycleInfo: IDL.Func([], [Result_2], []),\n getFee: IDL.Func([], [Result_1], [\"query\"]),\n getInitArgs: IDL.Func([], [Result], [\"query\"]),\n getVersion: IDL.Func([], [IDL.Text], [\"query\"]),\n removeFarmControllers: IDL.Func([IDL.Principal, IDL.Vec(IDL.Principal)], [], []),\n setAdmins: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n setFarmAdmins: IDL.Func([IDL.Principal, IDL.Vec(IDL.Principal)], [], []),\n setFee: IDL.Func([IDL.Nat], [], []),\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result = IDL.Variant({ ok: IDL.Text, err: Error });\n const Result_21 = IDL.Variant({\n ok: IDL.Record({\n token0DecimalsConst: IDL.Float64,\n token1DecimalsConst: IDL.Float64,\n rewardTokenDecimalsConst: IDL.Float64,\n timeConst: IDL.Float64,\n }),\n err: Error,\n });\n const Result_20 = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(IDL.Nat, IDL.Float64)),\n err: Error,\n });\n const Result_19 = IDL.Variant({\n ok: IDL.Vec(IDL.Principal),\n err: Error,\n });\n const Result_18 = IDL.Variant({ ok: IDL.Float64, err: Error });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Result_17 = IDL.Variant({ ok: CycleInfo, err: Error });\n const Deposit = IDL.Record({\n tickUpper: IDL.Int,\n rewardAmount: IDL.Nat,\n owner: IDL.Principal,\n liquidity: IDL.Nat,\n initTime: IDL.Nat,\n lastDistributeTime: IDL.Nat,\n positionId: IDL.Nat,\n token0Amount: IDL.Int,\n holder: IDL.Principal,\n token1Amount: IDL.Int,\n tickLower: IDL.Int,\n });\n const Result_16 = IDL.Variant({ ok: Deposit, err: Error });\n const DistributeRecord = IDL.Record({\n rewardTotal: IDL.Nat,\n owner: IDL.Principal,\n positionId: IDL.Nat,\n timestamp: IDL.Nat,\n rewardGained: IDL.Nat,\n });\n const Page_2 = IDL.Record({\n content: IDL.Vec(DistributeRecord),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_15 = IDL.Variant({ ok: Page_2, err: IDL.Text });\n const FarmStatus = IDL.Variant({\n LIVE: IDL.Null,\n NOT_STARTED: IDL.Null,\n CLOSED: IDL.Null,\n FINISHED: IDL.Null,\n });\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const FarmInfo = IDL.Record({\n startTime: IDL.Nat,\n status: FarmStatus,\n creator: IDL.Principal,\n totalRewardHarvested: IDL.Nat,\n numberOfStakes: IDL.Nat,\n rewardToken: Token,\n endTime: IDL.Nat,\n totalRewardBalance: IDL.Nat,\n pool: IDL.Principal,\n refunder: IDL.Principal,\n poolToken0: Token,\n poolToken1: Token,\n poolFee: IDL.Nat,\n totalRewardUnharvested: IDL.Nat,\n totalReward: IDL.Nat,\n userNumberOfStakes: IDL.Nat,\n positionIds: IDL.Vec(IDL.Nat),\n });\n const Result_14 = IDL.Variant({ ok: FarmInfo, err: Error });\n const InitFarmArgs = IDL.Record({\n fee: IDL.Nat,\n startTime: IDL.Nat,\n status: FarmStatus,\n secondPerCycle: IDL.Nat,\n creator: IDL.Principal,\n nodeIndexCid: IDL.Principal,\n farmIndexCid: IDL.Principal,\n rewardToken: Token,\n endTime: IDL.Nat,\n pool: IDL.Principal,\n refunder: IDL.Principal,\n governanceCid: IDL.Opt(IDL.Principal),\n priceInsideLimit: IDL.Bool,\n token0AmountLimit: IDL.Nat,\n token1AmountLimit: IDL.Nat,\n totalReward: IDL.Nat,\n farmFactoryCid: IDL.Principal,\n feeReceiverCid: IDL.Principal,\n });\n const Result_13 = IDL.Variant({ ok: InitFarmArgs, err: Error });\n const Result_12 = IDL.Variant({\n ok: IDL.Record({\n priceInsideLimit: IDL.Bool,\n positionNumLimit: IDL.Nat,\n token0AmountLimit: IDL.Nat,\n token1AmountLimit: IDL.Nat,\n }),\n err: Error,\n });\n const Result_11 = IDL.Variant({\n ok: IDL.Record({\n poolToken0Amount: IDL.Nat,\n totalLiquidity: IDL.Nat,\n poolToken1Amount: IDL.Nat,\n }),\n err: Error,\n });\n const Result_10 = IDL.Variant({\n ok: IDL.Record({\n poolToken0Symbol: IDL.Text,\n poolToken1Symbol: IDL.Text,\n poolToken1Decimals: IDL.Nat,\n poolToken0Decimals: IDL.Nat,\n poolToken0: IDL.Record({\n address: IDL.Text,\n standard: IDL.Text,\n }),\n poolToken1: IDL.Record({\n address: IDL.Text,\n standard: IDL.Text,\n }),\n }),\n err: Error,\n });\n const Result_9 = IDL.Variant({ ok: IDL.Vec(IDL.Nat), err: Error });\n const Result_1 = IDL.Variant({ ok: IDL.Nat, err: Error });\n const Result_8 = IDL.Variant({\n ok: IDL.Record({\n secondPerCycle: IDL.Nat,\n totalRewardHarvested: IDL.Nat,\n totalRewardBalance: IDL.Nat,\n totalRewardFee: IDL.Nat,\n rewardPerCycle: IDL.Nat,\n rewardTokenFee: IDL.Nat,\n totalCycleCount: IDL.Nat,\n totalRewardUnharvested: IDL.Nat,\n currentCycleCount: IDL.Nat,\n totalReward: IDL.Nat,\n rewardTokenDecimals: IDL.Nat,\n }),\n err: Error,\n });\n const TransType = IDL.Variant({\n withdraw: IDL.Null,\n distribute: IDL.Null,\n unstake: IDL.Null,\n stake: IDL.Null,\n harvest: IDL.Null,\n });\n const StakeRecord = IDL.Record({\n to: IDL.Principal,\n transType: TransType,\n from: IDL.Principal,\n liquidity: IDL.Nat,\n positionId: IDL.Nat,\n timestamp: IDL.Nat,\n amount: IDL.Nat,\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(StakeRecord),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_7 = IDL.Variant({ ok: Page_1, err: IDL.Text });\n const TokenAmount = IDL.Record({\n address: IDL.Text,\n amount: IDL.Nat,\n standard: IDL.Text,\n });\n const TVL = IDL.Record({\n poolToken0: TokenAmount,\n poolToken1: TokenAmount,\n });\n const Result_6 = IDL.Variant({ ok: TVL, err: Error });\n const TransferLog = IDL.Record({\n to: IDL.Principal,\n fee: IDL.Nat,\n result: IDL.Text,\n token: Token,\n action: IDL.Text,\n daysFrom19700101: IDL.Nat,\n owner: IDL.Principal,\n from: IDL.Principal,\n fromSubaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n timestamp: IDL.Nat,\n index: IDL.Nat,\n amount: IDL.Nat,\n errorMsg: IDL.Text,\n });\n const Result_5 = IDL.Variant({ ok: IDL.Vec(TransferLog), err: Error });\n const Result_4 = IDL.Variant({ ok: IDL.Vec(Deposit), err: Error });\n const Page = IDL.Record({\n content: IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Nat)),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_3 = IDL.Variant({ ok: Page, err: Error });\n const Result_2 = IDL.Variant({\n ok: IDL.Record({\n poolToken0: TokenAmount,\n poolToken1: TokenAmount,\n }),\n err: Error,\n });\n return IDL.Service({\n clearErrorLog: IDL.Func([], [], []),\n close: IDL.Func([], [Result], []),\n finishManually: IDL.Func([], [Result], []),\n getAPRConst: IDL.Func([], [Result_21], [\"query\"]),\n getAPRRecord: IDL.Func([], [Result_20], [\"query\"]),\n getAdmins: IDL.Func([], [Result_19], [\"query\"]),\n getAvgAPR: IDL.Func([], [Result_18], [\"query\"]),\n getCycleInfo: IDL.Func([], [Result_17], []),\n getDeposit: IDL.Func([IDL.Nat], [Result_16], [\"query\"]),\n getDistributeRecord: IDL.Func([IDL.Nat, IDL.Nat, IDL.Text], [Result_15], [\"query\"]),\n getErrorLog: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"]),\n getFarmInfo: IDL.Func([IDL.Text], [Result_14], [\"query\"]),\n getInitArgs: IDL.Func([], [Result_13], [\"query\"]),\n getLimitInfo: IDL.Func([], [Result_12], [\"query\"]),\n getLiquidityInfo: IDL.Func([], [Result_11], [\"query\"]),\n getPoolMeta: IDL.Func([], [IDL.Record({ sqrtPriceX96: IDL.Nat, tick: IDL.Int })], []),\n getPoolTokenMeta: IDL.Func([], [Result_10], [\"query\"]),\n getPositionIds: IDL.Func([], [Result_9], [\"query\"]),\n getRewardInfo: IDL.Func([IDL.Vec(IDL.Nat)], [Result_1], [\"query\"]),\n getRewardMeta: IDL.Func([], [Result_8], [\"query\"]),\n getRewardTokenBalance: IDL.Func([], [IDL.Nat], []),\n getStakeRecord: IDL.Func([IDL.Nat, IDL.Nat, IDL.Text], [Result_7], [\"query\"]),\n getTVL: IDL.Func([], [Result_6], [\"query\"]),\n getTransferLogs: IDL.Func([], [Result_5], [\"query\"]),\n getUserDeposits: IDL.Func([IDL.Principal], [Result_4], [\"query\"]),\n getUserRewardBalance: IDL.Func([IDL.Principal], [Result_1], [\"query\"]),\n getUserRewardBalances: IDL.Func([IDL.Nat, IDL.Nat], [Result_3], [\"query\"]),\n getUserTVL: IDL.Func([IDL.Principal], [Result_2], [\"query\"]),\n getVersion: IDL.Func([], [IDL.Text], [\"query\"]),\n init: IDL.Func([], [], []),\n removeErrorTransferLog: IDL.Func([IDL.Nat, IDL.Bool], [], []),\n restartManually: IDL.Func([], [Result], []),\n sendRewardManually: IDL.Func([], [Result], []),\n setAdmins: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n setLimitInfo: IDL.Func([IDL.Nat, IDL.Nat, IDL.Nat, IDL.Bool], [], []),\n stake: IDL.Func([IDL.Nat], [Result], []),\n unstake: IDL.Func([IDL.Nat], [Result], []),\n withdraw: IDL.Func([], [Result_1], []),\n withdrawRewardFee: IDL.Func([], [Result], []),\n });\n};\nexport const init = ({ IDL }) => {\n return [];\n};\n","export const idlFactory = ({ IDL }) => {\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const AddFarmIndexArgs = IDL.Record({\n rewardToken: Token,\n farmCid: IDL.Principal,\n poolToken0: Token,\n poolToken1: Token,\n poolCid: IDL.Principal,\n totalReward: IDL.Nat,\n });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result_8 = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Vec(IDL.Principal))),\n err: Error,\n });\n const Result_9 = IDL.Variant({\n ok: IDL.Record({\n LIVE: IDL.Vec(IDL.Principal),\n NOT_STARTED: IDL.Vec(IDL.Principal),\n CLOSED: IDL.Vec(IDL.Principal),\n FINISHED: IDL.Vec(IDL.Principal),\n }),\n err: IDL.Text,\n });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Result_7 = IDL.Variant({ ok: CycleInfo, err: Error });\n const FarmRewardInfo = IDL.Record({\n poolToken0TVL: IDL.Record({\n address: IDL.Principal,\n amount: IDL.Nat,\n standard: IDL.Text,\n }),\n poolToken1TVL: IDL.Record({\n address: IDL.Principal,\n amount: IDL.Nat,\n standard: IDL.Text,\n }),\n pool: IDL.Principal,\n initTime: IDL.Nat,\n totalReward: IDL.Record({\n address: IDL.Principal,\n amount: IDL.Nat,\n standard: IDL.Text,\n }),\n });\n const Result_6 = IDL.Variant({ ok: FarmRewardInfo, err: Error });\n const FarmStatus = IDL.Variant({\n LIVE: IDL.Null,\n NOT_STARTED: IDL.Null,\n CLOSED: IDL.Null,\n FINISHED: IDL.Null,\n });\n const Result_5 = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(IDL.Principal, FarmRewardInfo)),\n err: Error,\n });\n const Result = IDL.Variant({ ok: IDL.Vec(IDL.Principal), err: Error });\n const Result_4 = IDL.Variant({\n ok: IDL.Vec(IDL.Principal),\n err: IDL.Text,\n });\n const SearchCondition = IDL.Record({\n status: IDL.Opt(IDL.Vec(FarmStatus)),\n rewardToken: IDL.Opt(IDL.Principal),\n pool: IDL.Opt(IDL.Principal),\n user: IDL.Opt(IDL.Principal),\n });\n const Result_3 = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Principal)),\n err: Error,\n });\n const Result_2 = IDL.Variant({\n ok: IDL.Vec(FarmRewardInfo),\n err: Error,\n });\n const Result_1 = IDL.Variant({\n ok: IDL.Record({ farmAmount: IDL.Nat, principalAmount: IDL.Nat }),\n err: Error,\n });\n const TokenAmount = IDL.Record({\n address: IDL.Text,\n amount: IDL.Nat,\n standard: IDL.Text,\n });\n const TVL = IDL.Record({\n poolToken0: TokenAmount,\n poolToken1: TokenAmount,\n });\n return IDL.Service({\n addFarmIndex: IDL.Func([AddFarmIndexArgs], [], []),\n getAllFarmUsers: IDL.Func([], [Result_8], [\"query\"]),\n getAllFarms: IDL.Func([], [Result_9], [\"query\"]),\n getAllPoolFarms: IDL.Func([], [Result_8], [\"query\"]),\n getAllRewardTokenFarms: IDL.Func([], [Result_8], [\"query\"]),\n getAllUserFarms: IDL.Func([], [Result_8], [\"query\"]),\n getCycleInfo: IDL.Func([], [Result_7], []),\n getFarmRewardTokenInfo: IDL.Func([IDL.Principal], [Result_6], [\"query\"]),\n getFarmRewardTokenInfos: IDL.Func([IDL.Opt(FarmStatus)], [Result_5], [\"query\"]),\n getFarmUsers: IDL.Func([IDL.Principal], [Result], [\"query\"]),\n getFarms: IDL.Func([IDL.Opt(FarmStatus)], [Result_4], [\"query\"]),\n getFarmsByConditions: IDL.Func([SearchCondition], [Result], [\"query\"]),\n getFarmsByPool: IDL.Func([IDL.Principal], [Result], [\"query\"]),\n getFarmsByRewardToken: IDL.Func([IDL.Principal], [Result], [\"query\"]),\n getLiveFarmsByPools: IDL.Func([IDL.Vec(IDL.Principal)], [Result_3], [\"query\"]),\n getPrincipalRecord: IDL.Func([], [Result], [\"query\"]),\n getRewardInfoByStatus: IDL.Func([FarmStatus], [Result_2], [\"query\"]),\n getTotalAmount: IDL.Func([], [Result_1], [\"query\"]),\n getUserFarms: IDL.Func([IDL.Principal], [Result], [\"query\"]),\n getVersion: IDL.Func([], [IDL.Text], [\"query\"]),\n syncHisData: IDL.Func([IDL.Principal, IDL.Nat], [IDL.Text], []),\n updateFarmStatus: IDL.Func([FarmStatus], [], []),\n updateFarmTVL: IDL.Func([TVL], [], []),\n updateUserInfo: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n });\n};\n","import { ActorIdentity } from \"@icpswap/types\";\nimport {\n Farm,\n FarmInterfaceFactory,\n FarmController,\n FarmControllerInterfaceFactory,\n FarmStorage,\n FarmStorageInterfaceFactory,\n FarmIndex,\n FarmIndexInterfaceFactory,\n} from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\nimport { ActorName } from \"../ActorName\";\n\nexport const farmController = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.FarmController,\n identity,\n idlFactory: FarmControllerInterfaceFactory,\n });\n\nexport const farm = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.Farm,\n canisterId,\n identity,\n idlFactory: FarmInterfaceFactory,\n });\n\nexport const farmStorage = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.FarmStorage,\n canisterId,\n identity,\n idlFactory: FarmStorageInterfaceFactory,\n });\n\nexport const farmIndex = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.FarmIndex,\n identity,\n idlFactory: FarmIndexInterfaceFactory,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const InitRequest = IDL.Record({\n stakingTokenSymbol: IDL.Text,\n startTime: IDL.Nat,\n rewardTokenSymbol: IDL.Text,\n stakingToken: Token,\n rewardToken: Token,\n rewardPerTime: IDL.Nat,\n name: IDL.Text,\n stakingTokenFee: IDL.Nat,\n rewardTokenFee: IDL.Nat,\n stakingTokenDecimals: IDL.Nat,\n bonusEndTime: IDL.Nat,\n rewardTokenDecimals: IDL.Nat,\n });\n const Result_11 = IDL.Variant({ ok: IDL.Principal, err: IDL.Text });\n const Result_2 = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const TokenGlobalDataInfo = IDL.Record({\n rewardAmount: IDL.Float64,\n stakingAmount: IDL.Float64,\n rewardTokenPrice: IDL.Float64,\n rewardTokenCanisterId: IDL.Text,\n stakingTokenCanisterId: IDL.Text,\n stakingTokenPrice: IDL.Float64,\n stakingTokenAmount: IDL.Nat,\n rewardTokenAmount: IDL.Nat,\n });\n const Result_10 = IDL.Variant({\n ok: IDL.Vec(TokenGlobalDataInfo),\n err: IDL.Text,\n });\n const StakingPoolInfo = IDL.Record({\n stakingTokenSymbol: IDL.Text,\n startTime: IDL.Nat,\n rewardTokenSymbol: IDL.Text,\n creator: IDL.Principal,\n stakingToken: Token,\n rewardToken: Token,\n rewardPerTime: IDL.Nat,\n name: IDL.Text,\n createTime: IDL.Nat,\n stakingTokenFee: IDL.Nat,\n rewardTokenFee: IDL.Nat,\n stakingTokenDecimals: IDL.Nat,\n bonusEndTime: IDL.Nat,\n rewardTokenDecimals: IDL.Nat,\n canisterId: IDL.Principal,\n });\n const Page = IDL.Record({\n content: IDL.Vec(StakingPoolInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_9 = IDL.Variant({ ok: Page, err: Page });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result_8 = IDL.Variant({\n ok: IDL.Vec(IDL.Principal),\n err: Error,\n });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Result_7 = IDL.Variant({ ok: CycleInfo, err: Error });\n const GlobalDataInfo = IDL.Record({\n valueOfStaking: IDL.Float64,\n valueOfRewarded: IDL.Float64,\n totalStaker: IDL.Nat,\n valueOfRewardsInProgress: IDL.Float64,\n totalPools: IDL.Nat,\n });\n const Result_6 = IDL.Variant({ ok: GlobalDataInfo, err: IDL.Text });\n const Result_5 = IDL.Variant({\n ok: IDL.Record({\n governanceCid: IDL.Opt(IDL.Principal),\n userIndexCid: IDL.Principal,\n feeReceiverCid: IDL.Principal,\n }),\n err: Error,\n });\n const Result_4 = IDL.Variant({\n ok: IDL.Tuple(IDL.Text, IDL.Text, IDL.Nat, IDL.Nat, IDL.Bool),\n err: IDL.Text,\n });\n const Result_3 = IDL.Variant({\n ok: TokenGlobalDataInfo,\n err: IDL.Text,\n });\n const Result_1 = IDL.Variant({ ok: StakingPoolInfo, err: IDL.Text });\n const Result = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n return IDL.Service({\n addStakingPoolControllers: IDL.Func([IDL.Principal, IDL.Vec(IDL.Principal)], [], []),\n createStakingPool: IDL.Func([InitRequest], [Result_11], []),\n deleteStakingPool: IDL.Func([IDL.Principal], [Result_2], []),\n findPoolStatInfo: IDL.Func([], [Result_10], [\"query\"]),\n findStakingPoolPage: IDL.Func([IDL.Opt(IDL.Nat), IDL.Nat, IDL.Nat], [Result_9], [\"query\"]),\n findStakingPoolPageV2: IDL.Func(\n [IDL.Opt(IDL.Nat), IDL.Nat, IDL.Nat, IDL.Opt(IDL.Text), IDL.Opt(IDL.Text)],\n [Result_9],\n [\"query\"],\n ),\n getAdmins: IDL.Func([], [Result_8], [\"query\"]),\n getCycleInfo: IDL.Func([], [Result_7], []),\n getGlobalData: IDL.Func([], [Result_6], [\"query\"]),\n getInitArgs: IDL.Func([], [Result_5], [\"query\"]),\n getOperationInfo: IDL.Func([], [Result_4], [\"query\"]),\n getPoolStatInfo: IDL.Func([IDL.Principal], [Result_3], [\"query\"]),\n getStakingPool: IDL.Func([IDL.Principal], [Result_1], [\"query\"]),\n getVersion: IDL.Func([], [IDL.Text], [\"query\"]),\n removeStakingPoolControllers: IDL.Func([IDL.Principal, IDL.Vec(IDL.Principal)], [], []),\n setAdmins: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n setRewardFee: IDL.Func([IDL.Nat], [Result_2], []),\n setStakingPoolAdmins: IDL.Func([IDL.Principal, IDL.Vec(IDL.Principal)], [], []),\n setStakingPoolTime: IDL.Func([IDL.Principal, IDL.Nat, IDL.Nat], [Result_1], []),\n setUpdateGlobalDataState: IDL.Func([IDL.Bool], [Result_2], []),\n setUserIndexCanister: IDL.Func([IDL.Principal], [Result_2], []),\n stopStakingPool: IDL.Func([IDL.Principal], [Result_1], []),\n stopTimer: IDL.Func([], [], []),\n unclaimdRewardFee: IDL.Func([IDL.Principal], [Result], []),\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Result = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n const TransType = IDL.Variant({\n withdraw: IDL.Null,\n liquidate: IDL.Null,\n deposit: IDL.Null,\n unstake: IDL.Null,\n stake: IDL.Null,\n harvest: IDL.Null,\n });\n const TransTokenType = IDL.Variant({\n stakeToken: IDL.Null,\n rewardToken: IDL.Null,\n });\n const Record = IDL.Record({\n to: IDL.Principal,\n stakingTokenSymbol: IDL.Text,\n result: IDL.Text,\n rewardTokenSymbol: IDL.Text,\n stakingToken: IDL.Text,\n rewardToken: IDL.Text,\n stakingStandard: IDL.Text,\n transType: TransType,\n from: IDL.Principal,\n transTokenType: TransTokenType,\n errMsg: IDL.Text,\n rewardStandard: IDL.Text,\n timestamp: IDL.Nat,\n stakingTokenDecimals: IDL.Nat,\n amount: IDL.Nat,\n rewardTokenDecimals: IDL.Nat,\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(Record),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_9 = IDL.Variant({ ok: Page_1, err: IDL.Text });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result_8 = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(IDL.Nat, Record)),\n err: Error,\n });\n const PublicUserInfo = IDL.Record({\n pendingReward: IDL.Nat,\n lastRewardTime: IDL.Nat,\n stakeAmount: IDL.Nat,\n rewardTokenBalance: IDL.Nat,\n rewardDebt: IDL.Nat,\n lastStakeTime: IDL.Nat,\n stakeTokenBalance: IDL.Nat,\n });\n const Page = IDL.Record({\n content: IDL.Vec(IDL.Tuple(IDL.Principal, PublicUserInfo)),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_7 = IDL.Variant({ ok: Page, err: IDL.Text });\n const Result_6 = IDL.Variant({\n ok: IDL.Vec(IDL.Principal),\n err: Error,\n });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Result_5 = IDL.Variant({ ok: CycleInfo, err: Error });\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const LiquidationStatus = IDL.Variant({\n pending: IDL.Null,\n liquidation: IDL.Null,\n liquidated: IDL.Null,\n });\n const PublicStakingPoolInfo = IDL.Record({\n stakingTokenSymbol: IDL.Text,\n startTime: IDL.Nat,\n lastRewardTime: IDL.Nat,\n totalDeposit: IDL.Nat,\n rewardTokenSymbol: IDL.Text,\n creator: IDL.Principal,\n stakingToken: Token,\n rewardToken: Token,\n totalUnstaked: IDL.Float64,\n rewardPerTime: IDL.Nat,\n totalHarvest: IDL.Float64,\n name: IDL.Text,\n liquidationStatus: LiquidationStatus,\n createTime: IDL.Nat,\n stakingTokenFee: IDL.Nat,\n rewardFee: IDL.Nat,\n rewardDebt: IDL.Nat,\n rewardTokenFee: IDL.Nat,\n accPerShare: IDL.Nat,\n stakingTokenDecimals: IDL.Nat,\n bonusEndTime: IDL.Nat,\n totalStaked: IDL.Float64,\n rewardTokenDecimals: IDL.Nat,\n feeReceiverCid: IDL.Principal,\n });\n const Result_1 = IDL.Variant({\n ok: PublicStakingPoolInfo,\n err: IDL.Text,\n });\n const Result_4 = IDL.Variant({ ok: PublicUserInfo, err: IDL.Text });\n const Result_2 = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const Result_3 = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const UpdateStakingPool = IDL.Record({\n startTime: IDL.Nat,\n rewardPerTime: IDL.Nat,\n bonusEndTime: IDL.Nat,\n });\n return IDL.Service({\n claim: IDL.Func([], [Result], []),\n deposit: IDL.Func([], [Result], []),\n depositFrom: IDL.Func([IDL.Nat], [Result], []),\n findRewardRecordPage: IDL.Func([IDL.Opt(IDL.Principal), IDL.Nat, IDL.Nat], [Result_9], [\"query\"]),\n findStakingRecordPage: IDL.Func([IDL.Opt(IDL.Principal), IDL.Nat, IDL.Nat], [Result_9], [\"query\"]),\n findTransferRecord: IDL.Func([], [Result_8], [\"query\"]),\n findUserInfo: IDL.Func([IDL.Nat, IDL.Nat], [Result_7], [\"query\"]),\n getAdmins: IDL.Func([], [Result_6], [\"query\"]),\n getCycleInfo: IDL.Func([], [Result_5], []),\n getPoolInfo: IDL.Func([], [Result_1], [\"query\"]),\n getUserInfo: IDL.Func([IDL.Principal], [Result_4], [\"query\"]),\n getVersion: IDL.Func([], [IDL.Text], [\"query\"]),\n harvest: IDL.Func([], [Result_2], []),\n liquidation: IDL.Func([], [Result], []),\n pendingReward: IDL.Func([IDL.Principal], [Result_2], [\"query\"]),\n refundRewardToken: IDL.Func([], [Result], []),\n refundUserToken: IDL.Func([], [Result], []),\n removeTransferRecord: IDL.Func([IDL.Nat, IDL.Bool], [Result_3], []),\n setAdmins: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n stake: IDL.Func([], [Result_2], []),\n stop: IDL.Func([], [Result_1], []),\n unclaimdRewardFee: IDL.Func([], [Result_2], [\"query\"]),\n unstake: IDL.Func([IDL.Nat], [Result_2], []),\n updateStakingPool: IDL.Func([UpdateStakingPool], [Result_1], []),\n withdraw: IDL.Func([IDL.Bool, IDL.Nat], [Result], []),\n withdrawRewardFee: IDL.Func([], [Result], []),\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Result_1 = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result_6 = IDL.Variant({ ok: CycleInfo, err: Error });\n const APRInfo = IDL.Record({\n apr: IDL.Float64,\n day: IDL.Nat,\n rewardPerTime: IDL.Nat,\n time: IDL.Nat,\n stakingPool: IDL.Principal,\n stakingTokenPriceUSD: IDL.Float64,\n rewardTokenPriceUSD: IDL.Float64,\n stakingTokenDecimals: IDL.Nat,\n stakingTokenAmount: IDL.Float64,\n rewardTokenDecimals: IDL.Nat,\n });\n const Result_5 = IDL.Variant({ ok: IDL.Vec(APRInfo), err: IDL.Text });\n const Result_4 = IDL.Variant({\n ok: IDL.Tuple(IDL.Nat, IDL.Nat, IDL.Principal),\n err: IDL.Text,\n });\n const PublicUserInfo = IDL.Record({\n pendingReward: IDL.Nat,\n lastRewardTime: IDL.Nat,\n stakeAmount: IDL.Nat,\n rewardTokenBalance: IDL.Nat,\n rewardDebt: IDL.Nat,\n lastStakeTime: IDL.Nat,\n stakeTokenBalance: IDL.Nat,\n });\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const UserPool = IDL.Record({\n userInfo: PublicUserInfo,\n stakingToken: Token,\n rewardToken: Token,\n owner: IDL.Principal,\n stakingPool: IDL.Principal,\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(UserPool),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_3 = IDL.Variant({ ok: Page_1, err: Page_1 });\n const StakingPoolInfo = IDL.Record({\n stakingTokenSymbol: IDL.Text,\n startTime: IDL.Nat,\n rewardTokenSymbol: IDL.Text,\n creator: IDL.Principal,\n stakingToken: Token,\n rewardToken: Token,\n rewardPerTime: IDL.Nat,\n name: IDL.Text,\n createTime: IDL.Nat,\n stakingTokenFee: IDL.Nat,\n rewardTokenFee: IDL.Nat,\n stakingTokenDecimals: IDL.Nat,\n bonusEndTime: IDL.Nat,\n rewardTokenDecimals: IDL.Nat,\n canisterId: IDL.Principal,\n });\n const Page = IDL.Record({\n content: IDL.Vec(StakingPoolInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_2 = IDL.Variant({ ok: Page, err: IDL.Text });\n const UserStakedToken = IDL.Record({\n ledgerId: IDL.Principal,\n value: IDL.Float64,\n price: IDL.Float64,\n amount: IDL.Float64,\n poolId: IDL.Principal,\n });\n const Result = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n return IDL.Service({\n computeStakingPool: IDL.Func([], [Result_1], []),\n getCycleInfo: IDL.Func([], [Result_6], []),\n getUSDPrice: IDL.Func([IDL.Text], [IDL.Float64], []),\n getVersion: IDL.Func([], [IDL.Text], [\"query\"]),\n queryAPR: IDL.Func([IDL.Principal, IDL.Nat, IDL.Nat], [Result_5], [\"query\"]),\n queryIndexInfo: IDL.Func([], [Result_4], [\"query\"]),\n queryPool: IDL.Func([IDL.Principal, IDL.Nat, IDL.Nat, IDL.Opt(IDL.Text), IDL.Opt(IDL.Text)], [Result_3], [\"query\"]),\n queryStakingPool: IDL.Func([IDL.Nat, IDL.Nat], [Result_2], [\"query\"]),\n queryUserStakedTokens: IDL.Func([IDL.Principal], [IDL.Vec(UserStakedToken)], [\"query\"]),\n syncStakingPool: IDL.Func([], [Result_1], []),\n updateUser: IDL.Func([IDL.Principal, PublicUserInfo], [Result], []),\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Result_2 = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const InitRequest = IDL.Record({\n stakingTokenSymbol: IDL.Text,\n startTime: IDL.Nat,\n rewardTokenSymbol: IDL.Text,\n stakingToken: Token,\n rewardToken: Token,\n rewardPerTime: IDL.Nat,\n name: IDL.Text,\n stakingTokenFee: IDL.Nat,\n rewardTokenFee: IDL.Nat,\n stakingTokenDecimals: IDL.Nat,\n bonusEndTime: IDL.Nat,\n BONUS_MULTIPLIER: IDL.Nat,\n rewardTokenDecimals: IDL.Nat,\n });\n const Result_1 = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n const TokenPoolInfo = IDL.Record({\n stakingTokenSymbol: IDL.Text,\n startTime: IDL.Nat,\n rewardTokenSymbol: IDL.Text,\n creator: IDL.Text,\n stakingToken: Token,\n rewardToken: Token,\n name: IDL.Text,\n createTime: IDL.Nat,\n stakingTokenFee: IDL.Nat,\n version: IDL.Text,\n storageCid: IDL.Text,\n rewardTokenFee: IDL.Nat,\n stakingTokenDecimals: IDL.Nat,\n rewardTokenFeeMultiplier: IDL.Nat,\n bonusEndTime: IDL.Nat,\n rewardTokenDecimals: IDL.Nat,\n stakingTokenFeeMultiplier: IDL.Nat,\n canisterId: IDL.Text,\n });\n const Page = IDL.Record({\n content: IDL.Vec(TokenPoolInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_8 = IDL.Variant({ ok: Page, err: Page });\n const TokenGlobalDataInfo = IDL.Record({\n rewardAmount: IDL.Float64,\n stakingAmount: IDL.Float64,\n rewardTokenPrice: IDL.Float64,\n rewardTokenCanisterId: IDL.Text,\n stakingTokenCanisterId: IDL.Text,\n stakingTokenPrice: IDL.Float64,\n stakingTokenAmount: IDL.Nat,\n rewardTokenAmount: IDL.Nat,\n });\n const Result_7 = IDL.Variant({\n ok: IDL.Vec(TokenGlobalDataInfo),\n err: IDL.Text,\n });\n const Result_6 = IDL.Variant({ ok: IDL.Vec(IDL.Text), err: IDL.Text });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result_5 = IDL.Variant({ ok: CycleInfo, err: Error });\n const Result = IDL.Variant({ ok: TokenPoolInfo, err: IDL.Text });\n const Result_4 = IDL.Variant({\n ok: TokenGlobalDataInfo,\n err: IDL.Text,\n });\n const GlobalDataInfo = IDL.Record({\n rewardAmount: IDL.Float64,\n stakingAmount: IDL.Float64,\n });\n const Result_3 = IDL.Variant({ ok: GlobalDataInfo, err: IDL.Text });\n return IDL.Service({\n addAdmin: IDL.Func([IDL.Text], [Result_2], []),\n createTokenPool: IDL.Func([InitRequest], [Result_1], []),\n deleteTokenPool: IDL.Func([IDL.Principal], [Result_2], []),\n findTokenPoolPage: IDL.Func([IDL.Opt(IDL.Nat), IDL.Nat, IDL.Nat], [Result_8], [\"query\"]),\n findTokenPoolsGlobalData: IDL.Func([], [Result_7], [\"query\"]),\n getAdminList: IDL.Func([], [Result_6], [\"query\"]),\n getCanister: IDL.Func([], [IDL.Record({ icp: Token, scheduleCanister: IDL.Text })], [\"query\"]),\n getCycleInfo: IDL.Func([], [Result_5], []),\n getPoolInfo: IDL.Func([IDL.Principal], [Result], [\"query\"]),\n getPoolStatInfo: IDL.Func([IDL.Principal], [Result_4], [\"query\"]),\n getTokenPoolsGlobalData: IDL.Func([], [Result_3], [\"query\"]),\n registerTask: IDL.Func([], [Result_2], []),\n removeAdmin: IDL.Func([IDL.Text], [Result_2], []),\n setICP: IDL.Func([Token], [Result_2], []),\n setScheduleCanister: IDL.Func([IDL.Text], [Result_2], []),\n setTaskState: IDL.Func([IDL.Bool], [Result_2], []),\n setTokenPoolAdmin: IDL.Func([IDL.Principal, IDL.Text], [Result_2], []),\n startTokenPool: IDL.Func([IDL.Principal, IDL.Nat, IDL.Nat], [Result], []),\n stopTokenPool: IDL.Func([IDL.Principal], [Result], []),\n syncV1TokenPool: IDL.Func([], [Result_1], []),\n syncV1TokenPoolInfo: IDL.Func([], [Result_1], []),\n task: IDL.Func([IDL.Text], [], []),\n updateMultiplier: IDL.Func([IDL.Principal, IDL.Nat], [Result], []),\n updateStat: IDL.Func([], [IDL.Bool], []),\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Result_2 = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const Result_10 = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const ChangeTokenPoolInfo = IDL.Record({\n stakingTokenSymbol: IDL.Text,\n lastRewardTime: IDL.Nat,\n rewardTokenSymbol: IDL.Text,\n stakingToken: Token,\n rewardToken: Token,\n rewardPerTime: IDL.Nat,\n stakingTokenFee: IDL.Nat,\n rewardTokenFee: IDL.Nat,\n stakingTokenDecimals: IDL.Nat,\n rewardTokenFeeMultiplier: IDL.Nat,\n bonusEndTime: IDL.Nat,\n BONUS_MULTIPLIER: IDL.Nat,\n rewardTokenDecimals: IDL.Nat,\n stakingTokenFeeMultiplier: IDL.Nat,\n });\n const Result_1 = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n const PublicUserInfo = IDL.Record({\n pendingReward: IDL.Nat,\n rewardDebt: IDL.Nat,\n amount: IDL.Nat,\n });\n const Page_2 = IDL.Record({\n content: IDL.Vec(IDL.Tuple(IDL.Text, PublicUserInfo)),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_14 = IDL.Variant({ ok: Page_2, err: IDL.Text });\n const Result_6 = IDL.Variant({ ok: IDL.Vec(IDL.Text), err: IDL.Text });\n const Result_13 = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Nat)),\n err: IDL.Text,\n });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result_5 = IDL.Variant({ ok: CycleInfo, err: Error });\n const PublicTokenPoolInfo = IDL.Record({\n stakingTokenSymbol: IDL.Text,\n lastRewardTime: IDL.Nat,\n totalDeposit: IDL.Nat,\n rewardTokenSymbol: IDL.Text,\n stakingToken: Token,\n rewardToken: Token,\n rewardPerTime: IDL.Nat,\n stakingTokenFee: IDL.Nat,\n rewardDebt: IDL.Nat,\n storageCid: IDL.Text,\n rewardTokenFee: IDL.Nat,\n accPerShare: IDL.Nat,\n stakingTokenDecimals: IDL.Nat,\n rewardTokenFeeMultiplier: IDL.Nat,\n bonusEndTime: IDL.Nat,\n BONUS_MULTIPLIER: IDL.Nat,\n rewardTokenDecimals: IDL.Nat,\n allocPoint: IDL.Nat,\n stakingTokenFeeMultiplier: IDL.Nat,\n });\n const Result_11 = IDL.Variant({\n ok: PublicTokenPoolInfo,\n err: IDL.Text,\n });\n const User = IDL.Variant({\n principal: IDL.Principal,\n address: IDL.Text,\n });\n const Result_12 = IDL.Variant({ ok: PublicUserInfo, err: IDL.Text });\n return IDL.Service({\n addAdmin: IDL.Func([IDL.Text], [Result_2], []),\n balanceTo: IDL.Func([IDL.Principal], [Result_10], []),\n changePoolInfo: IDL.Func([ChangeTokenPoolInfo], [Result_2], []),\n claim: IDL.Func([], [Result_1], []),\n claimTo: IDL.Func([], [Result_1], []),\n clearLocksMap: IDL.Func([], [Result_10], []),\n deposit: IDL.Func([], [Result_1], []),\n depositFrom: IDL.Func([IDL.Nat], [Result_1], []),\n endTokenPoolStaking: IDL.Func([], [Result_10], []),\n findAllUserInfo: IDL.Func([IDL.Nat, IDL.Nat], [Result_14], [\"query\"]),\n getAdminList: IDL.Func([], [Result_6], [\"query\"]),\n getAllLocks: IDL.Func([], [Result_13], [\"query\"]),\n getCycleInfo: IDL.Func([], [Result_5], []),\n getPoolInfo: IDL.Func([], [Result_11], [\"query\"]),\n getUserInfo: IDL.Func([User], [Result_12], [\"query\"]),\n harvest: IDL.Func([], [Result_10], []),\n pendingReward: IDL.Func([User], [Result_10], [\"query\"]),\n registerTask: IDL.Func([], [Result_2], []),\n removeAdmin: IDL.Func([IDL.Text], [Result_2], []),\n resetReward: IDL.Func([IDL.Nat, IDL.Nat], [Result_11], []),\n setAutoUnlockTimes: IDL.Func([IDL.Nat], [Result_10], []),\n setTaskState: IDL.Func([IDL.Bool], [Result_2], []),\n setTokenPoolController: IDL.Func([IDL.Text], [Result_2], []),\n stopReward: IDL.Func([], [Result_11], []),\n task: IDL.Func([IDL.Text], [], []),\n updateMultiplier: IDL.Func([IDL.Nat], [Result_11], []),\n withdraw: IDL.Func([IDL.Nat], [Result_1], []),\n withdrawTokenTo: IDL.Func([IDL.Text, IDL.Text, IDL.Nat, IDL.Principal], [Result_10], []),\n });\n};\n","import { ActorIdentity } from \"@icpswap/types\";\nimport {\n TokenPool,\n StakingPoolController,\n StakingPoolControllerInterfaceFactory,\n TokenPoolInterfaceFactory,\n V1TokenPool,\n V1TokenPoolInterfaceFactory,\n V1TokenPoolController,\n V1TokenPoolControllerInterfaceFactory,\n V1TokenPoolStorage,\n V1TokenPoolStorageInterfaceFactory,\n StakeIndex,\n StakeIndexInterfaceFactor,\n} from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\nimport { ActorName } from \"../ActorName\";\n\nexport const stakingPoolController = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.StakingTokenController,\n identity,\n idlFactory: StakingPoolControllerInterfaceFactory,\n });\n\nexport const stakingPool = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n canisterId,\n actorName: ActorName.TokenPool,\n identity,\n idlFactory: TokenPoolInterfaceFactory,\n });\n\nexport const stakeIndex = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.StakeIndex,\n identity,\n idlFactory: StakeIndexInterfaceFactor,\n });\n\n/* v1 staking token pool */\nexport const v1StakingTokenController = (identity?: ActorIdentity) =>\n actor.create({\n canisterId: \"o5xzb-ryaaa-aaaak-aejmq-cai\",\n identity,\n idlFactory: V1TokenPoolControllerInterfaceFactory,\n });\n\nexport const v1StakingToken = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n canisterId,\n actorName: ActorName.V1TokenPool,\n identity,\n idlFactory: V1TokenPoolInterfaceFactory,\n });\n\nexport const v1StakingTokenStorage = (canisterId, identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.V1TokenPoolStorage,\n canisterId,\n identity,\n idlFactory: V1TokenPoolStorageInterfaceFactory,\n });\n/* v1 staking token pool */\n","export const idlFactory = ({ IDL }: any) => {\n const BoolResult = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const ClaimEventInfo = IDL.Record({\n claimEventCreator: IDL.Principal,\n tokenCid: IDL.Text,\n tokenStandard: IDL.Text,\n claimedTokenAmount: IDL.Nat,\n claimEventId: IDL.Text,\n tokenDecimals: IDL.Nat8,\n claimEventStatus: IDL.Nat,\n tokenSymbol: IDL.Text,\n totalUserAmount: IDL.Nat,\n totalTokenAmount: IDL.Nat,\n claimedUserAmount: IDL.Nat,\n tokenName: IDL.Text,\n claimCanisterId: IDL.Text,\n claimEventName: IDL.Text\n });\n const TextResult = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const Page = IDL.Record({\n content: IDL.Vec(ClaimEventInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_2 = IDL.Variant({ ok: Page, err: IDL.Text });\n const User__1 = IDL.Variant({\n principal: IDL.Principal,\n address: IDL.Text\n });\n const ClaimRecordInfo = IDL.Record({\n claimAmount: IDL.Nat,\n tokenCid: IDL.Text,\n tokenStandard: IDL.Text,\n claimStatus: IDL.Nat,\n claimEventId: IDL.Text,\n tokenDecimals: IDL.Nat8,\n claimTime: IDL.Opt(IDL.Int),\n claimUser: User__1,\n tokenSymbol: IDL.Text,\n tokenName: IDL.Text,\n claimEventName: IDL.Text\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(ClaimRecordInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_3 = IDL.Variant({ ok: Page_1, err: IDL.Text });\n const ResponseResult_1 = IDL.Variant({\n ok: IDL.Vec(IDL.Text),\n err: IDL.Text\n });\n const ResponseResult = IDL.Variant({\n ok: ClaimEventInfo,\n err: IDL.Text\n });\n const User = IDL.Variant({\n principal: IDL.Principal,\n address: IDL.Text\n });\n const ClaimQuota = IDL.Record({ user: User, quota: IDL.Nat });\n return IDL.Service({\n addAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n claim: IDL.Func([IDL.Text], [BoolResult], []),\n create: IDL.Func([ClaimEventInfo], [TextResult], []),\n cycleAvailable: IDL.Func([], [NatResult], [\"query\"]),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n delete: IDL.Func([IDL.Text], [BoolResult], []),\n findAllEvents: IDL.Func([IDL.Nat, IDL.Nat], [ResponseResult_2], [\"query\"]),\n findCreateEvents: IDL.Func([IDL.Principal, IDL.Nat, IDL.Nat], [ResponseResult_2], [\"query\"]),\n findEventRecords: IDL.Func([IDL.Text, IDL.Opt(IDL.Nat), IDL.Nat, IDL.Nat], [ResponseResult_3], []),\n findUserEventRecords: IDL.Func(\n [IDL.Principal, IDL.Opt(IDL.Text), IDL.Opt(IDL.Nat), IDL.Nat, IDL.Nat],\n [ResponseResult_3],\n []\n ),\n findUserEvents: IDL.Func([IDL.Principal, IDL.Nat, IDL.Nat], [ResponseResult_2], [\"query\"]),\n getAdminList: IDL.Func([], [ResponseResult_1], [\"query\"]),\n getControllerAddress: IDL.Func([], [TextResult], [\"query\"]),\n getEvent: IDL.Func([IDL.Text], [ResponseResult], [\"query\"]),\n getStorageCanister: IDL.Func([], [TextResult], [\"query\"]),\n importQuota: IDL.Func([IDL.Text, IDL.Vec(ClaimQuota)], [BoolResult], []),\n ready: IDL.Func([IDL.Text], [BoolResult], []),\n removeAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n setStatus: IDL.Func([IDL.Text, IDL.Bool], [BoolResult], []),\n setStorageCanister: IDL.Func([IDL.Text], [BoolResult], []),\n unlock: IDL.Func([IDL.Principal], [BoolResult], []),\n updateEvent: IDL.Func([ClaimEventInfo], [BoolResult], [])\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const BoolResult = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const ClaimEventInfo = IDL.Record({\n claimEventCreator: IDL.Principal,\n tokenCid: IDL.Text,\n tokenStandard: IDL.Text,\n claimedTokenAmount: IDL.Nat,\n claimEventId: IDL.Text,\n tokenDecimals: IDL.Nat8,\n claimEventStatus: IDL.Nat,\n tokenSymbol: IDL.Text,\n totalUserAmount: IDL.Nat,\n totalTokenAmount: IDL.Nat,\n claimedUserAmount: IDL.Nat,\n tokenName: IDL.Text,\n claimCanisterId: IDL.Text,\n claimEventName: IDL.Text\n });\n const User__1 = IDL.Variant({\n principal: IDL.Principal,\n address: IDL.Text\n });\n const ClaimRecordInfo = IDL.Record({\n claimAmount: IDL.Nat,\n tokenCid: IDL.Text,\n tokenStandard: IDL.Text,\n claimStatus: IDL.Nat,\n claimEventId: IDL.Text,\n tokenDecimals: IDL.Nat8,\n claimTime: IDL.Opt(IDL.Int),\n claimUser: User__1,\n tokenSymbol: IDL.Text,\n tokenName: IDL.Text,\n claimEventName: IDL.Text\n });\n const ResponseResult = IDL.Variant({\n ok: ClaimEventInfo,\n err: IDL.Text\n });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const Page = IDL.Record({\n content: IDL.Vec(ClaimRecordInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_3 = IDL.Variant({ ok: Page, err: IDL.Text });\n const Page_1 = IDL.Record({\n content: IDL.Vec(ClaimEventInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_4 = IDL.Variant({ ok: Page_1, err: IDL.Text });\n const User = IDL.Variant({\n principal: IDL.Principal,\n address: IDL.Text\n });\n const ResponseResult_2 = IDL.Variant({\n ok: IDL.Vec(IDL.Text),\n err: IDL.Text\n });\n const ResponseResult_1 = IDL.Variant({\n ok: IDL.Tuple(User, IDL.Text),\n err: IDL.Text\n });\n return IDL.Service({\n addAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n addEvent: IDL.Func([ClaimEventInfo], [BoolResult], []),\n addEventRecords: IDL.Func([IDL.Text, IDL.Vec(ClaimRecordInfo)], [BoolResult], []),\n claim: IDL.Func([IDL.Text, IDL.Principal], [ResponseResult], []),\n cycleAvailable: IDL.Func([], [NatResult], [\"query\"]),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n deleteEvent: IDL.Func([IDL.Text], [BoolResult], []),\n findAllEventRecords: IDL.Func([IDL.Opt(IDL.Nat), IDL.Nat, IDL.Nat], [ResponseResult_3], [\"query\"]),\n findAllEvents: IDL.Func([IDL.Opt(IDL.Nat), IDL.Nat, IDL.Nat], [ResponseResult_4], [\"query\"]),\n findEventRecords: IDL.Func([IDL.Text, IDL.Opt(IDL.Nat), IDL.Nat, IDL.Nat], [ResponseResult_3], [\"query\"]),\n findUserEventRecords: IDL.Func(\n [User, IDL.Opt(IDL.Text), IDL.Opt(IDL.Nat), IDL.Nat, IDL.Nat],\n [ResponseResult_3],\n [\"query\"]\n ),\n getAdminList: IDL.Func([], [ResponseResult_2], [\"query\"]),\n getCanisterPrincipal: IDL.Func([], [ResponseResult_1], [\"query\"]),\n getEvent: IDL.Func([IDL.Text], [ResponseResult], [\"query\"]),\n ready: IDL.Func([IDL.Text], [BoolResult], []),\n removeAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n setStatus: IDL.Func([IDL.Text, IDL.Bool], [BoolResult], []),\n userClaim: IDL.Func([IDL.Text], [ResponseResult], [])\n });\n};\n","import { actor } from \"./actor\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport { ActorName } from \"./ActorName\";\nimport {\n ClaimController,\n ClaimControllerInterfaceFactory,\n ClaimStorage,\n ClaimStorageInterfaceFactory,\n} from \"@icpswap/candid\";\n\nexport const tokenClaimController = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.ClaimController,\n identity,\n idlFactory: ClaimControllerInterfaceFactory,\n });\n\nexport const tokenClaimStorage = (\n canisterId: string,\n identity?: ActorIdentity\n) =>\n actor.create({\n identity,\n canisterId,\n idlFactory: ClaimStorageInterfaceFactory,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const User = IDL.Variant({\n principal: IDL.Principal,\n address: IDL.Text\n });\n const ProjectInfo = IDL.Record({\n tokenCid: IDL.Text,\n logo: IDL.Text,\n name: IDL.Text,\n projectCid: IDL.Text,\n managerAddress: User,\n tokenStand: IDL.Text\n });\n const BoolResult = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const Page = IDL.Record({\n content: IDL.Vec(ProjectInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_2 = IDL.Variant({ ok: Page, err: IDL.Text });\n const ResponseResult_1 = IDL.Variant({\n ok: IDL.Vec(IDL.Text),\n err: IDL.Text\n });\n const TextResult = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n const ResponseResult = IDL.Variant({ ok: ProjectInfo, err: IDL.Text });\n return IDL.Service({\n add: IDL.Func([ProjectInfo], [BoolResult], []),\n addAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n create: IDL.Func([ProjectInfo], [BoolResult], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], []),\n delete: IDL.Func([IDL.Text], [BoolResult], []),\n findProjectPage: IDL.Func([IDL.Nat, IDL.Nat], [ResponseResult_2], [\"query\"]),\n getAdminList: IDL.Func([], [ResponseResult_1], [\"query\"]),\n getFileCanister: IDL.Func([], [TextResult], [\"query\"]),\n getProject: IDL.Func([IDL.Text], [ResponseResult], [\"query\"]),\n removeAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n setFileCanister: IDL.Func([IDL.Text], [BoolResult], [])\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const BoolResult = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const KVPair = IDL.Record({ k: IDL.Text, v: IDL.Nat });\n const ProposalCreateInfo = IDL.Record({\n title: IDL.Text,\n content: IDL.Text,\n endTime: IDL.Int,\n createUser: IDL.Text,\n beginTime: IDL.Int,\n userAmount: IDL.Nat,\n options: IDL.Vec(KVPair)\n });\n const TextResult = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const User = IDL.Variant({\n principal: IDL.Principal,\n address: IDL.Text\n });\n const ProjectInfo = IDL.Record({\n tokenCid: IDL.Text,\n logo: IDL.Text,\n name: IDL.Text,\n projectCid: IDL.Text,\n managerAddress: User,\n tokenStand: IDL.Text\n });\n const ProposalInfo = IDL.Record({\n id: IDL.Text,\n storageCanisterId: IDL.Text,\n title: IDL.Text,\n content: IDL.Text,\n endTime: IDL.Int,\n createTime: IDL.Int,\n createUser: IDL.Text,\n state: IDL.Nat,\n createAddress: User,\n beginTime: IDL.Int,\n userAmount: IDL.Nat,\n options: IDL.Vec(KVPair),\n project: ProjectInfo\n });\n const Page_3 = IDL.Record({\n content: IDL.Vec(ProposalInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_5 = IDL.Variant({ ok: Page_3, err: IDL.Text });\n const UserVoteRecord = IDL.Record({\n voteTime: IDL.Int,\n address: User,\n usedProof: IDL.Nat,\n options: IDL.Vec(KVPair)\n });\n const Page_2 = IDL.Record({\n content: IDL.Vec(UserVoteRecord),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_4 = IDL.Variant({ ok: Page_2, err: IDL.Text });\n const UserVotePowersInfo = IDL.Record({\n availablePowers: IDL.Nat,\n address: User,\n usedPowers: IDL.Nat\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(UserVotePowersInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_3 = IDL.Variant({ ok: Page_1, err: IDL.Text });\n const Page = IDL.Record({\n content: IDL.Vec(IDL.Principal),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_2 = IDL.Variant({ ok: Page, err: IDL.Text });\n const ProjectInfo__1 = IDL.Record({\n tokenCid: IDL.Text,\n logo: IDL.Text,\n name: IDL.Text,\n projectCid: IDL.Text,\n managerAddress: User,\n tokenStand: IDL.Text\n });\n const ResponseResult_1 = IDL.Variant({\n ok: ProjectInfo__1,\n err: IDL.Text\n });\n const ResponseResult = IDL.Variant({ ok: ProposalInfo, err: IDL.Text });\n const VoteProjectCanister = IDL.Service({\n addAdmin: IDL.Func([IDL.Principal], [BoolResult], []),\n create: IDL.Func([ProposalCreateInfo], [TextResult], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], []),\n deleteAdmin: IDL.Func([IDL.Principal], [BoolResult], []),\n deleteProposal: IDL.Func([IDL.Text], [BoolResult], []),\n findPage: IDL.Func([IDL.Opt(IDL.Text), IDL.Opt(IDL.Nat), IDL.Nat, IDL.Nat], [ResponseResult_5], [\"query\"]),\n findRecordPage: IDL.Func([IDL.Text, IDL.Nat, IDL.Nat], [ResponseResult_4], [\"query\"]),\n findVotePower: IDL.Func([IDL.Opt(IDL.Text), IDL.Opt(IDL.Text), IDL.Nat, IDL.Nat], [ResponseResult_3], [\"query\"]),\n getAdminList: IDL.Func([IDL.Nat, IDL.Nat], [ResponseResult_2], [\"query\"]),\n getProject: IDL.Func([], [ResponseResult_1], [\"query\"]),\n getProposal: IDL.Func([IDL.Text], [ResponseResult], [\"query\"]),\n getVotePowerCount: IDL.Func([], [IDL.Nat], [\"query\"]),\n isProjectAdmin: IDL.Func([IDL.Principal], [IDL.Bool], [\"query\"]),\n setOwner: IDL.Func([IDL.Principal], [BoolResult], []),\n setProject: IDL.Func([ProjectInfo__1, IDL.Text], [BoolResult], []),\n setState: IDL.Func([IDL.Text, IDL.Nat], [BoolResult], []),\n setVotePower: IDL.Func([IDL.Text, IDL.Vec(UserVotePowersInfo)], [BoolResult], []),\n updateProposal: IDL.Func([ProposalInfo], [BoolResult], []),\n vote: IDL.Func([IDL.Text, IDL.Text, IDL.Nat], [BoolResult], [])\n });\n return VoteProjectCanister;\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Chunk = IDL.Record({\n content: IDL.Vec(IDL.Nat8),\n batch_id: IDL.Nat\n });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const HeaderField = IDL.Tuple(IDL.Text, IDL.Text);\n const HttpRequest = IDL.Record({\n url: IDL.Text,\n method: IDL.Text,\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(HeaderField)\n });\n const StreamingCallbackToken = IDL.Record({\n key: IDL.Text,\n index: IDL.Nat,\n content_encoding: IDL.Text\n });\n const StreamingStrategy = IDL.Variant({\n Callback: IDL.Record({\n token: StreamingCallbackToken,\n callback: IDL.Func([], [], [])\n })\n });\n const HttpResponse = IDL.Record({\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(HeaderField),\n streaming_strategy: IDL.Opt(StreamingStrategy),\n status_code: IDL.Nat16\n });\n const StreamingCallbackHttpResponse = IDL.Record({\n token: IDL.Opt(StreamingCallbackToken),\n body: IDL.Vec(IDL.Nat8)\n });\n const TextResult = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n const FileCanister = IDL.Service({\n addAdmin: IDL.Func([IDL.Text], [IDL.Bool], []),\n chunkSize: IDL.Func([], [IDL.Nat], [\"query\"]),\n clearChunk: IDL.Func([], [IDL.Bool], []),\n commit_batch: IDL.Func(\n [\n IDL.Record({\n batch_id: IDL.Nat,\n content_type: IDL.Text,\n chunk_ids: IDL.Vec(IDL.Nat)\n }),\n IDL.Text\n ],\n [],\n []\n ),\n create_batch: IDL.Func([IDL.Text], [IDL.Record({ batch_id: IDL.Nat })], []),\n create_chunk: IDL.Func([Chunk, IDL.Text], [IDL.Record({ chunk_id: IDL.Nat })], []),\n cycleAvailable: IDL.Func([], [NatResult], [\"query\"]),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n getAdminList: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"]),\n http_request: IDL.Func([HttpRequest], [HttpResponse], [\"query\"]),\n http_request_streaming_callback: IDL.Func([StreamingCallbackToken], [StreamingCallbackHttpResponse], [\"query\"]),\n maxFileSize: IDL.Func([IDL.Nat], [TextResult], []),\n removeAdmin: IDL.Func([IDL.Text], [IDL.Bool], [])\n });\n return FileCanister;\n};\n","import { actor } from \"./actor\";\nimport { ActorName } from \"./ActorName\";\nimport { ActorIdentity } from \"@icpswap/types\";\n\nimport {\n VoteController,\n VoteControllerInterfaceFactory,\n VoteFile,\n VoteFileInterfaceFactory,\n VoteProject,\n VoteProjectInterfaceFactory,\n} from \"@icpswap/candid\";\n\nexport const votingController = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.VotingController,\n idlFactory: VoteControllerInterfaceFactory,\n identity,\n });\n\nexport const votingCanister = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n canisterId,\n identity,\n idlFactory: VoteProjectInterfaceFactory,\n });\n\nexport const votingFile = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n canisterId,\n identity,\n idlFactory: VoteFileInterfaceFactory,\n });\n","export const LEDGER_CANISTER_ID = \"ryjl3-tyaaa-aaaaa-aaaba-cai\";\n\nexport const GOVERNANCE_CANISTER_ID = \"rrkah-fqaaa-aaaaa-aaaaq-cai\";\n\nexport const WICP_CANISTER_ID = \"5xnja-6aaaa-aaaan-qad4a-cai\";\n\nexport const ICS_CANISTER_ID = \"ca6gz-lqaaa-aaaaq-aacwa-cai\";\n","export enum ChainId {\n MAINNET = 1,\n GOERLI = 5,\n SEPOLIA = 11155111,\n OPTIMISM = 10,\n OPTIMISM_GOERLI = 420,\n OPTIMISM_SEPOLIA = 11155420,\n ARBITRUM_ONE = 42161,\n ARBITRUM_GOERLI = 421613,\n ARBITRUM_SEPOLIA = 421614,\n POLYGON = 137,\n POLYGON_MUMBAI = 80001,\n CELO = 42220,\n CELO_ALFAJORES = 44787,\n GNOSIS = 100,\n MOONBEAM = 1284,\n BNB = 56,\n AVALANCHE = 43114,\n BASE_GOERLI = 84531,\n BASE = 8453,\n ZORA = 7777777,\n ZORA_SEPOLIA = 999999999,\n ROOTSTOCK = 30,\n BLAST = 81457,\n}\n\nexport const SUPPORTED_CHAINS = [\n ChainId.MAINNET,\n ChainId.OPTIMISM,\n ChainId.OPTIMISM_GOERLI,\n ChainId.OPTIMISM_SEPOLIA,\n ChainId.ARBITRUM_ONE,\n ChainId.ARBITRUM_GOERLI,\n ChainId.ARBITRUM_SEPOLIA,\n ChainId.POLYGON,\n ChainId.POLYGON_MUMBAI,\n ChainId.GOERLI,\n ChainId.SEPOLIA,\n ChainId.CELO_ALFAJORES,\n ChainId.CELO,\n ChainId.BNB,\n ChainId.AVALANCHE,\n ChainId.BASE,\n ChainId.BASE_GOERLI,\n ChainId.ZORA,\n ChainId.ZORA_SEPOLIA,\n ChainId.ROOTSTOCK,\n ChainId.BLAST,\n] as const;\nexport type SupportedChainsType = (typeof SUPPORTED_CHAINS)[number];\n\nexport enum NativeCurrencyName {\n // Strings match input for CLI\n ETHER = \"ETH\",\n MATIC = \"MATIC\",\n CELO = \"CELO\",\n GNOSIS = \"XDAI\",\n MOONBEAM = \"GLMR\",\n BNB = \"BNB\",\n AVAX = \"AVAX\",\n ROOTSTOCK = \"RBTC\",\n}\n","export enum TradeType {\n EXACT_INPUT = 0,\n EXACT_OUTPUT = 1,\n}\n\nexport enum Bound {\n LOWER = \"LOWER\",\n UPPER = \"UPPER\",\n}\n","import { useCallback } from \"react\";\nimport { resultFormat } from \"@icpswap/utils\";\nimport { node_index } from \"@icpswap/actor\";\nimport { PublicPoolOverView, PublicTokenOverview } from \"@icpswap/types\";\nimport { useCallsData } from \"../useCallData\";\n\nexport async function getNodeInfoAllPools() {\n return resultFormat(await (await node_index()).getAllPools()).data;\n}\n\nexport function useNodeInfoAllPools() {\n return useCallsData(\n useCallback(async () => {\n return await getNodeInfoAllPools();\n }, []),\n );\n}\n\nexport async function getNodeInfoAllTokens() {\n return resultFormat(await (await node_index()).getAllTokens()).data;\n}\n\nexport function useNodeInfoAllTokens() {\n return useCallsData(\n useCallback(async () => {\n return await getNodeInfoAllTokens();\n }, []),\n );\n}\n\nexport async function getInfoPoolStorageIds(pool: string) {\n return resultFormat(await (await node_index()).poolStorage(pool)).data;\n}\n\nexport function useInfoPoolStorageIds(pool: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!pool) return undefined;\n return await getInfoPoolStorageIds(pool!);\n }, [pool]),\n );\n}\n\nexport async function getInfoTokenStorageIds(token: string) {\n return resultFormat(await (await node_index()).tokenStorage(token)).data;\n}\n\nexport function useInfoTokenStorageIds(token: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!token) return undefined;\n return await getInfoTokenStorageIds(token!);\n }, [token]),\n );\n}\n\nexport async function getInfoUserStorageIds(principal: string) {\n return resultFormat(await (await node_index()).userStorage(principal)).data;\n}\n\nexport function useInfoUserStorageIds(principal: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!principal) return undefined;\n return await getInfoUserStorageIds(principal!);\n }, [principal]),\n );\n}\n","import { useMemo } from \"react\";\nimport useSwr from \"swr\";\nimport useSWRImmutable from \"swr/immutable\";\nimport type { PublicTokenOverview } from \"@icpswap/types\";\nimport { ckUSDC } from \"@icpswap/tokens\";\n\nimport { getNodeInfoAllTokens } from \"./node\";\n\nexport function useFetchInfoAllTokens() {\n const { data } = useSwr(\n [\"info_all_tokens\"],\n async () => {\n return await getNodeInfoAllTokens();\n },\n {\n refreshInterval: 300000,\n },\n );\n\n return data;\n}\n\nexport function useInfoAllTokens() {\n const { data } = useSWRImmutable([\"info_all_tokens\"]);\n return useMemo(() => data, data);\n}\n\nexport function useInfoToken(tokenId: string | undefined): PublicTokenOverview | undefined {\n const { data } = useSWRImmutable([\"info_all_tokens\"]);\n\n return useMemo(() => {\n const info = data?.find((e) => e.address === tokenId);\n // Make ckUSDC price USD is 1\n if (tokenId === ckUSDC.address && info) return { ...info, priceUSD: 1 } as PublicTokenOverview;\n\n return info;\n }, [data, tokenId]);\n}\n","import { resultFormat } from \"@icpswap/utils\";\nimport { sns_wasm } from \"@icpswap/actor\";\nimport type { ListDeployedSnsesResponse } from \"@icpswap/candid\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport type { SnsTokensInfo } from \"@icpswap/types\";\nimport { useCallsData } from \"../useCallData\";\n\nexport async function getListDeployedSNSs() {\n return resultFormat(await (await sns_wasm()).list_deployed_snses({})).data;\n}\n\nexport function useListDeployedSNSs() {\n return useCallsData(\n useCallback(async () => {\n return await getListDeployedSNSs();\n }, []),\n );\n}\n\nexport async function getSnsTokensInfo(page: number): Promise {\n let result: any;\n\n try {\n result = await fetch(`https://3r4gx-wqaaa-aaaaq-aaaia-cai.icp0.io/v1/sns/list/page/${page}/slow.json`).catch(\n () => undefined,\n );\n } catch (error) {\n console.log(error);\n }\n\n if (!result || result.ok === false) return undefined;\n\n return (await result.json()) as SnsTokensInfo[];\n}\n\nconst sns_all_tokens_info_call_rounds = 5;\n\nexport async function getSnsAllTokensInfo(): Promise {\n let fetch_index = 0;\n let fetch_done = false;\n\n let data: SnsTokensInfo[] = [];\n\n const fetch = async (index: number) => {\n fetch_index += 1;\n\n const allResults: (SnsTokensInfo | undefined)[] = (\n await Promise.all(\n Array.from({ length: sns_all_tokens_info_call_rounds }, (_, i) => i).map(async (call_index) => {\n const page = call_index + index * sns_all_tokens_info_call_rounds;\n const result = await getSnsTokensInfo(page);\n\n if (!result) return undefined;\n\n data = data.concat(result);\n\n if (result.length < 10) {\n fetch_done = true;\n }\n\n return result;\n }),\n )\n ).flat();\n\n // If happened network error, make is fetch_done = true when have two or more undefined result\n if (allResults.filter((e) => !e).length >= 2) {\n fetch_done = true;\n }\n\n if (!fetch_done) {\n await fetch(fetch_index);\n }\n };\n\n await fetch(fetch_index);\n\n return data\n .sort((a, b) => {\n if (a.index < b.index) return -1;\n if (a.index > b.index) return 1;\n return 0;\n })\n .map((e) => ({ ...e, meta: { ...e.meta, logo: `https://3r4gx-wqaaa-aaaaq-aaaia-cai.icp0.io${e.meta.logo}` } }));\n}\n\nexport function useSnsAllTokensInfo() {\n const [snsAllTokensInfo, setSnsAllTokensInfo] = useState(undefined);\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n async function call() {\n setLoading(true);\n const data = await getSnsAllTokensInfo();\n setSnsAllTokensInfo(data);\n setLoading(false);\n }\n\n call();\n }, []);\n\n return useMemo(\n () => ({\n loading,\n result: snsAllTokensInfo,\n }),\n [loading, snsAllTokensInfo],\n );\n}\n","import { useCallback } from \"react\";\nimport { resultFormat, isAvailablePageArgs, availableArgsNull } from \"@icpswap/utils\";\nimport { stakingPoolController, stakingPool } from \"@icpswap/actor\";\nimport type {\n CreateStakingPoolArgs,\n StakingPoolInfo,\n StakingPoolControllerPoolInfo,\n StakingPoolTransaction,\n StakingPoolUserInfo,\n StakingPoolCycle,\n StakingPoolGlobalData,\n PaginationResult,\n} from \"@icpswap/types\";\nimport { Principal } from \"@dfinity/principal\";\nimport { useCallsData } from \"../useCallData\";\n\n/* token controller */\nexport async function createStakingPool(args: CreateStakingPoolArgs) {\n return resultFormat(await (await stakingPoolController(true)).createStakingPool(args));\n}\n\nexport async function getStakingPools(state: bigint | undefined, offset: number, limit: number) {\n return resultFormat>(\n await (\n await stakingPoolController()\n ).findStakingPoolPage(availableArgsNull(state), BigInt(offset), BigInt(limit)),\n ).data;\n}\n\nexport function useStakingPools(state: bigint | undefined, offset: number, limit: number) {\n return useCallsData(\n useCallback(async () => {\n if (!isAvailablePageArgs(offset, limit)) return undefined;\n return await getStakingPools(state, offset, limit);\n }, [offset, limit, state]),\n );\n}\n\nexport interface GetStakePoolsProps {\n state: bigint | undefined;\n offset: number;\n limit: number;\n rewardTokenId?: string | null;\n stakeTokenId?: string | null;\n}\n\nexport async function getStakePools({ state, offset, limit, rewardTokenId, stakeTokenId }: GetStakePoolsProps) {\n return resultFormat>(\n await (\n await stakingPoolController()\n ).findStakingPoolPageV2(\n availableArgsNull(state),\n BigInt(offset),\n BigInt(limit),\n availableArgsNull(stakeTokenId),\n availableArgsNull(rewardTokenId),\n ),\n ).data;\n}\n\nexport interface UseStakePoolsProps {\n state: bigint | undefined;\n offset: number;\n limit: number;\n rewardTokenId?: string | null;\n stakeTokenId?: string | null;\n}\n\nexport function useStakePools({ state, offset, limit, rewardTokenId, stakeTokenId }: UseStakePoolsProps) {\n return useCallsData(\n useCallback(async () => {\n if (!isAvailablePageArgs(offset, limit)) return undefined;\n return await getStakePools({ state, offset, limit, rewardTokenId, stakeTokenId });\n }, [offset, limit, state, rewardTokenId, stakeTokenId]),\n );\n}\n\nexport async function getStakingPoolGlobalData() {\n return resultFormat(await (await stakingPoolController()).getGlobalData()).data;\n}\n\nexport function useStakingPoolGlobalData(reload?: boolean) {\n return useCallsData(\n useCallback(async () => {\n return await getStakingPoolGlobalData();\n }, []),\n reload,\n );\n}\n\nexport async function getStakingPoolFromController(canisterId: string) {\n return resultFormat(\n await (await stakingPoolController()).getStakingPool(Principal.fromText(canisterId)),\n ).data;\n}\n\nexport function useStakingPoolInfoFromController(canisterId: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getStakingPoolFromController(canisterId);\n }, [canisterId]),\n );\n}\n\n/* token pool */\nexport async function getStakingTokenPool(canisterId: string) {\n return resultFormat(await (await stakingPool(canisterId)).getPoolInfo()).data;\n}\n\nexport function useStakingTokenPool(canisterId: string | undefined, reload?: boolean) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getStakingTokenPool(canisterId);\n }, [canisterId]),\n reload,\n );\n}\n\nexport async function getStakingTokenUserInfo(canisterId: string, principal: Principal) {\n return resultFormat(await (await stakingPool(canisterId)).getUserInfo(principal)).data;\n}\n\nexport function useStakingTokenUserInfo(\n canisterId: string | undefined,\n principal: Principal | undefined,\n reload?: boolean,\n) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || !principal) return undefined;\n return await getStakingTokenUserInfo(canisterId, principal);\n }, [canisterId, principal]),\n reload,\n );\n}\n\n// export async function getStakingPoolAllUserInfo(canisterId: string, offset: number, limit: number) {\n// return resultFormat(\n// await (await stakingPool(canisterId)).findAllUserInfo(BigInt(offset), BigInt(limit)),\n// ).data;\n// }\n\n// export function useStakingPoolAllUserInfo(\n// canisterId: string | undefined,\n// offset: number,\n// limit: number,\n// reload?: boolean,\n// ) {\n// return useCallsData(\n// useCallback(async () => {\n// if (!canisterId || !isAvailablePageArgs(offset, limit)) return undefined;\n// return await getStakingPoolAllUserInfo(canisterId!, offset, limit);\n// }, [canisterId, offset, limit]),\n// reload,\n// );\n// }\n\nexport async function getStakingPoolCycles(canisterId: string) {\n return resultFormat(await (await stakingPool(canisterId)).getCycleInfo()).data;\n}\n\nexport function useStakingPoolCycles(canisterId: string | undefined, reload?: boolean) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getStakingPoolCycles(canisterId);\n }, [canisterId]),\n reload,\n );\n}\n\n/**\n * @description claim the failed deposit token\n * @param canisterId - pool canister id\n * @returns\n */\nexport async function stakingPoolClaim(canisterId: string) {\n return resultFormat(await (await stakingPool(canisterId, true)).claim());\n}\n\nexport async function stakingPoolDeposit(canisterId: string) {\n return resultFormat(await (await stakingPool(canisterId, true)).deposit());\n}\n\nexport async function stakingPoolDepositFrom(canisterId: string, amount: bigint) {\n return resultFormat(await (await stakingPool(canisterId, true)).depositFrom(amount));\n}\n\nexport async function stakingPoolHarvest(canisterId: string) {\n return resultFormat(await (await stakingPool(canisterId, true)).harvest());\n}\n\nexport async function stakingTokenStake(canisterId: string) {\n return resultFormat(await (await stakingPool(canisterId, true)).stake());\n}\n\n/**\n * @description withdraw the token for staked token and reward token\n * @export\n * @param {string} canisterId - pool canister id\n * @param {boolean} isStakeToken - staked token is true, reward token is false\n * @param {bigint} amount - withdraw amount\n * @return {*}\n */\nexport async function stakingPoolWithdraw(canisterId: string, isStakeToken: boolean, amount: bigint) {\n return resultFormat(await (await stakingPool(canisterId, true)).withdraw(isStakeToken, amount));\n}\n\nexport async function stakingPoolUnstake(canisterId: string, amount: bigint) {\n return resultFormat(await (await stakingPool(canisterId, true)).unstake(amount));\n}\n\n/* records */\nexport async function getStakingPoolTransactions(\n canisterId: string,\n principal: Principal | undefined,\n offset: number,\n limit: number,\n) {\n return resultFormat>(\n await (\n await stakingPool(canisterId)\n ).findStakingRecordPage(availableArgsNull(principal), BigInt(offset), BigInt(limit)),\n ).data;\n}\n\nexport function useStakingPoolTransactions(\n canisterId: string | undefined,\n principal: Principal | undefined,\n offset: number,\n limit: number,\n reload?: boolean,\n) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || !isAvailablePageArgs(offset, limit)) return undefined;\n return await getStakingPoolTransactions(canisterId, principal, offset, limit);\n }, [canisterId, offset, limit, principal]),\n reload,\n );\n}\n\nexport async function getStakingPoolClaimTransactions(\n canisterId: string,\n principal: Principal | undefined,\n offset: number,\n limit: number,\n) {\n return resultFormat>(\n await (\n await stakingPool(canisterId)\n ).findRewardRecordPage(availableArgsNull(principal), BigInt(offset), BigInt(limit)),\n ).data;\n}\n\nexport function useStakingPoolClaimTransactions(\n canisterId: string | undefined,\n principal: Principal | undefined,\n offset: number,\n limit: number,\n reload?: boolean,\n) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || !isAvailablePageArgs(offset, limit)) return undefined;\n return await getStakingPoolClaimTransactions(canisterId!, principal, offset, limit);\n }, [canisterId, offset, limit, principal]),\n reload,\n );\n}\n\nexport async function stakingPoolClaimRewards(canisterId: string, owner: Principal | undefined) {\n if (!owner) return resultFormat({ err: \"Principal is undefined\" });\n console.log(\"claim reward canisterId: \", canisterId);\n console.log(\"claim reward owner: \", owner.toString());\n\n return resultFormat(await (await stakingPool(canisterId, true)).claim());\n}\n","import { useCallback } from \"react\";\nimport { resultFormat, isAvailablePageArgs, isNullArgs, availableArgsNull } from \"@icpswap/utils\";\nimport { stakeIndex } from \"@icpswap/actor\";\nimport type { PaginationResult, StakeIndexPoolInfo, StakeAprInfo, StakeUserStakeInfo } from \"@icpswap/types\";\nimport { Principal } from \"@dfinity/principal\";\n\nimport { useCallsData } from \"../useCallData\";\n\nexport async function getUserStakePools(\n principal: string,\n offset: number,\n limit: number,\n stakeTokenId?: string | undefined | null,\n rewardTokenId?: string | undefined | null,\n) {\n return resultFormat>(\n await (\n await stakeIndex()\n ).queryPool(\n Principal.fromText(principal),\n BigInt(offset),\n BigInt(limit),\n availableArgsNull(stakeTokenId),\n availableArgsNull(rewardTokenId),\n ),\n ).data;\n}\n\nexport function useUserStakePools(principal: string | undefined, offset: number, limit: number) {\n return useCallsData(\n useCallback(async () => {\n if (!isAvailablePageArgs(offset, limit)) return undefined;\n return await getUserStakePools(principal, offset, limit);\n }, [offset, limit, principal]),\n );\n}\n\nexport async function getStakeAprChartData(principal: string, start_time: number, end_time: number) {\n return resultFormat>(\n await (await stakeIndex()).queryAPR(Principal.fromText(principal), BigInt(start_time), BigInt(end_time)),\n ).data;\n}\n\nexport function useStakeAprChartData(\n principal: string | undefined,\n start_time: number | undefined,\n end_time: number | undefined,\n) {\n return useCallsData(\n useCallback(async () => {\n if (isNullArgs(start_time) || isNullArgs(principal) || isNullArgs(end_time)) return undefined;\n return await getStakeAprChartData(principal, start_time, end_time);\n }, [start_time, end_time, principal]),\n );\n}\n\nexport async function getUserStakedTokens(principal: string) {\n return resultFormat>(\n await (await stakeIndex()).queryUserStakedTokens(Principal.fromText(principal)),\n ).data;\n}\n\nexport function useUserStakedTokens(principal: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (isNullArgs(principal)) return undefined;\n\n return await getUserStakedTokens(principal);\n }, [principal]),\n );\n}\n","import { useCallback } from \"react\";\nimport { swapFactory, swapPool, swapNFT, swapPosition } from \"@icpswap/actor\";\nimport type {\n SwapPoolData,\n TickLiquidityInfo,\n PoolMetadata,\n GetPoolArgs,\n CreatePoolArgs,\n MintArgs,\n UserPositionInfo,\n DecreaseLiquidityArgs,\n IncreaseLiquidityArgs,\n SwapArgs,\n ClaimArgs,\n NFTTokenMetadata,\n UserPositionInfoWithTokenAmount,\n UserPositionInfoWithId,\n PositionInfoWithId,\n TickInfoWithId,\n ActorIdentity,\n PaginationResult,\n} from \"@icpswap/types\";\nimport { resultFormat, isAvailablePageArgs } from \"@icpswap/utils\";\nimport { Principal } from \"@dfinity/principal\";\n\nimport { useCallsData, getPaginationAllData, usePaginationAllData, getPaginationAllDataLimit } from \"../useCallData\";\n\nexport async function createSwapPool(args: CreatePoolArgs) {\n return resultFormat(await (await swapFactory(true)).createPool(args));\n}\n\nexport async function getSwapPool(args: GetPoolArgs) {\n return resultFormat(await (await swapFactory()).getPool(args)).data;\n}\n\nexport function useSwapPool(args: GetPoolArgs | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!args) return undefined;\n return await getSwapPool(args);\n }, [args]),\n );\n}\n\nexport async function getSwapPools() {\n return resultFormat(await (await swapFactory()).getPools()).data;\n}\n\nexport function useSwapPools() {\n return useCallsData(\n useCallback(async () => {\n return await getSwapPools();\n }, []),\n );\n}\n\nexport async function getSwapPoolMetadata(canisterId: string) {\n return resultFormat(await (await swapPool(canisterId)).metadata()).data;\n}\n\nexport function useSwapPoolMetadata(canisterId: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getSwapPoolMetadata(canisterId);\n }, [canisterId]),\n );\n}\n\nexport async function getSwapTickInfos(canisterId: string, offset: number, limit: number) {\n return resultFormat>(\n await (await swapPool(canisterId)).getTickInfos(BigInt(offset), BigInt(limit)),\n ).data;\n}\n\nexport async function getSwapPoolAllTickInfos(poolId: string, limit = 500) {\n const callback = async (offset: number, limit: number) => {\n return await getSwapTickInfos(poolId, offset, limit);\n };\n\n return await getPaginationAllData(callback, limit);\n}\n\nexport function useLiquidityTickInfos(canisterId: string | undefined, limit?: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getSwapPoolAllTickInfos(canisterId, limit);\n }, [canisterId, limit]),\n );\n}\n\nexport async function deposit(canisterId: string, token: string, amount: bigint, fee: bigint) {\n return resultFormat(await (await swapPool(canisterId, true)).deposit({ token, amount, fee }));\n}\n\nexport async function depositFrom(canisterId: string, token: string, amount: bigint, fee: bigint) {\n return resultFormat(await (await swapPool(canisterId, true)).depositFrom({ token, amount, fee }));\n}\n\nexport async function mint(canisterId: string, args: MintArgs) {\n return resultFormat(await (await swapPool(canisterId, true)).mint(args));\n}\n\nexport async function increaseLiquidity(poolId: string, args: IncreaseLiquidityArgs) {\n return resultFormat(await (await swapPool(poolId, true)).increaseLiquidity(args));\n}\n\nexport async function decreaseLiquidity(poolId: string, args: DecreaseLiquidityArgs) {\n return resultFormat<{ amount0: bigint; amount1: bigint }>(\n await (await swapPool(poolId, true)).decreaseLiquidity(args),\n );\n}\n\nexport async function withdraw(poolId: string, token: string, fee: bigint, amount: bigint) {\n return resultFormat(await (await swapPool(poolId, true)).withdraw({ token, fee, amount }));\n}\n\nexport async function quote(poolId: string, args: SwapArgs) {\n return resultFormat(await (await swapPool(poolId)).quote(args)).data;\n}\n\nexport async function swap(poolId: string, args: SwapArgs) {\n return resultFormat(await (await swapPool(poolId, true)).swap(args));\n}\n\nexport async function collect(poolId: string, args: ClaimArgs) {\n return resultFormat<{ amount0: bigint; amount1: bigint }>(await (await swapPool(poolId, true)).claim(args));\n}\n\nexport async function getUserUnusedBalance(canisterId: string, user: Principal) {\n return resultFormat<{ balance0: bigint; balance1: bigint }>(\n await (await swapPool(canisterId)).getUserUnusedBalance(user),\n ).data;\n}\n\nexport function useUserUnusedBalance(\n canisterId: string | undefined,\n user: Principal | undefined,\n refresh?: number | boolean,\n) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || !user) return undefined;\n return await getUserUnusedBalance(canisterId, user);\n }, [canisterId, user]),\n refresh,\n );\n}\n\nexport async function getSwapPosition(canisterId: string, tokenId: bigint) {\n return resultFormat(await (await swapPool(canisterId)).getUserPosition(tokenId)).data;\n}\n\nexport function useSwapPosition(canisterId: string | undefined, positionId: bigint | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || (!positionId && positionId !== BigInt(0))) return undefined;\n return await getSwapPosition(canisterId, positionId);\n }, [canisterId, positionId]),\n );\n}\n\nexport async function getPositionFee(canisterId: string, positionId: bigint) {\n return resultFormat<{ tokensOwed0: bigint; tokensOwed1: bigint }>(\n await (await swapPool(canisterId)).refreshIncome(positionId),\n ).data;\n}\n\nexport function usePositionFee(\n canisterId: string | undefined,\n positionId: bigint | undefined,\n refresh?: number | boolean,\n) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || (!positionId && positionId === BigInt(0))) return undefined;\n return await getPositionFee(canisterId, positionId);\n }, [canisterId, positionId]),\n refresh,\n );\n}\n\nexport type SwapPoolAllBalance = [Principal, { balance0: bigint; balance1: bigint }];\n\nexport async function getSwapPoolAllBalance(canisterId: string, offset: number, limit: number) {\n return resultFormat>(\n await (await swapPool(canisterId)).allTokenBalance(BigInt(offset), BigInt(limit)),\n ).data;\n}\n\nexport function useSwapPoolAllBalance(canisterId: string | undefined, offset: number, limit: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getSwapPoolAllBalance(canisterId, offset, limit);\n }, [canisterId, offset, limit]),\n );\n}\n\nexport async function _getSwapPoolAllBalance(poolId: string, limit = 1000) {\n const callback = async (offset: number, limit: number) => {\n return await getSwapPoolAllBalance(poolId, offset, limit);\n };\n\n return await getPaginationAllData(callback, limit);\n}\n\nexport function _useSwapPoolAllBalance(canisterId: string | undefined, limit?: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await _getSwapPoolAllBalance(canisterId, limit);\n }, [canisterId, limit]),\n );\n}\n\n/* swap nft */\n\nexport async function getUserSwapNFTs(principal: string, offset: number, limit: number) {\n return resultFormat>(\n await (await swapNFT()).findTokenList({ principal: Principal.fromText(principal) }, BigInt(offset), BigInt(limit)),\n ).data;\n}\n\nexport function useUserSwapNFTs(principal: string | undefined, offset: number, limit: number) {\n return useCallsData(\n useCallback(async () => {\n if (!principal || !isAvailablePageArgs(offset, limit)) return undefined;\n return await getUserSwapNFTs(principal, offset, limit);\n }, [principal, offset, limit]),\n );\n}\n\nexport function useUserAllNFTs(principal: string | undefined) {\n const callback = useCallback(\n async (offset: number, limit: number) => {\n if (!principal) return undefined;\n return await getUserSwapNFTs(principal, offset, limit);\n },\n [principal],\n );\n\n return usePaginationAllData(callback, 2000);\n}\n\nexport async function getSwapNFTTokenURI(tokenId: bigint | number) {\n const data = resultFormat(await (await swapNFT()).tokenURI(BigInt(tokenId))).data;\n return JSON.parse(data ?? \"\") as { image: string; [key: string]: any };\n}\n\nexport function useSwapNFTTokenURI(tokenId: bigint | number | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (tokenId === undefined) return undefined;\n return await getSwapNFTTokenURI(tokenId);\n }, [tokenId]),\n );\n}\n\nexport async function getPositionNFTId(poolId: string, positionId: string) {\n return resultFormat(await (await swapNFT()).getTokenId(poolId, positionId)).data;\n}\n\nexport function usePositionNFTId(poolId: string | undefined, positionId: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (poolId === undefined || positionId === undefined) return undefined;\n\n return await getPositionNFTId(poolId, positionId);\n }, [poolId, positionId]),\n );\n}\n\n/* swap nft */\n\n/* swap records */\n\nexport async function getSwapUserPositionWithAmount(canisterId: string, offset: number, limit: number) {\n return resultFormat>(\n await (await swapPool(canisterId)).getUserPositionWithTokenAmount(BigInt(offset), BigInt(limit)),\n ).data;\n}\n\nexport function useSwapUserPositionWithAmount(canisterId: string | undefined, offset: number, limit: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || !isAvailablePageArgs(offset, limit)) return undefined;\n return await getSwapUserPositionWithAmount(canisterId, offset, limit);\n }, [canisterId, offset, limit]),\n );\n}\n\nexport async function _getSwapUserPositionsWithAmount(poolId: string, limit = 1000) {\n const callback = async (offset: number, limit: number) => {\n return await getSwapUserPositionWithAmount(poolId, offset, limit);\n };\n\n return await getPaginationAllData(callback, limit);\n}\n\nexport function _useSwapUserPositionsWithAmount(canisterId: string | undefined, limit?: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await _getSwapUserPositionsWithAmount(canisterId, limit);\n }, [canisterId, limit]),\n );\n}\n\nexport async function getSwapPositions(canisterId: string, offset: number, limit: number) {\n return resultFormat>(\n await (await swapPool(canisterId)).getUserPositions(BigInt(offset), BigInt(limit)),\n ).data;\n}\n\nexport function useSwapPositions(canisterId: string | undefined, offset: number, limit: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || !isAvailablePageArgs(offset, limit)) return undefined;\n return await getSwapPositions(canisterId, offset, limit);\n }, [canisterId, offset, limit]),\n );\n}\n\nexport async function getSwapAllUserPositions(poolId: string, limit = 2000) {\n const callback = async (offset: number, limit: number) => {\n return await getSwapPositions(poolId, offset, limit);\n };\n\n return await getPaginationAllData(callback, limit);\n}\n\nexport function useSwapAllUserPositions(canisterId: string | undefined, limit?: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getSwapAllUserPositions(canisterId, limit);\n }, [canisterId, limit]),\n );\n}\n\nexport async function getSwapPoolPositions(canisterId: string, offset: number, limit: number) {\n return resultFormat>(\n await (await swapPool(canisterId)).getPositions(BigInt(offset), BigInt(limit)),\n ).data;\n}\n\nexport function useSwapPoolPositions(canisterId: string | undefined, offset: number, limit: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || !isAvailablePageArgs(offset, limit)) return undefined;\n return await getSwapPoolPositions(canisterId, offset, limit);\n }, [canisterId, offset, limit]),\n );\n}\n\nexport async function getSwapPoolAllPositions(poolId: string, limit = 1000) {\n const callback = async (offset: number, limit: number) => {\n return await getSwapPoolPositions(poolId, offset, limit);\n };\n\n return await getPaginationAllData(callback, limit);\n}\n\nexport function useSwapPoolAllPositions(canisterId: string | undefined, limit?: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getSwapPoolAllPositions(canisterId, limit);\n }, [canisterId, limit]),\n );\n}\n\nexport async function getSwapTicks(canisterId: string, offset: number, limit: number) {\n const result = await (await swapPool(canisterId)).getTicks(BigInt(offset), BigInt(limit));\n return resultFormat>(result).data;\n}\n\nexport async function getSwapAllTicks(canisterId: string, limit = 1000) {\n const callback = async (offset: number, limit: number) => {\n return await getSwapTicks(canisterId, offset, limit);\n };\n\n return await getPaginationAllDataLimit(callback, limit);\n}\n\nexport function useSwapAllTicks(canisterId: string | undefined, limit?: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getSwapAllTicks(canisterId, limit);\n }, [canisterId, limit]),\n );\n}\n\nexport async function getSwapCyclesInfo(canisterId: string) {\n return resultFormat<{ balance: bigint; available: bigint }>(await (await swapPool(canisterId)).getCycleInfo()).data;\n}\n\nexport function useSwapCyclesInfo(canisterId: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getSwapCyclesInfo(canisterId);\n }, [canisterId]),\n );\n}\n\nexport async function getSwapTokenAmountState(canisterId: string) {\n return resultFormat<{\n swapFee0Repurchase: bigint;\n token0Amount: bigint;\n token1Amount: bigint;\n swapFee1Repurchase: bigint;\n }>(await (await swapPool(canisterId)).getTokenAmountState()).data;\n}\n\nexport function useSwapTokenAmountState(canisterId: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getSwapTokenAmountState(canisterId);\n }, [canisterId]),\n );\n}\n\n/* swap records */\n\n/* swap positions */\nexport async function updateUserPositionPoolId(poolId: string, identity?: ActorIdentity) {\n return resultFormat(await (await swapPosition(identity)).addPoolId(poolId));\n}\n\nexport async function getUserPositionsPools(account: string) {\n return resultFormat(await (await swapPosition()).getUserPools(account)).data;\n}\n\nexport function useUserPositionPools(account: string | undefined | null) {\n return useCallsData(\n useCallback(async () => {\n if (!account) return undefined;\n return await getUserPositionsPools(account);\n }, [account]),\n );\n}\n\nexport async function getSwapUserPositions(poolId: string, principal: string) {\n return resultFormat(\n await (await swapPool(poolId)).getUserPositionsByPrincipal(Principal.fromText(principal)),\n ).data;\n}\n\nexport function useSwapUserPositions(\n poolId: string | undefined,\n principal: string | undefined,\n refresh?: boolean | number,\n) {\n return useCallsData(\n useCallback(async () => {\n if (!principal || !poolId) return undefined;\n return await getSwapUserPositions(poolId, principal);\n }, [principal, poolId]),\n refresh,\n );\n}\n\nexport async function approvePosition(poolId: string, spender: string, index: number | bigint) {\n return resultFormat(\n await (await swapPool(poolId, true)).approvePosition(Principal.fromText(spender), BigInt(index)),\n );\n}\n\nexport async function getSwapPositionOwner(poolId: string, positionIndex: number | bigint) {\n return resultFormat(await (await swapPool(poolId)).getUserByPositionId(BigInt(positionIndex))).data;\n}\n\nexport function useSwapPositionOwner(poolId: string | undefined, positionIndex: number | bigint | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!poolId || positionIndex === undefined) return undefined;\n return await getSwapPositionOwner(poolId, positionIndex);\n }, [positionIndex, poolId]),\n );\n}\n\n/* swap positions */\n","import { useCallback } from \"react\";\nimport { swapFactory } from \"@icpswap/actor\";\nimport { resultFormat } from \"@icpswap/utils\";\nimport { Principal } from \"@dfinity/principal\";\nimport type { PassCode } from \"@icpswap/candid\";\nimport { useCallsData } from \"../useCallData\";\n\nexport async function getPassCode(principal: string) {\n return resultFormat(await (await swapFactory()).getPasscodesByPrincipal(Principal.fromText(principal)))\n .data;\n}\n\nexport function usePassCode(principal: string | undefined, reload?: number | boolean) {\n return useCallsData(\n useCallback(async () => {\n if (!principal) return undefined;\n return getPassCode(principal);\n }, [principal]),\n reload,\n );\n}\n","import { useCallback } from \"react\";\nimport { passCodeManager } from \"@icpswap/actor\";\nimport { resultFormat } from \"@icpswap/utils\";\nimport { Principal } from \"@dfinity/principal\";\nimport { useCallsData } from \"../useCallData\";\n\nexport function usePCMMetadata() {\n return useCallsData(\n useCallback(async () => {\n return resultFormat<{\n passcodePrice: bigint;\n tokenCid: Principal;\n factoryCid: Principal;\n }>(await (await passCodeManager()).metadata()).data;\n }, []),\n );\n}\n\nexport async function requestPassCode(token0: Principal, token1: Principal, fee: bigint) {\n const result = await (await passCodeManager(true)).requestPasscode(token0, token1, fee);\n\n return resultFormat(result);\n}\n\nexport async function withdrawPCMBalance(amount: bigint, fee: bigint) {\n const result = await (await passCodeManager(true)).withdraw({ fee, amount });\n return resultFormat(result);\n}\n\nexport async function destroyPassCode(token0: string, token1: string, fee: bigint) {\n const result = await (\n await passCodeManager(true)\n ).destoryPasscode(Principal.fromText(token0), Principal.fromText(token1), fee);\n\n return resultFormat(result);\n}\n\nexport function useUserPCMBalance(principal: Principal | undefined, reload?: number) {\n return useCallsData(\n useCallback(async () => {\n if (!principal) return undefined;\n return resultFormat(await (await passCodeManager()).balanceOf(principal)).data;\n }, [principal]),\n reload,\n );\n}\n","import { useCallback } from \"react\";\nimport { tokenClaimController, tokenClaimStorage } from \"@icpswap/actor\";\nimport { useCallsData } from \"../useCallData\";\nimport {\n resultFormat,\n isAvailablePageArgs,\n availableArgsNull,\n} from \"@icpswap/utils\";\nimport type { ActorIdentity, PaginationResult } from \"@icpswap/types\";\nimport type {\n ClaimEventInfo,\n ClaimQuota,\n ClaimTransaction,\n} from \"@icpswap/types\";\nimport { Principal } from \"@dfinity/principal\";\n\nexport async function getEvent(eventId: string) {\n return resultFormat(\n await (await tokenClaimController()).getEvent(eventId)\n ).data;\n}\n\nexport function useEvent(eventId: string | undefined, reload?: boolean) {\n return useCallsData(\n useCallback(async () => {\n if (!eventId) return undefined;\n return await getEvent(eventId!);\n }, [eventId]),\n reload\n );\n}\n\nexport async function claimToken(\n eventId: string,\n storageId: string,\n identity: ActorIdentity\n) {\n return resultFormat(\n await (await tokenClaimStorage(storageId, identity)).userClaim(eventId)\n );\n}\n\nexport async function createClaimEvent(\n args: ClaimEventInfo,\n identity: ActorIdentity\n) {\n return resultFormat(\n await (await tokenClaimController(identity)).create(args)\n );\n}\n\nexport async function setClaimEventReady(id: string, identity: ActorIdentity) {\n return resultFormat(\n await (await tokenClaimController(identity)).ready(id)\n );\n}\n\nexport async function setClaimEventState(\n id: string,\n state: boolean,\n identity: ActorIdentity\n) {\n return resultFormat(\n await (await tokenClaimController(identity)).setStatus(id, state)\n );\n}\n\nexport async function setClaimEventData(\n id: string,\n args: ClaimQuota[],\n identity: ActorIdentity\n) {\n return resultFormat(\n await (await tokenClaimController(identity)).importQuota(id, args)\n );\n}\n\nexport async function getClaimEvents(offset: number, limit: number) {\n return resultFormat>(\n await (\n await tokenClaimController()\n ).findAllEvents(BigInt(offset), BigInt(limit))\n ).data;\n}\n\nexport function useClaimEvents(\n offset: number,\n limit: number,\n reload?: boolean\n) {\n return useCallsData(\n useCallback(async () => {\n if (!isAvailablePageArgs(offset, limit)) return undefined;\n return await getClaimEvents(offset, limit);\n }, [offset, limit]),\n reload\n );\n}\n\nexport async function getUserCreatedClaimEvents(\n user: string,\n offset: number,\n limit: number\n) {\n return resultFormat>(\n await (\n await tokenClaimController()\n ).findCreateEvents(Principal.fromText(user), BigInt(offset), BigInt(limit))\n ).data;\n}\n\nexport function useUserCreatedClaimEvents(\n user: string | undefined,\n offset: number,\n limit: number,\n reload?: boolean\n) {\n return useCallsData(\n useCallback(async () => {\n if (!user || !isAvailablePageArgs(offset, limit)) return undefined;\n return await getUserCreatedClaimEvents(user!, offset, limit);\n }, [user, offset, limit]),\n reload\n );\n}\n\nexport async function getUserClaimEvents(\n user: string,\n offset: number,\n limit: number\n) {\n return resultFormat>(\n await (\n await tokenClaimController()\n ).findUserEvents(Principal.fromText(user), BigInt(offset), BigInt(limit))\n ).data;\n}\n\nexport function useUserClaimEvents(\n user: string | undefined,\n offset: number,\n limit: number,\n reload?: boolean\n) {\n return useCallsData(\n useCallback(async () => {\n if (!user || !isAvailablePageArgs(offset, limit)) return undefined;\n return await getUserClaimEvents(user!, offset, limit);\n }, [user, offset, limit]),\n\n reload\n );\n}\n\nexport async function getClaimEventTransactions(\n id: string,\n state: number | undefined,\n offset: number,\n limit: number\n) {\n return resultFormat>(\n await (\n await tokenClaimController()\n ).findEventRecords(\n id,\n state === undefined ? [] : availableArgsNull(BigInt(state)),\n BigInt(offset),\n BigInt(limit)\n )\n ).data;\n}\n\nexport function useClaimEventTransactions(\n id: string | undefined,\n state: number | undefined,\n offset: number,\n limit: number,\n reload?: boolean\n) {\n return useCallsData(\n useCallback(async () => {\n if (!id || !isAvailablePageArgs(offset, limit)) return undefined;\n return await getClaimEventTransactions(id!, state, offset, limit);\n }, [id, state, offset, limit]),\n reload\n );\n}\n\nexport async function getUserClaimEventTransactions(\n user: string,\n id: string | undefined,\n state: number | undefined,\n offset: number,\n limit: number\n) {\n return resultFormat>(\n await (\n await tokenClaimController()\n ).findUserEventRecords(\n Principal.fromText(user),\n id === undefined ? [] : availableArgsNull(id),\n state === undefined ? [] : availableArgsNull(BigInt(state)),\n BigInt(offset),\n BigInt(limit)\n )\n ).data;\n}\n\nexport function useUserClaimEventTransactions(\n user: string | undefined,\n id: string | undefined,\n state: number | undefined,\n offset: number,\n limit: number,\n reload?: boolean\n) {\n return useCallsData(\n useCallback(async () => {\n if (!user || !isAvailablePageArgs(offset, limit)) return undefined;\n\n return await getUserClaimEventTransactions(\n user!,\n id,\n state,\n offset,\n limit\n );\n }, [user, state, offset, limit]),\n reload\n );\n}\n","import { tokenList, allTokenOfSwap } from \"@icpswap/actor\";\nimport type { TokenListMetadata, AllTokenOfSwapTokenInfo, PaginationResult } from \"@icpswap/types\";\nimport { useCallback } from \"react\";\nimport { resultFormat } from \"@icpswap/utils\";\nimport { useCallsData } from \"../useCallData\";\nimport { getLimitedInfinityCall } from \"../useLimitedInfinityCall\";\n\nexport async function getTokensFromList() {\n return resultFormat(await (await tokenList()).getList()).data;\n}\n\nexport function useTokensFromList() {\n return useCallsData(\n useCallback(async () => {\n return await getTokensFromList();\n }, []),\n );\n}\n\nexport function useTokenListTokenInfo(canisterId: string | undefined | null) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n const info = resultFormat(await (await tokenList()).get(canisterId)).data;\n return info ? info[0] : undefined;\n }, [canisterId]),\n );\n}\n\nexport async function getAllTokensOfSwap(offset: number, limit: number) {\n return resultFormat>(\n await (await allTokenOfSwap()).get_token_list(BigInt(offset), BigInt(limit), []),\n ).data;\n}\n\nexport function useAllTokensOfSwap() {\n const call = async (offset: number, limit: number) => {\n const result = resultFormat>(\n await (await allTokenOfSwap()).get_token_list(BigInt(offset), BigInt(limit), []),\n ).data;\n\n return result?.content;\n };\n\n return useCallsData(\n useCallback(async () => {\n return getLimitedInfinityCall(call, 1000, 2);\n }, []),\n );\n}\n","import { useCallback } from \"react\";\nimport { isPrincipal, isValidPrincipal } from \"@icpswap/utils\";\nimport { tokenAdapter } from \"@icpswap/token-adapter\";\nimport { Principal } from \"@dfinity/principal\";\nimport BigNumber from \"bignumber.js\";\nimport { useLatestDataCall } from \"../useCallData\";\n\nexport interface GetTokenBalanceArgs {\n canisterId: string;\n address: string | Principal;\n sub?: Uint8Array;\n}\n\nexport async function getTokenBalance({ canisterId, address, sub }: GetTokenBalanceArgs) {\n const result = await tokenAdapter.balance({\n canisterId,\n params: {\n user: isPrincipal(address)\n ? { principal: address }\n : isValidPrincipal(address)\n ? {\n principal: Principal.fromText(address),\n }\n : { address },\n token: \"\",\n subaccount: sub ? [...sub] : undefined,\n },\n });\n\n return result.data;\n}\n\nexport interface UserTokenBalanceArgs {\n canisterId: string | undefined;\n address: string | Principal | undefined;\n sub?: Uint8Array;\n refresh?: boolean | number;\n}\n\nexport function useTokenBalance({ canisterId, address, sub, refresh }: UserTokenBalanceArgs): {\n result: BigNumber | undefined;\n loading: boolean;\n} {\n return useLatestDataCall(\n useCallback(async () => {\n if (!address || !canisterId) return undefined;\n const balance = await getTokenBalance({ canisterId, sub, address });\n return balance === undefined ? undefined : new BigNumber(balance.toString());\n }, [address, canisterId, sub]),\n refresh,\n );\n}\n","import { useState, useMemo, useEffect, useRef } from \"react\";\nimport type { ApiResult, CallResult, PaginationResult } from \"@icpswap/types\";\nimport { pageArgsFormat, sleep } from \"@icpswap/utils\";\n\nexport type Call = () => Promise>;\n\nexport function useCallsData(fn: Call, reload?: number | string | boolean): CallResult {\n const result = useRef(undefined);\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n if (fn) {\n result.current = undefined;\n setLoading(true);\n fn().then((res) => {\n result.current = res;\n setLoading(false);\n });\n }\n }, [fn, reload]);\n\n return useMemo(\n () => ({\n result: result.current,\n loading,\n }),\n [result, loading],\n );\n}\n\nexport function useLatestDataCall(fn: Call, refresh?: number | string | boolean) {\n const [loading, setLoading] = useState(false);\n\n const indexRef = useRef(0);\n const resultsRef = useRef<{ [key: string]: T | undefined }>({});\n\n useEffect(() => {\n if (fn) {\n setLoading(true);\n\n indexRef.current += 1;\n const index = indexRef.current;\n\n fn().then((result) => {\n resultsRef.current = {\n ...resultsRef.current,\n [String(index)]: result as T,\n };\n\n setLoading(false);\n });\n }\n }, [fn, refresh]);\n\n return useMemo(() => {\n return {\n result: resultsRef.current[indexRef.current] as T | undefined,\n loading,\n };\n }, [resultsRef.current, indexRef.current, loading]);\n}\n\nexport function usePaginationAllData(\n callback: (offset: number, limit: number) => Promise | undefined>,\n limit: number,\n reload = false,\n) {\n const [loading, setLoading] = useState(false);\n const [list, setList] = useState([]);\n\n const fetch = async (offset: number, limit: number) => {\n return await callback(offset, limit).then((result) => {\n if (result) {\n const content = result.content;\n if (content && content.length > 0) {\n return content;\n }\n return [];\n }\n return [];\n });\n };\n\n const fetchDone = async (_list: { [k: string]: T[] }) => {\n let data: T[] = [];\n Object.keys(_list).forEach((key) => {\n data = data.concat(_list[key]);\n });\n setList(data);\n };\n\n useEffect(() => {\n async function getTotalElements() {\n if (callback) {\n const result = await callback(0, 1);\n if (result) {\n return result.totalElements;\n }\n return BigInt(0);\n }\n\n return BigInt(0);\n }\n\n async function call() {\n const totalElements = await getTotalElements();\n\n if (Number(totalElements) !== 0) {\n const num = Number(totalElements) % limit;\n const totalPage =\n num === 0 ? Number(totalElements) / limit : parseInt(String(Number(totalElements) / limit)) + 1;\n\n setLoading(true);\n\n const _list: { [k: string]: T[] } = {};\n\n for (let i = 0; i < totalPage; i++) {\n const [offset] = pageArgsFormat(i + 1, limit);\n\n if (totalPage % 80 === 0) {\n await sleep(2000);\n }\n\n const _fetch = () => {\n fetch(offset, limit)\n .then(async (content) => {\n if (content && content.length > 0) {\n _list[`${i + 1}`] = content;\n if (Object.keys(_list).length === totalPage) {\n await fetchDone(_list);\n setLoading(false);\n }\n }\n })\n .catch((error) => {\n console.log(error);\n _fetch();\n });\n };\n\n _fetch();\n }\n } else {\n setList([]);\n setLoading(false);\n }\n }\n\n call();\n }, [reload, callback]);\n\n return useMemo(\n () => ({\n result: list,\n loading,\n }),\n [list, loading],\n );\n}\n\nexport async function getPaginationAllData(\n callback: (offset: number, limit: number) => Promise | undefined>,\n limit: number,\n) {\n const fetch = async (offset: number, limit: number) => {\n return await callback(offset, limit);\n };\n\n const _result = await fetch(0, 1);\n const totalElements = Number(_result?.totalElements ?? 0);\n const totalPage =\n totalElements % limit === 0 ? parseInt(String(totalElements / limit)) : parseInt(String(totalElements / limit)) + 1;\n\n const promise: Promise | undefined>[] = [];\n\n for (let i = 1; i < totalPage + 1; i++) {\n const [offset] = pageArgsFormat(i, limit);\n promise.push(fetch(offset, limit));\n }\n\n const result = await Promise.all(promise);\n\n return result\n .filter((res) => !!res)\n .reduce((prev, curr) => {\n return prev.concat(curr?.content ?? []);\n }, [] as T[]);\n}\n\nexport async function getPaginationAllDataLimit(\n callback: (offset: number, limit: number) => Promise | undefined>,\n limit: number,\n) {\n const fetch = async (offset: number, limit: number) => {\n return await callback(offset, limit);\n };\n\n const __result = await fetch(0, limit);\n const totalElements = Number(__result?.totalElements ?? 0);\n const totalPage =\n totalElements % limit === 0 ? parseInt(String(totalElements / limit)) : parseInt(String(totalElements / limit)) + 1;\n\n const promise: Promise | undefined>[] = [];\n\n for (let i = 2; i < totalPage + 1; i++) {\n const [offset] = pageArgsFormat(i, limit);\n promise.push(fetch(offset, limit));\n }\n\n const result = await Promise.all(promise);\n\n return result\n .filter((res) => !!res)\n .reduce(\n (prev, curr) => {\n return prev.concat(curr?.content ?? []);\n },\n __result.content ?? ([] as T[]),\n );\n}\n","import { useCallback, useEffect, useRef, useState } from \"react\";\n\nexport function useDebouncedChangeHandler(\n value: T,\n onChange: (newValue: T) => void,\n debouncedMs = 100,\n): [T, (value: T) => void] {\n const [inner, setInner] = useState(() => value);\n const timer = useRef>();\n\n const onChangeInner = useCallback(\n (newValue: T) => {\n setInner(newValue);\n if (timer.current) {\n clearTimeout(timer.current);\n }\n timer.current = setTimeout(() => {\n onChange(newValue);\n timer.current = undefined;\n }, debouncedMs);\n },\n [debouncedMs, onChange],\n );\n\n useEffect(() => {\n if (timer.current) {\n clearTimeout(timer.current);\n timer.current = undefined;\n }\n setInner(value);\n }, [value]);\n\n return [inner, onChangeInner];\n}\n","import { useState, useEffect, useMemo } from \"react\";\n\nexport function useInterval(\n callback: (() => Promise) | (() => void) | undefined,\n force: boolean | number = false,\n interval = 5000,\n): T | undefined {\n const [data, setData] = useState(undefined);\n const [tick, setTick] = useState(0);\n\n useEffect(() => {\n async function __callback() {\n if (callback) {\n const result = await callback();\n\n if (result) {\n setData(result);\n }\n }\n }\n\n __callback();\n }, [tick, callback, force]);\n\n useEffect(() => {\n const timer = setInterval(() => {\n if (callback) {\n setTick((prevState) => prevState + 1);\n }\n }, interval);\n\n return () => {\n clearInterval(timer);\n };\n }, [interval, callback]);\n\n return useMemo(() => data, [data]);\n}\n","import { useState, useMemo, useEffect } from \"react\";\n\nexport function useLimitedInfinityCall(\n callback: (offset: number, limit: number) => Promise,\n limit: number,\n reload = false,\n) {\n const [loading, setLoading] = useState(false);\n const [list, setList] = useState([]);\n\n useEffect(() => {\n async function call() {\n setLoading(true);\n const result = await getLimitedInfinityCall(callback, limit, 5);\n setList(result);\n }\n\n call();\n }, [reload, callback, limit]);\n\n return useMemo(\n () => ({\n result: list,\n loading,\n }),\n [list, loading],\n );\n}\n\ntype Callback = (offset: number, limit: number) => Promise;\n\nexport async function fetch_data(start: number, limit: number, callback: Callback) {\n const result = await callback(start, limit);\n return result;\n}\n\n/**\n * @description getLimitedInfinityCall\n * @param callback The call to fetch the data\n * @param limit The data length in each call\n * @param call_rounds Number of call\n */\nexport async function getLimitedInfinityCall(\n callback: (offset: number, limit: number) => Promise,\n limit: number,\n call_rounds = 10,\n start_index?: number,\n) {\n let data: T[] = [];\n let fetch_index = 0;\n let fetch_done = false;\n\n const fetch = async (index: number) => {\n fetch_index += 1;\n\n await Promise.all(\n Array.from({ length: call_rounds }, (_, i) => i).map(async (call_index) => {\n const start = (start_index ?? 0) + call_index * limit + index * limit * call_rounds;\n\n const result = await fetch_data(start, limit, callback);\n\n if (!result) {\n return undefined;\n } \n data = data.concat(result);\n\n if (result.length < limit) {\n fetch_done = true;\n }\n \n\n return undefined;\n }),\n );\n\n if (!fetch_done) {\n await fetch(fetch_index);\n }\n };\n\n await fetch(fetch_index);\n\n return data;\n}\n","import { parse, ParsedQs } from \"qs\";\nimport { useMemo } from \"react\";\nimport { useLocation } from \"react-router-dom\";\n\nexport function parsedQueryString(search?: string): ParsedQs {\n let string: string = search ?? \"\";\n\n if (!search) {\n // react-router-dom places search string in the hash\n const { hash } = window.location;\n string = hash.substr(hash.indexOf(\"?\"));\n }\n\n return string && string.length > 1 ? parse(string, { parseArrays: false, ignoreQueryPrefix: true }) : {};\n}\n\nexport function useParsedQueryString(): ParsedQs {\n const { search } = useLocation();\n return useMemo(() => parsedQueryString(search), [search]);\n}\n","export const ADDRESS_ZERO = \"0x0000000000000000000000000000000000000000\";\n\n/**\n * The default factory enabled fee amounts, denominated in hundredths of bips.\n */\nexport enum FeeAmount {\n LOWEST = 100,\n LOW = 500,\n MEDIUM = 3000,\n HIGH = 10000\n}\n\n/**\n * The default factory tick spacings by fee amount.\n */\nexport const TICK_SPACINGS: { [amount in FeeAmount]: number } = {\n [FeeAmount.LOWEST]: 1,\n [FeeAmount.LOW]: 10,\n [FeeAmount.MEDIUM]: 60,\n [FeeAmount.HIGH]: 200\n};\n","import JSBI from \"jsbi\";\n\n// exports for external consumption\nexport type BigintIsh = JSBI | string | number;\n\nexport enum TradeType {\n EXACT_INPUT,\n EXACT_OUTPUT\n}\n\nexport enum Rounding {\n ROUND_DOWN,\n ROUND_HALF_UP,\n ROUND_UP\n}\n\nexport const MaxUint256 = JSBI.BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n","/* eslint-disable @typescript-eslint/prefer-as-const */\n\nimport invariant from \"tiny-invariant\";\nimport { validateAndParseERC20Address } from \"../utils/validateAndParseAddress\";\n\ninterface ConstructorArgs {\n address: string;\n decimals: number;\n symbol: string;\n name: string;\n logo?: string;\n transFee?: number;\n}\n\n/**\n * Represents an ERC20 token with a unique address and some metadata.\n */\nexport class ERC20Token {\n public readonly isNative: false = false;\n\n public readonly isToken: true = true;\n\n /**\n * The decimals used in representing currency amounts\n */\n public readonly decimals: number;\n\n /**\n * The symbol of the currency, i.e. a short textual non-unique identifier\n */\n public readonly symbol: string;\n\n /**\n * The name of the currency, i.e. a descriptive textual non-unique identifier\n */\n public readonly name: string;\n\n public readonly logo: string;\n\n public readonly transFee: number;\n\n public readonly standard: string;\n\n /**\n * The contract address on the chain on which this token lives\n */\n public readonly address: string;\n\n public constructor({ address, decimals, symbol, name, logo, transFee }: ConstructorArgs) {\n invariant(decimals >= 0 && decimals < 255 && Number.isInteger(decimals), \"DECIMALS\");\n\n this.decimals = decimals;\n this.symbol = symbol;\n this.name = name ?? \"\";\n this.logo = logo ?? \"\";\n this.transFee = transFee;\n this.address = validateAndParseERC20Address(address);\n }\n\n /**\n * Returns true if the two tokens are equivalent, i.e. have the same address.\n * @param other other token to compare\n */\n public equals(other: ERC20Token): boolean {\n return other.isToken && this.address === other.address;\n }\n\n /**\n * Returns true if the address of this token sorts before the address of the other token\n * @param other other token to compare\n * @throws if the tokens have the same address\n * @throws if the tokens are on different chains\n */\n public sortsBefore(other: ERC20Token): boolean {\n invariant(this.address !== other.address, \"ADDRESSES\");\n return this.address.toLowerCase() < other.address.toLowerCase();\n }\n}\n","import invariant from \"tiny-invariant\";\nimport JSBI from \"jsbi\";\nimport _Big from \"big.js\";\nimport toFormat from \"toformat\";\nimport { Token } from \"../token\";\nimport { Fraction } from \"./fraction\";\nimport { BigintIsh, Rounding, MaxUint256 } from \"../../constants\";\n\nconst Big = toFormat(_Big);\n\nexport class CurrencyAmount extends Fraction {\n public readonly currency: T;\n\n public readonly decimalScale: JSBI;\n\n /**\n * Returns a new currency amount instance from the unitless amount of token, i.e. the raw amount\n * @param currency the currency in the amount\n * @param rawAmount the raw token or ether amount\n */\n public static fromRawAmount(currency: T, rawAmount: BigintIsh): CurrencyAmount {\n return new CurrencyAmount(currency, rawAmount);\n }\n\n /**\n * Construct a currency amount with a denominator that is not equal to 1\n * @param currency the currency\n * @param numerator the numerator of the fractional token amount\n * @param denominator the denominator of the fractional token amount\n */\n public static fromFractionalAmount(\n currency: T,\n numerator: BigintIsh,\n denominator: BigintIsh,\n ): CurrencyAmount {\n return new CurrencyAmount(currency, numerator, denominator);\n }\n\n protected constructor(currency: T, numerator: BigintIsh, denominator?: BigintIsh) {\n super(numerator, denominator);\n invariant(JSBI.lessThanOrEqual(this.quotient, MaxUint256), \"AMOUNT\");\n this.currency = currency;\n this.decimalScale = JSBI.exponentiate(JSBI.BigInt(10), JSBI.BigInt(currency.decimals));\n }\n\n public add(other: CurrencyAmount): CurrencyAmount {\n invariant(this.currency.equals(other.currency), \"CURRENCY\");\n const added = super.add(other);\n return CurrencyAmount.fromFractionalAmount(this.currency, added.numerator, added.denominator);\n }\n\n public subtract(other: CurrencyAmount): CurrencyAmount {\n invariant(this.currency.equals(other.currency), \"CURRENCY\");\n const subtracted = super.subtract(other);\n return CurrencyAmount.fromFractionalAmount(this.currency, subtracted.numerator, subtracted.denominator);\n }\n\n public multiply(other: Fraction | BigintIsh): CurrencyAmount {\n const multiplied = super.multiply(other);\n return CurrencyAmount.fromFractionalAmount(this.currency, multiplied.numerator, multiplied.denominator);\n }\n\n public divide(other: Fraction | BigintIsh): CurrencyAmount {\n const divided = super.divide(other);\n return CurrencyAmount.fromFractionalAmount(this.currency, divided.numerator, divided.denominator);\n }\n\n public toSignificant(significantDigits = 6, format?: object, rounding: Rounding = Rounding.ROUND_DOWN): string {\n return super.divide(this.decimalScale).toSignificant(significantDigits, format, rounding);\n }\n\n public toFixed(\n decimalPlaces: number = this.currency.decimals,\n format?: object,\n rounding: Rounding = Rounding.ROUND_DOWN,\n ): string {\n invariant(decimalPlaces <= this.currency.decimals, \"DECIMALS\");\n return super.divide(this.decimalScale).toFixed(decimalPlaces, format, rounding);\n }\n\n public toExact(format: object = { groupSeparator: \"\" }): string {\n Big.DP = this.currency.decimals;\n return new Big(this.quotient.toString()).div(this.decimalScale.toString()).toFormat(format);\n }\n\n public get wrapped(): CurrencyAmount {\n if (this.currency.isToken) return this as CurrencyAmount;\n return CurrencyAmount.fromFractionalAmount(this.currency.wrapped, this.numerator, this.denominator);\n }\n}\n","import JSBI from \"jsbi\";\nimport invariant from \"tiny-invariant\";\nimport _Decimal from \"decimal.js-light\";\nimport _Big from \"big.js\";\nimport toFormat from \"toformat\";\n\nimport { BigintIsh, Rounding } from \"../../constants\";\n\nconst Decimal = toFormat(_Decimal);\nconst Big = toFormat(_Big);\n\nconst toSignificantRounding = {\n [Rounding.ROUND_DOWN]: Decimal.ROUND_DOWN,\n [Rounding.ROUND_HALF_UP]: Decimal.ROUND_HALF_UP,\n [Rounding.ROUND_UP]: Decimal.ROUND_UP,\n};\n\nconst enum RoundingMode {\n /**\n * Rounds towards zero.\n * I.e. truncate, no rounding.\n */\n RoundDown = 0,\n /**\n * Rounds towards nearest neighbour.\n * If equidistant, rounds away from zero.\n */\n RoundHalfUp = 1,\n /**\n * Rounds towards nearest neighbour.\n * If equidistant, rounds towards even neighbour.\n */\n RoundHalfEven = 2,\n /**\n * Rounds away from zero.\n */\n RoundUp = 3,\n}\n\nconst toFixedRounding = {\n [Rounding.ROUND_DOWN]: RoundingMode.RoundDown,\n [Rounding.ROUND_HALF_UP]: RoundingMode.RoundHalfUp,\n [Rounding.ROUND_UP]: RoundingMode.RoundUp,\n};\n\nexport class Fraction {\n public readonly numerator: JSBI;\n public readonly denominator: JSBI;\n\n public constructor(\n numerator: BigintIsh,\n denominator: BigintIsh = JSBI.BigInt(1)\n ) {\n this.numerator = JSBI.BigInt(numerator);\n this.denominator = JSBI.BigInt(denominator);\n }\n\n private static tryParseFraction(fractionish: BigintIsh | Fraction): Fraction {\n if (\n fractionish instanceof JSBI ||\n typeof fractionish === \"number\" ||\n typeof fractionish === \"string\"\n )\n return new Fraction(fractionish);\n\n if (\"numerator\" in fractionish && \"denominator\" in fractionish)\n return fractionish;\n throw new Error(\"Could not parse fraction\");\n }\n\n // performs floor division\n public get quotient(): JSBI {\n return JSBI.divide(this.numerator, this.denominator);\n }\n\n // remainder after floor division\n public get remainder(): Fraction {\n return new Fraction(\n JSBI.remainder(this.numerator, this.denominator),\n this.denominator\n );\n }\n\n public invert(): Fraction {\n return new Fraction(this.denominator, this.numerator);\n }\n\n public add(other: Fraction | BigintIsh): Fraction {\n const otherParsed = Fraction.tryParseFraction(other);\n if (JSBI.equal(this.denominator, otherParsed.denominator)) {\n return new Fraction(\n JSBI.add(this.numerator, otherParsed.numerator),\n this.denominator\n );\n }\n return new Fraction(\n JSBI.add(\n JSBI.multiply(this.numerator, otherParsed.denominator),\n JSBI.multiply(otherParsed.numerator, this.denominator)\n ),\n JSBI.multiply(this.denominator, otherParsed.denominator)\n );\n }\n\n public subtract(other: Fraction | BigintIsh): Fraction {\n const otherParsed = Fraction.tryParseFraction(other);\n if (JSBI.equal(this.denominator, otherParsed.denominator)) {\n return new Fraction(\n JSBI.subtract(this.numerator, otherParsed.numerator),\n this.denominator\n );\n }\n return new Fraction(\n JSBI.subtract(\n JSBI.multiply(this.numerator, otherParsed.denominator),\n JSBI.multiply(otherParsed.numerator, this.denominator)\n ),\n JSBI.multiply(this.denominator, otherParsed.denominator)\n );\n }\n\n public lessThan(other: Fraction | BigintIsh): boolean {\n const otherParsed = Fraction.tryParseFraction(other);\n return JSBI.lessThan(\n JSBI.multiply(this.numerator, otherParsed.denominator),\n JSBI.multiply(otherParsed.numerator, this.denominator)\n );\n }\n\n public equalTo(other: Fraction | BigintIsh): boolean {\n const otherParsed = Fraction.tryParseFraction(other);\n return JSBI.equal(\n JSBI.multiply(this.numerator, otherParsed.denominator),\n JSBI.multiply(otherParsed.numerator, this.denominator)\n );\n }\n\n public greaterThan(other: Fraction | BigintIsh): boolean {\n const otherParsed = Fraction.tryParseFraction(other);\n return JSBI.greaterThan(\n JSBI.multiply(this.numerator, otherParsed.denominator),\n JSBI.multiply(otherParsed.numerator, this.denominator)\n );\n }\n\n public multiply(other: Fraction | BigintIsh): Fraction {\n const otherParsed = Fraction.tryParseFraction(other);\n return new Fraction(\n JSBI.multiply(this.numerator, otherParsed.numerator),\n JSBI.multiply(this.denominator, otherParsed.denominator)\n );\n }\n\n public divide(other: Fraction | BigintIsh): Fraction {\n const otherParsed = Fraction.tryParseFraction(other);\n return new Fraction(\n JSBI.multiply(this.numerator, otherParsed.denominator),\n JSBI.multiply(this.denominator, otherParsed.numerator)\n );\n }\n\n public toSignificant(\n significantDigits: number,\n format: object = { groupSeparator: \"\" },\n rounding: Rounding = Rounding.ROUND_HALF_UP\n ): string {\n invariant(\n Number.isInteger(significantDigits),\n `${significantDigits} is not an integer.`\n );\n invariant(significantDigits > 0, `${significantDigits} is not positive.`);\n\n Decimal.set({\n precision: significantDigits + 1,\n rounding: toSignificantRounding[rounding],\n });\n const quotient = new Decimal(this.numerator.toString())\n .div(this.denominator.toString())\n .toSignificantDigits(significantDigits);\n return quotient.toFormat(quotient.decimalPlaces(), format);\n }\n\n public toFixed(\n decimalPlaces: number,\n format: object = { groupSeparator: \"\" },\n rounding: Rounding = Rounding.ROUND_HALF_UP\n ): string {\n invariant(\n Number.isInteger(decimalPlaces),\n `${decimalPlaces} is not an integer.`\n );\n invariant(decimalPlaces >= 0, `${decimalPlaces} is negative.`);\n\n Big.DP = decimalPlaces;\n Big.RM = toFixedRounding[rounding];\n return new Big(this.numerator.toString())\n .div(this.denominator.toString())\n .toFormat(decimalPlaces, format);\n }\n\n /**\n * Helper method for converting any super class back to a fraction\n */\n public get asFraction(): Fraction {\n return new Fraction(this.numerator, this.denominator);\n }\n}\n","import JSBI from \"jsbi\";\nimport { BigintIsh, Rounding } from \"../../constants\";\nimport { Fraction } from \"./fraction\";\n\nconst ONE_HUNDRED = new Fraction(JSBI.BigInt(100));\n\n/**\n * Converts a fraction to a percent\n * @param fraction the fraction to convert\n */\nfunction toPercent(fraction: Fraction): Percent {\n return new Percent(fraction.numerator, fraction.denominator);\n}\n\nexport class Percent extends Fraction {\n /**\n * This boolean prevents a fraction from being interpreted as a Percent\n */\n public readonly isPercent: true = true;\n\n add(other: Fraction | BigintIsh): Percent {\n return toPercent(super.add(other));\n }\n\n subtract(other: Fraction | BigintIsh): Percent {\n return toPercent(super.subtract(other));\n }\n\n multiply(other: Fraction | BigintIsh): Percent {\n return toPercent(super.multiply(other));\n }\n\n divide(other: Fraction | BigintIsh): Percent {\n return toPercent(super.divide(other));\n }\n\n public toSignificant(significantDigits: number = 5, format?: object, rounding?: Rounding): string {\n return super.multiply(ONE_HUNDRED).toSignificant(significantDigits, format, rounding);\n }\n\n public toFixed(decimalPlaces: number = 2, format?: object, rounding?: Rounding): string {\n return super.multiply(ONE_HUNDRED).toFixed(decimalPlaces, format, rounding);\n }\n}\n","import JSBI from \"jsbi\";\nimport invariant from \"tiny-invariant\";\n\nimport { BigintIsh, Rounding } from \"../../constants\";\nimport { Token } from \"../token\";\nimport { Fraction } from \"./fraction\";\nimport { CurrencyAmount } from \"./currencyAmount\";\n\nexport class Price extends Fraction {\n public readonly baseCurrency: TBase; // input i.e. denominator\n\n public readonly quoteCurrency: TQuote; // output i.e. numerator\n\n public readonly scalar: Fraction; // used to adjust the raw fraction w/r/t the decimals of the {base,quote}Token\n\n /**\n * Construct a price, either with the base and quote currency amount, or the\n * @param args\n */\n public constructor(\n ...args:\n | [TBase, TQuote, BigintIsh, BigintIsh]\n | [\n {\n baseAmount: CurrencyAmount;\n quoteAmount: CurrencyAmount;\n },\n ]\n ) {\n let baseCurrency: TBase; let quoteCurrency: TQuote; let denominator: BigintIsh; let numerator: BigintIsh;\n\n if (args.length === 4) {\n [baseCurrency, quoteCurrency, denominator, numerator] = args;\n } else {\n const result = args[0].quoteAmount.divide(args[0].baseAmount);\n [baseCurrency, quoteCurrency, denominator, numerator] = [\n args[0].baseAmount.currency,\n args[0].quoteAmount.currency,\n result.denominator,\n result.numerator,\n ];\n }\n super(numerator, denominator);\n\n this.baseCurrency = baseCurrency;\n this.quoteCurrency = quoteCurrency;\n this.scalar = new Fraction(\n JSBI.exponentiate(JSBI.BigInt(10), JSBI.BigInt(baseCurrency.decimals)),\n JSBI.exponentiate(JSBI.BigInt(10), JSBI.BigInt(quoteCurrency.decimals)),\n );\n }\n\n /**\n * Flip the price, switching the base and quote currency\n */\n public invert(): Price {\n return new Price(this.quoteCurrency, this.baseCurrency, this.numerator, this.denominator);\n }\n\n /**\n * Multiply the price by another price, returning a new price. The other price must have the same base currency as this price's quote currency\n * @param other the other price\n */\n public multiply(other: Price): Price {\n invariant(this.quoteCurrency.equals(other.baseCurrency), \"TOKEN\");\n const fraction = super.multiply(other);\n return new Price(this.baseCurrency, other.quoteCurrency, fraction.denominator, fraction.numerator);\n }\n\n /**\n * Return the amount of quote currency corresponding to a given amount of the base currency\n * @param currencyAmount the amount of base currency to quote against the price\n */\n public quote(currencyAmount: CurrencyAmount): CurrencyAmount {\n invariant(currencyAmount.currency.equals(this.baseCurrency), \"TOKEN\");\n const result = super.multiply(currencyAmount);\n return CurrencyAmount.fromFractionalAmount(this.quoteCurrency, result.numerator, result.denominator);\n }\n\n /**\n * Get the value scaled by decimals for formatting\n * @private\n */\n private get adjustedForDecimals(): Fraction {\n return super.multiply(this.scalar);\n }\n\n public toSignificant(significantDigits = 6, format?: object, rounding?: Rounding): string {\n return this.adjustedForDecimals.toSignificant(significantDigits, format, rounding);\n }\n\n public toFixed(decimalPlaces = 4, format?: object, rounding?: Rounding): string {\n return this.adjustedForDecimals.toFixed(decimalPlaces, format, rounding);\n }\n}\n","import invariant from \"tiny-invariant\";\n\n/**\n * A currency is any fungible financial instrument, including Ether, all ERC20 tokens, and other chain-native currencies\n */\nexport abstract class BaseCurrency {\n /**\n * Returns whether the currency is native to the chain and must be wrapped (e.g. Ether)\n */\n public abstract readonly isNative: boolean;\n\n /**\n * Returns whether the currency is a token that is usable without wrapping\n */\n public abstract readonly isToken: boolean;\n\n /**\n * The decimals used in representing currency amounts\n */\n public readonly decimals: number;\n\n /**\n * The symbol of the currency, i.e. a short textual non-unique identifier\n */\n public readonly symbol: string;\n\n /**\n * The name of the currency, i.e. a descriptive textual non-unique identifier\n */\n public readonly name: string;\n\n public readonly logo: string;\n\n public readonly transFee: number;\n\n public readonly standard: string;\n\n /**\n * Constructs an instance of the base class `BaseCurrency`.\n * @param decimals decimals of the currency\n * @param symbol symbol of the currency\n * @param name of the currency\n */\n protected constructor({\n decimals,\n symbol,\n name,\n logo,\n transFee,\n standard,\n }: {\n decimals: number;\n symbol: string;\n name: string;\n logo?: string;\n transFee?: number;\n standard: string;\n }) {\n invariant(decimals >= 0 && decimals < 255 && Number.isInteger(decimals), \"DECIMALS\");\n\n this.decimals = decimals;\n this.symbol = symbol;\n this.name = name ?? \"\";\n this.logo = logo ?? \"\";\n this.transFee = transFee ?? 0;\n this.standard = standard;\n }\n\n /**\n * Returns whether this currency is functionally equivalent to the other currency\n * @param other the other currency\n */\n public abstract equals(other: BaseCurrency): boolean;\n}\n","/* eslint-disable @typescript-eslint/prefer-as-const */\n\nimport invariant from \"tiny-invariant\";\nimport { validateAndParseAddress } from \"../utils/validateAndParseAddress\";\nimport { BaseCurrency } from \"./baseCurrency\";\n\ninterface ConstructorArgs {\n address: string;\n decimals: number;\n symbol: string;\n name: string;\n logo?: string;\n transFee?: number;\n standard: string;\n}\n\n/**\n * Represents an ICP token with a unique address and some metadata.\n */\nexport class Token extends BaseCurrency {\n public readonly isNative: false = false;\n\n public readonly isToken: true = true;\n\n /**\n * The contract address on the chain on which this token lives\n */\n public readonly address: string;\n\n public constructor({ address, decimals, symbol, name, logo, transFee, standard }: ConstructorArgs) {\n super({\n decimals,\n symbol,\n name,\n logo,\n transFee,\n standard,\n });\n\n this.address = validateAndParseAddress(address);\n }\n\n /**\n * Returns true if the two tokens are equivalent, i.e. have the same address.\n * @param other other token to compare\n */\n public equals(other: Token): boolean {\n return other.isToken && this.address === other.address;\n }\n\n /**\n * Returns true if the address of this token sorts before the address of the other token\n * @param other other token to compare\n * @throws if the tokens have the same address\n * @throws if the tokens are on different chains\n */\n public sortsBefore(other: Token): boolean {\n invariant(this.address !== other.address, \"ADDRESSES\");\n return this.address.toLowerCase() < other.address.toLowerCase();\n }\n\n /**\n * Return this token, which does not need to be wrapped\n */\n public get wrapped(): Token {\n return this;\n }\n}\n","import { isValidPrincipal } from \"@icpswap/utils\";\nimport { getAddress } from \"@ethersproject/address\";\n\n/**\n * Validates an address and returns the address\n * @param address the principal address\n */\nexport function validateAndParseAddress(address: string): string {\n if (isValidPrincipal(address)) return address;\n throw new Error(`${address} is not a valid address.`);\n}\n\nexport function validateAndParseERC20Address(address: string): string {\n try {\n return getAddress(address);\n } catch (error) {\n throw new Error(`${address} is not a valid address.`);\n }\n}\n","import JSBI from \"jsbi\";\nimport { NEGATIVE_ONE, ZERO } from \"../internalConstants\";\n\nexport abstract class LiquidityMath {\n /**\n * Cannot be constructed.\n */\n private constructor() {}\n\n public static addDelta(x: JSBI, y: JSBI): JSBI {\n if (JSBI.lessThan(y, ZERO)) {\n return JSBI.subtract(x, JSBI.multiply(y, NEGATIVE_ONE));\n } else {\n return JSBI.add(x, y);\n }\n }\n}\n","import JSBI from \"jsbi\";\nimport { FeeAmount } from \"../constants\";\nimport { NEGATIVE_ONE, ZERO } from \"../internalConstants\";\nimport { FullMath } from \"./fullMath\";\nimport { SqrtPriceMath } from \"./sqrtPriceMath\";\n\nconst MAX_FEE = JSBI.exponentiate(JSBI.BigInt(10), JSBI.BigInt(6));\n\nexport abstract class SwapMath {\n /**\n * Cannot be constructed.\n */\n private constructor() {}\n\n public static computeSwapStep(\n sqrtRatioCurrentX96: JSBI,\n sqrtRatioTargetX96: JSBI,\n liquidity: JSBI,\n amountRemaining: JSBI,\n feePips: FeeAmount\n ): [JSBI, JSBI, JSBI, JSBI] {\n const returnValues: Partial<{\n sqrtRatioNextX96: JSBI;\n amountIn: JSBI;\n amountOut: JSBI;\n feeAmount: JSBI;\n }> = {};\n\n const zeroForOne = JSBI.greaterThanOrEqual(sqrtRatioCurrentX96, sqrtRatioTargetX96);\n const exactIn = JSBI.greaterThanOrEqual(amountRemaining, ZERO);\n\n if (exactIn) {\n const amountRemainingLessFee = JSBI.divide(\n JSBI.multiply(amountRemaining, JSBI.subtract(MAX_FEE, JSBI.BigInt(feePips))),\n MAX_FEE\n );\n returnValues.amountIn = zeroForOne\n ? SqrtPriceMath.getAmount0Delta(sqrtRatioTargetX96, sqrtRatioCurrentX96, liquidity, true)\n : SqrtPriceMath.getAmount1Delta(sqrtRatioCurrentX96, sqrtRatioTargetX96, liquidity, true);\n if (JSBI.greaterThanOrEqual(amountRemainingLessFee, returnValues.amountIn!)) {\n returnValues.sqrtRatioNextX96 = sqrtRatioTargetX96;\n } else {\n returnValues.sqrtRatioNextX96 = SqrtPriceMath.getNextSqrtPriceFromInput(\n sqrtRatioCurrentX96,\n liquidity,\n amountRemainingLessFee,\n zeroForOne\n );\n }\n } else {\n returnValues.amountOut = zeroForOne\n ? SqrtPriceMath.getAmount1Delta(sqrtRatioTargetX96, sqrtRatioCurrentX96, liquidity, false)\n : SqrtPriceMath.getAmount0Delta(sqrtRatioCurrentX96, sqrtRatioTargetX96, liquidity, false);\n if (JSBI.greaterThanOrEqual(JSBI.multiply(amountRemaining, NEGATIVE_ONE), returnValues.amountOut)) {\n returnValues.sqrtRatioNextX96 = sqrtRatioTargetX96;\n } else {\n returnValues.sqrtRatioNextX96 = SqrtPriceMath.getNextSqrtPriceFromOutput(\n sqrtRatioCurrentX96,\n liquidity,\n JSBI.multiply(amountRemaining, NEGATIVE_ONE),\n zeroForOne\n );\n }\n }\n\n const max = JSBI.equal(sqrtRatioTargetX96, returnValues.sqrtRatioNextX96);\n\n if (zeroForOne) {\n returnValues.amountIn =\n max && exactIn\n ? returnValues.amountIn\n : SqrtPriceMath.getAmount0Delta(returnValues.sqrtRatioNextX96, sqrtRatioCurrentX96, liquidity, true);\n returnValues.amountOut =\n max && !exactIn\n ? returnValues.amountOut\n : SqrtPriceMath.getAmount1Delta(returnValues.sqrtRatioNextX96, sqrtRatioCurrentX96, liquidity, false);\n } else {\n returnValues.amountIn =\n max && exactIn\n ? returnValues.amountIn\n : SqrtPriceMath.getAmount1Delta(sqrtRatioCurrentX96, returnValues.sqrtRatioNextX96, liquidity, true);\n returnValues.amountOut =\n max && !exactIn\n ? returnValues.amountOut\n : SqrtPriceMath.getAmount0Delta(sqrtRatioCurrentX96, returnValues.sqrtRatioNextX96, liquidity, false);\n }\n\n if (!exactIn && JSBI.greaterThan(returnValues.amountOut!, JSBI.multiply(amountRemaining, NEGATIVE_ONE))) {\n returnValues.amountOut = JSBI.multiply(amountRemaining, NEGATIVE_ONE);\n }\n\n if (exactIn && JSBI.notEqual(returnValues.sqrtRatioNextX96, sqrtRatioTargetX96)) {\n // we didn't reach the target, so take the remainder of the maximum input as fee\n returnValues.feeAmount = JSBI.subtract(amountRemaining, returnValues.amountIn!);\n } else {\n returnValues.feeAmount = FullMath.mulDivRoundingUp(\n returnValues.amountIn!,\n JSBI.BigInt(feePips),\n JSBI.subtract(MAX_FEE, JSBI.BigInt(feePips))\n );\n }\n\n return [returnValues.sqrtRatioNextX96!, returnValues.amountIn!, returnValues.amountOut!, returnValues.feeAmount!];\n }\n}\n","import { BigintIsh } from \"../core\";\n\n/**\n * Provides information about ticks\n */\nexport interface TickDataProvider {\n /**\n * Return information corresponding to a specific tick\n * @param tick the tick to load\n */\n getTick(tick: number): Promise<{ liquidityNet: BigintIsh }>;\n\n /**\n * Return the next tick that is initialized within a single word\n * @param tick The current tick\n * @param lte Whether the next tick should be lte the current tick\n * @param tickSpacing The tick spacing of the pool\n */\n nextInitializedTickWithinOneWord(\n tick: number,\n lte: boolean,\n tickSpacing: number\n ): Promise<[number, boolean]>;\n}\n\n/**\n * This tick data provider does not know how to fetch any tick data. It throws whenever it is required. Useful if you\n * do not need to load tick data for your use case.\n */\nexport class NoTickDataProvider implements TickDataProvider {\n private static ERROR_MESSAGE = \"No tick data provider was given\";\n async getTick(_tick: number): Promise<{ liquidityNet: BigintIsh }> {\n throw new Error(NoTickDataProvider.ERROR_MESSAGE);\n }\n\n async nextInitializedTickWithinOneWord(\n _tick: number,\n _lte: boolean,\n _tickSpacing: number\n ): Promise<[number, boolean]> {\n throw new Error(NoTickDataProvider.ERROR_MESSAGE);\n }\n}\n","import JSBI from \"jsbi\";\nimport invariant from \"tiny-invariant\";\nimport { Tick } from \"../entities/tick\";\nimport { ZERO } from \"../internalConstants\";\nimport { isSorted } from \"./isSorted\";\n\nfunction tickComparator(a: Tick, b: Tick) {\n return a.index - b.index;\n}\n\n/**\n * Utility methods for interacting with sorted lists of ticks\n */\nexport abstract class TickList {\n /**\n * Cannot be constructed\n */\n private constructor() {}\n\n public static validateList(ticks: Tick[], tickSpacing: number) {\n invariant(tickSpacing > 0, \"TICK_SPACING_NONZERO\");\n // ensure ticks are spaced appropriately\n invariant(\n ticks.every(({ index }) => Math.abs(index) % tickSpacing === 0),\n \"TICK_SPACING\"\n );\n\n // ensure tick liquidity deltas sum to 0\n invariant(\n JSBI.equal(\n ticks.reduce((accumulator, { liquidityNet }) => JSBI.add(accumulator, liquidityNet), ZERO),\n ZERO\n ),\n \"ZERO_NET\"\n );\n\n invariant(isSorted(ticks, tickComparator), \"SORTED\");\n }\n\n public static isBelowSmallest(ticks: readonly Tick[], tick: number): boolean {\n invariant(ticks.length > 0, \"LENGTH\");\n return tick < ticks[0].index;\n }\n\n public static isAtOrAboveLargest(ticks: readonly Tick[], tick: number): boolean {\n invariant(ticks.length > 0, \"LENGTH\");\n return tick >= ticks[ticks.length - 1].index;\n }\n\n public static getTick(ticks: readonly Tick[], index: number): Tick {\n const tick = ticks[this.binarySearch(ticks, index)];\n invariant(tick.index === index, \"NOT_CONTAINED\");\n return tick;\n }\n\n /**\n * Finds the largest tick in the list of ticks that is less than or equal to tick\n * @param ticks list of ticks\n * @param tick tick to find the largest tick that is less than or equal to tick\n * @private\n */\n private static binarySearch(ticks: readonly Tick[], tick: number): number {\n invariant(!this.isBelowSmallest(ticks, tick), \"BELOW_SMALLEST\");\n\n let l = 0;\n let r = ticks.length - 1;\n let i;\n while (true) {\n i = Math.floor((l + r) / 2);\n\n if (ticks[i].index <= tick && (i === ticks.length - 1 || ticks[i + 1].index > tick)) {\n return i;\n }\n\n if (ticks[i].index < tick) {\n l = i + 1;\n } else {\n r = i - 1;\n }\n }\n }\n\n public static nextInitializedTick(ticks: readonly Tick[], tick: number, lte: boolean): Tick {\n if (lte) {\n invariant(!TickList.isBelowSmallest(ticks, tick), \"BELOW_SMALLEST\");\n if (TickList.isAtOrAboveLargest(ticks, tick)) {\n return ticks[ticks.length - 1];\n }\n const index = this.binarySearch(ticks, tick);\n return ticks[index];\n } else {\n invariant(!this.isAtOrAboveLargest(ticks, tick), \"AT_OR_ABOVE_LARGEST\");\n if (this.isBelowSmallest(ticks, tick)) {\n return ticks[0];\n }\n const index = this.binarySearch(ticks, tick);\n return ticks[index + 1];\n }\n }\n\n public static nextInitializedTickWithinOneWord(\n ticks: readonly Tick[],\n tick: number,\n lte: boolean,\n tickSpacing: number\n ): [number, boolean] {\n const compressed = Math.floor(tick / tickSpacing); // matches rounding in the code\n\n if (lte) {\n const wordPos = compressed >> 8;\n const minimum = (wordPos << 8) * tickSpacing;\n\n if (TickList.isBelowSmallest(ticks, tick)) {\n return [minimum, false];\n }\n\n const index = TickList.nextInitializedTick(ticks, tick, lte).index;\n const nextInitializedTick = Math.max(minimum, index);\n return [nextInitializedTick, nextInitializedTick === index];\n } else {\n const wordPos = (compressed + 1) >> 8;\n const maximum = (((wordPos + 1) << 8) - 1) * tickSpacing;\n\n if (this.isAtOrAboveLargest(ticks, tick)) {\n return [maximum, false];\n }\n\n const index = this.nextInitializedTick(ticks, tick, lte).index;\n const nextInitializedTick = Math.min(maximum, index);\n return [nextInitializedTick, nextInitializedTick === index];\n }\n }\n}\n","/**\n * Determines if a tick list is sorted\n * @param list The tick list\n * @param comparator The comparator\n * @returns true if sorted\n */\nexport function isSorted(list: Array, comparator: (a: T, b: T) => number): boolean {\n for (let i = 0; i < list.length - 1; i++) {\n if (comparator(list[i], list[i + 1]) > 0) {\n return false;\n }\n }\n return true;\n}\n","import JSBI from \"jsbi\";\nimport invariant from \"tiny-invariant\";\nimport { BigintIsh } from \"../core\";\nimport { TickMath } from \"../utils/tickMath\";\n\nexport interface TickConstructorArgs {\n index: number;\n liquidityGross: BigintIsh;\n liquidityNet: BigintIsh;\n}\n\nexport class Tick {\n public readonly index: number;\n\n public readonly liquidityGross: JSBI;\n\n public readonly liquidityNet: JSBI;\n\n constructor({ index, liquidityGross, liquidityNet }: TickConstructorArgs) {\n invariant(index >= TickMath.MIN_TICK && index <= TickMath.MAX_TICK, \"TICK\");\n this.index = index;\n this.liquidityGross = JSBI.BigInt(liquidityGross);\n this.liquidityNet = JSBI.BigInt(liquidityNet);\n }\n}\n","import { BigintIsh } from \"../core\";\nimport { TickList } from \"../utils/tickList\";\nimport { Tick, TickConstructorArgs } from \"./tick\";\nimport { TickDataProvider } from \"./tickDataProvider\";\n\n/**\n * A data provider for ticks that is backed by an in-memory array of ticks.\n */\nexport class TickListDataProvider implements TickDataProvider {\n private ticks: readonly Tick[];\n\n constructor(ticks: (Tick | TickConstructorArgs)[], tickSpacing: number) {\n const ticksMapped: Tick[] = ticks.map((t) =>\n t instanceof Tick ? t : new Tick(t)\n );\n TickList.validateList(ticksMapped, tickSpacing);\n this.ticks = ticksMapped;\n }\n\n async getTick(\n tick: number\n ): Promise<{ liquidityNet: BigintIsh; liquidityGross: BigintIsh }> {\n return TickList.getTick(this.ticks, tick);\n }\n\n async nextInitializedTickWithinOneWord(\n tick: number,\n lte: boolean,\n tickSpacing: number\n ): Promise<[number, boolean]> {\n return TickList.nextInitializedTickWithinOneWord(\n this.ticks,\n tick,\n lte,\n tickSpacing\n );\n }\n}\n","import JSBI from \"jsbi\";\nimport invariant from \"tiny-invariant\";\nimport { BigintIsh, Price, Token, CurrencyAmount } from \"../core\";\nimport { FeeAmount, TICK_SPACINGS } from \"../constants\";\nimport { NEGATIVE_ONE, ONE, Q192, ZERO } from \"../internalConstants\";\nimport { computePoolAddress } from \"../utils/computePoolAddress\";\nimport { LiquidityMath } from \"../utils/liquidityMath\";\nimport { SwapMath } from \"../utils/swapMath\";\nimport { TickMath } from \"../utils/tickMath\";\nimport { Tick, TickConstructorArgs } from \"./tick\";\nimport { NoTickDataProvider, TickDataProvider } from \"./tickDataProvider\";\nimport { TickListDataProvider } from \"./tickListDataProvider\";\n\ninterface StepComputations {\n sqrtPriceStartX96: JSBI;\n tickNext: number;\n initialized: boolean;\n sqrtPriceNextX96: JSBI;\n amountIn: JSBI;\n amountOut: JSBI;\n feeAmount: JSBI;\n}\n\n/**\n * By default, pools will not allow operations that require ticks.\n */\nconst NO_TICK_DATA_PROVIDER_DEFAULT = new NoTickDataProvider();\n\n/**\n * Represents a V3 pool\n */\nexport class Pool {\n public readonly id: string;\n\n public readonly token0: Token;\n\n public readonly token1: Token;\n\n public readonly fee: FeeAmount;\n\n public readonly sqrtRatioX96: JSBI;\n\n public readonly liquidity: JSBI;\n\n public readonly tickCurrent: number;\n\n public readonly tickDataProvider: TickDataProvider;\n\n private _token0Price?: Price;\n\n private _token1Price?: Price;\n\n public static getAddress(tokenA: Token, tokenB: Token, fee: FeeAmount): string {\n return computePoolAddress({\n fee,\n tokenA,\n tokenB,\n });\n }\n\n /**\n * Construct a pool\n * @param tokenA One of the tokens in the pool\n * @param tokenB The other token in the pool\n * @param fee The fee in hundredths of a bips of the input amount of every swap that is collected by the pool\n * @param sqrtRatioX96 The sqrt of the current ratio of amounts of token1 to token0\n * @param liquidity The current value of in range liquidity\n * @param tickCurrent The current tick of the pool\n * @param ticks The current state of the pool ticks or a data provider that can return tick data\n */\n public constructor(\n id: string,\n tokenA: Token,\n tokenB: Token,\n fee: FeeAmount,\n sqrtRatioX96: BigintIsh,\n liquidity: BigintIsh,\n tickCurrent: number,\n ticks: TickDataProvider | (Tick | TickConstructorArgs)[] = NO_TICK_DATA_PROVIDER_DEFAULT,\n ) {\n invariant(Number.isInteger(fee) && fee < 1_000_000, \"FEE\");\n\n // const tickCurrentSqrtRatioX96 = TickMath.getSqrtRatioAtTick(tickCurrent);\n // const nextTickSqrtRatioX96 = TickMath.getSqrtRatioAtTick(tickCurrent + 1);\n\n // invariant(\n // JSBI.greaterThanOrEqual(\n // JSBI.BigInt(sqrtRatioX96),\n // tickCurrentSqrtRatioX96\n // ) &&\n // JSBI.lessThanOrEqual(JSBI.BigInt(sqrtRatioX96), nextTickSqrtRatioX96),\n // \"PRICE_BOUNDS\"\n // );\n // always create a copy of the list since we want the pool's tick list to be immutable\n [this.token0, this.token1] = tokenA.sortsBefore(tokenB) ? [tokenA, tokenB] : [tokenB, tokenA];\n this.id = id;\n this.fee = fee;\n this.sqrtRatioX96 = JSBI.BigInt(sqrtRatioX96);\n this.liquidity = JSBI.BigInt(liquidity);\n this.tickCurrent = tickCurrent;\n this.tickDataProvider = Array.isArray(ticks) ? new TickListDataProvider(ticks, TICK_SPACINGS[fee]) : ticks;\n }\n\n /**\n * Returns true if the token is either token0 or token1\n * @param token The token to check\n * @returns True if token is either token0 or token\n */\n public involvesToken(token: Token): boolean {\n return token.equals(this.token0) || token.equals(this.token1);\n }\n\n /**\n * Returns the current mid price of the pool in terms of token0, i.e. the ratio of token1 over token0\n */\n public get token0Price(): Price {\n if (!this._token0Price) {\n this._token0Price = new Price(\n this.token0,\n this.token1,\n Q192,\n JSBI.multiply(this.sqrtRatioX96, this.sqrtRatioX96),\n );\n }\n\n return this._token0Price;\n }\n\n /**\n * Returns the current mid price of the pool in terms of token1, i.e. the ratio of token0 over token1\n */\n public get token1Price(): Price {\n if (!this._token1Price) {\n this._token1Price = new Price(\n this.token1,\n this.token0,\n JSBI.multiply(this.sqrtRatioX96, this.sqrtRatioX96),\n Q192,\n );\n }\n\n return this._token1Price;\n }\n\n /**\n * Return the price of the given token in terms of the other token in the pool.\n * @param token The token to return price of\n * @returns The price of the given token, in terms of the other.\n */\n public priceOf(token: Token): Price {\n invariant(this.involvesToken(token), \"TOKEN\");\n return token.equals(this.token0) ? this.token0Price : this.token1Price;\n }\n\n /**\n * Given an input amount of a token, return the computed output amount, and a pool with state updated after the trade\n * @param inputAmount The input amount for which to quote the output amount\n * @param sqrtPriceLimitX96 The Q64.96 sqrt price limit\n * @returns The output amount and the pool with updated state\n */\n public async getOutputAmount(\n inputAmount: CurrencyAmount,\n sqrtPriceLimitX96?: JSBI,\n ): Promise<[CurrencyAmount, Pool]> {\n invariant(this.involvesToken(inputAmount.currency), \"TOKEN\");\n\n const zeroForOne = inputAmount.currency.equals(this.token0);\n\n const {\n amountCalculated: outputAmount,\n sqrtRatioX96,\n liquidity,\n tickCurrent,\n } = await this.swap(zeroForOne, inputAmount.quotient, sqrtPriceLimitX96);\n const outputToken = zeroForOne ? this.token1 : this.token0;\n return [\n CurrencyAmount.fromRawAmount(outputToken, JSBI.multiply(outputAmount, NEGATIVE_ONE)),\n new Pool(\n this.id,\n this.token0,\n this.token1,\n this.fee,\n sqrtRatioX96,\n liquidity,\n tickCurrent,\n this.tickDataProvider,\n ),\n ];\n }\n\n /**\n * Given a desired output amount of a token, return the computed input amount and a pool with state updated after the trade\n * @param outputAmount the output amount for which to quote the input amount\n * @param sqrtPriceLimitX96 The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this value after the swap. If one for zero, the price cannot be greater than this value after the swap\n * @returns The input amount and the pool with updated state\n */\n public async getInputAmount(\n outputAmount: CurrencyAmount,\n sqrtPriceLimitX96?: JSBI,\n ): Promise<[CurrencyAmount, Pool]> {\n invariant(outputAmount.currency.isToken && this.involvesToken(outputAmount.currency), \"TOKEN\");\n\n const zeroForOne = outputAmount.currency.equals(this.token1);\n\n const {\n amountCalculated: inputAmount,\n sqrtRatioX96,\n liquidity,\n tickCurrent,\n } = await this.swap(zeroForOne, JSBI.multiply(outputAmount.quotient, NEGATIVE_ONE), sqrtPriceLimitX96);\n const inputToken = zeroForOne ? this.token0 : this.token1;\n return [\n CurrencyAmount.fromRawAmount(inputToken, inputAmount),\n new Pool(\n this.id,\n this.token0,\n this.token1,\n this.fee,\n sqrtRatioX96,\n liquidity,\n tickCurrent,\n this.tickDataProvider,\n ),\n ];\n }\n\n /**\n * Executes a swap\n * @param zeroForOne Whether the amount in is token0 or token1\n * @param amountSpecified The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\n * @param sqrtPriceLimitX96 The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this value after the swap. If one for zero, the price cannot be greater than this value after the swap\n * @returns amountCalculated\n * @returns sqrtRatioX96\n * @returns liquidity\n * @returns tickCurrent\n */\n private async swap(\n zeroForOne: boolean,\n amountSpecified: JSBI,\n _sqrtPriceLimitX96?: JSBI,\n ): Promise<{\n amountCalculated: JSBI;\n sqrtRatioX96: JSBI;\n liquidity: JSBI;\n tickCurrent: number;\n }> {\n let sqrtPriceLimitX96 = _sqrtPriceLimitX96;\n\n if (!sqrtPriceLimitX96)\n sqrtPriceLimitX96 = zeroForOne\n ? JSBI.add(TickMath.MIN_SQRT_RATIO, ONE)\n : JSBI.subtract(TickMath.MAX_SQRT_RATIO, ONE);\n\n if (zeroForOne) {\n invariant(JSBI.greaterThan(sqrtPriceLimitX96, TickMath.MIN_SQRT_RATIO), \"RATIO_MIN\");\n invariant(JSBI.lessThan(sqrtPriceLimitX96, this.sqrtRatioX96), \"RATIO_CURRENT\");\n } else {\n invariant(JSBI.lessThan(sqrtPriceLimitX96, TickMath.MAX_SQRT_RATIO), \"RATIO_MAX\");\n invariant(JSBI.greaterThan(sqrtPriceLimitX96, this.sqrtRatioX96), \"RATIO_CURRENT\");\n }\n\n const exactInput = JSBI.greaterThanOrEqual(amountSpecified, ZERO);\n\n // keep track of swap state\n\n const state = {\n amountSpecifiedRemaining: amountSpecified,\n amountCalculated: ZERO,\n sqrtPriceX96: this.sqrtRatioX96,\n tick: this.tickCurrent,\n liquidity: this.liquidity,\n };\n\n // start swap while loop\n while (JSBI.notEqual(state.amountSpecifiedRemaining, ZERO) && state.sqrtPriceX96 !== sqrtPriceLimitX96) {\n const step: Partial = {};\n step.sqrtPriceStartX96 = state.sqrtPriceX96;\n\n // because each iteration of the while loop rounds, we can't optimize this code (relative to the smart contract)\n // by simply traversing to the next available tick, we instead need to exactly replicate\n // tickBitmap.nextInitializedTickWithinOneWord\n [step.tickNext, step.initialized] = await this.tickDataProvider.nextInitializedTickWithinOneWord(\n state.tick,\n zeroForOne,\n this.tickSpacing,\n );\n\n if (step.tickNext < TickMath.MIN_TICK) {\n step.tickNext = TickMath.MIN_TICK;\n } else if (step.tickNext > TickMath.MAX_TICK) {\n step.tickNext = TickMath.MAX_TICK;\n }\n\n step.sqrtPriceNextX96 = TickMath.getSqrtRatioAtTick(step.tickNext);\n [state.sqrtPriceX96, step.amountIn, step.amountOut, step.feeAmount] = SwapMath.computeSwapStep(\n state.sqrtPriceX96,\n (\n zeroForOne\n ? JSBI.lessThan(step.sqrtPriceNextX96, sqrtPriceLimitX96)\n : JSBI.greaterThan(step.sqrtPriceNextX96, sqrtPriceLimitX96)\n )\n ? sqrtPriceLimitX96\n : step.sqrtPriceNextX96,\n state.liquidity,\n state.amountSpecifiedRemaining,\n this.fee,\n );\n\n if (exactInput) {\n state.amountSpecifiedRemaining = JSBI.subtract(\n state.amountSpecifiedRemaining,\n JSBI.add(step.amountIn, step.feeAmount),\n );\n state.amountCalculated = JSBI.subtract(state.amountCalculated, step.amountOut);\n } else {\n state.amountSpecifiedRemaining = JSBI.add(state.amountSpecifiedRemaining, step.amountOut);\n state.amountCalculated = JSBI.add(state.amountCalculated, JSBI.add(step.amountIn, step.feeAmount));\n }\n\n // TODO\n if (JSBI.equal(state.sqrtPriceX96, step.sqrtPriceNextX96)) {\n // if the tick is initialized, run the tick transition\n if (step.initialized) {\n let liquidityNet = JSBI.BigInt((await this.tickDataProvider.getTick(step.tickNext)).liquidityNet);\n // if we're moving leftward, we interpret liquidityNet as the opposite sign\n // safe because liquidityNet cannot be type(int128).min\n if (zeroForOne) liquidityNet = JSBI.multiply(liquidityNet, NEGATIVE_ONE);\n\n state.liquidity = LiquidityMath.addDelta(state.liquidity, liquidityNet);\n }\n\n state.tick = zeroForOne ? step.tickNext - 1 : step.tickNext;\n } else if (state.sqrtPriceX96 !== step.sqrtPriceStartX96) {\n // recompute unless we're on a lower tick boundary (i.e. already transitioned ticks), and haven't moved\n state.tick = TickMath.getTickAtSqrtRatio(state.sqrtPriceX96);\n }\n }\n\n return {\n amountCalculated: state.amountCalculated,\n sqrtRatioX96: state.sqrtPriceX96,\n liquidity: state.liquidity,\n tickCurrent: state.tick,\n };\n }\n\n public get tickSpacing(): number {\n return TICK_SPACINGS[this.fee];\n }\n}\n","import { Token } from \"../core\";\nimport { FeeAmount } from \"../constants\";\n\n/**\n * Computes a pool address\n * @param token0 The first token of the pair, irrespective of sort order\n * @param token1 The second token of the pair, irrespective of sort order\n * @param fee The fee tier of the pool\n * @returns The pool address\n */\nexport function computePoolAddress({\n tokenA,\n tokenB,\n fee,\n}: {\n tokenA: Token;\n tokenB: Token;\n fee: FeeAmount;\n}): string {\n const [token0, token1] = tokenA.sortsBefore(tokenB)\n ? [tokenA, tokenB]\n : [tokenB, tokenA]; // does safety checks\n\n return `${token0.address}_${token1.address}_${fee}`;\n}\n\nexport function computePoolAddressFromTokenAddress(\n token0Address: string,\n token1Address: string,\n fee: number\n): string | undefined {\n if (!token0Address || !token1Address || !fee) return undefined;\n return `${token0Address}_${token1Address}_${fee}`;\n}\n","import { BigintIsh } from \"../core\";\nimport JSBI from \"jsbi\";\nimport { Q96 } from \"../internalConstants\";\n\n/**\n * Returns an imprecise maximum amount of liquidity received for a given amount of token 0.\n * This function is available to accommodate LiquidityAmounts#getLiquidityForAmount0 in the v3 periphery,\n * which could be more precise by at least 32 bits by dividing by Q64 instead of Q96 in the intermediate step,\n * and shifting the subtracted ratio left by 32 bits. This imprecise calculation will likely be replaced in a future\n * v3 router contract.\n * @param sqrtRatioAX96 The price at the lower boundary\n * @param sqrtRatioBX96 The price at the upper boundary\n * @param amount0 The token0 amount\n * @returns liquidity for amount0, imprecise\n */\nfunction maxLiquidityForAmount0Imprecise(\n sqrtRatioAX96: JSBI,\n sqrtRatioBX96: JSBI,\n amount0: BigintIsh\n): JSBI {\n if (JSBI.greaterThan(sqrtRatioAX96, sqrtRatioBX96)) {\n [sqrtRatioAX96, sqrtRatioBX96] = [sqrtRatioBX96, sqrtRatioAX96];\n }\n const intermediate = JSBI.divide(\n JSBI.multiply(sqrtRatioAX96, sqrtRatioBX96),\n Q96\n );\n return JSBI.divide(\n JSBI.multiply(JSBI.BigInt(amount0), intermediate),\n JSBI.subtract(sqrtRatioBX96, sqrtRatioAX96)\n );\n}\n\n/**\n * Returns a precise maximum amount of liquidity received for a given amount of token 0 by dividing by Q64 instead of Q96 in the intermediate step,\n * and shifting the subtracted ratio left by 32 bits.\n * @param sqrtRatioAX96 The price at the lower boundary\n * @param sqrtRatioBX96 The price at the upper boundary\n * @param amount0 The token0 amount\n * @returns liquidity for amount0, precise\n */\nfunction maxLiquidityForAmount0Precise(\n sqrtRatioAX96: JSBI,\n sqrtRatioBX96: JSBI,\n amount0: BigintIsh\n): JSBI {\n if (JSBI.greaterThan(sqrtRatioAX96, sqrtRatioBX96)) {\n [sqrtRatioAX96, sqrtRatioBX96] = [sqrtRatioBX96, sqrtRatioAX96];\n }\n\n const numerator = JSBI.multiply(\n JSBI.multiply(JSBI.BigInt(amount0), sqrtRatioAX96),\n sqrtRatioBX96\n );\n const denominator = JSBI.multiply(\n Q96,\n JSBI.subtract(sqrtRatioBX96, sqrtRatioAX96)\n );\n\n return JSBI.divide(numerator, denominator);\n}\n\n/**\n * Computes the maximum amount of liquidity received for a given amount of token1\n * @param sqrtRatioAX96 The price at the lower tick boundary\n * @param sqrtRatioBX96 The price at the upper tick boundary\n * @param amount1 The token1 amount\n * @returns liquidity for amount1\n */\nfunction maxLiquidityForAmount1(\n sqrtRatioAX96: JSBI,\n sqrtRatioBX96: JSBI,\n amount1: BigintIsh\n): JSBI {\n if (JSBI.greaterThan(sqrtRatioAX96, sqrtRatioBX96)) {\n [sqrtRatioAX96, sqrtRatioBX96] = [sqrtRatioBX96, sqrtRatioAX96];\n }\n return JSBI.divide(\n JSBI.multiply(JSBI.BigInt(amount1), Q96),\n JSBI.subtract(sqrtRatioBX96, sqrtRatioAX96)\n );\n}\n\n/**\n * Computes the maximum amount of liquidity received for a given amount of token0, token1,\n * and the prices at the tick boundaries.\n * @param sqrtRatioCurrentX96 the current price\n * @param sqrtRatioAX96 price at lower boundary\n * @param sqrtRatioBX96 price at upper boundary\n * @param amount0 token0 amount\n * @param amount1 token1 amount\n * @param useFullPrecision if false, liquidity will be maximized according to what the router can calculate,\n * not what core can theoretically support\n */\nexport function maxLiquidityForAmounts(\n sqrtRatioCurrentX96: JSBI,\n sqrtRatioAX96: JSBI,\n sqrtRatioBX96: JSBI,\n amount0: BigintIsh,\n amount1: BigintIsh,\n useFullPrecision: boolean\n): JSBI {\n if (JSBI.greaterThan(sqrtRatioAX96, sqrtRatioBX96)) {\n [sqrtRatioAX96, sqrtRatioBX96] = [sqrtRatioBX96, sqrtRatioAX96];\n }\n\n const maxLiquidityForAmount0 = useFullPrecision\n ? maxLiquidityForAmount0Precise\n : maxLiquidityForAmount0Imprecise;\n\n if (JSBI.lessThanOrEqual(sqrtRatioCurrentX96, sqrtRatioAX96)) {\n return maxLiquidityForAmount0(sqrtRatioAX96, sqrtRatioBX96, amount0);\n } else if (JSBI.lessThan(sqrtRatioCurrentX96, sqrtRatioBX96)) {\n const liquidity0 = maxLiquidityForAmount0(\n sqrtRatioCurrentX96,\n sqrtRatioBX96,\n amount0\n );\n const liquidity1 = maxLiquidityForAmount1(\n sqrtRatioAX96,\n sqrtRatioCurrentX96,\n amount1\n );\n return JSBI.lessThan(liquidity0, liquidity1) ? liquidity0 : liquidity1;\n } else {\n return maxLiquidityForAmount1(sqrtRatioAX96, sqrtRatioBX96, amount1);\n }\n}\n","import JSBI from \"jsbi\";\nimport invariant from \"tiny-invariant\";\nimport { BigintIsh, MaxUint256, Percent, Price, CurrencyAmount, Token } from \"../core\";\nimport { ZERO } from \"../internalConstants\";\nimport { maxLiquidityForAmounts } from \"../utils/maxLiquidityForAmounts\";\nimport { tickToPrice } from \"../utils/priceTickConversions\";\nimport { SqrtPriceMath } from \"../utils/sqrtPriceMath\";\nimport { TickMath } from \"../utils/tickMath\";\nimport { encodeSqrtRatioX96 } from \"../utils/encodeSqrtRatioX96\";\nimport { Pool } from \"./pool\";\n\ninterface PositionConstructorArgs {\n pool: Pool;\n tickLower: number;\n tickUpper: number;\n liquidity: BigintIsh;\n}\n\n/**\n * Represents a position on a ICPSwap V3 Pool\n */\nexport class Position {\n public readonly pool: Pool;\n\n public readonly tickLower: number;\n\n public readonly tickUpper: number;\n\n public readonly liquidity: JSBI;\n\n // cached resuts for the getters\n private _token0Amount: CurrencyAmount | null = null;\n\n private _token1Amount: CurrencyAmount | null = null;\n\n private _mintAmounts: Readonly<{ amount0: JSBI; amount1: JSBI }> | null = null;\n\n /**\n * Constructs a position for a given pool with the given liquidity\n * @param pool For which pool the liquidity is assigned\n * @param liquidity The amount of liquidity that is in the position\n * @param tickLower The lower tick of the position\n * @param tickUpper The upper tick of the position\n */\n public constructor({ pool, liquidity, tickLower, tickUpper }: PositionConstructorArgs) {\n invariant(tickLower < tickUpper, \"TICK_ORDER\");\n invariant(tickLower >= TickMath.MIN_TICK && tickLower % pool.tickSpacing === 0, \"TICK_LOWER\");\n invariant(tickUpper <= TickMath.MAX_TICK && tickUpper % pool.tickSpacing === 0, \"TICK_UPPER\");\n\n this.pool = pool;\n this.tickLower = tickLower;\n this.tickUpper = tickUpper;\n this.liquidity = JSBI.BigInt(liquidity);\n }\n\n /**\n * Returns the price of token0 at the lower tick\n */\n public get token0PriceLower(): Price {\n return tickToPrice(this.pool.token0, this.pool.token1, this.tickLower);\n }\n\n /**\n * Returns the price of token0 at the upper tick\n */\n public get token0PriceUpper(): Price {\n return tickToPrice(this.pool.token0, this.pool.token1, this.tickUpper);\n }\n\n /**\n * Returns the amount of token0 that this position's liquidity could be burned for at the current pool price\n */\n public get amount0(): CurrencyAmount {\n if (this._token0Amount === null) {\n if (this.pool.tickCurrent < this.tickLower) {\n this._token0Amount = CurrencyAmount.fromRawAmount(\n this.pool.token0,\n SqrtPriceMath.getAmount0Delta(\n TickMath.getSqrtRatioAtTick(this.tickLower),\n TickMath.getSqrtRatioAtTick(this.tickUpper),\n this.liquidity,\n false,\n ),\n );\n } else if (this.pool.tickCurrent < this.tickUpper) {\n this._token0Amount = CurrencyAmount.fromRawAmount(\n this.pool.token0,\n SqrtPriceMath.getAmount0Delta(\n this.pool.sqrtRatioX96,\n TickMath.getSqrtRatioAtTick(this.tickUpper),\n this.liquidity,\n false,\n ),\n );\n } else {\n this._token0Amount = CurrencyAmount.fromRawAmount(this.pool.token0, ZERO);\n }\n }\n return this._token0Amount;\n }\n\n /**\n * Returns the amount of token1 that this position's liquidity could be burned for at the current pool price\n */\n public get amount1(): CurrencyAmount {\n if (this._token1Amount === null) {\n if (this.pool.tickCurrent < this.tickLower) {\n this._token1Amount = CurrencyAmount.fromRawAmount(this.pool.token1, ZERO);\n } else if (this.pool.tickCurrent < this.tickUpper) {\n this._token1Amount = CurrencyAmount.fromRawAmount(\n this.pool.token1,\n SqrtPriceMath.getAmount1Delta(\n TickMath.getSqrtRatioAtTick(this.tickLower),\n this.pool.sqrtRatioX96,\n this.liquidity,\n false,\n ),\n );\n } else {\n this._token1Amount = CurrencyAmount.fromRawAmount(\n this.pool.token1,\n SqrtPriceMath.getAmount1Delta(\n TickMath.getSqrtRatioAtTick(this.tickLower),\n TickMath.getSqrtRatioAtTick(this.tickUpper),\n this.liquidity,\n false,\n ),\n );\n }\n }\n return this._token1Amount;\n }\n\n /**\n * Returns the lower and upper sqrt ratios if the price 'slips' up to slippage tolerance percentage\n * @param slippageTolerance The amount by which the price can 'slip' before the transaction will revert\n * @returns The sqrt ratios after slippage\n */\n private ratiosAfterSlippage(slippageTolerance: Percent): {\n sqrtRatioX96Lower: JSBI;\n sqrtRatioX96Upper: JSBI;\n } {\n const priceLower = this.pool.token0Price.asFraction.multiply(new Percent(1).subtract(slippageTolerance));\n const priceUpper = this.pool.token0Price.asFraction.multiply(slippageTolerance.add(1));\n let sqrtRatioX96Lower = encodeSqrtRatioX96(priceLower.numerator, priceLower.denominator);\n if (JSBI.lessThanOrEqual(sqrtRatioX96Lower, TickMath.MIN_SQRT_RATIO)) {\n sqrtRatioX96Lower = JSBI.add(TickMath.MIN_SQRT_RATIO, JSBI.BigInt(1));\n }\n let sqrtRatioX96Upper = encodeSqrtRatioX96(priceUpper.numerator, priceUpper.denominator);\n if (JSBI.greaterThanOrEqual(sqrtRatioX96Upper, TickMath.MAX_SQRT_RATIO)) {\n sqrtRatioX96Upper = JSBI.subtract(TickMath.MAX_SQRT_RATIO, JSBI.BigInt(1));\n }\n return {\n sqrtRatioX96Lower,\n sqrtRatioX96Upper,\n };\n }\n\n /**\n * Returns the minimum amounts that must be sent in order to safely mint the amount of liquidity held by the position\n * with the given slippage tolerance\n * @param slippageTolerance Tolerance of unfavorable slippage from the current price\n * @returns The amounts, with slippage\n */\n public mintAmountsWithSlippage(slippageTolerance: Percent): Readonly<{ amount0: JSBI; amount1: JSBI }> {\n // get lower/upper prices\n const { sqrtRatioX96Upper, sqrtRatioX96Lower } = this.ratiosAfterSlippage(slippageTolerance);\n\n // construct counterfactual pools\n const poolLower = new Pool(\n this.pool.id,\n this.pool.token0,\n this.pool.token1,\n this.pool.fee,\n sqrtRatioX96Lower,\n 0 /* liquidity doesn't matter */,\n TickMath.getTickAtSqrtRatio(sqrtRatioX96Lower),\n );\n const poolUpper = new Pool(\n this.pool.id,\n this.pool.token0,\n this.pool.token1,\n this.pool.fee,\n sqrtRatioX96Upper,\n 0 /* liquidity doesn't matter */,\n TickMath.getTickAtSqrtRatio(sqrtRatioX96Upper),\n );\n\n // because the router is imprecise, we need to calculate the position that will be created (assuming no slippage)\n const positionThatWillBeCreated = Position.fromAmounts({\n pool: this.pool,\n tickLower: this.tickLower,\n tickUpper: this.tickUpper,\n ...this.mintAmounts, // the mint amounts are what will be passed as calldata\n useFullPrecision: false,\n });\n\n // we want the smaller amounts...\n // ...which occurs at the upper price for amount0...\n const { amount0 } = new Position({\n pool: poolUpper,\n liquidity: positionThatWillBeCreated.liquidity,\n tickLower: this.tickLower,\n tickUpper: this.tickUpper,\n }).mintAmounts;\n // ...and the lower for amount1\n const { amount1 } = new Position({\n pool: poolLower,\n liquidity: positionThatWillBeCreated.liquidity,\n tickLower: this.tickLower,\n tickUpper: this.tickUpper,\n }).mintAmounts;\n\n return { amount0, amount1 };\n }\n\n /**\n * Returns the minimum amounts that should be requested in order to safely burn the amount of liquidity held by the\n * position with the given slippage tolerance\n * @param slippageTolerance tolerance of unfavorable slippage from the current price\n * @returns The amounts, with slippage\n */\n public burnAmountsWithSlippage(slippageTolerance: Percent): Readonly<{ amount0: JSBI; amount1: JSBI }> {\n // get lower/upper prices\n const { sqrtRatioX96Upper, sqrtRatioX96Lower } = this.ratiosAfterSlippage(slippageTolerance);\n\n // construct counterfactual pools\n const poolLower = new Pool(\n this.pool.id,\n this.pool.token0,\n this.pool.token1,\n this.pool.fee,\n sqrtRatioX96Lower,\n 0 /* liquidity doesn't matter */,\n TickMath.getTickAtSqrtRatio(sqrtRatioX96Lower),\n );\n const poolUpper = new Pool(\n this.pool.id,\n this.pool.token0,\n this.pool.token1,\n this.pool.fee,\n sqrtRatioX96Upper,\n 0 /* liquidity doesn't matter */,\n TickMath.getTickAtSqrtRatio(sqrtRatioX96Upper),\n );\n\n // we want the smaller amounts...\n // ...which occurs at the upper price for amount0...\n const amount0 = new Position({\n pool: poolUpper,\n liquidity: this.liquidity,\n tickLower: this.tickLower,\n tickUpper: this.tickUpper,\n }).amount0;\n // ...and the lower for amount1\n const amount1 = new Position({\n pool: poolLower,\n liquidity: this.liquidity,\n tickLower: this.tickLower,\n tickUpper: this.tickUpper,\n }).amount1;\n\n return { amount0: amount0.quotient, amount1: amount1.quotient };\n }\n\n /**\n * Returns the minimum amounts that must be sent in order to mint the amount of liquidity held by the position at\n * the current price for the pool\n */\n public get mintAmounts(): Readonly<{ amount0: JSBI; amount1: JSBI }> {\n if (this._mintAmounts === null) {\n if (this.pool.tickCurrent < this.tickLower) {\n return {\n amount0: SqrtPriceMath.getAmount0Delta(\n TickMath.getSqrtRatioAtTick(this.tickLower),\n TickMath.getSqrtRatioAtTick(this.tickUpper),\n this.liquidity,\n true,\n ),\n amount1: ZERO,\n };\n } if (this.pool.tickCurrent < this.tickUpper) {\n return {\n amount0: SqrtPriceMath.getAmount0Delta(\n this.pool.sqrtRatioX96,\n TickMath.getSqrtRatioAtTick(this.tickUpper),\n this.liquidity,\n true,\n ),\n amount1: SqrtPriceMath.getAmount1Delta(\n TickMath.getSqrtRatioAtTick(this.tickLower),\n this.pool.sqrtRatioX96,\n this.liquidity,\n true,\n ),\n };\n } \n return {\n amount0: ZERO,\n amount1: SqrtPriceMath.getAmount1Delta(\n TickMath.getSqrtRatioAtTick(this.tickLower),\n TickMath.getSqrtRatioAtTick(this.tickUpper),\n this.liquidity,\n true,\n ),\n };\n \n }\n return this._mintAmounts;\n }\n\n /**\n * Computes the maximum amount of liquidity received for a given amount of token0, token1,\n * and the prices at the tick boundaries.\n * @param pool The pool for which the position should be created\n * @param tickLower The lower tick of the position\n * @param tickUpper The upper tick of the position\n * @param amount0 token0 amount\n * @param amount1 token1 amount\n * @param useFullPrecision If false, liquidity will be maximized according to what the router can calculate,\n * not what core can theoretically support\n * @returns The amount of liquidity for the position\n */\n public static fromAmounts({\n pool,\n tickLower,\n tickUpper,\n amount0,\n amount1,\n useFullPrecision,\n }: {\n pool: Pool;\n tickLower: number;\n tickUpper: number;\n amount0: BigintIsh;\n amount1: BigintIsh;\n useFullPrecision: boolean;\n }) {\n const sqrtRatioAX96 = TickMath.getSqrtRatioAtTick(tickLower);\n const sqrtRatioBX96 = TickMath.getSqrtRatioAtTick(tickUpper);\n return new Position({\n pool,\n tickLower,\n tickUpper,\n liquidity: maxLiquidityForAmounts(\n pool.sqrtRatioX96,\n sqrtRatioAX96,\n sqrtRatioBX96,\n amount0,\n amount1,\n useFullPrecision,\n ),\n });\n }\n\n /**\n * Computes a position with the maximum amount of liquidity received for a given amount of token0, assuming an unlimited amount of token1\n * @param pool The pool for which the position is created\n * @param tickLower The lower tick\n * @param tickUpper The upper tick\n * @param amount0 The desired amount of token0\n * @param useFullPrecision If true, liquidity will be maximized according to what the router can calculate,\n * not what core can theoretically support\n * @returns The position\n */\n public static fromAmount0({\n pool,\n tickLower,\n tickUpper,\n amount0,\n useFullPrecision,\n }: {\n pool: Pool;\n tickLower: number;\n tickUpper: number;\n amount0: BigintIsh;\n useFullPrecision: boolean;\n }) {\n return Position.fromAmounts({\n pool,\n tickLower,\n tickUpper,\n amount0,\n amount1: MaxUint256,\n useFullPrecision,\n });\n }\n\n /**\n * Computes a position with the maximum amount of liquidity received for a given amount of token1, assuming an unlimited amount of token0\n * @param pool The pool for which the position is created\n * @param tickLower The lower tick\n * @param tickUpper The upper tick\n * @param amount1 The desired amount of token1\n * @returns The position\n */\n public static fromAmount1({\n pool,\n tickLower,\n tickUpper,\n amount1,\n }: {\n pool: Pool;\n tickLower: number;\n tickUpper: number;\n amount1: BigintIsh;\n }) {\n // this function always uses full precision,\n return Position.fromAmounts({\n pool,\n tickLower,\n tickUpper,\n amount0: MaxUint256,\n amount1,\n useFullPrecision: true,\n });\n }\n}\n","import JSBI from \"jsbi\";\n\n// constants used internally but not expected to be used externally\nexport const NEGATIVE_ONE = JSBI.BigInt(-1);\nexport const ZERO = JSBI.BigInt(0);\nexport const ONE = JSBI.BigInt(1);\n\n// used in liquidity amount math\nexport const Q96 = JSBI.exponentiate(JSBI.BigInt(2), JSBI.BigInt(96));\nexport const Q192 = JSBI.exponentiate(Q96, JSBI.BigInt(2));\n","import JSBI from \"jsbi\";\nimport invariant from \"tiny-invariant\";\n\nexport const MAX_SAFE_INTEGER = JSBI.BigInt(Number.MAX_SAFE_INTEGER);\n\nconst ZERO = JSBI.BigInt(0);\nconst ONE = JSBI.BigInt(1);\nconst TWO = JSBI.BigInt(2);\n\n/**\n * Computes floor(sqrt(value))\n * @param value the value for which to compute the square root, rounded down\n */\nexport function sqrt(value: JSBI): JSBI {\n invariant(JSBI.greaterThanOrEqual(value, ZERO), \"NEGATIVE\");\n\n // rely on built in sqrt if possible\n if (JSBI.lessThan(value, MAX_SAFE_INTEGER)) {\n return JSBI.BigInt(Math.floor(Math.sqrt(JSBI.toNumber(value))));\n }\n\n let z: JSBI;\n let x: JSBI;\n z = value;\n x = JSBI.add(JSBI.divide(value, TWO), ONE);\n while (JSBI.lessThan(x, z)) {\n z = x;\n x = JSBI.divide(JSBI.add(JSBI.divide(value, x), x), TWO);\n }\n return z;\n}\n","import JSBI from \"jsbi\";\nimport { BigintIsh, sqrt } from \"../core\";\n\n/**\n * Returns the sqrt ratio as a Q64.96 corresponding to a given ratio of amount1 and amount0\n * @param amount1 The numerator amount i.e., the amount of token1\n * @param amount0 The denominator amount i.e., the amount of token0\n * @returns The sqrt ratio\n */\n\nexport function encodeSqrtRatioX96(\n amount1: BigintIsh,\n amount0: BigintIsh\n): JSBI {\n const numerator = JSBI.leftShift(JSBI.BigInt(amount1), JSBI.BigInt(192));\n const denominator = JSBI.BigInt(amount0);\n const ratioX192 = JSBI.divide(numerator, denominator);\n return sqrt(ratioX192);\n}\n","import JSBI from \"jsbi\";\nimport { ONE, ZERO } from \"../internalConstants\";\n\nexport abstract class FullMath {\n /**\n * Cannot be constructed.\n */\n private constructor() {}\n\n public static mulDivRoundingUp(a: JSBI, b: JSBI, denominator: JSBI): JSBI {\n const product = JSBI.multiply(a, b);\n let result = JSBI.divide(product, denominator);\n if (JSBI.notEqual(JSBI.remainder(product, denominator), ZERO)) result = JSBI.add(result, ONE);\n return result;\n }\n}\n","import invariant from \"tiny-invariant\";\nimport { TickMath } from \"./tickMath\";\n\n/**\n * Returns the closest tick that is nearest a given tick and usable for the given tick spacing\n * @param tick the target tick\n * @param tickSpacing the spacing of the pool\n */\nexport function nearestUsableTick(tick: number, tickSpacing: number) {\n invariant(Number.isInteger(tick) && Number.isInteger(tickSpacing), \"INTEGERS\");\n invariant(tickSpacing > 0, \"TICK_SPACING\");\n invariant(tick >= TickMath.MIN_TICK && tick <= TickMath.MAX_TICK, \"TICK_BOUND\");\n const rounded = Math.round(tick / tickSpacing) * tickSpacing;\n if (rounded < TickMath.MIN_TICK) return rounded + tickSpacing;\n else if (rounded > TickMath.MAX_TICK) return rounded - tickSpacing;\n else return rounded;\n}\n","import { Price, Token } from \"../core\";\nimport JSBI from \"jsbi\";\nimport { Q192 } from \"../internalConstants\";\nimport { encodeSqrtRatioX96 } from \"./encodeSqrtRatioX96\";\nimport { TickMath } from \"./tickMath\";\n\n/**\n * Returns a price object corresponding to the input tick and the base/quote token\n * Inputs must be tokens because the address order is used to interpret the price represented by the tick\n * @param baseToken the base token of the price\n * @param quoteToken the quote token of the price\n * @param tick the tick for which to return the price\n */\nexport function tickToPrice(\n baseToken: Token,\n quoteToken: Token,\n tick: number\n): Price {\n const sqrtRatioX96 = TickMath.getSqrtRatioAtTick(tick);\n\n const ratioX192 = JSBI.multiply(sqrtRatioX96, sqrtRatioX96);\n\n return baseToken.sortsBefore(quoteToken)\n ? new Price(baseToken, quoteToken, Q192, ratioX192)\n : new Price(baseToken, quoteToken, ratioX192, Q192);\n}\n\n/**\n * Returns the first tick for which the given price is greater than or equal to the tick price\n * @param price for which to return the closest tick that represents a price less than or equal to the input price,\n * i.e. the price of the returned tick is less than or equal to the input price\n */\nexport function priceToClosestTick(price: Price): number {\n const sorted = price.baseCurrency.sortsBefore(price.quoteCurrency);\n\n const sqrtRatioX96 = sorted\n ? encodeSqrtRatioX96(price.numerator, price.denominator)\n : encodeSqrtRatioX96(price.denominator, price.numerator);\n\n let tick = TickMath.getTickAtSqrtRatio(sqrtRatioX96);\n const nextTickPrice = tickToPrice(\n price.baseCurrency,\n price.quoteCurrency,\n tick + 1\n );\n if (sorted) {\n if (!price.lessThan(nextTickPrice)) {\n tick++;\n }\n } else {\n if (!price.greaterThan(nextTickPrice)) {\n tick++;\n }\n }\n return tick;\n}\n","import { MaxUint256 } from \"../core/constants\";\nimport JSBI from \"jsbi\";\nimport invariant from \"tiny-invariant\";\nimport { ONE, ZERO, Q96 } from \"../internalConstants\";\nimport { FullMath } from \"./fullMath\";\n\nconst MaxUint160 = JSBI.subtract(\n JSBI.exponentiate(JSBI.BigInt(2), JSBI.BigInt(160)),\n ONE\n);\n\nfunction multiplyIn256(x: JSBI, y: JSBI): JSBI {\n const product = JSBI.multiply(x, y);\n return JSBI.bitwiseAnd(product, MaxUint256);\n}\n\nfunction addIn256(x: JSBI, y: JSBI): JSBI {\n const sum = JSBI.add(x, y);\n return JSBI.bitwiseAnd(sum, MaxUint256);\n}\n\nexport abstract class SqrtPriceMath {\n /**\n * Cannot be constructed.\n */\n private constructor() {}\n\n public static getAmount0Delta(\n sqrtRatioAX96: JSBI,\n sqrtRatioBX96: JSBI,\n liquidity: JSBI,\n roundUp: boolean\n ): JSBI {\n if (JSBI.greaterThan(sqrtRatioAX96, sqrtRatioBX96)) {\n [sqrtRatioAX96, sqrtRatioBX96] = [sqrtRatioBX96, sqrtRatioAX96];\n }\n\n const numerator1 = JSBI.leftShift(liquidity, JSBI.BigInt(96));\n const numerator2 = JSBI.subtract(sqrtRatioBX96, sqrtRatioAX96);\n\n return roundUp\n ? FullMath.mulDivRoundingUp(\n FullMath.mulDivRoundingUp(numerator1, numerator2, sqrtRatioBX96),\n ONE,\n sqrtRatioAX96\n )\n : JSBI.divide(\n JSBI.divide(JSBI.multiply(numerator1, numerator2), sqrtRatioBX96),\n sqrtRatioAX96\n );\n }\n\n public static getAmount1Delta(\n sqrtRatioAX96: JSBI,\n sqrtRatioBX96: JSBI,\n liquidity: JSBI,\n roundUp: boolean\n ): JSBI {\n if (JSBI.greaterThan(sqrtRatioAX96, sqrtRatioBX96)) {\n [sqrtRatioAX96, sqrtRatioBX96] = [sqrtRatioBX96, sqrtRatioAX96];\n }\n\n return roundUp\n ? FullMath.mulDivRoundingUp(\n liquidity,\n JSBI.subtract(sqrtRatioBX96, sqrtRatioAX96),\n Q96\n )\n : JSBI.divide(\n JSBI.multiply(liquidity, JSBI.subtract(sqrtRatioBX96, sqrtRatioAX96)),\n Q96\n );\n }\n\n public static getNextSqrtPriceFromInput(\n sqrtPX96: JSBI,\n liquidity: JSBI,\n amountIn: JSBI,\n zeroForOne: boolean\n ): JSBI {\n invariant(\n JSBI.greaterThan(sqrtPX96, ZERO),\n \"Get Next Sqrt Price From Input\"\n );\n invariant(\n JSBI.greaterThan(liquidity, ZERO),\n \"Get Next Sqrt Price From Input\"\n );\n\n return zeroForOne\n ? this.getNextSqrtPriceFromAmount0RoundingUp(\n sqrtPX96,\n liquidity,\n amountIn,\n true\n )\n : this.getNextSqrtPriceFromAmount1RoundingDown(\n sqrtPX96,\n liquidity,\n amountIn,\n true\n );\n }\n\n public static getNextSqrtPriceFromOutput(\n sqrtPX96: JSBI,\n liquidity: JSBI,\n amountOut: JSBI,\n zeroForOne: boolean\n ): JSBI {\n invariant(JSBI.greaterThan(sqrtPX96, ZERO), \"getNextSqrtPriceFromOutput\");\n invariant(JSBI.greaterThan(liquidity, ZERO), \"getNextSqrtPriceFromOutput\");\n\n return zeroForOne\n ? this.getNextSqrtPriceFromAmount1RoundingDown(\n sqrtPX96,\n liquidity,\n amountOut,\n false\n )\n : this.getNextSqrtPriceFromAmount0RoundingUp(\n sqrtPX96,\n liquidity,\n amountOut,\n false\n );\n }\n\n private static getNextSqrtPriceFromAmount0RoundingUp(\n sqrtPX96: JSBI,\n liquidity: JSBI,\n amount: JSBI,\n add: boolean\n ): JSBI {\n if (JSBI.equal(amount, ZERO)) return sqrtPX96;\n const numerator1 = JSBI.leftShift(liquidity, JSBI.BigInt(96));\n\n if (add) {\n let product = multiplyIn256(amount, sqrtPX96);\n if (JSBI.equal(JSBI.divide(product, amount), sqrtPX96)) {\n const denominator = addIn256(numerator1, product);\n if (JSBI.greaterThanOrEqual(denominator, numerator1)) {\n return FullMath.mulDivRoundingUp(numerator1, sqrtPX96, denominator);\n }\n }\n\n return FullMath.mulDivRoundingUp(\n numerator1,\n ONE,\n JSBI.add(JSBI.divide(numerator1, sqrtPX96), amount)\n );\n } else {\n let product = multiplyIn256(amount, sqrtPX96);\n\n invariant(\n JSBI.equal(JSBI.divide(product, amount), sqrtPX96),\n \"getNextSqrtPriceFromAmount0RoundingUp\"\n );\n invariant(\n JSBI.greaterThan(numerator1, product),\n \"getNextSqrtPriceFromAmount0RoundingUp\"\n );\n const denominator = JSBI.subtract(numerator1, product);\n return FullMath.mulDivRoundingUp(numerator1, sqrtPX96, denominator);\n }\n }\n\n private static getNextSqrtPriceFromAmount1RoundingDown(\n sqrtPX96: JSBI,\n liquidity: JSBI,\n amount: JSBI,\n add: boolean\n ): JSBI {\n if (add) {\n const quotient = JSBI.lessThanOrEqual(amount, MaxUint160)\n ? JSBI.divide(JSBI.leftShift(amount, JSBI.BigInt(96)), liquidity)\n : JSBI.divide(JSBI.multiply(amount, Q96), liquidity);\n\n return JSBI.add(sqrtPX96, quotient);\n } else {\n const quotient = FullMath.mulDivRoundingUp(amount, Q96, liquidity);\n\n invariant(\n JSBI.greaterThan(sqrtPX96, quotient),\n \"getNextSqrtPriceFromAmount1RoundingDown\"\n );\n return JSBI.subtract(sqrtPX96, quotient);\n }\n }\n}\n","import { MaxUint256 } from \"../core/constants\";\nimport JSBI from \"jsbi\";\nimport invariant from \"tiny-invariant\";\nimport { ZERO } from \"../internalConstants\";\n\nconst TWO = JSBI.BigInt(2);\nconst POWERS_OF_2 = [128, 64, 32, 16, 8, 4, 2, 1].map(\n (pow: number): [number, JSBI] => [\n pow,\n JSBI.exponentiate(TWO, JSBI.BigInt(pow)),\n ]\n);\n\nexport function mostSignificantBit(x: JSBI): number {\n invariant(JSBI.greaterThan(x, ZERO), \"ZERO\");\n invariant(JSBI.lessThanOrEqual(x, MaxUint256), \"MAX\");\n\n let msb: number = 0;\n for (const [power, min] of POWERS_OF_2) {\n if (JSBI.greaterThanOrEqual(x, min)) {\n x = JSBI.signedRightShift(x, JSBI.BigInt(power));\n msb += power;\n }\n }\n return msb;\n}\n","import { MaxUint256 } from \"../core/constants\";\nimport JSBI from \"jsbi\";\nimport invariant from \"tiny-invariant\";\nimport { ONE, ZERO } from \"../internalConstants\";\nimport { mostSignificantBit } from \"./mostSignificantBit\";\n\nfunction mulShift(val: JSBI, mulBy: string): JSBI {\n return JSBI.signedRightShift(\n JSBI.multiply(val, JSBI.BigInt(mulBy)),\n JSBI.BigInt(128)\n );\n}\n\nconst Q32 = JSBI.exponentiate(JSBI.BigInt(2), JSBI.BigInt(32));\n\nexport abstract class TickMath {\n /**\n * Cannot be constructed.\n */\n private constructor() {}\n\n /**\n * The minimum tick that can be used on any pool.\n */\n public static MIN_TICK: number = -887272;\n /**\n * The maximum tick that can be used on any pool.\n */\n public static MAX_TICK: number = -TickMath.MIN_TICK;\n\n /**\n * The sqrt ratio corresponding to the minimum tick that could be used on any pool.\n */\n public static MIN_SQRT_RATIO: JSBI = JSBI.BigInt(\"4295128739\");\n /**\n * The sqrt ratio corresponding to the maximum tick that could be used on any pool.\n */\n public static MAX_SQRT_RATIO: JSBI = JSBI.BigInt(\n \"1461446703485210103287273052203988822378723970342\"\n );\n\n /**\n * Returns the sqrt ratio as a Q64.96 for the given tick. The sqrt ratio is computed as sqrt(1.0001)^tick\n * @param tick the tick for which to compute the sqrt ratio\n */\n public static getSqrtRatioAtTick(tick: number): JSBI {\n invariant(\n tick >= TickMath.MIN_TICK &&\n tick <= TickMath.MAX_TICK &&\n Number.isInteger(tick),\n \"TICK\"\n );\n const absTick: number = tick < 0 ? tick * -1 : tick;\n\n let ratio: JSBI =\n (absTick & 0x1) != 0\n ? JSBI.BigInt(\"0xfffcb933bd6fad37aa2d162d1a594001\")\n : JSBI.BigInt(\"0x100000000000000000000000000000000\");\n if ((absTick & 0x2) != 0)\n ratio = mulShift(ratio, \"0xfff97272373d413259a46990580e213a\");\n if ((absTick & 0x4) != 0)\n ratio = mulShift(ratio, \"0xfff2e50f5f656932ef12357cf3c7fdcc\");\n if ((absTick & 0x8) != 0)\n ratio = mulShift(ratio, \"0xffe5caca7e10e4e61c3624eaa0941cd0\");\n if ((absTick & 0x10) != 0)\n ratio = mulShift(ratio, \"0xffcb9843d60f6159c9db58835c926644\");\n if ((absTick & 0x20) != 0)\n ratio = mulShift(ratio, \"0xff973b41fa98c081472e6896dfb254c0\");\n if ((absTick & 0x40) != 0)\n ratio = mulShift(ratio, \"0xff2ea16466c96a3843ec78b326b52861\");\n if ((absTick & 0x80) != 0)\n ratio = mulShift(ratio, \"0xfe5dee046a99a2a811c461f1969c3053\");\n if ((absTick & 0x100) != 0)\n ratio = mulShift(ratio, \"0xfcbe86c7900a88aedcffc83b479aa3a4\");\n if ((absTick & 0x200) != 0)\n ratio = mulShift(ratio, \"0xf987a7253ac413176f2b074cf7815e54\");\n if ((absTick & 0x400) != 0)\n ratio = mulShift(ratio, \"0xf3392b0822b70005940c7a398e4b70f3\");\n if ((absTick & 0x800) != 0)\n ratio = mulShift(ratio, \"0xe7159475a2c29b7443b29c7fa6e889d9\");\n if ((absTick & 0x1000) != 0)\n ratio = mulShift(ratio, \"0xd097f3bdfd2022b8845ad8f792aa5825\");\n if ((absTick & 0x2000) != 0)\n ratio = mulShift(ratio, \"0xa9f746462d870fdf8a65dc1f90e061e5\");\n if ((absTick & 0x4000) != 0)\n ratio = mulShift(ratio, \"0x70d869a156d2a1b890bb3df62baf32f7\");\n if ((absTick & 0x8000) != 0)\n ratio = mulShift(ratio, \"0x31be135f97d08fd981231505542fcfa6\");\n if ((absTick & 0x10000) != 0)\n ratio = mulShift(ratio, \"0x9aa508b5b7a84e1c677de54f3e99bc9\");\n if ((absTick & 0x20000) != 0)\n ratio = mulShift(ratio, \"0x5d6af8dedb81196699c329225ee604\");\n if ((absTick & 0x40000) != 0)\n ratio = mulShift(ratio, \"0x2216e584f5fa1ea926041bedfe98\");\n if ((absTick & 0x80000) != 0)\n ratio = mulShift(ratio, \"0x48a170391f7dc42444e8fa2\");\n\n if (tick > 0) ratio = JSBI.divide(MaxUint256, ratio);\n\n // back to Q96\n return JSBI.greaterThan(JSBI.remainder(ratio, Q32), ZERO)\n ? JSBI.add(JSBI.divide(ratio, Q32), ONE)\n : JSBI.divide(ratio, Q32);\n }\n\n /**\n * Returns the tick corresponding to a given sqrt ratio, s.t. #getSqrtRatioAtTick(tick) <= sqrtRatioX96\n * and #getSqrtRatioAtTick(tick + 1) > sqrtRatioX96\n * @param sqrtRatioX96 the sqrt ratio as a Q64.96 for which to compute the tick\n */\n public static getTickAtSqrtRatio(sqrtRatioX96: JSBI): number {\n invariant(\n JSBI.greaterThanOrEqual(sqrtRatioX96, TickMath.MIN_SQRT_RATIO) &&\n JSBI.lessThan(sqrtRatioX96, TickMath.MAX_SQRT_RATIO),\n \"SQRT_RATIO\"\n );\n\n const sqrtRatioX128 = JSBI.leftShift(sqrtRatioX96, JSBI.BigInt(32));\n\n const msb = mostSignificantBit(sqrtRatioX128);\n\n let r: JSBI;\n if (JSBI.greaterThanOrEqual(JSBI.BigInt(msb), JSBI.BigInt(128))) {\n r = JSBI.signedRightShift(sqrtRatioX128, JSBI.BigInt(msb - 127));\n } else {\n r = JSBI.leftShift(sqrtRatioX128, JSBI.BigInt(127 - msb));\n }\n\n let log_2: JSBI = JSBI.leftShift(\n JSBI.subtract(JSBI.BigInt(msb), JSBI.BigInt(128)),\n JSBI.BigInt(64)\n );\n\n for (let i = 0; i < 14; i++) {\n r = JSBI.signedRightShift(JSBI.multiply(r, r), JSBI.BigInt(127));\n const f = JSBI.signedRightShift(r, JSBI.BigInt(128));\n log_2 = JSBI.bitwiseOr(log_2, JSBI.leftShift(f, JSBI.BigInt(63 - i)));\n r = JSBI.signedRightShift(r, f);\n }\n\n const log_sqrt10001 = JSBI.multiply(\n log_2,\n JSBI.BigInt(\"255738958999603826347141\")\n );\n\n const tickLow = JSBI.toNumber(\n JSBI.signedRightShift(\n JSBI.subtract(\n log_sqrt10001,\n JSBI.BigInt(\"3402992956809132418596140100660247210\")\n ),\n JSBI.BigInt(128)\n )\n );\n const tickHigh = JSBI.toNumber(\n JSBI.signedRightShift(\n JSBI.add(\n log_sqrt10001,\n JSBI.BigInt(\"291339464771989622907027621153398088495\")\n ),\n JSBI.BigInt(128)\n )\n );\n\n return tickLow === tickHigh\n ? tickLow\n : JSBI.lessThanOrEqual(\n TickMath.getSqrtRatioAtTick(tickHigh),\n sqrtRatioX96\n )\n ? tickHigh\n : tickLow;\n }\n}\n","import { BigNumber } from \"bignumber.js\";\nimport { Override, ActorIdentity, StatusResult, PaginationResult } from \"@icpswap/types\";\nimport { ActorSubclass } from \"@dfinity/agent\";\nimport { Principal } from \"@dfinity/principal\";\nimport type { TokenTransaction } from \"@icpswap/types\";\nimport {\n TokenHolder,\n BalanceRequest as _BalanceRequest,\n TokenTransferRequest as _TransferRequest,\n SetFeeToRequest as _SetFeeToRequest,\n TransactionRequest as _TransactionRequest,\n Transaction,\n TokenAllowanceRequest,\n TokenApproveRequest,\n Metadata,\n} from \"./types\";\n\nexport type BaseTokenRequestNoParams = {\n canisterId: string;\n};\n\nexport type BaseTokenRequest = {\n canisterId: string;\n params: T;\n};\n\nexport type BaseTokenIdentityRequest = {\n canisterId: string;\n params: T;\n identity: ActorIdentity;\n};\n\nexport type BaseTokenResult = Promise>;\n\nexport interface TotalHoldersRequest {\n canisterId: string;\n}\n\nexport type TotalHoldersResult = BaseTokenResult;\n\nexport type HoldersRequest = BaseTokenRequest<{\n offset: bigint;\n limit: bigint;\n}>;\nexport type HoldersResult = BaseTokenResult>;\n\nexport type SupplyRequest = { canisterId: string };\nexport type SupplyResult = Promise>;\n\nexport type BalanceRequest = BaseTokenRequest<_BalanceRequest>;\nexport type BalanceResult = Promise>;\n\nexport type TransferRequest = BaseTokenIdentityRequest<_TransferRequest>;\nexport type TransferResult = BaseTokenResult;\n\nexport type GetFeeRequest = BaseTokenRequestNoParams;\nexport type GetFeeResult = BaseTokenResult;\nexport type SetFeeRequest = BaseTokenIdentityRequest;\nexport type SetFeeResult = BaseTokenResult;\nexport type SetFeeToRequest = BaseTokenIdentityRequest<_SetFeeToRequest>;\nexport type SetFeeToResult = BaseTokenResult;\n\nexport type TransactionRequest = BaseTokenRequest<\n Override<\n _TransactionRequest,\n {\n capId?: string;\n getCapRootId?: (canisterId: string) => Promise;\n getCapUserTransactions?: (\n canisterId: string,\n principal: Principal,\n witness: boolean,\n offset: number,\n ) => Promise<{\n totalElements: number;\n offset: number;\n limit: number;\n content: TokenTransaction[];\n }>;\n getCapTransactions?: (\n canisterId: string,\n witness: boolean,\n offset: number,\n ) => Promise<{\n totalElements: number;\n offset: number;\n limit: number;\n content: TokenTransaction[];\n }>;\n witness?: boolean;\n }\n >\n>;\nexport type TransactionResult = BaseTokenResult>;\n\nexport type ApproveRequest = BaseTokenIdentityRequest;\nexport type ApproveResult = BaseTokenResult;\nexport type AllowanceRequest = BaseTokenRequest;\nexport type AllowanceResult = BaseTokenResult;\n\nexport type MetadataRequest = BaseTokenRequestNoParams;\nexport type MetadataResult = BaseTokenResult;\n\nexport type SetLogoRequest = BaseTokenIdentityRequest;\nexport type SetLogoResult = BaseTokenResult;\nexport type LogoRequest = BaseTokenRequestNoParams;\nexport type LogoResult = BaseTokenResult;\n\nexport type ActualReceivedByTransferRequest = {\n amount: BigNumber;\n fee: BigNumber;\n canisterId: string;\n};\nexport type ActualReceivedByTransferResult = BigNumber;\n\nexport abstract class BaseTokenAdapter {\n public readonly actor: (canister?: string, identity?: ActorIdentity) => Promise>;\n\n constructor({ actor }: { actor: (canister?: string, identity?: ActorIdentity) => Promise> }) {\n this.actor = actor;\n }\n\n public abstract totalHolders({ canisterId }: TotalHoldersRequest): TotalHoldersResult;\n\n public abstract holders({ canisterId, params }: HoldersRequest): HoldersResult;\n\n public abstract supply({ canisterId }: SupplyRequest): SupplyResult;\n\n public abstract balance({ canisterId, params }: BalanceRequest): BalanceResult;\n\n public abstract transfer(request: TransferRequest): TransferResult;\n\n public abstract setFee(request: SetFeeRequest): SetFeeResult;\n\n public abstract setFeeTo(request: SetFeeToRequest): SetFeeToResult;\n\n public abstract transactions(request: TransactionRequest): TransactionResult;\n\n public abstract approve(request: ApproveRequest): ApproveResult;\n\n public abstract allowance(request: AllowanceRequest): AllowanceResult;\n\n public abstract metadata(request: MetadataRequest): MetadataResult;\n\n public abstract setLogo(request: SetLogoRequest): SetLogoResult;\n\n public abstract actualReceivedByTransfer(request: ActualReceivedByTransferRequest): ActualReceivedByTransferResult;\n\n public abstract getMintingAccount({\n canisterId,\n }: {\n canisterId: string;\n }): BaseTokenResult<{ owner: string; sub: number[] | undefined }>;\n}\n","import { resultFormat } from \"@icpswap/utils\";\nimport { PaginationResult, ResultStatus } from \"@icpswap/types\";\nimport { dip20, dip20BalanceActor, dip20SupplyActor } from \"@icpswap/actor\";\nimport { Principal } from \"@dfinity/principal\";\nimport { DIP20, type DIP20TokenInfo } from \"@icpswap/candid\";\nimport { TokenHolder, Transaction, DIP20Metadata, Metadata } from \"./types\";\nimport {\n BaseTokenAdapter,\n HoldersRequest,\n TotalHoldersRequest,\n SupplyRequest,\n BalanceRequest,\n TransferRequest,\n SetFeeRequest,\n SetFeeToRequest,\n GetFeeRequest,\n TransactionRequest,\n ApproveRequest,\n AllowanceRequest,\n MetadataRequest,\n SetLogoRequest,\n ActualReceivedByTransferRequest,\n BaseTokenResult,\n} from \"./BaseTokenAdapter\";\n\nexport class DIP20TokenAdapter extends BaseTokenAdapter {\n public async holders({ canisterId, params }: HoldersRequest) {\n const totalHolder = (await this.totalHolders({ canisterId })).data;\n\n if (totalHolder) {\n const _holders = (await (await this.actor(canisterId)).getHolders(params.offset, params.limit)) as Array<\n [Principal, bigint]\n >;\n\n const holders = _holders.map((holder) => {\n return {\n balance: holder[1],\n account: holder[0].toString(),\n };\n }) as TokenHolder[];\n\n return {\n status: ResultStatus.OK,\n message: \"\",\n data: {\n content: holders,\n totalElements: Number(totalHolder),\n limit: Number(params.limit),\n offset: Number(params.offset),\n } as PaginationResult,\n };\n }\n\n return {\n status: ResultStatus.OK,\n data: {\n content: [] as TokenHolder[],\n totalElements: 0,\n limit: 10,\n offset: 0,\n } as PaginationResult,\n message: \"\",\n };\n }\n\n public async totalHolders({ canisterId }: TotalHoldersRequest) {\n let tokenInfo: null | DIP20TokenInfo = null;\n\n try {\n tokenInfo = (await (await this.actor(canisterId)).getTokenInfo()) as DIP20TokenInfo;\n return resultFormat(tokenInfo.holderNumber);\n } catch (error) {\n console.error(error);\n }\n\n return resultFormat(undefined);\n }\n\n public async supply({ canisterId }: SupplyRequest) {\n try {\n return resultFormat(await (await this.actor(canisterId)).totalSupply());\n } catch (error) {\n console.error(error);\n return resultFormat(await (await dip20SupplyActor(canisterId)).totalSupply());\n }\n }\n\n public async balance({ canisterId, params }: BalanceRequest) {\n if (params.user.principal) {\n // DIP20 not support subaccount balance\n if (params.subaccount) {\n return resultFormat(BigInt(0));\n }\n\n let balance = BigInt(0);\n\n try {\n balance = (await (await this.actor(canisterId)).balanceOf(params.user.principal)) as bigint;\n } catch (error) {\n console.error(error);\n balance = (await (await dip20BalanceActor(canisterId)).balanceOf(params.user.principal)) as bigint;\n }\n\n return resultFormat(balance);\n }\n\n return resultFormat(BigInt(0));\n }\n\n public async transfer({ canisterId, identity, params }: TransferRequest) {\n if (!params.to.principal) throw Error(\"no user principal\");\n\n const result = await (await this.actor(canisterId, identity)).transfer(params.to.principal, params.amount);\n return resultFormat(result);\n }\n\n public async getFee({ canisterId }: GetFeeRequest) {\n const metadata = await (await this.actor(canisterId)).getMetadata();\n return resultFormat(metadata.fee);\n }\n\n public async setFee({ canisterId, identity, params }: SetFeeRequest) {\n return resultFormat(await (await this.actor(canisterId, identity)).setFee(params));\n }\n\n public async setFeeTo({ canisterId, identity, params }: SetFeeToRequest) {\n if (!params.principal) throw Error(\"no principal\");\n return resultFormat(await (await this.actor(canisterId, identity)).setFeeTo(params.principal));\n }\n\n public async transactions({ canisterId, params }: TransactionRequest) {\n return resultFormat>({\n Ok: {\n content: [],\n totalElements: BigInt(0),\n offset: BigInt(0),\n limit: BigInt(10),\n },\n });\n }\n\n public async approve({ canisterId, params, identity }: ApproveRequest) {\n // 10 times approve amount to fix dip20 insufficient allowance amount\n // TODO: A better way to fix it\n return resultFormat(\n await (await this.actor(canisterId, identity)).approve(params.spender, params.allowance * BigInt(10)),\n );\n }\n\n public async allowance({ canisterId, params }: AllowanceRequest) {\n if (!params.owner.principal) {\n throw Error(\"no principal\");\n }\n\n return resultFormat(await (await this.actor(canisterId)).allowance(params.owner.principal, params.spender));\n }\n\n public async metadata({ canisterId }: MetadataRequest) {\n const metadata = (await (await this.actor(canisterId)).getMetadata()) as DIP20Metadata;\n\n return {\n status: ResultStatus.OK,\n data: {\n decimals: metadata.decimals,\n metadata: [],\n name: metadata.name,\n symbol: metadata.symbol,\n logo: metadata.logo,\n fee: metadata.fee,\n } as Metadata,\n message: \"\",\n };\n }\n\n public async setLogo({ canisterId, params, identity }: SetLogoRequest) {\n return resultFormat(await (await this.actor(canisterId, identity)).setLogo(params));\n }\n\n public actualReceivedByTransfer({ amount }: ActualReceivedByTransferRequest) {\n return amount;\n }\n\n public async getMintingAccount({\n canisterId,\n }: {\n canisterId: string;\n }): BaseTokenResult<{ owner: string; sub: number[] | undefined }> {\n return {\n status: ResultStatus.OK,\n data: undefined,\n message: \"\",\n };\n }\n}\n\nexport const DIP20Adapter = new DIP20TokenAdapter({\n actor: dip20,\n});\n","import { dip20 } from \"@icpswap/actor\";\nimport { DIP20TokenAdapter } from \"./DIP20Adapter\";\n\nexport class DIP20WICPTokenAdapter extends DIP20TokenAdapter {}\n\nexport const DIP20WICPAdapter = new DIP20WICPTokenAdapter({\n actor: dip20,\n});\n","import { dip20 } from \"@icpswap/actor\";\nimport { DIP20TokenAdapter } from \"./DIP20Adapter\";\n\nexport class DIP20XTCTokenAdapter extends DIP20TokenAdapter {}\n\nexport const DIP20XTCAdapter = new DIP20XTCTokenAdapter({\n actor: dip20,\n});\n","import { resultFormat, availableArgsNull, principalToAccount, isOkSubAccount, isBigIntMemo } from \"@icpswap/utils\";\nimport { SubAccount } from \"@dfinity/ledger-icp\";\nimport { PaginationResult, ResultStatus } from \"@icpswap/types\";\nimport { ext } from \"@icpswap/actor\";\nimport { EXTToken, TokenUser } from \"@icpswap/candid\";\nimport { TokenHolder, Transaction, Metadata } from \"./types\";\nimport {\n BaseTokenAdapter,\n HoldersRequest,\n TotalHoldersRequest,\n SupplyRequest,\n BalanceRequest,\n TransferRequest,\n SetFeeRequest,\n SetFeeToRequest,\n TransactionRequest,\n ApproveRequest,\n AllowanceRequest,\n MetadataRequest,\n SetLogoRequest,\n ActualReceivedByTransferRequest,\n BaseTokenResult,\n} from \"./BaseTokenAdapter\";\n\nexport class EXTTokenAdapter extends BaseTokenAdapter {\n public async holders({ canisterId, params }: HoldersRequest) {\n return resultFormat>(\n await (\n await this.actor(canisterId)\n ).holders({\n offset: [params.offset],\n limit: [params.limit],\n }),\n );\n }\n\n public async totalHolders({ canisterId }: TotalHoldersRequest) {\n return resultFormat(await (await this.actor(canisterId)).totalHolders());\n }\n\n public async supply({ canisterId }: SupplyRequest) {\n return resultFormat(await (await this.actor(canisterId)).supply());\n }\n\n public async balance({ canisterId, params }: BalanceRequest) {\n if (!params.user.address && !params.user.principal) throw Error(\"no user address or principal\");\n\n let address = \"\";\n\n if (params.user.principal) {\n const sub = params.subaccount ? SubAccount.fromBytes(Uint8Array.from(params.subaccount)) : undefined;\n address = principalToAccount(params.user.principal.toString(), isOkSubAccount(sub) ? sub : undefined);\n } else if (params.user.address) {\n address = params.user.address;\n }\n\n return resultFormat(\n await (\n await this.actor(canisterId)\n ).balance({\n token: params.token,\n user: { address },\n }),\n );\n }\n\n public async transfer({ canisterId, identity, params }: TransferRequest) {\n if (!params.to.address && !params.to.principal) throw Error(\"No to address or principal\");\n if (!params.from.address && !params.from.principal) throw Error(\"No from address or principal\");\n if (isBigIntMemo(params.memo)) throw Error(\"Can't support bigint (memo)\");\n\n const subaccount = params.subaccount ? SubAccount.fromBytes(Uint8Array.from(params.subaccount)) : undefined;\n\n return resultFormat(\n await (\n await this.actor(canisterId, identity)\n ).transfer({\n token: params.token ?? \"\",\n to: params.to.principal\n ? params.subaccount\n ? {\n address: principalToAccount(\n params.to.principal.toString(),\n isOkSubAccount(subaccount) ? subaccount : undefined,\n ),\n }\n : { address: principalToAccount(params.to.principal.toString()) }\n : { address: params.to.address as string },\n from: params.from.principal\n ? { address: principalToAccount(params.from.principal.toString()) }\n : { address: params.from.address as string },\n memo: params.memo ? params.memo : [],\n subaccount: availableArgsNull(undefined),\n nonce: availableArgsNull(params.nonce),\n amount: params.amount,\n notify: params.notify ?? true,\n }),\n );\n }\n\n public async setFee({ canisterId, identity, params }: SetFeeRequest) {\n return resultFormat(await (await this.actor(canisterId, identity)).setFee(params));\n }\n\n public async setFeeTo({ canisterId, identity, params }: SetFeeToRequest) {\n if (!params.address) throw Error(\"no user address\");\n\n return resultFormat(await (await this.actor(canisterId, identity)).setFeeTo({ address: params.address }));\n }\n\n public async transactions({ canisterId, params }: TransactionRequest) {\n let cap_id = params.capId;\n\n if (!cap_id) {\n const extensions = await this.extensions({ canisterId });\n\n if (extensions.includes(\"@ext/cap\")) {\n cap_id = (await params.getCapRootId(canisterId))?.toString();\n }\n }\n\n if (cap_id) {\n if (!params.offset && params.offset !== 0) throw Error(\"no cap offset\");\n\n if (params.user?.principal) {\n return resultFormat>(\n await params.getCapUserTransactions(cap_id, params.user?.principal, params.witness ?? false, params.offset),\n );\n }\n\n return resultFormat>(\n await params.getCapTransactions(cap_id, params.witness ?? false, params.offset),\n );\n }\n\n return resultFormat>(\n await (\n await this.actor(canisterId)\n ).transactions({\n hash: availableArgsNull(params.hash),\n user: availableArgsNull(params.user?.address ? { address: params.user.address } : undefined),\n offset: availableArgsNull(params.offset ? BigInt(params.offset) : null),\n limit: availableArgsNull(params.limit ? BigInt(params.limit) : null),\n index: availableArgsNull(params.index ? BigInt(params.index) : null),\n }),\n );\n }\n\n public async approve({ canisterId, params, identity }: ApproveRequest) {\n return resultFormat(\n await (\n await this.actor(canisterId, identity)\n ).approve({\n subaccount: params.subaccount ? [Array.from(params.subaccount)] : [],\n spender: params.spender,\n allowance: BigInt(Number.MAX_VALUE),\n }),\n );\n }\n\n public async allowance({ canisterId, params }: AllowanceRequest) {\n if (!params.owner.address && !params.owner.principal) throw Error(\"no owner address or principal\");\n\n return resultFormat(\n await (\n await this.actor(canisterId)\n ).allowance({\n owner: params.owner.address ? { address: params.owner.address } : { principal: params.owner.principal! },\n subaccount: params.subaccount ? [Array.from(params.subaccount)] : [],\n spender: params.spender,\n }),\n );\n }\n\n public async metadata({ canisterId }: MetadataRequest) {\n const metadata = resultFormat<{\n fungible: Metadata;\n }>(await (await this.actor(canisterId)).metadata()).data?.fungible;\n const logo = resultFormat(await (await this.actor(canisterId)).logo()).data;\n const fee = resultFormat(await (await this.actor(canisterId)).getFee()).data;\n\n return {\n status: ResultStatus.OK,\n data: {\n ...metadata,\n logo,\n fee,\n } as Metadata,\n message: \"\",\n };\n }\n\n public async setLogo({ canisterId, params, identity }: SetLogoRequest) {\n return resultFormat(await (await this.actor(canisterId, identity)).setLogo(params));\n }\n\n public actualReceivedByTransfer({ amount }: ActualReceivedByTransferRequest) {\n return amount;\n }\n\n public async extensions({ canisterId }: { canisterId: string }) {\n return await (await this.actor(canisterId)).extensions();\n }\n\n public async getMintingAccount({\n canisterId,\n }: {\n canisterId: string;\n }): BaseTokenResult<{ owner: string; sub: number[] | undefined }> {\n return {\n status: ResultStatus.OK,\n data: undefined,\n message: \"\",\n };\n }\n}\n\nexport const EXTAdapter = new EXTTokenAdapter({\n actor: ext,\n});\n","import { resultFormat, availableArgsNull, isBigIntMemo } from \"@icpswap/utils\";\nimport { ledgerService } from \"@icpswap/actor\";\nimport { Ledger } from \"@icpswap/candid\";\nimport { ActorIdentity, PaginationResult, ResultStatus } from \"@icpswap/types\";\nimport { TokenHolder, Transaction, Metadata } from \"./types\";\nimport {\n BaseTokenAdapter,\n BalanceRequest,\n TransferRequest,\n MetadataRequest,\n ActualReceivedByTransferRequest,\n} from \"./BaseTokenAdapter\";\nimport { icrc1Adapter } from \"./ICRC1\";\n\nexport class ICPAdapter extends BaseTokenAdapter {\n public async holders() {\n return {\n status: ResultStatus.OK,\n data: {\n content: [] as TokenHolder[],\n totalElements: 0,\n limit: 10,\n offset: 0,\n } as PaginationResult,\n message: \"\",\n };\n }\n\n public async totalHolders() {\n return resultFormat(undefined);\n }\n\n public async supply() {\n return resultFormat(await (await this.actor()).icrc1_total_supply());\n }\n\n public async balance({ params }: BalanceRequest) {\n if (params.user.address) {\n return resultFormat(\n (\n await (\n await this.actor()\n ).account_balance({\n account: Array.from(Uint8Array.from(Buffer.from(params.user.address, \"hex\"))),\n })\n ).e8s,\n );\n }\n if (params.user.principal) {\n return resultFormat(\n await (\n await this.actor()\n ).icrc1_balance_of({\n owner: params.user.principal,\n subaccount: availableArgsNull>(params.subaccount ? params.subaccount : undefined),\n }),\n );\n }\n\n return resultFormat(BigInt(0));\n }\n\n public async transfer({ canisterId, identity, params }: TransferRequest) {\n if (!params.to.address && !params.to.principal) throw Error(\"No transfer to\");\n\n if (params.to.address) {\n if (params.memo && !isBigIntMemo(params.memo)) throw Error(\"Only bigint support (memo)\");\n\n const result = await (\n await this.actor(canisterId, identity)\n ).transfer({\n to: Array.from(Uint8Array.from(Buffer.from(params.to.address, \"hex\"))),\n memo: (params.memo as bigint) ?? BigInt(0),\n amount: { e8s: params.amount },\n created_at_time: availableArgsNull<{ timestamp_nanos: bigint }>(\n params.create_at_time ? { timestamp_nanos: params.create_at_time } : undefined,\n ),\n from_subaccount: availableArgsNull(params.from_sub_account),\n fee: { e8s: BigInt(10000) },\n });\n\n return resultFormat(result);\n }\n if (params.to.principal) {\n const result = await (\n await this.actor(canisterId, identity)\n ).icrc1_transfer({\n to: {\n owner: params.to.principal,\n subaccount: availableArgsNull>(params.subaccount ? params.subaccount : undefined),\n },\n memo: typeof params.memo === \"bigint\" ? [] : availableArgsNull(params.memo),\n amount: params.amount,\n created_at_time: availableArgsNull(params.create_at_time),\n from_subaccount: availableArgsNull>(\n params.from_sub_account ? params.from_sub_account : undefined,\n ),\n fee: availableArgsNull(null),\n });\n\n return resultFormat(result);\n }\n\n return resultFormat(undefined);\n }\n\n public async getFee() {\n return resultFormat(await (await (await this.actor()).transfer_fee({})).transfer_fee.e8s);\n }\n\n public async setFee() {\n return resultFormat({ err: \"no setFee\" });\n }\n\n public async setFeeTo() {\n return resultFormat({ err: \"no setFeeTo\" });\n }\n\n public async transactions() {\n return resultFormat>({\n content: [],\n totalElements: BigInt(0),\n offset: BigInt(0),\n limit: BigInt(10),\n });\n }\n\n public async approve() {\n return resultFormat({ err: \"no approve\" });\n }\n\n public async allowance() {\n return resultFormat({ err: \"no allowance\" });\n }\n\n public async metadata({ canisterId }: MetadataRequest) {\n const symbol = (await (await this.actor(canisterId)).symbol()).symbol;\n const decimals = (await (await this.actor()).decimals()).decimals;\n const name = \"Internet Computer\";\n const fee = resultFormat(await (await (await this.actor()).transfer_fee({})).transfer_fee.e8s).data;\n\n return {\n status: ResultStatus.OK,\n data: {\n decimals,\n metadata: [],\n name,\n symbol,\n fee: fee ?? BigInt(1000),\n logo: \"\",\n } as Metadata,\n message: \"\",\n };\n }\n\n public async setLogo() {\n return resultFormat({ err: \"no approve\" });\n }\n\n public actualReceivedByTransfer({ amount }: ActualReceivedByTransferRequest) {\n return amount;\n }\n\n public async getMintingAccount({ canisterId }: { canisterId: string }) {\n return await icrc1Adapter.getMintingAccount({ canisterId });\n }\n}\n\nexport const icpAdapter = new ICPAdapter({\n // @ts-ignore\n actor: async (canisterId?: string, identity?: ActorIdentity) => await ledgerService(identity),\n});\n","import { resultFormat, availableArgsNull, isBigIntMemo } from \"@icpswap/utils\";\nimport { PaginationResult, ResultStatus } from \"@icpswap/types\";\nimport { icrc1, icrcArchive } from \"@icpswap/actor\";\nimport { ICRC1_SERVICE, MetadataValue, GetTransactionsResponse, ArchivedTransaction } from \"@icpswap/candid\";\nimport { Principal } from \"@dfinity/principal\";\n\nimport { TokenHolder, Transaction, Metadata } from \"./types\";\nimport {\n BaseTokenAdapter,\n SupplyRequest,\n BalanceRequest,\n TransferRequest,\n GetFeeRequest,\n TransactionRequest,\n MetadataRequest,\n ActualReceivedByTransferRequest,\n} from \"./BaseTokenAdapter\";\nimport { icrcTransactionFormat } from \"./utils\";\n\nexport class ICRC1Adapter extends BaseTokenAdapter {\n public async holders() {\n return {\n status: ResultStatus.OK,\n data: {\n content: [] as TokenHolder[],\n totalElements: 0,\n limit: 10,\n offset: 0,\n } as PaginationResult,\n message: \"\",\n };\n }\n\n public async totalHolders() {\n return resultFormat(undefined);\n }\n\n public async supply({ canisterId }: SupplyRequest) {\n return resultFormat(await (await this.actor(canisterId)).icrc1_total_supply());\n }\n\n public async balance({ canisterId, params }: BalanceRequest) {\n if (params.user.principal) {\n return resultFormat(\n await (\n await this.actor(canisterId)\n ).icrc1_balance_of({\n owner: params.user.principal,\n subaccount: availableArgsNull>(params.subaccount ? params.subaccount : undefined),\n }),\n );\n }\n\n return resultFormat(BigInt(0));\n }\n\n public async transfer({ canisterId, identity, params }: TransferRequest) {\n if (!params.to.principal) throw Error(\"no user principal address\");\n if (isBigIntMemo(params.memo)) throw Error(\"Can't support bigint (memo)\");\n\n const result = await (\n await this.actor(canisterId, identity)\n ).icrc1_transfer({\n to: {\n owner: params.to.principal,\n subaccount: availableArgsNull>(params.subaccount ? params.subaccount : undefined),\n },\n memo: availableArgsNull(params.memo),\n amount: params.amount,\n created_at_time: availableArgsNull(params.create_at_time),\n from_subaccount: availableArgsNull>(params.from_sub_account ? params.from_sub_account : undefined),\n fee: availableArgsNull(params.fee),\n });\n\n return resultFormat(result);\n }\n\n public async getFee({ canisterId }: GetFeeRequest) {\n return resultFormat(await (await this.actor(canisterId)).icrc1_fee());\n }\n\n public async setFee() {\n return resultFormat({ err: \"no setFee\" });\n }\n\n public async setFeeTo() {\n return resultFormat({ err: \"no setFeeTo\" });\n }\n\n public async transactions({ canisterId, params }: TransactionRequest) {\n if (params.offset === undefined || params.limit === undefined) throw Error(\"no offset or limit\");\n\n // To get the total length\n const init_result = resultFormat(\n await (await this.actor(canisterId)).get_transactions({ start: BigInt(0), length: BigInt(10) }),\n ).data;\n\n if (init_result) {\n const { log_length } = init_result;\n\n // The start index of the transactions\n let start_index = Number(log_length) - 1 - params.offset - params.limit;\n\n if (start_index < 0) start_index = 0;\n\n const _result = resultFormat(\n await (\n await this.actor(canisterId)\n ).get_transactions({\n start: BigInt(start_index),\n length: BigInt(params.limit),\n }),\n ).data;\n\n if (_result) {\n const { archived_transactions, transactions: token_canister_transactions } = _result;\n\n let archivedTransactions: ArchivedTransaction[] = [];\n\n if (archived_transactions.length > 0) {\n archivedTransactions = (\n await Promise.all(\n archived_transactions.map(async (ele) => {\n return (\n await (\n await icrcArchive(ele.callback[0].toString())\n ).get_transactions({\n start: ele.start,\n length: ele.length,\n })\n ).transactions;\n }),\n )\n )\n .flat()\n .sort((a, b) => {\n if (a.timestamp < b.timestamp) return -1;\n if (a.timestamp > b.timestamp) return 1;\n return 0;\n });\n }\n\n const transactions = archivedTransactions\n .concat(token_canister_transactions)\n .sort((a, b) => {\n if (a.timestamp < b.timestamp) return -1;\n if (a.timestamp > b.timestamp) return 1;\n return 0;\n })\n .map((ele, index) =>\n // @ts-ignore\n icrcTransactionFormat(ele, BigInt(start_index) + BigInt(index)),\n );\n\n return resultFormat>({\n content: transactions.reverse(),\n totalElements: log_length,\n offset: BigInt(params.offset),\n limit: BigInt(params.limit),\n });\n }\n }\n\n return resultFormat>(undefined);\n }\n\n public async approve() {\n return resultFormat({ err: \"no approve\" });\n }\n\n public async allowance() {\n return resultFormat({ err: \"no allowance\" });\n }\n\n public async metadata({ canisterId }: MetadataRequest) {\n const metadata = resultFormat>(\n await (await this.actor(canisterId)).icrc1_metadata(),\n ).data;\n\n if (!metadata) {\n return {\n status: ResultStatus.ERROR,\n data: undefined,\n message: \"\",\n };\n }\n\n let name = \"\";\n let symbol = \"\";\n let decimals = BigInt(0);\n let fee = BigInt(0);\n let logo = \"\";\n\n for (let i = 0; i < metadata.length; i++) {\n const ele = metadata[i];\n if (ele[0] === \"icrc1:name\") {\n const val = ele[1] as { Text: string };\n name = val.Text;\n } else if (ele[0] === \"icrc1:symbol\") {\n const val = ele[1] as { Text: string };\n symbol = val.Text;\n } else if (ele[0] === \"icrc1:decimals\") {\n const val = ele[1] as { Nat: bigint };\n decimals = val.Nat;\n } else if (ele[0] === \"icrc1:fee\") {\n const val = ele[1] as { Nat: bigint };\n fee = val.Nat;\n } else if (ele[0] === \"icrc1:logo\") {\n const val = ele[1] as { Text: string };\n logo = val.Text;\n }\n }\n\n return {\n status: ResultStatus.OK,\n data: {\n decimals: Number(decimals),\n name,\n symbol,\n fee,\n logo,\n } as Metadata,\n message: \"\",\n };\n }\n\n public async setLogo() {\n return resultFormat({ err: \"no approve\" });\n }\n\n public actualReceivedByTransfer({ amount }: ActualReceivedByTransferRequest) {\n return amount;\n }\n\n public async getMintingAccount({ canisterId }: { canisterId: string }) {\n const result = (await (await this.actor(canisterId)).icrc1_minting_account())[0];\n return resultFormat<{ owner: string; sub: number[] | undefined }>(\n result\n ? { owner: result.owner.toString(), sub: result.subaccount[0] ? [...result.subaccount[0]] : undefined }\n : undefined,\n );\n }\n}\n\nexport const icrc1Adapter = new ICRC1Adapter({\n actor: icrc1,\n});\n","import { enumToString, isOkSubAccount } from \"@icpswap/utils\";\nimport { ICRCTransaction } from \"@icpswap/candid\";\nimport { AccountIdentifier, SubAccount } from \"@dfinity/ledger-icp\";\nimport { Transaction as TokenTransaction } from \"./types\";\n\nexport function icrcTransactionFormat(transaction: ICRCTransaction, index: bigint) {\n const memo = transaction.transfer[0]?.memo.length\n ? transaction.transfer[0]?.memo\n : transaction.burn[0]?.memo.length\n ? transaction.burn[0]?.memo\n : transaction.mint[0]?.memo.length\n ? transaction.mint[0]?.memo\n : undefined;\n\n const from_owner = transaction.transfer[0]?.from.owner ?? transaction.burn[0]?.from.owner;\n const _from_sub = transaction.transfer[0]?.from.subaccount[0] ?? transaction.burn[0]?.from.subaccount[0];\n const to_owner = transaction.transfer[0]?.to.owner ?? transaction.mint[0]?.to.owner;\n const _to_sub = transaction.transfer[0]?.to.subaccount[0] ?? transaction.mint[0]?.to.subaccount[0];\n\n const from_sub = _from_sub ? SubAccount.fromBytes(Uint8Array.from(_from_sub)) : undefined;\n const from_account = from_owner\n ? AccountIdentifier.fromPrincipal({\n principal: from_owner,\n subAccount: isOkSubAccount(from_sub) ? from_sub : undefined,\n })\n : undefined;\n\n const to_sub = _to_sub ? SubAccount.fromBytes(Uint8Array.from(_to_sub)) : undefined;\n const to_account = to_owner\n ? AccountIdentifier.fromPrincipal({\n principal: to_owner,\n subAccount: isOkSubAccount(to_sub) ? to_sub : undefined,\n })\n : undefined;\n\n const feeArray = transaction.transfer[0]?.fee;\n\n return {\n timestamp: transaction.timestamp,\n hash: \"\",\n fee: feeArray ? feeArray[0] : undefined,\n from_owner: from_owner?.toString() ?? \"\",\n from_sub: _from_sub,\n from_account: from_account?.toHex() ?? \"\",\n to_owner: to_owner?.toString() ?? \"\",\n to_sub: _to_sub,\n to_account: to_account?.toHex() ?? \"\",\n transType: enumToString(\n transaction.transfer[0]\n ? { Transfer: null }\n : transaction.burn[0]\n ? { Burn: null }\n : transaction.mint[0]\n ? { Mint: null }\n : { Approve: null },\n ),\n amount: transaction.transfer[0]?.amount ?? transaction.burn[0]?.amount ?? transaction.mint[0]?.amount,\n index,\n memo: memo ? [...memo[0]] : [],\n status: \"\",\n } as TokenTransaction;\n}\n","import { resultFormat, availableArgsNull, isBigIntMemo } from \"@icpswap/utils\";\nimport { PaginationResult, ResultStatus } from \"@icpswap/types\";\nimport { icrc2 } from \"@icpswap/actor\";\nimport { ICRC2 } from \"@icpswap/candid\";\nimport {\n BaseTokenAdapter,\n SupplyRequest,\n BalanceRequest,\n TransferRequest,\n GetFeeRequest,\n TransactionRequest,\n ApproveRequest,\n AllowanceRequest,\n MetadataRequest,\n ActualReceivedByTransferRequest,\n} from \"./BaseTokenAdapter\";\nimport { TokenHolder } from \"./types\";\nimport { icrc1Adapter } from \"./ICRC1\";\n\nexport class ICRC2Adapter extends BaseTokenAdapter {\n public async holders() {\n return {\n status: ResultStatus.OK,\n data: {\n content: [] as TokenHolder[],\n totalElements: 0,\n limit: 10,\n offset: 0,\n } as PaginationResult,\n message: \"\",\n };\n }\n\n public async totalHolders() {\n return resultFormat(undefined);\n }\n\n public async supply({ canisterId }: SupplyRequest) {\n return resultFormat(await (await this.actor(canisterId)).icrc1_total_supply());\n }\n\n public async balance({ canisterId, params }: BalanceRequest) {\n if (params.user.principal) {\n return await icrc1Adapter.balance({ canisterId, params });\n }\n\n return resultFormat(BigInt(0));\n }\n\n public async transfer({ canisterId, identity, params }: TransferRequest) {\n if (!params.to.principal) throw Error(\"no user principal address\");\n if (isBigIntMemo(params.memo)) throw Error(\"Can't support bigint (memo)\");\n\n return await icrc1Adapter.transfer({\n canisterId,\n identity,\n params,\n });\n }\n\n public async getFee({ canisterId }: GetFeeRequest) {\n return await icrc1Adapter.getFee({ canisterId });\n }\n\n public async setFee() {\n return resultFormat({ err: \"no setFee\" });\n }\n\n public async setFeeTo() {\n return resultFormat({ err: \"no setFeeTo\" });\n }\n\n public async transactions({ canisterId, params }: TransactionRequest) {\n return await icrc1Adapter.transactions({ canisterId, params });\n }\n\n public async approve({ canisterId, params, identity }: ApproveRequest) {\n return resultFormat(\n await (\n await this.actor(canisterId, identity)\n ).icrc2_approve({\n spender: {\n owner: params.spender,\n subaccount: availableArgsNull(params.spenderSub ? params.spenderSub : undefined),\n },\n fee: availableArgsNull(params.fee),\n created_at_time: [],\n amount: params.allowance,\n memo: [],\n expected_allowance: availableArgsNull(params.expected_allowance),\n expires_at: availableArgsNull(params.expires_at),\n from_subaccount: availableArgsNull(params.subaccount ? params.subaccount : undefined),\n }),\n );\n }\n\n public async allowance({ canisterId, params }: AllowanceRequest) {\n if (!params.owner.principal) throw Error(\"no principal\");\n\n const result = await (\n await this.actor(canisterId)\n ).icrc2_allowance({\n spender: {\n owner: params.spender,\n subaccount: availableArgsNull>(params.spenderSub ? params.spenderSub : undefined),\n },\n account: {\n owner: params.owner.principal,\n subaccount: availableArgsNull>(params.subaccount ? params.subaccount : undefined),\n },\n });\n\n return resultFormat(result.allowance);\n }\n\n public async metadata({ canisterId }: MetadataRequest) {\n return await icrc1Adapter.metadata({ canisterId });\n }\n\n public async setLogo() {\n return resultFormat({ err: \"no approve\" });\n }\n\n public actualReceivedByTransfer({ amount }: ActualReceivedByTransferRequest) {\n return amount;\n }\n\n public async getMintingAccount({ canisterId }: { canisterId: string }) {\n return await icrc1Adapter.getMintingAccount({ canisterId });\n }\n}\n\nexport const icrc2Adapter = new ICRC2Adapter({\n actor: icrc2,\n});\n","import { ActorIdentity, Override } from \"@icpswap/types\";\nimport {\n HoldersRequest,\n TotalHoldersRequest,\n SupplyRequest,\n BalanceRequest,\n TransferRequest,\n SetFeeRequest,\n SetFeeToRequest,\n TransactionRequest,\n ApproveRequest,\n AllowanceRequest,\n MetadataRequest,\n SetLogoRequest,\n ActualReceivedByTransferRequest,\n} from \"./BaseTokenAdapter\";\nimport { EXTAdapter, EXTTokenAdapter } from \"./EXTAdapter\";\nimport { DIP20Adapter, DIP20TokenAdapter } from \"./DIP20Adapter\";\nimport { DIP20WICPAdapter, DIP20WICPTokenAdapter } from \"./DIP20WICPAdapter\";\nimport { DIP20XTCAdapter, DIP20XTCTokenAdapter } from \"./DIP20XTCAdapter\";\nimport { icrc1Adapter, ICRC1Adapter } from \"./ICRC1\";\nimport { icrc2Adapter, ICRC2Adapter } from \"./ICRC2\";\nimport { icpAdapter, ICPAdapter } from \"./ICP\";\nimport { TOKEN_STANDARD } from \"./types\";\n\nexport type AdapterRequest = T;\n\nexport type AdapterIdentityRequest = Override;\n\nexport type RegisterProps = { canisterId: string; standard: TOKEN_STANDARD }[];\n\nexport class TokenAdapter {\n public canisterAdapters = new Map();\n\n public adapters = new Map<\n TOKEN_STANDARD,\n | DIP20XTCTokenAdapter\n | DIP20WICPTokenAdapter\n | DIP20TokenAdapter\n | EXTTokenAdapter\n | ICRC1Adapter\n | ICRC2Adapter\n | ICPAdapter\n >();\n\n public initialAdapter(\n name: TOKEN_STANDARD,\n adapter:\n | DIP20XTCTokenAdapter\n | DIP20WICPTokenAdapter\n | DIP20TokenAdapter\n | EXTTokenAdapter\n | ICRC1Adapter\n | ICRC2Adapter\n | ICPAdapter,\n ) {\n if (this.adapters.get(name)) throw Error(\"This adapter is already initialed\");\n this.adapters.set(name, adapter);\n }\n\n public register(standards: RegisterProps) {\n standards.forEach(({ standard, canisterId }) => {\n this.canisterAdapters.set(canisterId, standard);\n });\n }\n\n public getAll() {\n return this.canisterAdapters;\n }\n\n public getAdapter(canisterId: string) {\n let standard = this.canisterAdapters.get(canisterId);\n if (!standard) {\n console.error(`Can't not found adapter ===> ${canisterId}`);\n standard = TOKEN_STANDARD.EXT;\n }\n return this.getAdapterByName(standard);\n }\n\n public getAdapterByName(adapterName: TOKEN_STANDARD | undefined) {\n if (!adapterName || !this.adapters.get(adapterName)) throw Error(`Can't not found adapter ${adapterName}`);\n return this.adapters.get(adapterName);\n }\n\n public async totalHolders({ canisterId }: AdapterRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.totalHolders({ canisterId });\n }\n\n public async holders({ params, canisterId }: AdapterRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.holders({\n canisterId,\n params,\n });\n }\n\n public async supply({ canisterId }: AdapterRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.supply({\n canisterId,\n });\n }\n\n public async balance({ canisterId, params }: AdapterRequest) {\n const adapter = this.getAdapter(canisterId);\n\n return await adapter!.balance({\n canisterId,\n params,\n });\n }\n\n public async transfer({ canisterId, params, identity }: AdapterIdentityRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.transfer({\n canisterId,\n params,\n identity,\n });\n }\n\n public async setFee({ canisterId, identity, params }: AdapterIdentityRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.setFee({\n canisterId,\n identity,\n params,\n });\n }\n\n public async setFeeTo({ canisterId, identity, params }: AdapterIdentityRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.setFeeTo({\n canisterId,\n identity,\n params,\n });\n }\n\n public async transactions({ canisterId, params }: AdapterRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.transactions({\n canisterId,\n params,\n });\n }\n\n public async approve({ canisterId, identity, params }: AdapterRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.approve({\n canisterId,\n params,\n identity,\n });\n }\n\n public async allowance({ canisterId, params }: AdapterRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.allowance({\n canisterId,\n params,\n });\n }\n\n public async metadata({ canisterId }: AdapterRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.metadata({\n canisterId,\n });\n }\n\n public async setLogo({ canisterId, identity, params }: AdapterIdentityRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.setLogo({\n canisterId,\n params,\n identity,\n });\n }\n\n public actualReceivedByTransfer(request: ActualReceivedByTransferRequest) {\n const adapter = this.getAdapter(request.canisterId);\n return adapter!.actualReceivedByTransfer(request);\n }\n\n public async getMintingAccount({ canisterId }: { canisterId: string }) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.getMintingAccount({\n canisterId,\n });\n }\n}\n\nexport const tokenAdapter = new TokenAdapter();\n\nexport const registerTokens = (standards: RegisterProps) => tokenAdapter.register(standards);\n\ntokenAdapter.initialAdapter(TOKEN_STANDARD.EXT, EXTAdapter);\ntokenAdapter.initialAdapter(TOKEN_STANDARD.DIP20, DIP20Adapter);\ntokenAdapter.initialAdapter(TOKEN_STANDARD.DIP20_XTC, DIP20XTCAdapter);\ntokenAdapter.initialAdapter(TOKEN_STANDARD.DIP20_WICP, DIP20WICPAdapter);\ntokenAdapter.initialAdapter(TOKEN_STANDARD.ICRC1, icrc1Adapter);\ntokenAdapter.initialAdapter(TOKEN_STANDARD.ICRC2, icrc2Adapter);\ntokenAdapter.initialAdapter(TOKEN_STANDARD.ICP, icpAdapter);\n\nexport {\n EXTAdapter,\n DIP20Adapter,\n DIP20XTCAdapter,\n DIP20WICPAdapter,\n ICRC1Adapter,\n ICRC2Adapter,\n icrc1Adapter,\n icrc2Adapter,\n icpAdapter,\n ICPAdapter,\n TOKEN_STANDARD,\n};\n\nexport * from \"./token-standard-verification\";\nexport * from \"./utils\";\n","import type { Principal } from \"@dfinity/principal\";\nimport { Null, Override } from \"@icpswap/types\";\n\nexport type { TokenHolder, TokenHolderArgs } from \"@icpswap/candid\";\n\nexport interface Transaction {\n fee: bigint | undefined;\n status: string;\n transType: string;\n from_owner: string;\n from_sub: number[] | undefined;\n from_account: string;\n to_owner: string;\n to_sub: number[] | undefined;\n to_account: string;\n hash: string;\n memo: [] | [Array];\n timestamp: bigint;\n index: bigint;\n amount: bigint;\n}\n\nexport type TransactionRequest = {\n hash?: string;\n user?: User;\n offset?: number;\n limit?: number;\n index?: number;\n};\n\nexport type User = { principal?: Principal; address?: string };\n\nexport type SetFeeToRequest = User;\n\nexport type BalanceRequest = {\n token: string;\n user: User;\n subaccount?: number[];\n};\n\nexport type TransferRequest = {\n to: User;\n token?: string;\n notify?: boolean;\n from: User;\n memo?: number[] | bigint;\n subaccount?: number[];\n nonce?: bigint;\n amount: bigint;\n create_at_time?: bigint;\n from_sub_account?: number[];\n fee?: bigint;\n};\n\nexport type TokenTransferRequest = TransferRequest;\n\nexport type TokenAllowanceRequest = {\n owner: User;\n subaccount?: number[] | Null;\n spender: Principal;\n spenderSub?: number[] | Null;\n};\n\nexport type Metadata = {\n decimals: number;\n name: string;\n symbol: string;\n logo: string;\n fee: bigint;\n};\n\nexport type ApproveRequest = {\n subaccount?: number[];\n allowance: bigint;\n spender: Principal;\n spenderSub?: number[];\n fee?: bigint;\n expires_at?: bigint;\n expected_allowance?: bigint;\n};\n\nexport type TokenApproveRequest = Override;\n\nexport type { DIP20Metadata } from \"@icpswap/candid\";\n\nexport enum TOKEN_STANDARD {\n EXT = \"EXT\",\n DIP20 = \"DIP20\",\n ICP = \"ICP\",\n DIP20_WICP = \"DIP20-WICP\",\n DIP20_XTC = \"DIP20-XTC\",\n ICRC1 = \"ICRC1\",\n ICRC2 = \"ICRC2\",\n}\n","export enum TOKEN_STANDARD {\n EXT = \"EXT\",\n DIP20 = \"DIP20\",\n ICP = \"ICP\",\n DIP20_WICP = \"DIP20-WICP\",\n DIP20_XTC = \"DIP20-XTC\",\n ICRC1 = \"ICRC1\",\n ICRC2 = \"ICRC2\",\n}\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { TokenInfo } from \"@icpswap/types\";\nimport { TOKEN_STANDARD, WICP_CANISTER_ID } from \"@icpswap/constants\";\n\nexport const WRAPPED_ICP_TOKEN_INFO: TokenInfo = {\n standardType: TOKEN_STANDARD.EXT,\n name: \"Wrapped ICP\",\n decimals: 8,\n symbol: \"WICP\",\n canisterId: WICP_CANISTER_ID,\n totalSupply: BigInt(100000000000000000),\n transFee: BigInt(0),\n logo: `/images/tokens/${WICP_CANISTER_ID}.jpeg`,\n};\n\nexport const WRAPPED_ICP = new Token({\n address: WRAPPED_ICP_TOKEN_INFO.canisterId,\n decimals: WRAPPED_ICP_TOKEN_INFO.decimals,\n symbol: WRAPPED_ICP_TOKEN_INFO.symbol,\n name: WRAPPED_ICP_TOKEN_INFO.name,\n logo: WRAPPED_ICP_TOKEN_INFO.logo,\n standard: TOKEN_STANDARD.EXT,\n transFee: Number(WRAPPED_ICP_TOKEN_INFO.transFee),\n});\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { TokenInfo } from \"@icpswap/types\";\nimport { TOKEN_STANDARD, LEDGER_CANISTER_ID } from \"@icpswap/constants\";\n\nexport const ICP_TOKEN_INFO: TokenInfo = {\n symbol: \"ICP\",\n name: \"Internet Computer\",\n decimals: 8,\n canisterId: LEDGER_CANISTER_ID,\n transFee: BigInt(10000),\n totalSupply: BigInt(200000000000000),\n standardType: TOKEN_STANDARD.ICRC2,\n logo: `/images/tokens/${LEDGER_CANISTER_ID}.svg`,\n};\n\nexport const ICP = new Token({\n address: ICP_TOKEN_INFO.canisterId,\n decimals: ICP_TOKEN_INFO.decimals,\n symbol: ICP_TOKEN_INFO.symbol,\n name: ICP_TOKEN_INFO.name,\n logo: ICP_TOKEN_INFO.logo,\n standard: TOKEN_STANDARD.ICRC2,\n transFee: Number(ICP_TOKEN_INFO.transFee),\n});\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { TokenInfo } from \"@icpswap/types\";\nimport { TOKEN_STANDARD, ICS_CANISTER_ID } from \"@icpswap/constants\";\n\nexport const ICS_TOKEN_INFO: TokenInfo = {\n symbol: \"ICS\",\n name: \"ICPSwap Token\",\n decimals: 8,\n canisterId: ICS_CANISTER_ID,\n transFee: BigInt(1000000),\n totalSupply: BigInt(200000000000000),\n standardType: TOKEN_STANDARD.ICRC1,\n logo: `/images/tokens/${ICS_CANISTER_ID}.png`,\n};\n\nexport const ICS = new Token({\n address: ICS_TOKEN_INFO.canisterId,\n decimals: ICS_TOKEN_INFO.decimals,\n symbol: ICS_TOKEN_INFO.symbol,\n name: ICS_TOKEN_INFO.name,\n logo: ICS_TOKEN_INFO.logo,\n standard: TOKEN_STANDARD.ICRC1,\n transFee: Number(ICS_TOKEN_INFO.transFee),\n});\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { TokenInfo } from \"@icpswap/types\";\nimport { TOKEN_STANDARD } from \"@icpswap/constants\";\n\nexport const GHOST_TOKEN_ID = \"4c4fd-caaaa-aaaaq-aaa3a-cai\";\n\nexport const GHOST_TOKEN_INFO: TokenInfo = {\n standardType: TOKEN_STANDARD.ICRC1,\n name: \"GHOST\",\n decimals: 8,\n symbol: \"GHOST\",\n canisterId: GHOST_TOKEN_ID,\n totalSupply: BigInt(100000000000000000),\n transFee: BigInt(100000000),\n logo: `/images/tokens/${GHOST_TOKEN_ID}.png`,\n};\n\nexport const GHOST = new Token({\n address: GHOST_TOKEN_INFO.canisterId,\n decimals: GHOST_TOKEN_INFO.decimals,\n symbol: GHOST_TOKEN_INFO.symbol,\n name: GHOST_TOKEN_INFO.name,\n logo: GHOST_TOKEN_INFO.logo,\n standard: TOKEN_STANDARD.ICRC1,\n transFee: Number(GHOST_TOKEN_INFO.transFee),\n});\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { TokenInfo } from \"@icpswap/types\";\nimport { TOKEN_STANDARD } from \"@icpswap/constants\";\n\nexport const ck_BTC_TOKEN_INFO: TokenInfo = {\n standardType: TOKEN_STANDARD.ICRC2,\n name: \"ckBTC\",\n decimals: 8,\n symbol: \"ckBTC\",\n canisterId: \"mxzaz-hqaaa-aaaar-qaada-cai\",\n totalSupply: BigInt(0),\n transFee: BigInt(10),\n logo: \"/images/tokens/mxzaz-hqaaa-aaaar-qaada-cai.svg\",\n};\n\nexport const ckBTC = new Token({\n address: ck_BTC_TOKEN_INFO.canisterId,\n decimals: ck_BTC_TOKEN_INFO.decimals,\n symbol: ck_BTC_TOKEN_INFO.symbol,\n name: ck_BTC_TOKEN_INFO.name,\n logo: ck_BTC_TOKEN_INFO.logo,\n standard: TOKEN_STANDARD.ICRC1,\n transFee: Number(ck_BTC_TOKEN_INFO.transFee),\n});\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { TokenInfo } from \"@icpswap/types\";\nimport { TOKEN_STANDARD } from \"@icpswap/constants\";\n\nexport const ckUSDCTokenInfo: TokenInfo = {\n standardType: TOKEN_STANDARD.ICRC2,\n name: \"ckUSDC\",\n decimals: 8,\n symbol: \"ckUSDC\",\n canisterId: \"xevnm-gaaaa-aaaar-qafnq-cai\",\n totalSupply: BigInt(0),\n transFee: BigInt(10),\n logo: `/images/tokens/xevnm-gaaaa-aaaar-qafnq-cai.svg`,\n};\n\nexport const ckUSDC = new Token({\n address: ckUSDCTokenInfo.canisterId,\n decimals: ckUSDCTokenInfo.decimals,\n symbol: ckUSDCTokenInfo.symbol,\n name: ckUSDCTokenInfo.name,\n logo: ckUSDCTokenInfo.logo,\n standard: TOKEN_STANDARD.ICRC2,\n transFee: Number(ckUSDCTokenInfo.transFee),\n});\n\nexport const ckSepoliaUSDCTokenInfo: TokenInfo = {\n standardType: TOKEN_STANDARD.ICRC2,\n name: \"Chain key Sepolia USD\",\n decimals: 6,\n symbol: \"ckSepoliaUSDC\",\n canisterId: \"yfumr-cyaaa-aaaar-qaela-cai\",\n totalSupply: BigInt(0),\n transFee: BigInt(4000),\n logo: `/images/tokens/yfumr-cyaaa-aaaar-qaela-cai.png`,\n};\n\nexport const ckSepoliaUSDC = new Token({\n address: ckSepoliaUSDCTokenInfo.canisterId,\n decimals: ckSepoliaUSDCTokenInfo.decimals,\n symbol: ckSepoliaUSDCTokenInfo.symbol,\n name: ckSepoliaUSDCTokenInfo.name,\n logo: ckSepoliaUSDCTokenInfo.logo,\n standard: ckSepoliaUSDCTokenInfo.standardType,\n transFee: Number(ckSepoliaUSDCTokenInfo.transFee),\n});\n","import { ERC20Token } from \"@icpswap/swap-sdk\";\n\nexport const USDC = new ERC20Token({\n address: \"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\n name: \"USDC\",\n symbol: \"USDC\",\n decimals: 6,\n logo: \"/images/tokens/yfumr-cyaaa-aaaar-qaela-cai-erc20.png\",\n});\n\nexport const SepoliaUSDC = new ERC20Token({\n address: \"0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238\",\n name: \"USDC(Sepolia)\",\n symbol: \"USDC(Sepolia)\",\n decimals: 6,\n logo: \"/images/tokens/yfumr-cyaaa-aaaar-qaela-cai-erc20.png\",\n});\n","import { ERC20Token } from \"@icpswap/swap-sdk\";\n\nexport const LINK = new ERC20Token({\n address: \"0x514910771AF9Ca656af840dff83E8264EcF986CA\",\n name: \"LINK\",\n symbol: \"LINK\",\n decimals: 18,\n logo: \"/images/tokens/g4tto-rqaaa-aaaar-qageq-cai-erc20.png\",\n});\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { TokenInfo } from \"@icpswap/types\";\nimport { TOKEN_STANDARD } from \"@icpswap/constants\";\n\nexport const ckETHTokenInfo: TokenInfo = {\n standardType: TOKEN_STANDARD.ICRC2,\n name: \"Chain key Ethereum\",\n decimals: 18,\n symbol: \"ckETH\",\n canisterId: \"ss2fx-dyaaa-aaaar-qacoq-cai\",\n totalSupply: BigInt(0),\n transFee: BigInt(10_000_000_000),\n logo: `/images/tokens/ss2fx-dyaaa-aaaar-qacoq-cai.svg`,\n};\n\nexport const ckETH = new Token({\n address: ckETHTokenInfo.canisterId,\n decimals: ckETHTokenInfo.decimals,\n symbol: ckETHTokenInfo.symbol,\n name: ckETHTokenInfo.name,\n logo: ckETHTokenInfo.logo,\n standard: TOKEN_STANDARD.ICRC2,\n transFee: Number(ckETHTokenInfo.transFee),\n});\n\nexport const ckSepoliaETHTokenInfo: TokenInfo = {\n standardType: TOKEN_STANDARD.ICRC2,\n name: \"Chain key Sepolia Ethereum\",\n decimals: 18,\n symbol: \"ckSepoliaETH\",\n canisterId: \"apia6-jaaaa-aaaar-qabma-cai\",\n totalSupply: BigInt(0),\n transFee: BigInt(10_000_000_000),\n logo: `/images/tokens/apia6-jaaaa-aaaar-qabma-cai.png`,\n};\n\nexport const ckSepoliaETH = new Token({\n address: ckSepoliaETHTokenInfo.canisterId,\n decimals: ckSepoliaETHTokenInfo.decimals,\n symbol: ckSepoliaETHTokenInfo.symbol,\n name: ckSepoliaETHTokenInfo.name,\n logo: ckSepoliaETHTokenInfo.logo,\n standard: ckSepoliaETHTokenInfo.standardType,\n transFee: Number(ckSepoliaETHTokenInfo.transFee),\n});\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { TokenInfo } from \"@icpswap/types\";\nimport { TOKEN_STANDARD } from \"@icpswap/constants\";\n\nexport const ckLinkTokenInfo: TokenInfo = {\n standardType: TOKEN_STANDARD.ICRC2,\n name: \"ckLINK\",\n decimals: 18,\n symbol: \"ckLINK\",\n canisterId: \"g4tto-rqaaa-aaaar-qageq-cai\",\n totalSupply: BigInt(0),\n transFee: BigInt(100000000000000),\n logo: `/images/tokens/g4tto-rqaaa-aaaar-qageq-cai.png`,\n};\n\nexport const ckLink = new Token({\n address: ckLinkTokenInfo.canisterId,\n decimals: ckLinkTokenInfo.decimals,\n symbol: ckLinkTokenInfo.symbol,\n name: ckLinkTokenInfo.name,\n logo: ckLinkTokenInfo.logo,\n standard: TOKEN_STANDARD.ICRC2,\n transFee: Number(ckLinkTokenInfo.transFee),\n});\n","export enum ResultStatus {\n ERROR = \"err\",\n OK = \"ok\",\n}\n\nexport type ApiResult = undefined | T;\n\nexport type Null = null | undefined;\n\nexport type Override = Omit & S;\n\nexport type ActorIdentity = true;\n\nexport type StatusResult = {\n readonly status: ResultStatus;\n readonly data?: T;\n readonly message: string;\n};\n\nexport type CallResult = {\n readonly result: ApiResult;\n readonly loading: boolean;\n};\n\nexport type PaginationResult = {\n totalElements: number;\n offset: number;\n limit: number;\n content: T[];\n};\n","export type {\n CreateStakingPoolArgs,\n StakingPoolInfo,\n StakingPoolCycle,\n StakingPoolUserInfo,\n StakingPoolTransaction,\n StakingPoolGlobalData,\n StakingPoolControllerPoolInfo,\n StakeIndexPoolInfo,\n StakeAprInfo,\n StakeUserStakeInfo,\n} from \"@icpswap/candid\";\n\nexport enum StakingState {\n LIVE = \"LIVE\",\n NOT_STARTED = \"NOT_STARTED\",\n FINISHED = \"FINISHED\",\n}\n","export enum TOKEN_STANDARD {\n EXT = \"EXT\",\n DIP20 = \"DIP20\",\n ICP = \"ICP\",\n DIP20_WICP = \"DIP20-WICP\",\n DIP20_XTC = \"DIP20-XTC\",\n ICRC1 = \"ICRC1\",\n ICRC2 = \"ICRC2\",\n}\n\nexport interface TokenTransaction {\n fee: bigint | undefined;\n status: string;\n transType: string;\n from_owner: string;\n from_sub: number[] | undefined;\n from_account: string;\n to_owner: string;\n to_sub: number[] | undefined;\n to_account: string;\n hash: string;\n memo: [] | [Array];\n timestamp: bigint;\n index: bigint;\n amount: bigint;\n}\n\nexport type TokenTransType = { burn: null } | { mint: null } | { approve: null } | { transfer: null };\n\nexport type {\n WrapUser,\n WrapTransaction,\n WrapMintArgs,\n WrapWithdrawArgs,\n TokenApproveArgs,\n TokenHolder,\n TokenHolderArgs,\n TokenTransactionArgs,\n TokenTransferArgs,\n TokenTransferResult,\n TokenTransaction as CandidTokenTransaction,\n} from \"@icpswap/candid\";\n\nexport type TokenInfo = {\n decimals: number;\n name: string;\n standardType: TOKEN_STANDARD;\n symbol: string;\n canisterId: string;\n logo: string;\n totalSupply: bigint;\n transFee: bigint;\n};\n\nexport type StorageTokenInfo = {\n decimals: number;\n name: string;\n standardType: TOKEN_STANDARD;\n symbol: string;\n canisterId: string;\n logo: string;\n totalSupply: string;\n transFee: string;\n};\n","import { ReactNode } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport Typography from \"@mui/material/Typography\";\nimport Box from \"@mui/material/Box\";\nimport { ChevronRight } from \"react-feather\";\n\nexport interface BreadcrumbsProps {\n prevLink: string;\n prevLabel: ReactNode;\n currentLabel: ReactNode;\n fontSize?: string;\n}\n\nexport function Breadcrumbs({ prevLabel, currentLabel, prevLink, fontSize = \"12px\" }: BreadcrumbsProps) {\n const history = useHistory();\n\n const handleClick = () => {\n if (prevLink === \"back\") {\n history.goBack();\n return;\n }\n history.push(prevLink);\n };\n\n return (\n \n \n {prevLabel}\n \n\n \n\n \n {currentLabel}\n \n \n );\n}\n","import { Box, BoxProps } from \"@mui/material\";\nimport { ReactNode } from \"react\";\n\nexport interface FlexProps {\n width?: string;\n align?: BoxProps[\"alignItems\"];\n justify?: BoxProps[\"justifyContent\"];\n padding?: string;\n border?: string;\n borderRadius?: string;\n children: ReactNode;\n margin?: string;\n gap?: BoxProps[\"gap\"];\n vertical?: boolean;\n sx?: BoxProps[\"sx\"];\n fullWidth?: boolean;\n className?: string;\n wrap?: BoxProps[\"flexWrap\"];\n onClick?: BoxProps[\"onClick\"];\n}\n\nexport function Flex({\n vertical,\n gap,\n children,\n width,\n align,\n justify,\n padding,\n border,\n borderRadius,\n margin,\n sx,\n fullWidth,\n className,\n wrap,\n onClick,\n}: FlexProps) {\n return (\n \n {children}\n \n );\n}\n","import { ReactNode } from \"react\";\nimport { keyframes } from \"@mui/material\";\n\nimport { Box, useTheme } from \"../Mui\";\n\nconst loadingAnimation = keyframes`\n 0% {\n background-position: 100% 50%;\n }\n 100% {\n background-position: 0% 50%;\n }\n`;\n\nexport function LoadingSingleRow() {\n const theme = useTheme();\n\n return (\n div\": {\n animation: `${loadingAnimation} 1.5s infinite`,\n animationFillMode: \"both\",\n background: `linear-gradient(\n to left,\n ${theme.palette.background.level2} 25%,\n ${theme.palette.background.level3} 50%,\n ${theme.palette.background.level4} 75%\n )`,\n backgroundSize: \"400%\",\n borderRadius: \"12px\",\n height: \" 2.4em\",\n willChange: \"background-position\",\n },\n \"& > div:nth-of-type(4n + 1)\": {\n gridColumn: \"1 / 3\",\n },\n \" & > div:nth-of-type(4n)\": {\n gridColumn: \"3 / 4\",\n marginBottom: \"16px\",\n },\n }}\n >\n
\n
\n \n );\n}\n\nexport interface LoadingRowProps {\n children: ReactNode;\n}\n\nexport function LoadingRow({ children }: LoadingRowProps) {\n const theme = useTheme();\n\n return (\n div\": {\n animation: `${loadingAnimation} 1.5s infinite`,\n animationFillMode: \"both\",\n background: `linear-gradient(\n to left,\n ${theme.palette.background.level2} 25%,\n ${theme.palette.background.level3} 50%,\n ${theme.palette.background.level4} 75%\n )`,\n backgroundSize: \"400%\",\n borderRadius: \"12px\",\n height: \" 2.4em\",\n willChange: \"background-position\",\n },\n \"& > div:nth-of-type(4n + 1)\": {\n gridColumn: \"1 / 3\",\n },\n \" & > div:nth-of-type(4n)\": {\n gridColumn: \"3 / 4\",\n marginBottom: \"16px\",\n },\n }}\n >\n {children}\n \n );\n}\n","import React, { useMemo } from \"react\";\nimport { useTheme } from \"@mui/styles\";\nimport { Box, type SxProps } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\n\nexport type MainCardBorder = \"level1\" | \"level2\" | \"level3\" | \"level4\";\n\nexport interface MainCardProps {\n border?: MainCardBorder;\n children: React.ReactNode;\n level?: number;\n onClick?: (event: any) => void;\n padding?: string;\n sx?: SxProps;\n borderRadius?: string;\n className?: string;\n}\n\nexport function MainCard({ border, level, onClick, padding, children, sx, borderRadius, className }: MainCardProps) {\n const theme = useTheme() as Theme;\n\n const cardStyles = useMemo(() => {\n const _border =\n border === \"level1\"\n ? theme.palette.background.level1\n : border === \"level2\"\n ? theme.palette.background.level2\n : border === \"level3\"\n ? theme.palette.background.level3\n : border === \"level4\"\n ? theme.palette.background.level4\n : undefined;\n\n switch (level) {\n case 1:\n return {\n background: theme.palette.background.level1,\n ...(_border ? { border: `1px solid ${_border}` } : {}),\n };\n case 2:\n return {\n background: theme.palette.background.level2,\n ...(border ? { border: \"2px solid rgba(255, 255, 255, 0.04)\" } : {}),\n };\n case 3:\n return {\n background: theme.palette.background.level3,\n ...(_border ? { border: `1px solid ${_border}` } : {}),\n };\n case 4:\n return {\n background: theme.palette.background.level4,\n ...(_border ? { border: `1px solid ${_border}` } : {}),\n };\n case 5:\n return {\n background: \"#273051\",\n border: \"0.5px solid #404558\",\n };\n default:\n return {\n background: theme.palette.background.level3,\n ...(_border ? { border: `1px solid ${_border}` } : {}),\n };\n }\n }, [level, border]);\n\n return (\n \n {children}\n \n );\n}\n","import { Theme } from \"@mui/material/styles\";\nimport useMuiTheme from \"@mui/styles/useTheme\";\n\nexport { default as Box, type BoxProps } from \"@mui/material/Box\";\nexport { default as Typography, type TypographyProps } from \"@mui/material/Typography\";\nexport { default as Grid, type GridProps } from \"@mui/material/Grid\";\nexport { default as SvgIcon, type SvgIconProps } from \"@mui/material/SvgIcon\";\nexport { default as Button, type ButtonProps } from \"@mui/material/Button\";\nexport { default as TextField, type TextFieldProps } from \"@mui/material/TextField\";\nexport { default as Fade, type FadeProps } from \"@mui/material/Fade\";\nexport { default as Collapse, type CollapseProps } from \"@mui/material/Collapse\";\nexport { default as Checkbox, type CheckboxProps } from \"@mui/material/Checkbox\";\nexport { default as MenuList, type MenuListProps } from \"@mui/material/MenuList\";\nexport { default as MenuItem } from \"@mui/material/MenuItem\";\nexport { default as Popper } from \"@mui/material/Popper\";\nexport { default as useMediaQuery } from \"@mui/material/useMediaQuery\";\nexport { default as CircularProgress } from \"@mui/material/CircularProgress\";\nexport { default as InputAdornment } from \"@mui/material/InputAdornment\";\nexport { default as Avatar, type AvatarProps } from \"@mui/material/Avatar\";\nexport { default as Link } from \"@mui/material/Link\";\nexport { default as makeStyles } from \"@mui/styles/makeStyles\";\nexport { default as Tooltip } from \"@mui/material/Tooltip\";\nexport { default as Chip } from \"@mui/material/Chip\";\nexport { default as Menu } from \"@mui/material/Menu\";\n\nexport function useTheme() {\n return useMuiTheme() as Theme;\n}\n","import { ReactNode } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Typography, Box } from \"@mui/material\";\nimport { mockALinkAndOpen } from \"@icpswap/utils\";\n\nexport interface ALinkProps {\n children: ReactNode;\n link: string | undefined;\n color?: string;\n textDecorationColor?: \"primary\" | \"secondary\" | \"text.secondary\";\n fontSize?: string;\n}\n\nexport function ALink({\n children,\n link,\n textDecorationColor = \"text.secondary\",\n color = \"\",\n fontSize = \"14px\",\n}: ALinkProps) {\n return (\n \n \n {children}\n \n \n );\n}\n\nfunction ArrowIcon() {\n return (\n \n \n \n );\n}\n\nexport interface TextButtonProps {\n children: ReactNode;\n onClick?: () => void;\n disabled?: boolean;\n link?: string;\n to?: string;\n sx?: any;\n arrow?: boolean;\n color?: \"primary\" | \"white\" | \"secondary\";\n textDecoration?: \"underline\" | \"none\";\n}\n\nexport function TextButton({\n children,\n onClick,\n disabled,\n link,\n to,\n sx,\n arrow,\n color = \"secondary\",\n textDecoration = \"none\",\n}: TextButtonProps) {\n const history = useHistory();\n\n const handleClick = () => {\n if (link) {\n mockALinkAndOpen(link, \"text-button-open-new-window\");\n return;\n }\n\n if (to) {\n history.push(to);\n return;\n }\n\n if (onClick) onClick();\n };\n\n return (\n {\n if (disabled) return;\n handleClick();\n }}\n >\n {children}\n\n {arrow && (\n \n \n \n )}\n \n );\n}\n","import { SvgIcon, SvgIconProps } from \"@mui/material\";\n\nexport function SnsIcon(props: SvgIconProps) {\n return (\n \n \n \n );\n}\n","import { Avatar, Box, SxProps } from \"@mui/material\";\nimport { SnsIcon } from \"../assets/icons/SNS\";\n\nexport interface TokenImageProps {\n logo: string | undefined | null;\n size?: string;\n sns?: boolean;\n sx?: SxProps;\n}\n\nexport function TokenImage({ logo, size, sx, sns }: TokenImageProps) {\n return (\n \n \n  \n \n\n {sns ? (\n \n ) : null}\n \n );\n}\n","import React from \"react\";\n\nimport { Typography, TypographyProps } from \"../Mui\";\n\nexport interface SmallButtonProps {\n children: React.ReactNode;\n onClick: TypographyProps[\"onClick\"];\n background?: string;\n color?: string;\n fontWeight?: number;\n}\n\nexport function SmallButton({ children, onClick, background, color, fontWeight }: SmallButtonProps) {\n return (\n \n {children}\n \n );\n}\n","import { TypographyProps } from \"../Mui\";\nimport { SmallButton } from \"./SmallButton\";\n\nexport interface MaxButtonProps {\n onClick: TypographyProps[\"onClick\"];\n background?: string;\n color?: string;\n}\n\nexport function MaxButton({ onClick, background, color }: MaxButtonProps) {\n return (\n \n MAX\n \n );\n}\n","export function availableArgsNull(value: T | null | undefined): [T] | [] {\n return value ? [value] : [];\n}\n","export function enumToString(type: any): string {\n if (typeof type === \"string\") return type;\n\n if (typeof type === \"object\") {\n if (type) {\n return Object.keys(type)[0];\n }\n }\n\n return type as string;\n}\n","import { principalToAccount } from \"./principalToAccount\";\n\nexport function explorerLink(id: string) {\n if (id.length > 27) {\n const account = principalToAccount(id);\n return `https://dashboard.internetcomputer.org/account/${account}`;\n }\n\n return `https://dashboard.internetcomputer.org/canister/${id}`;\n}\n","import { type NumberType } from \"@icpswap/types\";\nimport BigNumber from \"bignumber.js\";\nimport { parseTokenAmount } from \"./tokenAmount\";\nimport { Principal } from \"@dfinity/principal\";\n\nexport function transactionsTypeFormat(type: any): string {\n if (typeof type === \"string\") return type;\n if (typeof type === \"object\") {\n if (type) {\n return Object.keys(type)[0];\n }\n }\n return type;\n}\n\nexport function openBase64ImageInNewWindow(base64String: string) {\n var image = new Image();\n image.src = base64String;\n\n var win = window.open(\"\");\n win?.document.write(image.outerHTML);\n}\n\nexport function cycleValueFormat(value: NumberType, noUnit?: boolean): string {\n if (value === 0 || !value) return noUnit ? `0` : `0 T`;\n\n return `${new BigNumber(parseTokenAmount(value, 12).toFixed(4)).toFormat()}${\n noUnit ? \"\" : \" T\"\n }`;\n}\n\nexport type User = { principal: Principal } | { address: string };\n\nexport function isPrincipalUser(user: User): user is { principal: Principal } {\n if (user.hasOwnProperty(\"principal\")) return true;\n return false;\n}\n\nexport function isAddressUser(user: User): user is { address: string } {\n if (user.hasOwnProperty(\"address\")) return true;\n return false;\n}\n\nexport function stringToArrayBuffer(string: string): Uint8Array {\n return new TextEncoder().encode(string);\n}\n\nexport function arrayBufferToString(arrayBuffer: Uint8Array): string {\n return new TextDecoder(\"utf-8\").decode(arrayBuffer);\n}\n\nexport function arrayBufferToHex(arrayBuffer: Uint8Array) {\n return Array.from([...arrayBuffer], function (byte) {\n return (\"0\" + (byte & 0xff).toString(16)).slice(-2);\n }).join(\"\");\n}\n\nexport function arrayBufferFromHex(hex: string) {\n if (hex.substr(0, 2) === \"0x\") hex = hex.substr(2);\n for (var bytes: number[] = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return Uint8Array.from(bytes);\n}\n\nexport function valueofUser(user: User) {\n if (isPrincipalUser(user)) {\n return user.principal;\n } else {\n return user.address;\n }\n}\n\nexport function splitArr(arr: T[], length: number) {\n const total_length = arr.length;\n\n if (length >= total_length) {\n return [arr];\n }\n\n const resultLength = Math.ceil(total_length / length);\n let result: Array = [];\n\n for (let i = 0; i < resultLength; i++) {\n result.push(arr.slice(i * length, i * length + length));\n }\n\n return result;\n}\n","import { SubAccount } from \"@dfinity/ledger-icp\";\n\n// TODO\nexport function isOkSubAccount(\n sub: SubAccount | Error | undefined\n): sub is SubAccount | undefined {\n if (sub && sub instanceof Error) return false;\n return true;\n}\n\nexport function isSubAccount(sub: any): sub is SubAccount {\n if (sub && sub instanceof SubAccount) return true;\n return false;\n}\n","export function isAvailablePageArgs(offset: number, limit: number): boolean {\n return (!!offset || offset === 0) && !!limit;\n}\n","export function isBigIntMemo(\n memo: bigint | number[] | undefined\n): memo is bigint {\n if (typeof memo === \"bigint\") return true;\n return false;\n}\n","/** Is null or undefined */\nexport function isNullArgs(argument: T | undefined | null): argument is undefined | null {\n return argument === null || argument === undefined;\n}\n\n/** Not null and not undefined */\nexport function nonNullArgs(argument: T | undefined | null): argument is T {\n return !isNullArgs(argument);\n}\n","import { Principal } from \"@dfinity/principal\";\n\nexport function isPrincipal(principal: any): principal is Principal {\n return !!principal && principal._isPrincipal;\n}\n","import { Principal } from \"@dfinity/principal\";\n\nexport function isValidPrincipal(principal: string): boolean {\n try {\n return principal === Principal.fromText(principal).toText();\n } catch (e) {\n return false;\n }\n}\n","export function mockALinkAndOpen(url: string, id: string): void {\n let a = document.createElement(\"a\");\n a.setAttribute(\"href\", url);\n a.setAttribute(\"target\", \"_blank\");\n a.setAttribute(\"id\", id);\n if (!document.getElementById(id)) {\n document.body.appendChild(a);\n }\n a.click();\n}\n","import numbro from \"numbro\";\n\nimport { BigNumber } from \"./bignumber\";\nimport { toSignificant, toSignificantWithGroupSeparator } from \"./toSignificant\";\n\n// using a currency library here in case we want to add more in future\nexport const formatDollarAmount = (num: number | string | undefined, digits = 3, round = true, ab?: number) => {\n const _num = num;\n if (_num === 0 || _num === \"0\") return \"$0.00\";\n if (!_num) return \"-\";\n\n if (new BigNumber(_num).isLessThan(1)) {\n return `$${toSignificant(_num, digits)}`;\n }\n\n if (new BigNumber(_num).isLessThan(0.01)) {\n if (ab && new BigNumber(_num).isLessThan(ab)) return `<$${ab}`;\n return `$${toSignificant(_num, digits)}`;\n }\n\n return numbro(_num).formatCurrency({\n average: round,\n mantissa: Number(_num) > 1000 ? 2 : digits,\n abbreviations: {\n million: \"M\",\n billion: \"B\",\n },\n });\n};\n\n// using a currency library here in case we want to add more in future\nexport const formatAmount = (num: number | string | undefined, digits = 2) => {\n if (num === 0 || num === \"0\") return \"0\";\n\n if (!num) return \"-\";\n\n if (new BigNumber(num).isLessThan(0.0001)) {\n return \"<0.0001\";\n }\n\n if (new BigNumber(num).isLessThan(0.001)) {\n return toSignificantWithGroupSeparator(num, 4);\n }\n\n return numbro(num).format({\n average: true,\n mantissa: Number(num) > 1000 ? 2 : digits,\n abbreviations: {\n million: \"M\",\n billion: \"B\",\n },\n });\n};\n\nexport function percentToNum(val: string) {\n return new BigNumber(val.replace(\"%\", \"\")).dividedBy(100).toNumber();\n}\n\nexport function numToPercent(num: string | number | BigNumber) {\n return `${new BigNumber(num).multipliedBy(100).toString()}%`;\n}\n","import BigNumber from \"bignumber.js\";\n\nexport function numberToString(num: number | bigint | BigNumber): string {\n if (num === 0 || num === BigInt(0)) return \"0\";\n if (num)\n return new BigNumber(typeof num === \"bigint\" ? String(num) : num).toFormat({\n groupSeparator: \"\",\n });\n return \"\";\n}\n\n/** Only Integer number */\nexport function bigNumberToString(num: BigNumber): string {\n return num.toFormat({\n groupSeparator: \"\",\n });\n}\n","import invariant from \"tiny-invariant\";\n\nexport function pageArgsFormat(\n pageNum: number,\n pageSize: number\n): [number, number] {\n invariant(pageNum > 0, \"Invalid pageNum\");\n invariant(pageSize > 0, \"Invalid pageSize\");\n\n const pageStart = (pageNum - 1) * pageSize;\n const pageEnd = pageStart + pageSize;\n return [pageStart, pageEnd];\n}\n","import { AccountIdentifier, SubAccount } from \"@dfinity/ledger-icp\";\nimport { Principal } from \"@dfinity/principal\";\nimport { isSubAccount } from \"./ic\";\nimport { isValidPrincipal } from \"./isValidPrincipal\";\n\nexport function principalToAccount(\n principal: string,\n subAccount?: SubAccount | string\n): string {\n if (!principal) return principal;\n\n if (\n subAccount &&\n !isSubAccount(subAccount) &&\n !isValidPrincipal(subAccount)\n ) {\n throw Error(\"Wrong sub account\");\n }\n\n const sub = subAccount\n ? isSubAccount(subAccount)\n ? subAccount\n : isValidPrincipal(subAccount)\n ? SubAccount.fromPrincipal(Principal.fromText(subAccount))\n : undefined\n : undefined;\n\n return AccountIdentifier.fromPrincipal({\n principal: Principal.fromText(principal),\n subAccount: sub,\n }).toHex();\n}\n","import { StatusResult, ResultStatus } from \"@icpswap/types\";\nimport isObject from \"lodash/isObject\";\n\nexport function isResultKey(key: string) {\n return isResultErrKey(key) || isResultOkKey(key);\n}\n\nexport function isResultErrKey(key: string) {\n return key === ResultStatus.ERROR || key === \"Err\";\n}\n\nexport function isResultOkKey(key: string) {\n return key === ResultStatus.OK || key === \"Ok\";\n}\n\nexport function resultFormat(result: any): StatusResult {\n if (result === null || result === undefined) {\n return {\n status: ResultStatus.ERROR,\n message: \"\",\n data: undefined,\n };\n }\n\n const key = Object.keys(result);\n\n if (\n result &&\n isObject(result as object) &&\n key &&\n key[0] &&\n isResultKey(key[0])\n ) {\n let message = \"\";\n\n if (isResultErrKey(key[0]) && isObject(result[key[0]])) {\n const messageKey = Object.keys(result[key[0]])[0];\n const value = result[key[0]][messageKey];\n\n // TODO: for token\n if (messageKey === \"Other\") {\n message = value;\n } else {\n if (typeof value === \"object\") {\n message = `${messageKey}: ${JSON.stringify(value).replace(\n /\\\"/g,\n \"\"\n )}`;\n } else {\n message = `${messageKey}: ${value}`;\n }\n }\n } else if (typeof result[key[0]] === \"string\") {\n message = result[key[0]];\n }\n\n return {\n status: isResultErrKey(key[0]) ? ResultStatus.ERROR : ResultStatus.OK,\n data: isResultOkKey(key[0]) ? (result[key[0]] as T) : undefined,\n message,\n };\n }\n\n return {\n status: ResultStatus.OK,\n data: result as T,\n message: \"\",\n };\n}\n","export function shorten(str = \"\", length = 4) {\n if (str.length <= length * 2) return `${str.slice(0, length)}...`;\n return `${str.slice(0, length)}...${str.slice(str.length - length)}`;\n}\n\nexport function shortenString(str: string, limit?: number): string {\n if (!str) return str;\n if (limit) {\n return str.length > limit ? `${str.slice(0, limit).trim()}...` : str;\n }\n return shorten(str);\n}\n","export function sleep(ms: number) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","import _Decimal from \"decimal.js-light\";\nimport _Big from \"big.js\";\nimport toFormat from \"toformat\";\n\nenum Rounding {\n ROUND_DOWN,\n ROUND_HALF_UP,\n ROUND_UP,\n}\n\nconst Decimal = toFormat(_Decimal);\n\nconst toSignificantRounding = {\n [Rounding.ROUND_DOWN]: Decimal.ROUND_DOWN,\n [Rounding.ROUND_HALF_UP]: Decimal.ROUND_HALF_UP,\n [Rounding.ROUND_UP]: Decimal.ROUND_UP,\n};\n\nexport function toSignificant(\n num: number | string,\n significantDigits = 6,\n format: object = { groupSeparator: \"\" },\n rounding: Rounding = Rounding.ROUND_HALF_UP,\n): string {\n Decimal.set({\n precision: significantDigits + 1,\n rounding: toSignificantRounding[rounding],\n });\n\n const quotient = new Decimal(num).toSignificantDigits(significantDigits);\n return quotient.toFormat(quotient.decimalPlaces(), format);\n}\n\nexport function toSignificantWithGroupSeparator(num: number | string, significantDigits = 6): string {\n Decimal.set({\n precision: significantDigits + 1,\n rounding: toSignificantRounding[Rounding.ROUND_DOWN],\n });\n\n const quotient = new Decimal(num).toSignificantDigits(significantDigits);\n return quotient.toFormat(quotient.decimalPlaces(), { groupSeparator: \",\" });\n}\n","import BigNumber from \"bignumber.js\";\nimport type { NumberType } from \"@icpswap/types\";\n\nexport function formatTokenAmount(\n amount: NumberType | null | undefined,\n decimals: number | bigint = 8\n): BigNumber {\n let _amount = amount;\n let _decimals = decimals;\n\n if (_amount !== 0 && !_amount) return new BigNumber(0);\n if (typeof _amount === \"bigint\") _amount = Number(_amount);\n if (typeof decimals === \"bigint\") _decimals = Number(_decimals);\n if (Number.isNaN(Number(amount))) return new BigNumber(_amount);\n return new BigNumber(_amount).multipliedBy(10 ** Number(_decimals));\n}\n\nexport function parseTokenAmount(\n amount: NumberType | null | undefined,\n decimals: number | bigint = 8\n): BigNumber {\n if (amount !== 0 && !amount) return new BigNumber(0);\n if (typeof amount === \"bigint\") amount = Number(amount);\n if (typeof decimals === \"bigint\") decimals = Number(decimals);\n if (Number.isNaN(Number(amount))) return new BigNumber(String(amount));\n return new BigNumber(String(amount)).dividedBy(10 ** Number(decimals));\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + {\"10\":\"c9b3466f\",\"17\":\"b60aa61f\",\"58\":\"98ffde38\",\"189\":\"476b523c\",\"570\":\"0795f0c1\",\"594\":\"ab0277f3\",\"770\":\"a3de9e05\",\"962\":\"4675b2c1\",\"1126\":\"2a090987\",\"1131\":\"95631e95\",\"1514\":\"99a3ea28\",\"1645\":\"f338a046\",\"1661\":\"420a5842\",\"1889\":\"83f0301b\",\"2059\":\"ac7a87cb\",\"2084\":\"e4911f0f\",\"2114\":\"86e8e531\",\"2214\":\"cfc2a015\",\"2446\":\"37fe642d\",\"2603\":\"03a2ab69\",\"2873\":\"4b760828\",\"2892\":\"1be50c71\",\"2989\":\"bfc13fa2\",\"3012\":\"b585032c\",\"3305\":\"56321f8f\",\"3347\":\"17daf6e7\",\"3433\":\"6d990e2e\",\"3657\":\"cd7a1449\",\"3774\":\"e930928f\",\"3811\":\"5b306948\",\"3860\":\"28124a61\",\"4236\":\"5d6940a6\",\"4259\":\"de568c32\",\"4270\":\"9460135f\",\"4371\":\"f260cd13\",\"4558\":\"944645e6\",\"4596\":\"63c94236\",\"4608\":\"8306f01e\",\"4630\":\"6e19223e\",\"4680\":\"4c0959e1\",\"4763\":\"bc253098\",\"4958\":\"bc3f1a3c\",\"5058\":\"7f2b5749\",\"5270\":\"3106bc7e\",\"5279\":\"244595f7\",\"5348\":\"e8552e74\",\"5352\":\"620d5c43\",\"5455\":\"8730ba65\",\"5472\":\"918bbf54\",\"5769\":\"dd941463\",\"5918\":\"71379e2e\",\"6009\":\"06f925d7\",\"6053\":\"7013b674\",\"6147\":\"26c56d1b\",\"6190\":\"df86608d\",\"6283\":\"2c02dea8\",\"6506\":\"a704931d\",\"6697\":\"8216b386\",\"6800\":\"7d02790c\",\"6824\":\"21adcf4c\",\"6948\":\"af1430d8\",\"7348\":\"ad1c6f58\",\"7445\":\"bc1f77c8\",\"7540\":\"87939203\",\"7717\":\"67db8e05\",\"7801\":\"c80961a4\",\"7942\":\"fec65319\",\"7953\":\"33c5508d\",\"8067\":\"582fde52\",\"8087\":\"f584c24e\",\"8131\":\"2e7bdf65\",\"8132\":\"2e050cda\",\"8256\":\"56058a01\",\"8264\":\"311eb4dc\",\"8432\":\"5873d504\",\"8492\":\"4102e8ef\",\"8970\":\"de24e1ea\",\"8984\":\"6ceaafaa\",\"9137\":\"1ef6d9ac\",\"9363\":\"1baeeb90\",\"9529\":\"37c4e8f6\",\"9704\":\"a8595528\",\"9747\":\"8cfd8673\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/css/\" + chunkId + \".\" + {\"570\":\"4832a2bb\",\"4558\":\"4832a2bb\",\"8256\":\"4832a2bb\"}[chunkId] + \".chunk.css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = (module) => {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: () => {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"@icpswap/swap:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","(() => {\n if (typeof __webpack_require__ !== 'undefined') {\n var oldGetScript = __webpack_require__.u;\n var oldLoadScript = __webpack_require__.e;\n var queryMap = {};\n var countMap = {};\n var getRetryDelay = function (retryAttempt) {\n return 2 ** (retryAttempt - 1) * 500;\n };\n __webpack_require__.u = function (chunkId) {\n var result = oldGetScript(chunkId);\n return (\n result +\n (queryMap.hasOwnProperty(chunkId) ? '?' + queryMap[chunkId] : '')\n );\n };\n __webpack_require__.e = function (chunkId) {\n var result = oldLoadScript(chunkId);\n return result.catch(function (error) {\n var retries = countMap.hasOwnProperty(chunkId) ? countMap[chunkId] : 3;\n if (retries < 1) {\n var realSrc = oldGetScript(chunkId);\n error.message =\n 'Loading chunk ' +\n chunkId +\n ' failed after 3 retries.\\n(' +\n realSrc +\n ')';\n error.request = realSrc;\n throw error;\n }\n return new Promise(function (resolve) {\n var retryAttempt = 3 - retries + 1;\n setTimeout(function () {\n var retryAttemptString = '&retry-attempt=' + retryAttempt;\n var cacheBust = (function () {\n return 'cache-bust=' + Date.now();\n })();\n +retryAttemptString;\n queryMap[chunkId] = cacheBust;\n countMap[chunkId] = retries - 1;\n resolve(__webpack_require__.e(chunkId));\n }, getRetryDelay(retryAttempt));\n });\n });\n };\n }\n})();\n","if (typeof document === \"undefined\") return;\nvar createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = (event) => {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = (href, fullhref) => {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = (chunkId) => {\n\treturn new Promise((resolve, reject) => {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t8792: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"570\":1,\"4558\":1,\"8256\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, (e) => {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr\n\n// no prefetching\n\n// no preloaded","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t8792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk_icpswap_swap\"] = self[\"webpackChunk_icpswap_swap\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [3760,5297,8115,216,3215,8121], () => (__webpack_require__(57747)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","t","keys","Object","module","exports","idlFactory","_ref","IDL","Token","Record","address","Text","standard","CreatePoolArgs","fee","Nat","sqrtPriceX96","token0","token1","PoolData","key","tickSpacing","Int","canisterId","Principal","Variant","CommonError","Null","InternalError","UnsupportedToken","InsufficientFunds","Result_1","ok","err","CycleInfo","balance","available","Result_2","GetPoolArgs","Result","Vec","Service","createPool","Func","deletePool","getAccessControlState","owners","clients","getAvailabilityState","whiteList","Bool","getCycleInfo","getPool","getPools","getRemovedPools","removePool","setAvailable","setClients","setOwnerToPool","setOwners","setWhiteList","swapFactory_update_call","actor","create","actorName","ActorName","SwapFactory","SwapFactoryInterfaceFactory_update_call","DialogCloseIcon","props","_jsxs","SvgIcon","viewBox","children","_jsx","opacity","d","SmallButton","onClick","background","theme","useTheme","Typography","sx","padding","cursor","borderRadius","backgroundColor","colors","secondaryMain","color","fontSize","MinButton","Trans","createContext","CheckboxGroup","defaultChecked","onChange","checked","setChecked","useState","useEffect","length","CheckboxGroupContext","Provider","value","UncheckedIcon","width","height","fill","xmlns","cx","cy","r","stroke","strokeWidth","CheckedIcon","Checkbox","radio","useContext","isCheck","includes","Box","component","handleToggle","_checked","splice","indexOf","useStyles","makeStyles","copy","display","forwardRef","ref","content","hide","classes","openTips","useTips","copyToClipboard","TIP_SUCCESS","useImperativeHandle","className","TokenItem","onUpdateTokenAdditional","searchWord","showBalance","onTokenHide","isActive","isDisabled","hidden","principal","useAccountPrincipal","matchDownSM","useMediaQuery","breakpoints","down","getBalanceId","useMemo","result","tokenInfo","useTokenInfo","loading","useTokenBalance","interfacePrice","useUSDPriceById","taggedTokens","updateTaggedTokens","deleteTaggedTokens","useTaggedTokenManager","tokenBalanceAmount","undefined","toSignificantWithGroupSeparator","parseTokenAmount","decimals","toString","isTagged","isHidden","isValidPrincipal","symbol","toLocaleLowerCase","name","gridTemplateColumns","gap","alignItems","palette","level4","handleItemClick","concat","Grid","container","TokenImage","logo","size","tokenId","item","xs","overflow","whiteSpace","textOverflow","fontWeight","margin","TokenStandardLabel","standardType","justifyContent","DotLoading","align","maxWidth","formatDollarAmount","BigNumber","multipliedBy","PlusCircle","themeOption","textSecondary","event","stopPropagation","BASE_TOKENS","ICP","ICS","ckUSDC","ckBTC","ckETH","BaseToken","token","onTokenClick","handleClick","useCallback","Flex","border","level3","BaseTokens","_ref2","justify","wrap","base_token","wrapper","Selector","open","onClose","disabledCurrencyIds","activeCurrencyIds","isDark","isDarkTheme","searchKeyword","setSearchKeyword","importTokenCanceled","setImportTokenCanceled","hiddenCanisterIds","setHiddenCanisterIds","snsAllTokensInfo","useFetchSnsAllTokensInfo","globalTokenList","useGlobalTokenList","yourTokens","Set","DEFAULT_DISPLAYED_TOKENS","snsTokens","noneSnsTokens","filter","forEach","snsTokenInfo","find","canister_ids","ledger_canister_id","root_canister_id","push","handleTokenClick","handleSearchToken","debouncedSearch","useDebouncedChangeHandler","showImportToken","handleTokenHidden","index","prevState","newCanisterIds","allTokenCanisterIds","noData","_Fragment","SwapModal","title","i18n","_","dialogProps","level2","lightGray200","position","lineHeight","FilledTextField","contained","level1","placeholderSize","fullWidth","placeholder","InputProps","startAdornment","InputAdornment","SearchIcon","maxLength","NoData","ImportToken","onCancel","mt","AvatarImage","_props$sx","Avatar","useSNSTokenRootId","UITokenImage","sns","button","ImportTokenTip","onOk","TokenStandards","label","TOKEN_STANDARD","EXT","DIP20","ICRC1","ICRC2","SelectTokenStandard","filled","fullHeight","showClean","defaultValue","setValue","Select","menus","menuMaxHeight","ChooseStandardAndVerify","onNext","setLoading","checkFailed","setCheckFailed","setStandard","textAlign","values","Button","variant","async","valid","metadata","support_icrc2","DIP20Adapter","data","error","console","DIP20_WICP","DIP20WICPAdapter","DIP20_XTC","DIP20XTCAdapter","EXTAdapter","icrc2Adapter","standards","icrc2","icrc1_supported_standards","_valid","i","icrc1Adapter","icrc1","tokenStandardVerification","disabled","startIcon","CircularProgress","WarningIcon","clipPath","transform","ConfirmImport","_verification$metadat","onImportSuccessfully","verification","riskWarning","setRiskWarning","updateTokenStandard","useUpdateTokenStandard","openSuccessTip","useSuccessTip","getTokenStandard","Modal","marginRight","src","TextButton","link","INFO_URL","top","ml","target","handleConfirm","__standard","registerTokens","step","setStep","setVerification","onNo","FilledTextFieldLabel","required","labelSize","Value","_ref3","_menus$filter$0$label","_menus$filter$","select","helperText","menu","marginTop","_ref4","_props$fontSize","_props$fontSize2","_props$placeholderSiz","_props$placeholderSiz2","CustomNoData","menuDisabled","multiline","onFocus","inputBox","normal","border0","minHeight","text","primary","borderColor","anchorEl","setAnchorEl","inputRef","useRef","outerBoxRef","menuWidth","setMenuWidth","focus","_inputRef$current2","current","_outerBoxRef$current","clientWidth","_inputRef$current","currentTarget","flex","TextField","_ref6","disableUnderline","autoComplete","KeyboardArrowDownIcon","Boolean","Menu","handleClose","anchorOrigin","vertical","horizontal","PaperProps","style","MenuItem","_ref5","handleMenuItemClick","_path","_path2","_extends","assign","bind","n","arguments","hasOwnProperty","call","apply","SvgExternalLink","svgRef","titleId","fillRule","clipRule","ForwardRef","ConnectorIcon","Connector","IC","ME","ICPSwap","INFINITY","Metamask","NFID","PLUG","STOIC","AddressSection","labelColor","copyRef","connector","useConnectorType","wordBreak","alt","handleCopy","_copyRef$current","Copy","ExternalLink","handleToExplorer","mockALinkAndOpen","AccountSection","useAccountPrincipalString","principalToAccount","explorerLink","ProfileSection","LogoutIcon","titleContainer","lg","detailItem","marginBottom","closeButton","right","secondary","main","LogoutConfirmModal","onConfirm","Dialog","DialogTitle","DialogContent","spacing","disableElevation","type","LogOutSection","onLogout","logoutConfirmOpen","setLogoutConfirmOpen","logout","useUserLogout","paper","navContainer","minWidth","profileChip","transition","mode","dark","light","profileLabel","listItem","paddingLeft","marginLeft","profileRoot","defaultGradient","lightPrimaryMain","ICRocksLoadIcon","matchDownMD","setOpen","anchorRef","prevOpen","isConnected","useConnectorStateConnected","connectorType","walletManager","useWalletConnectorManager","contains","ButtonBase","Chip","root","shorten","Popper","placement","role","disablePortal","popperOptions","modifiers","options","offset","TransitionProps","Fade","Paper","ClickAwayListener","onClickAway","List","boxShadow","loadingContainer","left","paddingTop","mask","ListLoading","maskBackground","alignContent","zIndex","LoadingImage","circularSize","maskBorderRadius","Maintenance","flexDirection","MaintenanceSVG","useMuiTheme","ReclaimTips","message","onReclaimClick","tipKey","poolId","history","useHistory","closeStep","useCloseStep","to","msg","replace","Panel","_menu$selectLabel","showBackground","valueColor","panel","showClose","setShowClose","onMouseEnter","handleMouseEnter","onMouseLeave","handleMouseLeave","selectLabel","CloseIcon","rotate","DropDownMenu","multiple","onSearch","search","hasSearch","customLabel","menuFilter","minMenuWidth","onMenuClick","anchor","setSearch","oldSelected","findIndex","newSelected","darkLevel3","handleSearchChange","Search","maxHeight","isFiltered","handleCheckboxChange","selectedValue","panelPadding","wrapperRef","_wrapperRef$current","selectedMenu","isTokenHide","ledger_id","TokenMenuItem","generateLogoUrl","SelectToken","onTokenChange","defaultPanel","allTokensOfSwap","useAllTokensOfSwap","additional","JSON","stringify","parse","fromText","__principal__","StepViewButton","useStepManager","ButtonConnector","manager","dot","animationDuration","animationIterationCount","dot1","animationName","dot2","dot3","backdrop","FullscreenLoading","maskClosable","onMaskClick","dispatch","useAppDispatch","loadingInitial","useAppSelector","state","Backdrop","closeLoading","Wrapper","ViewMore","AddIcon","ArrowIcon","SelectedToken","selectedTokenIds","setToken","selectorOpen","setSelectorOpen","handleSelectToken","CurrencySelector","FindPositionsModal","openTip","setError","tokenA","setTokenA","tokenB","setTokenB","ele","updateStoreUserPositionPool","useUpdateUserPositionPools","poolData","positionIds","getUserPositionIds","updateUserPositionPoolId","TextFieldNumberComponent","other","NumericFormat","inputMode","getInputRef","onValueChange","NumberTextField","_textFiledProps$Input","numericProps","textFiledProps","inputComponent","inputProps","decimalScale","allowNegative","thousandSeparator","NumberFilledTextField","_textFieldProps$Input","_numericProps$allowNe","_numericProps$thousan","textFieldProps","Tooltip","tips","iconSize","iconColor","MuiTooltip","timeout","PopperProps","arrow","HelpCircle","TabPanel","tabs","active","fontNormal","activeWithSearch","bg0","bg1","location","useLocation","activeButtonKey","setActiveButtonKey","tab","path","pathname","darkLevel1","loadPage","textPrimary","CollapseText","description","AlertCircle","Collapse","appear","in","textDecoration","userSelect","Link","ReactLink","href","rel","primaryMain","closeButton1","confirmText","cancelText","showConfirm","showCancel","confirmDisabled","contentPadding","down760","isElement","_props$dialogProps","NoDataIcon","customization","noDataContainer","React","capitalise","charAt","toUpperCase","slice","originKeyExtractor","isDefined","focusable","flexShrink","CheckIcon","ErrorIcon","InfoIcon","default","success","warning","info","TransitionStatus","Transition","constructor","super","initialStatus","this","appearStatus","EXITED","ENTERING","ENTERED","unmountOnExit","mountOnEnter","UNMOUNTED","status","nextCallback","getDerivedStateFromProps","nextIn","componentDidMount","updateStatus","componentDidUpdate","prevProps","nextStatus","EXITING","componentWillUnmount","cancelNextCallback","getTimeouts","enter","exit","mounting","performEnter","performExit","setState","node","nodeRef","isAppearing","timeouts","onEnter","safeSetState","onEntering","onTransitionEnd","onEntered","onExit","onExiting","onExited","cancel","nextState","callback","setNextCallback","handler","doesNotHaveTimeoutOrListener","addEndListener","setTimeout","render","_id","_in","_mountOnEnter","_unmountOnExit","_appear","_enter","_exit","_timeout","_addEndListener","_onEnter","_onEntering","_onEntered","_onExit","_onExiting","_onExited","_nodeRef","childProps","noop","defaultProps","setRef","useForkRef","refA","refB","refValue","getTransitionProps","_style$transitionDura","duration","transitionDuration","easing","transitionTimingFunction","delay","transitionDelay","defaultEasing","easeInOut","easeOut","easeIn","sharp","formatMs","milliseconds","Math","round","createTransition","Array","isArray","animatedProp","formattedDuration","formattedDelay","join","ownerWindow","doc","ownerDocument","document","defaultView","window","setTranslateValue","direction","rect","getBoundingClientRect","containerWindow","fakeTransform","computedStyle","getComputedStyle","getPropertyValue","offsetX","offsetY","transformValues","split","parseInt","innerWidth","innerHeight","getTranslateValue","webkitTransform","Slide","inProp","handleRefIntermediary","handleRef","updatePosition","handleResize","func","wait","debounced","_len","args","_key","clearTimeout","later","clear","debounce","addEventListener","removeEventListener","TransitionComponent","handleEnter","snackId","scrollTop","reflow","transitionProps","webkitTransition","handleExit","handleExited","visibility","defaults","maxSnack","persist","hideIconVariant","disableWindowBlurListener","autoHideDuration","iconVariant","defaultIconVariants","merge","getAutoHideDuration","optionsDuration","propsDuration","isNumberOrNull","numberish","getTransitionDuration","is","types","some","getAutoHeightDuration","constant","ComponentClasses","entered","collapsedSize","timer","autoTransitionDuration","getWrapperSize","clientHeight","handleEntered","wrapperSize","duration2","next","clsx","pointerEvents","bottom","toSnackbarAnchorOrigin","createChainedFunction","funcs","reduce","acc","argums","useEnhancedEffect","useEventCallback","fn","SnackbarProps","timerAutoHide","setAutoHideTimer","autoHideDurationParam","handlePause","handleResume","flexWrap","flexGrow","letterSpacing","paddingRight","iconWrapper","messageContent","extraContent","action","close","line","successDark","danger","MaterialDesignContent","forwardedRef","componentOrFunctionAction","tick","setTick","icon","isLoading","SnackbarContent","memo","wrappedRoot","SnackbarItem","styles","collapsed","setCollapsed","snack","handleExitedScreen","col","allClasses","Component","containerClasses","containerRoot","containerAnchorOriginTopCenter","containerAnchorOriginBottomCenter","containerAnchorOriginTopRight","containerAnchorOriginBottomRight","containerAnchorOriginTopLeft","containerAnchorOriginBottomLeft","obj","keepSnackbarClassKeys","componentOrFunctionContent","otherSnack","callbacks","cbName","Snackbar","requestClose","indents","dense","collapseWrapper","boxSizing","xsWidthMargin","rootDense","center","SnackbarContainer","combinedClassname","SnackbarProvider","_this","enqueueSnackbar","opts","preventDuplicate","hasSpecifiedKey","Date","getTime","random","merger","compareFunction","inQueue","queue","inView","snacks","handleDisplaySnack","handleDismissOldest","processQueue","popped","ignore","handleEnteredSnack","handleCloseSnack","reason","shouldCloseAll","closeSnackbar","toBeClosed","handleExitedSnack","newState","contextValue","domRoot","Components","categ","category","existingOfCategory","snackbars","origin","nomineeSnack","SnackbarContext","createPortal","PageSizeList","count","onPageChange","onPageSizeChange","defaultPageSize","flexEnd","showPageSize","pageNum","setPageNum","pageSize","setPageSize","MainCard","level","PaginationComponent","ceil","Number","page","shape","paginationChange","ExpandMoreRoundedIcon","keepMounted","transformOrigin","pageSizeChange","trackBorder","darkTextSecondary","trackActiveBorder","darkSecondaryMain","switchBase","thumb","track","transitions","focusVisible","_Switch","Switch","focusVisibleClassName","disableRipple","StandardText","StandardLabelBg","CanisterIdsJson","require","temp_canister_ids","canisterIds","canister","network","getCanisterId","canisterName","CANISTER_NAMES","TOKEN_CANISTER_CONTROLLER","TOKEN_SERVICE","SWAP_POSITION_MANAGER","WICP","NETWORK","FILE","NFTCanisterController","SwapNFTCanister","V3NFTCanister","V3TradeStat","NFTTrade","FileCanister","V1StakingController","SingleSmartChef","SwapStaker","VOTE","FileActor","SwapRecord","SwapGraphPool","TokenList","V3SwapFactory","V3SwapPool","V3SwapNFT","PassCodeManager","ClaimStorage","VotingFileCanister","FarmController","StakingTokenController","StakeIndex","NodeIndex","GlobalIndex","fileCanisterId","WICPCanisterId","NFTTradeTokenCanisterId","V3SwapNFTCanisterId","VotingFileCanisterId","FarmControllerId","PassCodeManagerId","Actor","setActorCanisterIds","setHost","host","ALL_CANISTER_IDS","ckBTC_ID","ckBTC_MINTER_ID","ckBTC_DASHBOARD","DISSOLVE_FEE","API_LINKS","ChainId","MAINNET","SEPOLIA","LEDGER_ID","MINTER_ID","DASHBOARD","CANISTER","chain","ETH_MINT_CONTRACTS","ckETH_LEDGER_ID","ckETH_MINTER_ID","ckETH_DASHBOARD","ckETH_CANISTER","ckETH_MINTER_CONTRACT","EXPLORER_TX_LINK","EXPLORER_TX_LINKS","EXPLORER_BLOCK_LINK","EXPLORER_BLOCK_LINKS","EXPLORER_ADDRESS_LINK","EXPLORER_MAPS","EXPLORER_CONTRACT_LINK","MIN_WITHDRAW_AMOUNT","ckETHToken","ckSepoliaETH","CYCLES_MINTING_CANISTER_ID","ResultStatus","NONE_PRICE_SYMBOL","DEFAULT_PERCENT_SYMBOL","NONE_TOKEN_SYMBOL","REACT_GA_TRACKING_ID","NFT_UPLOAD_FILES","CurrencyAmountFormatDecimals","LOCAL","APP_URL","DAYJS_FORMAT","AnonymousPrincipal","SAFE_INTEGER_LENGTH","MAX_VALUE","SAFE_DECIMALS_LENGTH","MAX_SWAP_INPUT_LENGTH","SUPPORTED_LOCALES","DEFAULT_LOCALE","Bound","FIELD","DEFAULT_FEE","FeeAmount","LOW","MEDIUM","HIGH","BURN_FIELD","DEFAULT_SWAP_SLIPPAGE","DEFAULT_MINT_SLIPPAGE","DEFAULT_BURN_SLIPPAGE","SLIPPAGE_TOLERANCE","MAX_SLIPPAGE_TOLERANCE","getDefaultSlippageTolerance","_SLIPPAGE_TOLERANCE$f","slippageToPercent","slippage","Percent","DEFAULT_TRANSACTIONS_DEADLINE","DEFAULT_MULTIPLE_APPROVE","ZOOM_LEVEL_INITIAL_MIN_MAX","min","max","ADD_LIQUIDITY_REFRESH_KEY","INCREASE_LIQUIDITY_REFRESH_KEY","OFFICIAL_CANISTER_IDS","V2Ids","OLD_CANISTER_IDS","SOCIAL_LINKS","NFTTradeFee","MAX_NFT_MINT_SUPPLY","hostMap","process","isIC","SWAP_FIELD","DEFAULT_SWAP_INPUT_ID","WRAPPED_ICP","DEFAULT_SWAP_OUTPUT_ID","SWAP_REFRESH_KEY","WRAPPED_ICP_METADATA","WRAPPED_ICP_TOKEN_INFO","transFee","BigInt","totalSupply","XTC","CAT","MOD","BoomDAO","ICX","NUA","SONIC","ckBTCSVG","ckETHSVG","DISPLAY_IN_WALLET_FOREVER","NO_HIDDEN_TOKENS","DEFAULT_CHAIN_ID","SUPPORTED_CHAINS","chainIdToNetwork","getExplorerAddress","getMinterDashboard","minterId","getIcDashboard","COLORS","NOT_START","LIVE","FINISHED","CLOSED","DEFAULT","useStateColors","usePools","filterState","stakeTokenId","rewardTokenId","limit","pools","setPools","isAvailablePageArgs","getStateValueByFilterState","FilterState","YOUR","_poolsResult$content","poolsResult","getUserStakePools","infos","all","getStakingPoolFromController","pool","stakingPool","flat","getStakePools","useUserUnusedTokenByPool","stakingTokenId","reload","setData","getTokenBalance","SubAccount","fromPrincipal","toUint8Array","getAllTokenPools","getPaginationAllData","getStakingPools","useUserUnusedTokens","balances","setBalances","poolsLoading","usePaginationAllData","useStakingTokenAllPools","stakingToken","calls","OK","rewardToken","useIntervalUserPoolInfo","refresh","getStakingTokenUserInfo","useIntervalFetch","useIntervalStakingPoolInfo","forceUpdate","setForceUpdate","update","getStakingTokenPool","useInterval","useSwapApprove","openErrorTip","useErrorTip","multipleApprove","useMultipleApproveManager","amount","allowedBalance","allowance","owner","spender","multipleApproveAmount","approve","account","usePositionsValuesByInfos","allTokenInfos","useInfoAllTokens","positions","tokenIds","tokens","useTokens","poolKeys","_e$","_e$2","arg","_pools$index","positionInfos","Position","liquidity","tickLower","tickUpper","useMultiplePositions","_totalValue2","totalValue","_allTokenInfos$find","_allTokenInfos$find2","token0Amount","amount0","toExact","token1Amount","amount1","token0Price","priceUSD","token1Price","_totalValue","plus","usePositionsValueByInfos","useWithdrawPCMBalanceCallback","closeTip","__amount","tokenTransFee","loadingKey","toFormat","MessageTypes","destroyPassCode","withdrawPCMBalance","_result$message","useSortedPositions","sort","feesValue","positionValue","PositionSort","Default","FeesValue","a","b","keyA","encodePositionKeyByPool","keyB","valueA","valueB","isGreaterThan","PositionValue","getTokenInsufficient","subAccountBalance","unusedBalance","formatTokenAmount","isNullArgs","isLessThan","isUseTransfer","useSwapPositionsMultipleFarm","farms","setPositions","prev","curr","positionId","farm","getSwapPosition","useUserPassCodes","usePassCode","useSwapTokenFeeCost","tokenBalance","tokenInsufficient","useLiquidityLocksImage","principalId","governanceId","allSnsTokensInfo","useStateSnsAllTokensInfo","governance_canister_id","useSnsTokenInfoByGovernance","useToken","getTokenActualTransferRawAmount","rawAmount","getTokenActualDepositRawAmount","usePoolCanisterId","token0CanisterId","token1CanisterId","String","updatePoolCanisterId","usePoolCanisterIdManager","getPoolCanisterId","useSwapDeposit","openExternalTip","useTransfer","isUseTransferByStandard","ERROR","_status","_message","deposit","depositFrom","useSwapTransfer","_principal$toString","tokenTransfer","from","subaccount","useSwapWithdraw","withdraw","usePoolBalanceMaxSpend","subBalance","isEqualTo","CurrencyAmount","fromRawAmount","minus","useBalanceMaxSpend","__allowance","allowanceCanisterId","nonNullArgs","useAllowance","innerAllowance","useAllBalanceMaxSpend","maxBalanceSpend","maxPoolBalanceSpent","currency","equals","add","PoolState","transformedKeyToKey","transformedKey","withoutVerify","transformedPoolKeys","currencyA","currencyB","feeAmount","wrapped","sortsBefore","element","poolMetadata","getSwapPoolMetadata","ticks","getPool_update_call","INVALID","LOADING","NOT_EXISTS","__token0","__token1","EXISTS","NOT_CHECK","Pool","numberToString","usePool","useTokenSwapPools","allPools","useSwapPools","useTokensHasPairWithBaseToken","tokenPools","hasPairWithBaseToken","useReclaimCallback","closeAllSteps","useCloseAllSteps","sortedInsert","items","maxSize","comparator","invariant","isFull","lo","hi","mid","pop","Route","input","output","_midPrice","wrappedInput","involvesToken","tokenPath","entries","currentInputToken","nextToken","midPrice","price","nextInput","multiply","Price","denominator","numerator","tradeComparator","inputAmount","outputAmount","equalTo","swaps","total","cur","route","lessThan","Trade","_inputAmount","inputCurrency","totalInputFromRoutes","_outputAmount","outputCurrency","totalOutputFromRoutes","executionPrice","_executionPrice","quotient","priceImpact","_priceImpact","spotOutputAmount","quote","subtract","divide","exactIn","amountIn","fromRoute","TradeType","EXACT_INPUT","exactOut","amountOut","EXACT_OUTPUT","tradeType","amounts","getOutputAmount","fromFractionalAmount","getInputAmount","routes","fromRoutes","populatedRoutes","createUncheckedTrade","constructorArguments","createUncheckedTradeWithMultipleRoutes","every","numPools","poolAddressSet","getAddress","minimumAmountOut","slippageTolerance","ZERO","slippageAdjustedAmountOut","Fraction","ONE","invert","maximumAmountIn","slippageAdjustedAmountIn","worstExecutionPrice","bestTradeExactIn","currencyAmountIn","currencyOut","maxNumResults","maxHops","currentPools","nextAmountIn","bestTrades","tokenOut","isInsufficientInputAmountError","isToken","poolsExcludingThisPool","bestTradeExactOut","currencyIn","currencyAmountOut","nextAmountOut","tokenIn","isInsufficientReservesError","allCurrencyCombinations","t0","t1","allCurrencyCombinationsWithAllFees","list","tuple","noLiquidity","computeAllRoutes","currentPath","allPaths","startCurrencyIn","pathPool","poolEquals","poolA","poolB","outputToken","useAllRoutes","singleHopOnly","useIsSingleHop","TradeState","useBestTrade","typedValue","actualSwapValue","routesLoading","zeroForOne","tradePoolId","_routes$","_routes$$pools$","params","greaterThan","_route$pools$","_route$input","_route$input$wrapped","_route$output","_route$output$wrapped","_route$input2","_route$pools$2","useSwapPoolAvailable","exactInputLoading","_quotesResults","useQuoteExactInput","quotesResults","trade","bestRoute","currentBest","tryParseAmount","VALID","NO_ROUTE_FOUND","resultFormat","swapPool","getUserPositionIdsByPrincipal","sortedToken","sortToken","getSwapPool","getSwapTokenArgs","_token0","_token1","createSwapPool","usePositionDetailsFromId","useCallsData","tokensOwed0","tokensOwed1","feeGrowthInside0LastX128","feeGrowthInside1LastX128","getPositionDetailsFromId","_args","amountOutMinimum","useStateCallsData","token0Id","token1Id","getPoolTokenAmounts","_getSwapPoolAllBalance","balance0","balance1","usePoolIdsFromKey","setIds","queries","usePoolsTokenAmountsFromKey","setAmounts","results","useUserSwapTransactions","storageIds","useInfoUserStorageIds","storageId","getInfoUserStorageIds","userStorage","get","getSwapPoolAvailable","icpAdapter","transfer","identity","tokenAdapter","new_message","useTokenSupply","supply","getTokenSupply","getTokenMetadata","getTokenListLogo","tokenList","getLogo","isICRCToken","tokenStandard","getTokenInfo","_getTokenStandard","TokenDefaultLogo","useERC20TokenByChainKeyId","chainKeyMinterInfo","tokenAddress","supported_ckerc20_tokens","chainKeyInfo","erc20_contract_address","useTokenFromActiveNetwork","store","getState","tokenCache","ICP_TOKEN_INFO","spenderSub","ownerSub","getAdapterByName","useApprove","TxReceipt","Ok","Err","InsufficientAllowance","InsufficientBalance","ErrorOperationStyle","Unauthorized","LedgerTrap","ErrorTo","Other","BlockUsed","AmountTooSmall","Metadata","Nat8","TokenInfo","holderNumber","Nat64","deployTime","historySize","cycles","feeTo","balanceOf","cleanOutOldAllowances","filterAllowancesArray","Tuple","getASize","getAgeAllowanceLimit","getAllowanceSize","getAllowancesArray","getMaxAllowances","getMetadata","getResultArrayIndex","getSpendersSize","getTokenFee","getUserApprovals","setAgeAllowanceLimit","setFee","setLogo","setMaxAllowances","setName","setOwner","transferFrom","ORG_ID","ogy","OGY_IDL","BALANCE_ADAPTER_IDS","isNeedBalanceAdapter","subAccount","isPrincipal","balanceAdapter","sub","fromBytes","isOkSubAccount","AccountIdentifier","toHex","user","useLatestDataCall","_result$data$toString","_result$data","useCurrencyBalance","storeResult","setStoreResult","isNaN","toNumber","useStoreTokenBalance","IdbKeyVal","dbName","storeName","version","db","_openDbStore","__awaiter","openDB","upgrade","database","oldVersion","newVersion","transaction","createObjectStore","objectStoreNames","objectStore","catch","isLessThanCurrentVersion","deleteDB","_db","_storeName","set","put","_setValue","_a","_getValue","remove","delete","_removeValue","getAll","_getAllValues","getPromisesAwait","__calls","splitArr","res","warn","loadTokens","STORAGE_TIME_KEY","STORAGE_EXPIRE_TIME","storage","DB_VERSION","initializedDb","getStorageTokenInfo","storageInfo","setStorageTokenInfo","updateTokenStorageTime","time","val","localStorage","getItem","new_val","setItem","isNeedUpdateTokenInfo","storage_time","_tokenId","getTokenStorageTime","isStorageInfoValid","_getTokenInfo","baseTokenInfo","TokenInfoState","useTokensInfo","tokenInfos","setTokenInfos","loadings","setLoadings","localTokens","fetch_token_info","tokeInfo","localToken","getStorageInfoErrored","useTokenLogo","useCallKeysIndexManager","callKey","callAllIndex","callKeys","_updateCallKeyIndex","callIndex","updateCallKeys","stateCallIndex","useOldData","_useCallResult","callResults","updateCallResult","useUpdateCallResult","callKeyIndex","updateCallKeyIndex","stateIndex","getCallIndex","UseCurrencyState","queryLoading","_getTokenStandard2","GlobalContext","useGlobalContext","useRefreshTrigger","refreshTriggers","force","interval","_call","setInterval","clearInterval","stepKey","newStepKey","useStepCalls","updateCallStep","useUpdateCallStep","_calls","reset","retry","_err","currentStep","errorStep","TipTypes","TIP_ERROR","TIP_LOADING","useSnackbar","messageKey","openCallback","closeCallback","useLoadingTip","useFullscreenLoading","isOpen","openLoading","useICPPrice","ICPPriceList","global","useUSDPrice","_currency","graphToken","useInfoToken","baseToken","icpPriceNumber","baseTokenPrice","toFixed","useCurrentBlockTimestamp","multicall","useInterfaceMulticall","supportedActiveChain","useSupportedActiveChain","getCurrentBlockTimestamp","useActiveChain","chainId","useWeb3React","useETHBalance","setBalance","web3","Web3","eth","getBalance","useWeb3CallsData","useFetchBlockNumber","provider","useSwr","getBlockNumber","refreshInterval","useBlockNumber","useSWRImmutable","DEFAULT_NETWORKS","GOERLI","constructSameAddressMap","additionalNetworks","OPTIMISM","ARBITRUM_ONE","POLYGON","POLYGON_MUMBAI","AVALANCHE","BASE","BNB","CELO","BLAST","DEFAULT_ADDRESSES","v3CoreFactoryAddress","multicallAddress","quoterAddress","v3MigratorAddress","nonfungiblePositionManagerAddress","MAINNET_ADDRESSES","v1MixedRouteQuoterAddress","GOERLI_ADDRESSES","OPTIMISM_ADDRESSES","ARBITRUM_ONE_ADDRESSES","tickLensAddress","POLYGON_ADDRESSES","CELO_ADDRESSES","CHAIN_TO_ADDRESSES_MAP","CELO_ALFAJORES","swapRouter02Address","OPTIMISM_GOERLI","OPTIMISM_SEPOLIA","ARBITRUM_GOERLI","ARBITRUM_SEPOLIA","BASE_GOERLI","ZORA","ZORA_SEPOLIA","ROOTSTOCK","MULTICALL_ADDRESSES","providers","WeakMap","useEthersWeb3Provider","client","useClient","transport","Web3Provider","mainnet","clientToWeb3js","abi","MulticallABI","UniswapInterfaceMulticallJson","useContract","addressOrAddressMap","ABI","withSignerIfPossible","ethersProvider","_provider$network","_provider$network2","getContract","useETHContract","useERC20Contract","contract","ERC20ABI","useERC20MinterHelperContract","ERC20HelperAbi","useTokenName","useTokenSymbol","useTokenDecimals","ERC20Token","hostname","match","GoogleAnalytics","ReactGA","RISK_WARNING_INDEX","RISK_STORAGE_NAME","RiskStatementModal","onRead","isRead","setIsRead","components","0","handleRead","setRiskStorage","RiskStatement","riskStatementShow","setRickStatementShow","storageRisk","getRiskStorage","ErrorImage","xmlnsXlink","maskUnits","x","y","patternContentUnits","xlinkHref","Background","GlobalTips","V3Event","handleToTwitter","Logo","logoDark","LogoSection","MAX_NUMBER","MOBILE_MAX_NUMBER","subMenus","rx","popper","SubMenuPopper","_route$subMenus","subMenuKey","pathName","MenuList","subRoute","Icon","ExceedRoutesPopper","subMenuOpenKey","setSubMenuOpenKey","subMenuTarget","setSubMenuTarget","handleSubMenuMouseLeave","handleSubMenuClose","handleMenuClick","autoFocusItem","_route$path","handleSubMenuMouseEnter","navItem","more","ExceedRoutes","Routes","handleMenuMouseLeave","handleRouteClick","_route$path2","_route$path3","handleMenuMouseEnter","ChevronDown","NavBar","SvgLogo1","x1","y1","x2","y2","gradientUnits","stopColor","SvgArrowDown","onRouteClick","collapseKey","setCollapseKey","borderBottom","ArrowDownIcon","MobileNavbar","exceedOpen","setExceedOpen","_route$link","noExceedRoutes","exceedRoutes","XCircle","customizeBreakPoints","createTheme","md","Header","drawerOpen","setDrawerOpen","DensityMediumIcon","handleToggleDrawer","mr","Navbar","Drawer","SnsTips","appBar","borderBottomLeftRadius","borderBottomRightRadius","leavingScreen","mainContent","SMALL_PADDING_PATH","MainLayout","show","setShow","globalTipShow","setGlobalTipShow","snsTipShow","setSnsTipShow","isSmallPadding","CssBaseline","AppBar","elevation","Layout","Fallback","eventId","errorString","test","handleCopyError","_error$toString","ErrorBoundary","Sentry","fallback","loadingWrapper","animation","ConnectorComponent","walletConnectorManager","selfConnector","setSelfConnector","WalletConnector","init","_window$ic","_window$ic2","ic","infinityWallet","ConnectorType","plug","connect","walletBox","walletWrapper","walletComingSoon","Wallets","1","wallet","LinearLoader","LinearProgress","getAllClaimEvents","getClaimEvents","Tokens","ckSepoliaUSDC","GreenCircleLoading","thickness","Arrow","SuccessIcon","filterUnits","colorInterpolationFilters","floodOpacity","stdDeviation","in2","operator","ActionIcon","activeStep","showErrorHint","_StepDetails","openedSteps","setOpenedSteps","isStepOpened","skipError","borderTopLeftRadius","borderTopRightRadius","newOpenedSteps","handleStepClick","borderLeft","borderRight","ele1","errorMessage","errorActions","StepItem","useStepDetails","StepDetails","GlobalSteps","useOpenedSteps","INTERVAL","timeOfMessages","useHandleActorError","onError","last_time","now","isNewMessage","useActorSubmit","onSubmit","auth","walletType","getPrincipal","isCurrentAccount","waitRandom","ms","CanceledError","RetryableError","RETRY_OPTIONS_BY_CHAIN_ID","minWait","maxWait","DEFAULT_RETRY_OPTIONS","Updater","pendingTransactions","onCheck","onReceipt","lastBlockNumber","removeTransaction","useTransactionRemover","blockTimestamp","getReceipt","hash","_RETRY_OPTIONS_BY_CHA","rejectCancelled","completed","promise","reject","getTransactionReceipt","receipt","tx","deadline","addedTime","cancels","lastCheckedBlockNumber","blocksSinceCheck","minutesPending","shouldCheck","blockNumber","toSerializableReceipt","blockHash","contractAddress","transactionHash","transactionIndex","transactions","isPendingTx","checkedTransaction","finalizeTransaction","LibUpdater","wagmiConfig","createConfig","chains","sepolia","transports","http","DisableIframe","sameOrigin","setSameOrigin","_top","self","CONNECTIONS","injectedConnection","getConnection","c","connection","SELECTABLE_WALLETS","ConnectionType","COINBASE_WALLET","WALLET_CONNECT","INJECTED","_metamask$connectEage","metamask","connectEagerly","connectors","orderedConnectionTypes","web3Connectors","hooks","Web3ReactProvider","snackbarInitial","snackbar","MuiSnackbar","Alert","severity","alertSeverity","bgcolor","IconButton","handleClickClose","withRouter","scrollTo","behavior","primaryLight","primary200","primaryDark","primary800","secondaryLight","secondary200","secondaryDark","secondary800","successLight","success200","successMain","errorLight","errorMain","orangeLight","orangeMain","orangeDark","warningLight","warningMain","warningDark","grey50","grey100","grey200","grey300","grey500","grey600","grey700","grey900","darkPaper","darkBackground","darkLevel2","darkLevel4","darkLevel5","darkTextPrimary","darkTextTertiary","darkTextFourth","darkTextFifth","disable","lightTextTitle","lightTextPrimary","lightTextSecondary","lightTextTertiary","lightTextFourth","lightTextFifth","lightLevel2","lightLevel4","lightLevel5","lightGray50","lightGray200BorderColor","darkPrimaryLight","darkPrimaryMain","darkPrimaryDark","darkPrimary200","darkPrimary800","darkPrimary400","darkSecondaryLight","darkSecondaryDark","darkSecondary200","darkSecondary800","defaultGradientStart","defaultGradientEnd","border1","apr","MuiTheme","componentStyleOverrides","globalButtonBackground","menuHoverBackground","menuSelectedBack","CircularProgressKeyframes0","keyframes","_templateObject","_taggedTemplateLiteral","CircularProgressKeyframes1","_templateObject2","MuiTypography","styleOverrides","MuiButton","textTransform","containedPrimary","containedSecondary","MuiPaper","backgroundImage","rounded","MuiCardHeader","textDark","MuiCardContent","paddingBottom","MuiCardActions","MuiAlert","outlined","MuiButtonBase","menuBackground","menuSelected","MuiListItemIcon","MuiListItemText","MuiInputBase","MuiOutlinedInput","inputAdornedStart","notchedOutline","MuiSlider","mark","valueLabel","MuiAutocomplete","MuiDivider","divider","MuiSelect","MuiCheckbox","MuiAvatar","MuiChip","MuiTimelineContent","MuiTreeItem","MuiTimelineDot","MuiInternalDateTimePickerTabs","MuiTabs","flexContainer","MuiDialog","MuiTable","MuiTableCell","textTertiary","tooltip","MuiPagination","nav","MuiTableContainer","MuiStepper","MuiBreadcrumbs","MuiSwitch","MuiGrid","MuiPopover","MuiList","MuiCircularProgress","themePalette","common","black","orange","grey","heading","tertiary","textLight","orangeWarning","theme_primary","theme_secondary","backgroundDefault","level5","gray200","avatar","gray200BgColor","themeTypography","fontFamily","h6","h5","h4","h3","h2","h1","subtitle1","subtitle2","caption","body1","body2","customInput","menuCaption","subMenuCaption","commonAvatar","smallAvatar","mediumAvatar","largeAvatar","sm","Radius","rtlLayout","mixins","overflowEllipsis","overflowEllipsis2","typography","radius","PageNotFound","Loadable","Suspense","Loader","Wallet","lazy","Farms","Farm","CreateFarm","Staking","StakingDetails","StakingTokenCreate","StakingTokenV1","Swap","SwapPro","Liquidity","AddLiquidity","IncreaseLiquidity","DecreaseLiquidity","SwapReclaim","SwapFindMisTransferToken","SwapRevokeApprove","PCMReclaim","NFTView","WalletNFTView","NFTMint","Console","ConsoleBurn","NFTCanisterList","NFTCanisterCreate","NFTCanisterDetails","NFTCollectMarket","NFTMarketCollections","Voting","VotingProject","VotingProposal","VotingCreateProposal","VoteCreateProject","TokenClaimIndex","TokenClaimTransactions","CreateTokenClaim","LiquidityV2","DecreaseLiquidityV2","Wrap","ckToken","SNSLaunches","SNSLaunch","routeConfigs","maintenancePages","MainRoutes","allPath","exact","Redirect","AuthRoutes","App","setRefreshTriggers","useFetchXDR2USD","useFetchICPPrices","useFetchInfoAllTokens","useFetchAllSwapTokens","useConnectManager","walletConnectorOpen","fetchGlobalTokensLoading","useFetchGlobalTokenList","isInitialStandardLoading","AllPools","tokensLoading","setTokensLoading","updated","setUpdated","setAllPools","getSwapPools","_allSwapPools$map","_allTokenPools$map","allSwapPools","allTokenPools","allClaimEvents","allTokenStandards","tokenCid","updateCanisters","tokenStandards","useTokenStandards","allStandards","useInitialTokenStandard","queryClient","QueryClient","handleRefreshTriggers","_refreshTriggers$key","WagmiProvider","config","QueryClientProvider","StyledEngineProvider","injectFirst","TransactionsUpdater","ThemeProvider","ActorInitial","NavigationScroll","anonymizeIp","customBrowserType","isMobile","testMode","debug","parseLocale","maybeSupportedLocale","lowerMaybeSupportedLocale","toLowerCase","locale","useActiveLocale","_useAppSelector","userLocale","navigator","language","region","_parseLocale","navigatorLocale","LanguageProvider","loaded","setLoaded","messages","loadLocaleData","plurals","load","activate","dynamicActivate","I18nProvider","isStagingEnv","REACT_APP_STAGING","dsn","environment","enabled","tracesSampleRate","_process$env$REACT_AP","REACT_APP_SENTRY_TRACES_SAMPLE_RATE","beforeSend","_error$message","_error$message2","_error$message3","_error$message4","stack","DOMException","shouldRejectError","integrations","BrowserTracing","startTransactionOnLocationChange","startTransactionOnPageLoad","onerror","url","row","_error","getElementById","createRoot","PersistGate","persistor","BrowserRouter","serviceWorker","ready","registration","unregister","TokenLocales","insufficient_cycles_balance","invalid_value","has_been_initialized","no_sufficient_balance","unsupported_operator","no_balance","no_enough_balance","permission_deined","not_mint_token_list","max_tokens_limit","token_exists","invaild_token_symbol","insufficient_ics_balance","mint_token_error","handling_fee_error","SwapLocales","NFTLocals","NFT_claim_paused","NFT_claim_email_code_error","NFT_was_claimed","NFT_claim_exceeded","NFT_token_not_exist","permission_denied","can_not_find_token","StakingLocals","WICPLocales","error_to_address","amount_too_small","used_block_height","block_error","insufficient_funds","unexpected_error","VoteMessages","XTCMessages","InvalidTokenContract","NotSufficientLiquidity","MessageMaps","getLocaleMessage","KEY","getAllCanisters","allCanisters","storageAllCanisters","setAllCanisters","login","createAction","updateConnected","updateWalletConnector","getConnectorType","isMeWebview","isUnLocked","session","getStoreWalletUnlocked","updateAuth","getConnectorPrincipal","mnemonic","STOIC_MNEMONIC","password","_updateLockStatus","updateLockStatus","locked","icConnector","disconnect","connectorStateConnected","new_connector","expired","getConnectorIsConnected","connectToConnector","setConnector","setActorHttpAgent","useAccount","manage","updateCallIndex","changeTheme","updateLocal","updateHideUnavailableClaim","updateXDR2USD","updateICPPriceList","updateUserLocale","updateTokenList","updateAllSwapTokens","getExchangeRate","pair","exchangeRate","get_exchange_rate","useXDR2USD","rate","getXDR2USD","use100ICPPriceInfo","start","fetch_result","fetch","json","icp_xdr_conversion_rates","get100ICPPriceInfo","useICPPriceList","useICPAmountUSDValue","ICPPrice","useICP2CyclesManager","_ICPPriceList$xdr","_ICPPriceList","xdr","xdr_usd","xdr_usdt","icpPrices","priceList","dividedBy","times","timestamp","useTokensFromList","allTokensFromList","rank","useTokenIsInTokenList","allSwapTokens","getAllTokensOfSwap","getLimitedInfinityCall","useDispatch","useSelector","createReducer","hideUnavailableClaim","builder","addCase","payload","initialState","actionButton","openSnackbar","ckBTCAddresses","retrieveState","sortBalance","SortBalanceEnum","ALL","newTaggedTokens","updateCK_BTCAddresses","updateRetrieveState","states","block_index","old_state","unshift","txid","_states","updateWalletSortType","updateSortBalance","hasBeenClaimTestToken","swapTokenList","poolStandardUpdated","INPUT","currencyId","OUTPUT","independentField","poolCanisterIds","swapOutAmount","decreaseLiquidityAmount","typeInput","field","selectCurrency","otherField","switchCurrencies","clearSwapState","updatePoolCanisterIds","updateSwapOutAmount","updateDecreaseLiquidityAmount","leftRangeValue","rightRangeValue","startPrice","CURRENCY_A","updateFiled","updateFullRange","updateLeftRange","updateRightRange","updateStartPrice","resetMintState","userExpertMode","userSingleHop","userSelectedToken","userSlippage","swap","mint","burn","userTransactionsDeadline","showClosedPosition","userPositionPools","swapProAutoRefresh","keepTokenInPools","updateUserExpertMode","updateUserSelectedToken","updateUserSingleHop","updateUserTransactionsDeadline","updateUserSlippage","removeTaggedTokens","_ref7","_token","updateShowClosedPosition","_ref8","updateUserPositionPools","_ref9","allPoolIds","updateUserMultipleApprove","_ref10","updateSwapProAutoRefresh","_ref11","updateKeepTokenInPools","_ref12","LIQUIDITY_PERCENT","updateTypedInput","resetBurnState","userSelectedCanisters","importedNFTs","updateUserSelectedCanisters","deleteUserSelectedCanisters","importNFT","deleteNFT","allTokenIds","updateTokenStandards","updateAllTokenIds","steps","opened","closeAll","updateStepDetails","updateKey","updateData","updateSnsAllTokensInfo","userPositions","updateUserPositions","withdrawTx","erc20Transactions","updateTX","allTx","updateWithdrawTX","_payload$tx$hash","otherStates","newStates","updateErc20TX","customizationReducer","snackbarReducer","loadingReducer","walletReducer","globalReducer","SwapReducer","swapCache","SwapCacheReducer","swapLiquidity","SwapLiquidityReducer","swapBurn","SwapBurn","nft","NFTReducer","AuthReducer","callReducer","StepReducer","tokenCacheReducer","TransactionsReducer","swapV2Cache","SwapV2CacheReducer","swapV2Liquidity","SwapV2LiquidityReducer","swapV2Burn","SwapV2Burn","SnsReducer","rootPersistConfig","stateReconciler","autoMergeLevel2","blacklist","migrate","_state$_persist","_state$_persist2","_state$_persist3","_persist","SessionPersistConfig","sessionStorage","rootReducer","combineReducers","allReducer","persistReducer","sessionReducer","PersistReducer","configureStore","reducer","middleware","getDefaultMiddleware","thunk","serializableCheck","persistStore","allTokensInfo","getSnsAllTokensInfo","getStepDetails","openCall","closeCall","useStepContentManager","_getStepDetails","_prevStep$activeStep","prevStep","_getStepDetails2","getStepData","useUpdateStepData","useExpertModeManager","expertMode","toggleSetExpertMode","updateMultipleApprove","useSlippageManager","useSlippageToleranceToPercent","percentSlippage","useClosedPositionManager","bool","useStoreUserPositionPools","poolIds","useInitialUserPositionPools","storeUserPositionPools","updateStoreUserPositionPools","initialLoading","setInitialLoading","positionPools","useUserPositionPools","useSwapProAutoRefreshManager","autoRefresh","useSwapKeepTokenInPools","useSwapKeepTokenInPoolsManager","useSwapHandlers","onCurrencySelection","onSwitchTokens","debouncedSwitchTokens","onUserInput","useSwapState","useCleanSwapState","useSwapInfo","_Trade$state","userSlippageTolerance","inputCurrencyId","outputCurrencyId","inputCurrencyState","inputToken","outputCurrencyState","isExactIn","inputCurrencyBalance","outputCurrencyBalance","currencyBalances","parsedAmount","currencies","otherCurrency","debouncedTypedValue","debouncedValue","setDebouncedValue","useDebounce","__inputTokenSubBalance","__outputTokenSubBalance","inputTokenSubBalance","outputTokenSubBalance","useUserUnusedBalance","inputTokenUnusedBalance","outputTokenUnusedBalance","allowanceTokenId","maxInputAmount","inputError","inputNumberCheck","inputTokenBalance","outputTokenBalance","useLoadDefaultParams","useParsedQueryString","getSwapOutAmount","useUpdateSwapOutAmount","getDecreaseLiquidityAmount","useUpdateDecreaseLiquidityAmount","__standards","useTransactionAdder","response","nonce","addTransaction","useAllTransactions","_state$chainId","cancelled","isTransactionRecent","usePendingApprovalAmount","allTransactions","txHash","TransactionType","APPROVAL","useHasPendingApproval","_usePendingApprovalAm","_usePendingApprovalAm2","gt","transactionSlice","createSlice","reducers","_transactions$chainId","_transactions$chainId2","txs","clearAllTransactions","_transactions$chainId3","_transactions$chainId4","confirmedTime","cancelTransaction","_transactions$chainId5","cancelHash","_transactions$chainId6","actions","useUpdateTaggedTokenCallback","useDeleteTaggedTokenCallback","useUserBTCDepositAddress","useUserBTCWithdrawAddress","Uint8Array","useUpdateUserBTCDepositAddress","useUpdateUserBTCWithdrawAddress","_subaccount$","useUpdateUserTx","_Object$values$","txIdString","byteArray","reverse","byte","useUserTxs","useWalletSortManager","sortType","useSortBalanceManager","STATE","PositionFilterState","APP_META","NFID_ORIGIN","NF_ID_AUTH_URL","NF_ID_LOGIN_CONFIG","maxTimeToLive","identityProvider","windowOpenerFeatures","screen","NF_IDConnector","whitelist","providerUrl","dev","AuthClient","LocalStorage","idleOptions","idleTimeout","disableIdle","disableDefaultIdleCallback","_this$identity","getIdentity","_this$client","isAuthenticated","createActor","interfaceFactory","agent","HttpAgent","fetchRootKey","_this$client3","_this$client2","onSuccess","_this$client4","PROVIDER_URL","URL","NFIDRequestTransfer","requestTransfer","windowFeatures","defaultWindowFeatures","LEDGER_CANISTER_ID","getDelegationIds","stateCanisterIds","delegationIds","InternetIdentityConnector","iiExpireTime","StoicConnector","StoicIdentity","toText","PlugConnector","requestConnect","ICPSwapConnector","keyType","EXPIRE_TIME","InfinityConnector","EXPIRE_TIME_STORAGE_NAME","MetamaskConnector","isAuthorized","MsqClient","requestLogin","requestLogout","httpAgent","expireTime","MeConnector","isConnectedSuccessfully","_this$connector","_this$connector2","astrox_webview","astrox","AstroXWebViewHandler","_astrox$identity2","_astrox$identity","boolean","delegationTargets","customDomain","useFrame","body","signerProviderUrl","walletProviderUrl","MeExpireTime","_this$identity3","_this$identity2","meExpireTime","prototype","toJSON","EXPONENTIAL_AT","ROUNDING_MODE","ROUND_DOWN","isICPSwapOfficial","stringToArrayBuffer","string","TextEncoder","encode","arrayBufferToString","arrayBuffer","TextDecoder","decode","toDoubleNumber","newString","counter","diff","hour","sec","isHouseUserTokenTransactions","timeParser","date","seconds","getSeconds","BaseNFTAdapter","ICPSwapAdapter","NFTCanister","NFTs","canisterAdapters","Map","adapters","initialAdapter","adapter","register","getAdapter","adapterName","AdapterName","BaseNFTsTradeAdapter","ICPSwapTradeAdapter","buy","sale","revoke","NFTTradeCanister","TradeAdapterName","NFTsTrade","from32bits","to32bits","num","ArrayBuffer","DataView","setUint32","toHexString","encodeTokenIdentifier","Buffer","array","fromUint8Array","decodeTokenId","tid","p","getStateValue","StakingState","NOT_STARTED","__state","maxAmountFormat","encodePositionKey","decodePositionKey","arr","positionIndex","PositionState","getStateColor","OutOfRange","InRange","LEVEL0","LEVEL1","typedValueParsed","groupSeparator","feeAmountToPercentage","div","integer","decimal","tryParseTick","quoteToken","_fraction$length","whole","fraction","withoutDecimals","JSBI","tryParsePrice","sqrtRatioX96","encodeSqrtRatioX96","TickMath","MAX_SQRT_RATIO","MAX_TICK","MIN_SQRT_RATIO","MIN_TICK","priceToClosestTick","nearestUsableTick","TICK_SPACINGS","actualAmountToPool","initializeConnector","MetaMask","isAddress","AddressZero","Contract","getSigner","connectUnchecked","getProviderOrSigner","Config","Media","mediaType","TokenMetadata","configs","Nat32","mediaLinks","introduction","BoolResult","NatResult","Result_3","Opt","addAdmin","cycleAvailable","cycleBalance","edit","getAdminList","getList","removeAdmin","updateLogo","Subaccount","Account","minting_account","min_burn_amount","max_supply","total_supply","Page","totalElements","get_logo","get_task_state","get_token_list","set_task_state","set_token_index","set_token_logo","ic_host","cachedCanisterIds","errorCallbacks","log","_host","serviceClass","createActorError","actorOptions","createBaseActor","AnonymousAgent","_actor","_fields","beforeSubmit","checkResult","method","_b","_c","trim","_d","createAgent","setAgent","setLog","TokenListInterfaceFactory","allTokenOfSwap","AllTokenOfSwapInterfaceFactory","allowed_principals","access_controls_enabled","sns_subnet_ids","SnsWasm","wasm","canister_type","Int32","AddWasmRequest","SnsWasmError","Hash","AddWasmResponse","NeuronBasketConstructionParameters","dissolve_delay_interval_seconds","Canister","DappCanisters","canisters","LinearScalingCoefficient","slope_numerator","intercept_icp_e8s","from_direct_participation_icp_e8s","slope_denominator","to_direct_participation_icp_e8s","IdealMatchedParticipationFunction","serialized_representation","NeuronsFundParticipationConstraints","coefficient_intervals","max_neurons_fund_participation_icp_e8s","min_direct_participation_threshold_icp_e8s","ideal_matched_participation_function","CfNeuron","has_created_neuron_recipes","nns_neuron_id","amount_icp_e8s","CfParticipant","hotkey_principal","cf_neurons","NeuronsFundParticipants","participants","TreasuryDistribution","total_e8s","NeuronDistribution","controller","dissolve_delay_seconds","stake_e8s","vesting_period_seconds","DeveloperDistribution","developer_neurons","AirdropDistribution","airdrop_neurons","SwapDistribution","initial_swap_amount_e8s","FractionalDeveloperVotingPower","treasury_distribution","developer_distribution","airdrop_distribution","swap_distribution","InitialTokenDistribution","Countries","iso_codes","SnsInitPayload","max_dissolve_delay_seconds","max_dissolve_delay_bonus_percentage","nns_proposal_id","neurons_fund_participation","min_participant_icp_e8s","neuron_basket_construction_parameters","fallback_controller_principal_ids","token_symbol","final_reward_rate_basis_points","max_icp_e8s","neuron_minimum_stake_e8s","confirmation_text","swap_start_timestamp_seconds","swap_due_timestamp_seconds","initial_voting_period_seconds","neuron_minimum_dissolve_delay_to_vote_seconds","max_neuron_age_seconds_for_age_bonus","min_participants","initial_reward_rate_basis_points","wait_for_quiet_deadline_increase_seconds","transaction_fee_e8s","dapp_canisters","neurons_fund_participation_constraints","neurons_fund_participants","max_age_bonus_percentage","initial_token_distribution","reward_rate_transition_duration_seconds","token_logo","token_name","max_participant_icp_e8s","min_direct_participation_icp_e8s","proposal_reject_cost_e8s","restricted_countries","min_icp_e8s","max_direct_participation_icp_e8s","DeployNewSnsRequest","sns_init_payload","DappCanistersTransferResult","restored_dapp_canisters","nns_controlled_dapp_canisters","sns_controlled_dapp_canisters","SnsCanisterIds","ledger","governance","DeployNewSnsResponse","dapp_canisters_transfer_result","subnet_id","GetAllowedPrincipalsResponse","GetDeployedSnsByProposalIdRequest","proposal_id","DeployedSns","index_canister_id","swap_canister_id","GetDeployedSnsByProposalIdResult","GetDeployedSnsByProposalIdResponse","get_deployed_sns_by_proposal_id_result","SnsVersion","archive_wasm_hash","root_wasm_hash","swap_wasm_hash","ledger_wasm_hash","governance_wasm_hash","index_wasm_hash","GetNextSnsVersionRequest","current_version","GetNextSnsVersionResponse","next_version","GetSnsSubnetIdsResponse","GetWasmRequest","GetWasmResponse","SnsUpgrade","InsertUpgradePathEntriesRequest","upgrade_path","sns_governance_canister_id","InsertUpgradePathEntriesResponse","ListDeployedSnsesResponse","instances","ListUpgradeStepsRequest","starting_at","PrettySnsVersion","ListUpgradeStep","pretty_version","ListUpgradeStepsResponse","UpdateAllowedPrincipalsRequest","added_principals","removed_principals","UpdateAllowedPrincipalsResult","AllowedPrincipals","UpdateAllowedPrincipalsResponse","update_allowed_principals_result","UpdateSnsSubnetListRequest","sns_subnet_ids_to_add","sns_subnet_ids_to_remove","UpdateSnsSubnetListResponse","add_wasm","deploy_new_sns","get_allowed_principals","get_deployed_sns_by_proposal_id","get_latest_sns_version_pretty","get_next_sns_version","get_sns_subnet_ids","get_wasm","insert_upgrade_path_entries","list_deployed_snses","list_upgrade_steps","update_allowed_principals","update_sns_subnet_list","sns_wasm","SNS_WASM_INTERFACE_FACTORY","cf_participants","Init","sns_root_canister_id","sns_token_e8s","nns_governance_canister_id","icp_ledger_canister_id","sns_ledger_canister_id","should_auto_finalize","ErrorRefundIcpRequest","source_principal_id","block_height","error_type","ErrorRefundIcpResponse","CanisterCallError","FailedUpdate","dapp_canister_id","SetDappControllersResponse","failed_updates","Possibility","SetDappControllersCallResult","possibility","SweepResult","failure","skipped","invalid","global_failures","GovernanceError","error_message","Response","governance_error","Possibility_1","SettleCommunityFundParticipationResult","Ok_1","neurons_fund_participation_icp_e8s","neurons_fund_neurons_count","Possibility_2","SettleNeuronsFundParticipationResult","Possibility_3","SetModeCallResult","FinalizeSwapResponse","set_dapp_controllers_call_result","create_sns_neuron_recipes_result","settle_community_fund_participation_result","settle_neurons_fund_participation_result","set_mode_call_result","sweep_icp_result","claim_neuron_result","sweep_sns_result","GetAutoFinalizationStatusResponse","auto_finalize_swap_response","has_auto_finalize_been_attempted","is_auto_finalize_enabled","GetBuyerStateRequest","principal_id","TransferableAmount","transfer_fee_paid_e8s","transfer_start_timestamp_seconds","amount_e8s","amount_transferred_e8s","transfer_success_timestamp_seconds","BuyerState","icp","GetBuyerStateResponse","buyer_state","GetBuyersTotalResponse","buyers_total","CanisterStatusType","stopped","stopping","running","DefiniteCanisterSettingsArgs","freezing_threshold","controllers","memory_allocation","compute_allocation","CanisterStatusResultV2","memory_size","settings","idle_cycles_burned_per_day","module_hash","GetDerivedStateResponse","sns_tokens_per_icp","Float64","buyer_total_icp_e8s","cf_participant_count","direct_participation_icp_e8s","direct_participant_count","cf_neuron_count","GetInitResponse","GetLifecycleResponse","decentralization_sale_open_timestamp_seconds","lifecycle","decentralization_swap_termination_timestamp_seconds","Icrc1Account","Ticket","creation_time","ticket_id","Ok_2","ticket","Err_1","GetOpenTicketResponse","Params","sale_delay_seconds","GetSaleParametersResponse","NeuronId","NeuronAttributes","followees","CfInvestment","DirectInvestment","buyer_principal","Investor","CommunityFund","Direct","SnsNeuronRecipe","claimed_status","neuron_attributes","investor","neuron_recipes","next_ticket_id","finalize_swap_in_progress","already_tried_to_auto_finalize","purge_old_tickets_last_completion_timestamp_nanoseconds","purge_old_tickets_next_principal","buyers","open_sns_token_swap_proposal_id","DerivedState","Float32","GetStateResponse","derived","ListCommunityFundParticipantsRequest","ListDirectParticipantsRequest","Participant","participation","participant_id","ListDirectParticipantsResponse","ListSnsNeuronRecipesRequest","ListSnsNeuronRecipesResponse","sns_neuron_recipes","NewSaleTicketRequest","InvalidUserAmount","min_amount_icp_e8s_included","max_amount_icp_e8s_included","Err_2","invalid_user_amount","existing_ticket","NewSaleTicketResponse","OpenRequest","RefreshBuyerTokensRequest","buyer","RefreshBuyerTokensResponse","icp_accepted_participation_e8s","icp_ledger_account_balance_e8s","error_refund_icp","finalize_swap","get_auto_finalization_status","get_buyer_state","get_buyers_total","get_canister_status","get_derived_state","get_init","get_lifecycle","get_open_ticket","get_sale_parameters","get_state","list_community_fund_participants","list_direct_participants","list_sns_neuron_recipes","new_sale_ticket","notify_payment_failure","refresh_buyer_tokens","restore_dapp_controllers","sns_swap","SNS_SWAP_INTERFACE_FACTORY","GenericNervousSystemFunction","validator_canister_id","target_canister_id","validator_method_name","target_method_name","FunctionType","NativeNervousSystemFunction","NervousSystemFunction","function_type","GovernanceCachedMetrics","not_dissolving_neurons_e8s_buckets","garbage_collectable_neurons_count","neurons_with_invalid_stake_count","not_dissolving_neurons_count_buckets","neurons_with_less_than_6_months_dissolve_delay_count","dissolved_neurons_count","total_staked_e8s","total_supply_governance_tokens","not_dissolving_neurons_count","dissolved_neurons_e8s","neurons_with_less_than_6_months_dissolve_delay_e8s","dissolving_neurons_count_buckets","dissolving_neurons_count","dissolving_neurons_e8s_buckets","timestamp_seconds","MaturityModulation","current_basis_points","updated_at_timestamp_seconds","Followees","DefaultFollowees","NeuronPermissionList","permissions","VotingRewardsParameters","round_duration_seconds","NervousSystemParameters","default_followees","max_followees_per_function","neuron_claimer_permissions","max_neuron_age_for_age_bonus","reject_cost_e8s","max_proposals_to_keep_per_action","max_number_of_neurons","max_number_of_proposals_with_ballots","neuron_grantable_permissions","voting_rewards_parameters","maturity_modulation_disabled","max_number_of_principals_per_neuron","Version","ProposalId","RewardEvent","rounds_since_last_distribution","actual_timestamp_seconds","end_timestamp_seconds","distributed_e8s_equivalent","settled_proposals","UpgradeInProgress","mark_failed_at_seconds","checking_upgrade_lock","target_version","Ballot","vote","cast_timestamp_seconds","voting_power","Percentage","basis_points","Tally","no","yes","ManageDappCanisterSettings","reserved_cycles_limit","log_visibility","RegisterDappCanisters","TransferSnsTreasuryFunds","from_treasury","to_principal","to_subaccount","UpgradeSnsControlledCanister","new_canister_wasm","canister_id","canister_upgrade_arg","DeregisterDappCanisters","new_controllers","MintSnsTokens","ManageSnsMetadata","ExecuteGenericNervousSystemFunction","function_id","ManageLedgerParameters","transfer_fee","Motion","motion_text","Action","ManageNervousSystemParameters","AddGenericNervousSystemFunction","RemoveGenericNervousSystemFunction","UpgradeSnsToNextVersion","Unspecified","Proposal","summary","WaitForQuietState","current_deadline_timestamp_seconds","ProposalData","payload_text_rendering","failure_reason","ballots","minimum_yes_proportion_of_total","reward_event_round","failed_timestamp_seconds","reward_event_end_timestamp_seconds","proposal_creation_timestamp_seconds","latest_tally","decided_timestamp_seconds","proposal","proposer","wait_for_quiet_state","minimum_yes_proportion_of_exercised","is_eligible_for_rewards","executed_timestamp_seconds","Split","Follow","DisburseMaturity","to_account","percentage_to_disburse","ChangeAutoStakeMaturity","requested_setting_for_auto_stake_maturity","IncreaseDissolveDelay","additional_dissolve_delay_seconds","SetDissolveTimestamp","dissolve_timestamp_seconds","Operation","StopDissolving","StartDissolving","Configure","operation","RegisterVote","FinalizeDisburseMaturity","amount_to_be_disbursed_e8s","MemoAndController","By","ClaimOrRefresh","by","RemoveNeuronPermissions","permissions_to_remove","AddNeuronPermissions","permissions_to_add","MergeMaturity","percentage_to_merge","Amount","e8s","Disburse","Command_2","SyncCommand","MakeProposal","ClaimOrRefreshNeuron","NeuronInFlightCommand","command","NeuronPermission","permission_type","DissolveState","DissolveDelaySeconds","WhenDissolvedTimestampSeconds","DisburseMaturityInProgress","timestamp_of_disbursement_seconds","account_to_disburse_to","finalize_disbursement_timestamp_seconds","Neuron","staked_maturity_e8s_equivalent","maturity_e8s_equivalent","cached_neuron_stake_e8s","created_timestamp_seconds","source_nns_neuron_id","auto_stake_maturity","aging_since_timestamp_seconds","dissolve_state","voting_power_percentage_multiplier","disburse_maturity_in_progress","neuron_fees_e8s","NeuronParameters","id_to_nervous_system_functions","metrics","maturity_modulation","parameters","is_finalizing_disburse_maturity","deployed_version","sns_initialization_parameters","latest_reward_event","pending_version","proposals","in_flight_commands","sns_metadata","neurons","genesis_timestamp_seconds","hotkey","neuron_id","ClaimSwapNeuronsRequest","neuron_parameters","SwapNeuron","ClaimedSwapNeurons","swap_neurons","ClaimSwapNeuronsResult","ClaimSwapNeuronsResponse","claim_swap_neurons_result","GetMaturityModulationResponse","GetMetadataResponse","GetModeResponse","GetNeuron","GetNeuronResponse","GetProposal","GetProposalResponse","GetRunningSnsVersionResponse","GetSnsInitializationParametersResponse","ListNervousSystemFunctionsResponse","reserved_ids","functions","ListNeurons","of_principal","start_page_at","ListNeuronsResponse","ListProposals","include_reward_status","before_proposal","exclude_type","include_status","ListProposalsResponse","StakeMaturity","percentage_to_stake","Command","ManageNeuron","SplitResponse","created_neuron_id","DisburseMaturityResponse","amount_disbursed_e8s","amount_deducted_e8s","ClaimOrRefreshResponse","refreshed_neuron_id","StakeMaturityResponse","maturity_e8s","staked_maturity_e8s","MergeMaturityResponse","merged_maturity_e8s","new_stake_e8s","DisburseResponse","transfer_block_height","Command_1","RemoveNeuronPermission","AddNeuronPermission","ManageNeuronResponse","SetMode","claim_swap_neurons","fail_stuck_upgrade_in_progress","get_build_metadata","get_latest_reward_event","get_maturity_modulation","get_metadata","get_mode","get_nervous_system_parameters","get_neuron","get_proposal","get_root_canister_status","get_running_sns_version","get_sns_initialization_parameters","list_nervous_system_functions","list_neurons","list_proposals","manage_neuron","set_mode","sns_governance","SNS_GOVERNANCE_INTERFACE_FACTORY","decreaseLiquidity","claim","addLiquidity","increaseLiquidity","Transaction","liquidityTotal","recipient","token0ChangeAmount","sender","liquidityChange","token1Standard","token0Fee","token1Fee","token1ChangeAmount","token1Decimals","token0Standard","amountUSD","amountToken0","amountToken1","poolFee","token0Symbol","token0Decimals","token1Symbol","PublicPoolOverView","token0TotalVolume","volumeUSD1d","volumeUSD7d","token1Volume24H","totalVolumeUSD","sqrtPrice","feeTier","token1TotalVolume","volumeUSD","feesUSD","token0Volume24H","txCount","PublicTokenOverview","priceUSDChange","Address","addOwner","addQuoteToken","allPoolStorage","allTokenStorage","allUserStorage","batchInsert","clean","getAllPools","getAllTokens","getControllers","getDataQueueSize","getLastDataTime","getOwners","getPoolQueueSize","getPoolsForToken","getQuoteTokens","getSyncLock","getSyncStatus","getTokenQueueSize","getTotalVolumeAndUser","getUserQueueSize","insert","poolMapping","poolStorage","setPoolSyncStatus","setQuoteTokens","setTokenSyncStatus","setUserSyncStatus","syncOverview","tokenMapping","tokenStorage","userMapping","node_index","NodeIndexInterfaceFactory","SwapRecordInfo","feeAmountTotal","token0AmountTotal","feeTire","token1AmountTotal","baseLastStorage","baseStorage","batchPush","getAllowTokens","getEnableSync","getPoolLastPrice","getSyncError","getSyncOffset","priceCanister","setEnableSync","setPriceCanister","syncOldDataToLast","RecordPage","addOwners","getBaseRecord","getByPool","getByToken","getTxCount","baseIndex","BaseIndexInterfaceFactory","BaseIndex","BaseStorageInterfaceFactory","TvlOverview","tvlUSD","tvlUSDChange","PublicProtocolData","getAllPoolTvl","getAllTokenTvl","getPoolLastTvl","getProtocolData","getSyncState","getSyncTime","getTokenLastTvl","getTvlSyncState","globalLastStorageCanister","globalStorageCanister","syncGlobal","syncTvl","syncTvlStatus","tvlLastStorageCanister","tvlStorageCanister","NatResult__2","TvlChartDayData","getPoolChartTvl","getTokenChartTvl","globalIndex","GlobalIndexInterfaceFactory","globalTVL","GlobalTVLInterfaceFactory","PublicPoolChartDayData","getPoolChartData","getPoolTransactions","PoolStorageInterfaceFactory","PoolInfo","PublicTokenChartDayData","PublicTokenPricesData","low","high","getToken","getTokenChartData","getTokenPricesData","getTokenTransactions","TokenStorageInterfaceFactory","UserStorageInterfaceFactory","Rec","Blob","Block","created_at_time","kind","append_blocks","get_blocks","blocks","get_transaction","get_transactions","remaining_capacity","Memo","Timestamp","TxIndex","TransferError","GenericError","error_code","TemporarilyUnavailable","BadBurn","Duplicate","duplicate_of","BadFee","expected_fee","CreatedInFuture","ledger_time","TooOld","TransferResult","GetTransactionsRequest","Burn","Mint","Transfer","ArchivedTransactionRange","GetTransactionsResponse","first_index","log_length","archived_transactions","icrc1_balance_of","icrc1_decimals","icrc1_fee","icrc1_metadata","icrc1_minting_account","icrc1_name","icrc1_symbol","icrc1_total_supply","icrc1_logo","icrc1_transfer","from_subaccount","MetadataValue","ChangeFeeCollector","SetTo","Unset","FeatureFlags","UpgradeArgs","maximum_number_of_accounts","accounts_overflow_trim_quantity","change_fee_collector","max_memo_length","Nat16","feature_flags","ArchiveOptions","num_blocks_to_archive","max_transactions_per_response","trigger_threshold","max_message_size_bytes","cycles_for_archive_creation","node_max_memory_size_bytes","controller_id","InitArgs","initial_balances","fee_collector_account","archive_options","GetBlocksRequest","Upgrade","BlockRange","ArchivedRange","GetBlocksResponse","certificate","chain_length","archived_blocks","DataCertificate","hash_tree","Approve","expected_allowance","expires_at","TransactionRange","ArchivedRange_1","StandardRecord","TransferArg","AllowanceArgs","Allowance","ApproveArgs","ApproveError","AllowanceChanged","current_allowance","Expired","TransferFromArgs","spender_subaccount","TransferFromError","get_data_certificate","icrc2_allowance","icrc2_approve","icrc2_transfer_from","icrcArchive","ICRCArchiveInterfaceFactory","ICRC1InterfaceFactory","ICRC2InterfaceFactory","TxError","TransactionId","BurnError","BurnResult","TransactionStatus","FAILED","SUCCEEDED","EventDetail","CanisterCreated","CanisterCalled","method_name","TransferFrom","caller","Event","EventsConnection","next_offset","next_canister_id","canisterCalled","canisterCreated","Time","TxRecord","op","MintError","MintResult","Stats","transfers_count","mints_count","transfers_from_count","canisters_created_count","burns_count","approvals_count","proxy_calls_count","history_events","ResultCall","return","CreateResult","ResultSend","events","getTransaction","getTransactions","halt","nameErc20","stats","transferErc20","wallet_balance","wallet_call","wallet_create_canister","wallet_create_wallet","wallet_send","getHolders","setFeeTo","xtc","XTCInterfaceFactory","dip20","DIP20InterfaceFactory","dip20BalanceActor","DIP20BalanceInterfaceFactory","dip20SupplyActor","DIP20SupplyInterfaceFactory","Balance","User","AllowanceRequest","Balance__1","TokenIdentifier","CommonError__1","InvalidToken","ApproveRequest","BalanceRequest","BalanceResponse","Result_7","Extension","HoldersRequest","Holder","Page_1","Result_6","Result_5","fungible","ownerAccount","nonfungible","Result_4","MintRequest","TransferResponse","CannotNotify","Rejected","AccountIdentifier__1","User__1","TransactionRequest","TransType","transType","TransferRequest","notify","extensions","getFee","holders","registry","totalHolders","Result_10","Page_2","Result_9","Result_8","BlockHeight","blockHeight","WithdrawRequest","BlockHeight__1","WrapRequest","WrapType","unwrap","WrapRecord","wrapType","wrappedTx","ext","EXTTokenInterfaceFactory","wrapICP","WrapICPInterfaceFactory","Duration","secs","nanos","send_whitelist","transaction_window","initial_values","BinaryAccountBalanceArgs","AccountBalanceArgs","ArchiveInfo","Archives","archives","Decimals","Name","GetBlocksArgs","TimeStamp","timestamp_nanos","CandidOperation","allowance_e8s","CandidTransaction","icrc1_memo","CandidBlock","parent_hash","GetBlocksError","BadFirstBlockIndex","requested_index","first_valid_index","ArchivedBlocksRange","QueryBlocksResponse","first_block_index","ArchivedEncodedBlocksRange","QueryEncodedBlocksResponse","SendArgs","Symbol","TransferArgs","TransferError_1","TxTooOld","allowed_window_nanos","TxDuplicate","TxCreatedInFuture","TransferFee","account_balance","account_balance_dfx","query_blocks","query_encoded_blocks","send_dfx","ledgerService","LedgerInterfaceFactory","KVPair","k","v","CanisterInfo","cid","creator","linkMap","ownerName","createTime","mintSupply","royalties","image","ResponseResult_5","CanisterRequest","TextResult","ResponseResult","PageResponse","ResponseResult_2","ResponseResult_4","ResponseResult_3","ResponseResult_1","canisterInfo","deleteTradeStatCanister","feeInfo","findCanister","findCanisterConfig","findTop5Canister","findUserCanister","initLogo","setCanisterConfig","setFeeInfo","ApproveAllRequest","TokenIdentifier__1","AccountIdentifier__2","KVPair__1","ResponseResult_6","TokenIndex","Chunk","TokenIndex__1","IcsMetadata","Remark","TransferRecord","HeaderField","HttpRequest","StreamingCallbackToken__1","StreamingStrategy","HttpResponse","StreamingCallbackToken","StreamingCallbackHttpResponse","IcsMintRequest","IcsMintRequests","Listing","BuyRequest","nftCid","tokenIndex","OrderInfo","minter","filePath","fileType","seller","artistName","TxInfoResponse","txFee","settleAmountStatus","royaltiesFeeStatus","royaltiesFee","txFeeStatus","txStatus","settleAmount","StatResponse","totalVolume","listSize","totalTurnover","avgPrice","maxPrice","minPrice","RevokeRequest","SaleRequest","cancelOrder","checkPayment","findCanisterId","findCanisterRecommend","findOrderPage","findRecommend","findTokenOrderPage","findTokenTxPage","findTxPage","findUserTxPage","getOrder","getStat","getTradeState","removeList","setCanisterId","setTradeState","unlock","TradeStatResp","AssetHandle","SubAccount__1","AssetId","ChunkId","AssetType","direct","ListRequest","nat","blob","nat8","MetadataContainer","thumbnail","asset","PaymentType","nfts","Payment","expires","payer","purchase","SalePricingGroup","end","pricing","SaleRemaining","retain","send","Sale","groups","quantity","remaining","SaleDetailGroup","SaleDetails","SaleTransaction","MetadataLegacy","headers","HttpStreamingCallbackToken","sha256","content_encoding","HttpStreamingCallbackResponse","HttpStreamingStrategy","Callback","streaming_strategy","status_code","SaleSettings","startTime","totalToSell","sold","bulkPricing","whitelistTime","salePrice","acceptCycles","addAsset","addThumbnail","adminKillHeartbeat","adminRefund","adminStartHeartbeat","allSettlements","availableCycles","bearer","details","ext_addAssetCanister","ext_admin","ext_assetAdd","ext_assetExists","ext_assetFits","ext_assetStream","ext_balance","ext_bearer","ext_capInit","ext_expired","ext_extensions","ext_marketplaceList","ext_marketplaceListings","ext_marketplacePurchase","ext_marketplaceSettle","ext_marketplaceStats","ext_marketplaceTransactions","ext_metadata","ext_mint","ext_payments","ext_removeAdmin","ext_saleClose","ext_saleCurrent","ext_saleEnd","ext_saleOpen","ext_salePause","ext_salePurchase","ext_saleResume","ext_saleSettings","ext_saleSettle","ext_saleTransactions","ext_saleUpdate","ext_setAdmin","ext_setCollectionMetadata","ext_setMarketplaceOpen","ext_setOwner","ext_setRoyalty","ext_transfer","extdata_supply","failedSales","getMinter","getRegistry","getTokens","heartbeat_assetCanisters","heartbeat_capEvents","heartbeat_disbursements","heartbeat_external","heartbeat_isRunning","heartbeat_paymentSettlements","heartbeat_pending","heartbeat_start","heartbeat_stop","http_request","http_request_streaming_callback","http_request_update","isHeartbeatRunning","listings","lock","reserve","retreive","saleTransactions","salesSettings","setMinter","settle","settlements","tokens_ext","V3NFTCanisterControllerInterfaceFactory","NFTCanisterInterfaceFactory","V3TradeCanisterInterfaceFactory","NFTTradeStat","V3TradeStatInterfaceFactory","ext_nft","ExtNFTInterfaceFactory","AssetClass","Cryptocurrency","FiatCurrency","Asset","class","ExchangeRateError","AnonymousPrincipalNotAllowed","CryptoQuoteAssetNotFound","FailedToAcceptCycles","ForexBaseAssetNotFound","CryptoBaseAssetNotFound","StablecoinRateTooFewRates","ForexAssetsNotFound","InconsistentRatesReceived","RateLimited","StablecoinRateZeroRate","ForexInvalidTimestamp","NotEnoughCycles","ForexQuoteAssetNotFound","StablecoinRateNotFound","Pending","ExchangeRate__1","quote_symbol","quote_class","base_symbol","base_class","add_asset","force_update_rate","get_assets","get_exchange_rates","ExchangeRateInterfaceFactory","BlockTag","Safe","Finalized","Latest","UpgradeArg","next_transaction_nonce","ledger_suite_orchestrator_id","erc20_helper_contract_address","last_erc20_scraped_block_number","ethereum_contract_address","minimum_withdrawal_amount","ethereum_block_height","EthereumNetwork","Mainnet","Sepolia","InitArg","ethereum_network","last_scraped_block_number","ecdsa_key_name","AddCkErc20Token","ckerc20_ledger_id","chain_id","ckerc20_token_symbol","Eip1559TransactionPrice","max_priority_fee_per_gas","max_fee_per_gas","max_transaction_fee","gas_limit","DefiniteCanisterSettings","QueryStats","response_payload_bytes_total","num_instructions_total","num_calls_total","request_payload_bytes_total","CanisterStatusResponse","query_stats","reserved_cycles","EventSource","transaction_hash","log_index","UnsignedTransaction","destination","access_list","storage_keys","ReimbursementIndex","CkErc20","cketh_ledger_burn_index","ckerc20_ledger_burn_index","CkEth","ledger_burn_index","TransactionReceipt","effective_gas_price","Success","Failure","block_hash","block_number","gas_used","SkippedBlock","AcceptedErc20Deposit","from_address","SignedTransaction","raw_transaction","withdrawal_id","AddedCkErc20Token","QuarantinedDeposit","event_source","SyncedToBlock","AcceptedDeposit","ReplacedTransaction","QuarantinedReimbursement","MintedCkEth","mint_block_index","ReimbursedEthWithdrawal","reimbursed_amount","reimbursed_in_block","FailedErc20WithdrawalRequest","ReimbursedErc20Withdrawal","burn_in_block","MintedCkErc20","CreatedTransaction","InvalidDeposit","SyncedErc20ToBlock","AcceptedErc20WithdrawalRequest","withdrawal_amount","created_at","AcceptedEthWithdrawalRequest","FinalizedTransaction","transaction_receipt","CkErc20Token","GasFeeEstimate","MinterInfo","eth_balance","eth_helper_contract_address","last_observed_block_number","last_gas_fee_estimate","smart_contract_address","last_eth_scraped_block_number","erc20_balances","minter_address","EthTransaction","TxFinalizedStatus","effective_transaction_fee","Reimbursed","PendingReimbursement","RetrieveEthStatus","NotFound","TxFinalized","TxSent","TxCreated","WithdrawErc20Arg","RetrieveErc20Request","ckerc20_block_index","cketh_block_index","LedgerError","failed_burn_amount","AmountTooLow","minimum_burn_amount","WithdrawErc20Error","TokenNotSupported","supported_tokens","CkErc20LedgerError","CkEthLedgerError","RecipientAddressBlocked","WithdrawalArg","RetrieveEthRequest","WithdrawalError","min_withdrawal_amount","WithdrawalSearchParameter","ByRecipient","BySenderAccount","ByWithdrawalId","WithdrawalStatus","WithdrawalDetail","recipient_address","add_ckerc20_token","eip_1559_transaction_price","get_events","total_event_count","get_minter_info","is_address_blocked","retrieve_eth_status","withdraw_erc20","withdraw_eth","withdrawal_status","erc20Minter","Erc20MinterInterfaceFactory","AliasResult","is_public","alias","governance_id","addPrincipalAlias","addSharedPrincipal","getAdmins","getAllPrincipalAliases","getPrincipalAlias","getPrincipalAliasByLedger","getPrincipalAliasByLedgers","queryPrincipalAliasPage","setAdmins","syncSNSProject","liquidityLocks","LiquidityLocks","LiquidityLocksInterfaceFactory","DepositArgs","WithdrawArgs","destoryPasscode","getFactoryCid","getTokenCid","passcodePrice","factoryCid","requestPasscode","Result_17","approved","Result_16","batch_id","cId","mintTime","attributes","nftType","Result_15","remark","tokenName","txType","Result_14","Result_13","Result_12","Result_11","QueryPositionResult","approveForAll","checkOperator","chunkSize","clearChunk","commit_batch","content_type","chunk_ids","create_batch","create_chunk","chunk_id","findRemovedTokenList","findTokenList","findTokenListByPool","findTokenMarket","findTokenTxRecord","findTxRecord","getAllowances","getCanisterInfo","getNftStat","getTokenId","getTradeCanisterId","icsMetadata","initNFTCanisterInfo","isApproveForAll","isApproveForToken","maxFileSize","ownerNFTCount","removeAllApproval","removeApproval","setTradeCanisterId","spenderRemoveApproval","tokenURI","Passcode","addPasscode","addPoolControllers","batchAddPoolControllers","batchRemovePoolControllers","batchSetPoolAdmins","clearRemovedPool","deletePasscode","getGovernanceCid","getPasscodesByPrincipal","getPrincipalPasscodes","getVersion","removePoolControllers","removePoolWithdrawErrorLog","restorePool","setPoolAdmins","upgradePoolTokenStandard","AccountBalance","Page_5","Result_26","Result_25","tokenIncome","totalTokensOwed0","totalTokensOwed1","ClaimArgs","Result_24","DecreaseLiquidityArgs","DepositAndMintArgs","fee0","fee1","positionOwner","amount0Desired","amount1Desired","Result_23","Result_22","GetPositionArgs","PositionInfo","Result_21","PositionInfoWithId","Page_4","Result_20","Result_19","TVLToken0","TVLToken1","PushError","Result_18","infoCid","records","errors","retryCount","TickLiquidityInfo","tickIndex","price0Decimal","liquidityNet","price0","price1","liquidityGross","price1Decimal","Page_3","TickInfoWithId","initialized","feeGrowthOutside1X128","secondsPerLiquidityOutsideX128","secondsOutside","feeGrowthOutside0X128","tickCumulativeOutside","swapFee0Repurchase","swapFeeReceiver","swapFee1Repurchase","TransferLog","daysFrom19700101","fromSubaccount","errorMsg","UserPositionInfo","UserPositionInfoWithTokenAmount","UserPositionInfoWithId","WithdrawErrorLog","IncreaseLiquidityArgs","PoolMetadata","maxLiquidityPerTick","nextPositionId","MintArgs","SwapArgs","allTokenBalance","approvePosition","batchRefreshIncome","checkOwnerOfUserPosition","depositAllAndMint","getAddressPrincipals","getClaimLog","getMistransferBalance","getPosition","getPositions","getSwapRecordState","getTickInfos","getTicks","getTokenAmountState","getTokenMeta","getTransferLogs","getUserByPositionId","getUserPosition","getUserPositionWithTokenAmount","getUserPositions","getUserPositionsByPrincipal","getUserUnusedBalance","getWithdrawErrorLog","quoteForAll","refreshIncome","removeErrorTransferLog","removeWithdrawErrorLog","resetTokenAmountState","sumTick","transferPosition","upgradeTokenStandard","withdrawMistransferBalance","addPoolId","getUserPools","initUserPoolMap","removePoolId","removePoolIdWithoutCheck","updatePoolIds","swapNFT","SwapNFTInterfaceFactory","swapFactory","SwapFactoryInterfaceFactory","SwapPoolInterfaceFactory","swapPosition","PositionIndexInterfaceFactory","passCodeManager","PassCodeManagerInterfaceFactory","CreateFarmArgs","secondPerCycle","endTime","rewardAmount","refunder","priceInsideLimit","token0AmountLimit","token1AmountLimit","farmIndexCid","governanceCid","feeReceiverCid","addFarmControllers","getAllFarms","getInitArgs","removeFarmControllers","setFarmAdmins","token0DecimalsConst","token1DecimalsConst","rewardTokenDecimalsConst","timeConst","Deposit","initTime","lastDistributeTime","holder","DistributeRecord","rewardTotal","rewardGained","FarmStatus","FarmInfo","totalRewardHarvested","numberOfStakes","totalRewardBalance","poolToken0","poolToken1","totalRewardUnharvested","totalReward","userNumberOfStakes","InitFarmArgs","nodeIndexCid","farmFactoryCid","positionNumLimit","poolToken0Amount","totalLiquidity","poolToken1Amount","poolToken0Symbol","poolToken1Symbol","poolToken1Decimals","poolToken0Decimals","totalRewardFee","rewardPerCycle","rewardTokenFee","totalCycleCount","currentCycleCount","rewardTokenDecimals","distribute","unstake","stake","harvest","StakeRecord","TokenAmount","TVL","clearErrorLog","finishManually","getAPRConst","getAPRRecord","getAvgAPR","getDeposit","getDistributeRecord","getErrorLog","getFarmInfo","getLimitInfo","getLiquidityInfo","getPoolMeta","getPoolTokenMeta","getPositionIds","getRewardInfo","getRewardMeta","getRewardTokenBalance","getStakeRecord","getTVL","getUserDeposits","getUserRewardBalance","getUserRewardBalances","getUserTVL","restartManually","sendRewardManually","setLimitInfo","withdrawRewardFee","AddFarmIndexArgs","farmCid","poolCid","FarmRewardInfo","poolToken0TVL","poolToken1TVL","SearchCondition","farmAmount","principalAmount","addFarmIndex","getAllFarmUsers","getAllPoolFarms","getAllRewardTokenFarms","getAllUserFarms","getFarmRewardTokenInfo","getFarmRewardTokenInfos","getFarmUsers","getFarms","getFarmsByConditions","getFarmsByPool","getFarmsByRewardToken","getLiveFarmsByPools","getPrincipalRecord","getRewardInfoByStatus","getTotalAmount","getUserFarms","syncHisData","updateFarmStatus","updateFarmTVL","updateUserInfo","farmController","FarmControllerInterfaceFactory","FarmInterfaceFactory","farmIndex","FarmIndex","FarmIndexInterfaceFactory","InitRequest","stakingTokenSymbol","rewardTokenSymbol","rewardPerTime","stakingTokenFee","stakingTokenDecimals","bonusEndTime","TokenGlobalDataInfo","stakingAmount","rewardTokenPrice","rewardTokenCanisterId","stakingTokenCanisterId","stakingTokenPrice","stakingTokenAmount","rewardTokenAmount","StakingPoolInfo","GlobalDataInfo","valueOfStaking","valueOfRewarded","totalStaker","valueOfRewardsInProgress","totalPools","userIndexCid","addStakingPoolControllers","createStakingPool","deleteStakingPool","findPoolStatInfo","findStakingPoolPage","findStakingPoolPageV2","getGlobalData","getOperationInfo","getPoolStatInfo","getStakingPool","removeStakingPoolControllers","setRewardFee","setStakingPoolAdmins","setStakingPoolTime","setUpdateGlobalDataState","setUserIndexCanister","stopStakingPool","stopTimer","unclaimdRewardFee","liquidate","TransTokenType","stakeToken","stakingStandard","transTokenType","errMsg","rewardStandard","PublicUserInfo","pendingReward","lastRewardTime","stakeAmount","rewardTokenBalance","rewardDebt","lastStakeTime","stakeTokenBalance","LiquidationStatus","pending","liquidation","liquidated","PublicStakingPoolInfo","totalDeposit","totalUnstaked","totalHarvest","liquidationStatus","rewardFee","accPerShare","totalStaked","UpdateStakingPool","findRewardRecordPage","findStakingRecordPage","findTransferRecord","findUserInfo","getPoolInfo","getUserInfo","refundRewardToken","refundUserToken","removeTransferRecord","stop","updateStakingPool","APRInfo","day","stakingTokenPriceUSD","rewardTokenPriceUSD","UserPool","userInfo","UserStakedToken","ledgerId","computeStakingPool","getUSDPrice","queryAPR","queryIndexInfo","queryPool","queryStakingPool","queryUserStakedTokens","syncStakingPool","updateUser","BONUS_MULTIPLIER","TokenPoolInfo","storageCid","rewardTokenFeeMultiplier","stakingTokenFeeMultiplier","createTokenPool","deleteTokenPool","findTokenPoolPage","findTokenPoolsGlobalData","getCanister","scheduleCanister","getTokenPoolsGlobalData","registerTask","setICP","setScheduleCanister","setTaskState","setTokenPoolAdmin","startTokenPool","stopTokenPool","syncV1TokenPool","syncV1TokenPoolInfo","task","updateMultiplier","updateStat","ChangeTokenPoolInfo","PublicTokenPoolInfo","allocPoint","balanceTo","changePoolInfo","claimTo","clearLocksMap","endTokenPoolStaking","findAllUserInfo","getAllLocks","resetReward","setAutoUnlockTimes","setTokenPoolController","stopReward","withdrawTokenTo","stakingPoolController","StakingPoolControllerInterfaceFactory","TokenPool","TokenPoolInterfaceFactory","stakeIndex","StakeIndexInterfaceFactor","v1StakingTokenController","V1TokenPoolControllerInterfaceFactory","v1StakingToken","V1TokenPool","V1TokenPoolInterfaceFactory","ClaimEventInfo","claimEventCreator","claimedTokenAmount","claimEventId","tokenDecimals","claimEventStatus","tokenSymbol","totalUserAmount","totalTokenAmount","claimedUserAmount","claimCanisterId","claimEventName","ClaimRecordInfo","claimAmount","claimStatus","claimTime","claimUser","ClaimQuota","quota","findAllEvents","findCreateEvents","findEventRecords","findUserEventRecords","findUserEvents","getControllerAddress","getEvent","getStorageCanister","importQuota","setStatus","setStorageCanister","updateEvent","addEvent","addEventRecords","deleteEvent","findAllEventRecords","getCanisterPrincipal","userClaim","tokenClaimController","ClaimController","ClaimControllerInterfaceFactory","tokenClaimStorage","ClaimStorageInterfaceFactory","ProjectInfo","projectCid","managerAddress","tokenStand","findProjectPage","getFileCanister","getProject","setFileCanister","ProposalCreateInfo","createUser","beginTime","userAmount","ProposalInfo","storageCanisterId","createAddress","project","UserVoteRecord","voteTime","usedProof","UserVotePowersInfo","availablePowers","usedPowers","ProjectInfo__1","deleteAdmin","deleteProposal","findPage","findRecordPage","findVotePower","getProposal","getVotePowerCount","isProjectAdmin","setProject","setVotePower","updateProposal","votingController","VotingController","VoteControllerInterfaceFactory","votingCanister","VoteProjectInterfaceFactory","votingFile","VoteFileInterfaceFactory","WICP_CANISTER_ID","ICS_CANISTER_ID","NativeCurrencyName","useNodeInfoAllPools","getNodeInfoAllPools","getNodeInfoAllTokens","useInfoPoolStorageIds","getInfoPoolStorageIds","useInfoTokenStorageIds","getInfoTokenStorageIds","useListDeployedSNSs","getListDeployedSNSs","getSnsTokensInfo","sns_all_tokens_info_call_rounds","fetch_index","fetch_done","call_index","meta","availableArgsNull","useStakingPools","useStakePools","getStakingPoolGlobalData","useStakingPoolCycles","getStakingPoolCycles","stakingPoolClaim","stakingPoolDeposit","stakingPoolDepositFrom","stakingPoolHarvest","stakingTokenStake","stakingPoolWithdraw","isStakeToken","stakingPoolUnstake","useStakeAprChartData","start_time","end_time","getStakeAprChartData","useUserStakedTokens","getUserStakedTokens","useSwapPool","useSwapPoolMetadata","getSwapPoolAllTickInfos","getSwapTickInfos","useLiquidityTickInfos","collect","usePositionFee","getPositionFee","getSwapPoolAllBalance","getSwapNFTTokenURI","getSwapAllTicks","getPaginationAllDataLimit","getSwapTicks","useSwapAllTicks","getUserPositionsPools","getSwapUserPositions","useSwapUserPositions","getPassCode","usePCMMetadata","requestPassCode","useUserPCMBalance","useEvent","claimToken","createClaimEvent","setClaimEventReady","setClaimEventState","setClaimEventData","useClaimEvents","getUserClaimEvents","useUserClaimEvents","useUserClaimEventTransactions","getUserClaimEventTransactions","getTokensFromList","useTokenListTokenInfo","indexRef","resultsRef","setList","fetchDone","_list","getTotalElements","totalPage","pageArgsFormat","sleep","_fetch","_result","__result","debouncedMs","inner","setInner","onChangeInner","newValue","__callback","call_rounds","start_index","fetch_data","substr","parseArrays","ignoreQueryPrefix","parsedQueryString","LOWEST","Rounding","MaxUint256","isNative","isInteger","validateAndParseERC20Address","Big","_Big","added","subtracted","multiplied","divided","toSignificant","significantDigits","format","rounding","decimalPlaces","DP","Decimal","_Decimal","toSignificantRounding","ROUND_HALF_UP","ROUND_UP","RoundingMode","toFixedRounding","RoundDown","RoundHalfUp","RoundUp","tryParseFraction","fractionish","remainder","otherParsed","precision","toSignificantDigits","RM","asFraction","ONE_HUNDRED","toPercent","isPercent","baseCurrency","quoteCurrency","quoteAmount","baseAmount","scalar","currencyAmount","adjustedForDecimals","BaseCurrency","validateAndParseAddress","LiquidityMath","addDelta","NEGATIVE_ONE","MAX_FEE","SwapMath","computeSwapStep","sqrtRatioCurrentX96","sqrtRatioTargetX96","amountRemaining","feePips","returnValues","amountRemainingLessFee","SqrtPriceMath","getAmount0Delta","getAmount1Delta","sqrtRatioNextX96","getNextSqrtPriceFromInput","getNextSqrtPriceFromOutput","FullMath","mulDivRoundingUp","NoTickDataProvider","getTick","_tick","ERROR_MESSAGE","nextInitializedTickWithinOneWord","_lte","_tickSpacing","tickComparator","TickList","validateList","abs","accumulator","isSorted","isBelowSmallest","isAtOrAboveLargest","binarySearch","l","floor","nextInitializedTick","lte","compressed","minimum","maximum","Tick","TickListDataProvider","ticksMapped","NO_TICK_DATA_PROVIDER_DEFAULT","computePoolAddress","tickCurrent","tickDataProvider","_token0Price","Q192","_token1Price","priceOf","sqrtPriceLimitX96","amountCalculated","amountSpecified","_sqrtPriceLimitX96","exactInput","amountSpecifiedRemaining","sqrtPriceStartX96","tickNext","sqrtPriceNextX96","getSqrtRatioAtTick","getTickAtSqrtRatio","maxLiquidityForAmount0Imprecise","sqrtRatioAX96","sqrtRatioBX96","intermediate","Q96","maxLiquidityForAmount0Precise","maxLiquidityForAmount1","maxLiquidityForAmounts","useFullPrecision","maxLiquidityForAmount0","liquidity0","liquidity1","_token0Amount","_token1Amount","_mintAmounts","token0PriceLower","tickToPrice","token0PriceUpper","ratiosAfterSlippage","priceLower","priceUpper","sqrtRatioX96Lower","sqrtRatioX96Upper","mintAmountsWithSlippage","poolLower","poolUpper","positionThatWillBeCreated","fromAmounts","mintAmounts","burnAmountsWithSlippage","fromAmount0","fromAmount1","MAX_SAFE_INTEGER","TWO","sqrt","z","product","ratioX192","sorted","nextTickPrice","MaxUint160","multiplyIn256","roundUp","numerator1","numerator2","sqrtPX96","getNextSqrtPriceFromAmount0RoundingUp","getNextSqrtPriceFromAmount1RoundingDown","sum","addIn256","POWERS_OF_2","pow","mulShift","mulBy","Q32","absTick","ratio","sqrtRatioX128","msb","power","mostSignificantBit","log_2","f","log_sqrt10001","tickLow","tickHigh","BaseTokenAdapter","DIP20TokenAdapter","totalHolder","_ref13","actualReceivedByTransfer","_ref14","getMintingAccount","_ref15","DIP20WICPTokenAdapter","DIP20XTCTokenAdapter","EXTTokenAdapter","isBigIntMemo","cap_id","capId","getCapRootId","getCapUserTransactions","witness","getCapTransactions","_e","_f","ICPAdapter","create_at_time","from_sub_account","ICRC1Adapter","init_result","token_canister_transactions","archivedTransactions","from_owner","_h","_g","_j","_from_sub","_l","_k","_m","to_owner","_p","_o","_q","_to_sub","_s","_r","_t","from_sub","from_account","to_sub","feeArray","_u","_v","_w","_x","_y","enumToString","_2","_0","_z","_1","_3","icrcTransactionFormat","ICRC2Adapter","request","ICS_TOKEN_INFO","GHOST_TOKEN_ID","GHOST_TOKEN_INFO","ck_BTC_TOKEN_INFO","ckUSDCTokenInfo","ckSepoliaUSDCTokenInfo","ckETHTokenInfo","ckSepoliaETHTokenInfo","ckLinkTokenInfo","Breadcrumbs","prevLabel","currentLabel","prevLink","goBack","ChevronRight","gridAutoRows","loadingAnimation","LoadingRow","gridColumnGap","gridRowGap","animationFillMode","backgroundSize","willChange","gridColumn","cardStyles","_border","ALink","textDecorationColor","SnsIcon","MaxButton","cycleValueFormat","noUnit","valueofUser","isPrincipalUser","total_length","resultLength","isSubAccount","argument","_isPrincipal","createElement","setAttribute","appendChild","click","digits","ab","_num","numbro","formatCurrency","average","mantissa","abbreviations","million","billion","formatAmount","percentToNum","numToPercent","pageStart","isResultErrKey","isResultOkKey","isObject","isResultKey","str","shortenString","_amount","_decimals","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","m","amdO","deferred","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","getter","__esModule","leafPrototypes","getProto","getPrototypeOf","ns","def","getOwnPropertyNames","definition","defineProperty","enumerable","chunkId","promises","u","miniCssF","g","globalThis","Function","hmd","prop","inProgress","dataWebpackPrefix","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","charset","nc","onScriptComplete","onload","doneFns","parentNode","removeChild","head","toStringTag","nmd","paths","oldGetScript","oldLoadScript","queryMap","countMap","retries","realSrc","retryAttempt","cacheBust","getRetryDelay","loadStylesheet","fullhref","existingLinkTags","dataHref","tag","existingStyleTags","findStylesheet","oldTag","linkTag","errorType","realHref","insertBefore","nextSibling","createStylesheet","installedCssChunks","miniCss","installedChunks","installedChunkData","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}