@orderly.network/ui-transfer 2.8.14 → 2.9.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +13 -13
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/LTV/ltv.script.tsx","../src/components/icons/tooltipIcon.tsx","../src/components/LTV/ltv.ui.tsx","../src/components/LTV/ltv.widget.tsx","../src/types.ts","../src/components/actionButton/index.tsx","../src/components/availableQuantity/index.tsx","../src/components/brokerWallet/index.tsx","../src/icons.tsx","../src/components/chainSelect/index.tsx","../src/components/collateralContribution/index.tsx","../src/components/collateralRatio/collateralRatio.ui.tsx","../src/components/collateralRatio/collateralRatio.widget.tsx","../src/components/exchangeDivider/index.tsx","../src/components/fee/index.tsx","../src/components/minimumReceived/index.tsx","../src/constants/yieldBearingAssets.ts","../src/components/depositForm/hooks/useYieldAPY.ts","../src/components/quantityInput/useBalance.ts","../src/components/quantityInput/tokenOption.tsx","../src/components/quantityInput/index.tsx","../src/components/slippage/index.tsx","../src/components/swap/components/notice.tsx","../src/components/swap/components/swapFee.tsx","../src/components/swapCoin/index.tsx","../src/components/swap/icons.tsx","../src/components/swapIndicator/index.tsx","../src/components/web3Wallet/index.tsx","../src/components/yieldBearingReminder/baseReminder.tsx","../src/components/yieldBearingReminder/deUsdReminder.tsx","../src/components/yieldBearingReminder/yusdReminder.tsx","../src/components/yieldBearingReminder/yieldBearingReminder.tsx","../src/components/swap/hooks/useNeedSwapAndCross.ts","../src/components/swap/constants.ts","../src/components/swap/hooks/useCrossSwap.ts","../src/components/swap/components/processStatus.tsx","../src/utils.ts","../src/components/swap/components/swapDetail.tsx","../src/components/swap/components/viewFAQs.tsx","../src/components/swap/components/crossSwap.tsx","../src/components/swap/hooks/useSwap.ts","../src/components/swap/components/singleSwap.tsx","../src/components/swap/components/swap.tsx","../src/components/swap/components/swapDialog.tsx","../src/components/swap/hooks/useCrossSwapQuery.ts","../src/components/swap/hooks/useSwapQuery.ts","../src/components/swap/hooks/useSwapEnquiry.ts","../src/components/swap/hooks/useSwapFee.ts","../src/components/swap/hooks/useSwapDeposit.tsx","../src/components/depositForm/hooks/useActionType.ts","../src/components/depositForm/hooks/useChainSelect.ts","../src/components/depositForm/hooks/useDepositAction.tsx","../src/components/depositForm/hooks/useInputStatus.ts","../src/components/depositForm/hooks/useNativeBalance.ts","../src/components/depositForm/hooks/useToken.ts","../src/components/depositForm/depositForm.script.tsx","../src/components/depositForm/depositForm.ui.tsx","../src/components/depositForm/depositForm.widget.tsx","../src/components/accountIdInput/index.tsx","../src/components/unsettlePnlInfo/index.tsx","../src/components/crossWithdrawConfirm/index.tsx","../src/components/withdrawAction/SwitchChainButton.tsx","../src/components/withdrawAction/index.tsx","../src/components/withdrawWarningMessage/index.tsx","../src/components/unsettlePnlInfo/useSettlePnl.tsx","../src/components/withdrawForm/hooks/useVaultBalance.tsx","../src/components/withdrawForm/hooks/useWithdrawAccountId.ts","../src/components/withdrawForm/hooks/useWithdrawFee.ts","../src/components/withdrawForm/hooks/useWithdrawLTV.tsx","../src/components/withdrawForm/hooks/useWithdrawToken.ts","../src/components/withdrawForm/withdrawForm.script.tsx","../src/components/withdrawForm/addWalletDialog.tsx","../src/components/withdrawForm/walletSelector.tsx","../src/components/withdrawForm/withdrawForm.ui.tsx","../src/components/withdrawForm/withdrawForm.widget.tsx","../src/components/depositAndWithdraw/depositSlot.tsx","../src/components/depositAndWithdraw/withdrawSlot.tsx","../src/components/depositAndWithdraw/index.tsx","../src/components/swap/swapDepositForm/swapDepositForm.ui.tsx","../src/components/swap/hooks/useToken.ts","../src/components/swap/swapDepositForm/swapDepositForm.script.tsx","../src/components/swap/swapDepositForm/swapDepositForm.widget.tsx","../src/components/accountSelect/index.tsx","../src/components/transferForm/transferForm.ui.tsx","../src/components/transferForm/transferForm.script.tsx","../src/components/transferForm/transferForm.widget.tsx","../src/components/convertAction/index.tsx","../src/components/convertForm/hooks/useToken.ts","../src/components/convertForm/convertForm.script.tsx","../src/components/convertForm/convertForm.ui.tsx","../src/components/convertForm/convertForm.widget.tsx","../src/components/depostiStatus/depostiStatus.ui.tsx","../src/contract/getEvmBlockTime.ts","../src/contract/getSolanaBlockTime.ts","../src/contract/getBlockTime.ts","../src/contract/abi/getAppUlnConfigAbi.json","../src/contract/endpointId.ts","../src/contract/getChainConfirmations.ts","../src/contract/useTransactionTime.ts","../src/components/depostiStatus/depostiStatus.script.ts","../src/components/depostiStatus/depostiStatus.widget.tsx"],"names":["useQuery","useMemo","Decimal","forwardRef","jsx","useTranslation","jsxs","Box","Text","Flex","Tooltip","cn","DepositAction","WithdrawTo","AuthGuard","AccountStatusEnum","Button","useWithdraw","useScreen","useIndexPricesStream","modal","Spinner","useAppConfig","useConfig","Fragment","useState","ChainIcon","Badge","DropdownMenuRoot","DropdownMenuTrigger","DropdownMenuPortal","DropdownMenuContent","ScrollArea","TooltipContent","useCallback","useEffect","useRef","balance","TokenIcon","token","value","item","Select","Input","inputFormatter","AlertDialog","EditIcon","ChainSelectorDialogId","Trans","Divider","useWalletConnector","account","useAccount","address","ABSTRACT_CHAIN_ID_MAP","WalletIcon","options","useBoolean","useEventEmitter","WS_WalletStatusEnum","useAccountInstance","createClient","status","utils","pick","createElement","CloseCircleFillIcon","CheckedCircleFillIcon","i18n","markPrice","Icon","toast","useModal","SimpleSheet","SimpleDialog","useDebouncedCallback","useIndexPrice","toNonExponential","useLocalStorage","useChains","praseChainIdToNumber","int2hex","retryInterval","nativeTokenAddress","accountPerp","useAppContext","useDeposit","useAuthGuard","collateralRatio","ChainNamespace","useTokenInfo","useComputedLTV","isNativeTokenChecker","CaretDownIcon","InfoCircleIcon","textVariants","Checkbox","ExclamationFillIcon","usePositionStream","useInternalTransfer","useConvertThreshold","useTokensInfo","useHoldingStream","useMemoizedFn","ethers","PublicKey","useAssetsHistory","AssetHistorySideEnum","AssetHistoryStatusEnum","useWalletTopic","CloseRoundFillIcon","CaretUpIcon","TabPanel","ArrowLeftRightIcon","Tabs","ExtensionSlot","ExtensionPositionEnum","ArrowDownSquareFillIcon","ArrowUpSquareFillIcon","registerSimpleDialog","registerSimpleSheet","useToken","tokens","useAppStore","state","useTransfer","useSubAccountDataObserver","useSubAccountMaxWithdrawal","zero","useInputStatus","Arbitrum","calcMinimumReceived","useConvert","useOdosQuote","CloseIcon","DefaultSolanaWalletAdapter","isSolana","chainId","confirmations","useTransferHistory","useBalanceTopic","pendingList"],"mappings":"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","file":"index.js","sourcesContent":["import { useMemo } from \"react\";\nimport { useQuery } from \"@orderly.network/hooks\";\nimport type { API } from \"@orderly.network/types\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport const useLtvScript = () => {\n const { data, error, isLoading } = useQuery<API.ConvertThreshold>(\n \"/v1/public/auto_convert_threshold\",\n {\n errorRetryCount: 3,\n revalidateOnFocus: false,\n },\n );\n const ltvThreshold = useMemo(() => {\n if (!data || isLoading) {\n return \"-\";\n }\n return `${new Decimal(data.ltv_threshold).mul(100).toNumber()}%`;\n }, []);\n return {\n ltv_threshold: ltvThreshold,\n negative_usdc_threshold: data?.negative_usdc_threshold,\n isLoading,\n error,\n } as const;\n};\n\nexport type LtvScriptReturns = ReturnType<typeof useLtvScript>;\n","import { forwardRef } from \"react\";\n\nexport const TooltipIcon = forwardRef<\n SVGSVGElement,\n React.SVGProps<SVGSVGElement>\n>((props, ref) => {\n return (\n <svg\n width={12}\n height={12}\n viewBox=\"0 0 12 12\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable={false}\n ref={ref}\n {...props}\n >\n <path d=\"M5.999 1.007a5 5 0 1 0 0 10 5 5 0 0 0 0-10m0 2.5a.5.5 0 1 1 0 1 .5.5 0 0 1 0-1m0 1.5a.5.5 0 0 1 .5.5v2.5a.5.5 0 0 1-1 0v-2.5a.5.5 0 0 1 .5-.5\" />\n </svg>\n );\n});\n","import React from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { cn, Flex, Tooltip, Text, Box } from \"@orderly.network/ui\";\nimport { TooltipIcon } from \"../icons/tooltipIcon\";\nimport type { LtvScriptReturns } from \"./ltv.script\";\n\nconst calculateTextColor = (val: number): string => {\n if (val >= 0 && val < 50) {\n return \"oui-text-success\";\n } else if (val >= 50 && val < 80) {\n return \"oui-text-warning\";\n } else if (val >= 80) {\n return \"oui-text-danger\";\n } else {\n return \"\";\n }\n};\n\nconst TooltipContent: React.FC<{\n isLoading: boolean;\n ltv_threshold: string;\n}> = (props) => {\n const { isLoading, ltv_threshold } = props;\n const { t } = useTranslation();\n return (\n <Box className=\"oui-w-72 oui-max-w-72\">\n <Text size=\"2xs\" intensity={80}>\n {t(\"transfer.LTV.description\", {\n threshold: isLoading ? \"-\" : ltv_threshold,\n })}\n </Text>{\" \"}\n <a\n href=\"https://orderly.network/docs/introduction/trade-on-orderly/multi-collateral\"\n target=\"_blank\"\n rel=\"noreferrer\"\n className={\n \"oui-border-b oui-border-dashed oui-border-line-12 oui-text-2xs oui-text-primary\"\n }\n >\n {t(\"tradingLeaderboard.learnMore\")}\n </a>\n </Box>\n );\n};\n\nexport const LtvUI: React.FC<\n Readonly<\n LtvScriptReturns & {\n currentLtv: number;\n nextLTV: number;\n showDiff?: boolean;\n }\n >\n> = (props) => {\n const { t } = useTranslation();\n const { currentLtv, nextLTV, showDiff, ltv_threshold, isLoading } = props;\n return (\n <Flex width=\"100%\" itemAlign=\"center\" justify=\"between\">\n <Flex justify=\"start\" itemAlign=\"center\">\n <Text size=\"2xs\" intensity={36}>\n {t(\"transfer.LTV\")}\n </Text>\n <Tooltip\n className=\"oui-p-2\"\n content={\n <TooltipContent\n isLoading={isLoading}\n ltv_threshold={ltv_threshold}\n />\n }\n >\n <TooltipIcon className=\"oui-ml-[2px] oui-cursor-pointer oui-text-base-contrast-36\" />\n </Tooltip>\n </Flex>\n {showDiff ? (\n <Flex itemAlign=\"center\" justify=\"between\" gap={1}>\n <Text\n size=\"2xs\"\n className={cn(\"oui-font-semibold\", calculateTextColor(currentLtv))}\n >\n {currentLtv}%\n </Text>\n →\n <Text\n size=\"2xs\"\n className={cn(\"oui-font-semibold\", calculateTextColor(nextLTV))}\n >\n {nextLTV}%\n </Text>\n </Flex>\n ) : (\n <Text\n size=\"2xs\"\n className={cn(\"oui-font-semibold\", calculateTextColor(currentLtv))}\n >\n {currentLtv}%\n </Text>\n )}\n </Flex>\n );\n};\n","import React from \"react\";\nimport { useLtvScript } from \"./ltv.script\";\nimport { LtvUI } from \"./ltv.ui\";\n\nexport const LtvWidget: React.FC<\n Readonly<{\n currentLtv: number;\n nextLTV: number;\n showDiff?: boolean;\n }>\n> = (props) => {\n const state = useLtvScript();\n return <LtvUI {...props} {...state} />;\n};\n","export type DST = {\n symbol: string;\n address?: string;\n decimals?: number;\n chainId?: number;\n network?: string;\n};\n\nexport enum DepositAction {\n Deposit,\n Approve,\n ApproveAndDeposit,\n // Increase,\n}\n\nexport enum WithdrawTo {\n /** withdraw to web3 wallet */\n Wallet = \"wallet\",\n /** withdraw to other account id */\n Account = \"accountId\",\n}\n\nexport type InputStatus = \"error\" | \"warning\" | \"success\" | \"default\";\n","import React, { useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { AccountStatusEnum, NetworkId } from \"@orderly.network/types\";\nimport { Box, Button, ButtonProps } from \"@orderly.network/ui\";\nimport { AuthGuard } from \"@orderly.network/ui-connector\";\nimport { DepositAction } from \"../../types\";\n\nexport type ActionButtonProps = {\n disabled?: boolean;\n loading?: boolean;\n actionType: DepositAction;\n symbol?: string;\n onDeposit?: () => void;\n onApprove?: () => void;\n onApproveAndDeposit?: () => void;\n networkId?: NetworkId;\n};\n\nexport const ActionButton: React.FC<ActionButtonProps> = (props) => {\n const {\n disabled,\n loading,\n actionType,\n symbol = \"USDC\",\n onDeposit,\n onApprove,\n onApproveAndDeposit,\n networkId,\n } = props;\n const { t } = useTranslation();\n\n const buttonParams = useMemo(() => {\n const params: Partial<Record<DepositAction, ButtonProps>> = {\n // [DepositAction.Approve]: {\n // // Approve & Deposit\n // children: t(\"transfer.deposit.approve\"),\n // onClick: onApprove,\n // // approve not disabled button\n // disabled: false,\n // \"data-testid\": \"oui-testid-deposit-dialog-approve-btn\",\n // },\n [DepositAction.ApproveAndDeposit]: {\n children: `${t(\"transfer.deposit.approve\")} & ${t(\"common.deposit\")}`,\n onClick: onApproveAndDeposit,\n // approve not disabled button\n // disabled: false,\n },\n // [DepositAction.Increase]: {\n // children: t(\"transfer.deposit.increase.symbol\", { symbol }),\n // onClick: onApprove,\n // \"data-testid\": \"oui-testid-deposit-dialog-increase-btn\",\n // },\n [DepositAction.Deposit]: {\n children: t(\"common.deposit\"),\n onClick: onDeposit,\n \"data-testid\": \"oui-testid-deposit-dialog-deposit-btn\",\n },\n };\n\n return params[actionType];\n }, [onApprove, onDeposit, actionType, symbol, t]);\n\n const buttonSize = { initial: \"md\", lg: \"lg\" } as const;\n\n return (\n <Box className=\"oui-w-full lg:oui-w-auto lg:oui-min-w-[184px]\">\n <AuthGuard\n status={AccountStatusEnum.EnableTrading}\n networkId={networkId}\n buttonProps={{\n fullWidth: true,\n size: buttonSize,\n }}\n >\n <Button\n fullWidth\n disabled={disabled}\n loading={loading}\n size={buttonSize}\n {...buttonParams}\n />\n </AuthGuard>\n </Box>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { useIndexPricesStream, useWithdraw } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API } from \"@orderly.network/types\";\nimport {\n Flex,\n Spinner,\n Text,\n Tooltip,\n modal,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport type AvailableQuantityProps = {\n token?: Partial<API.TokenInfo>;\n amount?: number | string;\n maxQuantity?: number | string;\n onClick?: () => void;\n loading?: boolean;\n tooltipContent?: React.ReactNode;\n};\n\ntype AvailableTooltipMessageProps = {\n tokenSymbol?: string;\n decimals?: number;\n};\n\nconst AvailableTooltipMessage: FC<AvailableTooltipMessageProps> = ({\n tokenSymbol,\n decimals,\n}) => {\n const { t } = useTranslation();\n const { maxAmount } = useWithdraw({\n token: tokenSymbol,\n decimals,\n });\n\n const amountText = useMemo(() => {\n if (maxAmount === undefined || maxAmount === null) return \"--\";\n return maxAmount.toString();\n }, [maxAmount]);\n\n return (\n <Text size=\"2xs\" intensity={80}>\n {t(\"transfer.withdraw.available.tooltip\", { amount: amountText })}\n </Text>\n );\n};\n\nexport const AvailableQuantity: FC<AvailableQuantityProps> = (props) => {\n const { amount, maxQuantity, token, loading } = props;\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n\n const { getIndexPrice } = useIndexPricesStream();\n\n const name = token?.display_name || token?.symbol || \"\";\n const dp = token?.precision ?? token?.decimals ?? 2;\n\n const notional = useMemo(() => {\n if (amount && token?.symbol && getIndexPrice(token?.symbol)) {\n return new Decimal(amount)\n .mul(getIndexPrice(token?.symbol) || 1)\n .toNumber();\n }\n return 0;\n }, [amount, token?.symbol]);\n\n return (\n <Flex px={2}>\n <Text size=\"2xs\" intensity={36}>\n $\n <Text.numeral dp={2} padding={false} rm={Decimal.ROUND_DOWN}>\n {notional}\n </Text.numeral>\n </Text>\n\n <Flex gapX={2} itemAlign=\"center\" className=\"oui-ml-auto\">\n <Flex gapX={1} itemAlign=\"center\">\n {props.tooltipContent ? (\n isMobile ? (\n <button\n type=\"button\"\n className=\"oui-p-0\"\n onClick={() => {\n if (token?.symbol) {\n const anyToken = token as any;\n modal.alert({\n title: t(\"common.tips\"),\n message: (\n <AvailableTooltipMessage\n tokenSymbol={token.symbol}\n decimals={\n anyToken?.token_decimal ??\n token.decimals ??\n token.precision\n }\n />\n ),\n });\n } else {\n modal.alert({\n title: t(\"common.tips\"),\n message: props.tooltipContent,\n });\n }\n }}\n >\n <Text\n size=\"2xs\"\n intensity={36}\n className=\"oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12\"\n >\n {`${t(\"common.available\")}: `}\n </Text>\n </button>\n ) : (\n <Tooltip\n content={props.tooltipContent}\n className=\"oui-max-w-[274px]\"\n >\n <Text\n size=\"2xs\"\n intensity={36}\n className=\"oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12\"\n >\n {`${t(\"common.available\")}: `}\n </Text>\n </Tooltip>\n )\n ) : (\n <Text size=\"2xs\" intensity={36}>\n {`${t(\"common.available\")}: `}\n </Text>\n )}\n\n {loading ? (\n <Spinner size=\"sm\" />\n ) : (\n <Text.numeral\n size=\"2xs\"\n intensity={36}\n rm={Decimal.ROUND_DOWN}\n dp={dp}\n padding={false}\n data-testid=\"oui-testid-withdraw_deposit-dialog-available-value\"\n >\n {maxQuantity!}\n </Text.numeral>\n )}\n\n <Text size=\"2xs\" intensity={36}>\n {` ${name}`}\n </Text>\n </Flex>\n\n <Text\n size=\"2xs\"\n color=\"primary\"\n className=\"oui-cursor-pointer oui-select-none\"\n onClick={props.onClick}\n >\n {t(\"common.max\")}\n </Text>\n </Flex>\n </Flex>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { Flex, Text } from \"@orderly.network/ui\";\nimport { useAppConfig } from \"@orderly.network/react-app\";\nimport { useConfig } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const BrokerWallet: FC = () => {\n const { t } = useTranslation();\n const { appIcons } = useAppConfig();\n const brokerName = useConfig(\"brokerName\");\n\n const icon = useMemo(() => {\n const { secondary } = appIcons || {};\n\n if (!secondary?.img && secondary?.component) return null;\n\n if (secondary?.img) {\n return <img src={secondary?.img} className=\"oui-w-5 oui-h-5\" />;\n }\n\n if (secondary?.component) {\n return <>{secondary.component}</>;\n }\n }, [appIcons]);\n\n return (\n <Flex justify=\"between\">\n <Text size=\"sm\" intensity={98}>\n {t(\"transfer.brokerAccount\", { brokerName })}\n </Text>\n {icon}\n </Flex>\n );\n};\n","import React, { FC, SVGProps } from \"react\";\n\nexport const ExchangeIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M10.997 8.004a.5.5 0 0 0-.14-.36l-1.86-1.843-.703.703.984 1h-7.28a.5.5 0 0 0 0 1h7.28l-.984 1 .703.703 1.86-1.844a.5.5 0 0 0 .14-.36m-.5-4a.5.5 0 0 0-.5-.5H2.716l.984-1-.703-.703-1.859 1.843a.515.515 0 0 0 0 .719l1.86 1.844.702-.703-.984-1h7.281a.5.5 0 0 0 .5-.5\" />\n </svg>\n);\n\nexport const ArrowDownIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"20\"\n height=\"21\"\n viewBox=\"0 0 20 21\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M9.994 5.51a.83.83 0 0 0-.832.833v6.295l-2.498-2.471-1.17 1.17 3.902 3.929a.84.84 0 0 0 .599.244.84.84 0 0 0 .597-.244l3.903-3.928-1.171-1.171-2.498 2.471V6.343a.83.83 0 0 0-.832-.833\" />\n </svg>\n);\n\nexport const SelectArrowDownIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 10 10\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M2.503 3.332a.412.412 0 0 0-.326.664l2.5 3.333a.414.414 0 0 0 .664 0l2.5-3.333a.417.417 0 0 0-.338-.664z\" />\n </svg>\n);\n\nexport const RefreshIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M6.00342 1.49561C4.97642 1.49561 3.99542 1.84011 3.20642 2.46461C2.98992 2.63561 2.95692 2.9511 3.12842 3.1676C3.29992 3.3841 3.61492 3.4171 3.83142 3.2456C4.44492 2.7601 5.20392 2.4956 6.00342 2.4956C7.93642 2.4956 9.50342 4.0626 9.50342 5.9956H8.50342L10.0034 7.9956L11.5034 5.9956H10.5034C10.5034 3.5101 8.48892 1.49561 6.00342 1.49561ZM2.00342 3.9956L0.503418 5.9956H1.50342C1.50342 8.4811 3.51792 10.4956 6.00342 10.4956C7.03092 10.4956 8.01142 10.1516 8.80042 9.52659C9.01692 9.35559 9.04992 9.0401 8.87842 8.8236C8.70692 8.6071 8.39191 8.5741 8.17542 8.7456C7.56142 9.2316 6.80342 9.4956 6.00342 9.4956C4.07042 9.4956 2.50342 7.9286 2.50342 5.9956H3.50342L2.00342 3.9956Z\" />\n </svg>\n);\n\nexport const TransferVerticalIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"20\"\n height=\"21\"\n viewBox=\"0 0 20 21\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M12.385 4.565a.6.6 0 0 0-.427.167L9.764 6.944l.837.837 1.19-1.17v8.66a.595.595 0 0 0 1.19 0v-8.66l1.189 1.17.836-.837-2.193-2.212a.6.6 0 0 0-.428-.167m-4.758.595a.595.595 0 0 0-.595.595v8.661l-1.19-1.17-.836.836L7.2 16.294a.61.61 0 0 0 .855 0l2.194-2.212-.837-.836-1.19 1.17V5.755a.595.595 0 0 0-.594-.595\" />\n </svg>\n);\n","import { useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API } from \"@orderly.network/types\";\nimport {\n Badge,\n Box,\n ChainIcon,\n DropdownMenuContent,\n DropdownMenuPortal,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n Flex,\n ScrollArea,\n Spinner,\n Text,\n cn,\n} from \"@orderly.network/ui\";\nimport { ExchangeIcon } from \"../../icons\";\nimport { CurrentChain } from \"../depositForm/hooks\";\n\ntype ChainSelectProps = {\n chains: API.NetworkInfos[];\n value: CurrentChain;\n onValueChange: (chain: API.NetworkInfos) => Promise<void>;\n wrongNetwork: boolean;\n loading?: boolean;\n disabled?: boolean;\n};\n\nexport const ChainSelect: React.FC<ChainSelectProps> = (props) => {\n const { chains, value, wrongNetwork, loading, disabled } = props;\n const [open, setOpen] = useState(false);\n const { t } = useTranslation();\n\n const selectable = wrongNetwork || chains?.length > 1;\n\n const chainIcon = wrongNetwork ? (\n <Flex\n width={18}\n height={18}\n intensity={100}\n r=\"full\"\n justify=\"center\"\n itemAlign=\"center\"\n >\n <Text size=\"2xs\" intensity={80}>\n U\n </Text>\n </Flex>\n ) : (\n <ChainIcon className=\"oui-size-[18px]\" chainId={value?.id} />\n );\n\n const chainName = wrongNetwork ? \"Unknown\" : value?.info?.network_infos?.name;\n\n const currentChain = chains.find((chain) => chain.chain_id === value?.id);\n const extendedCurrentChain = currentChain as API.NetworkInfos & {\n isSupported?: boolean;\n };\n const isCurrentChainSupported =\n !currentChain || extendedCurrentChain?.isSupported !== false;\n\n const renderRightIcon = () => {\n if (loading) {\n return <Spinner size=\"sm\" />;\n }\n if (selectable) {\n return <ExchangeIcon className=\"oui-text-base-contrast-54\" />;\n }\n };\n\n const trigger = (\n <Flex\n intensity={500}\n className={cn(\n \"oui-rounded-t-xl oui-rounded-b-sm oui-border oui-border-line\",\n disabled\n ? \"oui-cursor-not-allowed\"\n : selectable\n ? \"oui-cursor-pointer\"\n : \"oui-cursor-auto\",\n )}\n height={54}\n px={3}\n justify=\"between\"\n itemAlign=\"center\"\n >\n <div>\n <Flex>\n <Text size=\"2xs\" intensity={54}>\n {t(\"transfer.network\")}\n </Text>\n </Flex>\n <Flex gapX={1} itemAlign=\"center\">\n {chainIcon}\n <Text size=\"sm\" intensity={80}>\n {chainName}\n </Text>\n {!isCurrentChainSupported && (\n <Badge color=\"danger\" size=\"xs\">\n {t(\"common.notSupported\")}\n </Badge>\n )}\n </Flex>\n </div>\n {renderRightIcon()}\n </Flex>\n );\n\n const content = chains.map((chain, index) => {\n const extendedChain = chain as API.NetworkInfos & {\n isSupported?: boolean;\n };\n const isActive = chain.chain_id === value?.id;\n const isSupported = extendedChain.isSupported !== false;\n return (\n <Flex\n key={chain.chain_id}\n px={2}\n r=\"base\"\n justify=\"between\"\n itemAlign=\"center\"\n className={cn(\n \"oui-deposit-network-select-item\",\n \"oui-h-[30px]\",\n isSupported\n ? \"hover:oui-bg-base-5 oui-cursor-pointer\"\n : \"oui-cursor-not-allowed\",\n isActive && \"oui-bg-base-5\",\n index !== 0 && \"oui-mt-[2px]\",\n )}\n onClick={async () => {\n if (!isSupported) return;\n setOpen(false);\n await props.onValueChange(chain);\n }}\n >\n <Flex gapX={1} itemAlign=\"center\">\n <ChainIcon\n className={cn(\"oui-size-[18px]\", !isSupported && \"oui-opacity-50\")}\n chainId={chain.chain_id}\n />\n <Text size=\"2xs\" intensity={isSupported ? 54 : 36}>\n {chain.name}\n </Text>\n {!isSupported && (\n <Badge color=\"danger\" size=\"xs\">\n {t(\"common.notSupported\")}\n </Badge>\n )}\n </Flex>\n {isActive && (\n <Box\n width={4}\n height={4}\n r=\"full\"\n className=\"oui-deposit-network-select-active-dot oui-bg-[linear-gradient(270deg,#59B0FE_0%,#26FEFE_100%)]\"\n />\n )}\n </Flex>\n );\n });\n\n return (\n <DropdownMenuRoot open={selectable ? open : false} onOpenChange={setOpen}>\n <DropdownMenuTrigger disabled={disabled} asChild>\n {trigger}\n </DropdownMenuTrigger>\n <DropdownMenuPortal>\n <DropdownMenuContent\n onCloseAutoFocus={(e) => e.preventDefault()}\n align=\"start\"\n sideOffset={2}\n className={cn(\n \"oui-deposit-token-select-dropdown-menu-content\",\n \"oui-bg-base-8 oui-p-1\",\n \"oui-w-[var(--radix-dropdown-menu-trigger-width)]\",\n \"oui-rounded-md oui-select-none\",\n )}\n >\n <ScrollArea>\n <div className=\"oui-max-h-[254px]\">{content}</div>\n </ScrollArea>\n </DropdownMenuContent>\n </DropdownMenuPortal>\n </DropdownMenuRoot>\n );\n};\n","import React from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { cn, Flex, Text } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport const CollateralContribution: React.FC<{\n value: number;\n precision: number;\n}> = (props) => {\n const { t } = useTranslation();\n const { value, precision } = props;\n return (\n <Flex width=\"100%\" itemAlign=\"center\" justify=\"between\">\n <Flex itemAlign=\"center\" justify=\"start\">\n <Text size=\"2xs\" intensity={36}>\n {t(\"transfer.deposit.collateralContribution\")}\n </Text>\n </Flex>\n <Flex itemAlign=\"center\" justify=\"end\" gap={1}>\n <Text.numeral\n dp={precision}\n size=\"2xs\"\n rm={Decimal.ROUND_DOWN}\n className={cn(\"oui-font-semibold\")}\n padding={false}\n >\n {value}\n </Text.numeral>\n <Text size=\"2xs\" intensity={36} className=\"oui-select-none\">\n USDC\n </Text>\n </Flex>\n </Flex>\n );\n};\n","import React from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Box, Flex, Text, Tooltip } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { TooltipIcon } from \"../icons/tooltipIcon\";\n\nconst TooltipContent: React.FC = () => {\n const { t } = useTranslation();\n return (\n <Box className=\"oui-w-72 oui-max-w-72\">\n <Text size=\"2xs\" intensity={80}>\n {t(\"portfolio.overview.column.collateralRatio.explain\")}\n </Text>{\" \"}\n <a\n href=\"https://orderly.network/docs/introduction/trade-on-orderly/multi-collateral\"\n target=\"_blank\"\n rel=\"noreferrer\"\n className={\n \"oui-border-b oui-border-dashed oui-border-line-12 oui-text-2xs oui-text-primary\"\n }\n >\n {t(\"tradingLeaderboard.learnMore\")}\n </a>\n </Box>\n );\n};\n\nexport const CollateralRatioUI: React.FC<{ value: number }> = (props) => {\n const { t } = useTranslation();\n const { value } = props;\n return (\n <Flex width=\"100%\" itemAlign=\"center\" justify=\"between\">\n <Flex justify=\"start\" itemAlign=\"center\">\n <Text size=\"2xs\" intensity={36}>\n {t(\"portfolio.overview.column.collateralRatio\")}\n </Text>\n <Tooltip className=\"oui-p-2\" content={<TooltipContent />}>\n <TooltipIcon className=\"oui-ml-[2px] oui-cursor-pointer oui-text-base-contrast-36\" />\n </Tooltip>\n </Flex>\n <Text.numeral\n dp={2}\n rm={Decimal.ROUND_DOWN}\n coloring\n className=\"oui-font-semibold\"\n rule=\"percentages\"\n >\n {value}\n </Text.numeral>\n </Flex>\n );\n};\n","import React from \"react\";\nimport { CollateralRatioUI } from \"./collateralRatio.ui\";\n\nexport const CollateralRatioWidget: React.FC<{ value: number }> = (props) => {\n return <CollateralRatioUI {...props} />;\n};\n","import { FC, ReactNode } from \"react\";\nimport { Flex } from \"@orderly.network/ui\";\nimport { ArrowDownIcon } from \"../../icons\";\n\ntype ExchangeDividerProps = {\n icon?: ReactNode;\n};\n\nexport const ExchangeDivider: FC<ExchangeDividerProps> = ({ icon }) => {\n return (\n <Flex height={40} gapX={3}>\n <Flex height={1} className=\"oui-flex-1 oui-bg-base-contrast-12\"></Flex>\n {icon || <ArrowDownIcon className=\"oui-text-primary-light\" />}\n <Flex height={1} className=\"oui-flex-1 oui-bg-base-contrast-12\"></Flex>\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Box, Flex, modal, Text } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { type UseDepositFeeReturn } from \"../depositForm/depositForm.script\";\n\ntype FeeProps = Partial<UseDepositFeeReturn> & {\n nativeSymbol?: string;\n};\n\nexport const Fee: FC<FeeProps> = (props) => {\n const { dstGasFee, feeQty, feeAmount, dp, nativeSymbol } = props;\n const { t } = useTranslation();\n\n const onShowFee = () => {\n const content = (\n <div className=\"oui-text-2xs\">\n <Flex gapX={1}>\n <Text size=\"2xs\" intensity={54}>\n {`${t(\"transfer.deposit.destinationGasFee\")}: `}\n </Text>\n <Text.numeral\n intensity={80}\n dp={dp}\n rm={Decimal.ROUND_UP}\n padding={false}\n >\n {feeQty!}\n </Text.numeral>\n <Text intensity={54}>{nativeSymbol}</Text>\n </Flex>\n <Box mt={2}>\n <Text intensity={36}>\n {t(\"transfer.deposit.destinationGasFee.description\")}\n </Text>\n </Box>\n </div>\n );\n\n modal.alert({\n title: t(\"common.fee\"),\n message: content,\n });\n };\n\n const showFeeQty = !!dstGasFee && dstGasFee !== \"0\";\n\n return (\n <Text\n size=\"2xs\"\n intensity={36}\n className=\"oui-border-dashed oui-border-b oui-border-line-12 oui-cursor-pointer\"\n onClick={onShowFee}\n >\n {`${t(\"transfer.deposit.estGasFee\")} ≈ `}\n <Text size=\"2xs\" intensity={80}>\n $\n <Text.numeral dp={2} padding={false} rm={Decimal.ROUND_UP}>\n {feeAmount!}\n </Text.numeral>{\" \"}\n </Text>\n {showFeeQty && (\n <span>\n (\n <Text intensity={54}>\n <Text.numeral dp={dp} padding={false} rm={Decimal.ROUND_UP}>\n {feeQty!}\n </Text.numeral>\n {nativeSymbol}\n </Text>\n )\n </span>\n )}\n </Text>\n );\n};\n","import React from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, Text } from \"@orderly.network/ui\";\n\nexport const MinimumReceived: React.FC<\n Readonly<{ symbol: string; value: number | string; precision: number }>\n> = (props) => {\n const { t } = useTranslation();\n const { value, symbol, precision = 6 } = props;\n\n return (\n <Flex width=\"100%\" itemAlign=\"center\" justify=\"between\">\n <Flex itemAlign=\"center\" justify=\"start\">\n <Text size=\"2xs\" intensity={36}>\n {t(\"transfer.swapDeposit.minimumReceived\")}\n </Text>\n </Flex>\n <Flex itemAlign=\"center\" justify=\"end\" gap={1}>\n <Text.numeral\n dp={precision}\n size=\"2xs\"\n className=\"oui-select-none\"\n intensity={80}\n >\n {value}\n </Text.numeral>\n <Text size=\"2xs\" className=\"oui-select-none\" intensity={36}>\n {symbol}\n </Text>\n </Flex>\n </Flex>\n );\n};\n","/**\n * Yield-bearing collateral assets configuration\n * These assets earn APY rewards while being used as collateral for trading\n */\n\nexport interface YieldBearingAsset {\n /** Asset symbol (e.g., \"YUSD\", \"deUSD\") */\n symbol: string;\n /** Asset display name */\n displayName: string;\n /** API endpoint to fetch APY data */\n apyApiUrl: string;\n /** Path to extract APY value from API response (e.g., \"data.efficient_apr\") */\n apyPath: string;\n /** External link to the asset issuer's website */\n externalUrl: string;\n}\n\n/**\n * Configuration for all supported yield-bearing assets\n * Chain support is determined by the backend API (/v1/public/token)\n * via the chain_details array for each token\n */\nexport const YIELD_BEARING_ASSETS: YieldBearingAsset[] = [\n {\n symbol: \"YUSD\",\n displayName: \"YUSD\",\n apyApiUrl: \"https://api.aegis.im/api/project-stats\",\n apyPath: \"data.efficient_apr\",\n externalUrl: \"https://aegis.im/\",\n },\n {\n symbol: \"deUSD\",\n displayName: \"deUSD\",\n apyApiUrl: \"https://api-deusd-prod-public.elixir.xyz/public/deusd_apy\",\n apyPath: \"deusd_apy\",\n externalUrl: \"https://www.elixir.xyz/deusd\",\n },\n];\n\n/**\n * Check if a token is a yield-bearing asset\n * Note: This only checks if the token symbol is configured as yield-bearing.\n * Chain availability is determined by the backend API's chain_details.\n *\n * @param symbol - Token symbol to check\n * @returns true if the token is configured as yield-bearing\n */\nexport function isYieldBearingAsset(symbol?: string): boolean {\n if (!symbol) return false;\n return YIELD_BEARING_ASSETS.some(\n (asset) => asset.symbol.toLowerCase() === symbol.toLowerCase(),\n );\n}\n\n/**\n * Get yield-bearing asset configuration by symbol\n */\nexport function getYieldBearingAsset(\n symbol?: string,\n): YieldBearingAsset | undefined {\n if (!symbol) return undefined;\n return YIELD_BEARING_ASSETS.find(\n (asset) => asset.symbol.toLowerCase() === symbol.toLowerCase(),\n );\n}\n","import { useCallback, useEffect, useState } from \"react\";\nimport { getYieldBearingAsset } from \"../../../constants/yieldBearingAssets\";\n\nexport interface YieldAPYData {\n /** APY value in percentage (e.g., 8.5 for 8.5%) */\n apy: number | null;\n /** Whether the APY data is currently loading */\n loading: boolean;\n /** Error message if failed to fetch APY */\n error: string | null;\n /** External URL to the asset issuer's website */\n externalUrl: string | null;\n}\n\n/**\n * Hook to fetch and manage APY data for yield-bearing assets\n * @param symbol - Token symbol to fetch APY for\n * @returns APY data including value, loading state, and error\n */\nexport function useYieldAPY(symbol?: string): YieldAPYData {\n const [apy, setApy] = useState<number | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const assetConfig = getYieldBearingAsset(symbol);\n\n const fetchAPY = useCallback(async () => {\n if (!assetConfig) {\n setApy(null);\n setError(null);\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), 10000); // 10s timeout\n\n const response = await fetch(assetConfig.apyApiUrl, {\n signal: controller.signal,\n headers: {\n Accept: \"application/json\",\n },\n });\n\n clearTimeout(timeoutId);\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const data = await response.json();\n\n // Extract APY value using the path from config\n const apyValue = getNestedValue(data, assetConfig.apyPath);\n\n if (typeof apyValue === \"number\" && !isNaN(apyValue)) {\n setApy(apyValue);\n setError(null);\n } else {\n throw new Error(\"Invalid APY data format\");\n }\n } catch (err) {\n console.error(`[useYieldAPY] Failed to fetch APY for ${symbol}:`, err);\n\n // CRITICAL FIX: Clear APY data when fetch fails\n // This prevents showing stale data from previous token\n setApy(null);\n\n if (err instanceof Error) {\n if (err.name === \"AbortError\") {\n setError(\"timeout\");\n } else {\n setError(err.message);\n }\n } else {\n setError(\"unknown_error\");\n }\n } finally {\n setLoading(false);\n }\n }, [symbol, assetConfig]);\n\n // Fetch APY when symbol changes\n useEffect(() => {\n // CRITICAL FIX: Clear APY immediately when symbol changes\n // This prevents showing stale data during the transition\n setApy(null);\n setError(null);\n\n if (assetConfig?.symbol === \"deUSD\") {\n fetchAPY();\n } else {\n setLoading(false);\n }\n }, [assetConfig, fetchAPY]);\n\n return {\n apy,\n loading,\n error,\n externalUrl: assetConfig?.externalUrl || null,\n };\n}\n\n/**\n * Helper function to extract nested value from object using dot notation path\n * e.g., \"data.efficient_apr\" => obj.data.efficient_apr\n */\nfunction getNestedValue(obj: any, path: string): any {\n return path.split(\".\").reduce((current, key) => {\n return current?.[key];\n }, obj);\n}\n","import { useEffect, useRef, useState } from \"react\";\nimport { API } from \"@orderly.network/types\";\n\nconst retryInterval = 1000;\n\nexport function useBalance(\n token: API.TokenInfo,\n fetchBalance?: (token: string, decimals: number) => Promise<any>,\n open?: boolean,\n) {\n const [balance, setBalance] = useState<string>(\"\");\n const balanceRef = useRef<string>(\"\");\n const [loading, setLoading] = useState<boolean>(false);\n\n const timeoutRef = useRef<ReturnType<typeof setTimeout>>();\n\n const loopGetTokenBalance = async (timeout = 0) => {\n if (loading || typeof fetchBalance !== \"function\" || !token.address) {\n return;\n }\n\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n if (balanceRef.current === \"\") {\n // when balance is empty, set loading to true\n setLoading(true);\n }\n\n timeoutRef.current = setTimeout(async () => {\n try {\n const balance = await fetchBalance(token.address!, token.decimals!);\n setBalance(balance);\n balanceRef.current = balance;\n console.log(\"balance\", token.symbol, token.address, balance);\n } catch (err) {\n console.error(\"get balance error\", token.symbol, token.address, err);\n // when fetch balance failed, retry\n loopGetTokenBalance(retryInterval);\n } finally {\n if (balanceRef.current !== \"\") {\n setLoading(false);\n }\n }\n }, timeout);\n };\n\n useEffect(() => {\n if (open) {\n // get balance first, no timeout\n loopGetTokenBalance(0);\n }\n\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, [token, open]);\n\n return { balance, loading };\n}\n","import React from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API } from \"@orderly.network/types\";\nimport {\n Badge,\n Box,\n cn,\n Flex,\n Spinner,\n Text,\n TokenIcon,\n} from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { isYieldBearingAsset } from \"../../constants/yieldBearingAssets\";\nimport { useYieldAPY } from \"../depositForm/hooks/useYieldAPY\";\nimport { useBalance } from \"./useBalance\";\n\ninterface TokenOptionProps {\n token: API.TokenInfo & {\n label: string;\n value: string;\n insufficientBalance?: boolean;\n balance?: string;\n };\n fetchBalance?: (token: string, decimals: number) => Promise<any>;\n onTokenChange?: (token: API.TokenInfo) => void;\n isActive: boolean;\n index?: number;\n displayType?: \"balance\" | \"vaultBalance\";\n open?: boolean;\n}\n\nexport const TokenOption: React.FC<TokenOptionProps> = (props) => {\n const { token, isActive, displayType, onTokenChange, fetchBalance, open } =\n props;\n const { symbol, precision, insufficientBalance } = token;\n const { balance, loading } = useBalance(token, fetchBalance, open);\n const { apy } = useYieldAPY(symbol);\n\n const showBalance = typeof fetchBalance === \"function\";\n const showAPY = isYieldBearingAsset(symbol) && apy !== null;\n\n const { t } = useTranslation();\n\n if (displayType === \"vaultBalance\" && insufficientBalance) {\n return (\n <Flex\n key={symbol}\n itemAlign={\"center\"}\n justify=\"between\"\n px={2}\n r=\"base\"\n className={cn(\n \"group\",\n \"oui-h-[30px]\",\n \"oui-text-2xs oui-font-semibold\",\n isActive && \"oui-bg-base-5\",\n props.index !== 0 && \"oui-mt-[2px]\",\n \"oui-cursor-not-allowed\",\n )}\n >\n <Flex itemAlign=\"center\" gapX={1}>\n <TokenIcon name={symbol} className=\"oui-size-[16px] oui-opacity-50\" />\n <Text intensity={36}>{token.label}</Text>\n <Badge color=\"neutral\" size=\"xs\">\n {t(\"transfer.withdraw.InsufficientVaultBalance\")}\n </Badge>\n </Flex>\n </Flex>\n );\n }\n\n const renderValue = () => {\n if (!showBalance) {\n return null;\n }\n\n if (loading && !token.balance) {\n return <Spinner size=\"sm\" />;\n }\n\n return (\n <Text.numeral\n rule=\"price\"\n dp={precision ?? 2}\n rm={Decimal.ROUND_DOWN}\n className={cn(\n \"oui-text-base-contrast-80 group-hover:oui-text-base-contrast-54\",\n isActive && \"oui-text-base-contrast-54\",\n )}\n >\n {balance || token.balance!}\n </Text.numeral>\n );\n };\n\n return (\n <Flex\n key={symbol}\n justify=\"between\"\n px={2}\n r=\"base\"\n className={cn(\n \"group\",\n \"oui-h-[30px] hover:oui-bg-base-5\",\n \"oui-text-2xs oui-font-semibold\",\n \"oui-cursor-pointer\",\n isActive && \"oui-bg-base-5\",\n props.index !== 0 && \"oui-mt-[2px]\",\n )}\n onClick={() => {\n onTokenChange?.(token);\n }}\n >\n <Flex gapX={1} itemAlign=\"center\">\n <TokenIcon name={symbol} className=\"oui-size-[16px]\" />\n <Text\n className={cn(\n \"oui-text-base-contrast-54 group-hover:oui-text-base-contrast-80\",\n isActive && \"oui-text-base-contrast-80\",\n )}\n >\n {token.label}\n </Text>\n {showAPY && (\n <Box\n height={18}\n px={2}\n r=\"sm\"\n className=\"oui-rounded-[4px] oui-bg-success/[0.15]\"\n >\n <Text size=\"2xs\" className=\"oui-text-success\">\n {apy!.toFixed(1)}% APY\n </Text>\n </Box>\n )}\n </Flex>\n {renderValue()}\n </Flex>\n );\n};\n","import { FC, ReactNode, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API } from \"@orderly.network/types\";\nimport {\n Input,\n Select,\n InputProps,\n cn,\n Box,\n Text,\n Flex,\n inputFormatter,\n Spinner,\n InputFormatter,\n} from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { InputStatus } from \"../../types\";\nimport { TokenOption } from \"./tokenOption\";\n\nexport type QuantityInputProps = {\n token?: API.TokenInfo;\n tokens?: API.TokenInfo[];\n label?: string;\n status?: InputStatus;\n hintMessage?: string;\n hintSuffix?: ReactNode;\n onValueChange?: (value: string) => void;\n onTokenChange?: (token: any) => void;\n fetchBalance?: (token: string, decimals: number) => Promise<any>;\n loading?: boolean;\n testId?: string;\n formatters?: InputFormatter[];\n vaultBalanceList?: API.VaultBalance[];\n displayType?: \"balance\" | \"vaultBalance\";\n tokenBalances?: Record<string, string>;\n tokenValueFormatter?: (value: string) => ReactNode;\n tokenShowCaret?: boolean;\n} & Omit<InputProps, \"onClear\" | \"suffix\" | \"onValueChange\">;\n\nexport const QuantityInput: FC<QuantityInputProps> = (props) => {\n const {\n token,\n tokens = [],\n classNames,\n label,\n status,\n hintMessage,\n hintSuffix,\n value,\n onValueChange,\n fetchBalance,\n onTokenChange,\n loading,\n placeholder,\n formatters,\n vaultBalanceList,\n displayType,\n tokenBalances,\n tokenValueFormatter,\n tokenShowCaret,\n ...rest\n } = props;\n\n const { t } = useTranslation();\n\n const inputRef = useRef<HTMLInputElement>(null);\n const [open, setOpen] = useState(false);\n const [width, setWidth] = useState(0);\n\n const tokenOptions = useMemo(() => {\n return tokens.map((token) => {\n const currentToken = vaultBalanceList?.find(\n (item) => item.token === token.symbol,\n );\n const insufficientBalance = currentToken\n ? new Decimal(currentToken.balance ?? 0).lt(value ? Number(value) : 0)\n : false;\n return {\n ...token,\n name: token.display_name || token.symbol!,\n insufficientBalance,\n balance: tokenBalances?.[token.symbol!],\n };\n });\n }, [tokens, value, vaultBalanceList, tokenBalances]);\n\n useEffect(() => {\n const rect = inputRef?.current?.getBoundingClientRect();\n setWidth(rect?.width || 0);\n }, [inputRef]);\n\n const _onTokenChange = (value: string) => {\n const find = tokens.find((item) => item.symbol === value);\n if (find) {\n onTokenChange?.(find);\n }\n };\n\n const selectable = tokens.length > 1;\n const selectOpen = selectable ? open : false;\n\n const optionRenderer = (item: any) => {\n const isActive = item.symbol === token?.symbol;\n return (\n <TokenOption\n token={item}\n isActive={isActive}\n fetchBalance={fetchBalance}\n displayType={displayType}\n onTokenChange={(item) => {\n onTokenChange?.(item);\n setOpen(false);\n }}\n open={selectOpen}\n />\n );\n };\n\n const prefix = (\n <Box>\n <Box className=\"oui-absolute oui-top-0\">\n <Text size=\"2xs\" intensity={36}>\n {label || t(\"common.quantity\")}\n </Text>\n </Box>\n {loading && (\n <Box className=\"oui-absolute oui-bottom-1\">\n <Spinner size=\"sm\" />\n </Box>\n )}\n </Box>\n );\n\n const suffix = (\n <div className=\"oui-absolute oui-right-0\">\n <Select.tokens\n open={selectOpen}\n onOpenChange={setOpen}\n disabled={rest.disabled}\n variant=\"text\"\n tokens={tokenOptions}\n value={token?.display_name || token?.symbol}\n size={rest.size}\n onValueChange={_onTokenChange}\n showIcon\n valueFormatter={tokenValueFormatter}\n showCaret={tokenShowCaret}\n optionRenderer={optionRenderer}\n contentProps={{\n onCloseAutoFocus: (event) => {\n event.preventDefault();\n inputRef.current?.focus();\n },\n onClick: (event) => {\n event.preventDefault();\n inputRef.current?.focus();\n },\n style: { width },\n align: \"end\",\n sideOffset: 5,\n className: \"oui-border oui-border-line-6\",\n }}\n />\n </div>\n );\n\n const message = (\n <Flex mt={1} gapX={1} px={1} justify=\"between\" itemAlign=\"center\">\n <Flex gapX={1} itemAlign=\"center\">\n <Box\n width={4}\n height={4}\n r=\"full\"\n className={cn(\n status === \"error\" && \"oui-bg-danger-light\",\n status === \"warning\" && \"oui-bg-warning-light\",\n )}\n ></Box>\n <Text\n size=\"2xs\"\n className={cn(\n status === \"error\" && \"oui-text-danger-light\",\n status === \"warning\" && \"oui-text-warning-light\",\n )}\n >\n {hintMessage}\n </Text>\n </Flex>\n {hintSuffix && (\n <Box className=\"oui-flex oui-items-center oui-gap-1\">{hintSuffix}</Box>\n )}\n </Flex>\n );\n\n const _placeholder = placeholder ?? (loading ? \"\" : \"0\");\n\n return (\n <>\n <Input\n ref={inputRef}\n autoComplete=\"off\"\n placeholder={_placeholder}\n prefix={prefix}\n suffix={suffix}\n value={value}\n onValueChange={(value) => {\n onValueChange?.(value);\n }}\n formatters={\n formatters || [\n inputFormatter.numberFormatter,\n inputFormatter.dpFormatter(token?.precision ?? 2),\n inputFormatter.currencyFormatter,\n ]\n }\n {...rest}\n classNames={{\n ...classNames,\n root: cn(\n \"oui-relative oui-h-[54px] oui-px-3\",\n \"oui-rounded-lg oui-border oui-border-line\",\n status === \"error\" &&\n \"oui-outline-danger-light focus-within:oui-outline-danger-light\",\n status === \"warning\" &&\n \"oui-outline-warning-light focus-within:oui-outline-warning-light\",\n props.readOnly\n ? \"oui-border-none oui-bg-base-6 focus-within:oui-outline-0\"\n : \"oui-bg-base-5\",\n classNames?.root,\n ),\n input: cn(\"oui-absolute oui-bottom-0\", classNames?.input),\n }}\n />\n {hintMessage && message}\n </>\n );\n};\n","import { FC, useEffect, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n AlertDialog,\n Box,\n cn,\n EditIcon,\n Flex,\n Input,\n inputFormatter,\n Text,\n} from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\n\ninterface SlippageProps {\n value?: number;\n onValueChange?: (value: number) => void;\n max?: number;\n min?: number;\n}\n\nconst options = [0.5, 1, 2];\n\nexport const Slippage: FC<SlippageProps> = (props) => {\n const { min = 0.2, max = 10 } = props;\n const [value, setValue] = useState<number>();\n const [customValue, setCustomValue] = useState(\"\");\n const [open, setOpen] = useState(false);\n const { t } = useTranslation();\n\n useEffect(() => {\n if (props.value && !options.includes(props.value!)) {\n setCustomValue(props.value!.toString());\n } else {\n setValue(props.value);\n }\n }, [props.value, open]);\n\n const showSlippage = () => {\n setOpen(true);\n };\n\n const hideSlippage = () => {\n setOpen(false);\n };\n\n const onClick = (val: number) => {\n setValue(val);\n setCustomValue(\"\");\n };\n\n const onValueChange = (val: string) => {\n if (!val || Number(val) === 0) {\n setCustomValue(val);\n return;\n }\n\n const d = new Decimal(val);\n setValue(undefined);\n if (d.lt(min)) {\n setCustomValue(min.toString());\n } else if (d.gt(max)) {\n setCustomValue(max.toString());\n } else {\n setCustomValue(val);\n }\n };\n\n const getValue = () =>\n customValue ? new Decimal(customValue)?.toNumber() : value;\n\n const onConfirm = () => {\n const val = getValue();\n if (!val) return Promise.resolve(true);\n props.onValueChange?.(val);\n hideSlippage();\n // if custom value in options, then clear custom value\n if (options.includes(val)) {\n setCustomValue(\"\");\n }\n return Promise.resolve(true);\n };\n\n const disabled = !getValue();\n\n const content = (\n <div className=\"oui-text-2xs\">\n <Flex gapX={2}>\n {options.map((item) => {\n const isActive = value === item;\n return (\n <SlippageItem\n key={item}\n value={item}\n isActive={isActive}\n onClick={() => {\n onClick(item);\n }}\n />\n );\n })}\n\n <Input\n suffix=\"%\"\n formatters={[\n inputFormatter.numberFormatter,\n inputFormatter.dpFormatter(2),\n ]}\n value={customValue}\n onValueChange={onValueChange}\n classNames={{\n root: cn(\n \"oui-rounded-md oui-bg-base-6\",\n \"oui-h-[40px] oui-w-[74px]\",\n ),\n input: \"oui-text-base-contrast\",\n additional: \"oui-pl-1\",\n }}\n />\n </Flex>\n\n <Box mt={5}>\n <Text intensity={54}>\n {t(\"transfer.slippage.slippageTolerance.description\")}\n </Text>\n </Box>\n </div>\n );\n\n return (\n <>\n <AlertDialog\n open={open}\n onOpenChange={setOpen}\n title={t(\"transfer.slippage.slippageTolerance\")}\n okLabel={t(\"common.confirm\")}\n message={content}\n onOk={onConfirm}\n actions={{ primary: { disabled } }}\n />\n <Flex\n width=\"100%\"\n justify=\"between\"\n className=\"oui-cursor-pointer oui-select-none\"\n onClick={showSlippage}\n >\n <Text intensity={36} size=\"2xs\">\n {t(\"transfer.slippage\")}\n </Text>\n <Flex gapX={1}>\n <Text size=\"2xs\" color=\"primaryLight\">\n {props.value}%\n </Text>\n <EditIcon className=\"oui-size-3 oui-text-primary-light\" />\n </Flex>\n </Flex>\n </>\n );\n};\n\ntype SlippageItemProps = {\n value: number;\n isActive: boolean;\n onClick: () => void;\n};\n\nconst SlippageItem: FC<SlippageItemProps> = ({ value, isActive, onClick }) => {\n return (\n <Flex\n intensity={600}\n justify=\"center\"\n itemAlign=\"center\"\n r=\"md\"\n width={74}\n height={40}\n className={cn(\n \"oui-cursor-pointer oui-select-none\",\n isActive\n ? \"oui-bg-primary-light oui-text-primary-contrast/80\"\n : \"oui-text-base-contrast-80\",\n )}\n onClick={onClick}\n >\n <Text size=\"sm\">{value}%</Text>\n </Flex>\n );\n};\n","import { FC, useMemo, ReactNode } from \"react\";\nimport { useTranslation, Trans } from \"@orderly.network/i18n\";\nimport { NetworkId } from \"@orderly.network/types\";\nimport { Box, Text } from \"@orderly.network/ui\";\nimport { modal } from \"@orderly.network/ui\";\nimport { ChainSelectorDialogId } from \"@orderly.network/ui-chain-selector\";\n\ntype NoticeProps = {\n message?: string | ReactNode;\n needSwap?: boolean;\n needCrossSwap?: boolean;\n wrongNetwork?: boolean;\n networkId?: NetworkId;\n};\n\nexport const Notice: FC<NoticeProps> = (props) => {\n const { message, needSwap, needCrossSwap, wrongNetwork, networkId } = props;\n const { t } = useTranslation();\n\n const showChainSelect = () => {\n modal.show(ChainSelectorDialogId, { networkId });\n };\n\n const content = useMemo(() => {\n if (wrongNetwork) {\n return t(\"connector.wrongNetwork.tooltip\");\n }\n\n if (message) {\n return message;\n }\n\n if (needCrossSwap) {\n return (\n <Text>\n {/* @ts-ignore */}\n <Trans\n i18nKey=\"transfer.swapDeposit.crossSwap.notice\"\n components={[\n <Text\n key=\"0\"\n className=\"oui-cursor-pointer\"\n color=\"primaryLight\"\n onClick={showChainSelect}\n />,\n ]}\n />\n </Text>\n );\n }\n\n if (needSwap) {\n return t(\"transfer.swapDeposit.swap.notice\");\n }\n }, [message, needSwap, needCrossSwap, wrongNetwork, t]);\n\n if (content) {\n return (\n <Box\n mb={3}\n className=\"oui-text-center oui-text-xs oui-text-warning-darken\"\n >\n {content}\n </Box>\n );\n }\n\n return null;\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Box, Divider, Flex, modal, Text } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { UseSwapFee } from \"../hooks/useSwapFee\";\n\ntype SwapFeeProps = UseSwapFee;\n\nexport const SwapFee: FC<SwapFeeProps> = (props) => {\n const { feeQtys, feeAmount, feeDetails, nativeSymbol } = props;\n const { t } = useTranslation();\n\n const onShowFee = () => {\n const content = (\n <Box className=\"oui-text-2xs\">\n {feeDetails?.map((item, index) => {\n const isEnd = index === feeDetails?.length - 1;\n return (\n <Box key={index}>\n <Flex gapX={1}>\n <Text intensity={54}>{item.title}:</Text>\n {/* TODO: format price in data */}\n <Text\n intensity={80}\n // dp={item.dp}\n // rm={Decimal.ROUND_UP}\n // padding={false}\n >\n {item.value}\n </Text>\n <Text intensity={54}>{item.symbol}</Text>\n </Flex>\n\n <Box mt={2}>\n <Text intensity={36}>{item.description}</Text>\n </Box>\n\n {!isEnd && (\n <Box my={3}>\n <Divider intensity={8} />\n </Box>\n )}\n </Box>\n );\n })}\n </Box>\n );\n\n modal.alert({\n title: t(\"common.fee\"),\n message: content,\n });\n };\n\n const renderFeeQty = () => {\n const len = feeQtys?.length;\n if (!len) return;\n\n const list = feeQtys.map((item, index) => {\n return (\n <Text intensity={54} key={index}>\n <Text.numeral dp={item.dp} padding={false} rm={Decimal.ROUND_UP}>\n {item.value}\n </Text.numeral>\n {` ${item.symbol || nativeSymbol}`}\n </Text>\n );\n });\n\n if (len === 1) {\n return <span>({list})</span>;\n }\n\n if (len === 2) {\n return (\n <span>\n ({list[0]} + {list[1]})\n </span>\n );\n }\n };\n\n return (\n <Text\n size=\"xs\"\n intensity={36}\n className=\"oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12\"\n onClick={onShowFee}\n >\n {`${t(\"common.fee\")} ≈ `}\n <Text size=\"xs\" intensity={80}>\n $\n <Text.numeral dp={2} padding={false} rm={Decimal.ROUND_UP}>\n {feeAmount}\n </Text.numeral>\n {` `}\n </Text>\n\n {renderFeeQty()}\n </Text>\n );\n};\n","import { FC } from \"react\";\nimport { cn, Flex, Text } from \"@orderly.network/ui\";\n\ninterface SwapCoinProps {\n className?: string;\n sourceSymbol?: string;\n targetSymbol?: string;\n indexPrice: number | string;\n precision?: number;\n}\n\nexport const SwapCoin: FC<SwapCoinProps> = (props) => {\n const { sourceSymbol, targetSymbol, indexPrice, precision = 6 } = props;\n return (\n <Flex\n itemAlign=\"center\"\n gap={1}\n className={cn(props.className, \"oui-text-2xs\")}\n >\n <Text size=\"2xs\" intensity={80}>\n 1\n </Text>\n <Text size=\"2xs\" intensity={36}>\n {sourceSymbol}\n </Text>\n =\n <Text.numeral size=\"2xs\" intensity={80} dp={precision} padding={false}>\n {indexPrice}\n </Text.numeral>\n <Text size=\"2xs\" intensity={36}>\n {targetSymbol}\n </Text>\n </Flex>\n );\n};\n","import { FC, SVGProps } from \"react\";\n\nexport const EditIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M8.498.977a.5.5 0 0 0-.36.14l-1.5 1.501-4.503 4.503-.5.5a.5.5 0 0 0-.125.266l-.5 2.501c-.07.35.228.648.578.579l2.501-.5a.5.5 0 0 0 .266-.126l.5-.5 4.503-4.503 1.5-1.5a.5.5 0 0 0 .141-.36c0-.818-.208-1.403-.64-1.845-.437-.445-1.02-.656-1.861-.656m.197 1.01c.451.026.744.13.944.334.205.21.335.5.363.942-.274.273-.675.668-1.004.997L7.716 2.978c.33-.329.705-.718.979-.992m-1.698 1.71L8.28 4.979 4.496 8.762 3.214 7.48zM2.495 8.199l1.282 1.282-.047.047c-.33.066-.997.206-1.61.329l.328-1.61z\" />\n </svg>\n);\n\nexport const ArrowRightIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"24\"\n height=\"25\"\n viewBox=\"0 0 24 25\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M6.012 12.493a1 1 0 0 1 .999-1h7.555L11.6 8.498l1.405-1.405 4.714 4.683c.196.195.293.457.293.719 0 .26-.098.522-.293.717l-4.714 4.683L11.6 16.49l2.966-2.997H7.011a1 1 0 0 1-.999-1\" />\n </svg>\n);\n\nexport const GasFeeIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M4 2.67v10.663h4.667V2.667H4zm6-.003v2.666h1c.218 0 .53.06.806.26.31.223.527.59.527 1.074V12h1V6.667c0-.045 0-.154-.027-.277a.5.5 0 0 0-.11-.252l-1.668-1.667a.667.667 0 0 1 .943-.942l1.667 1.666c.294.294.417.658.472.915.057.264.057.486.057.555V12c0 .484-.217.85-.527 1.074-.277.2-.589.26-.807.26h-1c-.484 0-.85-.217-1.074-.528a1.4 1.4 0 0 1-.26-.806V6.667H10v6.666h.667a.667.667 0 0 1 0 1.334H2a.667.667 0 0 1 0-1.334h.667V2.667c0-.218.06-.53.259-.807.223-.31.59-.527 1.074-.527h4.667c.217 0 .53.06.806.26.31.223.527.59.527 1.074m-4.667 2a.667.667 0 0 0 0 1.333h2a.667.667 0 0 0 0-1.333z\"\n />\n </svg>\n);\n\nexport const TopRightArrowIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"13\"\n height=\"12\"\n viewBox=\"0 0 13 12\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M8.996 10.496a2 2 0 0 0 2-2v-5a2 2 0 0 0-2-2h-5a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2zm-4-2.5a.5.5 0 0 1-.36-.14.515.515 0 0 1 0-.72l2-2-1.14-1.14h3v3l-1.14-1.14-2 2a.5.5 0 0 1-.36.14\" />\n </svg>\n);\n\nexport const WoofiIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <rect width=\"24\" height=\"24\" rx=\"12\" fill=\"#07080A\" />\n <path\n d=\"M5.077 7.385h2.269l1.604 5.28c.106.348.196.73.196.73s.138-.413.28-.742l.885-2.052a1.8 1.8 0 0 1 .66-.782 1.81 1.81 0 0 1 1.974 0c.293.191.523.463.662.782l2.143 4.91v1.095h-1.402c-.235 0-.464-.07-.66-.2a1.17 1.17 0 0 1-.434-.53l-1.303-3.16-1.243 3.152a1.19 1.19 0 0 1-1.105.747h-.848c-.235 0-.465-.075-.654-.214a1.1 1.1 0 0 1-.4-.556z\"\n fill=\"#FEFEFE\"\n />\n <path d=\"m18.146 10.846 1.066-3.461h-2.396l-1.066 3.461z\" fill=\"url(#a)\" />\n <path\n d=\"m15.371 12-1.208 3.865v.009c-.073.216-.194.529-.514.51a.33.33 0 0 1-.207-.058c.211.186.482.29.763.29h1.428a1.065 1.065 0 0 0 .928-.75L17.769 12z\"\n fill=\"url(#b)\"\n />\n <defs>\n <linearGradient\n id=\"a\"\n x1=\"14.618\"\n y1=\"16.592\"\n x2=\"17.597\"\n y2=\"7.455\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#59B0FE\" />\n <stop offset=\"1\" stopColor=\"#26FEFE\" />\n </linearGradient>\n <linearGradient\n id=\"b\"\n x1=\"16.192\"\n y1=\"16.587\"\n x2=\"18.206\"\n y2=\"7.458\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#59B0FE\" />\n <stop offset=\"1\" stopColor=\"#26FEFE\" />\n </linearGradient>\n </defs>\n </svg>\n);\n","import React from \"react\";\nimport { Flex, Text, TokenIcon } from \"@orderly.network/ui\";\nimport { ArrowRightIcon } from \"../swap/icons\";\n\nexport const SwapIndicator: React.FC<{\n sourceToken?: string;\n targetToken?: string;\n className?: string;\n}> = (props) => {\n const { sourceToken, targetToken, className } = props;\n\n if (sourceToken === targetToken) {\n return null;\n }\n\n return (\n <Flex\n width=\"100%\"\n itemAlign=\"center\"\n justify=\"center\"\n className={className}\n >\n <Flex itemAlign=\"center\" justify=\"center\" gap={1}>\n <Flex itemAlign=\"center\" justify=\"center\" gap={1}>\n <TokenIcon className=\"oui-size-[18px]\" name={sourceToken} />\n <Text weight=\"semibold\" intensity={80} size=\"sm\">\n {sourceToken}\n </Text>\n </Flex>\n <ArrowRightIcon className=\"oui-size-4\" />\n <Flex itemAlign=\"center\" justify=\"center\" gap={1}>\n <TokenIcon className=\"oui-size-[18px]\" name={targetToken} />\n <Text weight=\"semibold\" intensity={80} size=\"sm\">\n {targetToken}\n </Text>\n </Flex>\n </Flex>\n </Flex>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { useAccount, useWalletConnector } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { ABSTRACT_CHAIN_ID_MAP } from \"@orderly.network/types\";\nimport { Flex, Text, WalletIcon } from \"@orderly.network/ui\";\n\nexport const Web3Wallet: FC = () => {\n const { t } = useTranslation();\n const { wallet, connectedChain } = useWalletConnector();\n const { state: accountState, account } = useAccount();\n\n const address = useMemo(() => {\n let address = accountState.address;\n if (\n connectedChain?.id &&\n ABSTRACT_CHAIN_ID_MAP.has(parseInt(connectedChain?.id as string))\n ) {\n address = account.getAdditionalInfo()?.AGWAddress;\n }\n\n return address;\n }, [wallet, accountState, account, connectedChain]);\n\n return (\n <Flex justify=\"between\">\n <Text size=\"sm\" intensity={98}>\n {t(\"transfer.web3Wallet.your\")}\n </Text>\n\n <Flex gapX={1}>\n <WalletIcon size={\"xs\"} name={wallet?.label ?? \"\"} />\n <Text.formatted size=\"sm\" intensity={54} rule=\"address\">\n {address}\n </Text.formatted>\n </Flex>\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { Trans, useTranslation } from \"@orderly.network/i18n\";\nimport { Box, cn, Flex, Text } from \"@orderly.network/ui\";\nimport { TooltipIcon } from \"../icons/tooltipIcon\";\n\nexport interface BaseReminderProps {\n /** APY value in percentage (e.g., 8.5 for 8.5%) */\n apy: number | null;\n /** Whether the APY data is currently loading */\n loading: boolean;\n /** External URL to the asset issuer's website */\n externalUrl: string | null;\n /** Additional CSS class name */\n className?: string;\n /** Theme configuration */\n // theme: ReminderTheme;\n /** Test ID for the component */\n testId?: string;\n}\n\n/**\n * Base Yield Reminder Component\n * Generic reminder component that renders based on provided theme configuration\n * Used by YUSD and deUSD specific components\n */\nexport const BaseReminder: FC<BaseReminderProps> = ({\n apy,\n loading,\n externalUrl,\n className,\n testId,\n}) => {\n const { t } = useTranslation();\n const formattedAPY = apy !== null ? apy.toFixed(1) : null;\n\n return (\n <Box\n className={cn(\n \"oui-border-[0.5px] oui-border-primary oui-bg-primary/[0.12]\",\n className,\n )}\n px={3}\n py={2}\n r=\"lg\"\n width=\"100%\"\n >\n <Flex direction=\"column\" itemAlign=\"start\">\n {formattedAPY !== null ? (\n <Text size=\"sm\" intensity={98}>\n <Trans\n i18nKey=\"transfer.deposit.yieldReminder.earnAPY\"\n values={{ apy: formattedAPY }}\n components={[<span className=\"oui-text-success\" key=\"0\" />]}\n />\n </Text>\n ) : (\n <Text size=\"sm\" intensity={98}>\n {t(\"transfer.deposit.yieldReminder.earnRewards\")}\n </Text>\n )}\n <Text size=\"2xs\" intensity={54} className=\"oui-font-normal\">\n {t(\"transfer.deposit.yieldReminder.distribution\")}\n </Text>\n </Flex>\n\n <Flex justify=\"between\" itemAlign=\"center\" mt={3}>\n {/* Disclaimer - only show when APY is available */}\n {formattedAPY !== null && (\n <Flex gap={1}>\n <TooltipIcon />\n <Text size=\"2xs\" intensity={36} className=\"oui-font-normal\">\n {t(\"transfer.deposit.yieldReminder.disclaimer\")}\n </Text>\n </Flex>\n )}\n\n {externalUrl && (\n <a\n href={externalUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"oui-inline-flex oui-items-center oui-gap-[2px] oui-font-normal oui-no-underline oui-transition-opacity hover:oui-opacity-80\"\n >\n {t(\"common.details\")}\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M3.507 6.996c0-.322.26-.583.583-.583h4.407l-1.73-1.748.82-.82 2.749 2.732a.6.6 0 0 1 .17.42.6.6 0 0 1-.17.418l-2.75 2.731-.82-.82 1.73-1.747H4.09a.583.583 0 0 1-.583-.583\"\n fill=\"#fff\"\n fillOpacity=\".54\"\n />\n </svg>\n </a>\n )}\n </Flex>\n </Box>\n );\n};\n","import { FC } from \"react\";\nimport { BaseReminder } from \"./baseReminder\";\n\nexport interface DeUsdReminderProps {\n /** APY value in percentage (e.g., 8.5 for 8.5%) */\n apy: number | null;\n /** Whether the APY data is currently loading */\n loading: boolean;\n /** External URL to the asset issuer's website */\n externalUrl: string | null;\n /** Additional CSS class name */\n className?: string;\n}\n\n/**\n * DeUSD Yield Reminder Component\n * Light theme with dark text and button style\n * Strictly follows Figma design: https://www.figma.com/design/CdydOeLyOKPJUNw96Wnwzd/WOOFi---Portfolio?node-id=8417-14708&m=dev\n */\nexport const DeUsdReminder: FC<DeUsdReminderProps> = (props) => {\n return <BaseReminder {...props} testId=\"deusd-yield-reminder\" />;\n};\n","import { FC } from \"react\";\nimport { BaseReminder } from \"./baseReminder\";\n\nexport interface YusdReminderProps {\n /** APY value in percentage (e.g., 8.5 for 8.5%) */\n apy: number | null;\n /** Whether the APY data is currently loading */\n loading: boolean;\n /** External URL to the asset issuer's website */\n externalUrl: string | null;\n /** Additional CSS class name */\n className?: string;\n}\n\n/**\n * YUSD Yield Reminder Component\n * Dark theme with white text and coin icons\n * Strictly follows Figma design\n */\nexport const YusdReminder: FC<YusdReminderProps> = (props) => {\n return <BaseReminder {...props} testId=\"yusd-yield-reminder\" />;\n};\n","import { FC } from \"react\";\nimport { isYieldBearingAsset } from \"../../constants/yieldBearingAssets\";\nimport { useYieldAPY } from \"../depositForm/hooks/useYieldAPY\";\nimport { DeUsdReminder } from \"./deUsdReminder\";\nimport { YusdReminder } from \"./yusdReminder\";\n\nexport interface YieldBearingReminderProps {\n /** Token symbol to check and display APY for */\n symbol?: string;\n /** Additional CSS class name */\n className?: string;\n}\n\n/**\n * YieldBearingReminder Component\n * Router component that renders the appropriate reminder based on token type\n * - YUSD: Dark blue theme with white text and coin icons\n * - deUSD: Light pink/purple theme with dark text and deUSD logo icons\n */\nexport const YieldBearingReminder: FC<YieldBearingReminderProps> = ({\n symbol,\n className,\n}) => {\n const { apy, loading, externalUrl } = useYieldAPY(symbol);\n\n // Don't render if not a yield-bearing asset\n if (!isYieldBearingAsset(symbol)) {\n return null;\n }\n\n // Determine which reminder to show based on symbol\n const isDeUsd = symbol?.toLowerCase() === \"deusd\";\n\n if (isDeUsd) {\n return (\n <DeUsdReminder\n apy={apy}\n loading={loading}\n externalUrl={externalUrl}\n className={className}\n />\n );\n }\n\n return (\n <YusdReminder\n apy={apy}\n loading={loading}\n externalUrl={externalUrl}\n className={className}\n />\n );\n};\n","import { useEffect, useState } from \"react\";\nimport { API } from \"@orderly.network/types\";\n\nexport function useNeedSwapAndCross(options: {\n srcToken?: API.TokenInfo;\n dstToken?: API.TokenInfo;\n srcChainId?: number;\n dstChainId?: number;\n}) {\n const { srcToken, dstToken, srcChainId, dstChainId } = options;\n const [needSwap, setNeedSwap] = useState(false);\n const [needCrossSwap, setNeedCrossSwap] = useState(false);\n\n useEffect(() => {\n if (!srcChainId || !dstChainId || !srcToken || !dstToken) return;\n const isCrossChain = srcChainId !== dstChainId;\n\n if (\n (srcToken?.symbol === \"USDC\" && !isCrossChain) ||\n // if srcToken is collateral and srcToken.symbol is the same as dstToken.symbol, it will not need swap\n (srcToken.is_collateral && srcToken.symbol === dstToken?.symbol)\n ) {\n setNeedSwap(false);\n setNeedCrossSwap(false);\n return;\n }\n\n setNeedSwap(srcToken?.symbol !== \"USDC\");\n\n if (isCrossChain) {\n setNeedCrossSwap(true);\n setNeedSwap(true);\n } else {\n setNeedCrossSwap(false);\n }\n }, [srcToken, dstToken, srcChainId, dstChainId]);\n\n return { needSwap, needCrossSwap };\n}\n","export const woofiDexCrossSwapChainRouterAbi = [\n {\n inputs: [],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint8\",\n name: \"version\",\n type: \"uint8\",\n },\n ],\n name: \"Initialized\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"previousOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"Paused\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"Unpaused\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"nonce\",\n type: \"uint256\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"bridgedToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"bridgedAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"toToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"minToAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"realToToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"realToAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"orderlyNativeFees\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"accountId\",\n type: \"bytes32\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"brokerHash\",\n type: \"bytes32\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"tokenHash\",\n type: \"bytes32\",\n },\n {\n indexed: false,\n internalType: \"uint128\",\n name: \"tokenAmount\",\n type: \"uint128\",\n },\n ],\n name: \"WOOFiDexCrossSwapOnDstChain\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"dstChainId\",\n type: \"uint16\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"nonce\",\n type: \"uint256\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"fromToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"fromAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"bridgeToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"minBridgeAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"bridgeAmount\",\n type: \"uint256\",\n },\n ],\n name: \"WOOFiDexCrossSwapOnSrcChain\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"MAX_BRIDGE_SLIPPAGE\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"NATIVE_PLACEHOLDER\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"token\",\n type: \"address\",\n },\n ],\n name: \"addDirectBridgeToken\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"allDirectBridgeTokens\",\n outputs: [\n {\n internalType: \"address[]\",\n name: \"\",\n type: \"address[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"allDirectBridgeTokensLength\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"bridgeSlippage\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address payable\",\n name: \"to\",\n type: \"address\",\n },\n {\n components: [\n {\n internalType: \"address\",\n name: \"fromToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"fromAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"address\",\n name: \"bridgeToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"minBridgeAmount\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct IWOOFiDexCrossChainRouter.SrcInfos\",\n name: \"srcInfos\",\n type: \"tuple\",\n },\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"bridgedToken\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"toToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"minToAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"orderlyNativeFees\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct IWOOFiDexCrossChainRouter.DstInfos\",\n name: \"dstInfos\",\n type: \"tuple\",\n },\n {\n components: [\n {\n internalType: \"bytes32\",\n name: \"accountId\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"brokerHash\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"tokenHash\",\n type: \"bytes32\",\n },\n ],\n internalType: \"struct IWOOFiDexCrossChainRouter.DstVaultDeposit\",\n name: \"dstVaultDeposit\",\n type: \"tuple\",\n },\n ],\n name: \"crossSwap\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"dstGasForNoSwapCall\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"dstGasForSwapCall\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"stuckToken\",\n type: \"address\",\n },\n ],\n name: \"inCaseTokenGotStuck\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_weth\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_nonceCounter\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_wooRouter\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_sgRouter\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"_sgChainIdLocal\",\n type: \"uint16\",\n },\n ],\n name: \"initialize\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"nonceCounter\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"orderlyFeeToggle\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"pause\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"paused\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"bridgedToken\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"toToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"minToAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"orderlyNativeFees\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct IWOOFiDexCrossChainRouter.DstInfos\",\n name: \"dstInfos\",\n type: \"tuple\",\n },\n {\n components: [\n {\n internalType: \"bytes32\",\n name: \"accountId\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"brokerHash\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"tokenHash\",\n type: \"bytes32\",\n },\n ],\n internalType: \"struct IWOOFiDexCrossChainRouter.DstVaultDeposit\",\n name: \"dstVaultDeposit\",\n type: \"tuple\",\n },\n ],\n name: \"quoteLayerZeroFee\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"nativeAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"zroAmount\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"token\",\n type: \"address\",\n },\n ],\n name: \"removeDirectBridgeToken\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_bridgeSlippage\",\n type: \"uint256\",\n },\n ],\n name: \"setBridgeSlippage\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_dstGasForNoSwapCall\",\n type: \"uint256\",\n },\n ],\n name: \"setDstGasForNoSwapCall\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_dstGasForSwapCall\",\n type: \"uint256\",\n },\n ],\n name: \"setDstGasForSwapCall\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_nonceCounter\",\n type: \"address\",\n },\n ],\n name: \"setNonceCounter\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bool\",\n name: \"_orderlyFeeToggle\",\n type: \"bool\",\n },\n ],\n name: \"setOrderlyFeeToggle\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_sgChainIdLocal\",\n type: \"uint16\",\n },\n ],\n name: \"setSgChainIdLocal\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"token\",\n type: \"address\",\n },\n ],\n name: \"setSgETH\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"token\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"poolId\",\n type: \"uint256\",\n },\n ],\n name: \"setSgPoolId\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_sgRouter\",\n type: \"address\",\n },\n ],\n name: \"setSgRouter\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"woofiDexCrossChainRouter\",\n type: \"address\",\n },\n ],\n name: \"setWOOFiDexCrossChainRouter\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"token\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"woofiDexVault\",\n type: \"address\",\n },\n ],\n name: \"setWOOFiDexVault\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_wooRouter\",\n type: \"address\",\n },\n ],\n name: \"setWooRouter\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"sgChainIdLocal\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"sgETHs\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"sgPoolIds\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n {\n internalType: \"address\",\n name: \"bridgedToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"bridgedAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n name: \"sgReceive\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"sgRouter\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"unpause\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"weth\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"wooRouter\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"woofiDexCrossChainRouters\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"woofiDexVaults\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n stateMutability: \"payable\",\n type: \"receive\",\n },\n];\n\nexport const woofiDexSwapDepositorAbi = [\n { inputs: [], stateMutability: \"nonpayable\", type: \"constructor\" },\n {\n anonymous: false,\n inputs: [\n { indexed: false, internalType: \"uint8\", name: \"version\", type: \"uint8\" },\n ],\n name: \"Initialized\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"previousOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"Paused\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"Unpaused\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n {\n indexed: false,\n internalType: \"address\",\n name: \"fromToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"fromAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"toToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"minToAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"toAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"orderlyNativeFees\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"accountId\",\n type: \"bytes32\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"brokerHash\",\n type: \"bytes32\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"tokenHash\",\n type: \"bytes32\",\n },\n {\n indexed: false,\n internalType: \"uint128\",\n name: \"tokenAmount\",\n type: \"uint128\",\n },\n ],\n name: \"WOOFiDexSwap\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"NATIVE_PLACEHOLDER\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"stuckToken\", type: \"address\" }],\n name: \"inCaseTokenGotStuck\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"_wooRouter\", type: \"address\" }],\n name: \"initialize\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"orderlyFeeToggle\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"pause\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"paused\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"bool\", name: \"_orderlyFeeToggle\", type: \"bool\" }],\n name: \"setOrderlyFeeToggle\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"token\", type: \"address\" },\n { internalType: \"address\", name: \"woofiDexVault\", type: \"address\" },\n ],\n name: \"setWOOFiDexVault\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"_wooRouter\", type: \"address\" }],\n name: \"setWooRouter\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"to\", type: \"address\" },\n {\n components: [\n { internalType: \"address\", name: \"fromToken\", type: \"address\" },\n { internalType: \"uint256\", name: \"fromAmount\", type: \"uint256\" },\n { internalType: \"address\", name: \"toToken\", type: \"address\" },\n { internalType: \"uint256\", name: \"minToAmount\", type: \"uint256\" },\n {\n internalType: \"uint256\",\n name: \"orderlyNativeFees\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct IWOOFiDexDepositor.Infos\",\n name: \"infos\",\n type: \"tuple\",\n },\n {\n components: [\n { internalType: \"bytes32\", name: \"accountId\", type: \"bytes32\" },\n { internalType: \"bytes32\", name: \"brokerHash\", type: \"bytes32\" },\n { internalType: \"bytes32\", name: \"tokenHash\", type: \"bytes32\" },\n ],\n internalType: \"struct IWOOFiDexDepositor.VaultDeposit\",\n name: \"vaultDeposit\",\n type: \"tuple\",\n },\n ],\n name: \"swap\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"newOwner\", type: \"address\" }],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"unpause\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"wooRouter\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n name: \"woofiDexVaults\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n { stateMutability: \"payable\", type: \"receive\" },\n];\n\nexport const nativeTokenAddress = \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\";\n\nexport const isNativeTokenChecker = (address: string) =>\n address === nativeTokenAddress;\n\nexport const swapSupportApiUrl = \"https://fi-api.woo.org\";\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { Environment, createClient } from \"@layerzerolabs/scan-client\";\nimport { pick } from \"ramda\";\nimport { utils } from \"@orderly.network/core\";\nimport {\n useAccountInstance,\n useBoolean,\n useConfig,\n useEventEmitter,\n} from \"@orderly.network/hooks\";\nimport { WS_WalletStatusEnum } from \"@orderly.network/types\";\nimport {\n isNativeTokenChecker,\n woofiDexCrossSwapChainRouterAbi,\n} from \"../constants\";\n\nexport enum MessageStatus {\n INITIALIZING = \"WAITTING\",\n INFLIGHT = \"INFLIGHT\",\n CONFIRMING = \"CONFIRMING\",\n DELIVERED = \"DELIVERED\",\n FAILED = \"FAILED\",\n}\n\nexport const useCrossSwap = (): any => {\n const [loading, { setTrue: start, setFalse: stop }] = useBoolean(false);\n\n const [layerStatus, setLayerStatus] = useState<MessageStatus>(\n MessageStatus.INITIALIZING,\n );\n\n const ee = useEventEmitter();\n\n const [bridgeMessage, setBridgeMessage] = useState<any | undefined>();\n\n const [status, setStatus] = useState<WS_WalletStatusEnum>(\n WS_WalletStatusEnum.NO,\n );\n const txHashFromBridge = useRef<string | undefined>();\n\n const checkLayerStatusListener = useRef<ReturnType<typeof setTimeout>>();\n\n const account = useAccountInstance();\n\n const config = useConfig();\n const brokerId = config.get(\"brokerId\");\n const networkId = config.get(\"networkId\");\n\n const client = useRef(createClient(networkId as Environment)).current;\n const timer = useRef<ReturnType<typeof setTimeout> | undefined>();\n\n useEffect(() => {\n const handler = (data: any) => {\n const { side, transStatus, trxId } = data;\n\n if (side === \"DEPOSIT\" && trxId === txHashFromBridge.current) {\n setStatus(transStatus);\n }\n };\n ee.on(\"wallet:changed\", handler);\n\n return () => {\n ee.off(\"wallet:changed\", handler);\n };\n }, [txHashFromBridge.current]);\n\n const checkLayerStatus = useCallback((txHash: string) => {\n if (checkLayerStatusListener.current) {\n clearTimeout(checkLayerStatusListener.current);\n }\n\n checkLayerStatusListener.current = setTimeout(async () => {\n try {\n const { messages } = await client.getMessagesBySrcTxHash(txHash);\n\n if (messages.length > 0) {\n const { status } = messages[0];\n\n setLayerStatus(status as MessageStatus);\n\n if (status === MessageStatus.DELIVERED) {\n setBridgeMessage(messages[0]);\n txHashFromBridge.current = messages[0].dstTxHash;\n } else if (status === MessageStatus.FAILED) {\n setBridgeMessage(messages[0]);\n } else {\n checkLayerStatus(txHash);\n }\n } else {\n checkLayerStatus(txHash);\n }\n } catch (e) {\n // setLayerStatus(MessageStatus.FAILED);\n checkLayerStatus(txHash);\n }\n }, 1000);\n }, []);\n\n // swap => src tx hash, cross swap => dst tx hash\n // const checkDeposit\n\n useEffect(() => {\n return () => {\n if (timer.current) {\n clearTimeout(timer.current);\n }\n };\n }, []);\n\n const dstValutDeposit = useCallback(() => {\n return {\n accountId: account.accountIdHashStr,\n brokerHash: utils.parseBrokerHash(brokerId),\n tokenHash: utils.parseTokenHash(\"USDC\"),\n };\n }, [account, brokerId]);\n\n const swap = async (inputs: {\n address: string;\n crossChainRouteAddress: string;\n src: {\n fromToken: string;\n fromAmount: bigint;\n bridgeToken: string;\n minBridgeAmount: bigint;\n };\n dst: {\n chainId: string;\n bridgedToken: string;\n toToken: string;\n minToAmount: bigint;\n airdropNativeAmount: bigint;\n };\n }) => {\n if (!account.walletAdapter) {\n throw new Error(\"walletAdapter is undefined\");\n }\n\n if (!account.address) {\n throw new Error(\"account.address is undefined\");\n }\n\n if (!inputs.crossChainRouteAddress) {\n throw new Error(\"crossChainRouteAddress is undefined\");\n }\n\n const { address, src, dst, crossChainRouteAddress } = inputs;\n if (loading) return;\n start();\n\n try {\n const quotoLZFee = await account.walletAdapter.call(\n crossChainRouteAddress,\n \"quoteLayerZeroFee\",\n [account.address, dst, dstValutDeposit()],\n {\n abi: woofiDexCrossSwapChainRouterAbi,\n },\n );\n\n const result = await account.walletAdapter.sendTransaction(\n crossChainRouteAddress,\n \"crossSwap\",\n {\n from: account.address!,\n to: crossChainRouteAddress,\n data: [account.address, src, dst, dstValutDeposit()],\n value: isNativeTokenChecker(inputs.src.fromToken)\n ? BigInt(inputs.src.fromAmount) + quotoLZFee[0]\n : quotoLZFee[0],\n },\n {\n abi: woofiDexCrossSwapChainRouterAbi,\n },\n );\n\n stop();\n\n checkLayerStatus(result.hash);\n\n ee.emit(\"deposit:requested\");\n\n // @ts-ignore\n return pick([\"from\", \"to\", \"hash\", \"value\"], result);\n } catch (e: any) {\n console.error(\"crossSwap error\", e);\n stop();\n throw new Error(e.errorCode);\n }\n };\n\n return {\n swap,\n loading,\n bridgeStatus: layerStatus,\n status,\n message: bridgeMessage,\n };\n};\n","import { FC, useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n Box,\n Button,\n CheckedCircleFillIcon,\n CloseCircleFillIcon,\n cn,\n Divider,\n Flex,\n Spinner,\n Text,\n} from \"@orderly.network/ui\";\nimport { TopRightArrowIcon } from \"../icons\";\nimport { SwapMode, SwapProcessStatus } from \"../types\";\n\ntype ProcessStatusProps = {\n status?: SwapProcessStatus;\n mode: SwapMode;\n statusUrl?: string;\n onComplete?: (isSuccss: boolean) => void;\n brokerName?: string;\n};\n\nenum SwapState {\n Pending = \"pending\",\n Failed = \"failed\",\n Success = \"success\",\n}\n\ntype TProcessItem = {\n title: string;\n description: string;\n state?: SwapState;\n};\n\nexport const ProcessStatus: FC<ProcessStatusProps> = (props) => {\n const { status, mode, statusUrl, brokerName } = props;\n const { t } = useTranslation();\n\n const processList = useMemo(() => {\n const bridgeStatus = getBridgeStatus(status!);\n const depositStatus = getDepositStatus(status!);\n const list: TProcessItem[] = [\n {\n title:\n bridgeStatus === SwapState.Pending\n ? t(\"transfer.swapDeposit.bridging\")\n : t(\"transfer.swapDeposit.bridge\"),\n description: t(\"transfer.swapDeposit.bridge.description\"),\n state: bridgeStatus,\n },\n {\n title:\n depositStatus === SwapState.Pending\n ? t(\"transfer.swapDeposit.depositing\")\n : t(\"transfer.swapDeposit.deposit\"),\n description: t(\"transfer.swapDeposit.deposit.description\", {\n brokerName,\n }),\n state: depositStatus,\n },\n ];\n\n if (mode === SwapMode.Single) {\n return list.slice(1, 2);\n }\n\n return list;\n }, [mode, brokerName, status, t]);\n\n const onOk = () => {\n props.onComplete?.(status === SwapProcessStatus.Done);\n };\n\n const isFailed =\n status === SwapProcessStatus.DepositFailed ||\n status === SwapProcessStatus.BridgeFialed;\n\n const disabled =\n status === SwapProcessStatus.Bridging ||\n status === SwapProcessStatus.Depositing;\n\n const showDashLine = processList.length > 1;\n\n return (\n <div className=\"oui-font-semibold\">\n <Box intensity={600} p={4} r=\"lg\">\n <Flex\n direction=\"column\"\n itemAlign=\"start\"\n gapY={4}\n className=\"oui-relative\"\n >\n {processList.map((item) => (\n <ProcessItem {...item} key={item.title} />\n ))}\n {showDashLine && (\n <div\n className={cn(\n \"oui-absolute oui-left-[10px] oui-top-[20px] oui-bottom-[38px]\",\n \"oui-w-[1px] oui-h-[34px]\",\n \"oui-border-r oui-border-dashed oui-border-r-line-16\",\n )}\n />\n )}\n </Flex>\n\n <Box my={3}>\n <Divider intensity={8} />\n </Box>\n\n <Flex\n gapX={1}\n justify=\"center\"\n itemAlign=\"center\"\n className={cn(\n statusUrl ? \"oui-text-primary-light\" : \"oui-text-base-contrast-20\",\n statusUrl ? \"oui-cursor-pointer\" : \"oui-cursor-not-allowed\",\n )}\n onClick={() => {\n statusUrl && window.open(statusUrl);\n }}\n >\n <Text size=\"2xs\">{t(\"transfer.swapDeposit.viewStatus\")}</Text>\n <TopRightArrowIcon />\n </Flex>\n </Box>\n\n <Flex\n direction=\"column\"\n justify=\"center\"\n itemAlign=\"center\"\n mt={8}\n gapY={3}\n >\n {isFailed && (\n <Text size=\"xs\" className=\"oui-text-danger-light\">\n {t(\"transfer.swapDeposit.depositFailed\")}\n </Text>\n )}\n\n <Button\n className=\"oui-w-full lg:oui-w-[184px]\"\n disabled={disabled}\n onClick={onOk}\n >\n {t(\"common.ok\")}\n </Button>\n </Flex>\n </div>\n );\n};\n\nconst ProcessItem: FC<TProcessItem> = ({ title, description, state }) => {\n return (\n <Flex itemAlign=\"start\" gapX={2} key={title}>\n <Flex width={20} height={20} justify=\"center\">\n <StatusIndicator state={state} />\n </Flex>\n <Flex direction=\"column\" itemAlign=\"start\">\n <Text\n size=\"sm\"\n className={cn(\n state === \"pending\" || state === \"failed\"\n ? \"oui-text-base-contrast\"\n : \"oui-text-base-contrast-54\",\n )}\n >\n {title}\n </Text>\n <Text\n size=\"2xs\"\n className={cn(\n state === \"pending\"\n ? \"oui-text-base-contrast-54\"\n : \"oui-text-base-contrast-20\",\n )}\n >\n {description}\n </Text>\n </Flex>\n </Flex>\n );\n};\n\nconst StatusIndicator: FC<{ state?: SwapState }> = ({ state }) => {\n if (state === SwapState.Pending) {\n return <Spinner size=\"sm\" />;\n }\n\n if (state === SwapState.Failed) {\n return (\n <CloseCircleFillIcon\n size={20}\n opacity={1}\n className=\"oui-text-danger-light\"\n />\n );\n }\n\n if (state === SwapState.Success) {\n return (\n <CheckedCircleFillIcon\n size={20}\n opacity={1}\n className=\"oui-text-primary-light\"\n />\n );\n }\n\n return <Box r=\"full\" width={10} height={10} intensity={200}></Box>;\n};\n\nfunction getBridgeStatus(status: SwapProcessStatus) {\n if (status === SwapProcessStatus.Bridging) {\n return SwapState.Pending;\n }\n if (status === SwapProcessStatus.BridgeFialed) {\n return SwapState.Failed;\n }\n\n if (\n status === SwapProcessStatus.Done ||\n status === SwapProcessStatus.Depositing\n ) {\n return SwapState.Success;\n }\n}\n\nfunction getDepositStatus(status: SwapProcessStatus) {\n if (status === SwapProcessStatus.Depositing) {\n return SwapState.Pending;\n }\n if (status === SwapProcessStatus.DepositFailed) {\n return SwapState.Failed;\n }\n\n if (status === SwapProcessStatus.Done) {\n return SwapState.Success;\n }\n}\n","import { i18n } from \"@orderly.network/i18n\";\nimport { API } from \"@orderly.network/types\";\n\nexport const getTokenByTokenList = (tokens: API.TokenInfo[] = []) => {\n const tokenObj = tokens.reduce<Record<string, API.TokenInfo>>((acc, item) => {\n acc[item.symbol!] = item;\n return acc;\n }, {});\n return tokenObj[\"USDC\"] || tokenObj[\"USDbC\"] || tokens[0];\n};\n\nexport const feeDecimalsOffset = (origin?: number): number => {\n return (origin ?? 2) + 3;\n};\n\n// export const priceDecimalsOffset = (origin?: number): number => {\n// return Math.abs((origin ?? 2) - 5);\n// };\n\nexport function checkIsAccountId(accountId: string) {\n const regex = /^0x[a-fA-F0-9]{64}$/;\n return regex.test(accountId);\n}\n\nexport function getTransferErrorMessage(errorCode: number) {\n if (errorCode === 34) {\n return i18n.t(\"transfer.internalTransfer.error.transferInProgress\");\n }\n\n if (errorCode === 17) {\n return i18n.t(\"transfer.internalTransfer.error.withdrawalInProgress\");\n }\n\n if (errorCode === 35) {\n return i18n.t(\"transfer.internalTransfer.error.accountIdNotExist\");\n }\n\n if (errorCode === 37) {\n return i18n.t(\"transfer.internalTransfer.error.transferToSelf\");\n }\n\n if (errorCode === 46) {\n return i18n.t(\"transfer.internalTransfer.error.transferToSubAccount\");\n }\n\n // TODO: when api return 500 status, not throw error code\n // if (errorCode === -1000) {\n // return i18n.t(\"transfer.internalTransfer.error.scopeInsufficient\");\n // }\n\n return i18n.t(\"transfer.internalTransfer.error.default\");\n}\n\nconst depositErrorCodeMap = {\n \"0x6697b232\": \"AccessControlBadConfirmation\",\n \"0xe2517d3f\": \"AccessControlUnauthorizedAccount\",\n \"0xc7ee9ce6\": \"AccountIdInvalid\",\n \"0x9fabe1c1\": \"AddressZero\",\n \"0x4b3815a6\": \"BalanceNotEnough\",\n \"0x59d9b863\": \"BrokerNotAllowed\",\n \"0xf67c6d78\": \"CeffuAddressMismatch\",\n \"0xd969df24\": \"DepositExceedLimit\",\n \"0xa65b249b\": \"EnumerableSetError\",\n \"0x06a0cf4a\": \"InvalidSwapSignature\",\n \"0x1eb00b06\": \"InvalidTokenAddress\",\n \"0xfa7c7537\": \"NativeTokenDepositAmountMismatch\",\n \"0xad674ae6\": \"NotRebalanceEnableToken\",\n \"0x623793c9\": \"NotZeroCodeLength\",\n \"0x833d33e7\": \"OnlyCrossChainManagerCanCall\",\n \"0x3ee5aeb5\": \"ReentrancyGuardReentrantCall\",\n \"0x0b693144\": \"SwapAlreadySubmitted\",\n \"0xa29c4986\": \"TokenNotAllowed\",\n \"0x30773dbb\": \"ZeroCodeLength\",\n \"0x56316e87\": \"ZeroDeposit\",\n \"0x93d3bb4d\": \"ZeroDepositFee\",\n};\n\nexport function getDepositKnownErrorMessage(message: string) {\n if (!message) {\n return \"\";\n }\n\n for (const key of Object.keys(depositErrorCodeMap)) {\n if (message.includes(key)) {\n const value =\n depositErrorCodeMap[key as keyof typeof depositErrorCodeMap];\n return `${value} (${key})`;\n }\n }\n}\n","import { FC, ReactNode } from \"react\";\nimport { useTranslation, Trans } from \"@orderly.network/i18n\";\nimport { API } from \"@orderly.network/types\";\nimport {\n Box,\n Flex,\n Text,\n TokenIcon,\n Icon,\n Divider,\n Button,\n} from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { feeDecimalsOffset } from \"../../../utils\";\nimport { ArrowRightIcon, GasFeeIcon, WoofiIcon } from \"../icons\";\nimport { SwapMode, SymbolInfo } from \"../types\";\n\nexport interface SwapInfo {\n // gasFee: string;\n // tradingFee: string;\n dstGasFee: string;\n swapFee: string;\n bridgeFee: string;\n price: number;\n slippage: number;\n received: string;\n time: number;\n}\n\ntype SwapDetailProps = {\n onConfirm: () => void;\n mode: SwapMode;\n src: SymbolInfo;\n dst: SymbolInfo;\n info: SwapInfo;\n markPrice: number;\n nativePrice: number;\n nativeToken?: API.TokenInfo;\n viewMode: \"processing\" | \"details\";\n // transactionData: any;\n};\n\nexport const SwapDetail: FC<SwapDetailProps> = (props) => {\n const {\n info,\n mode,\n nativePrice,\n markPrice,\n src,\n dst,\n nativeToken,\n viewMode,\n } = props;\n\n const { t } = useTranslation();\n\n const header = (\n <Flex justify=\"between\">\n <SwapSymbol\n primary={src?.token}\n chainId={src.chain}\n amount={src?.amount}\n dp={src?.displayDecimals}\n symbol={src?.token}\n />\n <ArrowRightIcon className=\"oui-text-primary-light\" />\n <SwapSymbol\n primary={dst?.token}\n component={<WoofiIcon className=\"oui-size-4\" />}\n amount={dst?.amount}\n dp={dst?.displayDecimals}\n symbol={dst?.token}\n reverse\n />\n </Flex>\n );\n\n const divider = (\n <Box my={5}>\n <Divider intensity={12} />\n </Box>\n );\n\n const listData = [\n {\n label: t(\"transfer.deposit.destinationGasFee\"),\n value: (\n <Flex gapX={1}>\n <GasFeeIcon className=\"oui-text-primary-light\" />\n <Text.numeral\n color=\"primaryLight\"\n padding={false}\n rm={Decimal.ROUND_UP}\n // swap precision\n dp={feeDecimalsOffset(nativeToken?.precision)}\n >\n {info.dstGasFee!}\n </Text.numeral>\n <Text color=\"primaryLight\">{nativeToken?.symbol}</Text>\n <Text className=\"oui-text-primary-light/60\">\n ($\n <Text.numeral\n color=\"primaryLight\"\n padding={false}\n rm={Decimal.ROUND_UP}\n dp={2}\n >\n {new Decimal(info.dstGasFee?.toString())\n .mul(nativePrice || 0)\n .toString()}\n </Text.numeral>\n )\n </Text>\n </Flex>\n ),\n },\n {\n label: t(\"transfer.swapDeposit.swapFee\"),\n value: (\n <>\n <Text.numeral\n intensity={80}\n dp={feeDecimalsOffset(src?.displayDecimals)}\n rm={Decimal.ROUND_UP}\n padding={false}\n >\n {info.swapFee}\n </Text.numeral>\n {` ${src?.token} `}\n <Text className=\"oui-text-[#63666D]\">\n ($\n <Text.numeral padding={false} rm={Decimal.ROUND_UP} dp={2}>\n {new Decimal(info.swapFee).mul(markPrice || 0).toString()}\n </Text.numeral>\n )\n </Text>\n </>\n ),\n },\n {\n label: t(\"transfer.swapDeposit.bridgeFee\"),\n value: mode === SwapMode.Cross && (\n <>\n <Text.numeral\n intensity={80}\n dp={feeDecimalsOffset(src?.displayDecimals)}\n rm={Decimal.ROUND_UP}\n padding={false}\n >\n {info.bridgeFee}\n </Text.numeral>\n {` ${src?.token} `}\n <Text className=\"oui-text-[#63666D]\">\n ($\n <Text.numeral padding={false} rm={Decimal.ROUND_UP} dp={2}>\n {new Decimal(info.bridgeFee).mul(markPrice || 0).toString()}\n </Text.numeral>\n )\n </Text>\n </>\n ),\n },\n {\n label: t(\"transfer.swapDeposit.minimumReceived\"),\n value: (\n <>\n <Text.numeral\n dp={dst?.displayDecimals}\n rm={Decimal.ROUND_DOWN}\n padding={false}\n >\n {info.received}\n </Text.numeral>\n {` ${dst?.token}`}\n </>\n ),\n },\n {\n label: t(\"common.price\"),\n value: (\n <>\n {`1 ${src?.token} = `}\n <Text.numeral dp={3} padding={false}>\n {info.price}\n </Text.numeral>\n {` ${dst?.token}`}\n </>\n ),\n },\n {\n label: t(\"transfer.slippage\"),\n value: `${info.slippage}%`,\n },\n ];\n\n const listView = (\n <Flex direction=\"column\" itemAlign=\"start\" gapY={3}>\n {listData?.map((item) => {\n if (item.value) {\n return <ListItem {...item} key={item.label} />;\n }\n })}\n </Flex>\n );\n\n const swapButton = (\n <Flex justify=\"center\" mt={8}>\n <Button className=\"oui-w-full lg:oui-w-[184px]\" onClick={props.onConfirm}>\n {t(\"transfer.swapDeposit.confirmSwap\")}\n </Button>\n </Flex>\n );\n\n return (\n <Box intensity={800}>\n {header}\n <SwapTime time={info.time ?? 0} />\n {divider}\n\n {viewMode === \"details\" && (\n <>\n {listView}\n {swapButton}\n </>\n )}\n </Box>\n );\n};\n\ntype ListItemProps = {\n label?: string;\n value?: ReactNode;\n};\n\nconst ListItem: FC<ListItemProps> = (props) => {\n return (\n <Flex gapX={2} justify=\"between\" width=\"100%\">\n <Text size=\"sm\" intensity={54}>\n {props.label}\n </Text>\n <Text size=\"sm\" intensity={98} as=\"div\">\n {props.value}\n </Text>\n </Flex>\n );\n};\n\ntype SwapSymbolProps = {\n primary: string;\n chainId?: number;\n component?: ReactNode;\n amount: string;\n dp?: number;\n symbol: string;\n reverse?: boolean;\n};\n\nconst SwapSymbol: FC<SwapSymbolProps> = (props) => {\n return (\n <Flex gapX={2} direction={props.reverse ? \"rowReverse\" : \"row\"}>\n <Icon.combine\n secondary={{\n chainId: props.chainId,\n component: props.component,\n className: \"oui-w-4 oui-h-4 oui-outline-base-8 oui-rounded-full\",\n }}\n >\n <TokenIcon name={props.primary} size=\"md\" />\n </Icon.combine>\n\n <Flex direction=\"column\" itemAlign={props.reverse ? \"end\" : \"start\"}>\n <Text.numeral intensity={98} size=\"lg\" dp={props.dp}>\n {props.amount}\n </Text.numeral>\n <Text intensity={54} size=\"xs\">\n {props.symbol}\n </Text>\n </Flex>\n </Flex>\n );\n};\n\nconst SwapTime: FC<{ time: number }> = (props) => {\n return (\n <Flex justify=\"center\">\n <Flex\n intensity={600}\n r=\"full\"\n gapX={2}\n justify=\"center\"\n py={1}\n mt={2}\n width={210}\n >\n <Text size=\"sm\" intensity={54}>\n {/* @ts-ignore */}\n <Trans\n i18nKey=\"transfer.swapDeposit.averageSwapTime\"\n values={{ time: props.time }}\n components={[<Text color=\"primaryLight\" key=\"0\" />]}\n />\n </Text>\n </Flex>\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { Trans } from \"@orderly.network/i18n\";\nimport { Flex, Text } from \"@orderly.network/ui\";\n\nexport const ViewFAQs: FC = () => {\n return (\n <Flex justify=\"center\" gapX={1} mt={3}>\n <Trans\n i18nKey=\"transfer.swapDeposit.viewFAQs\"\n components={[\n <Text\n size=\"xs\"\n color=\"primaryLight\"\n onClick={() => {\n window.open(\"https://learn.woo.org/woofi/faqs/woofi-pro\");\n }}\n className=\"oui-cursor-pointer\"\n key=\"0\"\n />,\n ]}\n />\n </Flex>\n );\n};\n","import { FC, useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useEventEmitter } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { WS_WalletStatusEnum } from \"@orderly.network/types\";\nimport { Box, toast } from \"@orderly.network/ui\";\nimport { useCrossSwap } from \"../hooks/useCrossSwap\";\nimport { SwapMode, SwapProcessStatus } from \"../types\";\nimport { ProcessStatus } from \"./processStatus\";\nimport { SwapProps } from \"./swap\";\nimport { SwapDetail } from \"./swapDetail\";\nimport { ViewFAQs } from \"./viewFAQs\";\n\nexport const CrossSwap: FC<SwapProps> = (props) => {\n const {\n transactionData: transaction,\n slippage,\n mode,\n dst,\n src,\n chain: chainInfo,\n nativeToken,\n depositFee,\n } = props;\n\n const { t } = useTranslation();\n\n const [status, setStatus] = useState<SwapProcessStatus>(\n SwapProcessStatus.NONE,\n );\n\n const [view, setView] = useState<\"processing\" | \"details\">(\"details\");\n const [tx, setTx] = useState<any>();\n\n const ee = useEventEmitter();\n\n const {\n swap: doCrossSwap,\n bridgeStatus,\n message,\n status: swapStatus,\n } = useCrossSwap();\n\n const swapInfo = useMemo(() => {\n const info: any = {\n price: transaction.price,\n slippage,\n time: chainInfo?.est_txn_mins,\n received: dst.amount,\n bridgeFee: transaction.fees_from.stargate,\n swapFee: transaction.fees_from.woofi,\n dstGasFee: transaction.dst_infos.gas_fee,\n };\n\n return info;\n }, [transaction, chainInfo?.est_txn_mins, mode, dst]);\n\n useEffect(() => {\n if (bridgeStatus === \"DELIVERED\") {\n setStatus(SwapProcessStatus.Depositing);\n }\n\n if (bridgeStatus === \"FAILED\") {\n setStatus(SwapProcessStatus.BridgeFialed);\n }\n\n if (swapStatus === WS_WalletStatusEnum.COMPLETED) {\n setStatus(SwapProcessStatus.Done);\n }\n\n if (swapStatus === WS_WalletStatusEnum.FAILED) {\n setStatus(SwapProcessStatus.DepositFailed);\n }\n }, [bridgeStatus, swapStatus]);\n\n const doSwap = useCallback(() => {\n setView(\"processing\");\n\n if (!transaction) return Promise.reject(\"No transaction data\");\n setStatus(SwapProcessStatus.Bridging);\n\n return doCrossSwap({\n address: \"\",\n crossChainRouteAddress: chainInfo?.cross_chain_router!,\n src: {\n fromToken: transaction.src_infos.from_token,\n fromAmount: BigInt(transaction.src_infos.from_amount),\n bridgeToken: transaction.src_infos.bridge_token,\n minBridgeAmount: BigInt(transaction.src_infos.min_bridge_amount),\n },\n dst: {\n chainId: transaction.dst_infos.chain_id,\n bridgedToken: transaction.dst_infos.bridged_token,\n toToken: transaction.dst_infos.to_token,\n minToAmount: BigInt(transaction.dst_infos.min_to_amount),\n // @ts-ignore\n orderlyNativeFees: depositFee,\n },\n })\n .then((res: any) => {\n setTx(res);\n toast.success(t(\"transfer.deposit.requested\"));\n ee.emit(\"deposit:requested\");\n })\n .catch((error: any) => {\n setStatus(SwapProcessStatus.BridgeFialed);\n toast.error(error?.message || \"Error\");\n });\n }, [transaction, mode, dst, src, ee]);\n\n const statusUrl = useMemo(() => {\n if (status < SwapProcessStatus.Depositing || !message) {\n return;\n }\n return `https://layerzeroscan.com/tx/${message.srcTxHash}`;\n // return `https://layerzeroscan.com/${message.srcChainId}/address/${message.srcUaAddress}/message/${message.dstChainId}/address/${message.dstUaAddress}/nonce/${message.srcUaNonce}`;\n }, [status, message]);\n\n return (\n <Box intensity={800}>\n <SwapDetail\n viewMode={view}\n onConfirm={doSwap}\n info={swapInfo}\n src={props.src}\n dst={props.dst}\n mode={mode}\n markPrice={transaction.mark_prices?.from_token ?? 1}\n nativePrice={transaction.mark_prices.native_token}\n nativeToken={nativeToken}\n />\n\n {view === \"processing\" && (\n <ProcessStatus\n mode={SwapMode.Cross}\n status={status}\n statusUrl={statusUrl}\n onComplete={props.onComplete}\n brokerName={props.brokerName}\n />\n )}\n <ViewFAQs />\n </Box>\n );\n};\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { pick } from \"ramda\";\nimport { utils } from \"@orderly.network/core\";\nimport {\n useAccountInstance,\n useBoolean,\n useConfig,\n useEventEmitter,\n} from \"@orderly.network/hooks\";\nimport { WS_WalletStatusEnum } from \"@orderly.network/types\";\nimport { isNativeTokenChecker, woofiDexSwapDepositorAbi } from \"../constants\";\n\n/**\n * 1. fee precision swap_support.woofi_dex_precision+3,round off\n * 2. price precision = abs(woofi_dex_precision - 5),cut off\n * 3. orderly deposit fee = $0\n * 4. deposit pop-ups: don't show token when fee is 0.\n * e.g. dst gas fee = 0 ETH, swap fee = 0.04 USDC, it will show $0.04 ( 0.04 USDC )\n */\nexport const useSwap = (): any => {\n const [loading, { setTrue: start, setFalse: stop }] = useBoolean(false);\n const account = useAccountInstance();\n const brokerId = useConfig(\"brokerId\");\n\n const [status, setStatus] = useState<WS_WalletStatusEnum>(\n WS_WalletStatusEnum.NO,\n );\n\n const txHash = useRef<string | undefined>();\n const ee = useEventEmitter();\n\n useEffect(() => {\n const handler = (data: any) => {\n const { side, transStatus, trxId } = data;\n\n if (side === \"DEPOSIT\" && trxId === txHash.current) {\n setStatus(transStatus);\n }\n };\n ee.on(\"wallet:changed\", handler);\n\n return () => {\n ee.off(\"wallet:changed\", handler);\n };\n }, [txHash.current]);\n\n const dstValutDeposit = useCallback(() => {\n return {\n accountId: account.accountIdHashStr,\n brokerHash: utils.parseBrokerHash(brokerId),\n tokenHash: utils.parseTokenHash(\"USDC\"),\n };\n }, [account, brokerId]);\n\n const swap = useCallback(\n async (\n woofiDexDepositorAdress: string,\n inputs: {\n fromToken: string;\n fromAmount: string;\n toToken: string;\n minToAmount: string;\n orderlyNativeFees: bigint;\n },\n config: { dst: any; src: any },\n ) => {\n if (!account.walletAdapter) {\n throw new Error(\"walletAdapter is undefined\");\n }\n\n if (!account.address) {\n throw new Error(\"account.address is undefined\");\n }\n\n if (loading) return;\n start();\n\n const txPayload = {\n from: account.address,\n to: woofiDexDepositorAdress,\n data: [account.address, inputs, dstValutDeposit()],\n value: isNativeTokenChecker(inputs.fromToken)\n ? BigInt(inputs.fromAmount) + inputs.orderlyNativeFees\n : inputs.orderlyNativeFees,\n };\n\n try {\n const result = await account.walletAdapter.sendTransaction(\n woofiDexDepositorAdress,\n \"swap\",\n txPayload,\n {\n abi: woofiDexSwapDepositorAbi,\n },\n );\n\n stop();\n\n txHash.current = result.hash;\n\n ee.emit(\"deposit:requested\");\n\n // @ts-ignore\n return pick([\"from\", \"to\", \"hash\", \"value\"], result);\n } catch (e: any) {\n throw new Error(e.errorCode);\n }\n },\n [loading, account],\n );\n\n return {\n swap,\n loading,\n status,\n };\n};\n","import { FC, useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useEventEmitter } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { WS_WalletStatusEnum } from \"@orderly.network/types\";\nimport { Box, toast } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useSwap } from \"../hooks/useSwap\";\nimport { SwapMode, SwapProcessStatus } from \"../types\";\nimport { ProcessStatus } from \"./processStatus\";\nimport { SwapProps } from \"./swap\";\nimport { SwapDetail } from \"./swapDetail\";\nimport { ViewFAQs } from \"./viewFAQs\";\n\nexport const SingleSwap: FC<SwapProps> = (props) => {\n const {\n transactionData: transaction,\n slippage,\n mode,\n dst,\n src,\n chain,\n nativeToken,\n depositFee,\n } = props;\n const { t } = useTranslation();\n\n const [status, setStatus] = useState<SwapProcessStatus>(\n SwapProcessStatus.NONE,\n );\n\n const [view, setView] = useState<\"processing\" | \"details\">(\"details\");\n const [tx, setTx] = useState<any>();\n\n const ee = useEventEmitter();\n\n const { swap: doSingleSwap, status: swapStatus } = useSwap();\n\n const swapInfo = useMemo(() => {\n const info: any = {\n price: transaction.price,\n slippage,\n time: chain?.est_txn_mins,\n received: dst.amount,\n dstGasFee: new Decimal(depositFee!.toString())\n ?.div(new Decimal(10).pow(18))\n ?.toString(),\n swapFee: transaction.fees_from,\n };\n\n return info;\n }, [transaction, chain?.est_txn_mins, mode, dst, depositFee]);\n\n useEffect(() => {\n if (swapStatus === WS_WalletStatusEnum.COMPLETED) {\n setStatus(SwapProcessStatus.Done);\n }\n\n if (swapStatus === WS_WalletStatusEnum.FAILED) {\n setStatus(SwapProcessStatus.DepositFailed);\n }\n }, [swapStatus]);\n\n const doSwap = useCallback(() => {\n setView(\"processing\");\n\n if (!transaction) return Promise.reject(\"No transaction data\");\n if (!chain || !chain.depositor) return Promise.reject(\"No chain data\");\n\n setStatus(SwapProcessStatus.Depositing);\n\n return doSingleSwap(\n chain.depositor,\n {\n fromToken: transaction.infos.from_token,\n fromAmount: transaction.infos.from_amount,\n toToken: transaction.infos.to_token,\n minToAmount: transaction.infos.min_to_amount,\n orderlyNativeFees: depositFee,\n },\n { dst, src },\n )\n .then((res: any) => {\n setTx(res);\n toast.success(t(\"transfer.deposit.requested\"));\n ee.emit(\"deposit:requested\");\n })\n .catch((error: any) => {\n setStatus(SwapProcessStatus.DepositFailed);\n toast.error(error?.message || \"Error\");\n });\n }, [transaction, mode, dst, src, ee]);\n\n const statusUrl = useMemo(() => {\n if (status < SwapProcessStatus.Depositing || !tx) {\n return;\n }\n return `${chain?.explorer_base_url}/tx/${tx.hash}`;\n }, [status, tx, chain]);\n\n return (\n <Box intensity={800}>\n <SwapDetail\n viewMode={view}\n onConfirm={doSwap}\n info={swapInfo}\n src={props.src}\n dst={props.dst}\n mode={mode}\n markPrice={transaction.mark_prices?.from_token ?? 1}\n nativePrice={transaction.mark_prices.native_token}\n nativeToken={nativeToken}\n />\n\n {view === \"processing\" && (\n <ProcessStatus\n mode={SwapMode.Single}\n status={status}\n statusUrl={statusUrl}\n onComplete={props.onComplete}\n brokerName={props.brokerName}\n />\n )}\n <ViewFAQs />\n </Box>\n );\n};\n","import { FC } from \"react\";\nimport { API } from \"@orderly.network/types\";\nimport { SwapMode, SymbolInfo } from \"../types\";\nimport { CrossSwap } from \"./crossSwap\";\nimport { SingleSwap } from \"./singleSwap\";\n\nexport interface SwapProps {\n mode: SwapMode;\n src: SymbolInfo;\n dst: SymbolInfo;\n chain?: API.NetworkInfos;\n nativeToken?: API.TokenInfo;\n depositFee?: bigint;\n transactionData: any;\n slippage: number;\n brokerName?: string;\n onComplete?: (isSuccss: boolean) => void;\n onCancel?: () => void;\n onFail?: () => void;\n}\n\nexport const Swap: FC<SwapProps> = (props) => {\n const { mode } = props;\n\n if (mode === SwapMode.Cross) {\n return <CrossSwap {...props} />;\n }\n\n return <SingleSwap {...props} />;\n};\n","import { useTranslation } from \"@orderly.network/i18n\";\nimport {\n modal,\n SimpleDialog,\n SimpleSheet,\n useModal,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { Swap, SwapProps } from \"./swap\";\n\nexport const SwapDialog = modal.create<SwapProps>((props) => {\n const { isMobile } = useScreen();\n const { t } = useTranslation();\n\n const { visible, hide, resolve, reject, onOpenChange } = useModal();\n\n const onComplete = (isSuccss: boolean) => {\n resolve(isSuccss);\n hide();\n };\n\n const onCancel = () => {\n reject();\n hide();\n };\n\n const commonProps = {\n title: t(\"transfer.swapDeposit.swapDialog.title\"),\n open: visible,\n onOpenChange,\n classNames: {\n content: \"oui-font-semibold\",\n },\n children: <Swap {...props} onComplete={onComplete} onCancel={onCancel} />,\n };\n\n if (isMobile) {\n return <SimpleSheet {...commonProps} />;\n }\n\n return <SimpleDialog {...commonProps} size=\"md\" />;\n});\n","import { useCallback } from \"react\";\nimport { utils } from \"@orderly.network/core\";\nimport {\n useAccountInstance,\n useBoolean,\n useConfig,\n} from \"@orderly.network/hooks\";\nimport {\n swapSupportApiUrl,\n woofiDexCrossSwapChainRouterAbi,\n} from \"../constants\";\n\nexport const useWooCrossSwapQuery = () => {\n const [loading, { setTrue: start, setFalse: stop }] = useBoolean(false);\n const brokerId = useConfig(\"brokerId\");\n\n const account = useAccountInstance();\n\n const dstValutDeposit = useCallback(() => {\n return {\n accountId: account.accountIdHashStr,\n brokerHash: utils.parseBrokerHash(brokerId),\n tokenHash: utils.parseTokenHash(\"USDC\"),\n };\n }, [account, brokerId]);\n\n const queryDestinationFee = useCallback(\n async (\n crossChainRouteAddress: string,\n dst: {\n chainId: string;\n bridgedToken: string;\n toToken: string;\n minToAmount: bigint;\n orderlyNativeFees: bigint;\n },\n ) => {\n if (!account.walletAdapter) {\n throw new Error(\"walletAdapter is not ready\");\n }\n const quotoLZFee = await account.walletAdapter.call(\n crossChainRouteAddress,\n \"quoteLayerZeroFee\",\n [account.address, dst, dstValutDeposit()],\n {\n abi: woofiDexCrossSwapChainRouterAbi,\n },\n );\n\n return utils.formatByUnits(quotoLZFee[0]);\n },\n [],\n );\n\n /// swap enquiry\n const query = useCallback(\n (inputs: {\n srcNetwork: string;\n srcToken: string;\n amount: bigint;\n slippage: number;\n dstToken: string;\n crossChainRouteAddress: string;\n }) => {\n if (loading) return Promise.resolve();\n start();\n\n const params = {\n // src_network: inputs.srcNetwork,\n src_network: inputs.srcNetwork,\n dst_network: \"arbitrum\",\n src_token: inputs.srcToken,\n dst_token: inputs.dstToken, //account.assetsManager.usdcAddress,\n src_amount: inputs.amount, //inputs.amount,\n slippage: inputs.slippage || 1,\n // to_token:account.assetsManager.usdcAddress,\n };\n\n const queryString = Object.entries(params)\n .map(([key, value]) => `${key}=${encodeURIComponent(value as string)}`)\n .join(\"&\");\n\n return fetch(\n `${swapSupportApiUrl}/woofi_dex/cross_chain_swap?${queryString}`,\n )\n .then((res) => {\n if (!res.ok) {\n return res.json().then((data) => {\n throw new Error(data.error.message);\n });\n }\n return res.json();\n })\n .then((data) => {\n if (data.status === \"ok\") {\n return data.data;\n }\n throw new Error(data.message);\n })\n .then((swapInfo) => {\n return queryDestinationFee(inputs.crossChainRouteAddress, {\n chainId: swapInfo.dst_infos.chain_id,\n bridgedToken: swapInfo.dst_infos.bridged_token,\n toToken: swapInfo.dst_infos.to_token,\n minToAmount: BigInt(swapInfo.dst_infos.min_to_amount),\n orderlyNativeFees: 0n,\n })\n .then((data) => {\n return {\n ...swapInfo,\n dst_infos: {\n ...swapInfo.dst_infos,\n gas_fee: data,\n },\n };\n })\n .catch((e) => {\n console.error(\"queryDestinationFee error\", e);\n });\n })\n .finally(() => stop());\n },\n\n [loading, account],\n );\n\n return {\n query,\n loading,\n };\n};\n","import { useCallback } from \"react\";\nimport { useAccountInstance, useBoolean } from \"@orderly.network/hooks\";\nimport { swapSupportApiUrl } from \"../constants\";\n\nexport const useWooSwapQuery = () => {\n const account = useAccountInstance();\n const [loading, { setTrue: start, setFalse: stop }] = useBoolean(false);\n\n /// swap 询价\n const query = useCallback(\n (inputs: any) => {\n if (loading) return Promise.resolve();\n start();\n\n const params = {\n network: inputs.srcNetwork,\n // network: \"arbitrum\",\n from_token: inputs.srcToken,\n to_token: inputs.dstToken, //account.assetsManager.usdcAddress,\n from_amount: inputs.amount, //inputs.amount,\n slippage: inputs.slippage || 1,\n // to_token:account.assetsManager.usdcAddress,\n };\n\n const queryString = Object.entries(params)\n .map(([key, value]) => `${key}=${encodeURIComponent(value as string)}`)\n .join(\"&\");\n\n return fetch(`${swapSupportApiUrl}/woofi_dex/swap?${queryString}`)\n .then((res) => {\n if (!res.ok) {\n return res.json().then((data) => {\n throw new Error(data.error.message);\n });\n }\n return res.json();\n })\n .then((data) => {\n if (data.status === \"ok\") {\n return data.data;\n }\n throw new Error(data.message);\n })\n .finally(() => stop());\n },\n [account],\n );\n\n return {\n query,\n loading,\n };\n};\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useBoolean, useDebouncedCallback } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { toast } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { DST, MarkPrices } from \"../types\";\nimport { useWooCrossSwapQuery } from \"./useCrossSwapQuery\";\nimport { useWooSwapQuery } from \"./useSwapQuery\";\n\nexport type TransactionInfo = {\n price: number;\n markPrices: MarkPrices;\n dstGasFee?: string;\n swapFee?: string;\n bridgeFee?: string;\n fee: string;\n};\n\ntype useSwapEnquiryProps = {\n quantity: string;\n dst: DST;\n queryParams: any;\n needSwap: boolean;\n needCrossSwap: boolean;\n};\n\nexport function useSwapEnquiry(props: useSwapEnquiryProps) {\n const { quantity, dst, queryParams, needSwap, needCrossSwap } = props;\n const { t } = useTranslation();\n const { query: wooSwapQuery } = useWooSwapQuery();\n const { query: wooCrossSwapQuery } = useWooCrossSwapQuery();\n\n const queryParamsRef = useRef(queryParams);\n queryParamsRef.current = queryParams;\n\n const [amount, setAmount] = useState<string>(\"\");\n const [warningMessage, setWarningMessage] = useState<string>(\"\");\n const [querying, { setTrue: queryStart, setFalse: queryStop }] =\n useBoolean(false);\n\n const [transactionInfo, setTransactionInfo] = useState<TransactionInfo>({\n price: 0,\n markPrices: {\n from_token: 0,\n native_token: 0,\n },\n fee: \"\",\n // dstGasFee: \"\",\n // swapFee: \"\",\n // bridgeFee: \"\",\n });\n\n const enquiry = useCallback(() => {\n if (needCrossSwap) {\n return wooCrossSwapQuery(queryParamsRef.current);\n }\n\n if (needSwap) {\n return wooSwapQuery(queryParamsRef.current);\n }\n\n return Promise.reject(\"no need to enquiry\");\n }, [needSwap, needCrossSwap]);\n\n const enquirySuccessHandle = (res: any) => {\n if (res.mark_prices) {\n const dstGasFee = needCrossSwap ? res.dst_infos.gas_fee : \"0\";\n const swapFee = needCrossSwap ? res.fees_from.woofi : res.fees_from;\n const bridgeFee = needCrossSwap ? res.fees_from.stargate : undefined;\n const fee = needCrossSwap ? res.fees_from.total : res.fees_from;\n\n setTransactionInfo({\n price: res.price,\n markPrices: res.mark_prices,\n dstGasFee,\n swapFee,\n bridgeFee,\n fee: fee,\n });\n }\n\n // set amount\n if (res.route_infos) {\n const amountValue = needCrossSwap\n ? res.route_infos.dst.amounts[1]\n : res.route_infos.amounts[1];\n\n setAmount(\n new Decimal(amountValue).div(Math.pow(10, dst.decimals!)).toString(),\n );\n }\n\n setWarningMessage(\"\");\n return res;\n };\n\n const cleanTransactionInfo = (data?: any) => {\n setTransactionInfo({\n fee: \"0\",\n markPrices: {\n from_token: 0,\n native_token: 0,\n },\n price: 0,\n swapFee: \"0\",\n bridgeFee: \"0\",\n dstGasFee: \"0\",\n ...data,\n });\n\n setAmount(\"\");\n };\n\n const enquiryErrorHandle = (error: Error) => {\n if (error.message === \"contract call failed\") {\n // Not enough liquidity on the cross-chain bridge.\n setWarningMessage(t(\"transfer.swapDeposit.notEnoughLiquidity\"));\n // clean previous data\n cleanTransactionInfo();\n } else {\n setWarningMessage(\"\");\n if (error?.message) {\n toast.error(error.message);\n }\n }\n };\n\n const debouncedEnquiry = useDebouncedCallback(() => {\n queryStart();\n return enquiry()\n .then(enquirySuccessHandle, enquiryErrorHandle)\n .finally(() => {\n queryStop();\n });\n }, 300);\n\n useEffect(() => {\n // if not need swap and cross swap\n if (!needSwap && !needCrossSwap) {\n cleanTransactionInfo({\n price: 1,\n });\n setAmount(quantity);\n return;\n }\n\n const qty = Number(quantity);\n\n if (isNaN(qty) || qty <= 0) {\n cleanTransactionInfo();\n return;\n }\n\n debouncedEnquiry();\n }, [needSwap, needCrossSwap, quantity]);\n\n return {\n enquiry,\n querying,\n warningMessage,\n transactionInfo,\n amount,\n cleanTransactionInfo,\n };\n}\n","import { useMemo } from \"react\";\nimport { useIndexPrice } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API } from \"@orderly.network/types\";\nimport { Decimal, toNonExponential } from \"@orderly.network/utils\";\nimport { feeDecimalsOffset } from \"../../../utils\";\nimport { TransactionInfo } from \"./useSwapEnquiry\";\n\nexport type UseSwapFee = ReturnType<typeof useSwapFee>;\n\ntype FeeQty = {\n value: string | number;\n dp: number;\n symbol?: string;\n};\n\nexport function useSwapFee(options: {\n nativeToken?: API.TokenInfo;\n isNativeToken?: boolean;\n src?: API.TokenInfo;\n depositFee?: bigint;\n transactionInfo: TransactionInfo;\n needSwap: boolean;\n needCrossSwap: boolean;\n}) {\n const {\n nativeToken,\n isNativeToken,\n src,\n depositFee = 0,\n transactionInfo,\n needSwap,\n needCrossSwap,\n } = options;\n\n const nativeSymbol = nativeToken?.symbol;\n const srcSymbol = src?.symbol;\n\n const {\n fee = \"0\",\n swapFee = \"0\",\n bridgeFee = \"0\",\n dstGasFee: destinationGasFee = \"0\",\n markPrices,\n } = transactionInfo;\n\n const { from_token: markPrice, native_token: nativeMarkPrice } = markPrices;\n\n const { data: symbolPrice } = useIndexPrice(`SPOT_${nativeSymbol}_USDC`);\n\n const { t } = useTranslation();\n\n const feeInfo = useMemo(() => {\n let feeAmount = \"\";\n let feeQtys: FeeQty[] = [];\n\n const nativeDp = feeDecimalsOffset(\n // swap precision\n nativeToken?.precision,\n );\n\n // swap precision\n const srcDp = feeDecimalsOffset(src?.precision);\n\n const dstGasFee = needCrossSwap\n ? destinationGasFee\n : new Decimal(depositFee.toString())\n .div(new Decimal(10).pow(18))\n .toString();\n\n if (!needSwap && !needCrossSwap) {\n feeQtys = [\n {\n value: dstGasFee,\n dp: nativeDp,\n },\n ];\n\n feeAmount = new Decimal(dstGasFee).mul(symbolPrice || 0).toString();\n }\n\n if (needSwap || needCrossSwap) {\n // if native token, Destination gas fee、fee (Swap fee + Bridge fee ) will use a same symbol unit\n if (isNativeToken) {\n const totalFeeQty = new Decimal(dstGasFee).plus(fee);\n\n feeQtys = [\n {\n value: totalFeeQty.toString(),\n dp: nativeDp,\n },\n ];\n\n feeAmount = totalFeeQty.mul(nativeMarkPrice ?? 1).toString();\n } else {\n feeQtys = [\n {\n value: dstGasFee,\n dp: nativeDp,\n symbol: nativeSymbol,\n },\n {\n value: fee,\n dp: srcDp,\n symbol: srcSymbol,\n },\n ];\n\n feeAmount = new Decimal(dstGasFee)\n .mul(nativeMarkPrice ?? 1)\n .plus(new Decimal(fee).mul(markPrice ?? 1))\n .toString();\n }\n }\n\n feeQtys = feeQtys.filter(\n (item) => !!item.value && Number(item.value) !== 0,\n );\n\n const feeDetails = [\n {\n title: t(\"transfer.deposit.destinationGasFee\"),\n description: t(\"transfer.deposit.destinationGasFee.description\"),\n value: dstGasFee,\n dp: nativeDp,\n symbol: nativeSymbol,\n },\n {\n title: t(\"transfer.swapDeposit.swapFee\"),\n description: t(\"transfer.swapDeposit.swapFee.description\"),\n value: swapFee,\n dp: srcDp,\n symbol: srcSymbol,\n },\n {\n title: t(\"transfer.swapDeposit.bridgeFee\"),\n description: t(\"transfer.swapDeposit.bridgeFee.description\"),\n value: bridgeFee,\n dp: srcDp,\n symbol: srcSymbol,\n },\n ]\n .filter(\n // alway show Destination gas fee\n (item, index) =>\n index === 0 || (!!item.value && Number(item.value) !== 0),\n )\n .map((item) => {\n const value = new Decimal(item.value || 0).todp(item.dp).toNumber();\n return {\n ...item,\n value: toNonExponential(value),\n };\n });\n\n return {\n feeAmount,\n feeQtys,\n feeDetails,\n };\n }, [\n depositFee,\n symbolPrice,\n nativeSymbol,\n srcSymbol,\n transactionInfo,\n needSwap,\n needCrossSwap,\n ]);\n\n return {\n ...feeInfo,\n nativeSymbol,\n };\n}\n","import { useCallback, useMemo } from \"react\";\nimport { useConfig, useLocalStorage } from \"@orderly.network/hooks\";\nimport { API } from \"@orderly.network/types\";\nimport { modal } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { CurrentChain } from \"../../depositForm/hooks/useChainSelect\";\nimport { SwapDialog } from \"../components/swapDialog\";\nimport { DST, SwapMode } from \"../types\";\nimport { useSwapEnquiry } from \"./useSwapEnquiry\";\nimport { useSwapFee } from \"./useSwapFee\";\n\ntype SwapDepositOptions = {\n srcToken: API.TokenInfo;\n currentChain?: CurrentChain | null;\n dst: DST;\n quantity: string;\n isNativeToken: boolean;\n depositFee: bigint;\n setQuantity: (quantity: string) => void;\n needSwap: boolean;\n needCrossSwap: boolean;\n};\n\nconst ORDERLY_SWAP_DEPOSIT_SLIPPAGE_KEY = \"orderly_swap_deposit_slippage\";\n\nexport const useSwapDeposit = (options: SwapDepositOptions) => {\n const {\n srcToken,\n currentChain,\n dst,\n quantity,\n isNativeToken,\n depositFee,\n setQuantity,\n needSwap,\n needCrossSwap,\n } = options;\n\n const [slippage, setSlippage] = useLocalStorage(\n ORDERLY_SWAP_DEPOSIT_SLIPPAGE_KEY,\n 1,\n );\n\n const config = useConfig();\n const brokerName = config.get(\"brokerName\") || \"\";\n\n const {\n enquiry,\n transactionInfo,\n amount: swapAmount,\n querying: swapRevalidating,\n warningMessage,\n cleanTransactionInfo,\n } = useSwapEnquiry({\n quantity,\n dst,\n queryParams: {\n network: dst.network,\n srcNetwork: currentChain?.info?.network_infos?.shortName,\n srcToken: srcToken?.address,\n dstToken: dst.address,\n crossChainRouteAddress:\n currentChain?.info?.network_infos?.cross_chain_router,\n amount: new Decimal(quantity || 0)\n .mul(10 ** (srcToken?.decimals || 0))\n .toString(),\n slippage,\n },\n needSwap,\n needCrossSwap,\n });\n\n const cleanData = useCallback(() => {\n setQuantity(\"\");\n cleanTransactionInfo();\n }, [setQuantity]);\n\n const onSwapDeposit = useCallback(async () => {\n // const _params = getSwapTestData(needCrossSwap);\n // return modal.show(SwapDialog, _params);\n\n return enquiry()\n .then((transaction) => {\n const amountValue = needCrossSwap\n ? transaction.route_infos?.dst.amounts[1]\n : transaction.route_infos?.amounts[1];\n\n const params = {\n mode: needCrossSwap ? SwapMode.Cross : SwapMode.Single,\n src: {\n chain: currentChain?.id,\n token: srcToken!.symbol,\n // swap precision\n displayDecimals: srcToken?.precision,\n amount: quantity,\n decimals: srcToken!.decimals,\n },\n dst: {\n chain: dst.chainId,\n token: dst.symbol,\n displayDecimals: 2,\n amount: new Decimal(amountValue)\n .div(Math.pow(10, dst.decimals!))\n .toString(),\n decimals: dst.decimals,\n },\n chain: currentChain?.info?.network_infos,\n nativeToken: currentChain?.info?.nativeToken,\n depositFee,\n transactionData: transaction,\n slippage,\n brokerName,\n };\n\n return modal.show(SwapDialog, params);\n })\n .then((isSuccss) => {\n if (isSuccss) {\n cleanData();\n }\n })\n .catch((error) => {\n // toast.error(error?.message || \"Error\");\n });\n }, [quantity, needCrossSwap, dst, currentChain, slippage, depositFee]);\n\n const swapPrice = useMemo(() => {\n if (needCrossSwap || needSwap) {\n return transactionInfo.price;\n }\n return 1;\n }, [transactionInfo]);\n\n const markPrice = useMemo(() => {\n if (needCrossSwap || needSwap) {\n return isNativeToken\n ? transactionInfo.markPrices.native_token\n : transactionInfo.markPrices.from_token;\n }\n\n return 1;\n }, [needSwap, needCrossSwap, isNativeToken, transactionInfo]);\n\n const swapQuantity = needSwap || needCrossSwap ? swapAmount : quantity;\n\n const swapFee = useSwapFee({\n nativeToken: currentChain?.info?.nativeToken,\n isNativeToken,\n src: srcToken,\n depositFee,\n transactionInfo,\n needSwap,\n needCrossSwap,\n });\n\n return {\n cleanTransactionInfo,\n onSwapDeposit,\n swapPrice,\n markPrice,\n swapQuantity,\n swapFee,\n swapRevalidating,\n warningMessage,\n needSwap,\n needCrossSwap,\n slippage,\n onSlippageChange: setSlippage,\n };\n};\n","import { useMemo } from \"react\";\nimport { DepositAction } from \"../../../types\";\n\ntype Options = {\n isNativeToken: boolean;\n allowance: string;\n quantity: string;\n maxQuantity: string;\n};\n\nexport function useActionType(options: Options) {\n const { isNativeToken, allowance, quantity, maxQuantity } = options;\n\n const actionType = useMemo(() => {\n const allowanceNum = isNativeToken ? Number.MAX_VALUE : Number(allowance);\n\n if (allowanceNum <= 0) {\n return DepositAction.ApproveAndDeposit;\n }\n\n const qty = Number(quantity);\n const maxQty = Number(maxQuantity);\n\n if (allowanceNum < qty && qty <= maxQty) {\n // return DepositAction.Increase;\n return DepositAction.ApproveAndDeposit;\n }\n\n return DepositAction.Deposit;\n }, [isNativeToken, allowance, quantity, maxQuantity]);\n\n return actionType;\n}\n","import { useCallback, useMemo } from \"react\";\nimport {\n Chain,\n ConnectedChain,\n useChains,\n useConfig,\n useLocalStorage,\n useWalletConnector,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API, NetworkId } from \"@orderly.network/types\";\nimport { toast } from \"@orderly.network/ui\";\nimport { int2hex, praseChainIdToNumber } from \"@orderly.network/utils\";\n\nexport type CurrentChain = Pick<ConnectedChain, \"namespace\"> & {\n id: number;\n info?: Chain;\n};\n\nexport function useChainSelect() {\n const { t } = useTranslation();\n const networkId = useConfig(\"networkId\") as NetworkId;\n const [linkDeviceStorage] = useLocalStorage(\"orderly_link_device\", {});\n\n const { connectedChain, settingChain, setChain } = useWalletConnector();\n\n const [chains, { findByChainId }] = useChains(networkId, {\n pick: \"network_infos\",\n filter: (chain: any) =>\n chain.network_infos?.bridge_enable || chain.network_infos?.bridgeless,\n });\n\n const currentChain = useMemo(() => {\n const chainId = connectedChain\n ? praseChainIdToNumber(connectedChain.id)\n : parseInt(linkDeviceStorage?.chainId);\n\n if (!chainId) return null;\n\n const chain = findByChainId(chainId);\n\n return {\n ...connectedChain,\n id: chainId,\n info: chain!,\n } as CurrentChain;\n }, [findByChainId, connectedChain, linkDeviceStorage]);\n\n const onChainChange = useCallback(\n async (chain: API.NetworkInfos) => {\n const chainInfo = findByChainId(chain.chain_id);\n\n if (!connectedChain) {\n return;\n }\n\n if (\n !chainInfo ||\n chainInfo.network_infos?.chain_id === currentChain?.id\n ) {\n return Promise.resolve();\n }\n\n return setChain({\n chainId: int2hex(Number(chainInfo.network_infos?.chain_id)),\n })\n .then((switched) => {\n if (switched) {\n toast.success(t(\"connector.networkSwitched\"));\n } else {\n toast.error(t(\"connector.switchChain.failed\"));\n }\n })\n .catch((error) => {\n if (error && error.message) {\n toast.error(\n `${t(\"connector.switchChain.failed\")}: ${error.message}`,\n );\n }\n });\n },\n [currentChain, setChain, findByChainId],\n );\n\n return {\n chains,\n currentChain,\n settingChain,\n onChainChange,\n };\n}\n","import { useCallback, useState } from \"react\";\nimport { useEventEmitter } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { toast } from \"@orderly.network/ui\";\nimport { getDepositKnownErrorMessage } from \"../../../utils\";\n\ntype Options = {\n quantity: string;\n allowance?: string;\n approve: (quantity?: string) => Promise<any>;\n deposit: () => Promise<any>;\n onSuccess?: () => void;\n onError?: (err: unknown, knownErrorMessage?: string) => void;\n customDeposit?: () => Promise<any>;\n enableCustomDeposit?: boolean;\n};\n\nexport function useDepositAction(options: Options) {\n const {\n quantity,\n allowance,\n approve,\n deposit,\n enableCustomDeposit,\n customDeposit,\n onSuccess,\n } = options;\n const [submitting, setSubmitting] = useState(false);\n const ee = useEventEmitter();\n const { t } = useTranslation();\n\n const doDeposit = useCallback(async () => {\n try {\n await deposit();\n toast.success(t(\"transfer.deposit.requested\"));\n ee.emit(\"deposit:requested\");\n onSuccess?.();\n } catch (err: any) {\n console.error(\"deposit error\", err);\n\n const knownErrorMessage = getDepositKnownErrorMessage(err.message);\n options.onError?.(err, knownErrorMessage);\n if (knownErrorMessage) {\n toast.error(\n <div>\n {t(\"common.somethingWentWrong\")}\n <br />\n <div className=\"orderly-text-white/[0.54] orderly-text-xs\">\n {t(\"common.details\")}: {knownErrorMessage}\n </div>\n </div>,\n );\n } else {\n toast.error(err.message || t(\"common.somethingWentWrong\"));\n }\n }\n }, [deposit, onSuccess, t, ee, options.onError]);\n\n const onDeposit = useCallback(async () => {\n const num = Number(quantity);\n\n if (isNaN(num) || num <= 0) {\n toast.error(t(\"transfer.quantity.invalid\"));\n return;\n }\n\n if (submitting) return;\n\n setSubmitting(true);\n\n const execDeposit = enableCustomDeposit ? customDeposit : doDeposit;\n\n await execDeposit?.()?.finally(() => {\n setSubmitting(false);\n });\n }, [quantity, submitting, doDeposit, enableCustomDeposit, customDeposit, t]);\n\n const onApprove = useCallback(async () => {\n if (submitting) return;\n setSubmitting(true);\n\n try {\n await approve(quantity);\n toast.success(t(\"transfer.deposit.approve.success\"));\n } catch (err: any) {\n console.error(\"approve error\", err);\n toast.error(\n err.message || err?.errorCode || t(\"transfer.deposit.approve.failed\"),\n );\n throw err;\n } finally {\n setSubmitting(false);\n }\n }, [approve, submitting, quantity, allowance, t]);\n\n const onApproveAndDeposit = useCallback(async () => {\n if (submitting) return;\n setSubmitting(true);\n\n try {\n await onApprove();\n await onDeposit();\n } catch (err) {\n console.error(\"approve and deposit error\", err);\n } finally {\n setSubmitting(false);\n }\n }, [submitting, onApprove, onDeposit]);\n\n return { submitting, onApprove, onDeposit, onApproveAndDeposit };\n}\n","import { useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { InputStatus } from \"../../../types\";\n\ntype Options = { quantity: string; maxQuantity: string | number };\n\nexport function useInputStatus(options: Options) {\n const { quantity, maxQuantity } = options;\n const { t } = useTranslation();\n\n return useMemo(() => {\n if (!quantity) {\n return { inputStatus: \"default\" as InputStatus, hintMessage: \"\" };\n }\n\n const qty = new Decimal(quantity);\n if (qty.gt(maxQuantity)) {\n return {\n inputStatus: \"error\" as InputStatus,\n hintMessage: t(\"transfer.insufficientBalance\"),\n };\n }\n\n return { inputStatus: \"default\" as InputStatus, hintMessage: \"\" };\n }, [quantity, maxQuantity, t]);\n}\n","import { useEffect, useRef, useState } from \"react\";\nimport { API, nativeTokenAddress } from \"@orderly.network/types\";\n\nconst retryInterval = 3000;\n\nexport function useNativeBalance(options: {\n fetchBalance: (token: string, decimal: number) => Promise<string>;\n targetChain?: API.Chain;\n}) {\n const { fetchBalance, targetChain } = options;\n const [balance, setBalance] = useState<string>();\n\n const timeoutRef = useRef<ReturnType<typeof setTimeout>>();\n\n const loopGetTokenBalance = async (timeout = 0) => {\n const decimal = targetChain?.network_infos?.currency_decimal;\n\n if (typeof fetchBalance !== \"function\" || !decimal) {\n return;\n }\n\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n timeoutRef.current = setTimeout(async () => {\n fetchBalance(nativeTokenAddress, decimal)\n .then((balance) => {\n console.log(\"native balance\", balance);\n setBalance(balance);\n })\n .catch((error) => {\n console.error(\"fetch native balance error\", error);\n loopGetTokenBalance(retryInterval);\n });\n }, timeout);\n };\n\n useEffect(() => {\n // get balance first, no timeout\n loopGetTokenBalance(0);\n\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n return balance;\n}\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useConfig } from \"@orderly.network/hooks\";\nimport { NetworkId, type API } from \"@orderly.network/types\";\nimport { getTokenByTokenList } from \"../../../utils\";\nimport type { CurrentChain } from \"./useChainSelect\";\n\nexport const useToken = (\n currentChain?: CurrentChain | null,\n filter: (token: API.TokenInfo) => boolean = () => true,\n) => {\n const [sourceToken, setSourceToken] = useState<API.TokenInfo>();\n const [targetToken, setTargetToken] = useState<API.TokenInfo>();\n\n const [sourceTokens, setSourceTokens] = useState<API.TokenInfo[]>([]);\n const [targetTokens, setTargetTokens] = useState<API.TokenInfo[]>([]);\n\n const sourceTokenUpdatedRef = useRef(false);\n\n const networkId = useConfig(\"networkId\") as NetworkId;\n\n // when chain changed and chain data ready then call this function init tokens\n const onChainInited = useCallback((chainInfo?: API.Chain) => {\n if (chainInfo && chainInfo?.token_infos?.length > 0) {\n // const tokens = chainInfo.token_infos.filter((i) => i.is_collateral);\n // all tokens available in the chain, include swap tokens\n const tokens = chainInfo.token_infos?.filter(filter);\n\n if (tokens?.length) {\n // sort tokens, USDC should be the first\n tokens.sort((a, b) => {\n if (a.symbol === \"USDC\") return -1;\n if (b.symbol === \"USDC\") return 1;\n return 0;\n });\n }\n\n const usdcToken = getTokenByTokenList(tokens);\n if (!usdcToken) {\n return;\n }\n setSourceToken(usdcToken);\n setTargetToken(usdcToken);\n\n setSourceTokens(tokens);\n setTargetTokens([usdcToken]);\n }\n }, []);\n\n useEffect(() => {\n onChainInited(currentChain?.info);\n // if settingChain is true, the currentChain will change, so use currentChain.id\n // TODO: confirm currentChain data is correct\n }, [currentChain, onChainInited]);\n\n useEffect(() => {\n if (!sourceToken || !sourceTokens.length) {\n return;\n }\n\n // USDC => USDC\n if (sourceToken.symbol === \"USDC\") {\n setTargetToken(sourceToken);\n setTargetTokens([sourceToken]);\n return;\n }\n\n const usdc = sourceTokens.find((t) => t.symbol === \"USDC\")!;\n\n // if is_collateral\n if (sourceToken.is_collateral) {\n // mainnet and swap_enable: [token] => [USDC,token]\n if (networkId === \"mainnet\" && sourceToken.swap_enable) {\n setTargetToken(sourceToken);\n setTargetTokens([sourceToken, usdc]);\n } else {\n // testnet: [token] => [token]\n setTargetToken(sourceToken);\n setTargetTokens([sourceToken]);\n }\n return;\n }\n\n // if swap token: [token] => [USDC]\n setTargetToken(usdc);\n setTargetTokens([usdc]);\n }, [networkId, sourceToken, sourceTokens]);\n\n const onSourceTokenChange = useCallback((token: API.TokenInfo) => {\n sourceTokenUpdatedRef.current = true;\n setSourceToken(token);\n }, []);\n\n useEffect(() => {\n sourceTokenUpdatedRef.current = false;\n }, [currentChain?.id]);\n\n return {\n sourceToken,\n targetToken,\n\n sourceTokens,\n targetTokens,\n\n onSourceTokenChange,\n setSourceToken,\n onTargetTokenChange: setTargetToken,\n sourceTokenUpdatedRef,\n };\n};\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport {\n useAccount,\n useConfig,\n useComputedLTV,\n useDeposit,\n useIndexPrice,\n useIndexPricesStream,\n useQuery,\n useTokenInfo,\n} from \"@orderly.network/hooks\";\nimport { useTranslation, Trans } from \"@orderly.network/i18n\";\nimport { account as accountPerp } from \"@orderly.network/perp\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport {\n API,\n NetworkId,\n ChainNamespace,\n isNativeTokenChecker,\n} from \"@orderly.network/types\";\nimport { useAuthGuard } from \"@orderly.network/ui-connector\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useNeedSwapAndCross } from \"../swap/hooks/useNeedSwapAndCross\";\nimport { useSwapDeposit } from \"../swap/hooks/useSwapDeposit\";\nimport {\n useActionType,\n useChainSelect,\n useDepositAction,\n useInputStatus,\n} from \"./hooks\";\nimport { useNativeBalance } from \"./hooks/useNativeBalance\";\nimport { useToken } from \"./hooks/useToken\";\n\nconst { collateralRatio, collateralContribution, calcMinimumReceived } =\n accountPerp;\n\nexport type DepositFormScriptReturn = ReturnType<typeof useDepositFormScript>;\n\nexport type DepositFormScriptOptions = {\n close?: () => void;\n};\n// swap to usdc precision is 3\nexport const SWAP_USDC_PRECISION = 3;\n\nexport const useDepositFormScript = (options: DepositFormScriptOptions) => {\n const { wrongNetwork } = useAppContext();\n const { t } = useTranslation();\n const { account } = useAccount();\n const networkId = useConfig(\"networkId\") as NetworkId;\n\n const [feeWarningMessage, setFeeWarningMessage] = useState(\"\");\n const [tokenBalances, setTokenBalances] = useState<Record<string, string>>(\n {},\n );\n\n const { chains, currentChain, settingChain, onChainChange } =\n useChainSelect();\n\n const {\n sourceToken,\n targetToken,\n sourceTokens,\n targetTokens,\n onSourceTokenChange,\n setSourceToken,\n onTargetTokenChange,\n sourceTokenUpdatedRef,\n } = useToken(currentChain);\n\n const { data: indexPrices, getIndexPrice } = useIndexPricesStream();\n\n const indexPrice = useMemo(() => {\n return getIndexPrice(sourceToken?.symbol ?? \"\") ?? 0;\n }, [sourceToken?.symbol, indexPrices]);\n\n const usdcToken = useMemo(() => {\n return sourceTokens?.find((item) => item.symbol === \"USDC\");\n }, [sourceTokens]);\n\n const {\n dst,\n balance,\n allowance,\n depositFeeRevalidating,\n depositFee,\n quantity,\n setQuantity,\n approve,\n deposit,\n isNativeToken,\n balanceRevalidating,\n fetchBalance,\n fetchBalances,\n targetChain,\n } = useDeposit({\n address: sourceToken?.address,\n decimals: sourceToken?.decimals,\n srcChainId: currentChain?.id,\n srcToken: sourceToken?.symbol,\n dstToken: targetToken?.symbol,\n crossChainRouteAddress:\n currentChain?.info?.network_infos?.cross_chain_router,\n depositorAddress: currentChain?.info?.network_infos?.depositor,\n });\n\n const maxQuantity = useMemo(\n () =>\n new Decimal(balance || 0)\n .todp(sourceToken?.precision ?? 2, Decimal.ROUND_DOWN)\n .toString(),\n [balance, sourceToken?.precision],\n );\n\n const maxDepositAmount = useMemo(() => {\n const balanceDecimal = new Decimal(balance || 0).todp(\n sourceToken?.precision ?? 2,\n Decimal.ROUND_DOWN,\n );\n\n // If user_max_qty is -1 or undefined, ignore it and use balance only\n // user_max_qty = 0 means no deposit allowed\n if (\n sourceToken?.user_max_qty === -1 ||\n sourceToken?.user_max_qty === undefined\n ) {\n return balanceDecimal.toString();\n }\n\n // user_max_qty = 0 means no deposit allowed\n if (sourceToken?.user_max_qty === 0) {\n return \"0\";\n }\n\n const userMaxQty = new Decimal(sourceToken.user_max_qty).todp(\n sourceToken?.precision ?? 2,\n Decimal.ROUND_DOWN,\n );\n\n return balanceDecimal.lt(userMaxQty)\n ? balanceDecimal.toString()\n : userMaxQty.toString();\n }, [balance, sourceToken?.precision, sourceToken?.user_max_qty]);\n\n const { inputStatus, hintMessage } = useInputStatus({\n quantity,\n maxQuantity,\n });\n\n const { needSwap, needCrossSwap } = useNeedSwapAndCross({\n srcToken: sourceToken,\n dstToken: targetToken,\n srcChainId: currentChain?.id,\n dstChainId: dst?.chainId,\n });\n\n const {\n cleanTransactionInfo,\n onSwapDeposit,\n swapRevalidating,\n\n swapPrice,\n markPrice,\n swapQuantity,\n swapFee,\n warningMessage: swapWarningMessage,\n slippage,\n onSlippageChange,\n } = useSwapDeposit({\n srcToken: sourceToken!,\n currentChain,\n dst,\n quantity,\n isNativeToken,\n depositFee,\n setQuantity,\n needSwap,\n needCrossSwap,\n });\n\n const [depositExceedLimitDetected, setDepositExceedLimitDetected] =\n useState(false);\n\n const cleanData = useCallback(() => {\n setQuantity(\"\");\n cleanTransactionInfo();\n setDepositExceedLimitDetected(false);\n }, [setQuantity, cleanTransactionInfo]);\n\n const onSuccess = useCallback(() => {\n cleanData();\n options.close?.();\n }, [cleanData, options.close]);\n\n const { submitting, onApprove, onDeposit, onApproveAndDeposit } =\n useDepositAction({\n quantity,\n allowance,\n approve,\n deposit,\n enableCustomDeposit: needSwap || needCrossSwap,\n customDeposit: onSwapDeposit,\n onSuccess: () => {\n setDepositExceedLimitDetected(false);\n onSuccess();\n },\n onError: (err, knownErrorMessage) => {\n const message =\n typeof (err as any)?.message === \"string\" ? (err as any).message : \"\";\n\n const isDepositExceedLimit =\n message.includes(\"0xd969df24\") ||\n message.includes(\"DepositExceedLimit\") ||\n (knownErrorMessage?.includes(\"DepositExceedLimit\") ?? false);\n\n if (isDepositExceedLimit) {\n setDepositExceedLimitDetected(true);\n }\n },\n });\n\n useEffect(() => {\n if (depositExceedLimitDetected) {\n setDepositExceedLimitDetected(false);\n }\n }, [quantity, sourceToken, currentChain?.id]);\n\n const globalMaxQtyMessage = useMemo(() => {\n if (\n sourceToken?.symbol === \"USDC\" ||\n sourceToken?.symbol !== targetToken?.symbol ||\n !sourceToken?.is_collateral ||\n !depositExceedLimitDetected\n ) {\n return \"\";\n }\n\n return (\n <Trans\n i18nKey=\"transfer.deposit.globalMaxQty.error\"\n values={{\n token: sourceToken?.symbol,\n chain: currentChain?.info?.network_infos?.name || \"\",\n }}\n components={[\n <a\n key=\"0\"\n href=\"https://orderly.network/docs/introduction/trade-on-orderly/multi-collateral#max-deposits-global\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"oui-text-primary\"\n />,\n ]}\n />\n );\n }, [\n depositExceedLimitDetected,\n sourceToken?.symbol,\n sourceToken?.is_collateral,\n targetToken?.symbol,\n currentChain,\n t,\n ]);\n\n const loading = submitting || depositFeeRevalidating!;\n\n const nativeSymbol = useMemo(() => {\n return currentChain?.info?.nativeToken?.symbol;\n }, [currentChain]);\n\n const fee = useDepositFee({\n nativeSymbol: nativeSymbol,\n depositFee,\n });\n\n const amount = useMemo(() => {\n const markPrice = 1;\n return new Decimal(quantity || 0).mul(markPrice).toNumber();\n }, [quantity]);\n\n const actionType = useActionType({\n isNativeToken,\n allowance,\n quantity,\n maxQuantity,\n });\n\n const isLoggedIn = useAuthGuard();\n\n const {\n collateralRatio,\n collateralContributionQuantity,\n currentLTV,\n nextLTV,\n } = useCollateralValue({\n tokens: sourceTokens,\n sourceToken,\n targetToken,\n qty: quantity,\n indexPrice,\n });\n\n const {\n ltv_threshold,\n negative_usdc_threshold,\n isLoading: isConvertThresholdLoading,\n } = useConvertThreshold();\n\n useEffect(() => {\n cleanData();\n }, [sourceToken, currentChain?.id]);\n\n useEffect(() => {\n if (\n quantity &&\n Number(quantity) > 0 &&\n depositFee === 0n &&\n !depositFeeRevalidating &&\n account.walletAdapter?.chainNamespace !== ChainNamespace.solana\n ) {\n setFeeWarningMessage(t(\"transfer.deposit.feeUnavailable\"));\n } else {\n setFeeWarningMessage(\"\");\n }\n }, [quantity, depositFee, depositFeeRevalidating, t, account]);\n\n const insufficientBalance = useMemo(() => {\n if (quantity && Number(quantity) > 0) {\n return new Decimal(quantity).gt(maxQuantity);\n }\n return false;\n }, [quantity, maxQuantity]);\n\n const insufficientNativeTotal = useMemo(() => {\n if (\n !isNativeToken ||\n !quantity ||\n Number(quantity) <= 0 ||\n depositFeeRevalidating ||\n insufficientBalance\n ) {\n return false;\n }\n\n const estimatedGasFee = new Decimal(fee.dstGasFee || 0);\n const totalNeeded = new Decimal(quantity).add(estimatedGasFee);\n\n return totalNeeded.gt(maxQuantity || 0);\n }, [\n isNativeToken,\n quantity,\n depositFeeRevalidating,\n insufficientBalance,\n fee.dstGasFee,\n maxQuantity,\n ]);\n\n const gasFeeMessage = useMemo(() => {\n if (insufficientNativeTotal) {\n return t(\"transfer.deposit.gasFee.error\", {\n token: sourceToken?.symbol,\n });\n }\n }, [insufficientNativeTotal, sourceToken?.symbol, t]);\n\n const nativeBalance = useNativeBalance({\n fetchBalance,\n targetChain,\n });\n\n const insufficientGasMessage = useMemo(() => {\n if (\n (nativeSymbol &&\n quantity &&\n Number(quantity) > 0 &&\n // when insufficient balance, the input status is error, so we don't need to check gas balance\n !insufficientBalance &&\n !depositFeeRevalidating &&\n (account.walletAdapter?.chainNamespace === ChainNamespace.solana ||\n fee.dstGasFee)) ||\n nativeBalance === undefined\n ) {\n const notEnoughGas = new Decimal(nativeBalance || 0).lt(fee.dstGasFee);\n\n // when solana, if fee.dstGasFee is 0, and nativeTokenBalance is 0, it means the balance is not balance\n const isNotSolBalance =\n Number(fee.dstGasFee) === 0 &&\n Number(nativeBalance) == Number(fee.dstGasFee);\n\n if (notEnoughGas || isNotSolBalance) {\n return t(\"transfer.deposit.notEnoughGas\", {\n token: nativeSymbol,\n });\n }\n }\n\n return \"\";\n }, [\n fee.dstGasFee,\n quantity,\n depositFeeRevalidating,\n t,\n nativeSymbol,\n insufficientBalance,\n account,\n nativeBalance,\n ]);\n\n const warningMessage =\n swapWarningMessage ||\n globalMaxQtyMessage ||\n gasFeeMessage ||\n feeWarningMessage ||\n insufficientGasMessage;\n\n const isExceedUserCapByInput = useMemo(() => {\n if (\n sourceToken?.symbol === \"USDC\" ||\n sourceToken?.symbol !== targetToken?.symbol ||\n !sourceToken?.is_collateral ||\n sourceToken?.user_max_qty === undefined ||\n sourceToken?.user_max_qty === -1 ||\n !quantity ||\n isNaN(Number(quantity))\n ) {\n return false;\n }\n\n return new Decimal(quantity).gt(sourceToken.user_max_qty);\n }, [sourceToken, targetToken, quantity]);\n\n const finalInputStatus =\n inputStatus === \"error\"\n ? inputStatus\n : isExceedUserCapByInput\n ? \"error\"\n : inputStatus;\n const finalHintMessage =\n inputStatus === \"error\"\n ? hintMessage\n : isExceedUserCapByInput\n ? t(\"transfer.deposit.exceedCap\")\n : hintMessage;\n\n const disabled =\n !quantity ||\n Number(quantity) === 0 ||\n !sourceToken ||\n inputStatus === \"error\" ||\n depositFeeRevalidating! ||\n swapRevalidating ||\n // if exceed collateral cap, disable deposit\n isExceedUserCapByInput ||\n !!feeWarningMessage ||\n !!insufficientNativeTotal ||\n !!insufficientGasMessage;\n\n const targetQuantity = useMemo(() => {\n if (needSwap) {\n return swapQuantity\n ? new Decimal(swapQuantity)\n ?.todp(SWAP_USDC_PRECISION, Decimal.ROUND_DOWN)\n .toString()\n : swapQuantity;\n }\n return quantity;\n }, [needSwap, swapQuantity, quantity]);\n\n // only swap deposit show minimum received\n const minimumReceived = useMemo(() => {\n if (!swapQuantity) {\n return \"-\";\n }\n return calcMinimumReceived({\n amount: Number(swapQuantity),\n slippage,\n });\n }, [swapQuantity, slippage]);\n\n const targetQuantityLoading = swapRevalidating;\n\n useEffect(() => {\n if (sourceTokens?.length > 0 && fetchBalances) {\n fetchBalances(sourceTokens)\n .then((balances) => {\n setTokenBalances(balances);\n })\n .catch((error) => {\n console.error(\"Failed to fetch balances:\", error);\n });\n }\n }, [sourceTokens]);\n\n const sortedSourceTokens = useMemo(() => {\n return sortTokens(sourceTokens, tokenBalances, getIndexPrice);\n }, [sourceTokens, tokenBalances]);\n\n useEffect(() => {\n if (!sourceTokenUpdatedRef.current && sortedSourceTokens?.[0]) {\n setSourceToken(sortedSourceTokens[0]);\n }\n }, [sortedSourceTokens]);\n\n return {\n sourceToken,\n targetToken,\n sourceTokens: sortedSourceTokens,\n targetTokens,\n onSourceTokenChange,\n onTargetTokenChange,\n\n amount,\n nativeSymbol,\n isNativeToken,\n quantity,\n collateralContributionQuantity,\n maxQuantity,\n maxDepositAmount,\n indexPrice,\n onQuantityChange: setQuantity,\n hintMessage: finalHintMessage,\n inputStatus: finalInputStatus,\n chains,\n currentChain,\n settingChain,\n onChainChange,\n actionType,\n onDeposit,\n onApprove,\n onApproveAndDeposit,\n fetchBalance,\n dst,\n wrongNetwork,\n balanceRevalidating,\n loading,\n disabled,\n networkId,\n fee,\n collateralRatio,\n currentLTV,\n nextLTV,\n ltv_threshold,\n negative_usdc_threshold,\n isConvertThresholdLoading,\n slippage,\n onSlippageChange,\n minimumReceived,\n usdcToken,\n\n needSwap,\n needCrossSwap,\n swapPrice,\n markPrice,\n swapFee,\n warningMessage,\n targetQuantity,\n targetQuantityLoading,\n tokenBalances,\n\n isLoggedIn,\n };\n};\n\nexport type UseDepositFeeReturn = ReturnType<typeof useDepositFee>;\n\nfunction useDepositFee(options: {\n nativeSymbol?: string;\n depositFee?: bigint;\n}) {\n const { nativeSymbol, depositFee = 0 } = options;\n const { account } = useAccount();\n\n const tokenInfo = useTokenInfo(nativeSymbol!);\n\n const { data: indexPrice } = useIndexPrice(`SPOT_${nativeSymbol}_USDC`);\n\n const feeProps = useMemo(() => {\n // deposit fee is native token, so decimals is 18\n const dstGasFee = new Decimal(depositFee.toString())\n // todo solana is 9, evm is 18\n .div(\n new Decimal(10).pow(\n account.walletAdapter?.chainNamespace === ChainNamespace.solana\n ? 9\n : 18,\n ),\n )\n .toString();\n\n const feeAmount = new Decimal(dstGasFee).mul(indexPrice || 0).toString();\n\n return {\n dstGasFee,\n feeQty: dstGasFee,\n feeAmount,\n // dp: feeDecimalsOffset(4),\n dp: tokenInfo?.decimals || 8,\n };\n }, [depositFee, indexPrice]);\n\n return feeProps;\n}\n\nconst useCollateralValue = (params: {\n tokens: API.TokenInfo[];\n sourceToken?: API.TokenInfo;\n targetToken?: API.TokenInfo;\n qty: string;\n indexPrice: number;\n}) => {\n const { sourceToken, targetToken, indexPrice } = params;\n\n const quantity = Number(params.qty);\n\n const memoizedCollateralRatio = useMemo(() => {\n return collateralRatio({\n baseWeight: targetToken?.base_weight ?? 0,\n discountFactor: targetToken?.discount_factor ?? 0,\n collateralQty: quantity,\n collateralCap: sourceToken?.user_max_qty ?? quantity,\n indexPrice,\n });\n }, [targetToken, quantity, sourceToken?.user_max_qty, indexPrice]);\n\n const collateralContributionQuantity = collateralContribution({\n collateralQty: quantity,\n collateralCap: sourceToken?.user_max_qty ?? quantity,\n collateralRatio: memoizedCollateralRatio.toNumber(),\n indexPrice,\n });\n\n const currentLtv = useComputedLTV();\n\n const nextLTV = useComputedLTV({\n input: quantity,\n token: sourceToken?.symbol,\n });\n\n return {\n collateralRatio: memoizedCollateralRatio.toNumber(),\n collateralContributionQuantity,\n currentLTV: currentLtv,\n nextLTV: nextLTV,\n indexPrice,\n };\n};\n\nconst useConvertThreshold = () => {\n const { data, error, isLoading } = useQuery<API.ConvertThreshold>(\n \"/v1/public/auto_convert_threshold\",\n {\n errorRetryCount: 3,\n },\n );\n return {\n ltv_threshold: data?.ltv_threshold,\n negative_usdc_threshold: data?.negative_usdc_threshold,\n isLoading,\n error,\n } as const;\n};\n\nconst sortTokens = (\n tokens: API.TokenInfo[] = [],\n tokenBalances: Record<string, string> = {},\n getIndexPrice: (token: string) => number,\n) => {\n const list = tokens.map((item) => {\n const indexPrice = getIndexPrice(item.symbol!);\n const balance = new Decimal(tokenBalances[item.symbol!] || 0)\n .mul(indexPrice || 1)\n .todp(item.precision || 2)\n .toNumber();\n\n return {\n ...item,\n balance,\n isNativeToken: isNativeTokenChecker(item.address!),\n };\n });\n\n return list.sort((a, b) => {\n const hasBalanceA = a.balance > 0;\n const hasBalanceB = b.balance > 0;\n\n // Tokens with balance come first\n if (hasBalanceA !== hasBalanceB) {\n return hasBalanceA ? -1 : 1;\n }\n\n // 1. USDC has highest priority\n if (a.symbol === \"USDC\" && b.symbol !== \"USDC\") return -1;\n if (b.symbol === \"USDC\" && a.symbol !== \"USDC\") return 1;\n\n // 2. USDC.e has second priority\n if (a.symbol === \"USDC.e\" && b.symbol !== \"USDC.e\") return -1;\n if (b.symbol === \"USDC.e\" && a.symbol !== \"USDC.e\") return 1;\n\n // 3. Native tokens have third priority\n if (a.isNativeToken && !b.isNativeToken) return -1;\n if (b.isNativeToken && !a.isNativeToken) return 1;\n\n // 4. If both have balance, sort by balance amount (high to low)\n if (hasBalanceA && hasBalanceB) {\n return b.balance - a.balance;\n }\n\n // 5. If both have no balance, sort alphabetically\n return (a.symbol || \"\").localeCompare(b.symbol || \"\");\n });\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n Box,\n Flex,\n InfoCircleIcon,\n textVariants,\n Text,\n TokenIcon,\n CaretDownIcon,\n Tooltip,\n modal,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { LtvWidget } from \"../LTV\";\nimport { ActionButton } from \"../actionButton\";\nimport { AvailableQuantity } from \"../availableQuantity\";\nimport { BrokerWallet } from \"../brokerWallet\";\nimport { ChainSelect } from \"../chainSelect\";\nimport { CollateralContribution } from \"../collateralContribution\";\nimport { CollateralRatioWidget } from \"../collateralRatio\";\nimport { ExchangeDivider } from \"../exchangeDivider\";\nimport { Fee } from \"../fee\";\nimport { MinimumReceived } from \"../minimumReceived\";\nimport { QuantityInput } from \"../quantityInput\";\nimport { Slippage } from \"../slippage\";\nimport { Notice } from \"../swap/components/notice\";\nimport { SwapFee } from \"../swap/components/swapFee\";\nimport { SwapCoin } from \"../swapCoin\";\nimport { SwapIndicator } from \"../swapIndicator\";\nimport { Web3Wallet } from \"../web3Wallet\";\nimport { YieldBearingReminder } from \"../yieldBearingReminder\";\nimport {\n SWAP_USDC_PRECISION,\n type DepositFormScriptReturn,\n} from \"./depositForm.script\";\n\nexport const DepositForm: FC<DepositFormScriptReturn> = (props) => {\n const {\n sourceToken,\n targetToken,\n sourceTokens,\n targetTokens,\n onSourceTokenChange,\n onTargetTokenChange,\n amount,\n quantity,\n collateralContributionQuantity,\n maxQuantity,\n maxDepositAmount,\n onQuantityChange,\n hintMessage,\n inputStatus,\n chains,\n currentChain,\n settingChain,\n onChainChange,\n actionType,\n onDeposit,\n onApprove,\n onApproveAndDeposit,\n fetchBalance,\n wrongNetwork,\n balanceRevalidating,\n loading,\n disabled,\n networkId,\n fee,\n collateralRatio,\n currentLTV,\n nextLTV,\n slippage,\n onSlippageChange,\n minimumReceived,\n needSwap,\n needCrossSwap,\n swapPrice,\n swapFee,\n warningMessage,\n usdcToken,\n targetQuantity,\n targetQuantityLoading,\n } = props;\n\n const { t } = useTranslation();\n\n const showRegularTokenRenderer =\n sourceToken?.user_max_qty !== undefined && sourceToken?.user_max_qty === -1;\n\n const { isMobile } = useScreen();\n\n const renderDepositCapTooltipContent = (tokenLabel: string) => (\n <Flex direction=\"column\" itemAlign=\"start\">\n <Text size=\"2xs\" weight=\"semibold\" intensity={36}>\n {t(\"transfer.depositCap.tooltip\")}\n <Text as=\"span\" size=\"2xs\" weight=\"semibold\" intensity={80}>\n {tokenLabel}.\n </Text>\n </Text>\n <a\n href=\"https://orderly.network/docs/introduction/trade-on-orderly/multi-collateral#max-deposits-user\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"oui-text-2xs oui-text-primary\"\n >\n {t(\"common.learnMore\")}\n </a>\n </Flex>\n );\n\n const tokenValueFormatter = (value: string) => (\n <Flex direction=\"column\" itemAlign=\"end\" gapY={1}>\n <Flex gapX={1} itemAlign=\"center\">\n <TokenIcon name={value} className=\"oui-size-[16px]\" />\n <Text weight=\"semibold\" intensity={54}>\n {value}\n </Text>\n <CaretDownIcon\n size={12}\n className=\"oui-text-base-contrast-54\"\n opacity={1}\n />\n </Flex>\n <Flex itemAlign=\"center\" className=\"oui-gap-[2px]\">\n <Text\n size=\"2xs\"\n intensity={36}\n weight=\"regular\"\n className=\"oui-leading-[10px]\"\n >\n {t(\"transfer.depositCap\", \"Deposit cap\")}{\" \"}\n <Text.numeral\n as=\"span\"\n size=\"2xs\"\n intensity={80}\n weight=\"regular\"\n className=\"oui-leading-[10px]\"\n dp={0}\n >\n {sourceToken?.user_max_qty?.toString() || \"0\"}\n </Text.numeral>\n </Text>\n {isMobile ? (\n <button\n type=\"button\"\n className=\"oui-flex oui-items-center\"\n onClick={(event) => {\n event.stopPropagation();\n modal.alert({\n title: t(\"common.tips\"),\n message: <Box>{renderDepositCapTooltipContent(value)}</Box>,\n });\n }}\n onMouseDown={(event) => {\n event.stopPropagation();\n }}\n onPointerDown={(event) => {\n event.stopPropagation();\n }}\n >\n <InfoCircleIcon\n className=\"oui-size-3 oui-shrink-0 oui-cursor-pointer\"\n opacity={0.36}\n />\n </button>\n ) : (\n <Tooltip\n content={\n <Box\n onMouseDown={(event) => {\n event.stopPropagation();\n }}\n onPointerDown={(event) => {\n event.stopPropagation();\n }}\n >\n {renderDepositCapTooltipContent(value)}\n </Box>\n }\n >\n <InfoCircleIcon\n className=\"oui-size-3 oui-shrink-0 oui-cursor-pointer\"\n opacity={0.36}\n />\n </Tooltip>\n )}\n </Flex>\n </Flex>\n );\n\n const renderContent = () => {\n if (needSwap || needCrossSwap) {\n return (\n <Flex direction=\"column\" itemAlign=\"start\" mt={1} gapY={1}>\n <Flex width={\"100%\"} itemAlign=\"center\" justify=\"between\">\n <Text size=\"2xs\" intensity={36}>\n {t(\"transfer.deposit.convertRate\")}\n </Text>\n <SwapCoin\n sourceSymbol={sourceToken?.display_name || sourceToken?.symbol}\n targetSymbol={targetToken?.display_name || targetToken?.symbol}\n precision={SWAP_USDC_PRECISION}\n indexPrice={swapPrice}\n />\n </Flex>\n <Slippage value={slippage} onValueChange={onSlippageChange} />\n <MinimumReceived\n value={minimumReceived}\n symbol={targetToken?.symbol ?? \"\"}\n precision={SWAP_USDC_PRECISION}\n />\n <SwapFee {...swapFee} />\n </Flex>\n );\n }\n\n return (\n <Flex direction=\"column\" itemAlign=\"start\" mt={2} gap={1}>\n <CollateralRatioWidget value={collateralRatio} />\n <CollateralContribution\n // it need to use USDC precision\n precision={usdcToken?.precision ?? 6}\n value={collateralContributionQuantity}\n />\n <LtvWidget\n showDiff={typeof quantity !== \"undefined\" && Number(quantity) > 0}\n currentLtv={currentLTV}\n nextLTV={nextLTV}\n />\n <Fee {...fee} nativeSymbol={props.nativeSymbol} />\n </Flex>\n );\n };\n\n return (\n <Box id=\"oui-deposit-form\" className={textVariants({ weight: \"semibold\" })}>\n <Box className=\"oui-mb-6 lg:oui-mb-8\">\n <Web3Wallet />\n <Box mt={3} mb={1}>\n <ChainSelect\n chains={chains}\n value={currentChain!}\n onValueChange={onChainChange}\n wrongNetwork={wrongNetwork}\n loading={settingChain}\n disabled={!props.isLoggedIn}\n />\n <QuantityInput\n classNames={{\n root: \"oui-mt-[2px] oui-rounded-t-sm oui-rounded-b-xl\",\n }}\n value={quantity}\n onValueChange={onQuantityChange}\n token={sourceToken}\n tokens={sourceTokens}\n onTokenChange={onSourceTokenChange}\n status={inputStatus}\n hintMessage={hintMessage}\n fetchBalance={fetchBalance}\n tokenBalances={props.tokenBalances}\n tokenShowCaret={showRegularTokenRenderer}\n tokenValueFormatter={\n showRegularTokenRenderer ? undefined : tokenValueFormatter\n }\n data-testId=\"oui-testid-deposit-dialog-quantity-input\"\n disabled={!props.isLoggedIn}\n />\n </Box>\n\n <AvailableQuantity\n token={sourceToken}\n amount={amount}\n maxQuantity={maxQuantity}\n loading={balanceRevalidating}\n onClick={() => {\n onQuantityChange(maxDepositAmount);\n }}\n />\n\n {/* Yield-bearing collateral reminder */}\n <YieldBearingReminder\n symbol={targetToken?.symbol}\n className=\"oui-mt-3\"\n />\n\n <ExchangeDivider />\n\n <BrokerWallet />\n\n <QuantityInput\n readOnly\n token={targetToken}\n tokens={targetTokens}\n onTokenChange={onTargetTokenChange}\n value={targetQuantity}\n loading={targetQuantityLoading}\n classNames={{\n root: \"oui-mt-3 oui-border-transparent focus-within:oui-outline-transparent\",\n }}\n disabled={!props.isLoggedIn}\n />\n {renderContent()}\n </Box>\n\n <SwapIndicator\n sourceToken={sourceToken?.symbol}\n targetToken={targetToken?.symbol}\n className=\"oui-mb-3\"\n />\n\n <Notice\n message={warningMessage}\n needSwap={needSwap}\n needCrossSwap={needCrossSwap}\n wrongNetwork={wrongNetwork}\n networkId={networkId}\n />\n\n <Flex justify=\"center\">\n <ActionButton\n actionType={actionType}\n symbol={sourceToken?.symbol}\n disabled={disabled}\n loading={loading}\n onDeposit={onDeposit}\n onApprove={onApprove}\n onApproveAndDeposit={onApproveAndDeposit}\n networkId={networkId}\n />\n </Flex>\n </Box>\n );\n};\n","import { FC } from \"react\";\nimport {\n useDepositFormScript,\n DepositFormScriptOptions,\n} from \"./depositForm.script\";\nimport { DepositForm } from \"./depositForm.ui\";\n\nexport type DepositFormWidgetProps = DepositFormScriptOptions;\n\nexport const DepositFormWidget: FC<DepositFormWidgetProps> = (props) => {\n const state = useDepositFormScript(props);\n return <DepositForm {...state} />;\n};\n","import { useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n Box,\n Checkbox,\n cn,\n Flex,\n Text,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n DropdownMenuPortal,\n DropdownMenuContent,\n} from \"@orderly.network/ui\";\nimport { InputStatus } from \"../../types\";\nimport type { AccountInfo } from \"../withdrawForm/hooks/useWithdrawAccountId\";\n\nexport type TextAreaInputProps = {\n value: string;\n onChange: (value: string) => void;\n status?: InputStatus;\n hintMessage?: string;\n placeholder?: string;\n className?: string;\n label: string;\n disabled?: boolean;\n enableAccountLookup?: boolean;\n accountInfo?: AccountInfo | null;\n accountDropdownOpen?: boolean;\n setAccountDropdownOpen?: (open: boolean) => void;\n};\n\nexport const TextAreaInput = (props: TextAreaInputProps) => {\n const { t } = useTranslation();\n const {\n value,\n onChange,\n status,\n hintMessage,\n placeholder,\n label,\n enableAccountLookup,\n accountInfo,\n accountDropdownOpen,\n setAccountDropdownOpen,\n } = props;\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const [selectedAccount, setSelectedAccount] = useState<AccountInfo | null>(\n null,\n );\n\n const displayStatus: InputStatus | undefined = status;\n const displayHint = hintMessage;\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const nextValue = e.target.value;\n if (selectedAccount) {\n setSelectedAccount(null);\n }\n onChange?.(nextValue);\n\n // auto adjust height\n const textarea = textareaRef.current;\n if (textarea) {\n textarea.style.height = \"auto\";\n textarea.style.height = `${textarea.scrollHeight}px`;\n }\n };\n\n useEffect(() => {\n const textarea = textareaRef.current;\n if (textarea) {\n textarea.style.height = \"auto\";\n textarea.style.height = `${textarea.scrollHeight}px`;\n }\n }, [value, selectedAccount?.address]);\n\n const prefix = (\n <div className=\"oui-absolute oui-left-3 oui-top-0.5 oui-z-[1]\">\n <Text size=\"2xs\" intensity={36}>\n {label}\n </Text>\n </div>\n );\n\n const message = (\n <Flex mb={1} gapX={1} px={1}>\n <Box\n width={4}\n height={4}\n r=\"full\"\n className={cn(\n displayStatus === \"error\" && \"oui-bg-danger-light\",\n displayStatus === \"warning\" && \"oui-bg-warning-light\",\n )}\n ></Box>\n <Text\n size=\"2xs\"\n className={cn(\n displayStatus === \"error\" && \"oui-text-danger-light\",\n displayStatus === \"warning\" && \"oui-text-warning-light\",\n )}\n >\n {displayHint}\n </Text>\n </Flex>\n );\n\n const textareaNode = (\n <div className=\"oui-relative\">\n {prefix}\n <div\n className={cn(\n \"oui-relative oui-w-full oui-rounded-lg oui-border oui-border-line oui-mb-1\",\n \"oui-bg-base-5 oui-text-sm oui-text-base-contrast\",\n \"focus-within:oui-border-primary-light\",\n displayStatus === \"error\" &&\n \"oui-border-danger-light focus-within:oui-border-danger-light\",\n displayStatus === \"warning\" &&\n \"oui-border-warning-light focus-within:oui-border-warning-light\",\n \"disabled:oui-cursor-not-allowed\",\n )}\n >\n <textarea\n ref={textareaRef}\n placeholder={placeholder}\n className={cn(\n // hide resize height control and scrollbar\n \"oui-resize-none oui-overflow-y-hidden\",\n \"oui-block oui-w-full oui-bg-transparent\",\n \"oui-px-3 oui-pt-5\",\n selectedAccount?.address ? \"oui-pb-0\" : \"oui-pb-2\",\n \"oui-text-sm oui-text-base-contrast\",\n \"oui-rounded-lg oui-outline-none\",\n \"placeholder:oui-text-base-contrast-20\",\n props.className,\n )}\n rows={1}\n value={value}\n onChange={handleChange}\n onFocus={() => {\n if (accountInfo) {\n setAccountDropdownOpen?.(true);\n }\n }}\n disabled={props.disabled}\n />\n {selectedAccount?.address && (\n <div className=\"oui-flex oui-items-center oui-justify-between oui-px-3 oui-pb-2 oui-pt-1\">\n <Text\n size=\"2xs\"\n intensity={36}\n className=\"oui-truncate oui-leading-[15px]\"\n >\n ({t(\"common.address\")}:{\" \"}\n <Text.formatted as=\"span\" rule=\"address\" range={[6, 4]}>\n {selectedAccount.address}\n </Text.formatted>\n )\n </Text>\n </div>\n )}\n {enableAccountLookup && (\n <DropdownMenuTrigger asChild>\n <span className=\"oui-absolute oui-left-0 oui-bottom-0 oui-w-0 oui-h-0\" />\n </DropdownMenuTrigger>\n )}\n </div>\n </div>\n );\n\n if (!enableAccountLookup) {\n return (\n <div className=\"oui-relative\">\n {textareaNode}\n {displayHint && message}\n </div>\n );\n }\n\n return (\n <DropdownMenuRoot\n open={!!(accountInfo && accountDropdownOpen)}\n onOpenChange={(open) => {\n if (!open) {\n setAccountDropdownOpen?.(false);\n }\n }}\n >\n {textareaNode}\n {displayHint && message}\n <DropdownMenuTrigger asChild>\n <span className=\"oui-invisible oui-w-0 oui-h-0 oui-overflow-hidden\" />\n </DropdownMenuTrigger>\n {accountInfo && accountDropdownOpen && (\n <DropdownMenuPortal>\n <DropdownMenuContent\n align=\"start\"\n className={cn(\n \"oui-bg-base-8\",\n \"oui-rounded-md oui-shadow-lg\",\n \"oui--mt-1 oui-w-[378px] oui-p-1\",\n )}\n {...({\n onOpenAutoFocus: (event: any) => event.preventDefault(),\n } as any)}\n >\n <AccountResultItem\n item={accountInfo}\n disabled={props.disabled}\n selected={\n !!selectedAccount &&\n selectedAccount.accountId === accountInfo.accountId\n }\n onSelect={(account) => {\n onChange?.(account.accountId);\n setSelectedAccount(account);\n setAccountDropdownOpen?.(false);\n }}\n />\n </DropdownMenuContent>\n </DropdownMenuPortal>\n )}\n </DropdownMenuRoot>\n );\n};\n\ntype AccountResultItemProps = {\n item: AccountInfo;\n disabled?: boolean;\n selected?: boolean;\n onSelect: (account: AccountInfo) => void;\n};\n\nconst AccountResultItem = ({\n item,\n disabled,\n selected,\n onSelect,\n}: AccountResultItemProps) => {\n const { t } = useTranslation();\n return (\n <div\n className={cn(\n \"oui-flex oui-w-full oui-items-center oui-justify-between\",\n \"oui-gap-1.5 oui-rounded-[4px] oui-px-2 oui-py-1.5\",\n \"oui-cursor-pointer hover:oui-bg-base-5\",\n disabled && \"oui-cursor-not-allowed oui-opacity-50\",\n )}\n onClick={() => !disabled && onSelect(item)}\n >\n <div className=\"oui-flex oui-flex-col oui-items-start oui-gap-0.5\">\n <Text\n size=\"sm\"\n intensity={54}\n weight=\"semibold\"\n className=\"oui-tracking-wide\"\n >\n {t(\"common.accountId\")}:{\" \"}\n <Text.formatted\n rule=\"address\"\n range={[6, 4]}\n as=\"span\"\n className=\"oui-text-primary-light\"\n >\n {item.accountId}\n </Text.formatted>\n </Text>\n <Text size=\"2xs\" intensity={36}>\n ({item.address})\n </Text>\n </div>\n <Checkbox checked={!!selected} />\n </div>\n );\n};\n","import { ReactNode } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n ExclamationFillIcon,\n Flex,\n modal,\n Text,\n Tooltip,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { RefreshIcon } from \"../../icons\";\n\ntype UnsettlePnlInfoProps = {\n hasPositions: boolean;\n unsettledPnl?: number;\n onSettlePnl: () => Promise<any>;\n tooltipContent?: ReactNode;\n dialogContent?: ReactNode;\n};\n\nexport const UnsettlePnlInfo = (props: UnsettlePnlInfoProps) => {\n const {\n hasPositions,\n unsettledPnl,\n onSettlePnl,\n tooltipContent,\n dialogContent,\n } = props;\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n\n const renderUnsettledLabel = () => {\n return (\n <Flex itemAlign=\"center\" justify=\"start\" gap={1}>\n <ExclamationFillIcon size={14} className=\"oui-text-warning-darken\" />\n <Text className=\"oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12\">\n {`${t(\"settle.unsettled\")}:`}\n </Text>\n </Flex>\n );\n };\n\n if (unsettledPnl === 0 && !hasPositions) {\n return <></>;\n }\n\n const settlePnlDialog = () => {\n modal.confirm({\n title: t(\"settle.settlePnl\"),\n content: dialogContent,\n onOk: () => {\n return onSettlePnl();\n },\n });\n };\n\n return (\n <Flex justify=\"between\" className=\"oui-text-2xs oui-text-base-contrast-36\">\n <Flex itemAlign=\"center\" justify=\"start\" gap={1}>\n {tooltipContent ? (\n isMobile ? (\n <button\n type=\"button\"\n className=\"oui-p-0\"\n onClick={() => {\n modal.alert({\n title: t(\"common.tips\"),\n message: tooltipContent,\n });\n }}\n >\n {renderUnsettledLabel()}\n </button>\n ) : (\n <Tooltip\n className=\"oui-max-w-[274px] oui-font-semibold\"\n content={tooltipContent as any}\n >\n {renderUnsettledLabel()}\n </Tooltip>\n )\n ) : (\n renderUnsettledLabel()\n )}\n <Text.numeral\n showIdentifier\n coloring\n weight=\"semibold\"\n dp={6}\n data-testid=\"oui-testid-withdraw-dialog-unsettledPnl-value\"\n >\n {unsettledPnl ?? \"--\"}\n </Text.numeral>\n <Text>USDC</Text>\n </Flex>\n <Flex itemAlign=\"center\" gap={1} className=\"oui-cursor-pointer\">\n <RefreshIcon className=\"oui-text-primary\" />\n <Text\n data-testid=\"oui-testid-withdraw-dialog-settle-text\"\n size=\"2xs\"\n color=\"primary\"\n className=\" oui-select-none\"\n onClick={settlePnlDialog}\n >\n {t(\"common.settle\")}\n </Text>\n </Flex>\n </Flex>\n );\n};\n","import { Box, ChainIcon, Flex, Text } from \"@orderly.network/ui\";\nimport { useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\ninterface IProps {\n currentChain: any;\n amount: number;\n address: string;\n}\n\nexport const CrossWithdrawConfirm = ({\n address,\n amount,\n currentChain,\n}: IProps) => {\n const { t } = useTranslation();\n\n const networkName = useMemo(() => {\n if (currentChain && currentChain.info && currentChain.info.network_infos) {\n return currentChain.info.network_infos.name;\n }\n return undefined;\n }, [currentChain]);\n\n return (\n <Flex\n direction=\"column\"\n itemAlign=\"start\"\n justify=\"start\"\n className=\"oui-gap-1 lg:oui-gap-3\"\n >\n <Flex\n direction=\"column\"\n itemAlign=\"start\"\n mb={5}\n className=\"oui-gap-3 lg:oui-gap-4\"\n >\n <Flex direction=\"column\" justify=\"start\" itemAlign=\"start\">\n <Text size=\"2xs\" intensity={36}>\n {t(\"transfer.withdraw.crossChain.recipientAddress\")}\n </Text>\n <Text size=\"sm\" intensity={98} className=\"oui-break-all\">\n {address}\n </Text>\n </Flex>\n <Flex direction=\"column\" justify=\"start\" itemAlign=\"start\">\n <Text size=\"2xs\" intensity={36}>\n {t(\"transfer.withdraw.crossChain.recipientNetwork\")}\n </Text>\n <Flex gap={1}>\n <ChainIcon\n className=\"oui-h-[18px] oui-w-[18px]\"\n size={\"sm\"}\n chainId={currentChain.id}\n />\n\n <Text size=\"sm\" intensity={98}>\n {networkName}\n </Text>\n </Flex>\n </Flex>\n <Flex direction=\"column\" justify=\"start\" itemAlign=\"start\">\n <Text size=\"2xs\" intensity={36}>\n {`${t(\"transfer.withdraw.crossChain.withdrawAmount\")} (USDC)`}\n </Text>\n <Text.numeral size=\"sm\" intensity={98} dp={2}>\n {amount}\n </Text.numeral>\n </Flex>\n </Flex>\n <Flex\n justify=\"center\"\n className=\"oui-text-warning-darken oui-text-2xs lg:oui-text-xs oui-text-center\"\n mb={3}\n >\n {t(\"transfer.withdraw.crossChain.warning\")}\n </Flex>\n </Flex>\n );\n};\n","import { Button, ButtonProps, Flex, modal, toast } from \"@orderly.network/ui\";\nimport { ChainSelectorDialogId } from \"@orderly.network/ui-chain-selector\";\nimport { NetworkId } from \"@orderly.network/types\";\nimport { useTranslation } from \"@orderly.network/i18n\";\ninterface IProps {\n networkId?: NetworkId;\n size: ButtonProps[\"size\"];\n}\n\nexport default function SwitchChainButton(props: IProps) {\n const { t } = useTranslation();\n\n const switchChain = () => {\n modal\n .show<{\n wrongNetwork: boolean;\n }>(ChainSelectorDialogId, {\n networkId: props.networkId,\n bridgeLessOnly: true,\n })\n .then(\n (r) => {\n toast.success(t(\"connector.networkSwitched\"));\n },\n (error) => console.log(\"[switchChain error]\", error)\n );\n };\n\n return (\n <Flex direction={\"column\"}>\n <Button\n color=\"warning\"\n size={props.size}\n fullWidth\n onClick={() => {\n switchChain();\n }}\n >\n {t(\"connector.switchNetwork\")}\n </Button>\n </Flex>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { AccountStatusEnum, NetworkId } from \"@orderly.network/types\";\nimport { Box, Button, modal } from \"@orderly.network/ui\";\nimport { AuthGuard } from \"@orderly.network/ui-connector\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { WithdrawTo } from \"../../types\";\nimport { CrossWithdrawConfirm } from \"../crossWithdrawConfirm\";\nimport SwitchChainButton from \"./SwitchChainButton\";\n\ninterface IProps {\n disabled?: boolean;\n loading?: boolean;\n onWithdraw: () => Promise<void>;\n networkId?: NetworkId;\n crossChainWithdraw: boolean;\n address?: string;\n currentChain?: any;\n quantity: string;\n fee: number;\n checkIsBridgeless: boolean;\n withdrawTo: WithdrawTo;\n onTransfer: () => void;\n}\n\nexport const WithdrawAction = (props: IProps) => {\n const {\n disabled,\n loading,\n onWithdraw,\n networkId,\n crossChainWithdraw,\n address,\n currentChain,\n quantity,\n fee,\n checkIsBridgeless,\n onTransfer,\n } = props;\n const { t } = useTranslation();\n\n const amount = useMemo(() => {\n if (!quantity) {\n return 0;\n }\n return new Decimal(quantity).minus(fee ?? 0).toNumber();\n }, [quantity, fee]);\n\n const preWithdraw = () => {\n if (crossChainWithdraw) {\n modal.confirm({\n title: t(\"transfer.withdraw.crossChain.confirmWithdraw\"),\n content: (\n <CrossWithdrawConfirm\n address={address!}\n amount={amount}\n currentChain={currentChain}\n />\n ),\n classNames: {\n content: \"oui-font-semibold\",\n body: \"!oui-pb-0\",\n footer: \"!oui-pt-0\",\n },\n\n onOk: async () => {\n onWithdraw();\n },\n });\n return;\n }\n onWithdraw();\n };\n\n const buttonSize = { initial: \"md\", lg: \"lg\" } as const;\n\n const renderButton = () => {\n if (props.withdrawTo === WithdrawTo.Account) {\n return (\n <Button\n fullWidth\n disabled={disabled}\n loading={loading}\n onClick={onTransfer}\n size={buttonSize}\n >\n {t(\"common.withdraw\")}\n </Button>\n );\n }\n\n if (checkIsBridgeless) {\n return (\n <Button\n data-testid=\"oui-testid-withdraw-dialog-withdraw-btn\"\n fullWidth\n disabled={disabled}\n loading={loading}\n onClick={preWithdraw}\n size={buttonSize}\n >\n {t(\"common.withdraw\")}\n </Button>\n );\n }\n return <SwitchChainButton networkId={networkId} size={buttonSize} />;\n };\n\n return (\n <Box className=\"oui-w-full lg:oui-w-auto lg:oui-min-w-[184px]\">\n <AuthGuard\n status={AccountStatusEnum.EnableTrading}\n networkId={networkId}\n bridgeLessOnly\n buttonProps={{ fullWidth: true, size: buttonSize }}\n >\n {renderButton()}\n </AuthGuard>\n </Box>\n );\n};\n","import React from \"react\";\nimport { useAccount } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { Flex } from \"@orderly.network/ui\";\n\ninterface WarningMessageProps {\n crossChainTrans: boolean;\n checkIsBridgeless: boolean;\n qtyGreaterThanMaxAmount: boolean;\n message?: string;\n}\n\nexport const WithdrawWarningMessage: React.FC<WarningMessageProps> = (\n props,\n) => {\n const { crossChainTrans, qtyGreaterThanMaxAmount } = props;\n const { t } = useTranslation();\n const { state } = useAccount();\n\n const renderContent = () => {\n if (state.status === AccountStatusEnum.NotConnected) {\n return null;\n }\n if (crossChainTrans) {\n return t(\"transfer.withdraw.crossChain.process\");\n }\n if (qtyGreaterThanMaxAmount) {\n return t(\"transfer.insufficientBalance\");\n }\n\n return props.message;\n };\n\n const content = renderContent();\n\n if (!content) {\n return null;\n }\n\n return (\n <Flex\n my={4}\n className=\"oui-justify-center oui-text-center oui-text-xs oui-text-warning-darken\"\n >\n {content}\n </Flex>\n );\n};\n","import { useMemo } from \"react\";\nimport {\n useAccount,\n useEventEmitter,\n usePositionStream,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { toast } from \"@orderly.network/ui\";\n\nexport type SettlePnlOptions = {\n accountId?: string;\n};\n\nexport const useSettlePnl = (options?: SettlePnlOptions) => {\n const { accountId } = options || {};\n const { t } = useTranslation();\n const ee = useEventEmitter();\n const { account, state } = useAccount();\n const [positionData] = usePositionStream();\n\n const hasPositions = useMemo(\n () => !!positionData?.rows?.length,\n [positionData],\n );\n\n const onSettlePnl = async () => {\n const isSubAccount = accountId && state.mainAccountId !== accountId;\n const settleFn = isSubAccount\n ? account.settleSubAccount({ subAccountId: accountId })\n : account.settle({ accountId });\n return settleFn\n .then((res) => {\n toast.success(t(\"settle.settlement.requested\"));\n return Promise.resolve(res);\n })\n .catch((e) => {\n if (e.code == -1104) {\n toast.error(t(\"settle.settlement.error\"));\n } else if (\n e.message.indexOf(\n \"Signing off chain messages with Ledger is not yet supported\",\n ) !== -1\n ) {\n ee.emit(\"wallet:sign-message-with-ledger-error\", {\n message: e.message,\n userAddress: account.address,\n });\n } else if (e.message.indexOf(\"user rejected\") !== -1) {\n toast.error(t(\"transfer.rejectTransaction\"));\n } else {\n toast.error(e.message);\n return Promise.reject(e);\n }\n });\n };\n\n return {\n hasPositions,\n onSettlePnl,\n };\n};\n","import { useMemo } from \"react\";\nimport { useQuery } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API } from \"@orderly.network/types\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { WithdrawTo } from \"../../../types\";\nimport { CurrentChain } from \"../../depositForm/hooks\";\n\n// CCTP (Cross-Chain Transfer Protocol) Supported AVAX, ETH, POL, ARB, OP, BASE, SEI\nconst cctpSupportedChains = [43114, 1, 137, 42161, 10, 8453, 1329];\n// CCTP Supported Tokens\nconst cctpSupportedTokens = [\"USDC\"];\n\nexport const useVaultBalance = (inputs: {\n currentChain?: CurrentChain | null;\n sourceToken?: API.TokenInfo;\n withdrawTo: WithdrawTo;\n quantity: string;\n qtyGreaterThanMaxAmount: boolean;\n}) => {\n const {\n currentChain,\n sourceToken,\n withdrawTo,\n quantity,\n qtyGreaterThanMaxAmount,\n } = inputs;\n\n const { t } = useTranslation();\n\n const { data: vaultBalanceData } = useQuery<API.VaultBalance[]>(\n `/v1/public/vault_balance`,\n {\n revalidateOnMount: true,\n errorRetryCount: 3,\n },\n );\n\n const vaultBalanceList = useMemo(() => {\n if (\n withdrawTo === WithdrawTo.Account ||\n !currentChain ||\n !Array.isArray(vaultBalanceData)\n ) {\n return [];\n }\n return vaultBalanceData.filter(\n (item) => Number.parseInt(item.chain_id) === currentChain?.id,\n );\n }, [vaultBalanceData, currentChain, withdrawTo]);\n\n const chainVaultBalance = useMemo(() => {\n const vaultBalance = vaultBalanceList?.find(\n (item) => item.token === sourceToken?.symbol,\n );\n return vaultBalance?.balance;\n }, [vaultBalanceList, sourceToken]);\n\n const qtyGreaterThanVault = useMemo<boolean>(() => {\n if (\n !quantity ||\n Number.isNaN(quantity) ||\n !chainVaultBalance ||\n Number.isNaN(chainVaultBalance)\n ) {\n return false;\n }\n\n return new Decimal(quantity).gt(chainVaultBalance);\n }, [quantity, chainVaultBalance, withdrawTo]);\n\n const crossChainWithdraw = useMemo(() => {\n const canCCTP =\n currentChain?.id && sourceToken?.symbol\n ? cctpSupportedChains.includes(currentChain?.id) &&\n cctpSupportedTokens.includes(sourceToken?.symbol)\n : false;\n\n return qtyGreaterThanVault && canCCTP && !qtyGreaterThanMaxAmount;\n }, [qtyGreaterThanVault, qtyGreaterThanMaxAmount, currentChain, sourceToken]);\n\n const chainName = useMemo(() => {\n if (currentChain && currentChain.info && currentChain.info.network_infos) {\n return currentChain.info.network_infos.name;\n }\n return \"\";\n }, [currentChain]);\n\n const vaultBalanceMessage = useMemo(() => {\n if (qtyGreaterThanVault && !crossChainWithdraw && chainName) {\n return t(\"transfer.withdraw.vaultWarning\", {\n tokenName: sourceToken?.symbol!,\n chainName: chainName,\n balance: chainVaultBalance,\n });\n }\n return \"\";\n }, [\n qtyGreaterThanVault,\n crossChainWithdraw,\n chainName,\n sourceToken,\n chainVaultBalance,\n ]);\n\n const vaultBalanceListFilterCCTP = useMemo(() => {\n if (cctpSupportedChains.includes(currentChain?.id!)) {\n return vaultBalanceList?.filter(\n (item) => !cctpSupportedTokens.includes(item.token),\n );\n }\n return vaultBalanceList;\n }, [vaultBalanceList, currentChain]);\n\n return {\n vaultBalanceList: vaultBalanceListFilterCCTP,\n // chainVaultBalance,\n // if the token is cross chain withdraw supported, the qtyGreaterThanVault will be false\n qtyGreaterThanVault: qtyGreaterThanVault && !crossChainWithdraw,\n crossChainWithdraw,\n vaultBalanceMessage,\n };\n};\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport {\n useConfig,\n useDebouncedCallback,\n useInternalTransfer,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { toast } from \"@orderly.network/ui\";\nimport { InputStatus } from \"../../../types\";\nimport { checkIsAccountId, getTransferErrorMessage } from \"../../../utils\";\nimport { validateWalletAddress } from \"../withdrawForm.script\";\n\ntype InternalWithdrawOptions = {\n token: string;\n decimals: number;\n quantity: string;\n setQuantity: (quantity: string) => void;\n close?: () => void;\n setLoading: (loading: boolean) => void;\n};\n\nexport type AccountInfo = {\n accountId: string;\n address: string;\n};\n\nexport function useWithdrawAccountId(options: InternalWithdrawOptions) {\n const { token, quantity, setQuantity, close, setLoading, decimals } = options;\n const { t } = useTranslation();\n const [toAccountId, setToAccountId] = useState<string>(\"\");\n const [inputStatus, setInputStatus] = useState<InputStatus>(\"default\");\n const [hintMessage, setHintMessage] = useState<string>();\n const [accountInfo, setAccountInfo] = useState<AccountInfo | null>(null);\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const latestLookupInputRef = useRef<string>(\"\");\n\n const config = useConfig();\n const brokerId = config.get(\"brokerId\") as string | undefined;\n const apiBaseUrl = config.get(\"apiBaseUrl\") as string | undefined;\n\n const { transfer, submitting } = useInternalTransfer();\n\n const onTransfer = useCallback(() => {\n const num = Number(quantity);\n\n if (Number.isNaN(num) || num <= 0) {\n toast.error(t(\"transfer.quantity.invalid\"));\n return;\n }\n\n if (submitting || !toAccountId) {\n return;\n }\n setLoading(true);\n\n transfer({\n token,\n receiver: toAccountId,\n amount: quantity,\n decimals,\n })\n .then(() => {\n toast.success(t(\"transfer.internalTransfer.success\"));\n setQuantity(\"\");\n close?.();\n })\n .catch((err) => {\n console.log(\"transfer error\", err);\n const errorMsg = getTransferErrorMessage(err.code);\n toast.error(errorMsg);\n })\n .finally(() => {\n setLoading(false);\n });\n }, [t, quantity, token, submitting, toAccountId, transfer]);\n\n useEffect(() => {\n if (!toAccountId) {\n setInputStatus(\"default\");\n setHintMessage(\"\");\n setAccountInfo(null);\n setIsDropdownOpen(false);\n return;\n }\n\n if (checkIsAccountId(toAccountId)) {\n setInputStatus(\"default\");\n setHintMessage(\"\");\n return;\n }\n }, [toAccountId]);\n\n const walletLookup = async (\n input: string,\n network?: \"EVM\" | \"SOL\",\n ): Promise<AccountInfo | null> => {\n if (!network || !brokerId) return null;\n\n const chainType = network;\n const res = await fetch(\n `${apiBaseUrl}/v1/get_account?address=${encodeURIComponent(\n input,\n )}&broker_id=${encodeURIComponent(\n brokerId,\n )}&chain_type=${encodeURIComponent(chainType)}`,\n );\n const json = await res.json();\n\n if (res.ok && json?.success && json?.data?.account_id) {\n return {\n accountId: json.data.account_id,\n address: input,\n };\n }\n\n return null;\n };\n\n const accountLookup = async (input: string): Promise<AccountInfo | null> => {\n const res = await fetch(\n `${apiBaseUrl}/v1/public/account?account_id=${encodeURIComponent(input)}`,\n );\n const json = await res.json();\n\n if (\n res.ok &&\n json?.success &&\n json?.data?.address &&\n (!brokerId || json.data.broker_id === brokerId)\n ) {\n return {\n accountId: input,\n address: json.data.address,\n };\n }\n\n if (res.ok && json?.success && brokerId) {\n console.log(\n \"This account belongs to a different broker and cannot be used here.\",\n );\n }\n\n return null;\n };\n\n const performLookup = useCallback(\n async (rawInput: string) => {\n const input = rawInput.trim();\n\n if (!input || input !== latestLookupInputRef.current) {\n return;\n }\n\n const { valid, network } = validateWalletAddress(input);\n\n try {\n let resolved: AccountInfo | null = null;\n\n if (valid) {\n resolved = await walletLookup(input, network);\n } else {\n resolved = await accountLookup(input);\n }\n\n if (!resolved) {\n setAccountInfo(null);\n setIsDropdownOpen(false);\n setInputStatus(\"error\");\n setHintMessage(t(\"transfer.withdraw.accountId.invalid\"));\n } else {\n setAccountInfo(resolved);\n setIsDropdownOpen(true);\n setInputStatus(\"default\");\n setHintMessage(\"\");\n }\n } catch (error) {\n console.log(\"Failed to search account. Please try again.\", error);\n setAccountInfo(null);\n setIsDropdownOpen(false);\n setInputStatus(\"error\");\n setHintMessage(t(\"transfer.withdraw.accountId.invalid\"));\n }\n },\n [brokerId, t],\n );\n\n const debouncedLookup = useDebouncedCallback((input: string) => {\n void performLookup(input);\n }, 500);\n\n const handleAccountIdChange = useCallback(\n (val: string) => {\n setToAccountId(val);\n const trimmed = val.trim();\n if (!trimmed) {\n setAccountInfo(null);\n setIsDropdownOpen(false);\n latestLookupInputRef.current = \"\";\n return;\n }\n latestLookupInputRef.current = trimmed;\n\n if (checkIsAccountId(trimmed) && accountInfo?.accountId === trimmed) {\n setIsDropdownOpen(false);\n setInputStatus(\"default\");\n setHintMessage(\"\");\n return;\n }\n debouncedLookup(trimmed);\n },\n [debouncedLookup, accountInfo],\n );\n\n return {\n toAccountId,\n setToAccountId: handleAccountIdChange,\n onTransfer,\n internalWithdrawSubmitting: submitting,\n toAccountIdInputStatus: inputStatus,\n toAccountIdHintMessage: hintMessage,\n toAccountInfo: accountInfo,\n toAccountInfoDropdownOpen: isDropdownOpen,\n setToAccountInfoDropdownOpen: setIsDropdownOpen,\n };\n}\n","import { useMemo } from \"react\";\nimport { useTokenInfo } from \"@orderly.network/hooks\";\nimport { WithdrawTo } from \"../../../types\";\nimport { CurrentChain } from \"../../depositForm/hooks\";\n\nexport function useWithdrawFee(options: {\n token: string;\n currentChain?: CurrentChain | null;\n crossChainWithdraw: boolean;\n withdrawTo: WithdrawTo;\n}) {\n const { crossChainWithdraw, currentChain, token, withdrawTo } = options;\n\n const tokenInfo = useTokenInfo(token);\n\n const fee = useMemo(() => {\n if (withdrawTo === WithdrawTo.Account) {\n return 0;\n }\n\n if (!currentChain) {\n return 0;\n }\n\n const item = tokenInfo?.chain_details?.find(\n (chain) => Number.parseInt(chain.chain_id) === currentChain.id,\n );\n\n if (!item) {\n return 0;\n }\n\n if (crossChainWithdraw) {\n return (\n (item.withdrawal_fee || 0) + (item.cross_chain_withdrawal_fee || 0)\n );\n }\n\n return item.withdrawal_fee || 0;\n }, [tokenInfo, token, currentChain, crossChainWithdraw, withdrawTo]);\n\n return fee;\n}\n","import { useMemo } from \"react\";\nimport { useComputedLTV, useQuery } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API } from \"@orderly.network/types\";\n\nexport const useWithdrawLTV = (params: { token: string; quantity: string }) => {\n const { token, quantity } = params;\n const { ltv_threshold } = useConvertThreshold();\n const { t } = useTranslation();\n\n const currentLTV = useComputedLTV();\n\n const nextLTV = useComputedLTV({\n input: quantity ? -Number(quantity) : 0,\n token,\n });\n\n const ltvWarningMessage = useMemo(() => {\n if (ltv_threshold && nextLTV) {\n const threshold = ltv_threshold * 100;\n if (nextLTV > threshold) {\n return t(\"transfer.withdraw.LTV.error\", {\n threshold,\n });\n }\n }\n return \"\";\n }, [nextLTV, ltv_threshold]);\n\n return {\n currentLTV,\n nextLTV,\n ltvWarningMessage,\n t,\n };\n};\n\nconst useConvertThreshold = () => {\n const { data } = useQuery<API.ConvertThreshold>(\n \"/v1/public/auto_convert_threshold\",\n {\n revalidateOnFocus: false,\n },\n );\n\n return {\n ltv_threshold: data?.ltv_threshold,\n negative_usdc_threshold: data?.negative_usdc_threshold,\n };\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport {\n useHoldingStream,\n useMemoizedFn,\n useTokensInfo,\n} from \"@orderly.network/hooks\";\nimport { API } from \"@orderly.network/types\";\nimport { WithdrawTo } from \"../../../types\";\nimport { getTokenByTokenList } from \"../../../utils\";\nimport { CurrentChain } from \"../../depositForm/hooks\";\nimport { useToken } from \"../../depositForm/hooks/useToken\";\n\nexport function useWithdrawToken(params: {\n currentChain?: CurrentChain | null;\n withdrawTo: WithdrawTo;\n}) {\n const { currentChain, withdrawTo } = params;\n const [token, setToken] = useState<API.TokenInfo>();\n const [tokens, setTokens] = useState<API.TokenInfo[]>([]);\n\n const tokensInfo = useTokensInfo();\n const { data: holdings } = useHoldingStream();\n\n const { sourceToken, onSourceTokenChange, sourceTokens } = useToken(\n currentChain,\n (token) => token.symbol === \"USDC\" || token.is_collateral,\n );\n\n // Get user holding\n const allTokens = useMemo(() => {\n if (!tokensInfo?.length) return [];\n\n const holdingMap = new Map<string, API.Holding>();\n holdings?.forEach((item) => {\n holdingMap.set(item.token, item);\n });\n\n const mappedTokens = tokensInfo.map((item) => ({\n ...item,\n symbol: item.token,\n token_decimal: item.decimals,\n precision: item.decimals,\n }));\n\n const list = mappedTokens.filter((token) => {\n const holding = holdingMap.get(token.symbol!);\n if (!holdings) return true;\n return !!holding && holding.holding > 0;\n });\n\n // If user has no holdings, show USDC by default\n if (list.length === 0) {\n const usdcToken = mappedTokens.find((t) => t.symbol === \"USDC\");\n if (usdcToken) {\n return [usdcToken];\n }\n }\n // sort tokens, USDC should be the first\n list.sort((a, b) => {\n if (a.symbol === \"USDC\") return -1;\n if (b.symbol === \"USDC\") return 1;\n return 0;\n });\n\n return list;\n }, [tokensInfo, holdings]);\n\n useEffect(() => {\n if (!allTokens.length) return;\n\n const usdcToken = getTokenByTokenList(allTokens);\n setToken(usdcToken || allTokens?.[0]);\n setTokens(allTokens);\n }, [allTokens]);\n\n // Check if a token is supported on the current chain\n const isTokenSupportedOnChain = useMemoizedFn(\n (tokenSymbol: string): boolean => {\n if (!currentChain?.info?.token_infos) {\n return false;\n }\n return currentChain.info.token_infos.some(\n (token) => token.symbol === tokenSymbol,\n );\n },\n );\n\n const handleSourceTokenChange = useMemoizedFn((newToken: API.TokenInfo) => {\n if (withdrawTo === WithdrawTo.Wallet && currentChain && newToken.symbol) {\n const matchingToken = sourceTokens.find(\n (t) => t.symbol === newToken.symbol,\n );\n if (matchingToken) {\n onSourceTokenChange(matchingToken);\n } else {\n onSourceTokenChange(newToken);\n }\n return;\n }\n // Withdraw to account\n onSourceTokenChange(newToken);\n });\n\n const syncToken = useMemoizedFn(() => {\n if (withdrawTo === WithdrawTo.Account) {\n const findToken = tokens.find(\n (item) => item.symbol === sourceToken?.symbol,\n ) as API.TokenInfo;\n if (findToken) {\n setToken(findToken);\n }\n }\n });\n\n useEffect(() => {\n if (withdrawTo !== WithdrawTo.Wallet || !allTokens.length) return;\n\n const holdingSymbols = new Set(allTokens.map((t) => t.symbol));\n if (!sourceToken?.symbol || !holdingSymbols.has(sourceToken.symbol)) {\n const defaultToken = getTokenByTokenList(allTokens);\n if (defaultToken) {\n handleSourceTokenChange(defaultToken);\n }\n }\n }, [withdrawTo, allTokens, sourceToken?.symbol, handleSourceTokenChange]);\n\n useEffect(() => {\n syncToken();\n }, [\n withdrawTo,\n allTokens,\n sourceToken,\n sourceTokens,\n currentChain,\n syncToken,\n ]);\n\n if (withdrawTo === WithdrawTo.Account) {\n return {\n sourceToken: token,\n onSourceTokenChange: setToken,\n sourceTokens: tokens,\n isTokenSupportedOnChain,\n };\n }\n\n return {\n sourceToken,\n onSourceTokenChange: handleSourceTokenChange,\n sourceTokens: allTokens,\n isTokenSupportedOnChain,\n };\n}\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { PublicKey } from \"@solana/web3.js\";\nimport { ethers } from \"ethers\";\nimport {\n useAccount,\n useAssetsHistory,\n useChains,\n useConfig,\n useEventEmitter,\n useLocalStorage,\n useMemoizedFn,\n useWalletConnector,\n useWalletTopic,\n useWithdraw,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport {\n API,\n AccountStatusEnum,\n AssetHistorySideEnum,\n AssetHistoryStatusEnum,\n NetworkId,\n} from \"@orderly.network/types\";\nimport { toast } from \"@orderly.network/ui\";\nimport { useAuthGuard } from \"@orderly.network/ui-connector\";\nimport {\n Decimal,\n int2hex,\n praseChainIdToNumber,\n toNonExponential,\n} from \"@orderly.network/utils\";\nimport { InputStatus, WithdrawTo } from \"../../types\";\nimport { CurrentChain } from \"../depositForm/hooks\";\nimport { useSettlePnl } from \"../unsettlePnlInfo/useSettlePnl\";\nimport { useVaultBalance } from \"./hooks/useVaultBalance\";\nimport { useWithdrawAccountId } from \"./hooks/useWithdrawAccountId\";\nimport { useWithdrawFee } from \"./hooks/useWithdrawFee\";\nimport { useWithdrawLTV } from \"./hooks/useWithdrawLTV\";\nimport { useWithdrawToken } from \"./hooks/useWithdrawToken\";\n\nexport const validateWalletAddress = (\n address: string,\n): { valid: boolean; network?: \"EVM\" | \"SOL\" } => {\n if (ethers.isAddress(address)) {\n return { valid: true, network: \"EVM\" };\n }\n\n try {\n const pubKey = new PublicKey(address);\n if (PublicKey.isOnCurve(pubKey.toBytes())) {\n return { valid: true, network: \"SOL\" };\n }\n } catch {}\n\n return { valid: false };\n};\n\nexport type WithdrawFormScriptReturn = ReturnType<typeof useWithdrawFormScript>;\n\nconst markPrice = 1;\n\nexport type WithdrawFormScriptOptions = {\n close?: () => void;\n};\n\nexport const useWithdrawFormScript = (options: WithdrawFormScriptOptions) => {\n const { t } = useTranslation();\n const [crossChainTrans, setCrossChainTrans] = useState<boolean>(false);\n const [loading, setLoading] = useState(false);\n const [assetHistory] = useAssetsHistory(\n {\n page: 1,\n pageSize: 1,\n side: AssetHistorySideEnum.WITHDRAW,\n status: AssetHistoryStatusEnum.PENDING_REBALANCE,\n },\n // update when withdraw status changed\n {\n shouldUpdateOnWalletChanged: (data) =>\n data.side === AssetHistorySideEnum.WITHDRAW,\n },\n );\n\n const config = useConfig();\n\n const brokerName = config.get(\"brokerName\");\n const networkId = config.get(\"networkId\") as NetworkId;\n\n const ee = useEventEmitter();\n\n const [quantity, setQuantity] = useState<string>(\"\");\n const [inputStatus, setInputStatus] = useState<InputStatus>(\"default\");\n const [hintMessage, setHintMessage] = useState<string>();\n\n const [withdrawTo, setWithdrawTo] = useState<WithdrawTo>(WithdrawTo.Wallet);\n\n const { wrongNetwork, widgetConfigs } = useAppContext();\n const { account, state } = useAccount();\n\n const [chains, { findByChainId }] = useChains(networkId, {\n filter: (chain: any) =>\n chain.network_infos?.bridge_enable || chain.network_infos?.bridgeless,\n });\n\n const [linkDeviceStorage] = useLocalStorage(\"orderly_link_device\", {});\n\n const {\n connectedChain,\n wallet,\n setChain: switchChain,\n settingChain,\n } = useWalletConnector();\n\n const isLoggedIn = useAuthGuard();\n\n const [pendingTokenSymbol, setPendingTokenSymbol] = useState<\n string | undefined\n >();\n\n const currentChain = useMemo(() => {\n // if (!connectedChain) return null;\n\n const chainId = connectedChain\n ? praseChainIdToNumber(connectedChain.id)\n : Number.parseInt(linkDeviceStorage?.chainId);\n\n if (!chainId) {\n return null;\n }\n\n const chain = findByChainId(chainId);\n\n return {\n ...connectedChain,\n id: chainId,\n info: chain!,\n } as CurrentChain;\n }, [findByChainId, connectedChain, linkDeviceStorage]);\n\n const {\n sourceToken,\n onSourceTokenChange: _OnSourceTokenChange,\n sourceTokens,\n isTokenSupportedOnChain,\n } = useWithdrawToken({\n currentChain,\n withdrawTo,\n });\n\n const onSourceTokenChange = useMemoizedFn((token: API.TokenInfo) => {\n setQuantity(\"\");\n _OnSourceTokenChange(token);\n setPendingTokenSymbol(token.symbol);\n });\n\n const tokenChains = useMemo(() => {\n if (!chains) return [];\n\n const list = chains.map((chain) => {\n const isSupported = chain.token_infos?.some(\n (token) => token.symbol === sourceToken?.symbol,\n );\n\n return {\n ...chain.network_infos,\n isSupported,\n };\n });\n\n // Put supported chains on top, unsupported ones at the bottom\n list.sort((a, b) => {\n const aSupported = !!a.isSupported;\n const bSupported = !!b.isSupported;\n if (aSupported === bSupported) return 0;\n return aSupported ? -1 : 1;\n });\n\n return list;\n }, [chains, sourceToken?.symbol]);\n\n const enableWithdrawToExternalWallet =\n widgetConfigs?.withdraw?.enableWithdrawToExternalWallet ?? false;\n\n const { walletName, address } = useMemo(\n () => ({\n walletName: wallet?.label,\n address: wallet?.accounts?.[0].address,\n }),\n [wallet],\n );\n\n const [externalWallets, setExternalWallets] = useLocalStorage<\n { address: string; network?: \"EVM\" | \"SOL\" }[]\n >(\"orderly_external_wallets\", []);\n\n const [selectedWalletAddress, setSelectedWalletAddress] = useState<string>();\n\n useEffect(() => {\n setSelectedWalletAddress(undefined);\n }, [currentChain?.namespace]);\n\n useEffect(() => {\n if (address && !selectedWalletAddress) {\n setSelectedWalletAddress(address);\n }\n }, [address, selectedWalletAddress]);\n\n const onSelectWallet = (address: string) => {\n setSelectedWalletAddress(address);\n };\n\n const onAddExternalWallet = (addr: string, network?: \"EVM\" | \"SOL\") => {\n const normalizedAddr = addr.trim();\n if (!normalizedAddr) return;\n\n const connectedAddress = address?.trim();\n if (\n connectedAddress &&\n connectedAddress.toLowerCase() === normalizedAddr.toLowerCase()\n ) {\n setSelectedWalletAddress(normalizedAddr);\n return;\n }\n\n const exists = (externalWallets || []).some((w: { address: string }) => {\n return w.address?.trim().toLowerCase() === normalizedAddr.toLowerCase();\n });\n\n if (!exists) {\n setExternalWallets([\n ...(externalWallets || []),\n { address: normalizedAddr, network },\n ]);\n }\n\n setSelectedWalletAddress(normalizedAddr);\n };\n\n const onQuantityChange = (qty: string) => {\n setQuantity(qty);\n };\n\n const amount = useMemo(() => {\n return new Decimal(quantity || 0).mul(markPrice).toNumber();\n }, [quantity, markPrice]);\n\n const { withdraw, maxAmount, unsettledPnL } = useWithdraw({\n token: sourceToken?.symbol,\n decimals: sourceToken?.token_decimal,\n });\n\n const qtyGreaterThanMaxAmount = useMemo<boolean>(() => {\n if (!quantity || Number.isNaN(quantity)) {\n return false;\n }\n if (!maxAmount || Number.isNaN(maxAmount)) {\n return true;\n }\n return new Decimal(quantity).gt(maxAmount);\n }, [quantity, maxAmount]);\n\n const {\n vaultBalanceList,\n qtyGreaterThanVault,\n crossChainWithdraw,\n vaultBalanceMessage,\n } = useVaultBalance({\n currentChain,\n sourceToken,\n withdrawTo,\n quantity,\n qtyGreaterThanMaxAmount,\n });\n\n const withdrawAccountIdState = useWithdrawAccountId({\n token: sourceToken?.symbol!,\n decimals: sourceToken?.token_decimal!,\n quantity,\n setQuantity,\n close: options.close,\n setLoading,\n });\n\n const checkIsBridgeless = useMemo(() => {\n if (wrongNetwork) {\n return false;\n }\n if (!currentChain) {\n return false;\n }\n if (networkId === \"testnet\") {\n return true;\n }\n if (!currentChain.info) {\n return false;\n }\n if (\n !currentChain.info.network_infos ||\n !currentChain.info.network_infos.bridgeless\n ) {\n return false;\n }\n return true;\n }, [currentChain, wrongNetwork]);\n\n const cleanData = () => {\n setQuantity(\"\");\n };\n\n const onChainChange = useCallback(\n async (chain: API.NetworkInfos) => {\n const chainInfo = findByChainId(chain.chain_id);\n\n if (\n !chainInfo ||\n chainInfo.network_infos?.chain_id === currentChain?.id\n ) {\n return Promise.resolve();\n }\n\n return switchChain?.({\n chainId: int2hex(Number(chainInfo.network_infos?.chain_id)),\n })\n .then((switched) => {\n if (switched) {\n toast.success(t(\"connector.networkSwitched\"));\n // clean input value\n cleanData();\n } else {\n toast.error(t(\"connector.switchChain.failed\"));\n }\n })\n .catch((error) => {\n toast.error(`${t(\"connector.switchChain.failed\")}: ${error.message}`);\n });\n },\n [currentChain, switchChain, findByChainId, t],\n );\n\n useEffect(() => {\n if (!pendingTokenSymbol || !sourceTokens || sourceTokens.length === 0) {\n return;\n }\n\n const matchedToken = sourceTokens.find(\n (token) => token.symbol === pendingTokenSymbol,\n );\n if (matchedToken) {\n onSourceTokenChange(matchedToken);\n }\n }, [pendingTokenSymbol, sourceTokens, onSourceTokenChange, currentChain]);\n\n const onWithdraw = async () => {\n if (loading) {\n return;\n }\n if (inputStatus !== \"default\") {\n return;\n }\n\n setLoading(true);\n return withdraw({\n amount: quantity,\n token: sourceToken?.symbol!,\n chainId: currentChain?.id!,\n allowCrossChainWithdraw: crossChainWithdraw,\n receiver: selectedWalletAddress,\n })\n .then((res) => {\n toast.success(t(\"transfer.withdraw.requested\"));\n ee.emit(\"withdraw:requested\");\n options.close?.();\n setQuantity(\"\");\n })\n .catch((e) => {\n if (e.message.indexOf(\"user rejected\") !== -1) {\n toast.error(t(\"transfer.rejectTransaction\"));\n return;\n }\n if (\n e.message.indexOf(\n \"Signing off chain messages with Ledger is not yet supported\",\n ) !== -1\n ) {\n ee.emit(\"wallet:sign-message-with-ledger-error\", {\n message: e.message,\n userAddress: account.address,\n });\n return;\n }\n\n toast.error(e.message);\n })\n .finally(() => {\n setLoading(false);\n });\n };\n\n const fee = useWithdrawFee({\n crossChainWithdraw,\n currentChain,\n token: sourceToken?.symbol!,\n withdrawTo,\n });\n\n const minAmountWarningMessage = useMemo(() => {\n const minAmount = new Decimal(\n sourceToken?.minimum_withdraw_amount ?? 0,\n ).add(fee);\n\n if (quantity && new Decimal(quantity).lt(minAmount)) {\n return t(\"transfer.withdraw.minAmount.error\", {\n minAmount: toNonExponential(minAmount.toNumber()),\n currency: sourceToken?.symbol,\n });\n }\n }, [quantity, sourceToken?.minimum_withdraw_amount, fee, t]);\n\n const showQty = useMemo(() => {\n if (!quantity) {\n return \"\";\n }\n\n const value = new Decimal(quantity).sub(fee ?? 0);\n if (value.isNegative()) {\n return \"\";\n }\n return toNonExponential(value.toNumber());\n }, [fee, quantity]);\n\n const isTokenUnsupported = useMemo(() => {\n if (\n withdrawTo !== WithdrawTo.Wallet ||\n !currentChain ||\n !sourceToken?.symbol\n ) {\n return false;\n }\n return !isTokenSupportedOnChain(sourceToken.symbol);\n }, [withdrawTo, currentChain, sourceToken?.symbol, isTokenSupportedOnChain]);\n\n useEffect(() => {\n if (isTokenUnsupported && sourceToken?.symbol) {\n setInputStatus(\"error\");\n setHintMessage(\n t(\"transfer.withdraw.unsupported.token\", { token: sourceToken.symbol }),\n );\n return;\n }\n\n if (!quantity) {\n setInputStatus(\"default\");\n setHintMessage(\"\");\n return;\n }\n const qty = new Decimal(quantity ?? 0);\n if (unsettledPnL < 0) {\n if (qty.gt(maxAmount)) {\n setInputStatus(\"error\");\n setHintMessage(t(\"transfer.insufficientBalance\"));\n } else {\n setInputStatus(\"default\");\n setHintMessage(\"\");\n }\n }\n }, [\n quantity,\n maxAmount,\n unsettledPnL,\n crossChainTrans,\n isTokenUnsupported,\n sourceToken?.symbol,\n t,\n ]);\n\n const disabled =\n crossChainTrans ||\n !quantity ||\n Number(quantity) === 0 ||\n [\"error\", \"warning\"].includes(inputStatus) ||\n (withdrawTo === WithdrawTo.Account &&\n !withdrawAccountIdState.toAccountId) ||\n qtyGreaterThanMaxAmount ||\n qtyGreaterThanVault ||\n !!minAmountWarningMessage ||\n isTokenUnsupported;\n\n useEffect(() => {\n setCrossChainTrans(!!assetHistory?.length);\n }, [assetHistory?.length]);\n\n // it need to use useMemoizedFn wrap ,otherwise crossChainTrans and assetHistory will be first render data\n const handleWalletTopic = useMemoizedFn((data: any) => {\n if (!crossChainTrans) {\n return;\n }\n const txId = assetHistory?.[0]?.tx_id;\n const { trxId, transStatus } = data;\n if (trxId === txId && transStatus === \"COMPLETED\") {\n setCrossChainTrans(false);\n }\n });\n\n useWalletTopic({\n onMessage: handleWalletTopic,\n });\n\n const { hasPositions, onSettlePnl } = useSettlePnl();\n\n const { currentLTV, nextLTV, ltvWarningMessage } = useWithdrawLTV({\n token: sourceToken?.symbol!,\n quantity,\n });\n\n const warningMessage =\n ltvWarningMessage || minAmountWarningMessage || vaultBalanceMessage;\n\n const filteredVaultBalanceList = useMemo(() => {\n if (withdrawTo === WithdrawTo.Account) {\n return [];\n }\n return vaultBalanceList?.filter(\n (item) => Number.parseInt(item.chain_id) === currentChain?.id,\n );\n }, [vaultBalanceList, currentChain, withdrawTo]);\n\n const onSwitchToSupportedNetwork = useMemoizedFn(async () => {\n if (!tokenChains || tokenChains.length === 0) return;\n\n const targetNetwork =\n tokenChains.find((item) => item.isSupported) ?? tokenChains[0];\n\n await onChainChange(targetNetwork);\n });\n\n return {\n walletName,\n address,\n quantity,\n onQuantityChange,\n sourceToken,\n onSourceTokenChange,\n sourceTokens,\n inputStatus,\n hintMessage,\n amount,\n balanceRevalidating: false,\n maxQuantity: maxAmount,\n disabled,\n loading,\n unsettledPnL,\n wrongNetwork,\n settingChain,\n tokenChains,\n currentChain,\n onChainChange,\n onWithdraw,\n fee,\n crossChainWithdraw,\n crossChainTrans,\n showQty,\n networkId,\n checkIsBridgeless,\n hasPositions,\n onSettlePnl,\n brokerName,\n qtyGreaterThanMaxAmount,\n vaultBalanceList,\n ...withdrawAccountIdState,\n withdrawTo,\n setWithdrawTo,\n currentLTV,\n nextLTV,\n warningMessage,\n\n isLoggedIn,\n isTokenUnsupported,\n onSwitchToSupportedNetwork,\n\n enableWithdrawToExternalWallet,\n externalWallets,\n selectedWalletAddress: selectedWalletAddress || address,\n onSelectWallet,\n onAddExternalWallet,\n setExternalWallets,\n isEnableTrading:\n state.status >= AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected,\n };\n};\n","import { FC, useState, useEffect } from \"react\";\nimport { useDebouncedCallback } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { ChainNamespace } from \"@orderly.network/types\";\nimport {\n Box,\n Button,\n Input,\n SimpleDialog,\n Text,\n Spinner,\n cn,\n Flex,\n CloseRoundFillIcon,\n ChainIcon,\n} from \"@orderly.network/ui\";\nimport { CurrentChain } from \"../depositForm/hooks\";\nimport { validateWalletAddress } from \"./withdrawForm.script\";\n\ninterface AddWalletDialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n onConfirm: (address: string, network?: \"EVM\" | \"SOL\") => void;\n chain: CurrentChain | null;\n}\n\nexport const AddWalletDialog: FC<AddWalletDialogProps> = ({\n open,\n onOpenChange,\n onConfirm,\n chain,\n}) => {\n const { t } = useTranslation();\n const [address, setAddress] = useState(\"\");\n const [isValidating, setIsValidating] = useState(false);\n const [validationResult, setValidationResult] = useState<{\n valid: boolean;\n network?: \"EVM\" | \"SOL\";\n } | null>(null);\n\n const checkAddress = useDebouncedCallback((addr: string) => {\n if (!addr) {\n setValidationResult(null);\n setIsValidating(false);\n return;\n }\n const result = validateWalletAddress(addr);\n setValidationResult(result);\n setIsValidating(false);\n }, 500);\n\n const onAddressChange = (val: string) => {\n setAddress(val);\n if (!val) {\n setValidationResult(null);\n setIsValidating(false);\n return;\n }\n setIsValidating(true);\n setValidationResult(null);\n checkAddress(val);\n };\n\n const onClear = () => {\n setAddress(\"\");\n setValidationResult(null);\n setIsValidating(false);\n };\n\n useEffect(() => {\n if (!open) onClear();\n }, [open]);\n\n const requiredNetwork: \"EVM\" | \"SOL\" | undefined =\n chain?.namespace === ChainNamespace.solana\n ? \"SOL\"\n : chain?.namespace === ChainNamespace.evm\n ? \"EVM\"\n : undefined;\n\n const requiredNetworkLabel =\n requiredNetwork === \"SOL\"\n ? \"Solana\"\n : requiredNetwork === \"EVM\"\n ? \"EVM\"\n : \"\";\n\n const hasValidation = !!validationResult;\n const isValid = !!validationResult?.valid;\n const isInvalidFormat = hasValidation && !validationResult!.valid;\n const isNetworkMismatch =\n isValid &&\n !!requiredNetwork &&\n validationResult!.network !== requiredNetwork;\n\n const showBorderDanger =\n !isValidating && hasValidation && (isInvalidFormat || isNetworkMismatch);\n const showProtocolLabel = !isValidating && isValid;\n const showInlineInvalid = !isValidating && isInvalidFormat;\n const showErrorHint = !isValidating && isNetworkMismatch;\n\n const handleConfirm = () => {\n if (!address || isValidating || !isValid || isNetworkMismatch) return;\n\n onConfirm(address, validationResult!.network === \"SOL\" ? \"SOL\" : \"EVM\");\n onOpenChange(false);\n };\n\n return (\n <SimpleDialog\n open={open}\n onOpenChange={onOpenChange}\n title={t(\"transfer.withdraw.addExternalWallet\")}\n size=\"sm\"\n >\n <Box className=\"oui-flex oui-flex-col oui-gap-6 oui-font-semibold oui-tracking-[0.03em]\">\n <Flex justify=\"between\">\n <Text size=\"sm\" intensity={54}>\n {t(\"common.network\")}\n </Text>\n <Flex gapX={1}>\n <ChainIcon chainId={\"\" + chain?.id} className=\"oui-w-4 oui-h-4\" />\n <Text size=\"sm\">{chain?.info?.network_infos?.shortName}</Text>\n </Flex>\n </Flex>\n <Flex direction=\"column\" itemAlign=\"start\" gapY={2}>\n <Text size=\"sm\" intensity={54}>\n {t(\"transfer.withdraw.addExternalWallet.addressDescription\")}\n </Text>\n {requiredNetworkLabel && (\n <Text size=\"sm\" intensity={54}>\n {t(\"transfer.withdraw.addExternalWallet.addressWarning\", {\n networkLabel: requiredNetworkLabel,\n })}\n </Text>\n )}\n </Flex>\n <Box className=\"oui-flex oui-flex-col oui-gap-1\">\n <Flex justify=\"between\">\n <Text size=\"2xs\" intensity={54}>\n {t(\"transfer.withdraw.addExternalWallet.label\")}\n </Text>\n {isValidating && (\n <Spinner className=\"oui-w-3.5 oui-h-3.5 oui-text-base-contrast-36\" />\n )}\n {showProtocolLabel && (\n <Text\n size=\"2xs\"\n className={cn(\n isNetworkMismatch\n ? \"oui-text-danger\"\n : \"oui-text-primary-light\",\n )}\n >\n {validationResult!.network === \"EVM\" ? \"EVM\" : \"Solana\"}\n </Text>\n )}\n {showInlineInvalid && (\n <Text size=\"2xs\" className=\"oui-text-danger\">\n {t(\"common.invalid\")}\n </Text>\n )}\n </Flex>\n <Input\n value={address}\n onValueChange={onAddressChange}\n autoFocus\n color={showBorderDanger ? \"danger\" : undefined}\n className={cn(\"oui-bg-transparent oui-bg-base-6\")}\n classNames={{ input: \"oui-text-white\" }}\n suffix={\n address && (\n <Box className=\"oui-ml-2.5 oui-mr-2 oui-cursor-pointer\">\n <CloseRoundFillIcon\n size={16}\n onClick={onClear}\n className=\"oui-text-base-contrast-20 hover:oui-text-base-contrast-54\"\n />\n </Box>\n )\n }\n />\n {showErrorHint && (\n <Flex gapX={1} px={1} justify=\"between\" itemAlign=\"center\">\n <Flex gapX={1} itemAlign=\"center\">\n <Box\n width={4}\n height={4}\n r=\"full\"\n className=\"oui-bg-danger-light\"\n />\n <Text size=\"2xs\" className=\"oui-text-danger-light\">\n {t(\"transfer.withdraw.addExternalWallet.networkMismatch\", {\n networkLabel: requiredNetworkLabel,\n })}\n </Text>\n </Flex>\n </Flex>\n )}\n </Box>\n <Button\n variant=\"contained\"\n fullWidth\n onClick={handleConfirm}\n disabled={!address || isValidating || !isValid || isNetworkMismatch}\n className=\"oui-mt-2\"\n >\n {t(\"common.confirm\")}\n </Button>\n </Box>\n </SimpleDialog>\n );\n};\n","import { FC, ReactNode, SVGProps, useMemo, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n cn,\n DropdownMenuContent,\n DropdownMenuPortal,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n Flex,\n Text,\n WalletIcon,\n CaretDownIcon,\n CaretUpIcon,\n} from \"@orderly.network/ui\";\n\nconst AddIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M8.99316 2.19731C8.57916 2.19731 8.24316 2.53331 8.24316 2.94731V8.19731H2.99316C2.57916 8.19731 2.24316 8.53331 2.24316 8.94731C2.24316 9.36131 2.57916 9.69731 2.99316 9.69731H8.24316V14.9473C8.24316 15.3613 8.57916 15.6973 8.99316 15.6973C9.40716 15.6973 9.74316 15.3613 9.74316 14.9473V9.69731H14.9932C15.4072 9.69731 15.7432 9.36131 15.7432 8.94731C15.7432 8.53331 15.4072 8.19731 14.9932 8.19731H9.74316V2.94731C9.74316 2.53331 9.40716 2.19731 8.99316 2.19731Z\" />\n </svg>\n);\n\nexport type WalletOption = {\n address: string;\n name?: string;\n network?: \"EVM\" | \"SOL\";\n};\n\ninterface WalletMenuItemProps {\n onClick: () => void;\n children: ReactNode;\n className?: string;\n}\n\nconst WalletMenuItem: FC<WalletMenuItemProps> = ({\n onClick,\n children,\n className,\n}) => {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={cn(\n \"oui-flex oui-items-center oui-gap-2 oui-py-1.5 oui-px-2 hover:oui-bg-base-5\",\n \"oui-rounded-[4px]\",\n \"oui-font-semibold oui-tracking-[0.03em]\",\n className,\n )}\n >\n {children}\n </button>\n );\n};\n\ninterface WalletSelectorProps {\n connectedWallet?: {\n name: string;\n address: string;\n namespace?: string;\n };\n externalWallets: WalletOption[];\n selectedAddress: string;\n onSelect: (address: string) => void;\n onAddExternalWallet: () => void;\n}\n\nexport const WalletSelector: FC<WalletSelectorProps> = ({\n connectedWallet,\n externalWallets,\n selectedAddress,\n onSelect,\n onAddExternalWallet,\n}) => {\n const { t } = useTranslation();\n const [isOpen, setIsOpen] = useState(false);\n\n const currentNetwork = useMemo<\"EVM\" | \"SOL\" | undefined>(() => {\n if (!connectedWallet?.namespace) return undefined;\n const ns = connectedWallet.namespace.toLowerCase();\n if (ns.includes(\"sol\")) return \"SOL\";\n return \"EVM\";\n }, [connectedWallet?.namespace]);\n\n const filteredExternalWallets = useMemo(() => {\n if (!currentNetwork) return externalWallets;\n return externalWallets.filter(\n (wallet) => wallet.network === currentNetwork,\n );\n }, [externalWallets, currentNetwork]);\n\n const selectedWalletOpt = useMemo(() => {\n if (connectedWallet && selectedAddress === connectedWallet.address) {\n return {\n address: connectedWallet.address,\n name: connectedWallet.name,\n network: currentNetwork,\n };\n }\n return filteredExternalWallets.find(\n (w: WalletOption) => w.address === selectedAddress,\n );\n }, [\n connectedWallet,\n currentNetwork,\n filteredExternalWallets,\n selectedAddress,\n ]);\n\n const hasExternalWallets = filteredExternalWallets.length > 0;\n const showConnectedItem = !!connectedWallet && hasExternalWallets;\n\n const getChainLabel = (network?: \"EVM\" | \"SOL\") => {\n if (!network) return \"\";\n if (network === \"SOL\") return \"Solana\";\n return \"EVM\";\n };\n\n const handleSelectWallet = (address: string) => {\n onSelect(address);\n setIsOpen(false);\n };\n\n const handleAddExternalWalletClick = () => {\n onAddExternalWallet();\n setIsOpen(false);\n };\n\n const dropdownContent = (\n <DropdownMenuPortal>\n <DropdownMenuContent\n align=\"end\"\n className=\"oui-max-h-[240px] oui-overflow-y-auto oui-custom-scrollbar\"\n >\n {showConnectedItem && connectedWallet && (\n <WalletMenuItem\n onClick={() => handleSelectWallet(connectedWallet.address)}\n className=\"oui-w-[368px]\"\n >\n <Flex direction=\"column\" itemAlign=\"start\" gapY={1}>\n <Text size=\"2xs\" className=\"oui-text-base-contrast-54\">\n {t(\"common.myWallet\")}\n </Text>\n <Text\n size=\"2xs\"\n intensity={54}\n className=\"oui-text-base-contrast-36 oui-leading-[15px]\"\n >\n {`(${getChainLabel(currentNetwork)}) ${connectedWallet.address}`}\n </Text>\n </Flex>\n </WalletMenuItem>\n )}\n\n {hasExternalWallets && (\n <>\n {filteredExternalWallets.map((wallet) => (\n <WalletMenuItem\n key={wallet.address}\n onClick={() => handleSelectWallet(wallet.address)}\n className=\"oui-w-[368px]\"\n >\n <Flex direction=\"column\" itemAlign=\"start\" gapY={1}>\n <Text size=\"2xs\" className=\"oui-text-base-contrast-54\">\n {t(\"common.externalWallet\")}\n </Text>\n <Text\n size=\"2xs\"\n intensity={54}\n className=\"oui-text-base-contrast-36 oui-leading-[15px]\"\n >\n {`(${getChainLabel(wallet.network)}) ${wallet.address}`}\n </Text>\n </Flex>\n </WalletMenuItem>\n ))}\n </>\n )}\n\n <WalletMenuItem\n onClick={handleAddExternalWalletClick}\n className={cn(\n \"oui-justify-center\",\n hasExternalWallets && \"oui-w-full\",\n !hasExternalWallets && \"oui-w-[190px]\",\n )}\n >\n <Flex\n itemAlign=\"center\"\n gapX={1}\n className=\"oui-text-primary oui-font-semibold oui-tracking-[0.03em]\"\n >\n <AddIcon className=\"oui-size-[18px]\" />\n <Text size=\"2xs\">{t(\"transfer.withdraw.addExternalWallet\")}</Text>\n </Flex>\n </WalletMenuItem>\n </DropdownMenuContent>\n </DropdownMenuPortal>\n );\n\n return (\n <Flex justify=\"between\" className=\"oui-w-full oui-mb-3\">\n <Text size=\"2xs\" intensity={36}>\n {t(\"common.wallet\")}\n </Text>\n <DropdownMenuRoot open={isOpen} onOpenChange={setIsOpen}>\n <DropdownMenuTrigger asChild>\n <div className=\"oui-flex oui-items-center oui-gap-1 oui-cursor-pointer oui-text-base-contrast-54 hover:oui-text-base-contrast-80\">\n {selectedWalletOpt?.name && (\n <WalletIcon name={selectedWalletOpt.name} size=\"3xs\" />\n )}\n <Text.formatted size=\"2xs\" intensity={54} rule=\"address\">\n {selectedWalletOpt?.address || \"\"}\n </Text.formatted>\n <Text\n size=\"2xs\"\n intensity={54}\n className=\"oui-text-base-contrast-36\"\n >\n {` (${getChainLabel(selectedWalletOpt?.network)})`}\n </Text>\n {isOpen ? (\n <CaretUpIcon size={12} className=\"oui-text-inherit\" />\n ) : (\n <CaretDownIcon size={12} className=\"oui-text-inherit\" />\n )}\n </div>\n </DropdownMenuTrigger>\n {dropdownContent}\n </DropdownMenuRoot>\n </Flex>\n );\n};\n","import { FC, useState } from \"react\";\nimport { Trans, useTranslation } from \"@orderly.network/i18n\";\nimport {\n Box,\n Flex,\n Text,\n textVariants,\n Tabs,\n TabPanel,\n ArrowLeftRightIcon,\n WalletIcon,\n} from \"@orderly.network/ui\";\nimport { WithdrawTo } from \"../../types\";\nimport { LtvWidget } from \"../LTV\";\nimport { TextAreaInput } from \"../accountIdInput\";\nimport { AvailableQuantity } from \"../availableQuantity\";\nimport { BrokerWallet } from \"../brokerWallet\";\nimport { ChainSelect } from \"../chainSelect\";\nimport { ExchangeDivider } from \"../exchangeDivider\";\nimport { QuantityInput } from \"../quantityInput\";\nimport { UnsettlePnlInfo } from \"../unsettlePnlInfo\";\nimport { WithdrawAction } from \"../withdrawAction\";\nimport { WithdrawWarningMessage } from \"../withdrawWarningMessage\";\nimport { AddWalletDialog } from \"./addWalletDialog\";\nimport { WalletSelector } from \"./walletSelector\";\nimport { WithdrawFormScriptReturn } from \"./withdrawForm.script\";\n\nexport type WithdrawFormProps = WithdrawFormScriptReturn;\n\nexport const WithdrawForm: React.FC<WithdrawFormProps> = (props) => {\n const {\n address,\n walletName,\n loading,\n disabled,\n quantity,\n onQuantityChange,\n sourceToken,\n amount,\n maxQuantity,\n tokenChains,\n currentChain,\n fee,\n settingChain,\n crossChainTrans,\n checkIsBridgeless,\n withdrawTo,\n sourceTokens,\n onSourceTokenChange,\n vaultBalanceList,\n qtyGreaterThanMaxAmount,\n isTokenUnsupported,\n onSwitchToSupportedNetwork,\n externalWallets,\n selectedWalletAddress,\n onSelectWallet,\n onAddExternalWallet,\n isEnableTrading,\n enableWithdrawToExternalWallet,\n } = props;\n\n const { t } = useTranslation();\n const [addWalletOpen, setAddWalletOpen] = useState(false);\n\n const handleAddExternalWallet = (\n address: string,\n network?: \"EVM\" | \"SOL\",\n ) => {\n onAddExternalWallet?.(address, network);\n };\n\n const internalWithdrawPanel = (\n <TabPanel\n title={t(\"transfer.withdraw.otherAccount\", {\n brokerName: props.brokerName,\n })}\n value={WithdrawTo.Account}\n >\n <TextAreaInput\n label={t(\"common.accountId\")}\n value={props.toAccountId}\n onChange={props.setToAccountId}\n status={props.toAccountIdInputStatus}\n hintMessage={props.toAccountIdHintMessage}\n disabled={!props.isLoggedIn}\n placeholder={t(\"transfer.withdraw.accountIdOrAddress.placeholder\")}\n enableAccountLookup\n accountInfo={props.toAccountInfo}\n accountDropdownOpen={props.toAccountInfoDropdownOpen}\n setAccountDropdownOpen={props.setToAccountInfoDropdownOpen}\n />\n <Box mb={1} px={2}>\n <Text size=\"xs\" intensity={54}>\n {t(\"transfer.withdraw.accountIdOrAddress.hint\")}\n </Text>\n </Box>\n </TabPanel>\n );\n\n return (\n <Box\n id=\"oui-withdraw-form\"\n className={textVariants({ weight: \"semibold\" })}\n >\n <Box className=\"oui-mb-6 lg:oui-mb-8\">\n <BrokerWallet />\n <Box mt={3} mb={1}>\n <QuantityInput\n value={quantity}\n onValueChange={onQuantityChange}\n token={sourceToken}\n tokens={sourceTokens}\n onTokenChange={onSourceTokenChange}\n status={props.inputStatus}\n hintMessage={props.hintMessage}\n hintSuffix={\n isTokenUnsupported ? (\n <button\n type=\"button\"\n onClick={onSwitchToSupportedNetwork}\n className=\"oui-inline-flex oui-items-center oui-gap-1 oui-text-2xs oui-font-semibold oui-text-primary\"\n >\n {t(\"common.switch\")}\n <ArrowLeftRightIcon\n size={16}\n className=\"oui-text-primary oui-mt-0.5\"\n opacity={1}\n />\n </button>\n ) : undefined\n }\n vaultBalanceList={vaultBalanceList}\n testId=\"oui-testid-withdraw-dialog-quantity-input\"\n displayType=\"vaultBalance\"\n disabled={!props.isLoggedIn}\n />\n </Box>\n <AvailableQuantity\n token={sourceToken}\n amount={amount}\n maxQuantity={maxQuantity.toString()}\n loading={props.balanceRevalidating}\n onClick={() => {\n onQuantityChange(maxQuantity.toString());\n }}\n tooltipContent={t(\"transfer.withdraw.available.tooltip\", {\n amount: maxQuantity.toString(),\n })}\n />\n <Box mx={2} mt={1}>\n <UnsettlePnlInfo\n unsettledPnl={props.unsettledPnL}\n hasPositions={props.hasPositions}\n onSettlePnl={props.onSettlePnl}\n tooltipContent={t(\"settle.unsettled.tooltip\")}\n dialogContent={<Trans i18nKey=\"settle.settlePnl.description\" />}\n />\n </Box>\n <ExchangeDivider />\n <Tabs\n value={withdrawTo}\n onValueChange={props.setWithdrawTo as (tab: string) => void}\n variant=\"contained\"\n size=\"lg\"\n classNames={{\n tabsList: \"oui-px-0\",\n tabsContent: \"oui-pt-3\",\n }}\n >\n <TabPanel\n title={t(\"transfer.web3Wallet.my\")}\n icon={\n props.walletName ? (\n <WalletIcon size={\"xs\"} name={props.walletName ?? \"\"} />\n ) : undefined\n }\n value={WithdrawTo.Wallet}\n >\n {isEnableTrading && enableWithdrawToExternalWallet && (\n <WalletSelector\n connectedWallet={\n address\n ? {\n name: walletName || t(\"common.wallet\"),\n address,\n namespace: currentChain?.namespace,\n }\n : undefined\n }\n externalWallets={externalWallets || []}\n selectedAddress={selectedWalletAddress ?? \"\"}\n onSelect={onSelectWallet}\n onAddExternalWallet={() => setAddWalletOpen(true)}\n />\n )}\n <Box mb={1}>\n <ChainSelect\n chains={tokenChains}\n value={currentChain!}\n onValueChange={props.onChainChange}\n wrongNetwork={props.wrongNetwork}\n loading={settingChain}\n disabled={!props.isLoggedIn}\n />\n </Box>\n <QuantityInput\n classNames={{\n root: \"oui-mt-[2px] oui-rounded-t-sm oui-rounded-b-xl\",\n }}\n token={sourceToken}\n value={props.showQty}\n readOnly\n />\n </TabPanel>\n {internalWithdrawPanel}\n </Tabs>\n <Box mt={2} px={2}>\n <LtvWidget\n showDiff={typeof quantity !== \"undefined\" && Number(quantity) > 0}\n currentLtv={props.currentLTV}\n nextLTV={props.nextLTV}\n />\n </Box>\n <Flex direction=\"column\" mt={1} gapY={1} px={2} itemAlign=\"start\">\n <Text size=\"xs\" intensity={36}>\n {t(\"common.fee\")}\n {withdrawTo === WithdrawTo.Wallet ? \" ≈ \" : \" = \"}\n <Text size=\"xs\" intensity={80}>\n {fee}\n </Text>\n </Text>\n </Flex>\n </Box>\n <WithdrawWarningMessage\n checkIsBridgeless={checkIsBridgeless}\n crossChainTrans={crossChainTrans}\n qtyGreaterThanMaxAmount={qtyGreaterThanMaxAmount}\n message={props.warningMessage}\n />\n <Flex justify=\"center\">\n <WithdrawAction\n checkIsBridgeless={checkIsBridgeless}\n networkId={props.networkId}\n disabled={disabled}\n loading={loading}\n onWithdraw={props.onWithdraw}\n crossChainWithdraw={props.crossChainWithdraw}\n currentChain={currentChain}\n address={address}\n quantity={quantity}\n fee={fee}\n withdrawTo={withdrawTo}\n onTransfer={props.onTransfer}\n />\n </Flex>\n {enableWithdrawToExternalWallet && (\n <AddWalletDialog\n open={addWalletOpen}\n onOpenChange={setAddWalletOpen}\n onConfirm={handleAddExternalWallet}\n chain={currentChain}\n />\n )}\n </Box>\n );\n};\n","import { FC } from \"react\";\nimport {\n useWithdrawFormScript,\n WithdrawFormScriptOptions,\n} from \"./withdrawForm.script\";\nimport { WithdrawForm } from \"./withdrawForm.ui\";\n\nexport type WithdrawFormWidgetProps = WithdrawFormScriptOptions;\n\nexport const WithdrawFormWidget: FC<WithdrawFormWidgetProps> = (props) => {\n const state = useWithdrawFormScript(props);\n return <WithdrawForm {...state} />;\n};\n","import { ExtensionPositionEnum, ExtensionSlot } from \"@orderly.network/ui\";\nimport { DepositFormWidget } from \"../depositForm\";\nimport { DepositFormWidgetProps } from \"../depositForm/depositForm.widget\";\n\nexport const DepositSlot = (props: DepositFormWidgetProps) => {\n return (\n <ExtensionSlot\n position={ExtensionPositionEnum.DepositForm}\n defaultWidget={DepositFormWidget}\n {...props}\n />\n );\n};\n","import { ExtensionPositionEnum, ExtensionSlot } from \"@orderly.network/ui\";\nimport { WithdrawFormWidget } from \"../withdrawForm\";\nimport { WithdrawFormWidgetProps } from \"../withdrawForm/withdrawForm.widget\";\n\nexport const WithdrawSlot = (props: WithdrawFormWidgetProps) => {\n return (\n <ExtensionSlot\n position={ExtensionPositionEnum.WithdrawForm}\n defaultWidget={WithdrawFormWidget}\n {...props}\n />\n );\n};\n","import { FC, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n ArrowDownSquareFillIcon,\n ArrowUpSquareFillIcon,\n registerSimpleDialog,\n registerSimpleSheet,\n TabPanel,\n Tabs,\n} from \"@orderly.network/ui\";\nimport { DepositSlot } from \"./depositSlot\";\nimport { WithdrawSlot } from \"./withdrawSlot\";\n\nexport const DepositAndWithdrawWithDialogId = \"DepositAndWithdrawWithDialogId\";\nexport const DepositAndWithdrawWithSheetId = \"DepositAndWithdrawWithSheetId\";\n\nexport type DepositAndWithdrawProps = {\n activeTab?: \"deposit\" | \"withdraw\";\n close?: () => void;\n};\n\nexport const DepositAndWithdraw: FC<DepositAndWithdrawProps> = (props) => {\n const [activeTab, setActiveTab] = useState<string>(\n props.activeTab || \"deposit\",\n );\n const { t } = useTranslation();\n\n return (\n <Tabs\n value={activeTab}\n onValueChange={setActiveTab}\n variant=\"contained\"\n size=\"lg\"\n classNames={{\n tabsList: \"oui-px-0\",\n tabsContent: \"oui-pt-5\",\n }}\n >\n <TabPanel\n title={t(\"common.deposit\")}\n icon={<ArrowDownSquareFillIcon />}\n value=\"deposit\"\n >\n <DepositSlot close={props.close} />\n {/* <DepositFormWidget close={props.close} /> */}\n </TabPanel>\n <TabPanel\n title={t(\"common.withdraw\")}\n icon={<ArrowUpSquareFillIcon />}\n value=\"withdraw\"\n >\n <WithdrawSlot close={props.close} />\n {/* <WithdrawFormWidget close={props.close} /> */}\n </TabPanel>\n </Tabs>\n );\n};\n\nregisterSimpleDialog(DepositAndWithdrawWithDialogId, DepositAndWithdraw, {\n size: \"md\",\n classNames: {\n content: \"oui-border oui-border-line-6\",\n },\n});\n\nregisterSimpleSheet(DepositAndWithdrawWithSheetId, DepositAndWithdraw);\n","import { FC } from \"react\";\nimport { Box, Flex, textVariants } from \"@orderly.network/ui\";\nimport { ActionButton } from \"../../actionButton\";\nimport { AvailableQuantity } from \"../../availableQuantity\";\nimport { BrokerWallet } from \"../../brokerWallet\";\nimport { ChainSelect } from \"../../chainSelect\";\nimport { ExchangeDivider } from \"../../exchangeDivider\";\nimport { QuantityInput } from \"../../quantityInput\";\nimport { Slippage } from \"../../slippage\";\nimport { SwapCoin } from \"../../swapCoin\";\nimport { Web3Wallet } from \"../../web3Wallet\";\nimport { Notice } from \"../components/notice\";\nimport { SwapFee } from \"../components/swapFee\";\nimport { UseSwapDepositFormScriptReturn } from \"./swapDepositForm.script\";\n\nexport const SwapDepositForm: FC<UseSwapDepositFormScriptReturn> = (props) => {\n const {\n token,\n tokens,\n onTokenChange,\n amount,\n quantity,\n maxQuantity,\n swapQuantity,\n onQuantityChange,\n hintMessage,\n inputStatus,\n chains,\n currentChain,\n settingChain,\n onChainChange,\n actionType,\n onDeposit,\n onApprove,\n fetchBalance,\n dst,\n wrongNetwork,\n balanceRevalidating,\n loading,\n disabled,\n networkId,\n slippage,\n onSlippageChange,\n needSwap,\n needCrossSwap,\n swapPrice,\n swapRevalidating,\n warningMessage,\n fee,\n } = props;\n\n return (\n <Box\n id=\"oui-swap-deposit-form\"\n className={textVariants({ weight: \"semibold\" })}\n >\n <Box className=\"oui-mb-6 lg:oui-mb-8\">\n <Web3Wallet />\n\n <Box mt={3} mb={1}>\n <ChainSelect\n chains={chains}\n value={currentChain!}\n onValueChange={onChainChange}\n wrongNetwork={wrongNetwork}\n loading={settingChain}\n />\n <QuantityInput\n classNames={{\n root: \"oui-mt-[2px] oui-rounded-t-sm oui-rounded-b-xl\",\n }}\n value={quantity}\n onValueChange={onQuantityChange}\n tokens={tokens}\n token={token}\n onTokenChange={onTokenChange}\n status={inputStatus}\n hintMessage={hintMessage}\n fetchBalance={fetchBalance}\n data-testid=\"oui-testid-swap-deposit-dialog-quantity-input\"\n />\n </Box>\n\n <AvailableQuantity\n token={token}\n amount={amount}\n maxQuantity={maxQuantity}\n loading={balanceRevalidating}\n onClick={() => {\n onQuantityChange(maxQuantity);\n }}\n />\n <ExchangeDivider />\n\n <BrokerWallet />\n\n <QuantityInput\n readOnly\n token={dst as any}\n value={swapQuantity}\n loading={swapRevalidating}\n classNames={{\n root: \"oui-mt-3 oui-border-transparent focus-within:oui-outline-transparent\",\n }}\n />\n\n <Flex direction=\"column\" itemAlign=\"start\" mt={1} gapY={1}>\n <Flex justify=\"between\" width=\"100%\">\n {/* <SwapCoin token={token as any} dst={dst} price={swapPrice} /> */}\n {/* <SwapCoin\n sourceSymbol={token as any}\n targetSymbol={dst.symbol}\n indexPrice={swapPrice}\n /> */}\n {(needSwap || needCrossSwap) && (\n <Slippage value={slippage} onValueChange={onSlippageChange} />\n )}\n </Flex>\n\n <SwapFee {...fee} />\n </Flex>\n </Box>\n\n <Notice\n message={warningMessage}\n needSwap={needSwap}\n needCrossSwap={needCrossSwap}\n wrongNetwork={wrongNetwork}\n networkId={networkId}\n />\n\n <Flex justify=\"center\">\n <ActionButton\n actionType={actionType}\n symbol={token?.symbol}\n disabled={disabled}\n loading={loading}\n onDeposit={onDeposit}\n onApprove={onApprove}\n networkId={networkId}\n />\n </Flex>\n </Box>\n );\n};\n","import { useCallback, useEffect, useState } from \"react\";\nimport { API } from \"@orderly.network/types\";\nimport { getTokenByTokenList } from \"../../../utils\";\nimport { CurrentChain } from \"../../depositForm/hooks/useChainSelect\";\n\ntype Options = {\n currentChain: CurrentChain | null;\n tokensFilter?: (chainInfo: API.Chain) => API.TokenInfo[];\n};\n\nexport function useToken(options: Options) {\n const { currentChain, tokensFilter } = options;\n const [token, setToken] = useState<API.TokenInfo>();\n const [tokens, setTokens] = useState<API.TokenInfo[]>([]);\n\n // when chain changed and chain data ready then call this function\n const onChainInited = useCallback(\n (chainInfo?: API.Chain) => {\n if (chainInfo && chainInfo?.token_infos?.length > 0) {\n const tokens =\n typeof tokensFilter === \"function\"\n ? tokensFilter(chainInfo)\n : chainInfo.token_infos;\n\n setTokens(tokens);\n\n const newToken = getTokenByTokenList(tokens);\n\n if (!newToken) return;\n\n setToken(newToken);\n }\n },\n [tokensFilter],\n );\n\n useEffect(() => {\n onChainInited(currentChain?.info);\n // if settingChain is true, the currentChain will change, so use currentChain.id\n }, [currentChain?.id, onChainInited]);\n\n return { token, tokens, onTokenChange: setToken };\n}\n","import { useCallback, useEffect, useMemo } from \"react\";\nimport { useConfig, useDeposit, useLocalStorage } from \"@orderly.network/hooks\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { API, NetworkId } from \"@orderly.network/types\";\nimport { modal } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport {\n useActionType,\n useChainSelect,\n useDepositAction,\n useInputStatus,\n} from \"../../depositForm/hooks\";\nimport { SwapDialog } from \"../components/swapDialog\";\nimport { useNeedSwapAndCross } from \"../hooks/useNeedSwapAndCross\";\nimport { useSwapEnquiry } from \"../hooks/useSwapEnquiry\";\nimport { useSwapFee } from \"../hooks/useSwapFee\";\nimport { useToken } from \"../hooks/useToken\";\nimport { SwapMode } from \"../types\";\n\nexport type UseSwapDepositFormScriptReturn = ReturnType<\n typeof useSwapDepositFormScript\n>;\n\nexport type UseSwapDepositFormScriptOptions = {\n onClose?: () => void;\n};\n\nexport const useSwapDepositFormScript = (\n options: UseSwapDepositFormScriptOptions,\n) => {\n const [slippage, setSlippage] = useLocalStorage(\n \"orderly_swap_deposit_slippage\",\n 1,\n );\n\n const config = useConfig();\n const brokerName = config.get(\"brokerName\") || \"\";\n const networkId = config.get(\"networkId\") as NetworkId;\n\n const { wrongNetwork } = useAppContext();\n\n const { chains, currentChain, settingChain, onChainChange } =\n useChainSelect();\n\n const tokensFilter = useCallback((chainInfo: API.Chain) => {\n return (\n chainInfo.token_infos.filter((token) => {\n if (chainInfo.network_infos.bridgeless && token.symbol === \"USDC\") {\n return true;\n }\n return !!(token as API.TokenInfo).swap_enable;\n }) ?? []\n );\n }, []);\n\n const { token, tokens, onTokenChange } = useToken({\n currentChain,\n tokensFilter,\n });\n\n const {\n dst,\n balance,\n allowance,\n depositFeeRevalidating,\n depositFee,\n quantity,\n setQuantity,\n approve,\n deposit,\n isNativeToken,\n balanceRevalidating,\n fetchBalance,\n } = useDeposit({\n address: token?.address,\n decimals: token?.decimals,\n srcChainId: currentChain?.id,\n srcToken: token?.symbol,\n crossChainRouteAddress: (\n currentChain?.info?.network_infos as API.NetworkInfos\n )?.cross_chain_router,\n depositorAddress: (currentChain?.info?.network_infos as API.NetworkInfos)\n ?.depositor,\n });\n\n const maxQuantity = useMemo(\n () =>\n new Decimal(balance || 0)\n .todp(token?.precision ?? 2, Decimal.ROUND_DOWN)\n .toString(),\n [balance, token],\n );\n\n const { inputStatus, hintMessage } = useInputStatus({\n quantity,\n maxQuantity,\n });\n\n const { needSwap, needCrossSwap } = useNeedSwapAndCross({\n srcToken: token,\n srcChainId: currentChain?.id,\n dstChainId: dst?.chainId,\n });\n\n const {\n enquiry,\n transactionInfo,\n amount: swapAmount,\n querying: swapRevalidating,\n warningMessage,\n cleanTransactionInfo,\n } = useSwapEnquiry({\n quantity,\n dst,\n queryParams: {\n network: dst.network,\n srcToken: token?.address,\n srcNetwork: currentChain?.info?.network_infos?.shortName,\n dstToken: dst.address,\n crossChainRouteAddress: (\n currentChain?.info?.network_infos as API.NetworkInfos\n )?.cross_chain_router,\n amount: new Decimal(quantity || 0)\n .mul(10 ** (token?.decimals || 0))\n .toString(),\n slippage,\n },\n needSwap,\n needCrossSwap,\n });\n\n const cleanData = () => {\n cleanTransactionInfo();\n setQuantity(\"\");\n };\n\n const onSuccess = useCallback(() => {\n cleanData();\n options.onClose?.();\n }, [options.onClose]);\n\n const onSwapDeposit = useCallback(async () => {\n // const _params = getSwapTestData(needCrossSwap);\n // return modal.show(SwapDialog, _params);\n\n return enquiry()\n .then((transaction) => {\n const amountValue = needCrossSwap\n ? transaction.route_infos?.dst.amounts[1]\n : transaction.route_infos?.amounts[1];\n\n const params = {\n mode: needCrossSwap ? SwapMode.Cross : SwapMode.Single,\n src: {\n chain: currentChain?.id,\n token: token!.symbol,\n // swap precision\n displayDecimals: token?.precision,\n amount: quantity,\n decimals: token!.decimals,\n },\n dst: {\n chain: dst.chainId,\n token: dst.symbol,\n displayDecimals: 2,\n amount: new Decimal(amountValue)\n .div(Math.pow(10, dst.decimals!))\n .toString(),\n decimals: dst.decimals,\n },\n chain: currentChain?.info?.network_infos,\n nativeToken: currentChain?.info?.nativeToken,\n depositFee,\n transactionData: transaction,\n slippage,\n brokerName,\n };\n\n return modal.show(SwapDialog, params);\n })\n .then((isSuccss) => {\n if (isSuccss) {\n cleanData();\n }\n })\n .catch((error) => {\n // toast.error(error?.message || \"Error\");\n });\n }, [quantity, needCrossSwap, dst, currentChain, slippage, depositFee]);\n\n const { submitting, onApprove, onDeposit } = useDepositAction({\n quantity,\n allowance,\n approve,\n deposit,\n enableCustomDeposit: needSwap || needCrossSwap,\n customDeposit: onSwapDeposit,\n onSuccess,\n });\n\n const loading = submitting || depositFeeRevalidating! || swapRevalidating;\n\n const disabled =\n !quantity ||\n Number(quantity) === 0 ||\n inputStatus === \"error\" ||\n depositFeeRevalidating! ||\n swapRevalidating;\n\n const swapPrice = useMemo(() => {\n if (needCrossSwap || needSwap) {\n return transactionInfo.price;\n }\n return 1;\n }, [transactionInfo]);\n\n const markPrice = useMemo(() => {\n if (needCrossSwap || needSwap) {\n return isNativeToken\n ? transactionInfo.markPrices.native_token\n : transactionInfo.markPrices.from_token;\n }\n\n return 1;\n }, [needSwap, needCrossSwap, isNativeToken, transactionInfo]);\n\n const amount = useMemo(() => {\n return new Decimal(quantity || 0).mul(markPrice).toNumber();\n }, [quantity, markPrice]);\n\n const swapQuantity = needSwap || needCrossSwap ? swapAmount : quantity;\n\n const actionType = useActionType({\n isNativeToken,\n allowance,\n quantity,\n maxQuantity,\n });\n\n const fee = useSwapFee({\n nativeToken: currentChain?.info?.nativeToken,\n isNativeToken,\n src: token,\n depositFee,\n transactionInfo,\n needSwap,\n needCrossSwap,\n });\n\n useEffect(() => {\n cleanData();\n }, [token, currentChain?.id]);\n\n return {\n token,\n tokens,\n onTokenChange,\n amount,\n quantity,\n maxQuantity,\n swapQuantity,\n onQuantityChange: setQuantity,\n hintMessage,\n inputStatus,\n chains,\n currentChain,\n settingChain,\n onChainChange,\n actionType,\n onDeposit,\n onApprove,\n fetchBalance,\n dst,\n wrongNetwork,\n balanceRevalidating,\n loading,\n disabled,\n networkId,\n slippage,\n onSlippageChange: setSlippage,\n needSwap,\n needCrossSwap,\n swapPrice,\n swapRevalidating,\n warningMessage,\n fee,\n };\n};\n","import { FC } from \"react\";\nimport {\n useSwapDepositFormScript,\n UseSwapDepositFormScriptOptions,\n} from \"./swapDepositForm.script\";\nimport { SwapDepositForm } from \"./swapDepositForm.ui\";\n\nexport type SwapDepositFormWidgetProps = UseSwapDepositFormScriptOptions;\n\nexport const SwapDepositFormWidget: FC<SwapDepositFormWidgetProps> = (\n props,\n) => {\n const state = useSwapDepositFormScript(props);\n return <SwapDepositForm {...state} />;\n};\n","import { useState } from \"react\";\nimport { SubAccount } from \"@orderly.network/hooks\";\nimport {\n Box,\n DropdownMenuContent,\n DropdownMenuPortal,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n Flex,\n ScrollArea,\n Text,\n cn,\n} from \"@orderly.network/ui\";\nimport { ExchangeIcon } from \"../../icons\";\n\ntype AccountSelectProps = {\n subAccounts?: SubAccount[];\n value?: SubAccount;\n onValueChange?: (subAccount: SubAccount) => void;\n};\n\nexport const AccountSelect: React.FC<AccountSelectProps> = (props) => {\n const { subAccounts = [], value } = props;\n const [open, setOpen] = useState(false);\n\n const selectable = subAccounts.length > 1;\n\n const trigger = (\n <Flex\n intensity={500}\n className={cn(\n \"oui-rounded-b-sm oui-rounded-t-xl oui-border oui-border-line\",\n selectable ? \"oui-cursor-pointer\" : \"oui-cursor-auto oui-bg-base-6\",\n )}\n height={54}\n px={3}\n justify=\"between\"\n itemAlign=\"center\"\n >\n <Flex direction=\"column\" itemAlign=\"start\">\n <Text.formatted\n size=\"xs\"\n intensity={80}\n rule={value?.description ? undefined : \"address\"}\n >\n {value?.description || value?.id}\n </Text.formatted>\n <Text intensity={36} size=\"2xs\">\n {`ID: `}\n <Text.formatted rule=\"address\">{value?.id}</Text.formatted>\n </Text>\n </Flex>\n {selectable && <ExchangeIcon className=\"oui-text-base-contrast-54\" />}\n </Flex>\n );\n\n const content = subAccounts.map((subAccount, index) => {\n const isActive = subAccount.id === value?.id;\n\n const asset = subAccount?.holding?.find(\n (item) => item.token === \"USDC\",\n )?.holding;\n\n return (\n <Flex\n key={subAccount.id}\n px={2}\n r=\"base\"\n justify=\"between\"\n className={cn(\n \"oui-transfer-form-account-select-item\",\n \"oui-cursor-pointer oui-py-[6px] hover:oui-bg-base-5\",\n isActive && \"oui-bg-base-5\",\n index !== 0 && \"oui-mt-[2px]\",\n )}\n onClick={async () => {\n setOpen(false);\n props.onValueChange?.(subAccount);\n }}\n >\n <Flex gapX={1} itemAlign=\"center\">\n <Flex direction=\"column\" itemAlign=\"start\" className=\"oui-text-2xs\">\n <Text.formatted\n rule={subAccount?.description ? undefined : \"address\"}\n intensity={80}\n >\n {subAccount?.description || subAccount?.id}\n </Text.formatted>\n <Text intensity={36} size=\"2xs\">\n {`ID: `}\n <Text.formatted rule=\"address\">{subAccount?.id}</Text.formatted>\n </Text>\n </Flex>\n </Flex>\n <Flex gapX={3}>\n <Text.numeral size=\"2xs\" intensity={54} unit=\" USDC\">\n {asset || 0}\n </Text.numeral>\n {isActive && (\n <Box\n width={4}\n height={4}\n r=\"full\"\n className=\"oui-transfer-form-account-select-active-dot oui-bg-[linear-gradient(270deg,#59B0FE_0%,#26FEFE_100%)]\"\n />\n )}\n </Flex>\n </Flex>\n );\n });\n\n return (\n <DropdownMenuRoot open={selectable ? open : false} onOpenChange={setOpen}>\n <DropdownMenuTrigger asChild>{trigger}</DropdownMenuTrigger>\n <DropdownMenuPortal>\n <DropdownMenuContent\n onCloseAutoFocus={(e) => e.preventDefault()}\n align=\"start\"\n sideOffset={2}\n className={cn(\n \"oui-transfer-form-account-select-dropdown-menu-content\",\n \"oui-font-semibold\",\n \"oui-bg-base-8 oui-p-1\",\n \"oui-w-[var(--radix-dropdown-menu-trigger-width)]\",\n \"oui-select-none oui-rounded-md\",\n )}\n >\n <ScrollArea>\n <div className=\"oui-max-h-[254px]\">{content} </div>\n </ScrollArea>\n </DropdownMenuContent>\n </DropdownMenuPortal>\n </DropdownMenuRoot>\n );\n};\n","import { FC } from \"react\";\nimport { Trans, useTranslation } from \"@orderly.network/i18n\";\nimport { Box, Button, Flex, textVariants, Text, cn } from \"@orderly.network/ui\";\nimport { AuthGuard } from \"@orderly.network/ui-connector\";\nimport { TransferVerticalIcon } from \"../../icons\";\nimport { AccountSelect } from \"../accountSelect\";\nimport { AvailableQuantity } from \"../availableQuantity\";\nimport { ExchangeDivider } from \"../exchangeDivider\";\nimport { QuantityInput } from \"../quantityInput\";\nimport { UnsettlePnlInfo } from \"../unsettlePnlInfo\";\nimport { TransferFormScriptReturn } from \"./transferForm.script\";\n\nexport type TransferFormProps = TransferFormScriptReturn;\n\nexport const TransferForm: FC<TransferFormProps> = (props) => {\n const {\n networkId,\n disabled,\n onTransfer,\n quantity,\n onQuantityChange,\n amount,\n tokens,\n token,\n onTokenChange,\n maxQuantity,\n submitting,\n hintMessage,\n inputStatus,\n hasPositions,\n onSettlePnl,\n unsettledPnL,\n toAccountAsset,\n fromAccounts,\n toAccounts,\n fromAccount,\n onFromAccountChange,\n toAccount,\n onToAccountChange,\n onExchange,\n } = props;\n\n const { t } = useTranslation();\n\n const buttonSize = { initial: \"md\", lg: \"lg\" } as const;\n\n return (\n <Box id=\"oui-deposit-form\" className={textVariants({ weight: \"semibold\" })}>\n <Box className=\"oui-mb-6 lg:oui-mb-8\">\n <Text size=\"sm\" intensity={98}>\n {t(\"transfer.internalTransfer.from\")}\n </Text>\n <Box mt={1} mb={1}>\n <AccountSelect\n subAccounts={fromAccounts}\n value={fromAccount}\n onValueChange={onFromAccountChange}\n />\n <QuantityInput\n classNames={{\n root: \"oui-mt-[2px] oui-rounded-t-sm oui-rounded-b-xl\",\n }}\n value={quantity}\n onValueChange={onQuantityChange}\n tokens={tokens}\n token={token}\n onTokenChange={onTokenChange}\n hintMessage={hintMessage}\n status={inputStatus}\n />\n </Box>\n <AvailableQuantity\n token={token}\n amount={amount}\n maxQuantity={maxQuantity}\n onClick={() => {\n onQuantityChange(maxQuantity.toString());\n }}\n />\n <Box mx={2} mt={1}>\n <UnsettlePnlInfo\n unsettledPnl={unsettledPnL}\n hasPositions={hasPositions}\n onSettlePnl={onSettlePnl}\n tooltipContent={t(\"transfer.internalTransfer.unsettled.tooltip\")}\n dialogContent={\n // @ts-ignore\n <Trans i18nKey=\"transfer.internalTransfer.settlePnl.description\" />\n }\n />\n </Box>\n\n <ExchangeDivider\n icon={\n <TransferVerticalIcon\n // TODO: determines if the current orderly key is the main account\n // className={cn(\n // isMainAccount\n // ? \"oui-cursor-pointer oui-text-primary\"\n // : \" oui-cursor-not-allowed oui-text-base-contrast-20\",\n // )}\n // onClick={isMainAccount ? onExchange : undefined}\n className=\"oui-cursor-pointer oui-text-primary\"\n onClick={onExchange}\n />\n }\n />\n\n <Text size=\"sm\" intensity={98}>\n {t(\"transfer.internalTransfer.to\")}\n </Text>\n <Box mt={1}>\n <AccountSelect\n subAccounts={toAccounts}\n value={toAccount}\n onValueChange={onToAccountChange}\n />\n <Flex\n className={cn(\n \"oui-mt-[2px] oui-h-[31px] oui-text-base-contrast-54\",\n \"oui-rounded-b-xl oui-rounded-t-sm\",\n )}\n justify=\"between\"\n itemAlign=\"center\"\n px={3}\n intensity={600}\n >\n <Text size=\"2xs\">\n {t(\"transfer.internalTransfer.currentAssetValue\")}\n </Text>\n <Text.numeral\n size=\"2xs\"\n intensity={54}\n unit={` ${token.symbol}`}\n dp={token?.precision}\n padding={false}\n >\n {toAccountAsset}\n </Text.numeral>\n </Flex>\n </Box>\n </Box>\n\n <Flex justify=\"center\">\n <Box className=\"oui-w-full lg:oui-w-auto lg:oui-min-w-[184px]\">\n <AuthGuard\n networkId={networkId}\n buttonProps={{\n fullWidth: true,\n size: buttonSize,\n }}\n >\n <Button\n fullWidth\n disabled={disabled}\n loading={submitting}\n size={buttonSize}\n onClick={onTransfer}\n >\n {t(\"common.transfer\")}\n </Button>\n </AuthGuard>\n </Box>\n </Flex>\n </Box>\n );\n};\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport {\n SubAccount,\n useAccount,\n useConfig,\n useSubAccountDataObserver,\n useSubAccountMaxWithdrawal,\n useTransfer,\n} from \"@orderly.network/hooks\";\nimport { useAppStore } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API, NetworkId } from \"@orderly.network/types\";\nimport { toast } from \"@orderly.network/ui\";\nimport { Decimal, zero } from \"@orderly.network/utils\";\nimport { InputStatus } from \"../../types\";\nimport { getTransferErrorMessage } from \"../../utils\";\nimport { useSettlePnl } from \"../unsettlePnlInfo/useSettlePnl\";\n\nexport type TransferFormScriptReturn = ReturnType<typeof useTransferFormScript>;\n\nexport type TransferFormScriptOptions = {\n /** target sub account id */\n toAccountId?: string;\n token?: string;\n close?: () => void;\n};\n\nconst DEFAULT_TOKEN = {\n symbol: \"USDC\",\n} as API.TokenInfo;\n\nexport const useTransferFormScript = (options: TransferFormScriptOptions) => {\n const { t } = useTranslation();\n const [quantity, setQuantity] = useState<string>(\"\");\n const [fromAccount, setFromAccount] = useState<SubAccount>();\n const [toAccount, setToAccount] = useState<SubAccount>();\n const [mainAccount, setMainAccount] = useState<SubAccount>();\n const [tokens, setTokens] = useState<API.TokenInfo[]>([DEFAULT_TOKEN]);\n const [token, setToken] = useState<API.TokenInfo>(DEFAULT_TOKEN);\n const [holdingMap, setHoldingMap] = useState<Record<string, API.Holding[]>>(\n {},\n );\n\n const networkId = useConfig(\"networkId\") as NetworkId;\n\n const { state, isMainAccount, subAccount } = useAccount();\n\n const tokensInfo = useAppStore((state) => state.tokensInfo);\n\n const {\n transfer,\n submitting,\n maxAmount: currentMaxAmount,\n unsettledPnL: currentUnsettledPnL,\n } = useTransfer({ fromAccountId: fromAccount?.id, token: token.symbol });\n\n const subAccounts = state.subAccounts;\n const mainAccountId = state.mainAccountId;\n const accountId = state.accountId;\n\n // when current account is main account, and fromAccount is not main account, set observerAccountId to fromAccountId\n // current sub account use main account orderly key to transfer, so fromAccount can be main account or current sub account\n const observerAccountId = isMainAccount\n ? fromAccount?.id !== mainAccountId\n ? fromAccount?.id\n : undefined\n : fromAccount?.id;\n\n const { hasPositions: currentHasPositions, onSettlePnl } = useSettlePnl({\n accountId: fromAccount?.id,\n });\n\n // when select sub account, open the private websocket\n const { portfolio, positions } = useSubAccountDataObserver(observerAccountId);\n const subAccountMaxAmount = useSubAccountMaxWithdrawal({\n token: token.symbol,\n unsettledPnL: portfolio?.unsettledPnL,\n freeCollateral: portfolio?.freeCollateral ?? zero,\n holdings: portfolio?.holding,\n });\n\n const formHasPositions = useMemo(\n () => !!positions?.rows?.length,\n [positions],\n );\n\n const hasPositions = useMemo(() => {\n return observerAccountId ? formHasPositions : currentHasPositions;\n }, [observerAccountId, formHasPositions, currentHasPositions]);\n\n const { unsettledPnL, maxQuantity } = useMemo(() => {\n if (observerAccountId) {\n return {\n unsettledPnL: portfolio?.unsettledPnL,\n maxQuantity: subAccountMaxAmount,\n };\n }\n return {\n unsettledPnL: currentUnsettledPnL,\n maxQuantity: currentMaxAmount,\n };\n }, [\n observerAccountId,\n currentUnsettledPnL,\n currentMaxAmount,\n portfolio?.unsettledPnL,\n subAccountMaxAmount,\n ]);\n\n const { inputStatus, hintMessage } = useInputStatus({\n quantity,\n maxQuantity,\n unsettledPnL,\n });\n\n const onTransfer = useCallback(() => {\n const num = Number(quantity);\n\n if (isNaN(num) || num <= 0) {\n toast.error(t(\"transfer.quantity.invalid\"));\n return;\n }\n\n if (submitting || !toAccount) return;\n\n transfer(token.symbol!, {\n account_id: toAccount.id,\n amount: new Decimal(quantity).toNumber(),\n })\n .then(() => {\n toast.success(t(\"transfer.internalTransfer.success\"));\n setQuantity(\"\");\n options.close?.();\n })\n .catch((err) => {\n console.error(\"transfer error: \", err);\n const errorMsg = getTransferErrorMessage(err.code);\n toast.error(errorMsg);\n });\n }, [t, token, quantity, submitting, transfer, toAccount]);\n\n const disabled = submitting || !quantity || inputStatus === \"error\";\n\n const amount = useMemo(() => {\n const markPrice = 1;\n return new Decimal(quantity || 0).mul(markPrice).toNumber();\n }, [quantity]);\n\n const toAccountAsset = useMemo(() => {\n if (!toAccount?.id) {\n return 0;\n }\n const holdings = holdingMap[toAccount.id];\n const asset = holdings?.find((item) => item.token === token.symbol);\n return asset?.holding || 0;\n }, [toAccount, token, holdingMap]);\n\n const { fromAccounts, toAccounts } = useMemo(() => {\n if (isMainAccount) {\n return {\n fromAccounts: mainAccount ? [mainAccount, ...(subAccounts || [])] : [],\n toAccounts:\n // only from account is main account, can transfer to other sub accounts\n fromAccount?.id === mainAccountId ? subAccounts : [],\n };\n }\n\n return {\n fromAccounts: [],\n toAccounts: [],\n };\n }, [isMainAccount, mainAccountId, mainAccount, subAccounts, fromAccount]);\n\n // init and update main account holding\n useEffect(() => {\n if (!mainAccountId) return;\n\n const _mainAccount = {\n id: mainAccountId!,\n description: t(\"common.mainAccount\"),\n holding: [],\n };\n\n setMainAccount(_mainAccount);\n\n subAccount.refresh().then((res) => {\n setHoldingMap(res);\n setMainAccount({\n ..._mainAccount,\n holding: res[mainAccountId],\n });\n });\n }, [t, mainAccountId]);\n\n // init fromAccount\n useEffect(() => {\n // if current account is main account, set fromAccount to main account\n // if current account is sub account, set fromAccount to current sub account\n setFromAccount(\n isMainAccount\n ? mainAccount\n : subAccounts?.find((item) => item.id === accountId),\n );\n }, [isMainAccount, mainAccount, subAccounts, accountId]);\n\n // init toAccount\n useEffect(() => {\n // if current account is main account\n if (isMainAccount) {\n const firstSubAccount = subAccounts?.[0];\n\n // if toAccount is not set, set toAccount to first sub account\n const selectAccount = options.toAccountId\n ? subAccounts?.find((item) => item.id === options.toAccountId) ||\n firstSubAccount\n : firstSubAccount;\n\n if (selectAccount) {\n setToAccount(selectAccount);\n }\n } else {\n // if current account is sub account, set toAccount to main account\n setToAccount(mainAccount);\n }\n }, [options?.toAccountId, isMainAccount, mainAccount, subAccounts]);\n\n useEffect(() => {\n const tokens = tokensInfo?.map((item) => ({\n symbol: item.token,\n precision: item.decimals,\n })) as API.TokenInfo[];\n\n if (tokens?.length) {\n // sort tokens, USDC should be the first\n tokens.sort((a, b) => {\n if (a.symbol === \"USDC\") return -1;\n if (b.symbol === \"USDC\") return 1;\n return 0;\n });\n\n const targetToken = tokens?.find((item) => item.symbol === options.token);\n\n setTokens(tokens);\n setToken(targetToken || tokens?.[0] || DEFAULT_TOKEN);\n }\n }, [tokensInfo, options.token]);\n\n const onFromAccountChange = useCallback(\n (account: SubAccount) => {\n setFromAccount(account);\n\n const firstSubAccount = subAccounts?.[0];\n // if fromAccount is main account, set toAccount to first sub account\n if (account?.id === mainAccountId) {\n setToAccount(firstSubAccount);\n return;\n }\n\n // if fromAccount is not main account, set toAccount to main account\n // sub account only can transfer to main account\n if (account?.id && account?.id !== mainAccountId) {\n setToAccount(mainAccount);\n return;\n }\n },\n [mainAccountId, mainAccount, subAccounts],\n );\n\n const onToAccountChange = useCallback((account: SubAccount) => {\n setToAccount(account);\n }, []);\n\n const onExchange = useCallback(() => {\n setFromAccount(toAccount);\n setToAccount(fromAccount);\n }, [fromAccount, toAccount]);\n\n return {\n networkId,\n onTransfer,\n quantity,\n amount,\n onQuantityChange: setQuantity,\n maxQuantity,\n tokens,\n token,\n onTokenChange: setToken,\n disabled,\n submitting,\n hintMessage,\n inputStatus,\n hasPositions,\n onSettlePnl,\n unsettledPnL,\n toAccountAsset,\n fromAccount,\n toAccount,\n fromAccounts,\n onFromAccountChange,\n toAccounts,\n onToAccountChange,\n onExchange,\n isMainAccount,\n };\n};\n\ntype Options = {\n quantity: string;\n maxQuantity: string | number;\n unsettledPnL?: number;\n};\n\nexport function useInputStatus(options: Options) {\n const { quantity, maxQuantity, unsettledPnL = 0 } = options;\n const { t } = useTranslation();\n\n const [inputStatus, setInputStatus] = useState<InputStatus>(\"default\");\n const [hintMessage, setHintMessage] = useState<string>();\n\n useEffect(() => {\n if (!quantity) {\n // reset input status when value is empty\n setInputStatus(\"default\");\n setHintMessage(\"\");\n return;\n }\n\n const qty = new Decimal(quantity);\n\n if (unsettledPnL < 0) {\n if (qty.gt(maxQuantity)) {\n setInputStatus(\"error\");\n setHintMessage(t(\"transfer.insufficientBalance\"));\n } else {\n setInputStatus(\"default\");\n setHintMessage(\"\");\n }\n } else {\n if (qty.gt(maxQuantity)) {\n setInputStatus(\"error\");\n setHintMessage(t(\"transfer.insufficientBalance\"));\n } else if (\n qty.gt(new Decimal(maxQuantity).minus(unsettledPnL)) &&\n qty.lessThanOrEqualTo(maxQuantity)\n ) {\n setInputStatus(\"warning\");\n setHintMessage(t(\"settle.settlePnl.warning\"));\n } else {\n // reset input status\n setInputStatus(\"default\");\n setHintMessage(\"\");\n }\n }\n }, [quantity, maxQuantity]);\n\n return { inputStatus, hintMessage };\n}\n","import { FC } from \"react\";\nimport { i18n } from \"@orderly.network/i18n\";\nimport { registerSimpleDialog } from \"@orderly.network/ui\";\nimport { registerSimpleSheet } from \"@orderly.network/ui\";\nimport {\n TransferFormScriptOptions,\n useTransferFormScript,\n} from \"./transferForm.script\";\nimport { TransferForm } from \"./transferForm.ui\";\n\nexport const TransferDialogId = \"TransferDialogId\";\nexport const TransferSheetId = \"TransferSheetId\";\n\nexport type TransferFormWidgetProps = TransferFormScriptOptions;\n\nexport const TransferFormWidget = (props: TransferFormWidgetProps) => {\n const state = useTransferFormScript({\n toAccountId: props.toAccountId,\n token: props.token,\n close: props.close,\n });\n return <TransferForm {...state} />;\n};\n\nexport const TransferWidget: FC<TransferFormWidgetProps> = (props) => {\n return (\n <TransferFormWidget\n close={props.close}\n toAccountId={props.toAccountId}\n token={props.token}\n />\n );\n};\n\nregisterSimpleDialog(TransferDialogId, TransferWidget, {\n size: \"md\",\n classNames: {\n content: \"oui-border oui-border-line-6\",\n },\n title: () => i18n.t(\"common.transfer\"),\n});\n\nregisterSimpleSheet(TransferSheetId, TransferWidget, {\n title: () => i18n.t(\"common.transfer\"),\n});\n","import React from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { AccountStatusEnum, NetworkId } from \"@orderly.network/types\";\nimport { Box, Button } from \"@orderly.network/ui\";\nimport { AuthGuard } from \"@orderly.network/ui-connector\";\n\nexport interface ConvertActionButtonProps {\n disabled?: boolean;\n loading?: boolean;\n symbol?: string;\n networkId?: NetworkId;\n onConvert?: React.MouseEventHandler<HTMLButtonElement>;\n}\n\nexport const ConvertAction: React.FC<ConvertActionButtonProps> = (props) => {\n const { disabled, loading, networkId, onConvert } = props;\n const { t } = useTranslation();\n return (\n <Box className=\"oui-w-full lg:oui-w-auto lg:oui-min-w-[184px]\">\n <AuthGuard\n status={AccountStatusEnum.EnableTrading}\n networkId={networkId}\n buttonProps={{ fullWidth: true, size: { initial: \"md\", lg: \"lg\" } }}\n >\n <Button\n fullWidth\n disabled={disabled}\n loading={loading}\n size={{ initial: \"md\", lg: \"lg\" }}\n onClick={onConvert}\n >\n {t(\"transfer.convert\")}\n </Button>\n </AuthGuard>\n </Box>\n );\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { useTokensInfo } from \"@orderly.network/hooks\";\nimport { Arbitrum, type API } from \"@orderly.network/types\";\n\nconst splitTokenBySymbol = <T extends API.Chain>(items: T[]) => {\n return items.reduce<Record<\"usdc\" | \"others\", T[]>>(\n (result, item) => {\n if (item.token?.toUpperCase() === \"USDC\") {\n result.usdc.push(item);\n } else {\n result.others.push(item);\n }\n return result;\n },\n { usdc: [], others: [] },\n );\n};\n\nconst findChainInfo = (tokenInfo: API.Chain) => {\n const arbitrumChainInfo = tokenInfo.chain_details.find(\n (item) => parseInt(item.chain_id) === Arbitrum.id,\n );\n\n const nativeTokenChainInfo = tokenInfo.chain_details.find(\n (item) => !item.contract_address,\n );\n\n const nativeTokenAddress = \"0x0000000000000000000000000000000000000000\";\n\n if (arbitrumChainInfo) {\n return {\n contract_address:\n arbitrumChainInfo.contract_address || nativeTokenAddress,\n quoteChainId: arbitrumChainInfo.chain_id,\n decimals: arbitrumChainInfo.decimals,\n };\n }\n\n if (nativeTokenChainInfo) {\n return {\n contract_address: nativeTokenAddress,\n quoteChainId: nativeTokenChainInfo.chain_id,\n decimals: nativeTokenChainInfo.decimals,\n };\n }\n\n return {\n contract_address: tokenInfo.chain_details[0]?.contract_address,\n quoteChainId: tokenInfo.chain_details[0]?.chain_id,\n decimals: tokenInfo.chain_details[0]?.decimals,\n };\n};\n\ninterface Options {\n defaultValue?: string;\n}\n\ntype ConvertTokenInfo = API.Chain & {\n contract_address: string;\n quoteChainId: string;\n precision: number;\n};\n\nexport const useToken = (options: Options) => {\n const { defaultValue } = options;\n\n const [sourceToken, setSourceToken] = useState<ConvertTokenInfo>();\n const [targetToken, setTargetToken] = useState<ConvertTokenInfo>();\n const [sourceTokens, setSourceTokens] = useState<ConvertTokenInfo[]>([]);\n\n const tokensInfo = useTokensInfo();\n\n const newTokensInfo = useMemo(() => {\n const filteredTokensInfo = tokensInfo.filter((item) => item.on_chain_swap);\n\n return filteredTokensInfo.map((item) => {\n const chainInfo = findChainInfo(item);\n return {\n ...item,\n symbol: item.token,\n precision: item.decimals ?? 6,\n ...chainInfo,\n };\n });\n }, [tokensInfo]);\n\n useEffect(() => {\n const { usdc, others } = splitTokenBySymbol(newTokensInfo);\n setSourceToken(() => {\n if (defaultValue) {\n const defaultToken = others.find(({ token }) => token === defaultValue);\n return defaultToken ? defaultToken : others[0];\n }\n return others[0];\n });\n setSourceTokens(others);\n setTargetToken(usdc[0]);\n }, [defaultValue, newTokensInfo]);\n\n const targetChainInfo = useMemo(() => {\n const info = targetToken?.chain_details?.find(\n (item) => item.chain_id === sourceToken?.quoteChainId,\n );\n return {\n ...info,\n precision: targetToken?.precision,\n };\n }, [sourceToken, targetToken]);\n\n return {\n sourceToken,\n sourceTokens,\n onSourceTokenChange: setSourceToken,\n targetToken,\n targetChainInfo,\n };\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport {\n useConfig,\n useConvert,\n useComputedLTV,\n useLocalStorage,\n useOdosQuote,\n useWalletConnector,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { account } from \"@orderly.network/perp\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport type { NetworkId } from \"@orderly.network/types\";\nimport { toast } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useSettlePnl } from \"../unsettlePnlInfo/useSettlePnl\";\nimport { useToken } from \"./hooks/useToken\";\n\nconst { calcMinimumReceived } = account;\n\nexport type ConvertFormScriptReturn = ReturnType<typeof useConvertFormScript>;\n\nconst ORDERLY_CONVERT_SLIPPAGE_KEY = \"orderly_convert_slippage\";\n\nexport interface ConvertFormScriptOptions {\n token?: string;\n close?: () => void;\n}\n\nexport const normalizeAmount = (amount: string, decimals: number) => {\n return new Decimal(amount).mul(new Decimal(10).pow(decimals)).toFixed(0);\n};\n\nexport const unnormalizeAmount = (amount: string, decimals: number) => {\n return new Decimal(amount).div(new Decimal(10).pow(decimals)).toString();\n};\n\nexport const useConvertFormScript = (options: ConvertFormScriptOptions) => {\n const { token: defaultToken, close } = options;\n\n const { t } = useTranslation();\n const [loading, setLoading] = useState<boolean>(false);\n\n const config = useConfig();\n\n const networkId = config.get(\"networkId\") as NetworkId;\n\n const [quantity, setQuantity] = useState<string>(\"\");\n\n const { wrongNetwork } = useAppContext();\n\n const { wallet } = useWalletConnector();\n\n const {\n sourceToken,\n sourceTokens,\n onSourceTokenChange,\n targetToken,\n targetChainInfo,\n } = useToken({ defaultValue: defaultToken });\n\n const { walletName, address } = useMemo(\n () => ({\n walletName: wallet?.label,\n address: wallet?.accounts?.[0].address,\n }),\n [wallet],\n );\n\n const onQuantityChange = (qty: string) => {\n setQuantity(qty);\n };\n\n const [slippage, setSlippage] = useLocalStorage(\n ORDERLY_CONVERT_SLIPPAGE_KEY,\n 1,\n );\n\n const { maxAmount, convert } = useConvert({ token: sourceToken?.token });\n\n const onConvert = async () => {\n if (loading) {\n return;\n }\n setLoading(true);\n return convert({\n amount: Number(quantity),\n slippage: new Decimal(slippage).div(100).toNumber(),\n })\n .then(() => {\n toast.success(t(\"transfer.convert.completed\"));\n close?.();\n setQuantity(\"\");\n })\n .catch((err: Error) => {\n toast.error(\n err.message?.includes(\"user rejected\")\n ? t(\"transfer.convert.failed\")\n : err.message,\n );\n })\n .finally(() => {\n setLoading(false);\n });\n };\n\n const [postQuote, { data: quoteData, isMutating: isQuoteLoading }] =\n useOdosQuote();\n\n useEffect(() => {\n const { quoteChainId, contract_address, decimals } = sourceToken || {};\n const targetAddress = targetChainInfo?.contract_address;\n\n if (quantity && quoteChainId && contract_address && targetAddress) {\n // https://docs.odos.xyz/build/api-docs\n postQuote({\n chainId: parseInt(quoteChainId),\n inputTokens: [\n {\n amount: normalizeAmount(quantity, decimals!),\n tokenAddress: contract_address,\n },\n ],\n outputTokens: [\n {\n proportion: 1,\n tokenAddress: targetAddress,\n },\n ],\n // simple: true,\n });\n }\n }, [quantity, sourceToken, targetChainInfo, postQuote]);\n\n const memoizedOutAmounts = useMemo<string>(() => {\n if (!quoteData || isQuoteLoading) {\n return \"-\";\n }\n return quoteData?.outAmounts[0];\n }, [quoteData, isQuoteLoading]);\n\n const memoizedConvertRate = useMemo(() => {\n if (!quoteData || isQuoteLoading) {\n return \"-\";\n }\n\n const rate = new Decimal(\n unnormalizeAmount(\n quoteData.outAmounts[0],\n targetChainInfo?.decimals ?? 6,\n ),\n )\n .div(\n unnormalizeAmount(quoteData.inAmounts[0], sourceToken?.decimals ?? 6),\n )\n .toString();\n return rate;\n }, [isQuoteLoading, quoteData, sourceToken, targetChainInfo]);\n\n const memoizedMinimumReceived = useMemo(() => {\n if (!quoteData || isQuoteLoading) {\n return 0;\n }\n return calcMinimumReceived({\n amount: quoteData?.outAmounts[0],\n slippage: Number(slippage),\n });\n }, [quoteData, isQuoteLoading, slippage]);\n\n const currentLtv = useComputedLTV();\n\n const nextLTV = useComputedLTV({\n input: Number(quantity),\n token: sourceToken?.token,\n });\n\n const disabled = !quantity || Number(quantity) === 0;\n\n const { hasPositions, onSettlePnl } = useSettlePnl();\n\n return {\n walletName,\n address,\n quantity,\n onQuantityChange,\n token: sourceToken,\n sourceTokens,\n onSourceTokenChange,\n targetToken,\n balanceRevalidating: false,\n maxQuantity: maxAmount,\n disabled,\n loading,\n wrongNetwork,\n onConvert,\n hasPositions,\n onSettlePnl,\n networkId,\n slippage,\n onSlippageChange: setSlippage,\n convertRate: memoizedConvertRate,\n minimumReceived: memoizedMinimumReceived,\n outAmounts: memoizedOutAmounts,\n isQuoteLoading,\n currentLTV: currentLtv,\n nextLTV: nextLTV,\n targetChainInfo,\n };\n};\n","import React from \"react\";\nimport { Box, Flex, textVariants } from \"@orderly.network/ui\";\nimport { LtvWidget } from \"../LTV\";\nimport { AvailableQuantity } from \"../availableQuantity\";\nimport { ConvertAction } from \"../convertAction\";\nimport { ExchangeDivider } from \"../exchangeDivider\";\nimport { MinimumReceived } from \"../minimumReceived\";\nimport { QuantityInput } from \"../quantityInput\";\nimport { Slippage } from \"../slippage\";\nimport { SwapCoin } from \"../swapCoin\";\nimport {\n unnormalizeAmount,\n type ConvertFormScriptReturn,\n} from \"./convertForm.script\";\n\nexport type ConvertFormProps = ConvertFormScriptReturn;\n\nexport const ConvertFormUI: React.FC<ConvertFormProps> = (props) => {\n const {\n loading,\n disabled,\n quantity,\n onQuantityChange,\n maxQuantity,\n token,\n targetToken,\n sourceTokens,\n onSourceTokenChange,\n onConvert,\n slippage,\n onSlippageChange,\n convertRate,\n outAmounts,\n minimumReceived,\n isQuoteLoading,\n currentLTV,\n nextLTV,\n networkId,\n balanceRevalidating,\n targetChainInfo,\n } = props;\n\n return (\n <Box className={textVariants({ weight: \"semibold\" })}>\n <Box className=\"oui-mb-6 lg:oui-mb-8\">\n <Box mt={3} mb={1}>\n <QuantityInput\n value={quantity}\n onValueChange={onQuantityChange}\n token={token}\n tokens={sourceTokens}\n onTokenChange={onSourceTokenChange}\n />\n </Box>\n <AvailableQuantity\n token={token}\n amount={quantity}\n maxQuantity={maxQuantity.toString()}\n loading={balanceRevalidating}\n onClick={() => {\n onQuantityChange(maxQuantity.toString());\n }}\n />\n <ExchangeDivider />\n <QuantityInput\n readOnly\n loading={isQuoteLoading}\n token={targetToken}\n value={\n isQuoteLoading || !quantity || Number.isNaN(Number(outAmounts))\n ? \"\"\n : unnormalizeAmount(outAmounts, targetChainInfo?.decimals ?? 6)\n }\n />\n <Flex direction=\"column\" itemAlign=\"start\" mt={2} gap={1}>\n <SwapCoin\n indexPrice={\n isQuoteLoading || !quantity || Number.isNaN(Number(convertRate))\n ? \"-\"\n : convertRate\n }\n sourceSymbol={token?.token}\n targetSymbol={targetToken?.token}\n />\n <Slippage value={slippage} onValueChange={onSlippageChange} />\n <MinimumReceived\n symbol={targetToken?.token || \"\"}\n precision={targetChainInfo?.precision ?? 6}\n value={\n isQuoteLoading ||\n !quantity ||\n Number.isNaN(Number(minimumReceived))\n ? \"-\"\n : unnormalizeAmount(\n minimumReceived.toString(),\n targetChainInfo?.decimals ?? 6,\n )\n }\n />\n <LtvWidget\n showDiff={typeof quantity !== \"undefined\" && Number(quantity) > 0}\n currentLtv={currentLTV}\n nextLTV={nextLTV}\n />\n </Flex>\n </Box>\n <Flex itemAlign={\"center\"} justify=\"center\">\n <ConvertAction\n networkId={networkId}\n disabled={disabled}\n loading={loading}\n onConvert={onConvert}\n />\n </Flex>\n </Box>\n );\n};\n","import React from \"react\";\n// import pick from \"ramda/es/pick\";\nimport { i18n } from \"@orderly.network/i18n\";\nimport { registerSimpleDialog, registerSimpleSheet } from \"@orderly.network/ui\";\nimport type { ConvertFormScriptOptions } from \"./convertForm.script\";\nimport { useConvertFormScript } from \"./convertForm.script\";\nimport { ConvertFormUI } from \"./convertForm.ui\";\n\nexport const ConvertDialogId = \"ConvertDialogId\";\nexport const ConvertSheetId = \"ConvertSheetId\";\n\nexport const ConvertFormWidget: React.FC<ConvertFormScriptOptions> = (\n props,\n) => {\n const state = useConvertFormScript(props);\n return <ConvertFormUI {...state} />;\n};\n\nregisterSimpleDialog(ConvertDialogId, ConvertFormWidget, {\n size: \"md\",\n classNames: { content: \"oui-border oui-border-line-6\" },\n title: () => i18n.t(\"transfer.convert\"),\n});\n\nregisterSimpleSheet(ConvertSheetId, ConvertFormWidget, {\n title: () => i18n.t(\"transfer.convert\"),\n});\n","import React, { FC, ReactNode, useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { AssetHistoryStatusEnum } from \"@orderly.network/types\";\nimport { Flex, cn, Text, CloseIcon } from \"@orderly.network/ui\";\nimport { DepositStatusScriptReturn } from \"./depostiStatus.script\";\n\nexport type DepositStatusProps = {\n className?: string;\n classNames?: {\n root?: string;\n items?: string;\n };\n onClick?: () => void;\n} & DepositStatusScriptReturn;\n\nexport const DepositStatus: React.FC<DepositStatusProps> = (props) => {\n const { canTrade, className, classNames, pendingCount, completedCount } =\n props;\n\n if (!canTrade || (pendingCount === 0 && completedCount === 0)) {\n return null;\n }\n\n return (\n <Flex\n direction=\"column\"\n gapY={1}\n width=\"100%\"\n className={cn(className, classNames?.root)}\n >\n <DepositStatusContent\n className={classNames?.items}\n count={pendingCount}\n status={AssetHistoryStatusEnum.PENDING}\n onClick={props.onClick}\n estimatedTime={props.estimatedTime}\n onClose={props.onClose}\n />\n <DepositStatusContent\n className={classNames?.items}\n count={completedCount}\n status={AssetHistoryStatusEnum.COMPLETED}\n onClick={props.onClick}\n onClose={props.onClose}\n />\n </Flex>\n );\n};\n\ntype DepositStatusContentProps = {\n count: number;\n status: AssetHistoryStatusEnum.PENDING | AssetHistoryStatusEnum.COMPLETED;\n onClick?: () => void;\n className?: string;\n estimatedTime?: string | number;\n onClose: (status: AssetHistoryStatusEnum) => void;\n};\n\nexport const DepositStatusContent = (props: DepositStatusContentProps) => {\n const { t } = useTranslation();\n const { count, status, estimatedTime } = props;\n\n const content = useMemo(() => {\n if (status === AssetHistoryStatusEnum.PENDING) {\n return count > 1\n ? t(\"transfer.deposit.status.pending.multiple\")\n : t(\"transfer.deposit.status.pending.one\");\n }\n\n return count > 1\n ? t(\"transfer.deposit.status.completed.multiple\")\n : t(\"transfer.deposit.status.completed.one\");\n }, [t, status, count]);\n\n if (count === 0) {\n return null;\n }\n\n const clickable = typeof props.onClick === \"function\";\n\n const renderContent = () => {\n if (\n status === AssetHistoryStatusEnum.PENDING &&\n count === 1 &&\n estimatedTime\n ) {\n return (\n <Text size=\"2xs\" color=\"primary\">\n ~ {estimatedTime}\n </Text>\n );\n }\n\n return <Badge>{props.count}</Badge>;\n };\n\n return (\n <Flex\n intensity={900}\n gapX={1}\n width=\"100%\"\n r=\"full\"\n className={cn(\n \"oui-px-3 lg:oui-px-0\",\n \"oui-py-2 lg:oui-py-0\",\n props.className,\n )}\n >\n <Flex\n justify=\"between\"\n itemAlign=\"center\"\n className={cn(\n \"oui-font-normal\",\n \"oui-text-base-contrast-80 hover:oui-text-base-contrast\",\n clickable && \"oui-cursor-pointer\",\n )}\n width=\"100%\"\n onClick={props.onClick}\n >\n <Flex gapX={1}>\n <Dot\n className={\n status === AssetHistoryStatusEnum.COMPLETED\n ? \"oui-bg-success\"\n : \"oui-bg-primary\"\n }\n />\n <Text size=\"2xs\">{content}</Text>\n </Flex>\n {renderContent()}\n </Flex>\n <CloseIcon\n size={14}\n opacity={1}\n className=\"oui-text-base-contrast-54 hover:oui-text-base-contrast\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n props.onClose(status);\n }}\n />\n </Flex>\n );\n};\n\nconst Badge: FC<{ className?: string; children: ReactNode }> = (props) => {\n return (\n <Flex\n justify=\"center\"\n itemAlign=\"center\"\n r=\"full\"\n width={18}\n height={18}\n className={cn(\"oui-bg-line-12\", props.className)}\n >\n <Text size=\"3xs\" intensity={80}>\n {props.children}\n </Text>\n </Flex>\n );\n};\n\nconst Dot: FC<{ className?: string }> = (props) => {\n return (\n <div\n className={cn(\n \"oui-mx-[5px] oui-size-2 oui-shrink-0 oui-rounded-full\",\n props.className,\n )}\n />\n );\n};\n","import { ethers } from \"ethers\";\nimport type { API } from \"@orderly.network/types\";\n\nconst blockCount = 5;\n\nexport async function getEvmBlockTime(chain: API.Chain) {\n const provider = new ethers.JsonRpcProvider(\n chain.network_infos.public_rpc_url,\n );\n\n const latest = await provider.getBlockNumber();\n\n const blocks = await Promise.all(\n Array.from({ length: blockCount }, (_, i) => provider.getBlock(latest - i)),\n );\n\n const timestamps = blocks\n .filter((b) => b?.timestamp != null)\n .map((b) => Number(b?.timestamp));\n\n if (timestamps.length < 2) {\n return 0;\n }\n\n let sum = 0;\n for (let i = 0; i < timestamps.length - 1; i++) {\n const diff = timestamps[i] - timestamps[i + 1];\n sum += diff;\n }\n\n return sum / (timestamps.length - 1);\n}\n","import {\n DefaultSolanaWalletAdapter,\n SolanaWalletProvider,\n} from \"@orderly.network/default-solana-adapter\";\nimport { WalletState } from \"@orderly.network/hooks\";\nimport { API } from \"@orderly.network/types\";\n\nexport async function getSolanaBlockTime(\n chain: API.Chain,\n wallet: WalletState | null,\n) {\n if (!wallet) {\n return 0;\n }\n\n const walletAdapter = new DefaultSolanaWalletAdapter();\n\n walletAdapter.active({\n address: wallet.accounts[0].address,\n chain: { id: chain.network_infos.chain_id },\n provider: wallet.provider as SolanaWalletProvider,\n });\n\n // console.log(\"walletAdapter\", walletAdapter);\n\n // The Solana RPC node keeps a history of performance samples, typically for a few hours.\n // A limit of 60 samples gives us a good average over the last hour or so.\n const samples =\n await walletAdapter.connection.getRecentPerformanceSamples(60);\n\n let totalBlockTime = 0;\n let validSamples = 0;\n\n for (const sample of samples) {\n if (sample.numSlots > 0 && sample.samplePeriodSecs > 0) {\n const blockTime = sample.samplePeriodSecs / sample.numSlots;\n totalBlockTime += blockTime;\n validSamples++;\n }\n }\n\n return totalBlockTime / validSamples;\n}\n","import { WalletState } from \"@orderly.network/hooks\";\nimport { API } from \"@orderly.network/types\";\nimport { isSolana } from \"@orderly.network/utils\";\nimport { getEvmBlockTime } from \"./getEvmBlockTime\";\nimport { getSolanaBlockTime } from \"./getSolanaBlockTime\";\n\n// https://tokenterminal.com/explorer/metrics/block-time\nexport async function getBlockTime(inputs: {\n chainId: number;\n chain: API.Chain;\n wallet: WalletState | null;\n}) {\n const { chainId, chain, wallet } = inputs;\n if (isSolana(chainId)) {\n return getSolanaBlockTime(chain, wallet);\n }\n return getEvmBlockTime(chain);\n}\n","[\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_oapp\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint32\",\n \"name\": \"_remoteEid\",\n \"type\": \"uint32\"\n }\n ],\n \"name\": \"getAppUlnConfig\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"confirmations\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"requiredDVNCount\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"optionalDVNCount\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"optionalDVNThreshold\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"address[]\",\n \"name\": \"requiredDVNs\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"address[]\",\n \"name\": \"optionalDVNs\",\n \"type\": \"address[]\"\n }\n ],\n \"internalType\": \"struct UlnConfig\",\n \"name\": \"\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n]\n","/**\n * https://docs.layerzero.network/v2/deployments/deployed-contracts\n * Chain ID to Endpoint ID mapping for LayerZero V2\n *\n * This mapping contains all supported chains and their corresponding LayerZero Endpoint IDs.\n *\n * Endpoint ID ranges:\n * - 30xxx: Mainnet chains\n * - 40xxx: Testnet chains\n */\n\nexport const CHAIN_ID_TO_ENDPOINT_ID: Record<number | string, number> = {\n // Ethereum and L2s\n 1: 30101, // Ethereum Mainnet\n 10: 30111, // Optimism Mainnet\n 42161: 30110, // Arbitrum Mainnet\n 137: 30109, // Polygon Mainnet\n 8453: 30184, // Base Mainnet\n 59144: 30183, // Linea Mainnet\n 534352: 30214, // Scroll Mainnet\n 324: 30165, // zkSync Era Mainnet\n 1101: 30158, // Polygon zkEVM Mainnet\n 169: 30217, // Manta Pacific Mainnet\n 5000: 30181, // Mantle Mainnet\n 81457: 30243, // Blast Mainnet\n 252: 30255, // Fraxtal Mainnet\n 34443: 30260, // Mode Mainnet\n 167000: 30290, // Taiko Mainnet\n 7777777: 30195, // Zora Mainnet\n\n // Testnets\n 11155420: 40232, // Optimism Sepolia Testnet\n 421614: 40231, // Arbitrum Sepolia Testnet\n 84532: 40245, // Base Sepolia Testnet\n 300: 40305, // zkSync Sepolia Testnet\n 11155111: 40161, // Ethereum Sepolia Testnet\n 17000: 40217, // Ethereum Holesky Testnet\n\n // BNB Chain and related\n 56: 30102, // BNB Smart Chain (BSC) Mainnet\n 204: 30202, // opBNB Mainnet\n 97: 40102, // BNB Smart Chain (BSC) Testnet\n\n // Avalanche\n 43114: 30106, // Avalanche Mainnet\n 43113: 40106, // Avalanche Fuji Testnet\n\n // Fantom\n 250: 30112, // Fantom Mainnet\n\n // Gnosis\n 100: 30145, // Gnosis Mainnet\n\n // Celo\n 42220: 30125, // Celo Mainnet\n\n // Harmony\n 1666600000: 30116, // Harmony Mainnet\n\n // Cronos\n 25: 30359, // Cronos EVM Mainnet\n 388: 30360, // Cronos zkEVM Mainnet\n\n // Metis\n 1088: 30151, // Metis Mainnet\n\n // Moonbeam/Moonriver\n 1284: 30126, // Moonbeam Mainnet\n 1285: 30167, // Moonriver Mainnet\n\n // Astar\n 592: 30210, // Astar Mainnet\n 3776: 30257, // Astar zkEVM Mainnet\n\n // Canto\n 7700: 30159, // Canto Mainnet\n\n // Fuse\n 122: 30138, // Fuse Mainnet\n\n // Kava\n 2222: 30177, // Kava Mainnet\n\n // Meter\n 82: 30176, // Meter Mainnet\n\n // Near Aurora\n 1313161554: 30211, // Near Aurora Mainnet\n\n // DFK Chain\n 53935: 30115, // DFK Chain\n\n // DOS Chain\n 7979: 30149, // DOS Chain Mainnet\n\n // Degen\n 666666666: 30267, // Degen Mainnet\n\n // Dexalot Subnet\n 432204: 30118, // Dexalot Subnet Mainnet\n\n // Homeverse\n 19011: 30265, // Homeverse Mainnet\n\n // Horizen EON\n 7332: 30215, // Horizen EON Mainnet\n\n // Hubble\n 1992: 30182, // Hubble Mainnet\n\n // Tenet\n 1559: 30173, // Tenet Mainnet\n\n // TelosEVM\n 40: 30199, // TelosEVM Mainnet\n\n // Tiltyard\n 710420: 30238, // Tiltyard Mainnet\n\n // Viction\n 88: 30196, // Viction Mainnet\n\n // XPLA\n 37: 30216, // XPLA Mainnet\n\n // Xai\n 660279: 30236, // Xai Mainnet\n\n // re.al\n 111188: 30237, // re.al Mainnet\n\n // inEVM\n 2525: 30234, // inEVM Mainnet\n\n // Rari Chain\n 1380012617: 30235, // Rari Chain Mainnet\n\n // Shimmer\n 148: 30230, // Shimmer Mainnet\n\n // Skale\n 2046399126: 30273, // Skale Mainnet\n\n // Orderly\n 291: 30213, // Orderly Mainnet\n\n // CoreDAO\n 1116: 30153, // CoreDAO Mainnet\n\n // Conflux eSpace\n 1030: 30212, // Conflux eSpace Mainnet\n\n // Flare\n 14: 30295, // Flare Mainnet\n\n // Gravity\n 1625: 30294, // Gravity Mainnet\n\n // Japan Open Chain\n 81: 30285, // Japan Open Chain Mainnet\n\n // Kaia (formerly Klaytn)\n 8217: 30150, // Kaia Mainnet (formerly Klaytn)\n\n // OKX\n 66: 30155, // OKX Mainnet\n\n // Beam\n 4337: 30198, // Beam Mainnet\n\n // Loot\n 5151706: 30197, // Loot Mainnet\n\n // Lyra\n 957: 30311, // Lyra Mainnet\n\n // Morph\n 2818: 30322, // Morph Mainnet\n\n // Movement\n \"\": 30325, // Movement Mainnet (no chain ID)\n\n // Bouncebit\n 6001: 30293, // Bouncebit Mainnet\n\n // Cyber\n 7560: 30283, // Cyber Mainnet\n\n // Iota\n 8822: 30284, // Iota Mainnet\n\n // Sanko\n 1996: 30278, // Sanko Mainnet\n\n // Sei\n 1329: 30280, // Sei Mainnet\n\n // BOB\n 60808: 30279, // BOB Mainnet\n\n // Bahamut\n 5165: 30363, // Bahamut Mainnet\n\n // Animechain\n 69000: 30372, // Animechain Mainnet\n\n // Ape\n 33139: 30312, // Ape Mainnet\n\n // Berachain\n 80094: 30362, // Berachain Mainnet\n\n // Bevm\n 11501: 30317, // Bevm Mainnet\n\n // Bitlayer\n 200901: 30314, // Bitlayer Mainnet\n\n // Botanix\n 3637: 30376, // Botanix\n\n // Codex\n 81224: 30323, // Codex Mainnet\n\n // Concrete\n 12739: 30366, // Concrete\n\n // DM2 Verse\n 68770: 30315, // DM2 Verse Mainnet\n\n // EDU Chain\n 41923: 30328, // EDU Chain Mainnet\n\n // EVM on Flow\n 747: 30336, // EVM on Flow Mainnet\n\n // Etherlink\n 42793: 30292, // Etherlink Mainnet\n\n // Glue\n 1300: 30342, // Glue Mainnet\n\n // Goat\n 2345: 30361, // Goat Mainnet\n\n // Gunz\n 43419: 30371, // Gunz Mainnet\n\n // Hedera\n 295: 30316, // Hedera Mainnet\n\n // Hemi\n 43111: 30329, // Hemi Mainnet\n\n // HyperEVM\n 999: 30367, // HyperEVM Mainnet\n\n // Initia\n // \"\": 30326, // Initia Mainnet (no chain ID)\n\n // Ink\n 57073: 30339, // Ink Mainnet\n\n // Katana\n 747474: 30375, // Katana\n\n // Lens\n 232: 30373, // Lens Mainnet\n\n // Lightlink\n 1890: 30309, // Lightlink Mainnet\n\n // Lisk\n 1135: 30321, // Lisk Mainnet\n\n // Merlin\n 4200: 30266, // Merlin Mainnet\n\n // Nibiru\n 6900: 30369, // Nibiru Mainnet\n\n // Otherworld Space\n 8227: 30341, // Otherworld Space Mainnet\n\n // Peaq\n 3338: 30302, // Peaq Mainnet\n\n // Plume\n 98866: 30370, // Plume Mainnet\n\n // Reya\n 1729: 30313, // Reya Mainnet\n\n // Rootstock\n 30: 30333, // Rootstock Mainnet\n\n // Soneium\n 1868: 30340, // Soneium Mainnet\n\n // Sonic\n 146: 30332, // Sonic Mainnet\n\n // Sophon\n 50104: 30334, // Sophon Mainnet\n\n // Story\n 1514: 30364, // Story Mainnet\n\n // Subtensor EVM\n 964: 30374, // Subtensor EVM Mainnet\n\n // Superposition\n 55244: 30327, // Superposition Mainnet\n\n // Swell\n 1923: 30335, // Swell Mainnet\n\n // Tac\n 239: 30377, // Tac\n\n // TON\n // \"\": 30343, // TON Mainnet (no chain ID)\n\n // Unichain\n 130: 30320, // Unichain Mainnet\n\n // Vana\n 1480: 30330, // Vana Mainnet\n\n // Worldchain\n 480: 30319, // Worldchain Mainnet\n\n // X Layer\n 196: 30274, // X Layer Mainnet\n\n // XChain\n 94524: 30291, // XChain Mainnet\n\n // XDC\n 50: 30365, // XDC Mainnet\n\n // Zircuit\n 48900: 30303, // Zircuit Mainnet\n\n // zkLink\n 810180: 30301, // zkLink Mainnet\n\n // Abstract\n 2741: 30324, // Abstract Mainnet\n\n // Aptos (non-EVM)\n // 1: 30108, // Aptos Mainnet\n\n // Arbitrum Nova\n 42170: 30175, // Arbitrum Nova Mainnet\n\n // Corn\n 21000000: 30331, // Corn Mainnet\n\n // Initia Testnet\n // \"\": 40326, // Initia Testnet (no chain ID)\n\n // HyperEVM Testnet\n 998: 40362, // HyperEVM Testnet\n\n // Berachain Bepolia Testnet\n 80069: 40371, // Berachain Bepolia Testnet\n\n // Monad Testnet\n 10143: 40204, // Monad Testnet\n\n // Polygon Amoy Testnet\n 80002: 40267, // Polygon Amoy Testnet\n\n // Solana (non-EVM)\n 101: 30168, // Solana Mainnet\n 103: 40168, // Solana Devnet\n 900900900: 30168, // Solana Mainnet\n 901901901: 40168, // Solana Devnet\n\n // Tron\n 728126428: 30420, // Tron Mainnet\n 2494104990: 40420, // Tron Testnet\n};\n\n/**\n * Get Endpoint ID for a given Chain ID\n * @param chainId - The chain ID to look up\n * @returns The corresponding Endpoint ID or undefined if not found\n */\nexport function getEndpointId(chainId: number | string): number | undefined {\n return CHAIN_ID_TO_ENDPOINT_ID[chainId];\n}\n","import { ethers } from \"ethers\";\nimport { API } from \"@orderly.network/types\";\nimport getAppUlnConfigAbi from \"./abi/getAppUlnConfigAbi.json\";\nimport { getEndpointId } from \"./endpointId\";\n\n/**\n * no need to distinguish between EVM and SOL\n */\nexport async function getChainConfirmations(chain: API.Chain) {\n const chainId = chain.network_infos.chain_id;\n const isMainnet = chain.network_infos.mainnet;\n\n const publicRpcUrl = isMainnet\n ? \"https://rpc.orderly.network\"\n : \"https://testnet-rpc.orderly.org\";\n\n // mainnet: https://explorer-orderly-mainnet-0.t.conduit.xyz/address/0xCFf08a35A5f27F306e2DA99ff198dB90f13DEF77?tab=read_write_contract\n // testnet: https://testnet-explorer.orderly.org/address/0x3013C32e5F45E69ceA9baD4d96786704C2aE148c?tab=read_contract#39e3f938\n const contractAddress = isMainnet\n ? \"0xCFf08a35A5f27F306e2DA99ff198dB90f13DEF77\"\n : \"0x3013C32e5F45E69ceA9baD4d96786704C2aE148c\";\n\n const endpointId = getEndpointId(chainId);\n\n const address = \"0x0000000000000000000000000000000000000000\";\n\n const provider = new ethers.JsonRpcProvider(publicRpcUrl);\n\n const contract = new ethers.Contract(\n contractAddress,\n // full abi: https://explorer-orderly-mainnet-0.t.conduit.xyz/address/0xCFf08a35A5f27F306e2DA99ff198dB90f13DEF77?tab=contract_abi\n // this only need to use getAppUlnConfig abi, other functions are not needed\n getAppUlnConfigAbi,\n provider,\n );\n\n const result = await contract.getAppUlnConfig(address, endpointId);\n\n // console.log(\"getChainConfirmations\", chainId, result);\n\n return Number(result.confirmations || 0);\n}\n","import { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useChains, useWalletConnector } from \"@orderly.network/hooks\";\nimport { getBlockTime } from \"./getBlockTime\";\nimport { getChainConfirmations } from \"./getChainConfirmations\";\n\nexport const useTransactionTime = (chainId?: number | string) => {\n const [blockTime, setBlockTime] = useState(0);\n const [confirmations, setConfirmations] = useState(0);\n const timeMap = useRef<Record<string, number>>({});\n const confirmationsMap = useRef<Record<string, number>>({});\n\n const [, { findByChainId }] = useChains();\n const { wallet } = useWalletConnector();\n\n const chain = useMemo(() => {\n if (!chainId) {\n return;\n }\n const id = typeof chainId === \"number\" ? chainId : Number.parseInt(chainId);\n return findByChainId(id);\n }, [chainId, findByChainId]);\n\n useEffect(() => {\n if (!chain || !wallet) {\n return;\n }\n\n const chainId = chain.network_infos.chain_id;\n\n if (timeMap.current[chainId]) {\n setBlockTime(timeMap.current[chainId]);\n } else {\n getBlockTime({\n chainId,\n chain,\n wallet,\n })\n .then((time) => {\n console.log(\"average block time\", chainId, time);\n setBlockTime(time);\n // record chain block time\n timeMap.current[chainId] = time;\n })\n .catch((error) => {\n console.error(\"getBlockTime error\", error);\n });\n }\n\n if (confirmationsMap.current[chainId]) {\n setConfirmations(confirmationsMap.current[chainId]);\n } else {\n getChainConfirmations(chain)\n .then((confirmations) => {\n console.log(\"confirmations\", chainId, confirmations);\n setConfirmations(confirmations);\n // record chain confirmations\n confirmationsMap.current[chainId] = confirmations;\n })\n .catch((error) => {\n console.error(\"getChainConfirmations error\", error);\n });\n }\n }, [chain, wallet]);\n\n const transactionTime = useMemo(() => {\n if (blockTime && confirmations) {\n return blockTime * confirmations;\n }\n return 0;\n }, [blockTime, confirmations]);\n\n return transactionTime;\n};\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport {\n useAccount,\n useAssetsHistory,\n useBalanceTopic,\n useDebouncedCallback,\n useLocalStorage,\n useTransferHistory,\n useWalletTopic,\n} from \"@orderly.network/hooks\";\nimport {\n AccountStatusEnum,\n API,\n AssetHistorySideEnum,\n AssetHistoryStatusEnum,\n} from \"@orderly.network/types\";\nimport { useTransactionTime } from \"../../contract/useTransactionTime\";\n\nexport type DepositStatusScriptReturn = ReturnType<\n typeof useDepositStatusScript\n>;\n\nfunction getTimeRange() {\n const endTime = Date.now();\n // 1 hour ago\n const startTime = endTime - 1000 * 60 * 60;\n\n return [startTime, endTime];\n}\n\nexport function useDepositStatusScript() {\n const [depositDataRange, setDepositDataRange] = useState(getTimeRange());\n const [transferDataRange, setTransferDataRange] = useState(getTimeRange());\n // only deposit have pending status\n const [depositPending, setDepositPending] = useState(0);\n const [depositCompleted, setDepositCompleted] = useState(0);\n const [transferCompleted, setTransferCompleted] = useState(0);\n const [pendingList, setPendingList] = useState<API.TransferHistoryRow[]>([]);\n\n const [hideNotificationTimeMap, setHideNotificationTimeMap] = useLocalStorage(\n \"orderly_deposit_status_hide_notification_time\",\n {\n [AssetHistoryStatusEnum.PENDING]: 0,\n [AssetHistoryStatusEnum.COMPLETED]: 0,\n },\n );\n\n const { state } = useAccount();\n\n const canTrade =\n state.status === AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected;\n\n const { chainId, blockTime } = useMemo(() => {\n if (canTrade && pendingList.length === 1) {\n return {\n chainId: pendingList[0].chain_id,\n blockTime: pendingList[0].block_time,\n };\n }\n\n return {\n chainId: undefined,\n blockTime: undefined,\n };\n }, [canTrade, pendingList]);\n\n const transactionTime = useTransactionTime(chainId);\n\n // Estimated time remaining = tx_block_time +(total confirmations x average block time) - current time\n const estimatedTime = useMemo(() => {\n if (transactionTime && blockTime) {\n const seconds = blockTime / 1000 + transactionTime - Date.now() / 1000;\n console.log(\"transactionTime\", transactionTime, seconds);\n return formatEstimatedTime(seconds);\n }\n\n return 0;\n }, [transactionTime, blockTime]);\n\n const [assetHistory, { isLoading }] = useAssetsHistory(\n {\n startTime: depositDataRange[0],\n endTime: depositDataRange[1],\n page: 1,\n pageSize: 200,\n side: \"DEPOSIT\",\n },\n {\n shouldUpdateOnWalletChanged: () => false,\n },\n );\n\n // pending and completed use one request to reduce api request, because assets history api limit 10 per 60s\n const [transferHistory] = useTransferHistory({\n dataRange: transferDataRange,\n side: \"IN\",\n size: 200,\n page: 1,\n main_sub_only: false,\n });\n\n // update time range when wallet and balance changed\n // because DEPOSIT and WITHDRAW will push twice COMPLETED event in a shorttime, so we need to debounce it\n // TODO: refresh one when push more than twice again\n const updateDepositTimeRange = useDebouncedCallback((data: any) => {\n setDepositDataRange(getTimeRange());\n }, 300);\n\n useWalletTopic({\n onMessage(data) {\n const { side, transStatus } = data;\n if (\n side === AssetHistorySideEnum.DEPOSIT &&\n (transStatus === AssetHistoryStatusEnum.PENDING ||\n transStatus === AssetHistoryStatusEnum.COMPLETED)\n ) {\n console.log(\"deposit status updated\", data);\n updateDepositTimeRange(data);\n }\n },\n });\n\n // update transfer time range when balance changed\n const updateTransferTimeRange = useDebouncedCallback((data: any) => {\n setTransferDataRange(getTimeRange());\n }, 300);\n\n useBalanceTopic({\n onMessage(data) {\n console.log(\"balance updated\", data);\n updateTransferTimeRange(data);\n },\n });\n\n useEffect(() => {\n if (!assetHistory || isLoading) {\n return;\n }\n const hidePendingNotificationTime =\n hideNotificationTimeMap[AssetHistoryStatusEnum.PENDING];\n\n const hideCompletedNotificationTime =\n hideNotificationTimeMap[AssetHistoryStatusEnum.COMPLETED];\n\n let pendingList = assetHistory.filter(\n (item) => item.trans_status === AssetHistoryStatusEnum.PENDING,\n );\n\n if (hidePendingNotificationTime) {\n pendingList = pendingList.filter(\n (item) => item.created_time > hidePendingNotificationTime,\n );\n }\n\n let completedList = assetHistory.filter(\n (item) => item.trans_status === AssetHistoryStatusEnum.COMPLETED,\n );\n\n if (hideCompletedNotificationTime) {\n completedList = completedList.filter(\n (item) => item.created_time > hideCompletedNotificationTime,\n );\n }\n\n setDepositPending(pendingList?.length || 0);\n setDepositCompleted(completedList?.length || 0);\n setPendingList(pendingList || []);\n }, [assetHistory, isLoading, hideNotificationTimeMap]);\n\n useEffect(() => {\n if (!transferHistory) {\n return;\n }\n const hideCompletedNotificationTime =\n hideNotificationTimeMap[AssetHistoryStatusEnum.COMPLETED];\n\n const completedList = hideCompletedNotificationTime\n ? transferHistory.filter(\n (item) => item.created_time > hideCompletedNotificationTime,\n )\n : transferHistory;\n\n setTransferCompleted(completedList.length);\n }, [transferHistory, hideNotificationTimeMap]);\n\n const completedCount = useMemo(() => {\n return depositCompleted + transferCompleted;\n }, [depositCompleted, transferCompleted]);\n\n const onClose = useCallback(\n (status: AssetHistoryStatusEnum) => {\n setHideNotificationTimeMap({\n ...hideNotificationTimeMap,\n [status]: Date.now(),\n });\n },\n [hideNotificationTimeMap],\n );\n\n return {\n pendingCount: depositPending,\n completedCount,\n canTrade,\n estimatedTime,\n onClose,\n };\n}\n\nfunction formatEstimatedTime(totalSeconds: number) {\n const sec = Math.max(30, totalSeconds);\n let minutes = Math.floor(sec / 60);\n let seconds = sec % 60;\n\n if (seconds > 0 && seconds <= 30) {\n seconds = 30;\n } else if (seconds > 30) {\n minutes += 1;\n seconds = 0;\n }\n\n if (minutes > 0) {\n return seconds > 0 ? `${minutes} m ${seconds} s` : `${minutes} m`;\n }\n\n return `${seconds} s`;\n\n // minutes = Math.max(1, Math.ceil(seconds / 60));\n}\n","import React from \"react\";\nimport { useDepositStatusScript } from \"./depostiStatus.script\";\nimport { DepositStatus, DepositStatusProps } from \"./depostiStatus.ui\";\n\nexport type DepositStatusWidgetProps = Pick<\n DepositStatusProps,\n \"className\" | \"onClick\"\n>;\n\nexport const DepositStatusWidget: React.FC<DepositStatusWidgetProps> = (\n props,\n) => {\n const state = useDepositStatusScript();\n return <DepositStatus {...state} {...props} />;\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/LTV/ltv.script.tsx","../src/components/icons/tooltipIcon.tsx","../src/components/LTV/ltv.ui.tsx","../src/components/LTV/ltv.widget.tsx","../src/types.ts","../src/components/actionButton/index.tsx","../src/components/availableQuantity/index.tsx","../src/components/brokerWallet/index.tsx","../src/icons.tsx","../src/components/chainSelect/index.tsx","../src/components/collateralContribution/index.tsx","../src/components/collateralRatio/collateralRatio.ui.tsx","../src/components/collateralRatio/collateralRatio.widget.tsx","../src/components/exchangeDivider/index.tsx","../src/components/fee/index.tsx","../src/components/minimumReceived/index.tsx","../src/constants/yieldBearingAssets.ts","../src/components/depositForm/hooks/useYieldAPY.ts","../src/components/quantityInput/useBalance.ts","../src/components/quantityInput/tokenOption.tsx","../src/components/quantityInput/index.tsx","../src/components/slippage/index.tsx","../src/components/swap/components/notice.tsx","../src/components/swap/components/swapFee.tsx","../src/components/swapCoin/index.tsx","../src/components/swap/icons.tsx","../src/components/swapIndicator/index.tsx","../src/components/web3Wallet/index.tsx","../src/components/yieldBearingReminder/baseReminder.tsx","../src/components/yieldBearingReminder/deUsdReminder.tsx","../src/components/yieldBearingReminder/yusdReminder.tsx","../src/components/yieldBearingReminder/yieldBearingReminder.tsx","../src/components/swap/hooks/useNeedSwapAndCross.ts","../src/components/swap/constants.ts","../src/components/swap/hooks/useCrossSwap.ts","../src/components/swap/components/processStatus.tsx","../src/utils.ts","../src/components/swap/components/swapDetail.tsx","../src/components/swap/components/viewFAQs.tsx","../src/components/swap/components/crossSwap.tsx","../src/components/swap/hooks/useSwap.ts","../src/components/swap/components/singleSwap.tsx","../src/components/swap/components/swap.tsx","../src/components/swap/components/swapDialog.tsx","../src/components/swap/hooks/useCrossSwapQuery.ts","../src/components/swap/hooks/useSwapQuery.ts","../src/components/swap/hooks/useSwapEnquiry.ts","../src/components/swap/hooks/useSwapFee.ts","../src/components/swap/hooks/useSwapDeposit.tsx","../src/components/depositForm/hooks/useActionType.ts","../src/components/depositForm/hooks/useChainSelect.ts","../src/components/depositForm/hooks/useDepositAction.tsx","../src/components/depositForm/hooks/useInputStatus.ts","../src/components/depositForm/hooks/useNativeBalance.ts","../src/components/depositForm/hooks/useToken.ts","../src/components/depositForm/depositForm.script.tsx","../src/components/depositForm/depositForm.ui.tsx","../src/components/depositForm/depositForm.widget.tsx","../src/components/accountIdInput/index.tsx","../src/components/unsettlePnlInfo/index.tsx","../src/components/crossWithdrawConfirm/index.tsx","../src/components/withdrawAction/SwitchChainButton.tsx","../src/components/withdrawAction/index.tsx","../src/components/withdrawWarningMessage/index.tsx","../src/components/unsettlePnlInfo/useSettlePnl.tsx","../src/components/withdrawForm/hooks/useVaultBalance.tsx","../src/components/withdrawForm/hooks/useWithdrawAccountId.ts","../src/components/withdrawForm/hooks/useWithdrawFee.ts","../src/components/withdrawForm/hooks/useWithdrawLTV.tsx","../src/components/withdrawForm/hooks/useWithdrawToken.ts","../src/components/withdrawForm/withdrawForm.script.tsx","../src/components/withdrawForm/addWalletDialog.tsx","../src/components/withdrawForm/walletSelector.tsx","../src/components/withdrawForm/withdrawForm.ui.tsx","../src/components/withdrawForm/withdrawForm.widget.tsx","../src/components/depositAndWithdraw/depositSlot.tsx","../src/components/depositAndWithdraw/withdrawSlot.tsx","../src/components/depositAndWithdraw/index.tsx","../src/components/swap/swapDepositForm/swapDepositForm.ui.tsx","../src/components/swap/hooks/useToken.ts","../src/components/swap/swapDepositForm/swapDepositForm.script.tsx","../src/components/swap/swapDepositForm/swapDepositForm.widget.tsx","../src/components/accountSelect/index.tsx","../src/components/transferForm/transferForm.ui.tsx","../src/components/transferForm/transferForm.script.tsx","../src/components/transferForm/transferForm.widget.tsx","../src/components/convertAction/index.tsx","../src/components/convertForm/hooks/useToken.ts","../src/components/convertForm/convertForm.script.tsx","../src/components/convertForm/convertForm.ui.tsx","../src/components/convertForm/convertForm.widget.tsx","../src/components/depostiStatus/depostiStatus.ui.tsx","../src/contract/getEvmBlockTime.ts","../src/contract/getSolanaBlockTime.ts","../src/contract/getBlockTime.ts","../src/contract/abi/getAppUlnConfigAbi.json","../src/contract/endpointId.ts","../src/contract/getChainConfirmations.ts","../src/contract/useTransactionTime.ts","../src/components/depostiStatus/depostiStatus.script.ts","../src/components/depostiStatus/depostiStatus.widget.tsx"],"names":["useQuery","useMemo","Decimal","forwardRef","jsx","useTranslation","jsxs","Box","Text","Flex","Tooltip","cn","DepositAction","WithdrawTo","AuthGuard","AccountStatusEnum","Button","useWithdraw","useScreen","useIndexPricesStream","modal","Spinner","useAppConfig","useConfig","Fragment","useState","ChainIcon","Badge","DropdownMenuRoot","DropdownMenuTrigger","DropdownMenuPortal","DropdownMenuContent","ScrollArea","TooltipContent","useCallback","useEffect","useRef","balance","TokenIcon","token","value","item","Select","Input","inputFormatter","AlertDialog","EditIcon","ChainSelectorDialogId","Trans","Divider","useWalletConnector","account","useAccount","address","ABSTRACT_CHAIN_ID_MAP","WalletIcon","options","useBoolean","useEventEmitter","WS_WalletStatusEnum","useAccountInstance","createClient","status","utils","pick","createElement","CloseCircleFillIcon","CheckedCircleFillIcon","i18n","markPrice","Icon","toast","useModal","SimpleSheet","SimpleDialog","useDebouncedCallback","useIndexPrice","toNonExponential","useLocalStorage","useChains","praseChainIdToNumber","int2hex","retryInterval","nativeTokenAddress","accountPerp","useAppContext","useDeposit","useAuthGuard","collateralRatio","ChainNamespace","useTokenInfo","useComputedLTV","isNativeTokenChecker","CaretDownIcon","InfoCircleIcon","textVariants","Checkbox","ExclamationFillIcon","usePositionStream","useInternalTransfer","useConvertThreshold","useTokensInfo","useHoldingStream","useMemoizedFn","ethers","PublicKey","useAssetsHistory","AssetHistorySideEnum","AssetHistoryStatusEnum","useWalletTopic","CloseRoundFillIcon","CaretUpIcon","TabPanel","ArrowLeftRightIcon","Tabs","ExtensionSlot","ExtensionPositionEnum","ArrowDownSquareFillIcon","ArrowUpSquareFillIcon","registerSimpleDialog","registerSimpleSheet","useToken","tokens","useAppStore","state","useTransfer","useSubAccountDataObserver","useSubAccountMaxWithdrawal","zero","useInputStatus","Arbitrum","calcMinimumReceived","useConvert","useOdosQuote","CloseIcon","DefaultSolanaWalletAdapter","isSolana","chainId","confirmations","useTransferHistory","useBalanceTopic","pendingList"],"mappings":"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","file":"index.js","sourcesContent":["import { useMemo } from \"react\";\nimport { useQuery } from \"@orderly.network/hooks\";\nimport type { API } from \"@orderly.network/types\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport const useLtvScript = () => {\n const { data, error, isLoading } = useQuery<API.ConvertThreshold>(\n \"/v1/public/auto_convert_threshold\",\n {\n errorRetryCount: 3,\n revalidateOnFocus: false,\n },\n );\n const ltvThreshold = useMemo(() => {\n if (!data || isLoading) {\n return \"-\";\n }\n return `${new Decimal(data.ltv_threshold).mul(100).toNumber()}%`;\n }, []);\n return {\n ltv_threshold: ltvThreshold,\n negative_usdc_threshold: data?.negative_usdc_threshold,\n isLoading,\n error,\n } as const;\n};\n\nexport type LtvScriptReturns = ReturnType<typeof useLtvScript>;\n","import { forwardRef } from \"react\";\n\nexport const TooltipIcon = forwardRef<\n SVGSVGElement,\n React.SVGProps<SVGSVGElement>\n>((props, ref) => {\n return (\n <svg\n width={12}\n height={12}\n viewBox=\"0 0 12 12\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable={false}\n ref={ref}\n {...props}\n >\n <path d=\"M5.999 1.007a5 5 0 1 0 0 10 5 5 0 0 0 0-10m0 2.5a.5.5 0 1 1 0 1 .5.5 0 0 1 0-1m0 1.5a.5.5 0 0 1 .5.5v2.5a.5.5 0 0 1-1 0v-2.5a.5.5 0 0 1 .5-.5\" />\n </svg>\n );\n});\n","import React from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { cn, Flex, Tooltip, Text, Box } from \"@orderly.network/ui\";\nimport { TooltipIcon } from \"../icons/tooltipIcon\";\nimport type { LtvScriptReturns } from \"./ltv.script\";\n\nconst calculateTextColor = (val: number): string => {\n if (val >= 0 && val < 50) {\n return \"oui-text-success\";\n } else if (val >= 50 && val < 80) {\n return \"oui-text-warning\";\n } else if (val >= 80) {\n return \"oui-text-danger\";\n } else {\n return \"\";\n }\n};\n\nconst TooltipContent: React.FC<{\n isLoading: boolean;\n ltv_threshold: string;\n}> = (props) => {\n const { isLoading, ltv_threshold } = props;\n const { t } = useTranslation();\n return (\n <Box className=\"oui-w-72 oui-max-w-72\">\n <Text size=\"2xs\" intensity={80}>\n {t(\"transfer.LTV.description\", {\n threshold: isLoading ? \"-\" : ltv_threshold,\n })}\n </Text>{\" \"}\n <a\n href=\"https://orderly.network/docs/introduction/trade-on-orderly/multi-collateral\"\n target=\"_blank\"\n rel=\"noreferrer\"\n className={\n \"oui-border-b oui-border-dashed oui-border-line-12 oui-text-2xs oui-text-primary\"\n }\n >\n {t(\"tradingLeaderboard.learnMore\")}\n </a>\n </Box>\n );\n};\n\nexport const LtvUI: React.FC<\n Readonly<\n LtvScriptReturns & {\n currentLtv: number;\n nextLTV: number;\n showDiff?: boolean;\n }\n >\n> = (props) => {\n const { t } = useTranslation();\n const { currentLtv, nextLTV, showDiff, ltv_threshold, isLoading } = props;\n return (\n <Flex width=\"100%\" itemAlign=\"center\" justify=\"between\">\n <Flex justify=\"start\" itemAlign=\"center\">\n <Text size=\"2xs\" intensity={36}>\n {t(\"transfer.LTV\")}\n </Text>\n <Tooltip\n className=\"oui-p-2\"\n content={\n <TooltipContent\n isLoading={isLoading}\n ltv_threshold={ltv_threshold}\n />\n }\n >\n <TooltipIcon className=\"oui-ml-[2px] oui-cursor-pointer oui-text-base-contrast-36\" />\n </Tooltip>\n </Flex>\n {showDiff ? (\n <Flex itemAlign=\"center\" justify=\"between\" gap={1}>\n <Text\n size=\"2xs\"\n className={cn(\"oui-font-semibold\", calculateTextColor(currentLtv))}\n >\n {currentLtv}%\n </Text>\n →\n <Text\n size=\"2xs\"\n className={cn(\"oui-font-semibold\", calculateTextColor(nextLTV))}\n >\n {nextLTV}%\n </Text>\n </Flex>\n ) : (\n <Text\n size=\"2xs\"\n className={cn(\"oui-font-semibold\", calculateTextColor(currentLtv))}\n >\n {currentLtv}%\n </Text>\n )}\n </Flex>\n );\n};\n","import React from \"react\";\nimport { useLtvScript } from \"./ltv.script\";\nimport { LtvUI } from \"./ltv.ui\";\n\nexport const LtvWidget: React.FC<\n Readonly<{\n currentLtv: number;\n nextLTV: number;\n showDiff?: boolean;\n }>\n> = (props) => {\n const state = useLtvScript();\n return <LtvUI {...props} {...state} />;\n};\n","export type DST = {\n symbol: string;\n address?: string;\n decimals?: number;\n chainId?: number;\n network?: string;\n};\n\nexport enum DepositAction {\n Deposit,\n Approve,\n ApproveAndDeposit,\n // Increase,\n}\n\nexport enum WithdrawTo {\n /** withdraw to web3 wallet */\n Wallet = \"wallet\",\n /** withdraw to other account id */\n Account = \"accountId\",\n}\n\nexport type InputStatus = \"error\" | \"warning\" | \"success\" | \"default\";\n","import React, { useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { AccountStatusEnum, NetworkId } from \"@orderly.network/types\";\nimport { Box, Button, ButtonProps } from \"@orderly.network/ui\";\nimport { AuthGuard } from \"@orderly.network/ui-connector\";\nimport { DepositAction } from \"../../types\";\n\nexport type ActionButtonProps = {\n disabled?: boolean;\n loading?: boolean;\n actionType: DepositAction;\n symbol?: string;\n onDeposit?: () => void;\n onApprove?: () => void;\n onApproveAndDeposit?: () => void;\n networkId?: NetworkId;\n};\n\nexport const ActionButton: React.FC<ActionButtonProps> = (props) => {\n const {\n disabled,\n loading,\n actionType,\n symbol = \"USDC\",\n onDeposit,\n onApprove,\n onApproveAndDeposit,\n networkId,\n } = props;\n const { t } = useTranslation();\n\n const buttonParams = useMemo(() => {\n const params: Partial<Record<DepositAction, ButtonProps>> = {\n // [DepositAction.Approve]: {\n // // Approve & Deposit\n // children: t(\"transfer.deposit.approve\"),\n // onClick: onApprove,\n // // approve not disabled button\n // disabled: false,\n // \"data-testid\": \"oui-testid-deposit-dialog-approve-btn\",\n // },\n [DepositAction.ApproveAndDeposit]: {\n children: `${t(\"transfer.deposit.approve\")} & ${t(\"common.deposit\")}`,\n onClick: onApproveAndDeposit,\n // approve not disabled button\n // disabled: false,\n },\n // [DepositAction.Increase]: {\n // children: t(\"transfer.deposit.increase.symbol\", { symbol }),\n // onClick: onApprove,\n // \"data-testid\": \"oui-testid-deposit-dialog-increase-btn\",\n // },\n [DepositAction.Deposit]: {\n children: t(\"common.deposit\"),\n onClick: onDeposit,\n \"data-testid\": \"oui-testid-deposit-dialog-deposit-btn\",\n },\n };\n\n return params[actionType];\n }, [onApprove, onDeposit, actionType, symbol, t]);\n\n const buttonSize = { initial: \"md\", lg: \"lg\" } as const;\n\n return (\n <Box className=\"oui-w-full lg:oui-w-auto lg:oui-min-w-[184px]\">\n <AuthGuard\n status={AccountStatusEnum.EnableTrading}\n networkId={networkId}\n buttonProps={{\n fullWidth: true,\n size: buttonSize,\n }}\n >\n <Button\n fullWidth\n disabled={disabled}\n loading={loading}\n size={buttonSize}\n {...buttonParams}\n />\n </AuthGuard>\n </Box>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { useIndexPricesStream, useWithdraw } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API } from \"@orderly.network/types\";\nimport {\n Flex,\n Spinner,\n Text,\n Tooltip,\n modal,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport type AvailableQuantityProps = {\n token?: Partial<API.TokenInfo>;\n amount?: number | string;\n maxQuantity?: number | string;\n onClick?: () => void;\n loading?: boolean;\n tooltipContent?: React.ReactNode;\n};\n\ntype AvailableTooltipMessageProps = {\n tokenSymbol?: string;\n decimals?: number;\n};\n\nconst AvailableTooltipMessage: FC<AvailableTooltipMessageProps> = ({\n tokenSymbol,\n decimals,\n}) => {\n const { t } = useTranslation();\n const { maxAmount } = useWithdraw({\n token: tokenSymbol,\n decimals,\n });\n\n const amountText = useMemo(() => {\n if (maxAmount === undefined || maxAmount === null) return \"--\";\n return maxAmount.toString();\n }, [maxAmount]);\n\n return (\n <Text size=\"2xs\" intensity={80}>\n {t(\"transfer.withdraw.available.tooltip\", { amount: amountText })}\n </Text>\n );\n};\n\nexport const AvailableQuantity: FC<AvailableQuantityProps> = (props) => {\n const { amount, maxQuantity, token, loading } = props;\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n\n const { getIndexPrice } = useIndexPricesStream();\n\n const name = token?.display_name || token?.symbol || \"\";\n const dp = token?.precision ?? token?.decimals ?? 2;\n\n const notional = useMemo(() => {\n if (amount && token?.symbol && getIndexPrice(token?.symbol)) {\n return new Decimal(amount)\n .mul(getIndexPrice(token?.symbol) || 1)\n .toNumber();\n }\n return 0;\n }, [amount, token?.symbol]);\n\n return (\n <Flex px={2}>\n <Text size=\"2xs\" intensity={36}>\n $\n <Text.numeral dp={2} padding={false} rm={Decimal.ROUND_DOWN}>\n {notional}\n </Text.numeral>\n </Text>\n\n <Flex gapX={2} itemAlign=\"center\" className=\"oui-ml-auto\">\n <Flex gapX={1} itemAlign=\"center\">\n {props.tooltipContent ? (\n isMobile ? (\n <button\n type=\"button\"\n className=\"oui-p-0\"\n onClick={() => {\n if (token?.symbol) {\n const anyToken = token as any;\n modal.alert({\n title: t(\"common.tips\"),\n message: (\n <AvailableTooltipMessage\n tokenSymbol={token.symbol}\n decimals={\n anyToken?.token_decimal ??\n token.decimals ??\n token.precision\n }\n />\n ),\n });\n } else {\n modal.alert({\n title: t(\"common.tips\"),\n message: props.tooltipContent,\n });\n }\n }}\n >\n <Text\n size=\"2xs\"\n intensity={36}\n className=\"oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12\"\n >\n {`${t(\"common.available\")}: `}\n </Text>\n </button>\n ) : (\n <Tooltip\n content={props.tooltipContent}\n className=\"oui-max-w-[274px]\"\n >\n <Text\n size=\"2xs\"\n intensity={36}\n className=\"oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12\"\n >\n {`${t(\"common.available\")}: `}\n </Text>\n </Tooltip>\n )\n ) : (\n <Text size=\"2xs\" intensity={36}>\n {`${t(\"common.available\")}: `}\n </Text>\n )}\n\n {loading ? (\n <Spinner size=\"sm\" />\n ) : (\n <Text.numeral\n size=\"2xs\"\n intensity={36}\n rm={Decimal.ROUND_DOWN}\n dp={dp}\n padding={false}\n data-testid=\"oui-testid-withdraw_deposit-dialog-available-value\"\n >\n {maxQuantity!}\n </Text.numeral>\n )}\n\n <Text size=\"2xs\" intensity={36}>\n {` ${name}`}\n </Text>\n </Flex>\n\n <Text\n size=\"2xs\"\n color=\"primary\"\n className=\"oui-cursor-pointer oui-select-none\"\n onClick={props.onClick}\n >\n {t(\"common.max\")}\n </Text>\n </Flex>\n </Flex>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { Flex, Text } from \"@orderly.network/ui\";\nimport { useAppConfig } from \"@orderly.network/react-app\";\nimport { useConfig } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const BrokerWallet: FC = () => {\n const { t } = useTranslation();\n const { appIcons } = useAppConfig();\n const brokerName = useConfig(\"brokerName\");\n\n const icon = useMemo(() => {\n const { secondary } = appIcons || {};\n\n if (!secondary?.img && secondary?.component) return null;\n\n if (secondary?.img) {\n return <img src={secondary?.img} className=\"oui-w-5 oui-h-5\" />;\n }\n\n if (secondary?.component) {\n return <>{secondary.component}</>;\n }\n }, [appIcons]);\n\n return (\n <Flex justify=\"between\">\n <Text size=\"sm\" intensity={98}>\n {t(\"transfer.brokerAccount\", { brokerName })}\n </Text>\n {icon}\n </Flex>\n );\n};\n","import React, { FC, SVGProps } from \"react\";\n\nexport const ExchangeIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M10.997 8.004a.5.5 0 0 0-.14-.36l-1.86-1.843-.703.703.984 1h-7.28a.5.5 0 0 0 0 1h7.28l-.984 1 .703.703 1.86-1.844a.5.5 0 0 0 .14-.36m-.5-4a.5.5 0 0 0-.5-.5H2.716l.984-1-.703-.703-1.859 1.843a.515.515 0 0 0 0 .719l1.86 1.844.702-.703-.984-1h7.281a.5.5 0 0 0 .5-.5\" />\n </svg>\n);\n\nexport const ArrowDownIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"20\"\n height=\"21\"\n viewBox=\"0 0 20 21\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M9.994 5.51a.83.83 0 0 0-.832.833v6.295l-2.498-2.471-1.17 1.17 3.902 3.929a.84.84 0 0 0 .599.244.84.84 0 0 0 .597-.244l3.903-3.928-1.171-1.171-2.498 2.471V6.343a.83.83 0 0 0-.832-.833\" />\n </svg>\n);\n\nexport const SelectArrowDownIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 10 10\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M2.503 3.332a.412.412 0 0 0-.326.664l2.5 3.333a.414.414 0 0 0 .664 0l2.5-3.333a.417.417 0 0 0-.338-.664z\" />\n </svg>\n);\n\nexport const RefreshIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M6.00342 1.49561C4.97642 1.49561 3.99542 1.84011 3.20642 2.46461C2.98992 2.63561 2.95692 2.9511 3.12842 3.1676C3.29992 3.3841 3.61492 3.4171 3.83142 3.2456C4.44492 2.7601 5.20392 2.4956 6.00342 2.4956C7.93642 2.4956 9.50342 4.0626 9.50342 5.9956H8.50342L10.0034 7.9956L11.5034 5.9956H10.5034C10.5034 3.5101 8.48892 1.49561 6.00342 1.49561ZM2.00342 3.9956L0.503418 5.9956H1.50342C1.50342 8.4811 3.51792 10.4956 6.00342 10.4956C7.03092 10.4956 8.01142 10.1516 8.80042 9.52659C9.01692 9.35559 9.04992 9.0401 8.87842 8.8236C8.70692 8.6071 8.39191 8.5741 8.17542 8.7456C7.56142 9.2316 6.80342 9.4956 6.00342 9.4956C4.07042 9.4956 2.50342 7.9286 2.50342 5.9956H3.50342L2.00342 3.9956Z\" />\n </svg>\n);\n\nexport const TransferVerticalIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"20\"\n height=\"21\"\n viewBox=\"0 0 20 21\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M12.385 4.565a.6.6 0 0 0-.427.167L9.764 6.944l.837.837 1.19-1.17v8.66a.595.595 0 0 0 1.19 0v-8.66l1.189 1.17.836-.837-2.193-2.212a.6.6 0 0 0-.428-.167m-4.758.595a.595.595 0 0 0-.595.595v8.661l-1.19-1.17-.836.836L7.2 16.294a.61.61 0 0 0 .855 0l2.194-2.212-.837-.836-1.19 1.17V5.755a.595.595 0 0 0-.594-.595\" />\n </svg>\n);\n","import { useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API } from \"@orderly.network/types\";\nimport {\n Badge,\n Box,\n ChainIcon,\n DropdownMenuContent,\n DropdownMenuPortal,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n Flex,\n ScrollArea,\n Spinner,\n Text,\n cn,\n} from \"@orderly.network/ui\";\nimport { ExchangeIcon } from \"../../icons\";\nimport { CurrentChain } from \"../depositForm/hooks\";\n\ntype ChainSelectProps = {\n chains: API.NetworkInfos[];\n value: CurrentChain;\n onValueChange: (chain: API.NetworkInfos) => Promise<void>;\n wrongNetwork: boolean;\n loading?: boolean;\n disabled?: boolean;\n};\n\nexport const ChainSelect: React.FC<ChainSelectProps> = (props) => {\n const { chains, value, wrongNetwork, loading, disabled } = props;\n const [open, setOpen] = useState(false);\n const { t } = useTranslation();\n\n const selectable = wrongNetwork || chains?.length > 1;\n\n const chainIcon = wrongNetwork ? (\n <Flex\n width={18}\n height={18}\n intensity={100}\n r=\"full\"\n justify=\"center\"\n itemAlign=\"center\"\n >\n <Text size=\"2xs\" intensity={80}>\n U\n </Text>\n </Flex>\n ) : (\n <ChainIcon className=\"oui-size-[18px]\" chainId={value?.id} />\n );\n\n const chainName = wrongNetwork ? \"Unknown\" : value?.info?.network_infos?.name;\n\n const currentChain = chains.find((chain) => chain.chain_id === value?.id);\n const extendedCurrentChain = currentChain as API.NetworkInfos & {\n isSupported?: boolean;\n };\n const isCurrentChainSupported =\n !currentChain || extendedCurrentChain?.isSupported !== false;\n\n const renderRightIcon = () => {\n if (loading) {\n return <Spinner size=\"sm\" />;\n }\n if (selectable) {\n return <ExchangeIcon className=\"oui-text-base-contrast-54\" />;\n }\n };\n\n const trigger = (\n <Flex\n intensity={500}\n className={cn(\n \"oui-rounded-t-xl oui-rounded-b-sm oui-border oui-border-line\",\n disabled\n ? \"oui-cursor-not-allowed\"\n : selectable\n ? \"oui-cursor-pointer\"\n : \"oui-cursor-auto\",\n )}\n height={54}\n px={3}\n justify=\"between\"\n itemAlign=\"center\"\n >\n <div>\n <Flex>\n <Text size=\"2xs\" intensity={54}>\n {t(\"transfer.network\")}\n </Text>\n </Flex>\n <Flex gapX={1} itemAlign=\"center\">\n {chainIcon}\n <Text size=\"sm\" intensity={80}>\n {chainName}\n </Text>\n {!isCurrentChainSupported && (\n <Badge color=\"danger\" size=\"xs\">\n {t(\"common.notSupported\")}\n </Badge>\n )}\n </Flex>\n </div>\n {renderRightIcon()}\n </Flex>\n );\n\n const content = chains.map((chain, index) => {\n const extendedChain = chain as API.NetworkInfos & {\n isSupported?: boolean;\n };\n const isActive = chain.chain_id === value?.id;\n const isSupported = extendedChain.isSupported !== false;\n return (\n <Flex\n key={chain.chain_id}\n px={2}\n r=\"base\"\n justify=\"between\"\n itemAlign=\"center\"\n className={cn(\n \"oui-deposit-network-select-item\",\n \"oui-h-[30px]\",\n isSupported\n ? \"hover:oui-bg-base-5 oui-cursor-pointer\"\n : \"oui-cursor-not-allowed\",\n isActive && \"oui-bg-base-5\",\n index !== 0 && \"oui-mt-[2px]\",\n )}\n onClick={async () => {\n if (!isSupported) return;\n setOpen(false);\n await props.onValueChange(chain);\n }}\n >\n <Flex gapX={1} itemAlign=\"center\">\n <ChainIcon\n className={cn(\"oui-size-[18px]\", !isSupported && \"oui-opacity-50\")}\n chainId={chain.chain_id}\n />\n <Text size=\"2xs\" intensity={isSupported ? 54 : 36}>\n {chain.name}\n </Text>\n {!isSupported && (\n <Badge color=\"danger\" size=\"xs\">\n {t(\"common.notSupported\")}\n </Badge>\n )}\n </Flex>\n {isActive && (\n <Box\n width={4}\n height={4}\n r=\"full\"\n className=\"oui-deposit-network-select-active-dot oui-bg-[linear-gradient(270deg,#59B0FE_0%,#26FEFE_100%)]\"\n />\n )}\n </Flex>\n );\n });\n\n return (\n <DropdownMenuRoot open={selectable ? open : false} onOpenChange={setOpen}>\n <DropdownMenuTrigger disabled={disabled} asChild>\n {trigger}\n </DropdownMenuTrigger>\n <DropdownMenuPortal>\n <DropdownMenuContent\n onCloseAutoFocus={(e) => e.preventDefault()}\n align=\"start\"\n sideOffset={2}\n className={cn(\n \"oui-deposit-token-select-dropdown-menu-content\",\n \"oui-bg-base-8 oui-p-1\",\n \"oui-w-[var(--radix-dropdown-menu-trigger-width)]\",\n \"oui-rounded-md oui-select-none\",\n )}\n >\n <ScrollArea>\n <div className=\"oui-max-h-[254px]\">{content}</div>\n </ScrollArea>\n </DropdownMenuContent>\n </DropdownMenuPortal>\n </DropdownMenuRoot>\n );\n};\n","import React from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { cn, Flex, Text } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport const CollateralContribution: React.FC<{\n value: number;\n precision: number;\n}> = (props) => {\n const { t } = useTranslation();\n const { value, precision } = props;\n return (\n <Flex width=\"100%\" itemAlign=\"center\" justify=\"between\">\n <Flex itemAlign=\"center\" justify=\"start\">\n <Text size=\"2xs\" intensity={36}>\n {t(\"transfer.deposit.collateralContribution\")}\n </Text>\n </Flex>\n <Flex itemAlign=\"center\" justify=\"end\" gap={1}>\n <Text.numeral\n dp={precision}\n size=\"2xs\"\n rm={Decimal.ROUND_DOWN}\n className={cn(\"oui-font-semibold\")}\n padding={false}\n >\n {value}\n </Text.numeral>\n <Text size=\"2xs\" intensity={36} className=\"oui-select-none\">\n USDC\n </Text>\n </Flex>\n </Flex>\n );\n};\n","import React from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Box, Flex, Text, Tooltip } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { TooltipIcon } from \"../icons/tooltipIcon\";\n\nconst TooltipContent: React.FC = () => {\n const { t } = useTranslation();\n return (\n <Box className=\"oui-w-72 oui-max-w-72\">\n <Text size=\"2xs\" intensity={80}>\n {t(\"portfolio.overview.column.collateralRatio.explain\")}\n </Text>{\" \"}\n <a\n href=\"https://orderly.network/docs/introduction/trade-on-orderly/multi-collateral\"\n target=\"_blank\"\n rel=\"noreferrer\"\n className={\n \"oui-border-b oui-border-dashed oui-border-line-12 oui-text-2xs oui-text-primary\"\n }\n >\n {t(\"tradingLeaderboard.learnMore\")}\n </a>\n </Box>\n );\n};\n\nexport const CollateralRatioUI: React.FC<{ value: number }> = (props) => {\n const { t } = useTranslation();\n const { value } = props;\n return (\n <Flex width=\"100%\" itemAlign=\"center\" justify=\"between\">\n <Flex justify=\"start\" itemAlign=\"center\">\n <Text size=\"2xs\" intensity={36}>\n {t(\"portfolio.overview.column.collateralRatio\")}\n </Text>\n <Tooltip className=\"oui-p-2\" content={<TooltipContent />}>\n <TooltipIcon className=\"oui-ml-[2px] oui-cursor-pointer oui-text-base-contrast-36\" />\n </Tooltip>\n </Flex>\n <Text.numeral\n dp={2}\n rm={Decimal.ROUND_DOWN}\n coloring\n className=\"oui-font-semibold\"\n rule=\"percentages\"\n >\n {value}\n </Text.numeral>\n </Flex>\n );\n};\n","import React from \"react\";\nimport { CollateralRatioUI } from \"./collateralRatio.ui\";\n\nexport const CollateralRatioWidget: React.FC<{ value: number }> = (props) => {\n return <CollateralRatioUI {...props} />;\n};\n","import { FC, ReactNode } from \"react\";\nimport { Flex } from \"@orderly.network/ui\";\nimport { ArrowDownIcon } from \"../../icons\";\n\ntype ExchangeDividerProps = {\n icon?: ReactNode;\n};\n\nexport const ExchangeDivider: FC<ExchangeDividerProps> = ({ icon }) => {\n return (\n <Flex height={40} gapX={3}>\n <Flex height={1} className=\"oui-flex-1 oui-bg-base-contrast-12\"></Flex>\n {icon || <ArrowDownIcon className=\"oui-text-primary-light\" />}\n <Flex height={1} className=\"oui-flex-1 oui-bg-base-contrast-12\"></Flex>\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Box, Flex, modal, Text } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { type UseDepositFeeReturn } from \"../depositForm/depositForm.script\";\n\ntype FeeProps = Partial<UseDepositFeeReturn> & {\n nativeSymbol?: string;\n};\n\nexport const Fee: FC<FeeProps> = (props) => {\n const { dstGasFee, feeQty, feeAmount, dp, nativeSymbol } = props;\n const { t } = useTranslation();\n\n const onShowFee = () => {\n const content = (\n <div className=\"oui-text-2xs\">\n <Flex gapX={1}>\n <Text size=\"2xs\" intensity={54}>\n {`${t(\"transfer.deposit.destinationGasFee\")}: `}\n </Text>\n <Text.numeral\n intensity={80}\n dp={dp}\n rm={Decimal.ROUND_UP}\n padding={false}\n >\n {feeQty!}\n </Text.numeral>\n <Text intensity={54}>{nativeSymbol}</Text>\n </Flex>\n <Box mt={2}>\n <Text intensity={36}>\n {t(\"transfer.deposit.destinationGasFee.description\")}\n </Text>\n </Box>\n </div>\n );\n\n modal.alert({\n title: t(\"common.fee\"),\n message: content,\n });\n };\n\n const showFeeQty = !!dstGasFee && dstGasFee !== \"0\";\n\n return (\n <Text\n size=\"2xs\"\n intensity={36}\n className=\"oui-border-dashed oui-border-b oui-border-line-12 oui-cursor-pointer\"\n onClick={onShowFee}\n >\n {`${t(\"transfer.deposit.estGasFee\")} ≈ `}\n <Text size=\"2xs\" intensity={80}>\n $\n <Text.numeral dp={2} padding={false} rm={Decimal.ROUND_UP}>\n {feeAmount!}\n </Text.numeral>{\" \"}\n </Text>\n {showFeeQty && (\n <span>\n (\n <Text intensity={54}>\n <Text.numeral dp={dp} padding={false} rm={Decimal.ROUND_UP}>\n {feeQty!}\n </Text.numeral>\n {nativeSymbol}\n </Text>\n )\n </span>\n )}\n </Text>\n );\n};\n","import React from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, Text } from \"@orderly.network/ui\";\n\nexport const MinimumReceived: React.FC<\n Readonly<{ symbol: string; value: number | string; precision: number }>\n> = (props) => {\n const { t } = useTranslation();\n const { value, symbol, precision = 6 } = props;\n\n return (\n <Flex width=\"100%\" itemAlign=\"center\" justify=\"between\">\n <Flex itemAlign=\"center\" justify=\"start\">\n <Text size=\"2xs\" intensity={36}>\n {t(\"transfer.swapDeposit.minimumReceived\")}\n </Text>\n </Flex>\n <Flex itemAlign=\"center\" justify=\"end\" gap={1}>\n <Text.numeral\n dp={precision}\n size=\"2xs\"\n className=\"oui-select-none\"\n intensity={80}\n >\n {value}\n </Text.numeral>\n <Text size=\"2xs\" className=\"oui-select-none\" intensity={36}>\n {symbol}\n </Text>\n </Flex>\n </Flex>\n );\n};\n","/**\n * Yield-bearing collateral assets configuration\n * These assets earn APY rewards while being used as collateral for trading\n */\n\nexport interface YieldBearingAsset {\n /** Asset symbol (e.g., \"YUSD\", \"deUSD\") */\n symbol: string;\n /** Asset display name */\n displayName: string;\n /** API endpoint to fetch APY data */\n apyApiUrl: string;\n /** Path to extract APY value from API response (e.g., \"data.efficient_apr\") */\n apyPath: string;\n /** External link to the asset issuer's website */\n externalUrl: string;\n}\n\n/**\n * Configuration for all supported yield-bearing assets\n * Chain support is determined by the backend API (/v1/public/token)\n * via the chain_details array for each token\n */\nexport const YIELD_BEARING_ASSETS: YieldBearingAsset[] = [\n {\n symbol: \"YUSD\",\n displayName: \"YUSD\",\n apyApiUrl: \"https://api.aegis.im/api/project-stats\",\n apyPath: \"data.efficient_apr\",\n externalUrl: \"https://aegis.im/\",\n },\n {\n symbol: \"deUSD\",\n displayName: \"deUSD\",\n apyApiUrl: \"https://api-deusd-prod-public.elixir.xyz/public/deusd_apy\",\n apyPath: \"deusd_apy\",\n externalUrl: \"https://www.elixir.xyz/deusd\",\n },\n];\n\n/**\n * Check if a token is a yield-bearing asset\n * Note: This only checks if the token symbol is configured as yield-bearing.\n * Chain availability is determined by the backend API's chain_details.\n *\n * @param symbol - Token symbol to check\n * @returns true if the token is configured as yield-bearing\n */\nexport function isYieldBearingAsset(symbol?: string): boolean {\n if (!symbol) return false;\n return YIELD_BEARING_ASSETS.some(\n (asset) => asset.symbol.toLowerCase() === symbol.toLowerCase(),\n );\n}\n\n/**\n * Get yield-bearing asset configuration by symbol\n */\nexport function getYieldBearingAsset(\n symbol?: string,\n): YieldBearingAsset | undefined {\n if (!symbol) return undefined;\n return YIELD_BEARING_ASSETS.find(\n (asset) => asset.symbol.toLowerCase() === symbol.toLowerCase(),\n );\n}\n","import { useCallback, useEffect, useState } from \"react\";\nimport { getYieldBearingAsset } from \"../../../constants/yieldBearingAssets\";\n\nexport interface YieldAPYData {\n /** APY value in percentage (e.g., 8.5 for 8.5%) */\n apy: number | null;\n /** Whether the APY data is currently loading */\n loading: boolean;\n /** Error message if failed to fetch APY */\n error: string | null;\n /** External URL to the asset issuer's website */\n externalUrl: string | null;\n}\n\n/**\n * Hook to fetch and manage APY data for yield-bearing assets\n * @param symbol - Token symbol to fetch APY for\n * @returns APY data including value, loading state, and error\n */\nexport function useYieldAPY(symbol?: string): YieldAPYData {\n const [apy, setApy] = useState<number | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const assetConfig = getYieldBearingAsset(symbol);\n\n const fetchAPY = useCallback(async () => {\n if (!assetConfig) {\n setApy(null);\n setError(null);\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), 10000); // 10s timeout\n\n const response = await fetch(assetConfig.apyApiUrl, {\n signal: controller.signal,\n headers: {\n Accept: \"application/json\",\n },\n });\n\n clearTimeout(timeoutId);\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const data = await response.json();\n\n // Extract APY value using the path from config\n const apyValue = getNestedValue(data, assetConfig.apyPath);\n\n if (typeof apyValue === \"number\" && !isNaN(apyValue)) {\n setApy(apyValue);\n setError(null);\n } else {\n throw new Error(\"Invalid APY data format\");\n }\n } catch (err) {\n console.error(`[useYieldAPY] Failed to fetch APY for ${symbol}:`, err);\n\n // CRITICAL FIX: Clear APY data when fetch fails\n // This prevents showing stale data from previous token\n setApy(null);\n\n if (err instanceof Error) {\n if (err.name === \"AbortError\") {\n setError(\"timeout\");\n } else {\n setError(err.message);\n }\n } else {\n setError(\"unknown_error\");\n }\n } finally {\n setLoading(false);\n }\n }, [symbol, assetConfig]);\n\n // Fetch APY when symbol changes\n useEffect(() => {\n // CRITICAL FIX: Clear APY immediately when symbol changes\n // This prevents showing stale data during the transition\n setApy(null);\n setError(null);\n\n if (assetConfig?.symbol === \"deUSD\") {\n fetchAPY();\n } else {\n setLoading(false);\n }\n }, [assetConfig, fetchAPY]);\n\n return {\n apy,\n loading,\n error,\n externalUrl: assetConfig?.externalUrl || null,\n };\n}\n\n/**\n * Helper function to extract nested value from object using dot notation path\n * e.g., \"data.efficient_apr\" => obj.data.efficient_apr\n */\nfunction getNestedValue(obj: any, path: string): any {\n return path.split(\".\").reduce((current, key) => {\n return current?.[key];\n }, obj);\n}\n","import { useEffect, useRef, useState } from \"react\";\nimport { API } from \"@orderly.network/types\";\n\nconst retryInterval = 1000;\n\nexport function useBalance(\n token: API.TokenInfo,\n fetchBalance?: (token: string, decimals: number) => Promise<any>,\n open?: boolean,\n) {\n const [balance, setBalance] = useState<string>(\"\");\n const balanceRef = useRef<string>(\"\");\n const [loading, setLoading] = useState<boolean>(false);\n\n const timeoutRef = useRef<ReturnType<typeof setTimeout>>();\n\n const loopGetTokenBalance = async (timeout = 0) => {\n if (loading || typeof fetchBalance !== \"function\" || !token.address) {\n return;\n }\n\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n if (balanceRef.current === \"\") {\n // when balance is empty, set loading to true\n setLoading(true);\n }\n\n timeoutRef.current = setTimeout(async () => {\n try {\n const balance = await fetchBalance(token.address!, token.decimals!);\n setBalance(balance);\n balanceRef.current = balance;\n console.log(\"balance\", token.symbol, token.address, balance);\n } catch (err) {\n console.error(\"get balance error\", token.symbol, token.address, err);\n // when fetch balance failed, retry\n loopGetTokenBalance(retryInterval);\n } finally {\n if (balanceRef.current !== \"\") {\n setLoading(false);\n }\n }\n }, timeout);\n };\n\n useEffect(() => {\n if (open) {\n // get balance first, no timeout\n loopGetTokenBalance(0);\n }\n\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, [token, open]);\n\n return { balance, loading };\n}\n","import React from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API } from \"@orderly.network/types\";\nimport {\n Badge,\n Box,\n cn,\n Flex,\n Spinner,\n Text,\n TokenIcon,\n} from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { isYieldBearingAsset } from \"../../constants/yieldBearingAssets\";\nimport { useYieldAPY } from \"../depositForm/hooks/useYieldAPY\";\nimport { useBalance } from \"./useBalance\";\n\ninterface TokenOptionProps {\n token: API.TokenInfo & {\n label: string;\n value: string;\n insufficientBalance?: boolean;\n balance?: string;\n };\n fetchBalance?: (token: string, decimals: number) => Promise<any>;\n onTokenChange?: (token: API.TokenInfo) => void;\n isActive: boolean;\n index?: number;\n displayType?: \"balance\" | \"vaultBalance\";\n open?: boolean;\n}\n\nexport const TokenOption: React.FC<TokenOptionProps> = (props) => {\n const { token, isActive, displayType, onTokenChange, fetchBalance, open } =\n props;\n const { symbol, precision, insufficientBalance } = token;\n const { balance, loading } = useBalance(token, fetchBalance, open);\n const { apy } = useYieldAPY(symbol);\n\n const showBalance = typeof fetchBalance === \"function\";\n const showAPY = isYieldBearingAsset(symbol) && apy !== null;\n\n const { t } = useTranslation();\n\n if (displayType === \"vaultBalance\" && insufficientBalance) {\n return (\n <Flex\n key={symbol}\n itemAlign={\"center\"}\n justify=\"between\"\n px={2}\n r=\"base\"\n className={cn(\n \"group\",\n \"oui-h-[30px]\",\n \"oui-text-2xs oui-font-semibold\",\n isActive && \"oui-bg-base-5\",\n props.index !== 0 && \"oui-mt-[2px]\",\n \"oui-cursor-not-allowed\",\n )}\n >\n <Flex itemAlign=\"center\" gapX={1}>\n <TokenIcon name={symbol} className=\"oui-size-[16px] oui-opacity-50\" />\n <Text intensity={36}>{token.label}</Text>\n <Badge color=\"neutral\" size=\"xs\">\n {t(\"transfer.withdraw.InsufficientVaultBalance\")}\n </Badge>\n </Flex>\n </Flex>\n );\n }\n\n const renderValue = () => {\n if (!showBalance) {\n return null;\n }\n\n if (loading && !token.balance) {\n return <Spinner size=\"sm\" />;\n }\n\n return (\n <Text.numeral\n rule=\"price\"\n dp={precision ?? 2}\n rm={Decimal.ROUND_DOWN}\n className={cn(\n \"oui-text-base-contrast-80 group-hover:oui-text-base-contrast-54\",\n isActive && \"oui-text-base-contrast-54\",\n )}\n >\n {balance || token.balance!}\n </Text.numeral>\n );\n };\n\n return (\n <Flex\n key={symbol}\n justify=\"between\"\n px={2}\n r=\"base\"\n className={cn(\n \"group\",\n \"oui-h-[30px] hover:oui-bg-base-5\",\n \"oui-text-2xs oui-font-semibold\",\n \"oui-cursor-pointer\",\n isActive && \"oui-bg-base-5\",\n props.index !== 0 && \"oui-mt-[2px]\",\n )}\n onClick={() => {\n onTokenChange?.(token);\n }}\n >\n <Flex gapX={1} itemAlign=\"center\">\n <TokenIcon name={symbol} className=\"oui-size-[16px]\" />\n <Text\n className={cn(\n \"oui-text-base-contrast-54 group-hover:oui-text-base-contrast-80\",\n isActive && \"oui-text-base-contrast-80\",\n )}\n >\n {token.label}\n </Text>\n {showAPY && (\n <Box\n height={18}\n px={2}\n r=\"sm\"\n className=\"oui-rounded-[4px] oui-bg-success/[0.15]\"\n >\n <Text size=\"2xs\" className=\"oui-text-success\">\n {apy!.toFixed(1)}% APY\n </Text>\n </Box>\n )}\n </Flex>\n {renderValue()}\n </Flex>\n );\n};\n","import { FC, ReactNode, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API } from \"@orderly.network/types\";\nimport {\n Input,\n Select,\n InputProps,\n cn,\n Box,\n Text,\n Flex,\n inputFormatter,\n Spinner,\n InputFormatter,\n} from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { InputStatus } from \"../../types\";\nimport { TokenOption } from \"./tokenOption\";\n\nexport type QuantityInputProps = {\n token?: API.TokenInfo;\n tokens?: API.TokenInfo[];\n label?: string;\n status?: InputStatus;\n hintMessage?: string;\n hintSuffix?: ReactNode;\n onValueChange?: (value: string) => void;\n onTokenChange?: (token: any) => void;\n fetchBalance?: (token: string, decimals: number) => Promise<any>;\n loading?: boolean;\n testId?: string;\n formatters?: InputFormatter[];\n vaultBalanceList?: API.VaultBalance[];\n displayType?: \"balance\" | \"vaultBalance\";\n tokenBalances?: Record<string, string>;\n tokenValueFormatter?: (value: string) => ReactNode;\n tokenShowCaret?: boolean;\n} & Omit<InputProps, \"onClear\" | \"suffix\" | \"onValueChange\">;\n\nexport const QuantityInput: FC<QuantityInputProps> = (props) => {\n const {\n token,\n tokens = [],\n classNames,\n label,\n status,\n hintMessage,\n hintSuffix,\n value,\n onValueChange,\n fetchBalance,\n onTokenChange,\n loading,\n placeholder,\n formatters,\n vaultBalanceList,\n displayType,\n tokenBalances,\n tokenValueFormatter,\n tokenShowCaret,\n ...rest\n } = props;\n\n const { t } = useTranslation();\n\n const inputRef = useRef<HTMLInputElement>(null);\n const [open, setOpen] = useState(false);\n const [width, setWidth] = useState(0);\n\n const tokenOptions = useMemo(() => {\n return tokens.map((token) => {\n const currentToken = vaultBalanceList?.find(\n (item) => item.token === token.symbol,\n );\n const insufficientBalance = currentToken\n ? new Decimal(currentToken.balance ?? 0).lt(value ? Number(value) : 0)\n : false;\n return {\n ...token,\n name: token.display_name || token.symbol!,\n insufficientBalance,\n balance: tokenBalances?.[token.symbol!],\n };\n });\n }, [tokens, value, vaultBalanceList, tokenBalances]);\n\n useEffect(() => {\n const rect = inputRef?.current?.getBoundingClientRect();\n setWidth(rect?.width || 0);\n }, [inputRef]);\n\n const _onTokenChange = (value: string) => {\n const find = tokens.find((item) => item.symbol === value);\n if (find) {\n onTokenChange?.(find);\n }\n };\n\n const selectable = tokens.length > 1;\n const selectOpen = selectable ? open : false;\n\n const optionRenderer = (item: any) => {\n const isActive = item.symbol === token?.symbol;\n return (\n <TokenOption\n token={item}\n isActive={isActive}\n fetchBalance={fetchBalance}\n displayType={displayType}\n onTokenChange={(item) => {\n onTokenChange?.(item);\n setOpen(false);\n }}\n open={selectOpen}\n />\n );\n };\n\n const prefix = (\n <Box>\n <Box className=\"oui-absolute oui-top-0\">\n <Text size=\"2xs\" intensity={36}>\n {label || t(\"common.quantity\")}\n </Text>\n </Box>\n {loading && (\n <Box className=\"oui-absolute oui-bottom-1\">\n <Spinner size=\"sm\" />\n </Box>\n )}\n </Box>\n );\n\n const suffix = (\n <div className=\"oui-absolute oui-right-0\">\n <Select.tokens\n open={selectOpen}\n onOpenChange={setOpen}\n disabled={rest.disabled}\n variant=\"text\"\n tokens={tokenOptions}\n value={token?.display_name || token?.symbol}\n size={rest.size}\n onValueChange={_onTokenChange}\n showIcon\n valueFormatter={tokenValueFormatter}\n showCaret={tokenShowCaret}\n optionRenderer={optionRenderer}\n contentProps={{\n onCloseAutoFocus: (event) => {\n event.preventDefault();\n inputRef.current?.focus();\n },\n onClick: (event) => {\n event.preventDefault();\n inputRef.current?.focus();\n },\n style: { width },\n align: \"end\",\n sideOffset: 5,\n className: \"oui-border oui-border-line-6\",\n }}\n />\n </div>\n );\n\n const message = (\n <Flex mt={1} gapX={1} px={1} justify=\"between\" itemAlign=\"center\">\n <Flex gapX={1} itemAlign=\"center\">\n <Box\n width={4}\n height={4}\n r=\"full\"\n className={cn(\n status === \"error\" && \"oui-bg-danger-light\",\n status === \"warning\" && \"oui-bg-warning-light\",\n )}\n ></Box>\n <Text\n size=\"2xs\"\n className={cn(\n status === \"error\" && \"oui-text-danger-light\",\n status === \"warning\" && \"oui-text-warning-light\",\n )}\n >\n {hintMessage}\n </Text>\n </Flex>\n {hintSuffix && (\n <Box className=\"oui-flex oui-items-center oui-gap-1\">{hintSuffix}</Box>\n )}\n </Flex>\n );\n\n const _placeholder = placeholder ?? (loading ? \"\" : \"0\");\n\n return (\n <>\n <Input\n ref={inputRef}\n autoComplete=\"off\"\n placeholder={_placeholder}\n prefix={prefix}\n suffix={suffix}\n value={value}\n onValueChange={(value) => {\n onValueChange?.(value);\n }}\n formatters={\n formatters || [\n inputFormatter.numberFormatter,\n inputFormatter.dpFormatter(token?.precision ?? 2),\n inputFormatter.currencyFormatter,\n ]\n }\n {...rest}\n classNames={{\n ...classNames,\n root: cn(\n \"oui-relative oui-h-[54px] oui-px-3\",\n \"oui-rounded-lg oui-border oui-border-line\",\n status === \"error\" &&\n \"oui-outline-danger-light focus-within:oui-outline-danger-light\",\n status === \"warning\" &&\n \"oui-outline-warning-light focus-within:oui-outline-warning-light\",\n props.readOnly\n ? \"oui-border-none oui-bg-base-6 focus-within:oui-outline-0\"\n : \"oui-bg-base-5\",\n classNames?.root,\n ),\n input: cn(\"oui-absolute oui-bottom-0\", classNames?.input),\n }}\n />\n {hintMessage && message}\n </>\n );\n};\n","import { FC, useEffect, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n AlertDialog,\n Box,\n cn,\n EditIcon,\n Flex,\n Input,\n inputFormatter,\n Text,\n} from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\n\ninterface SlippageProps {\n value?: number;\n onValueChange?: (value: number) => void;\n max?: number;\n min?: number;\n}\n\nconst options = [0.5, 1, 2];\n\nexport const Slippage: FC<SlippageProps> = (props) => {\n const { min = 0.2, max = 10 } = props;\n const [value, setValue] = useState<number>();\n const [customValue, setCustomValue] = useState(\"\");\n const [open, setOpen] = useState(false);\n const { t } = useTranslation();\n\n useEffect(() => {\n if (props.value && !options.includes(props.value!)) {\n setCustomValue(props.value!.toString());\n } else {\n setValue(props.value);\n }\n }, [props.value, open]);\n\n const showSlippage = () => {\n setOpen(true);\n };\n\n const hideSlippage = () => {\n setOpen(false);\n };\n\n const onClick = (val: number) => {\n setValue(val);\n setCustomValue(\"\");\n };\n\n const onValueChange = (val: string) => {\n if (!val || Number(val) === 0) {\n setCustomValue(val);\n return;\n }\n\n const d = new Decimal(val);\n setValue(undefined);\n if (d.lt(min)) {\n setCustomValue(min.toString());\n } else if (d.gt(max)) {\n setCustomValue(max.toString());\n } else {\n setCustomValue(val);\n }\n };\n\n const getValue = () =>\n customValue ? new Decimal(customValue)?.toNumber() : value;\n\n const onConfirm = () => {\n const val = getValue();\n if (!val) return Promise.resolve(true);\n props.onValueChange?.(val);\n hideSlippage();\n // if custom value in options, then clear custom value\n if (options.includes(val)) {\n setCustomValue(\"\");\n }\n return Promise.resolve(true);\n };\n\n const disabled = !getValue();\n\n const content = (\n <div className=\"oui-text-2xs\">\n <Flex gapX={2}>\n {options.map((item) => {\n const isActive = value === item;\n return (\n <SlippageItem\n key={item}\n value={item}\n isActive={isActive}\n onClick={() => {\n onClick(item);\n }}\n />\n );\n })}\n\n <Input\n suffix=\"%\"\n formatters={[\n inputFormatter.numberFormatter,\n inputFormatter.dpFormatter(2),\n ]}\n value={customValue}\n onValueChange={onValueChange}\n classNames={{\n root: cn(\n \"oui-rounded-md oui-bg-base-6\",\n \"oui-h-[40px] oui-w-[74px]\",\n ),\n input: \"oui-text-base-contrast\",\n additional: \"oui-pl-1\",\n }}\n />\n </Flex>\n\n <Box mt={5}>\n <Text intensity={54}>\n {t(\"transfer.slippage.slippageTolerance.description\")}\n </Text>\n </Box>\n </div>\n );\n\n return (\n <>\n <AlertDialog\n open={open}\n onOpenChange={setOpen}\n title={t(\"transfer.slippage.slippageTolerance\")}\n okLabel={t(\"common.confirm\")}\n message={content}\n onOk={onConfirm}\n actions={{ primary: { disabled } }}\n />\n <Flex\n width=\"100%\"\n justify=\"between\"\n className=\"oui-cursor-pointer oui-select-none\"\n onClick={showSlippage}\n >\n <Text intensity={36} size=\"2xs\">\n {t(\"transfer.slippage\")}\n </Text>\n <Flex gapX={1}>\n <Text size=\"2xs\" color=\"primaryLight\">\n {props.value}%\n </Text>\n <EditIcon className=\"oui-size-3 oui-text-primary-light\" />\n </Flex>\n </Flex>\n </>\n );\n};\n\ntype SlippageItemProps = {\n value: number;\n isActive: boolean;\n onClick: () => void;\n};\n\nconst SlippageItem: FC<SlippageItemProps> = ({ value, isActive, onClick }) => {\n return (\n <Flex\n intensity={600}\n justify=\"center\"\n itemAlign=\"center\"\n r=\"md\"\n width={74}\n height={40}\n className={cn(\n \"oui-cursor-pointer oui-select-none\",\n isActive\n ? \"oui-bg-primary-light oui-text-primary-contrast/80\"\n : \"oui-text-base-contrast-80\",\n )}\n onClick={onClick}\n >\n <Text size=\"sm\">{value}%</Text>\n </Flex>\n );\n};\n","import { FC, useMemo, ReactNode } from \"react\";\nimport { useTranslation, Trans } from \"@orderly.network/i18n\";\nimport { NetworkId } from \"@orderly.network/types\";\nimport { Box, Text } from \"@orderly.network/ui\";\nimport { modal } from \"@orderly.network/ui\";\nimport { ChainSelectorDialogId } from \"@orderly.network/ui-chain-selector\";\n\ntype NoticeProps = {\n message?: string | ReactNode;\n needSwap?: boolean;\n needCrossSwap?: boolean;\n wrongNetwork?: boolean;\n networkId?: NetworkId;\n};\n\nexport const Notice: FC<NoticeProps> = (props) => {\n const { message, needSwap, needCrossSwap, wrongNetwork, networkId } = props;\n const { t } = useTranslation();\n\n const showChainSelect = () => {\n modal.show(ChainSelectorDialogId, { networkId });\n };\n\n const content = useMemo(() => {\n if (wrongNetwork) {\n return t(\"connector.wrongNetwork.tooltip\");\n }\n\n if (message) {\n return message;\n }\n\n if (needCrossSwap) {\n return (\n <Text>\n {/* @ts-ignore */}\n <Trans\n i18nKey=\"transfer.swapDeposit.crossSwap.notice\"\n components={[\n <Text\n key=\"0\"\n className=\"oui-cursor-pointer\"\n color=\"primaryLight\"\n onClick={showChainSelect}\n />,\n ]}\n />\n </Text>\n );\n }\n\n if (needSwap) {\n return t(\"transfer.swapDeposit.swap.notice\");\n }\n }, [message, needSwap, needCrossSwap, wrongNetwork, t]);\n\n if (content) {\n return (\n <Box\n mb={3}\n className=\"oui-text-center oui-text-xs oui-text-warning-darken\"\n >\n {content}\n </Box>\n );\n }\n\n return null;\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Box, Divider, Flex, modal, Text } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { UseSwapFee } from \"../hooks/useSwapFee\";\n\ntype SwapFeeProps = UseSwapFee;\n\nexport const SwapFee: FC<SwapFeeProps> = (props) => {\n const { feeQtys, feeAmount, feeDetails, nativeSymbol } = props;\n const { t } = useTranslation();\n\n const onShowFee = () => {\n const content = (\n <Box className=\"oui-text-2xs\">\n {feeDetails?.map((item, index) => {\n const isEnd = index === feeDetails?.length - 1;\n return (\n <Box key={index}>\n <Flex gapX={1}>\n <Text intensity={54}>{item.title}:</Text>\n {/* TODO: format price in data */}\n <Text\n intensity={80}\n // dp={item.dp}\n // rm={Decimal.ROUND_UP}\n // padding={false}\n >\n {item.value}\n </Text>\n <Text intensity={54}>{item.symbol}</Text>\n </Flex>\n\n <Box mt={2}>\n <Text intensity={36}>{item.description}</Text>\n </Box>\n\n {!isEnd && (\n <Box my={3}>\n <Divider intensity={8} />\n </Box>\n )}\n </Box>\n );\n })}\n </Box>\n );\n\n modal.alert({\n title: t(\"common.fee\"),\n message: content,\n });\n };\n\n const renderFeeQty = () => {\n const len = feeQtys?.length;\n if (!len) return;\n\n const list = feeQtys.map((item, index) => {\n return (\n <Text intensity={54} key={index}>\n <Text.numeral dp={item.dp} padding={false} rm={Decimal.ROUND_UP}>\n {item.value}\n </Text.numeral>\n {` ${item.symbol || nativeSymbol}`}\n </Text>\n );\n });\n\n if (len === 1) {\n return <span>({list})</span>;\n }\n\n if (len === 2) {\n return (\n <span>\n ({list[0]} + {list[1]})\n </span>\n );\n }\n };\n\n return (\n <Text\n size=\"xs\"\n intensity={36}\n className=\"oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12\"\n onClick={onShowFee}\n >\n {`${t(\"common.fee\")} ≈ `}\n <Text size=\"xs\" intensity={80}>\n $\n <Text.numeral dp={2} padding={false} rm={Decimal.ROUND_UP}>\n {feeAmount}\n </Text.numeral>\n {` `}\n </Text>\n\n {renderFeeQty()}\n </Text>\n );\n};\n","import { FC } from \"react\";\nimport { cn, Flex, Text } from \"@orderly.network/ui\";\n\ninterface SwapCoinProps {\n className?: string;\n sourceSymbol?: string;\n targetSymbol?: string;\n indexPrice: number | string;\n precision?: number;\n}\n\nexport const SwapCoin: FC<SwapCoinProps> = (props) => {\n const { sourceSymbol, targetSymbol, indexPrice, precision = 6 } = props;\n return (\n <Flex\n itemAlign=\"center\"\n gap={1}\n className={cn(props.className, \"oui-text-2xs\")}\n >\n <Text size=\"2xs\" intensity={80}>\n 1\n </Text>\n <Text size=\"2xs\" intensity={36}>\n {sourceSymbol}\n </Text>\n =\n <Text.numeral size=\"2xs\" intensity={80} dp={precision} padding={false}>\n {indexPrice}\n </Text.numeral>\n <Text size=\"2xs\" intensity={36}>\n {targetSymbol}\n </Text>\n </Flex>\n );\n};\n","import { FC, SVGProps } from \"react\";\n\nexport const EditIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M8.498.977a.5.5 0 0 0-.36.14l-1.5 1.501-4.503 4.503-.5.5a.5.5 0 0 0-.125.266l-.5 2.501c-.07.35.228.648.578.579l2.501-.5a.5.5 0 0 0 .266-.126l.5-.5 4.503-4.503 1.5-1.5a.5.5 0 0 0 .141-.36c0-.818-.208-1.403-.64-1.845-.437-.445-1.02-.656-1.861-.656m.197 1.01c.451.026.744.13.944.334.205.21.335.5.363.942-.274.273-.675.668-1.004.997L7.716 2.978c.33-.329.705-.718.979-.992m-1.698 1.71L8.28 4.979 4.496 8.762 3.214 7.48zM2.495 8.199l1.282 1.282-.047.047c-.33.066-.997.206-1.61.329l.328-1.61z\" />\n </svg>\n);\n\nexport const ArrowRightIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"24\"\n height=\"25\"\n viewBox=\"0 0 24 25\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M6.012 12.493a1 1 0 0 1 .999-1h7.555L11.6 8.498l1.405-1.405 4.714 4.683c.196.195.293.457.293.719 0 .26-.098.522-.293.717l-4.714 4.683L11.6 16.49l2.966-2.997H7.011a1 1 0 0 1-.999-1\" />\n </svg>\n);\n\nexport const GasFeeIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M4 2.67v10.663h4.667V2.667H4zm6-.003v2.666h1c.218 0 .53.06.806.26.31.223.527.59.527 1.074V12h1V6.667c0-.045 0-.154-.027-.277a.5.5 0 0 0-.11-.252l-1.668-1.667a.667.667 0 0 1 .943-.942l1.667 1.666c.294.294.417.658.472.915.057.264.057.486.057.555V12c0 .484-.217.85-.527 1.074-.277.2-.589.26-.807.26h-1c-.484 0-.85-.217-1.074-.528a1.4 1.4 0 0 1-.26-.806V6.667H10v6.666h.667a.667.667 0 0 1 0 1.334H2a.667.667 0 0 1 0-1.334h.667V2.667c0-.218.06-.53.259-.807.223-.31.59-.527 1.074-.527h4.667c.217 0 .53.06.806.26.31.223.527.59.527 1.074m-4.667 2a.667.667 0 0 0 0 1.333h2a.667.667 0 0 0 0-1.333z\"\n />\n </svg>\n);\n\nexport const TopRightArrowIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"13\"\n height=\"12\"\n viewBox=\"0 0 13 12\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M8.996 10.496a2 2 0 0 0 2-2v-5a2 2 0 0 0-2-2h-5a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2zm-4-2.5a.5.5 0 0 1-.36-.14.515.515 0 0 1 0-.72l2-2-1.14-1.14h3v3l-1.14-1.14-2 2a.5.5 0 0 1-.36.14\" />\n </svg>\n);\n\nexport const WoofiIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <rect width=\"24\" height=\"24\" rx=\"12\" fill=\"#07080A\" />\n <path\n d=\"M5.077 7.385h2.269l1.604 5.28c.106.348.196.73.196.73s.138-.413.28-.742l.885-2.052a1.8 1.8 0 0 1 .66-.782 1.81 1.81 0 0 1 1.974 0c.293.191.523.463.662.782l2.143 4.91v1.095h-1.402c-.235 0-.464-.07-.66-.2a1.17 1.17 0 0 1-.434-.53l-1.303-3.16-1.243 3.152a1.19 1.19 0 0 1-1.105.747h-.848c-.235 0-.465-.075-.654-.214a1.1 1.1 0 0 1-.4-.556z\"\n fill=\"#FEFEFE\"\n />\n <path d=\"m18.146 10.846 1.066-3.461h-2.396l-1.066 3.461z\" fill=\"url(#a)\" />\n <path\n d=\"m15.371 12-1.208 3.865v.009c-.073.216-.194.529-.514.51a.33.33 0 0 1-.207-.058c.211.186.482.29.763.29h1.428a1.065 1.065 0 0 0 .928-.75L17.769 12z\"\n fill=\"url(#b)\"\n />\n <defs>\n <linearGradient\n id=\"a\"\n x1=\"14.618\"\n y1=\"16.592\"\n x2=\"17.597\"\n y2=\"7.455\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#59B0FE\" />\n <stop offset=\"1\" stopColor=\"#26FEFE\" />\n </linearGradient>\n <linearGradient\n id=\"b\"\n x1=\"16.192\"\n y1=\"16.587\"\n x2=\"18.206\"\n y2=\"7.458\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#59B0FE\" />\n <stop offset=\"1\" stopColor=\"#26FEFE\" />\n </linearGradient>\n </defs>\n </svg>\n);\n","import React from \"react\";\nimport { Flex, Text, TokenIcon } from \"@orderly.network/ui\";\nimport { ArrowRightIcon } from \"../swap/icons\";\n\nexport const SwapIndicator: React.FC<{\n sourceToken?: string;\n targetToken?: string;\n className?: string;\n}> = (props) => {\n const { sourceToken, targetToken, className } = props;\n\n if (sourceToken === targetToken) {\n return null;\n }\n\n return (\n <Flex\n width=\"100%\"\n itemAlign=\"center\"\n justify=\"center\"\n className={className}\n >\n <Flex itemAlign=\"center\" justify=\"center\" gap={1}>\n <Flex itemAlign=\"center\" justify=\"center\" gap={1}>\n <TokenIcon className=\"oui-size-[18px]\" name={sourceToken} />\n <Text weight=\"semibold\" intensity={80} size=\"sm\">\n {sourceToken}\n </Text>\n </Flex>\n <ArrowRightIcon className=\"oui-size-4\" />\n <Flex itemAlign=\"center\" justify=\"center\" gap={1}>\n <TokenIcon className=\"oui-size-[18px]\" name={targetToken} />\n <Text weight=\"semibold\" intensity={80} size=\"sm\">\n {targetToken}\n </Text>\n </Flex>\n </Flex>\n </Flex>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { useAccount, useWalletConnector } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { ABSTRACT_CHAIN_ID_MAP } from \"@orderly.network/types\";\nimport { Flex, Text, WalletIcon } from \"@orderly.network/ui\";\n\nexport const Web3Wallet: FC = () => {\n const { t } = useTranslation();\n const { wallet, connectedChain } = useWalletConnector();\n const { state: accountState, account } = useAccount();\n\n const address = useMemo(() => {\n let address = accountState.address;\n if (\n connectedChain?.id &&\n ABSTRACT_CHAIN_ID_MAP.has(parseInt(connectedChain?.id as string))\n ) {\n address = account.getAdditionalInfo()?.AGWAddress;\n }\n\n return address;\n }, [wallet, accountState, account, connectedChain]);\n\n return (\n <Flex justify=\"between\">\n <Text size=\"sm\" intensity={98}>\n {t(\"transfer.web3Wallet.your\")}\n </Text>\n\n <Flex gapX={1}>\n <WalletIcon size={\"xs\"} name={wallet?.label ?? \"\"} />\n <Text.formatted size=\"sm\" intensity={54} rule=\"address\">\n {address}\n </Text.formatted>\n </Flex>\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { Trans, useTranslation } from \"@orderly.network/i18n\";\nimport { Box, cn, Flex, Text } from \"@orderly.network/ui\";\nimport { TooltipIcon } from \"../icons/tooltipIcon\";\n\nexport interface BaseReminderProps {\n /** APY value in percentage (e.g., 8.5 for 8.5%) */\n apy: number | null;\n /** Whether the APY data is currently loading */\n loading: boolean;\n /** External URL to the asset issuer's website */\n externalUrl: string | null;\n /** Additional CSS class name */\n className?: string;\n /** Theme configuration */\n // theme: ReminderTheme;\n /** Test ID for the component */\n testId?: string;\n}\n\n/**\n * Base Yield Reminder Component\n * Generic reminder component that renders based on provided theme configuration\n * Used by YUSD and deUSD specific components\n */\nexport const BaseReminder: FC<BaseReminderProps> = ({\n apy,\n loading,\n externalUrl,\n className,\n testId,\n}) => {\n const { t } = useTranslation();\n const formattedAPY = apy !== null ? apy.toFixed(1) : null;\n\n return (\n <Box\n className={cn(\n \"oui-border-[0.5px] oui-border-primary oui-bg-primary/[0.12]\",\n className,\n )}\n px={3}\n py={2}\n r=\"lg\"\n width=\"100%\"\n >\n <Flex direction=\"column\" itemAlign=\"start\">\n {formattedAPY !== null ? (\n <Text size=\"sm\" intensity={98}>\n <Trans\n i18nKey=\"transfer.deposit.yieldReminder.earnAPY\"\n values={{ apy: formattedAPY }}\n components={[<span className=\"oui-text-success\" key=\"0\" />]}\n />\n </Text>\n ) : (\n <Text size=\"sm\" intensity={98}>\n {t(\"transfer.deposit.yieldReminder.earnRewards\")}\n </Text>\n )}\n <Text size=\"2xs\" intensity={54} className=\"oui-font-normal\">\n {t(\"transfer.deposit.yieldReminder.distribution\")}\n </Text>\n </Flex>\n\n <Flex justify=\"between\" itemAlign=\"center\" mt={3}>\n {/* Disclaimer - only show when APY is available */}\n {formattedAPY !== null && (\n <Flex gap={1}>\n <TooltipIcon />\n <Text size=\"2xs\" intensity={36} className=\"oui-font-normal\">\n {t(\"transfer.deposit.yieldReminder.disclaimer\")}\n </Text>\n </Flex>\n )}\n\n {externalUrl && (\n <a\n href={externalUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"oui-inline-flex oui-items-center oui-gap-[2px] oui-font-normal oui-no-underline oui-transition-opacity hover:oui-opacity-80\"\n >\n {t(\"common.details\")}\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M3.507 6.996c0-.322.26-.583.583-.583h4.407l-1.73-1.748.82-.82 2.749 2.732a.6.6 0 0 1 .17.42.6.6 0 0 1-.17.418l-2.75 2.731-.82-.82 1.73-1.747H4.09a.583.583 0 0 1-.583-.583\"\n fill=\"#fff\"\n fillOpacity=\".54\"\n />\n </svg>\n </a>\n )}\n </Flex>\n </Box>\n );\n};\n","import { FC } from \"react\";\nimport { BaseReminder } from \"./baseReminder\";\n\nexport interface DeUsdReminderProps {\n /** APY value in percentage (e.g., 8.5 for 8.5%) */\n apy: number | null;\n /** Whether the APY data is currently loading */\n loading: boolean;\n /** External URL to the asset issuer's website */\n externalUrl: string | null;\n /** Additional CSS class name */\n className?: string;\n}\n\n/**\n * DeUSD Yield Reminder Component\n * Light theme with dark text and button style\n * Strictly follows Figma design: https://www.figma.com/design/CdydOeLyOKPJUNw96Wnwzd/WOOFi---Portfolio?node-id=8417-14708&m=dev\n */\nexport const DeUsdReminder: FC<DeUsdReminderProps> = (props) => {\n return <BaseReminder {...props} testId=\"deusd-yield-reminder\" />;\n};\n","import { FC } from \"react\";\nimport { BaseReminder } from \"./baseReminder\";\n\nexport interface YusdReminderProps {\n /** APY value in percentage (e.g., 8.5 for 8.5%) */\n apy: number | null;\n /** Whether the APY data is currently loading */\n loading: boolean;\n /** External URL to the asset issuer's website */\n externalUrl: string | null;\n /** Additional CSS class name */\n className?: string;\n}\n\n/**\n * YUSD Yield Reminder Component\n * Dark theme with white text and coin icons\n * Strictly follows Figma design\n */\nexport const YusdReminder: FC<YusdReminderProps> = (props) => {\n return <BaseReminder {...props} testId=\"yusd-yield-reminder\" />;\n};\n","import { FC } from \"react\";\nimport { isYieldBearingAsset } from \"../../constants/yieldBearingAssets\";\nimport { useYieldAPY } from \"../depositForm/hooks/useYieldAPY\";\nimport { DeUsdReminder } from \"./deUsdReminder\";\nimport { YusdReminder } from \"./yusdReminder\";\n\nexport interface YieldBearingReminderProps {\n /** Token symbol to check and display APY for */\n symbol?: string;\n /** Additional CSS class name */\n className?: string;\n}\n\n/**\n * YieldBearingReminder Component\n * Router component that renders the appropriate reminder based on token type\n * - YUSD: Dark blue theme with white text and coin icons\n * - deUSD: Light pink/purple theme with dark text and deUSD logo icons\n */\nexport const YieldBearingReminder: FC<YieldBearingReminderProps> = ({\n symbol,\n className,\n}) => {\n const { apy, loading, externalUrl } = useYieldAPY(symbol);\n\n // Don't render if not a yield-bearing asset\n if (!isYieldBearingAsset(symbol)) {\n return null;\n }\n\n // Determine which reminder to show based on symbol\n const isDeUsd = symbol?.toLowerCase() === \"deusd\";\n\n if (isDeUsd) {\n return (\n <DeUsdReminder\n apy={apy}\n loading={loading}\n externalUrl={externalUrl}\n className={className}\n />\n );\n }\n\n return (\n <YusdReminder\n apy={apy}\n loading={loading}\n externalUrl={externalUrl}\n className={className}\n />\n );\n};\n","import { useEffect, useState } from \"react\";\nimport { API } from \"@orderly.network/types\";\n\nexport function useNeedSwapAndCross(options: {\n srcToken?: API.TokenInfo;\n dstToken?: API.TokenInfo;\n srcChainId?: number;\n dstChainId?: number;\n}) {\n const { srcToken, dstToken, srcChainId, dstChainId } = options;\n const [needSwap, setNeedSwap] = useState(false);\n const [needCrossSwap, setNeedCrossSwap] = useState(false);\n\n useEffect(() => {\n if (!srcChainId || !dstChainId || !srcToken || !dstToken) return;\n const isCrossChain = srcChainId !== dstChainId;\n\n if (\n (srcToken?.symbol === \"USDC\" && !isCrossChain) ||\n // if srcToken is collateral and srcToken.symbol is the same as dstToken.symbol, it will not need swap\n (srcToken.is_collateral && srcToken.symbol === dstToken?.symbol)\n ) {\n setNeedSwap(false);\n setNeedCrossSwap(false);\n return;\n }\n\n setNeedSwap(srcToken?.symbol !== \"USDC\");\n\n if (isCrossChain) {\n setNeedCrossSwap(true);\n setNeedSwap(true);\n } else {\n setNeedCrossSwap(false);\n }\n }, [srcToken, dstToken, srcChainId, dstChainId]);\n\n return { needSwap, needCrossSwap };\n}\n","export const woofiDexCrossSwapChainRouterAbi = [\n {\n inputs: [],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint8\",\n name: \"version\",\n type: \"uint8\",\n },\n ],\n name: \"Initialized\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"previousOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"Paused\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"Unpaused\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"nonce\",\n type: \"uint256\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"bridgedToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"bridgedAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"toToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"minToAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"realToToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"realToAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"orderlyNativeFees\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"accountId\",\n type: \"bytes32\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"brokerHash\",\n type: \"bytes32\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"tokenHash\",\n type: \"bytes32\",\n },\n {\n indexed: false,\n internalType: \"uint128\",\n name: \"tokenAmount\",\n type: \"uint128\",\n },\n ],\n name: \"WOOFiDexCrossSwapOnDstChain\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"dstChainId\",\n type: \"uint16\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"nonce\",\n type: \"uint256\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"fromToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"fromAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"bridgeToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"minBridgeAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"bridgeAmount\",\n type: \"uint256\",\n },\n ],\n name: \"WOOFiDexCrossSwapOnSrcChain\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"MAX_BRIDGE_SLIPPAGE\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"NATIVE_PLACEHOLDER\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"token\",\n type: \"address\",\n },\n ],\n name: \"addDirectBridgeToken\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"allDirectBridgeTokens\",\n outputs: [\n {\n internalType: \"address[]\",\n name: \"\",\n type: \"address[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"allDirectBridgeTokensLength\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"bridgeSlippage\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address payable\",\n name: \"to\",\n type: \"address\",\n },\n {\n components: [\n {\n internalType: \"address\",\n name: \"fromToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"fromAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"address\",\n name: \"bridgeToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"minBridgeAmount\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct IWOOFiDexCrossChainRouter.SrcInfos\",\n name: \"srcInfos\",\n type: \"tuple\",\n },\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"bridgedToken\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"toToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"minToAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"orderlyNativeFees\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct IWOOFiDexCrossChainRouter.DstInfos\",\n name: \"dstInfos\",\n type: \"tuple\",\n },\n {\n components: [\n {\n internalType: \"bytes32\",\n name: \"accountId\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"brokerHash\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"tokenHash\",\n type: \"bytes32\",\n },\n ],\n internalType: \"struct IWOOFiDexCrossChainRouter.DstVaultDeposit\",\n name: \"dstVaultDeposit\",\n type: \"tuple\",\n },\n ],\n name: \"crossSwap\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"dstGasForNoSwapCall\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"dstGasForSwapCall\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"stuckToken\",\n type: \"address\",\n },\n ],\n name: \"inCaseTokenGotStuck\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_weth\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_nonceCounter\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_wooRouter\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_sgRouter\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"_sgChainIdLocal\",\n type: \"uint16\",\n },\n ],\n name: \"initialize\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"nonceCounter\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"orderlyFeeToggle\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"pause\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"paused\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"bridgedToken\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"toToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"minToAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"orderlyNativeFees\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct IWOOFiDexCrossChainRouter.DstInfos\",\n name: \"dstInfos\",\n type: \"tuple\",\n },\n {\n components: [\n {\n internalType: \"bytes32\",\n name: \"accountId\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"brokerHash\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"tokenHash\",\n type: \"bytes32\",\n },\n ],\n internalType: \"struct IWOOFiDexCrossChainRouter.DstVaultDeposit\",\n name: \"dstVaultDeposit\",\n type: \"tuple\",\n },\n ],\n name: \"quoteLayerZeroFee\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"nativeAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"zroAmount\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"token\",\n type: \"address\",\n },\n ],\n name: \"removeDirectBridgeToken\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_bridgeSlippage\",\n type: \"uint256\",\n },\n ],\n name: \"setBridgeSlippage\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_dstGasForNoSwapCall\",\n type: \"uint256\",\n },\n ],\n name: \"setDstGasForNoSwapCall\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_dstGasForSwapCall\",\n type: \"uint256\",\n },\n ],\n name: \"setDstGasForSwapCall\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_nonceCounter\",\n type: \"address\",\n },\n ],\n name: \"setNonceCounter\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bool\",\n name: \"_orderlyFeeToggle\",\n type: \"bool\",\n },\n ],\n name: \"setOrderlyFeeToggle\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_sgChainIdLocal\",\n type: \"uint16\",\n },\n ],\n name: \"setSgChainIdLocal\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"token\",\n type: \"address\",\n },\n ],\n name: \"setSgETH\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"token\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"poolId\",\n type: \"uint256\",\n },\n ],\n name: \"setSgPoolId\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_sgRouter\",\n type: \"address\",\n },\n ],\n name: \"setSgRouter\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"woofiDexCrossChainRouter\",\n type: \"address\",\n },\n ],\n name: \"setWOOFiDexCrossChainRouter\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"token\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"woofiDexVault\",\n type: \"address\",\n },\n ],\n name: \"setWOOFiDexVault\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_wooRouter\",\n type: \"address\",\n },\n ],\n name: \"setWooRouter\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"sgChainIdLocal\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"sgETHs\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"sgPoolIds\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n {\n internalType: \"address\",\n name: \"bridgedToken\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"bridgedAmount\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n name: \"sgReceive\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"sgRouter\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"unpause\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"weth\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"wooRouter\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"woofiDexCrossChainRouters\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"woofiDexVaults\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n stateMutability: \"payable\",\n type: \"receive\",\n },\n];\n\nexport const woofiDexSwapDepositorAbi = [\n { inputs: [], stateMutability: \"nonpayable\", type: \"constructor\" },\n {\n anonymous: false,\n inputs: [\n { indexed: false, internalType: \"uint8\", name: \"version\", type: \"uint8\" },\n ],\n name: \"Initialized\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"previousOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"Paused\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"Unpaused\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n {\n indexed: false,\n internalType: \"address\",\n name: \"fromToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"fromAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"toToken\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"minToAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"toAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"orderlyNativeFees\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"accountId\",\n type: \"bytes32\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"brokerHash\",\n type: \"bytes32\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"tokenHash\",\n type: \"bytes32\",\n },\n {\n indexed: false,\n internalType: \"uint128\",\n name: \"tokenAmount\",\n type: \"uint128\",\n },\n ],\n name: \"WOOFiDexSwap\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"NATIVE_PLACEHOLDER\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"stuckToken\", type: \"address\" }],\n name: \"inCaseTokenGotStuck\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"_wooRouter\", type: \"address\" }],\n name: \"initialize\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"orderlyFeeToggle\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"pause\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"paused\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"bool\", name: \"_orderlyFeeToggle\", type: \"bool\" }],\n name: \"setOrderlyFeeToggle\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"token\", type: \"address\" },\n { internalType: \"address\", name: \"woofiDexVault\", type: \"address\" },\n ],\n name: \"setWOOFiDexVault\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"_wooRouter\", type: \"address\" }],\n name: \"setWooRouter\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address payable\", name: \"to\", type: \"address\" },\n {\n components: [\n { internalType: \"address\", name: \"fromToken\", type: \"address\" },\n { internalType: \"uint256\", name: \"fromAmount\", type: \"uint256\" },\n { internalType: \"address\", name: \"toToken\", type: \"address\" },\n { internalType: \"uint256\", name: \"minToAmount\", type: \"uint256\" },\n {\n internalType: \"uint256\",\n name: \"orderlyNativeFees\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct IWOOFiDexDepositor.Infos\",\n name: \"infos\",\n type: \"tuple\",\n },\n {\n components: [\n { internalType: \"bytes32\", name: \"accountId\", type: \"bytes32\" },\n { internalType: \"bytes32\", name: \"brokerHash\", type: \"bytes32\" },\n { internalType: \"bytes32\", name: \"tokenHash\", type: \"bytes32\" },\n ],\n internalType: \"struct IWOOFiDexDepositor.VaultDeposit\",\n name: \"vaultDeposit\",\n type: \"tuple\",\n },\n ],\n name: \"swap\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"newOwner\", type: \"address\" }],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"unpause\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"wooRouter\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n name: \"woofiDexVaults\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n { stateMutability: \"payable\", type: \"receive\" },\n];\n\nexport const nativeTokenAddress = \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\";\n\nexport const isNativeTokenChecker = (address: string) =>\n address === nativeTokenAddress;\n\nexport const swapSupportApiUrl = \"https://fi-api.woo.org\";\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { Environment, createClient } from \"@layerzerolabs/scan-client\";\nimport { pick } from \"ramda\";\nimport { utils } from \"@orderly.network/core\";\nimport {\n useAccountInstance,\n useBoolean,\n useConfig,\n useEventEmitter,\n} from \"@orderly.network/hooks\";\nimport { WS_WalletStatusEnum } from \"@orderly.network/types\";\nimport {\n isNativeTokenChecker,\n woofiDexCrossSwapChainRouterAbi,\n} from \"../constants\";\n\nexport enum MessageStatus {\n INITIALIZING = \"WAITTING\",\n INFLIGHT = \"INFLIGHT\",\n CONFIRMING = \"CONFIRMING\",\n DELIVERED = \"DELIVERED\",\n FAILED = \"FAILED\",\n}\n\nexport const useCrossSwap = (): any => {\n const [loading, { setTrue: start, setFalse: stop }] = useBoolean(false);\n\n const [layerStatus, setLayerStatus] = useState<MessageStatus>(\n MessageStatus.INITIALIZING,\n );\n\n const ee = useEventEmitter();\n\n const [bridgeMessage, setBridgeMessage] = useState<any | undefined>();\n\n const [status, setStatus] = useState<WS_WalletStatusEnum>(\n WS_WalletStatusEnum.NO,\n );\n const txHashFromBridge = useRef<string | undefined>();\n\n const checkLayerStatusListener = useRef<ReturnType<typeof setTimeout>>();\n\n const account = useAccountInstance();\n\n const config = useConfig();\n const brokerId = config.get(\"brokerId\");\n const networkId = config.get(\"networkId\");\n\n const client = useRef(createClient(networkId as Environment)).current;\n const timer = useRef<ReturnType<typeof setTimeout> | undefined>();\n\n useEffect(() => {\n const handler = (data: any) => {\n const { side, transStatus, trxId } = data;\n\n if (side === \"DEPOSIT\" && trxId === txHashFromBridge.current) {\n setStatus(transStatus);\n }\n };\n ee.on(\"wallet:changed\", handler);\n\n return () => {\n ee.off(\"wallet:changed\", handler);\n };\n }, [txHashFromBridge.current]);\n\n const checkLayerStatus = useCallback((txHash: string) => {\n if (checkLayerStatusListener.current) {\n clearTimeout(checkLayerStatusListener.current);\n }\n\n checkLayerStatusListener.current = setTimeout(async () => {\n try {\n const { messages } = await client.getMessagesBySrcTxHash(txHash);\n\n if (messages.length > 0) {\n const { status } = messages[0];\n\n setLayerStatus(status as MessageStatus);\n\n if (status === MessageStatus.DELIVERED) {\n setBridgeMessage(messages[0]);\n txHashFromBridge.current = messages[0].dstTxHash;\n } else if (status === MessageStatus.FAILED) {\n setBridgeMessage(messages[0]);\n } else {\n checkLayerStatus(txHash);\n }\n } else {\n checkLayerStatus(txHash);\n }\n } catch (e) {\n // setLayerStatus(MessageStatus.FAILED);\n checkLayerStatus(txHash);\n }\n }, 1000);\n }, []);\n\n // swap => src tx hash, cross swap => dst tx hash\n // const checkDeposit\n\n useEffect(() => {\n return () => {\n if (timer.current) {\n clearTimeout(timer.current);\n }\n };\n }, []);\n\n const dstValutDeposit = useCallback(() => {\n return {\n accountId: account.accountIdHashStr,\n brokerHash: utils.parseBrokerHash(brokerId),\n tokenHash: utils.parseTokenHash(\"USDC\"),\n };\n }, [account, brokerId]);\n\n const swap = async (inputs: {\n address: string;\n crossChainRouteAddress: string;\n src: {\n fromToken: string;\n fromAmount: bigint;\n bridgeToken: string;\n minBridgeAmount: bigint;\n };\n dst: {\n chainId: string;\n bridgedToken: string;\n toToken: string;\n minToAmount: bigint;\n airdropNativeAmount: bigint;\n };\n }) => {\n if (!account.walletAdapter) {\n throw new Error(\"walletAdapter is undefined\");\n }\n\n if (!account.address) {\n throw new Error(\"account.address is undefined\");\n }\n\n if (!inputs.crossChainRouteAddress) {\n throw new Error(\"crossChainRouteAddress is undefined\");\n }\n\n const { address, src, dst, crossChainRouteAddress } = inputs;\n if (loading) return;\n start();\n\n try {\n const quotoLZFee = await account.walletAdapter.call(\n crossChainRouteAddress,\n \"quoteLayerZeroFee\",\n [account.address, dst, dstValutDeposit()],\n {\n abi: woofiDexCrossSwapChainRouterAbi,\n },\n );\n\n const result = await account.walletAdapter.sendTransaction(\n crossChainRouteAddress,\n \"crossSwap\",\n {\n from: account.address!,\n to: crossChainRouteAddress,\n data: [account.address, src, dst, dstValutDeposit()],\n value: isNativeTokenChecker(inputs.src.fromToken)\n ? BigInt(inputs.src.fromAmount) + quotoLZFee[0]\n : quotoLZFee[0],\n },\n {\n abi: woofiDexCrossSwapChainRouterAbi,\n },\n );\n\n stop();\n\n checkLayerStatus(result.hash);\n\n ee.emit(\"deposit:requested\");\n\n // @ts-ignore\n return pick([\"from\", \"to\", \"hash\", \"value\"], result);\n } catch (e: any) {\n console.error(\"crossSwap error\", e);\n stop();\n throw new Error(e.errorCode);\n }\n };\n\n return {\n swap,\n loading,\n bridgeStatus: layerStatus,\n status,\n message: bridgeMessage,\n };\n};\n","import { FC, useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n Box,\n Button,\n CheckedCircleFillIcon,\n CloseCircleFillIcon,\n cn,\n Divider,\n Flex,\n Spinner,\n Text,\n} from \"@orderly.network/ui\";\nimport { TopRightArrowIcon } from \"../icons\";\nimport { SwapMode, SwapProcessStatus } from \"../types\";\n\ntype ProcessStatusProps = {\n status?: SwapProcessStatus;\n mode: SwapMode;\n statusUrl?: string;\n onComplete?: (isSuccss: boolean) => void;\n brokerName?: string;\n};\n\nenum SwapState {\n Pending = \"pending\",\n Failed = \"failed\",\n Success = \"success\",\n}\n\ntype TProcessItem = {\n title: string;\n description: string;\n state?: SwapState;\n};\n\nexport const ProcessStatus: FC<ProcessStatusProps> = (props) => {\n const { status, mode, statusUrl, brokerName } = props;\n const { t } = useTranslation();\n\n const processList = useMemo(() => {\n const bridgeStatus = getBridgeStatus(status!);\n const depositStatus = getDepositStatus(status!);\n const list: TProcessItem[] = [\n {\n title:\n bridgeStatus === SwapState.Pending\n ? t(\"transfer.swapDeposit.bridging\")\n : t(\"transfer.swapDeposit.bridge\"),\n description: t(\"transfer.swapDeposit.bridge.description\"),\n state: bridgeStatus,\n },\n {\n title:\n depositStatus === SwapState.Pending\n ? t(\"transfer.swapDeposit.depositing\")\n : t(\"transfer.swapDeposit.deposit\"),\n description: t(\"transfer.swapDeposit.deposit.description\", {\n brokerName,\n }),\n state: depositStatus,\n },\n ];\n\n if (mode === SwapMode.Single) {\n return list.slice(1, 2);\n }\n\n return list;\n }, [mode, brokerName, status, t]);\n\n const onOk = () => {\n props.onComplete?.(status === SwapProcessStatus.Done);\n };\n\n const isFailed =\n status === SwapProcessStatus.DepositFailed ||\n status === SwapProcessStatus.BridgeFialed;\n\n const disabled =\n status === SwapProcessStatus.Bridging ||\n status === SwapProcessStatus.Depositing;\n\n const showDashLine = processList.length > 1;\n\n return (\n <div className=\"oui-font-semibold\">\n <Box intensity={600} p={4} r=\"lg\">\n <Flex\n direction=\"column\"\n itemAlign=\"start\"\n gapY={4}\n className=\"oui-relative\"\n >\n {processList.map((item) => (\n <ProcessItem {...item} key={item.title} />\n ))}\n {showDashLine && (\n <div\n className={cn(\n \"oui-absolute oui-left-[10px] oui-top-[20px] oui-bottom-[38px]\",\n \"oui-w-[1px] oui-h-[34px]\",\n \"oui-border-r oui-border-dashed oui-border-r-line-16\",\n )}\n />\n )}\n </Flex>\n\n <Box my={3}>\n <Divider intensity={8} />\n </Box>\n\n <Flex\n gapX={1}\n justify=\"center\"\n itemAlign=\"center\"\n className={cn(\n statusUrl ? \"oui-text-primary-light\" : \"oui-text-base-contrast-20\",\n statusUrl ? \"oui-cursor-pointer\" : \"oui-cursor-not-allowed\",\n )}\n onClick={() => {\n statusUrl && window.open(statusUrl);\n }}\n >\n <Text size=\"2xs\">{t(\"transfer.swapDeposit.viewStatus\")}</Text>\n <TopRightArrowIcon />\n </Flex>\n </Box>\n\n <Flex\n direction=\"column\"\n justify=\"center\"\n itemAlign=\"center\"\n mt={8}\n gapY={3}\n >\n {isFailed && (\n <Text size=\"xs\" className=\"oui-text-danger-light\">\n {t(\"transfer.swapDeposit.depositFailed\")}\n </Text>\n )}\n\n <Button\n className=\"oui-w-full lg:oui-w-[184px]\"\n disabled={disabled}\n onClick={onOk}\n >\n {t(\"common.ok\")}\n </Button>\n </Flex>\n </div>\n );\n};\n\nconst ProcessItem: FC<TProcessItem> = ({ title, description, state }) => {\n return (\n <Flex itemAlign=\"start\" gapX={2} key={title}>\n <Flex width={20} height={20} justify=\"center\">\n <StatusIndicator state={state} />\n </Flex>\n <Flex direction=\"column\" itemAlign=\"start\">\n <Text\n size=\"sm\"\n className={cn(\n state === \"pending\" || state === \"failed\"\n ? \"oui-text-base-contrast\"\n : \"oui-text-base-contrast-54\",\n )}\n >\n {title}\n </Text>\n <Text\n size=\"2xs\"\n className={cn(\n state === \"pending\"\n ? \"oui-text-base-contrast-54\"\n : \"oui-text-base-contrast-20\",\n )}\n >\n {description}\n </Text>\n </Flex>\n </Flex>\n );\n};\n\nconst StatusIndicator: FC<{ state?: SwapState }> = ({ state }) => {\n if (state === SwapState.Pending) {\n return <Spinner size=\"sm\" />;\n }\n\n if (state === SwapState.Failed) {\n return (\n <CloseCircleFillIcon\n size={20}\n opacity={1}\n className=\"oui-text-danger-light\"\n />\n );\n }\n\n if (state === SwapState.Success) {\n return (\n <CheckedCircleFillIcon\n size={20}\n opacity={1}\n className=\"oui-text-primary-light\"\n />\n );\n }\n\n return <Box r=\"full\" width={10} height={10} intensity={200}></Box>;\n};\n\nfunction getBridgeStatus(status: SwapProcessStatus) {\n if (status === SwapProcessStatus.Bridging) {\n return SwapState.Pending;\n }\n if (status === SwapProcessStatus.BridgeFialed) {\n return SwapState.Failed;\n }\n\n if (\n status === SwapProcessStatus.Done ||\n status === SwapProcessStatus.Depositing\n ) {\n return SwapState.Success;\n }\n}\n\nfunction getDepositStatus(status: SwapProcessStatus) {\n if (status === SwapProcessStatus.Depositing) {\n return SwapState.Pending;\n }\n if (status === SwapProcessStatus.DepositFailed) {\n return SwapState.Failed;\n }\n\n if (status === SwapProcessStatus.Done) {\n return SwapState.Success;\n }\n}\n","import { i18n } from \"@orderly.network/i18n\";\nimport { API } from \"@orderly.network/types\";\n\nexport const getTokenByTokenList = (tokens: API.TokenInfo[] = []) => {\n const tokenObj = tokens.reduce<Record<string, API.TokenInfo>>((acc, item) => {\n acc[item.symbol!] = item;\n return acc;\n }, {});\n return tokenObj[\"USDC\"] || tokenObj[\"USDbC\"] || tokens[0];\n};\n\nexport const feeDecimalsOffset = (origin?: number): number => {\n return (origin ?? 2) + 3;\n};\n\n// export const priceDecimalsOffset = (origin?: number): number => {\n// return Math.abs((origin ?? 2) - 5);\n// };\n\nexport function checkIsAccountId(accountId: string) {\n const regex = /^0x[a-fA-F0-9]{64}$/;\n return regex.test(accountId);\n}\n\nexport function getTransferErrorMessage(errorCode: number) {\n if (errorCode === 34) {\n return i18n.t(\"transfer.internalTransfer.error.transferInProgress\");\n }\n\n if (errorCode === 17) {\n return i18n.t(\"transfer.internalTransfer.error.withdrawalInProgress\");\n }\n\n if (errorCode === 35) {\n return i18n.t(\"transfer.internalTransfer.error.accountIdNotExist\");\n }\n\n if (errorCode === 37) {\n return i18n.t(\"transfer.internalTransfer.error.transferToSelf\");\n }\n\n if (errorCode === 46) {\n return i18n.t(\"transfer.internalTransfer.error.transferToSubAccount\");\n }\n\n // TODO: when api return 500 status, not throw error code\n // if (errorCode === -1000) {\n // return i18n.t(\"transfer.internalTransfer.error.scopeInsufficient\");\n // }\n\n return i18n.t(\"transfer.internalTransfer.error.default\");\n}\n\nconst depositErrorCodeMap = {\n \"0x6697b232\": \"AccessControlBadConfirmation\",\n \"0xe2517d3f\": \"AccessControlUnauthorizedAccount\",\n \"0xc7ee9ce6\": \"AccountIdInvalid\",\n \"0x9fabe1c1\": \"AddressZero\",\n \"0x4b3815a6\": \"BalanceNotEnough\",\n \"0x59d9b863\": \"BrokerNotAllowed\",\n \"0xf67c6d78\": \"CeffuAddressMismatch\",\n \"0xd969df24\": \"DepositExceedLimit\",\n \"0xa65b249b\": \"EnumerableSetError\",\n \"0x06a0cf4a\": \"InvalidSwapSignature\",\n \"0x1eb00b06\": \"InvalidTokenAddress\",\n \"0xfa7c7537\": \"NativeTokenDepositAmountMismatch\",\n \"0xad674ae6\": \"NotRebalanceEnableToken\",\n \"0x623793c9\": \"NotZeroCodeLength\",\n \"0x833d33e7\": \"OnlyCrossChainManagerCanCall\",\n \"0x3ee5aeb5\": \"ReentrancyGuardReentrantCall\",\n \"0x0b693144\": \"SwapAlreadySubmitted\",\n \"0xa29c4986\": \"TokenNotAllowed\",\n \"0x30773dbb\": \"ZeroCodeLength\",\n \"0x56316e87\": \"ZeroDeposit\",\n \"0x93d3bb4d\": \"ZeroDepositFee\",\n};\n\nexport function getDepositKnownErrorMessage(message: string) {\n if (!message) {\n return \"\";\n }\n\n for (const key of Object.keys(depositErrorCodeMap)) {\n if (message.includes(key)) {\n const value =\n depositErrorCodeMap[key as keyof typeof depositErrorCodeMap];\n return `${value} (${key})`;\n }\n }\n}\n","import { FC, ReactNode } from \"react\";\nimport { useTranslation, Trans } from \"@orderly.network/i18n\";\nimport { API } from \"@orderly.network/types\";\nimport {\n Box,\n Flex,\n Text,\n TokenIcon,\n Icon,\n Divider,\n Button,\n} from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { feeDecimalsOffset } from \"../../../utils\";\nimport { ArrowRightIcon, GasFeeIcon, WoofiIcon } from \"../icons\";\nimport { SwapMode, SymbolInfo } from \"../types\";\n\nexport interface SwapInfo {\n // gasFee: string;\n // tradingFee: string;\n dstGasFee: string;\n swapFee: string;\n bridgeFee: string;\n price: number;\n slippage: number;\n received: string;\n time: number;\n}\n\ntype SwapDetailProps = {\n onConfirm: () => void;\n mode: SwapMode;\n src: SymbolInfo;\n dst: SymbolInfo;\n info: SwapInfo;\n markPrice: number;\n nativePrice: number;\n nativeToken?: API.TokenInfo;\n viewMode: \"processing\" | \"details\";\n // transactionData: any;\n};\n\nexport const SwapDetail: FC<SwapDetailProps> = (props) => {\n const {\n info,\n mode,\n nativePrice,\n markPrice,\n src,\n dst,\n nativeToken,\n viewMode,\n } = props;\n\n const { t } = useTranslation();\n\n const header = (\n <Flex justify=\"between\">\n <SwapSymbol\n primary={src?.token}\n chainId={src.chain}\n amount={src?.amount}\n dp={src?.displayDecimals}\n symbol={src?.token}\n />\n <ArrowRightIcon className=\"oui-text-primary-light\" />\n <SwapSymbol\n primary={dst?.token}\n component={<WoofiIcon className=\"oui-size-4\" />}\n amount={dst?.amount}\n dp={dst?.displayDecimals}\n symbol={dst?.token}\n reverse\n />\n </Flex>\n );\n\n const divider = (\n <Box my={5}>\n <Divider intensity={12} />\n </Box>\n );\n\n const listData = [\n {\n label: t(\"transfer.deposit.destinationGasFee\"),\n value: (\n <Flex gapX={1}>\n <GasFeeIcon className=\"oui-text-primary-light\" />\n <Text.numeral\n color=\"primaryLight\"\n padding={false}\n rm={Decimal.ROUND_UP}\n // swap precision\n dp={feeDecimalsOffset(nativeToken?.precision)}\n >\n {info.dstGasFee!}\n </Text.numeral>\n <Text color=\"primaryLight\">{nativeToken?.symbol}</Text>\n <Text className=\"oui-text-primary-light/60\">\n ($\n <Text.numeral\n color=\"primaryLight\"\n padding={false}\n rm={Decimal.ROUND_UP}\n dp={2}\n >\n {new Decimal(info.dstGasFee?.toString())\n .mul(nativePrice || 0)\n .toString()}\n </Text.numeral>\n )\n </Text>\n </Flex>\n ),\n },\n {\n label: t(\"transfer.swapDeposit.swapFee\"),\n value: (\n <>\n <Text.numeral\n intensity={80}\n dp={feeDecimalsOffset(src?.displayDecimals)}\n rm={Decimal.ROUND_UP}\n padding={false}\n >\n {info.swapFee}\n </Text.numeral>\n {` ${src?.token} `}\n <Text className=\"oui-text-[#63666D]\">\n ($\n <Text.numeral padding={false} rm={Decimal.ROUND_UP} dp={2}>\n {new Decimal(info.swapFee).mul(markPrice || 0).toString()}\n </Text.numeral>\n )\n </Text>\n </>\n ),\n },\n {\n label: t(\"transfer.swapDeposit.bridgeFee\"),\n value: mode === SwapMode.Cross && (\n <>\n <Text.numeral\n intensity={80}\n dp={feeDecimalsOffset(src?.displayDecimals)}\n rm={Decimal.ROUND_UP}\n padding={false}\n >\n {info.bridgeFee}\n </Text.numeral>\n {` ${src?.token} `}\n <Text className=\"oui-text-[#63666D]\">\n ($\n <Text.numeral padding={false} rm={Decimal.ROUND_UP} dp={2}>\n {new Decimal(info.bridgeFee).mul(markPrice || 0).toString()}\n </Text.numeral>\n )\n </Text>\n </>\n ),\n },\n {\n label: t(\"transfer.swapDeposit.minimumReceived\"),\n value: (\n <>\n <Text.numeral\n dp={dst?.displayDecimals}\n rm={Decimal.ROUND_DOWN}\n padding={false}\n >\n {info.received}\n </Text.numeral>\n {` ${dst?.token}`}\n </>\n ),\n },\n {\n label: t(\"common.price\"),\n value: (\n <>\n {`1 ${src?.token} = `}\n <Text.numeral dp={3} padding={false}>\n {info.price}\n </Text.numeral>\n {` ${dst?.token}`}\n </>\n ),\n },\n {\n label: t(\"transfer.slippage\"),\n value: `${info.slippage}%`,\n },\n ];\n\n const listView = (\n <Flex direction=\"column\" itemAlign=\"start\" gapY={3}>\n {listData?.map((item) => {\n if (item.value) {\n return <ListItem {...item} key={item.label} />;\n }\n })}\n </Flex>\n );\n\n const swapButton = (\n <Flex justify=\"center\" mt={8}>\n <Button className=\"oui-w-full lg:oui-w-[184px]\" onClick={props.onConfirm}>\n {t(\"transfer.swapDeposit.confirmSwap\")}\n </Button>\n </Flex>\n );\n\n return (\n <Box intensity={800}>\n {header}\n <SwapTime time={info.time ?? 0} />\n {divider}\n\n {viewMode === \"details\" && (\n <>\n {listView}\n {swapButton}\n </>\n )}\n </Box>\n );\n};\n\ntype ListItemProps = {\n label?: string;\n value?: ReactNode;\n};\n\nconst ListItem: FC<ListItemProps> = (props) => {\n return (\n <Flex gapX={2} justify=\"between\" width=\"100%\">\n <Text size=\"sm\" intensity={54}>\n {props.label}\n </Text>\n <Text size=\"sm\" intensity={98} as=\"div\">\n {props.value}\n </Text>\n </Flex>\n );\n};\n\ntype SwapSymbolProps = {\n primary: string;\n chainId?: number;\n component?: ReactNode;\n amount: string;\n dp?: number;\n symbol: string;\n reverse?: boolean;\n};\n\nconst SwapSymbol: FC<SwapSymbolProps> = (props) => {\n return (\n <Flex gapX={2} direction={props.reverse ? \"rowReverse\" : \"row\"}>\n <Icon.combine\n secondary={{\n chainId: props.chainId,\n component: props.component,\n className: \"oui-w-4 oui-h-4 oui-outline-base-8 oui-rounded-full\",\n }}\n >\n <TokenIcon name={props.primary} size=\"md\" />\n </Icon.combine>\n\n <Flex direction=\"column\" itemAlign={props.reverse ? \"end\" : \"start\"}>\n <Text.numeral intensity={98} size=\"lg\" dp={props.dp}>\n {props.amount}\n </Text.numeral>\n <Text intensity={54} size=\"xs\">\n {props.symbol}\n </Text>\n </Flex>\n </Flex>\n );\n};\n\nconst SwapTime: FC<{ time: number }> = (props) => {\n return (\n <Flex justify=\"center\">\n <Flex\n intensity={600}\n r=\"full\"\n gapX={2}\n justify=\"center\"\n py={1}\n mt={2}\n width={210}\n >\n <Text size=\"sm\" intensity={54}>\n {/* @ts-ignore */}\n <Trans\n i18nKey=\"transfer.swapDeposit.averageSwapTime\"\n values={{ time: props.time }}\n components={[<Text color=\"primaryLight\" key=\"0\" />]}\n />\n </Text>\n </Flex>\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { Trans } from \"@orderly.network/i18n\";\nimport { Flex, Text } from \"@orderly.network/ui\";\n\nexport const ViewFAQs: FC = () => {\n return (\n <Flex justify=\"center\" gapX={1} mt={3}>\n <Trans\n i18nKey=\"transfer.swapDeposit.viewFAQs\"\n components={[\n <Text\n size=\"xs\"\n color=\"primaryLight\"\n onClick={() => {\n window.open(\"https://learn.woo.org/woofi/faqs/woofi-pro\");\n }}\n className=\"oui-cursor-pointer\"\n key=\"0\"\n />,\n ]}\n />\n </Flex>\n );\n};\n","import { FC, useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useEventEmitter } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { WS_WalletStatusEnum } from \"@orderly.network/types\";\nimport { Box, toast } from \"@orderly.network/ui\";\nimport { useCrossSwap } from \"../hooks/useCrossSwap\";\nimport { SwapMode, SwapProcessStatus } from \"../types\";\nimport { ProcessStatus } from \"./processStatus\";\nimport { SwapProps } from \"./swap\";\nimport { SwapDetail } from \"./swapDetail\";\nimport { ViewFAQs } from \"./viewFAQs\";\n\nexport const CrossSwap: FC<SwapProps> = (props) => {\n const {\n transactionData: transaction,\n slippage,\n mode,\n dst,\n src,\n chain: chainInfo,\n nativeToken,\n depositFee,\n } = props;\n\n const { t } = useTranslation();\n\n const [status, setStatus] = useState<SwapProcessStatus>(\n SwapProcessStatus.NONE,\n );\n\n const [view, setView] = useState<\"processing\" | \"details\">(\"details\");\n const [tx, setTx] = useState<any>();\n\n const ee = useEventEmitter();\n\n const {\n swap: doCrossSwap,\n bridgeStatus,\n message,\n status: swapStatus,\n } = useCrossSwap();\n\n const swapInfo = useMemo(() => {\n const info: any = {\n price: transaction.price,\n slippage,\n time: chainInfo?.est_txn_mins,\n received: dst.amount,\n bridgeFee: transaction.fees_from.stargate,\n swapFee: transaction.fees_from.woofi,\n dstGasFee: transaction.dst_infos.gas_fee,\n };\n\n return info;\n }, [transaction, chainInfo?.est_txn_mins, mode, dst]);\n\n useEffect(() => {\n if (bridgeStatus === \"DELIVERED\") {\n setStatus(SwapProcessStatus.Depositing);\n }\n\n if (bridgeStatus === \"FAILED\") {\n setStatus(SwapProcessStatus.BridgeFialed);\n }\n\n if (swapStatus === WS_WalletStatusEnum.COMPLETED) {\n setStatus(SwapProcessStatus.Done);\n }\n\n if (swapStatus === WS_WalletStatusEnum.FAILED) {\n setStatus(SwapProcessStatus.DepositFailed);\n }\n }, [bridgeStatus, swapStatus]);\n\n const doSwap = useCallback(() => {\n setView(\"processing\");\n\n if (!transaction) return Promise.reject(\"No transaction data\");\n setStatus(SwapProcessStatus.Bridging);\n\n return doCrossSwap({\n address: \"\",\n crossChainRouteAddress: chainInfo?.cross_chain_router!,\n src: {\n fromToken: transaction.src_infos.from_token,\n fromAmount: BigInt(transaction.src_infos.from_amount),\n bridgeToken: transaction.src_infos.bridge_token,\n minBridgeAmount: BigInt(transaction.src_infos.min_bridge_amount),\n },\n dst: {\n chainId: transaction.dst_infos.chain_id,\n bridgedToken: transaction.dst_infos.bridged_token,\n toToken: transaction.dst_infos.to_token,\n minToAmount: BigInt(transaction.dst_infos.min_to_amount),\n // @ts-ignore\n orderlyNativeFees: depositFee,\n },\n })\n .then((res: any) => {\n setTx(res);\n toast.success(t(\"transfer.deposit.requested\"));\n ee.emit(\"deposit:requested\");\n })\n .catch((error: any) => {\n setStatus(SwapProcessStatus.BridgeFialed);\n toast.error(error?.message || \"Error\");\n });\n }, [transaction, mode, dst, src, ee]);\n\n const statusUrl = useMemo(() => {\n if (status < SwapProcessStatus.Depositing || !message) {\n return;\n }\n return `https://layerzeroscan.com/tx/${message.srcTxHash}`;\n // return `https://layerzeroscan.com/${message.srcChainId}/address/${message.srcUaAddress}/message/${message.dstChainId}/address/${message.dstUaAddress}/nonce/${message.srcUaNonce}`;\n }, [status, message]);\n\n return (\n <Box intensity={800}>\n <SwapDetail\n viewMode={view}\n onConfirm={doSwap}\n info={swapInfo}\n src={props.src}\n dst={props.dst}\n mode={mode}\n markPrice={transaction.mark_prices?.from_token ?? 1}\n nativePrice={transaction.mark_prices.native_token}\n nativeToken={nativeToken}\n />\n\n {view === \"processing\" && (\n <ProcessStatus\n mode={SwapMode.Cross}\n status={status}\n statusUrl={statusUrl}\n onComplete={props.onComplete}\n brokerName={props.brokerName}\n />\n )}\n <ViewFAQs />\n </Box>\n );\n};\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { pick } from \"ramda\";\nimport { utils } from \"@orderly.network/core\";\nimport {\n useAccountInstance,\n useBoolean,\n useConfig,\n useEventEmitter,\n} from \"@orderly.network/hooks\";\nimport { WS_WalletStatusEnum } from \"@orderly.network/types\";\nimport { isNativeTokenChecker, woofiDexSwapDepositorAbi } from \"../constants\";\n\n/**\n * 1. fee precision swap_support.woofi_dex_precision+3,round off\n * 2. price precision = abs(woofi_dex_precision - 5),cut off\n * 3. orderly deposit fee = $0\n * 4. deposit pop-ups: don't show token when fee is 0.\n * e.g. dst gas fee = 0 ETH, swap fee = 0.04 USDC, it will show $0.04 ( 0.04 USDC )\n */\nexport const useSwap = (): any => {\n const [loading, { setTrue: start, setFalse: stop }] = useBoolean(false);\n const account = useAccountInstance();\n const brokerId = useConfig(\"brokerId\");\n\n const [status, setStatus] = useState<WS_WalletStatusEnum>(\n WS_WalletStatusEnum.NO,\n );\n\n const txHash = useRef<string | undefined>();\n const ee = useEventEmitter();\n\n useEffect(() => {\n const handler = (data: any) => {\n const { side, transStatus, trxId } = data;\n\n if (side === \"DEPOSIT\" && trxId === txHash.current) {\n setStatus(transStatus);\n }\n };\n ee.on(\"wallet:changed\", handler);\n\n return () => {\n ee.off(\"wallet:changed\", handler);\n };\n }, [txHash.current]);\n\n const dstValutDeposit = useCallback(() => {\n return {\n accountId: account.accountIdHashStr,\n brokerHash: utils.parseBrokerHash(brokerId),\n tokenHash: utils.parseTokenHash(\"USDC\"),\n };\n }, [account, brokerId]);\n\n const swap = useCallback(\n async (\n woofiDexDepositorAdress: string,\n inputs: {\n fromToken: string;\n fromAmount: string;\n toToken: string;\n minToAmount: string;\n orderlyNativeFees: bigint;\n },\n config: { dst: any; src: any },\n ) => {\n if (!account.walletAdapter) {\n throw new Error(\"walletAdapter is undefined\");\n }\n\n if (!account.address) {\n throw new Error(\"account.address is undefined\");\n }\n\n if (loading) return;\n start();\n\n const txPayload = {\n from: account.address,\n to: woofiDexDepositorAdress,\n data: [account.address, inputs, dstValutDeposit()],\n value: isNativeTokenChecker(inputs.fromToken)\n ? BigInt(inputs.fromAmount) + inputs.orderlyNativeFees\n : inputs.orderlyNativeFees,\n };\n\n try {\n const result = await account.walletAdapter.sendTransaction(\n woofiDexDepositorAdress,\n \"swap\",\n txPayload,\n {\n abi: woofiDexSwapDepositorAbi,\n },\n );\n\n stop();\n\n txHash.current = result.hash;\n\n ee.emit(\"deposit:requested\");\n\n // @ts-ignore\n return pick([\"from\", \"to\", \"hash\", \"value\"], result);\n } catch (e: any) {\n throw new Error(e.errorCode);\n }\n },\n [loading, account],\n );\n\n return {\n swap,\n loading,\n status,\n };\n};\n","import { FC, useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useEventEmitter } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { WS_WalletStatusEnum } from \"@orderly.network/types\";\nimport { Box, toast } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useSwap } from \"../hooks/useSwap\";\nimport { SwapMode, SwapProcessStatus } from \"../types\";\nimport { ProcessStatus } from \"./processStatus\";\nimport { SwapProps } from \"./swap\";\nimport { SwapDetail } from \"./swapDetail\";\nimport { ViewFAQs } from \"./viewFAQs\";\n\nexport const SingleSwap: FC<SwapProps> = (props) => {\n const {\n transactionData: transaction,\n slippage,\n mode,\n dst,\n src,\n chain,\n nativeToken,\n depositFee,\n } = props;\n const { t } = useTranslation();\n\n const [status, setStatus] = useState<SwapProcessStatus>(\n SwapProcessStatus.NONE,\n );\n\n const [view, setView] = useState<\"processing\" | \"details\">(\"details\");\n const [tx, setTx] = useState<any>();\n\n const ee = useEventEmitter();\n\n const { swap: doSingleSwap, status: swapStatus } = useSwap();\n\n const swapInfo = useMemo(() => {\n const info: any = {\n price: transaction.price,\n slippage,\n time: chain?.est_txn_mins,\n received: dst.amount,\n dstGasFee: new Decimal(depositFee!.toString())\n ?.div(new Decimal(10).pow(18))\n ?.toString(),\n swapFee: transaction.fees_from,\n };\n\n return info;\n }, [transaction, chain?.est_txn_mins, mode, dst, depositFee]);\n\n useEffect(() => {\n if (swapStatus === WS_WalletStatusEnum.COMPLETED) {\n setStatus(SwapProcessStatus.Done);\n }\n\n if (swapStatus === WS_WalletStatusEnum.FAILED) {\n setStatus(SwapProcessStatus.DepositFailed);\n }\n }, [swapStatus]);\n\n const doSwap = useCallback(() => {\n setView(\"processing\");\n\n if (!transaction) return Promise.reject(\"No transaction data\");\n if (!chain || !chain.depositor) return Promise.reject(\"No chain data\");\n\n setStatus(SwapProcessStatus.Depositing);\n\n return doSingleSwap(\n chain.depositor,\n {\n fromToken: transaction.infos.from_token,\n fromAmount: transaction.infos.from_amount,\n toToken: transaction.infos.to_token,\n minToAmount: transaction.infos.min_to_amount,\n orderlyNativeFees: depositFee,\n },\n { dst, src },\n )\n .then((res: any) => {\n setTx(res);\n toast.success(t(\"transfer.deposit.requested\"));\n ee.emit(\"deposit:requested\");\n })\n .catch((error: any) => {\n setStatus(SwapProcessStatus.DepositFailed);\n toast.error(error?.message || \"Error\");\n });\n }, [transaction, mode, dst, src, ee]);\n\n const statusUrl = useMemo(() => {\n if (status < SwapProcessStatus.Depositing || !tx) {\n return;\n }\n return `${chain?.explorer_base_url}/tx/${tx.hash}`;\n }, [status, tx, chain]);\n\n return (\n <Box intensity={800}>\n <SwapDetail\n viewMode={view}\n onConfirm={doSwap}\n info={swapInfo}\n src={props.src}\n dst={props.dst}\n mode={mode}\n markPrice={transaction.mark_prices?.from_token ?? 1}\n nativePrice={transaction.mark_prices.native_token}\n nativeToken={nativeToken}\n />\n\n {view === \"processing\" && (\n <ProcessStatus\n mode={SwapMode.Single}\n status={status}\n statusUrl={statusUrl}\n onComplete={props.onComplete}\n brokerName={props.brokerName}\n />\n )}\n <ViewFAQs />\n </Box>\n );\n};\n","import { FC } from \"react\";\nimport { API } from \"@orderly.network/types\";\nimport { SwapMode, SymbolInfo } from \"../types\";\nimport { CrossSwap } from \"./crossSwap\";\nimport { SingleSwap } from \"./singleSwap\";\n\nexport interface SwapProps {\n mode: SwapMode;\n src: SymbolInfo;\n dst: SymbolInfo;\n chain?: API.NetworkInfos;\n nativeToken?: API.TokenInfo;\n depositFee?: bigint;\n transactionData: any;\n slippage: number;\n brokerName?: string;\n onComplete?: (isSuccss: boolean) => void;\n onCancel?: () => void;\n onFail?: () => void;\n}\n\nexport const Swap: FC<SwapProps> = (props) => {\n const { mode } = props;\n\n if (mode === SwapMode.Cross) {\n return <CrossSwap {...props} />;\n }\n\n return <SingleSwap {...props} />;\n};\n","import { useTranslation } from \"@orderly.network/i18n\";\nimport {\n modal,\n SimpleDialog,\n SimpleSheet,\n useModal,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { Swap, SwapProps } from \"./swap\";\n\nexport const SwapDialog = modal.create<SwapProps>((props) => {\n const { isMobile } = useScreen();\n const { t } = useTranslation();\n\n const { visible, hide, resolve, reject, onOpenChange } = useModal();\n\n const onComplete = (isSuccss: boolean) => {\n resolve(isSuccss);\n hide();\n };\n\n const onCancel = () => {\n reject();\n hide();\n };\n\n const commonProps = {\n title: t(\"transfer.swapDeposit.swapDialog.title\"),\n open: visible,\n onOpenChange,\n classNames: {\n content: \"oui-font-semibold\",\n },\n children: <Swap {...props} onComplete={onComplete} onCancel={onCancel} />,\n };\n\n if (isMobile) {\n return <SimpleSheet {...commonProps} />;\n }\n\n return <SimpleDialog {...commonProps} size=\"md\" />;\n});\n","import { useCallback } from \"react\";\nimport { utils } from \"@orderly.network/core\";\nimport {\n useAccountInstance,\n useBoolean,\n useConfig,\n} from \"@orderly.network/hooks\";\nimport {\n swapSupportApiUrl,\n woofiDexCrossSwapChainRouterAbi,\n} from \"../constants\";\n\nexport const useWooCrossSwapQuery = () => {\n const [loading, { setTrue: start, setFalse: stop }] = useBoolean(false);\n const brokerId = useConfig(\"brokerId\");\n\n const account = useAccountInstance();\n\n const dstValutDeposit = useCallback(() => {\n return {\n accountId: account.accountIdHashStr,\n brokerHash: utils.parseBrokerHash(brokerId),\n tokenHash: utils.parseTokenHash(\"USDC\"),\n };\n }, [account, brokerId]);\n\n const queryDestinationFee = useCallback(\n async (\n crossChainRouteAddress: string,\n dst: {\n chainId: string;\n bridgedToken: string;\n toToken: string;\n minToAmount: bigint;\n orderlyNativeFees: bigint;\n },\n ) => {\n if (!account.walletAdapter) {\n throw new Error(\"walletAdapter is not ready\");\n }\n const quotoLZFee = await account.walletAdapter.call(\n crossChainRouteAddress,\n \"quoteLayerZeroFee\",\n [account.address, dst, dstValutDeposit()],\n {\n abi: woofiDexCrossSwapChainRouterAbi,\n },\n );\n\n return utils.formatByUnits(quotoLZFee[0]);\n },\n [],\n );\n\n /// swap enquiry\n const query = useCallback(\n (inputs: {\n srcNetwork: string;\n srcToken: string;\n amount: bigint;\n slippage: number;\n dstToken: string;\n crossChainRouteAddress: string;\n }) => {\n if (loading) return Promise.resolve();\n start();\n\n const params = {\n // src_network: inputs.srcNetwork,\n src_network: inputs.srcNetwork,\n dst_network: \"arbitrum\",\n src_token: inputs.srcToken,\n dst_token: inputs.dstToken, //account.assetsManager.usdcAddress,\n src_amount: inputs.amount, //inputs.amount,\n slippage: inputs.slippage || 1,\n // to_token:account.assetsManager.usdcAddress,\n };\n\n const queryString = Object.entries(params)\n .map(([key, value]) => `${key}=${encodeURIComponent(value as string)}`)\n .join(\"&\");\n\n return fetch(\n `${swapSupportApiUrl}/woofi_dex/cross_chain_swap?${queryString}`,\n )\n .then((res) => {\n if (!res.ok) {\n return res.json().then((data) => {\n throw new Error(data.error.message);\n });\n }\n return res.json();\n })\n .then((data) => {\n if (data.status === \"ok\") {\n return data.data;\n }\n throw new Error(data.message);\n })\n .then((swapInfo) => {\n return queryDestinationFee(inputs.crossChainRouteAddress, {\n chainId: swapInfo.dst_infos.chain_id,\n bridgedToken: swapInfo.dst_infos.bridged_token,\n toToken: swapInfo.dst_infos.to_token,\n minToAmount: BigInt(swapInfo.dst_infos.min_to_amount),\n orderlyNativeFees: 0n,\n })\n .then((data) => {\n return {\n ...swapInfo,\n dst_infos: {\n ...swapInfo.dst_infos,\n gas_fee: data,\n },\n };\n })\n .catch((e) => {\n console.error(\"queryDestinationFee error\", e);\n });\n })\n .finally(() => stop());\n },\n\n [loading, account],\n );\n\n return {\n query,\n loading,\n };\n};\n","import { useCallback } from \"react\";\nimport { useAccountInstance, useBoolean } from \"@orderly.network/hooks\";\nimport { swapSupportApiUrl } from \"../constants\";\n\nexport const useWooSwapQuery = () => {\n const account = useAccountInstance();\n const [loading, { setTrue: start, setFalse: stop }] = useBoolean(false);\n\n /// Swap quote\n const query = useCallback(\n (inputs: any) => {\n if (loading) return Promise.resolve();\n start();\n\n const params = {\n network: inputs.srcNetwork,\n // network: \"arbitrum\",\n from_token: inputs.srcToken,\n to_token: inputs.dstToken, //account.assetsManager.usdcAddress,\n from_amount: inputs.amount, //inputs.amount,\n slippage: inputs.slippage || 1,\n // to_token:account.assetsManager.usdcAddress,\n };\n\n const queryString = Object.entries(params)\n .map(([key, value]) => `${key}=${encodeURIComponent(value as string)}`)\n .join(\"&\");\n\n return fetch(`${swapSupportApiUrl}/woofi_dex/swap?${queryString}`)\n .then((res) => {\n if (!res.ok) {\n return res.json().then((data) => {\n throw new Error(data.error.message);\n });\n }\n return res.json();\n })\n .then((data) => {\n if (data.status === \"ok\") {\n return data.data;\n }\n throw new Error(data.message);\n })\n .finally(() => stop());\n },\n [account],\n );\n\n return {\n query,\n loading,\n };\n};\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useBoolean, useDebouncedCallback } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { toast } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { DST, MarkPrices } from \"../types\";\nimport { useWooCrossSwapQuery } from \"./useCrossSwapQuery\";\nimport { useWooSwapQuery } from \"./useSwapQuery\";\n\nexport type TransactionInfo = {\n price: number;\n markPrices: MarkPrices;\n dstGasFee?: string;\n swapFee?: string;\n bridgeFee?: string;\n fee: string;\n};\n\ntype useSwapEnquiryProps = {\n quantity: string;\n dst: DST;\n queryParams: any;\n needSwap: boolean;\n needCrossSwap: boolean;\n};\n\nexport function useSwapEnquiry(props: useSwapEnquiryProps) {\n const { quantity, dst, queryParams, needSwap, needCrossSwap } = props;\n const { t } = useTranslation();\n const { query: wooSwapQuery } = useWooSwapQuery();\n const { query: wooCrossSwapQuery } = useWooCrossSwapQuery();\n\n const queryParamsRef = useRef(queryParams);\n queryParamsRef.current = queryParams;\n\n const [amount, setAmount] = useState<string>(\"\");\n const [warningMessage, setWarningMessage] = useState<string>(\"\");\n const [querying, { setTrue: queryStart, setFalse: queryStop }] =\n useBoolean(false);\n\n const [transactionInfo, setTransactionInfo] = useState<TransactionInfo>({\n price: 0,\n markPrices: {\n from_token: 0,\n native_token: 0,\n },\n fee: \"\",\n // dstGasFee: \"\",\n // swapFee: \"\",\n // bridgeFee: \"\",\n });\n\n const enquiry = useCallback(() => {\n if (needCrossSwap) {\n return wooCrossSwapQuery(queryParamsRef.current);\n }\n\n if (needSwap) {\n return wooSwapQuery(queryParamsRef.current);\n }\n\n return Promise.reject(\"no need to enquiry\");\n }, [needSwap, needCrossSwap]);\n\n const enquirySuccessHandle = (res: any) => {\n if (res.mark_prices) {\n const dstGasFee = needCrossSwap ? res.dst_infos.gas_fee : \"0\";\n const swapFee = needCrossSwap ? res.fees_from.woofi : res.fees_from;\n const bridgeFee = needCrossSwap ? res.fees_from.stargate : undefined;\n const fee = needCrossSwap ? res.fees_from.total : res.fees_from;\n\n setTransactionInfo({\n price: res.price,\n markPrices: res.mark_prices,\n dstGasFee,\n swapFee,\n bridgeFee,\n fee: fee,\n });\n }\n\n // set amount\n if (res.route_infos) {\n const amountValue = needCrossSwap\n ? res.route_infos.dst.amounts[1]\n : res.route_infos.amounts[1];\n\n setAmount(\n new Decimal(amountValue).div(Math.pow(10, dst.decimals!)).toString(),\n );\n }\n\n setWarningMessage(\"\");\n return res;\n };\n\n const cleanTransactionInfo = (data?: any) => {\n setTransactionInfo({\n fee: \"0\",\n markPrices: {\n from_token: 0,\n native_token: 0,\n },\n price: 0,\n swapFee: \"0\",\n bridgeFee: \"0\",\n dstGasFee: \"0\",\n ...data,\n });\n\n setAmount(\"\");\n };\n\n const enquiryErrorHandle = (error: Error) => {\n if (error.message === \"contract call failed\") {\n // Not enough liquidity on the cross-chain bridge.\n setWarningMessage(t(\"transfer.swapDeposit.notEnoughLiquidity\"));\n // clean previous data\n cleanTransactionInfo();\n } else {\n setWarningMessage(\"\");\n if (error?.message) {\n toast.error(error.message);\n }\n }\n };\n\n const debouncedEnquiry = useDebouncedCallback(() => {\n queryStart();\n return enquiry()\n .then(enquirySuccessHandle, enquiryErrorHandle)\n .finally(() => {\n queryStop();\n });\n }, 300);\n\n useEffect(() => {\n // if not need swap and cross swap\n if (!needSwap && !needCrossSwap) {\n cleanTransactionInfo({\n price: 1,\n });\n setAmount(quantity);\n return;\n }\n\n const qty = Number(quantity);\n\n if (isNaN(qty) || qty <= 0) {\n cleanTransactionInfo();\n return;\n }\n\n debouncedEnquiry();\n }, [needSwap, needCrossSwap, quantity]);\n\n return {\n enquiry,\n querying,\n warningMessage,\n transactionInfo,\n amount,\n cleanTransactionInfo,\n };\n}\n","import { useMemo } from \"react\";\nimport { useIndexPrice } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API } from \"@orderly.network/types\";\nimport { Decimal, toNonExponential } from \"@orderly.network/utils\";\nimport { feeDecimalsOffset } from \"../../../utils\";\nimport { TransactionInfo } from \"./useSwapEnquiry\";\n\nexport type UseSwapFee = ReturnType<typeof useSwapFee>;\n\ntype FeeQty = {\n value: string | number;\n dp: number;\n symbol?: string;\n};\n\nexport function useSwapFee(options: {\n nativeToken?: API.TokenInfo;\n isNativeToken?: boolean;\n src?: API.TokenInfo;\n depositFee?: bigint;\n transactionInfo: TransactionInfo;\n needSwap: boolean;\n needCrossSwap: boolean;\n}) {\n const {\n nativeToken,\n isNativeToken,\n src,\n depositFee = 0,\n transactionInfo,\n needSwap,\n needCrossSwap,\n } = options;\n\n const nativeSymbol = nativeToken?.symbol;\n const srcSymbol = src?.symbol;\n\n const {\n fee = \"0\",\n swapFee = \"0\",\n bridgeFee = \"0\",\n dstGasFee: destinationGasFee = \"0\",\n markPrices,\n } = transactionInfo;\n\n const { from_token: markPrice, native_token: nativeMarkPrice } = markPrices;\n\n const { data: symbolPrice } = useIndexPrice(`SPOT_${nativeSymbol}_USDC`);\n\n const { t } = useTranslation();\n\n const feeInfo = useMemo(() => {\n let feeAmount = \"\";\n let feeQtys: FeeQty[] = [];\n\n const nativeDp = feeDecimalsOffset(\n // swap precision\n nativeToken?.precision,\n );\n\n // swap precision\n const srcDp = feeDecimalsOffset(src?.precision);\n\n const dstGasFee = needCrossSwap\n ? destinationGasFee\n : new Decimal(depositFee.toString())\n .div(new Decimal(10).pow(18))\n .toString();\n\n if (!needSwap && !needCrossSwap) {\n feeQtys = [\n {\n value: dstGasFee,\n dp: nativeDp,\n },\n ];\n\n feeAmount = new Decimal(dstGasFee).mul(symbolPrice || 0).toString();\n }\n\n if (needSwap || needCrossSwap) {\n // if native token, Destination gas fee、fee (Swap fee + Bridge fee ) will use a same symbol unit\n if (isNativeToken) {\n const totalFeeQty = new Decimal(dstGasFee).plus(fee);\n\n feeQtys = [\n {\n value: totalFeeQty.toString(),\n dp: nativeDp,\n },\n ];\n\n feeAmount = totalFeeQty.mul(nativeMarkPrice ?? 1).toString();\n } else {\n feeQtys = [\n {\n value: dstGasFee,\n dp: nativeDp,\n symbol: nativeSymbol,\n },\n {\n value: fee,\n dp: srcDp,\n symbol: srcSymbol,\n },\n ];\n\n feeAmount = new Decimal(dstGasFee)\n .mul(nativeMarkPrice ?? 1)\n .plus(new Decimal(fee).mul(markPrice ?? 1))\n .toString();\n }\n }\n\n feeQtys = feeQtys.filter(\n (item) => !!item.value && Number(item.value) !== 0,\n );\n\n const feeDetails = [\n {\n title: t(\"transfer.deposit.destinationGasFee\"),\n description: t(\"transfer.deposit.destinationGasFee.description\"),\n value: dstGasFee,\n dp: nativeDp,\n symbol: nativeSymbol,\n },\n {\n title: t(\"transfer.swapDeposit.swapFee\"),\n description: t(\"transfer.swapDeposit.swapFee.description\"),\n value: swapFee,\n dp: srcDp,\n symbol: srcSymbol,\n },\n {\n title: t(\"transfer.swapDeposit.bridgeFee\"),\n description: t(\"transfer.swapDeposit.bridgeFee.description\"),\n value: bridgeFee,\n dp: srcDp,\n symbol: srcSymbol,\n },\n ]\n .filter(\n // alway show Destination gas fee\n (item, index) =>\n index === 0 || (!!item.value && Number(item.value) !== 0),\n )\n .map((item) => {\n const value = new Decimal(item.value || 0).todp(item.dp).toNumber();\n return {\n ...item,\n value: toNonExponential(value),\n };\n });\n\n return {\n feeAmount,\n feeQtys,\n feeDetails,\n };\n }, [\n depositFee,\n symbolPrice,\n nativeSymbol,\n srcSymbol,\n transactionInfo,\n needSwap,\n needCrossSwap,\n ]);\n\n return {\n ...feeInfo,\n nativeSymbol,\n };\n}\n","import { useCallback, useMemo } from \"react\";\nimport { useConfig, useLocalStorage } from \"@orderly.network/hooks\";\nimport { API } from \"@orderly.network/types\";\nimport { modal } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { CurrentChain } from \"../../depositForm/hooks/useChainSelect\";\nimport { SwapDialog } from \"../components/swapDialog\";\nimport { DST, SwapMode } from \"../types\";\nimport { useSwapEnquiry } from \"./useSwapEnquiry\";\nimport { useSwapFee } from \"./useSwapFee\";\n\ntype SwapDepositOptions = {\n srcToken: API.TokenInfo;\n currentChain?: CurrentChain | null;\n dst: DST;\n quantity: string;\n isNativeToken: boolean;\n depositFee: bigint;\n setQuantity: (quantity: string) => void;\n needSwap: boolean;\n needCrossSwap: boolean;\n};\n\nconst ORDERLY_SWAP_DEPOSIT_SLIPPAGE_KEY = \"orderly_swap_deposit_slippage\";\n\nexport const useSwapDeposit = (options: SwapDepositOptions) => {\n const {\n srcToken,\n currentChain,\n dst,\n quantity,\n isNativeToken,\n depositFee,\n setQuantity,\n needSwap,\n needCrossSwap,\n } = options;\n\n const [slippage, setSlippage] = useLocalStorage(\n ORDERLY_SWAP_DEPOSIT_SLIPPAGE_KEY,\n 1,\n );\n\n const config = useConfig();\n const brokerName = config.get(\"brokerName\") || \"\";\n\n const {\n enquiry,\n transactionInfo,\n amount: swapAmount,\n querying: swapRevalidating,\n warningMessage,\n cleanTransactionInfo,\n } = useSwapEnquiry({\n quantity,\n dst,\n queryParams: {\n network: dst.network,\n srcNetwork: currentChain?.info?.network_infos?.shortName,\n srcToken: srcToken?.address,\n dstToken: dst.address,\n crossChainRouteAddress:\n currentChain?.info?.network_infos?.cross_chain_router,\n amount: new Decimal(quantity || 0)\n .mul(10 ** (srcToken?.decimals || 0))\n .toString(),\n slippage,\n },\n needSwap,\n needCrossSwap,\n });\n\n const cleanData = useCallback(() => {\n setQuantity(\"\");\n cleanTransactionInfo();\n }, [setQuantity]);\n\n const onSwapDeposit = useCallback(async () => {\n // const _params = getSwapTestData(needCrossSwap);\n // return modal.show(SwapDialog, _params);\n\n return enquiry()\n .then((transaction) => {\n const amountValue = needCrossSwap\n ? transaction.route_infos?.dst.amounts[1]\n : transaction.route_infos?.amounts[1];\n\n const params = {\n mode: needCrossSwap ? SwapMode.Cross : SwapMode.Single,\n src: {\n chain: currentChain?.id,\n token: srcToken!.symbol,\n // swap precision\n displayDecimals: srcToken?.precision,\n amount: quantity,\n decimals: srcToken!.decimals,\n },\n dst: {\n chain: dst.chainId,\n token: dst.symbol,\n displayDecimals: 2,\n amount: new Decimal(amountValue)\n .div(Math.pow(10, dst.decimals!))\n .toString(),\n decimals: dst.decimals,\n },\n chain: currentChain?.info?.network_infos,\n nativeToken: currentChain?.info?.nativeToken,\n depositFee,\n transactionData: transaction,\n slippage,\n brokerName,\n };\n\n return modal.show(SwapDialog, params);\n })\n .then((isSuccss) => {\n if (isSuccss) {\n cleanData();\n }\n })\n .catch((error) => {\n // toast.error(error?.message || \"Error\");\n });\n }, [quantity, needCrossSwap, dst, currentChain, slippage, depositFee]);\n\n const swapPrice = useMemo(() => {\n if (needCrossSwap || needSwap) {\n return transactionInfo.price;\n }\n return 1;\n }, [transactionInfo]);\n\n const markPrice = useMemo(() => {\n if (needCrossSwap || needSwap) {\n return isNativeToken\n ? transactionInfo.markPrices.native_token\n : transactionInfo.markPrices.from_token;\n }\n\n return 1;\n }, [needSwap, needCrossSwap, isNativeToken, transactionInfo]);\n\n const swapQuantity = needSwap || needCrossSwap ? swapAmount : quantity;\n\n const swapFee = useSwapFee({\n nativeToken: currentChain?.info?.nativeToken,\n isNativeToken,\n src: srcToken,\n depositFee,\n transactionInfo,\n needSwap,\n needCrossSwap,\n });\n\n return {\n cleanTransactionInfo,\n onSwapDeposit,\n swapPrice,\n markPrice,\n swapQuantity,\n swapFee,\n swapRevalidating,\n warningMessage,\n needSwap,\n needCrossSwap,\n slippage,\n onSlippageChange: setSlippage,\n };\n};\n","import { useMemo } from \"react\";\nimport { DepositAction } from \"../../../types\";\n\ntype Options = {\n isNativeToken: boolean;\n allowance: string;\n quantity: string;\n maxQuantity: string;\n};\n\nexport function useActionType(options: Options) {\n const { isNativeToken, allowance, quantity, maxQuantity } = options;\n\n const actionType = useMemo(() => {\n const allowanceNum = isNativeToken ? Number.MAX_VALUE : Number(allowance);\n\n if (allowanceNum <= 0) {\n return DepositAction.ApproveAndDeposit;\n }\n\n const qty = Number(quantity);\n const maxQty = Number(maxQuantity);\n\n if (allowanceNum < qty && qty <= maxQty) {\n // return DepositAction.Increase;\n return DepositAction.ApproveAndDeposit;\n }\n\n return DepositAction.Deposit;\n }, [isNativeToken, allowance, quantity, maxQuantity]);\n\n return actionType;\n}\n","import { useCallback, useMemo } from \"react\";\nimport {\n Chain,\n ConnectedChain,\n useChains,\n useConfig,\n useLocalStorage,\n useWalletConnector,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API, NetworkId } from \"@orderly.network/types\";\nimport { toast } from \"@orderly.network/ui\";\nimport { int2hex, praseChainIdToNumber } from \"@orderly.network/utils\";\n\nexport type CurrentChain = Pick<ConnectedChain, \"namespace\"> & {\n id: number;\n info?: Chain;\n};\n\nexport function useChainSelect() {\n const { t } = useTranslation();\n const networkId = useConfig(\"networkId\") as NetworkId;\n const [linkDeviceStorage] = useLocalStorage(\"orderly_link_device\", {});\n\n const { connectedChain, settingChain, setChain } = useWalletConnector();\n\n const [chains, { findByChainId }] = useChains(networkId, {\n pick: \"network_infos\",\n filter: (chain: any) =>\n chain.network_infos?.bridge_enable || chain.network_infos?.bridgeless,\n });\n\n const currentChain = useMemo(() => {\n const chainId = connectedChain\n ? praseChainIdToNumber(connectedChain.id)\n : parseInt(linkDeviceStorage?.chainId);\n\n if (!chainId) return null;\n\n const chain = findByChainId(chainId);\n\n return {\n ...connectedChain,\n id: chainId,\n info: chain!,\n } as CurrentChain;\n }, [findByChainId, connectedChain, linkDeviceStorage]);\n\n const onChainChange = useCallback(\n async (chain: API.NetworkInfos) => {\n const chainInfo = findByChainId(chain.chain_id);\n\n if (!connectedChain) {\n return;\n }\n\n if (\n !chainInfo ||\n chainInfo.network_infos?.chain_id === currentChain?.id\n ) {\n return Promise.resolve();\n }\n\n return setChain({\n chainId: int2hex(Number(chainInfo.network_infos?.chain_id)),\n })\n .then((switched) => {\n if (switched) {\n toast.success(t(\"connector.networkSwitched\"));\n } else {\n toast.error(t(\"connector.switchChain.failed\"));\n }\n })\n .catch((error) => {\n if (error && error.message) {\n toast.error(\n `${t(\"connector.switchChain.failed\")}: ${error.message}`,\n );\n }\n });\n },\n [currentChain, setChain, findByChainId],\n );\n\n return {\n chains,\n currentChain,\n settingChain,\n onChainChange,\n };\n}\n","import { useCallback, useState } from \"react\";\nimport { useEventEmitter } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { toast } from \"@orderly.network/ui\";\nimport { getDepositKnownErrorMessage } from \"../../../utils\";\n\ntype Options = {\n quantity: string;\n allowance?: string;\n approve: (quantity?: string) => Promise<any>;\n deposit: () => Promise<any>;\n onSuccess?: () => void;\n onError?: (err: unknown, knownErrorMessage?: string) => void;\n customDeposit?: () => Promise<any>;\n enableCustomDeposit?: boolean;\n};\n\nexport function useDepositAction(options: Options) {\n const {\n quantity,\n allowance,\n approve,\n deposit,\n enableCustomDeposit,\n customDeposit,\n onSuccess,\n } = options;\n const [submitting, setSubmitting] = useState(false);\n const ee = useEventEmitter();\n const { t } = useTranslation();\n\n const doDeposit = useCallback(async () => {\n try {\n await deposit();\n toast.success(t(\"transfer.deposit.requested\"));\n ee.emit(\"deposit:requested\");\n onSuccess?.();\n } catch (err: any) {\n console.error(\"deposit error\", err);\n\n const knownErrorMessage = getDepositKnownErrorMessage(err.message);\n options.onError?.(err, knownErrorMessage);\n if (knownErrorMessage) {\n toast.error(\n <div>\n {t(\"common.somethingWentWrong\")}\n <br />\n <div className=\"orderly-text-white/[0.54] orderly-text-xs\">\n {t(\"common.details\")}: {knownErrorMessage}\n </div>\n </div>,\n );\n } else {\n toast.error(err.message || t(\"common.somethingWentWrong\"));\n }\n }\n }, [deposit, onSuccess, t, ee, options.onError]);\n\n const onDeposit = useCallback(async () => {\n const num = Number(quantity);\n\n if (isNaN(num) || num <= 0) {\n toast.error(t(\"transfer.quantity.invalid\"));\n return;\n }\n\n if (submitting) return;\n\n setSubmitting(true);\n\n const execDeposit = enableCustomDeposit ? customDeposit : doDeposit;\n\n await execDeposit?.()?.finally(() => {\n setSubmitting(false);\n });\n }, [quantity, submitting, doDeposit, enableCustomDeposit, customDeposit, t]);\n\n const onApprove = useCallback(async () => {\n if (submitting) return;\n setSubmitting(true);\n\n try {\n await approve(quantity);\n toast.success(t(\"transfer.deposit.approve.success\"));\n } catch (err: any) {\n console.error(\"approve error\", err);\n toast.error(\n err.message || err?.errorCode || t(\"transfer.deposit.approve.failed\"),\n );\n throw err;\n } finally {\n setSubmitting(false);\n }\n }, [approve, submitting, quantity, allowance, t]);\n\n const onApproveAndDeposit = useCallback(async () => {\n if (submitting) return;\n setSubmitting(true);\n\n try {\n await onApprove();\n await onDeposit();\n } catch (err) {\n console.error(\"approve and deposit error\", err);\n } finally {\n setSubmitting(false);\n }\n }, [submitting, onApprove, onDeposit]);\n\n return { submitting, onApprove, onDeposit, onApproveAndDeposit };\n}\n","import { useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { InputStatus } from \"../../../types\";\n\ntype Options = { quantity: string; maxQuantity: string | number };\n\nexport function useInputStatus(options: Options) {\n const { quantity, maxQuantity } = options;\n const { t } = useTranslation();\n\n return useMemo(() => {\n if (!quantity) {\n return { inputStatus: \"default\" as InputStatus, hintMessage: \"\" };\n }\n\n const qty = new Decimal(quantity);\n if (qty.gt(maxQuantity)) {\n return {\n inputStatus: \"error\" as InputStatus,\n hintMessage: t(\"transfer.insufficientBalance\"),\n };\n }\n\n return { inputStatus: \"default\" as InputStatus, hintMessage: \"\" };\n }, [quantity, maxQuantity, t]);\n}\n","import { useEffect, useRef, useState } from \"react\";\nimport { API, nativeTokenAddress } from \"@orderly.network/types\";\n\nconst retryInterval = 3000;\n\nexport function useNativeBalance(options: {\n fetchBalance: (token: string, decimal: number) => Promise<string>;\n targetChain?: API.Chain;\n}) {\n const { fetchBalance, targetChain } = options;\n const [balance, setBalance] = useState<string>();\n\n const timeoutRef = useRef<ReturnType<typeof setTimeout>>();\n\n const loopGetTokenBalance = async (timeout = 0) => {\n const decimal = targetChain?.network_infos?.currency_decimal;\n\n if (typeof fetchBalance !== \"function\" || !decimal) {\n return;\n }\n\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n timeoutRef.current = setTimeout(async () => {\n fetchBalance(nativeTokenAddress, decimal)\n .then((balance) => {\n console.log(\"native balance\", balance);\n setBalance(balance);\n })\n .catch((error) => {\n console.error(\"fetch native balance error\", error);\n loopGetTokenBalance(retryInterval);\n });\n }, timeout);\n };\n\n useEffect(() => {\n // get balance first, no timeout\n loopGetTokenBalance(0);\n\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n return balance;\n}\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useConfig } from \"@orderly.network/hooks\";\nimport { NetworkId, type API } from \"@orderly.network/types\";\nimport { getTokenByTokenList } from \"../../../utils\";\nimport type { CurrentChain } from \"./useChainSelect\";\n\nexport const useToken = (\n currentChain?: CurrentChain | null,\n filter: (token: API.TokenInfo) => boolean = () => true,\n) => {\n const [sourceToken, setSourceToken] = useState<API.TokenInfo>();\n const [targetToken, setTargetToken] = useState<API.TokenInfo>();\n\n const [sourceTokens, setSourceTokens] = useState<API.TokenInfo[]>([]);\n const [targetTokens, setTargetTokens] = useState<API.TokenInfo[]>([]);\n\n const sourceTokenUpdatedRef = useRef(false);\n\n const networkId = useConfig(\"networkId\") as NetworkId;\n\n // when chain changed and chain data ready then call this function init tokens\n const onChainInited = useCallback((chainInfo?: API.Chain) => {\n if (chainInfo && chainInfo?.token_infos?.length > 0) {\n // const tokens = chainInfo.token_infos.filter((i) => i.is_collateral);\n // all tokens available in the chain, include swap tokens\n const tokens = chainInfo.token_infos?.filter(filter);\n\n if (tokens?.length) {\n // sort tokens, USDC should be the first\n tokens.sort((a, b) => {\n if (a.symbol === \"USDC\") return -1;\n if (b.symbol === \"USDC\") return 1;\n return 0;\n });\n }\n\n const usdcToken = getTokenByTokenList(tokens);\n if (!usdcToken) {\n return;\n }\n setSourceToken(usdcToken);\n setTargetToken(usdcToken);\n\n setSourceTokens(tokens);\n setTargetTokens([usdcToken]);\n }\n }, []);\n\n useEffect(() => {\n onChainInited(currentChain?.info);\n // if settingChain is true, the currentChain will change, so use currentChain.id\n // TODO: confirm currentChain data is correct\n }, [currentChain, onChainInited]);\n\n useEffect(() => {\n if (!sourceToken || !sourceTokens.length) {\n return;\n }\n\n // USDC => USDC\n if (sourceToken.symbol === \"USDC\") {\n setTargetToken(sourceToken);\n setTargetTokens([sourceToken]);\n return;\n }\n\n const usdc = sourceTokens.find((t) => t.symbol === \"USDC\")!;\n\n // if is_collateral\n if (sourceToken.is_collateral) {\n // mainnet and swap_enable: [token] => [USDC,token]\n if (networkId === \"mainnet\" && sourceToken.swap_enable) {\n setTargetToken(sourceToken);\n setTargetTokens([sourceToken, usdc]);\n } else {\n // testnet: [token] => [token]\n setTargetToken(sourceToken);\n setTargetTokens([sourceToken]);\n }\n return;\n }\n\n // if swap token: [token] => [USDC]\n setTargetToken(usdc);\n setTargetTokens([usdc]);\n }, [networkId, sourceToken, sourceTokens]);\n\n const onSourceTokenChange = useCallback((token: API.TokenInfo) => {\n sourceTokenUpdatedRef.current = true;\n setSourceToken(token);\n }, []);\n\n useEffect(() => {\n sourceTokenUpdatedRef.current = false;\n }, [currentChain?.id]);\n\n return {\n sourceToken,\n targetToken,\n\n sourceTokens,\n targetTokens,\n\n onSourceTokenChange,\n setSourceToken,\n onTargetTokenChange: setTargetToken,\n sourceTokenUpdatedRef,\n };\n};\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport {\n useAccount,\n useConfig,\n useComputedLTV,\n useDeposit,\n useIndexPrice,\n useIndexPricesStream,\n useQuery,\n useTokenInfo,\n} from \"@orderly.network/hooks\";\nimport { useTranslation, Trans } from \"@orderly.network/i18n\";\nimport { account as accountPerp } from \"@orderly.network/perp\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport {\n API,\n NetworkId,\n ChainNamespace,\n isNativeTokenChecker,\n} from \"@orderly.network/types\";\nimport { useAuthGuard } from \"@orderly.network/ui-connector\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useNeedSwapAndCross } from \"../swap/hooks/useNeedSwapAndCross\";\nimport { useSwapDeposit } from \"../swap/hooks/useSwapDeposit\";\nimport {\n useActionType,\n useChainSelect,\n useDepositAction,\n useInputStatus,\n} from \"./hooks\";\nimport { useNativeBalance } from \"./hooks/useNativeBalance\";\nimport { useToken } from \"./hooks/useToken\";\n\nconst { collateralRatio, collateralContribution, calcMinimumReceived } =\n accountPerp;\n\nexport type DepositFormScriptReturn = ReturnType<typeof useDepositFormScript>;\n\nexport type DepositFormScriptOptions = {\n close?: () => void;\n};\n// swap to usdc precision is 3\nexport const SWAP_USDC_PRECISION = 3;\n\nexport const useDepositFormScript = (options: DepositFormScriptOptions) => {\n const { wrongNetwork } = useAppContext();\n const { t } = useTranslation();\n const { account } = useAccount();\n const networkId = useConfig(\"networkId\") as NetworkId;\n\n const [feeWarningMessage, setFeeWarningMessage] = useState(\"\");\n const [tokenBalances, setTokenBalances] = useState<Record<string, string>>(\n {},\n );\n\n const { chains, currentChain, settingChain, onChainChange } =\n useChainSelect();\n\n const {\n sourceToken,\n targetToken,\n sourceTokens,\n targetTokens,\n onSourceTokenChange,\n setSourceToken,\n onTargetTokenChange,\n sourceTokenUpdatedRef,\n } = useToken(currentChain);\n\n const { data: indexPrices, getIndexPrice } = useIndexPricesStream();\n\n const indexPrice = useMemo(() => {\n return getIndexPrice(sourceToken?.symbol ?? \"\") ?? 0;\n }, [sourceToken?.symbol, indexPrices]);\n\n const usdcToken = useMemo(() => {\n return sourceTokens?.find((item) => item.symbol === \"USDC\");\n }, [sourceTokens]);\n\n const {\n dst,\n balance,\n allowance,\n depositFeeRevalidating,\n depositFee,\n quantity,\n setQuantity,\n approve,\n deposit,\n isNativeToken,\n balanceRevalidating,\n fetchBalance,\n fetchBalances,\n targetChain,\n } = useDeposit({\n address: sourceToken?.address,\n decimals: sourceToken?.decimals,\n srcChainId: currentChain?.id,\n srcToken: sourceToken?.symbol,\n dstToken: targetToken?.symbol,\n crossChainRouteAddress:\n currentChain?.info?.network_infos?.cross_chain_router,\n depositorAddress: currentChain?.info?.network_infos?.depositor,\n });\n\n const maxQuantity = useMemo(\n () =>\n new Decimal(balance || 0)\n .todp(sourceToken?.precision ?? 2, Decimal.ROUND_DOWN)\n .toString(),\n [balance, sourceToken?.precision],\n );\n\n const maxDepositAmount = useMemo(() => {\n const balanceDecimal = new Decimal(balance || 0).todp(\n sourceToken?.precision ?? 2,\n Decimal.ROUND_DOWN,\n );\n\n // If user_max_qty is -1 or undefined, ignore it and use balance only\n // user_max_qty = 0 means no deposit allowed\n if (\n sourceToken?.user_max_qty === -1 ||\n sourceToken?.user_max_qty === undefined\n ) {\n return balanceDecimal.toString();\n }\n\n // user_max_qty = 0 means no deposit allowed\n if (sourceToken?.user_max_qty === 0) {\n return \"0\";\n }\n\n const userMaxQty = new Decimal(sourceToken.user_max_qty).todp(\n sourceToken?.precision ?? 2,\n Decimal.ROUND_DOWN,\n );\n\n return balanceDecimal.lt(userMaxQty)\n ? balanceDecimal.toString()\n : userMaxQty.toString();\n }, [balance, sourceToken?.precision, sourceToken?.user_max_qty]);\n\n const { inputStatus, hintMessage } = useInputStatus({\n quantity,\n maxQuantity,\n });\n\n const { needSwap, needCrossSwap } = useNeedSwapAndCross({\n srcToken: sourceToken,\n dstToken: targetToken,\n srcChainId: currentChain?.id,\n dstChainId: dst?.chainId,\n });\n\n const {\n cleanTransactionInfo,\n onSwapDeposit,\n swapRevalidating,\n\n swapPrice,\n markPrice,\n swapQuantity,\n swapFee,\n warningMessage: swapWarningMessage,\n slippage,\n onSlippageChange,\n } = useSwapDeposit({\n srcToken: sourceToken!,\n currentChain,\n dst,\n quantity,\n isNativeToken,\n depositFee,\n setQuantity,\n needSwap,\n needCrossSwap,\n });\n\n const [depositExceedLimitDetected, setDepositExceedLimitDetected] =\n useState(false);\n\n const cleanData = useCallback(() => {\n setQuantity(\"\");\n cleanTransactionInfo();\n setDepositExceedLimitDetected(false);\n }, [setQuantity, cleanTransactionInfo]);\n\n const onSuccess = useCallback(() => {\n cleanData();\n options.close?.();\n }, [cleanData, options.close]);\n\n const { submitting, onApprove, onDeposit, onApproveAndDeposit } =\n useDepositAction({\n quantity,\n allowance,\n approve,\n deposit,\n enableCustomDeposit: needSwap || needCrossSwap,\n customDeposit: onSwapDeposit,\n onSuccess: () => {\n setDepositExceedLimitDetected(false);\n onSuccess();\n },\n onError: (err, knownErrorMessage) => {\n const message =\n typeof (err as any)?.message === \"string\" ? (err as any).message : \"\";\n\n const isDepositExceedLimit =\n message.includes(\"0xd969df24\") ||\n message.includes(\"DepositExceedLimit\") ||\n (knownErrorMessage?.includes(\"DepositExceedLimit\") ?? false);\n\n if (isDepositExceedLimit) {\n setDepositExceedLimitDetected(true);\n }\n },\n });\n\n useEffect(() => {\n if (depositExceedLimitDetected) {\n setDepositExceedLimitDetected(false);\n }\n }, [quantity, sourceToken, currentChain?.id]);\n\n const globalMaxQtyMessage = useMemo(() => {\n if (\n sourceToken?.symbol === \"USDC\" ||\n sourceToken?.symbol !== targetToken?.symbol ||\n !sourceToken?.is_collateral ||\n !depositExceedLimitDetected\n ) {\n return \"\";\n }\n\n return (\n <Trans\n i18nKey=\"transfer.deposit.globalMaxQty.error\"\n values={{\n token: sourceToken?.symbol,\n chain: currentChain?.info?.network_infos?.name || \"\",\n }}\n components={[\n <a\n key=\"0\"\n href=\"https://orderly.network/docs/introduction/trade-on-orderly/multi-collateral#max-deposits-global\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"oui-text-primary\"\n />,\n ]}\n />\n );\n }, [\n depositExceedLimitDetected,\n sourceToken?.symbol,\n sourceToken?.is_collateral,\n targetToken?.symbol,\n currentChain,\n t,\n ]);\n\n const loading = submitting || depositFeeRevalidating!;\n\n const nativeSymbol = useMemo(() => {\n return currentChain?.info?.nativeToken?.symbol;\n }, [currentChain]);\n\n const fee = useDepositFee({\n nativeSymbol: nativeSymbol,\n depositFee,\n });\n\n const amount = useMemo(() => {\n const markPrice = 1;\n return new Decimal(quantity || 0).mul(markPrice).toNumber();\n }, [quantity]);\n\n const actionType = useActionType({\n isNativeToken,\n allowance,\n quantity,\n maxQuantity,\n });\n\n const isLoggedIn = useAuthGuard();\n\n const {\n collateralRatio,\n collateralContributionQuantity,\n currentLTV,\n nextLTV,\n } = useCollateralValue({\n tokens: sourceTokens,\n sourceToken,\n targetToken,\n qty: quantity,\n indexPrice,\n });\n\n const {\n ltv_threshold,\n negative_usdc_threshold,\n isLoading: isConvertThresholdLoading,\n } = useConvertThreshold();\n\n useEffect(() => {\n cleanData();\n }, [sourceToken, currentChain?.id]);\n\n useEffect(() => {\n if (\n quantity &&\n Number(quantity) > 0 &&\n depositFee === 0n &&\n !depositFeeRevalidating &&\n account.walletAdapter?.chainNamespace !== ChainNamespace.solana\n ) {\n setFeeWarningMessage(t(\"transfer.deposit.feeUnavailable\"));\n } else {\n setFeeWarningMessage(\"\");\n }\n }, [quantity, depositFee, depositFeeRevalidating, t, account]);\n\n const insufficientBalance = useMemo(() => {\n if (quantity && Number(quantity) > 0) {\n return new Decimal(quantity).gt(maxQuantity);\n }\n return false;\n }, [quantity, maxQuantity]);\n\n const insufficientNativeTotal = useMemo(() => {\n if (\n !isNativeToken ||\n !quantity ||\n Number(quantity) <= 0 ||\n depositFeeRevalidating ||\n insufficientBalance\n ) {\n return false;\n }\n\n const estimatedGasFee = new Decimal(fee.dstGasFee || 0);\n const totalNeeded = new Decimal(quantity).add(estimatedGasFee);\n\n return totalNeeded.gt(maxQuantity || 0);\n }, [\n isNativeToken,\n quantity,\n depositFeeRevalidating,\n insufficientBalance,\n fee.dstGasFee,\n maxQuantity,\n ]);\n\n const gasFeeMessage = useMemo(() => {\n if (insufficientNativeTotal) {\n return t(\"transfer.deposit.gasFee.error\", {\n token: sourceToken?.symbol,\n });\n }\n }, [insufficientNativeTotal, sourceToken?.symbol, t]);\n\n const nativeBalance = useNativeBalance({\n fetchBalance,\n targetChain,\n });\n\n const insufficientGasMessage = useMemo(() => {\n if (\n (nativeSymbol &&\n quantity &&\n Number(quantity) > 0 &&\n // when insufficient balance, the input status is error, so we don't need to check gas balance\n !insufficientBalance &&\n !depositFeeRevalidating &&\n (account.walletAdapter?.chainNamespace === ChainNamespace.solana ||\n fee.dstGasFee)) ||\n nativeBalance === undefined\n ) {\n const notEnoughGas = new Decimal(nativeBalance || 0).lt(fee.dstGasFee);\n\n // when solana, if fee.dstGasFee is 0, and nativeTokenBalance is 0, it means the balance is not balance\n const isNotSolBalance =\n Number(fee.dstGasFee) === 0 &&\n Number(nativeBalance) == Number(fee.dstGasFee);\n\n if (notEnoughGas || isNotSolBalance) {\n return t(\"transfer.deposit.notEnoughGas\", {\n token: nativeSymbol,\n });\n }\n }\n\n return \"\";\n }, [\n fee.dstGasFee,\n quantity,\n depositFeeRevalidating,\n t,\n nativeSymbol,\n insufficientBalance,\n account,\n nativeBalance,\n ]);\n\n const warningMessage =\n swapWarningMessage ||\n globalMaxQtyMessage ||\n gasFeeMessage ||\n feeWarningMessage ||\n insufficientGasMessage;\n\n const isExceedUserCapByInput = useMemo(() => {\n if (\n sourceToken?.symbol === \"USDC\" ||\n sourceToken?.symbol !== targetToken?.symbol ||\n !sourceToken?.is_collateral ||\n sourceToken?.user_max_qty === undefined ||\n sourceToken?.user_max_qty === -1 ||\n !quantity ||\n isNaN(Number(quantity))\n ) {\n return false;\n }\n\n return new Decimal(quantity).gt(sourceToken.user_max_qty);\n }, [sourceToken, targetToken, quantity]);\n\n const finalInputStatus =\n inputStatus === \"error\"\n ? inputStatus\n : isExceedUserCapByInput\n ? \"error\"\n : inputStatus;\n const finalHintMessage =\n inputStatus === \"error\"\n ? hintMessage\n : isExceedUserCapByInput\n ? t(\"transfer.deposit.exceedCap\")\n : hintMessage;\n\n const disabled =\n !quantity ||\n Number(quantity) === 0 ||\n !sourceToken ||\n inputStatus === \"error\" ||\n depositFeeRevalidating! ||\n swapRevalidating ||\n // if exceed collateral cap, disable deposit\n isExceedUserCapByInput ||\n !!feeWarningMessage ||\n !!insufficientNativeTotal ||\n !!insufficientGasMessage;\n\n const targetQuantity = useMemo(() => {\n if (needSwap) {\n return swapQuantity\n ? new Decimal(swapQuantity)\n ?.todp(SWAP_USDC_PRECISION, Decimal.ROUND_DOWN)\n .toString()\n : swapQuantity;\n }\n return quantity;\n }, [needSwap, swapQuantity, quantity]);\n\n // only swap deposit show minimum received\n const minimumReceived = useMemo(() => {\n if (!swapQuantity) {\n return \"-\";\n }\n return calcMinimumReceived({\n amount: Number(swapQuantity),\n slippage,\n });\n }, [swapQuantity, slippage]);\n\n const targetQuantityLoading = swapRevalidating;\n\n useEffect(() => {\n if (sourceTokens?.length > 0 && fetchBalances) {\n fetchBalances(sourceTokens)\n .then((balances) => {\n setTokenBalances(balances);\n })\n .catch((error) => {\n console.error(\"Failed to fetch balances:\", error);\n });\n }\n }, [sourceTokens]);\n\n const sortedSourceTokens = useMemo(() => {\n return sortTokens(sourceTokens, tokenBalances, getIndexPrice);\n }, [sourceTokens, tokenBalances]);\n\n useEffect(() => {\n if (!sourceTokenUpdatedRef.current && sortedSourceTokens?.[0]) {\n setSourceToken(sortedSourceTokens[0]);\n }\n }, [sortedSourceTokens]);\n\n return {\n sourceToken,\n targetToken,\n sourceTokens: sortedSourceTokens,\n targetTokens,\n onSourceTokenChange,\n onTargetTokenChange,\n\n amount,\n nativeSymbol,\n isNativeToken,\n quantity,\n collateralContributionQuantity,\n maxQuantity,\n maxDepositAmount,\n indexPrice,\n onQuantityChange: setQuantity,\n hintMessage: finalHintMessage,\n inputStatus: finalInputStatus,\n chains,\n currentChain,\n settingChain,\n onChainChange,\n actionType,\n onDeposit,\n onApprove,\n onApproveAndDeposit,\n fetchBalance,\n dst,\n wrongNetwork,\n balanceRevalidating,\n loading,\n disabled,\n networkId,\n fee,\n collateralRatio,\n currentLTV,\n nextLTV,\n ltv_threshold,\n negative_usdc_threshold,\n isConvertThresholdLoading,\n slippage,\n onSlippageChange,\n minimumReceived,\n usdcToken,\n\n needSwap,\n needCrossSwap,\n swapPrice,\n markPrice,\n swapFee,\n warningMessage,\n targetQuantity,\n targetQuantityLoading,\n tokenBalances,\n\n isLoggedIn,\n };\n};\n\nexport type UseDepositFeeReturn = ReturnType<typeof useDepositFee>;\n\nfunction useDepositFee(options: {\n nativeSymbol?: string;\n depositFee?: bigint;\n}) {\n const { nativeSymbol, depositFee = 0 } = options;\n const { account } = useAccount();\n\n const tokenInfo = useTokenInfo(nativeSymbol!);\n\n const { data: indexPrice } = useIndexPrice(`SPOT_${nativeSymbol}_USDC`);\n\n const feeProps = useMemo(() => {\n // deposit fee is native token, so decimals is 18\n const dstGasFee = new Decimal(depositFee.toString())\n // todo solana is 9, evm is 18\n .div(\n new Decimal(10).pow(\n account.walletAdapter?.chainNamespace === ChainNamespace.solana\n ? 9\n : 18,\n ),\n )\n .toString();\n\n const feeAmount = new Decimal(dstGasFee).mul(indexPrice || 0).toString();\n\n return {\n dstGasFee,\n feeQty: dstGasFee,\n feeAmount,\n // dp: feeDecimalsOffset(4),\n dp: tokenInfo?.decimals || 8,\n };\n }, [depositFee, indexPrice]);\n\n return feeProps;\n}\n\nconst useCollateralValue = (params: {\n tokens: API.TokenInfo[];\n sourceToken?: API.TokenInfo;\n targetToken?: API.TokenInfo;\n qty: string;\n indexPrice: number;\n}) => {\n const { sourceToken, targetToken, indexPrice } = params;\n\n const quantity = Number(params.qty);\n\n const memoizedCollateralRatio = useMemo(() => {\n return collateralRatio({\n baseWeight: targetToken?.base_weight ?? 0,\n discountFactor: targetToken?.discount_factor ?? 0,\n collateralQty: quantity,\n collateralCap: sourceToken?.user_max_qty ?? quantity,\n indexPrice,\n });\n }, [targetToken, quantity, sourceToken?.user_max_qty, indexPrice]);\n\n const collateralContributionQuantity = collateralContribution({\n collateralQty: quantity,\n collateralCap: sourceToken?.user_max_qty ?? quantity,\n collateralRatio: memoizedCollateralRatio.toNumber(),\n indexPrice,\n });\n\n const currentLtv = useComputedLTV();\n\n const nextLTV = useComputedLTV({\n input: quantity,\n token: sourceToken?.symbol,\n });\n\n return {\n collateralRatio: memoizedCollateralRatio.toNumber(),\n collateralContributionQuantity,\n currentLTV: currentLtv,\n nextLTV: nextLTV,\n indexPrice,\n };\n};\n\nconst useConvertThreshold = () => {\n const { data, error, isLoading } = useQuery<API.ConvertThreshold>(\n \"/v1/public/auto_convert_threshold\",\n {\n errorRetryCount: 3,\n },\n );\n return {\n ltv_threshold: data?.ltv_threshold,\n negative_usdc_threshold: data?.negative_usdc_threshold,\n isLoading,\n error,\n } as const;\n};\n\nconst sortTokens = (\n tokens: API.TokenInfo[] = [],\n tokenBalances: Record<string, string> = {},\n getIndexPrice: (token: string) => number,\n) => {\n const list = tokens.map((item) => {\n const indexPrice = getIndexPrice(item.symbol!);\n const balance = new Decimal(tokenBalances[item.symbol!] || 0)\n .mul(indexPrice || 1)\n .todp(item.precision || 2)\n .toNumber();\n\n return {\n ...item,\n balance,\n isNativeToken: isNativeTokenChecker(item.address!),\n };\n });\n\n return list.sort((a, b) => {\n const hasBalanceA = a.balance > 0;\n const hasBalanceB = b.balance > 0;\n\n // Tokens with balance come first\n if (hasBalanceA !== hasBalanceB) {\n return hasBalanceA ? -1 : 1;\n }\n\n // 1. USDC has highest priority\n if (a.symbol === \"USDC\" && b.symbol !== \"USDC\") return -1;\n if (b.symbol === \"USDC\" && a.symbol !== \"USDC\") return 1;\n\n // 2. USDC.e has second priority\n if (a.symbol === \"USDC.e\" && b.symbol !== \"USDC.e\") return -1;\n if (b.symbol === \"USDC.e\" && a.symbol !== \"USDC.e\") return 1;\n\n // 3. Native tokens have third priority\n if (a.isNativeToken && !b.isNativeToken) return -1;\n if (b.isNativeToken && !a.isNativeToken) return 1;\n\n // 4. If both have balance, sort by balance amount (high to low)\n if (hasBalanceA && hasBalanceB) {\n return b.balance - a.balance;\n }\n\n // 5. If both have no balance, sort alphabetically\n return (a.symbol || \"\").localeCompare(b.symbol || \"\");\n });\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n Box,\n Flex,\n InfoCircleIcon,\n textVariants,\n Text,\n TokenIcon,\n CaretDownIcon,\n Tooltip,\n modal,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { LtvWidget } from \"../LTV\";\nimport { ActionButton } from \"../actionButton\";\nimport { AvailableQuantity } from \"../availableQuantity\";\nimport { BrokerWallet } from \"../brokerWallet\";\nimport { ChainSelect } from \"../chainSelect\";\nimport { CollateralContribution } from \"../collateralContribution\";\nimport { CollateralRatioWidget } from \"../collateralRatio\";\nimport { ExchangeDivider } from \"../exchangeDivider\";\nimport { Fee } from \"../fee\";\nimport { MinimumReceived } from \"../minimumReceived\";\nimport { QuantityInput } from \"../quantityInput\";\nimport { Slippage } from \"../slippage\";\nimport { Notice } from \"../swap/components/notice\";\nimport { SwapFee } from \"../swap/components/swapFee\";\nimport { SwapCoin } from \"../swapCoin\";\nimport { SwapIndicator } from \"../swapIndicator\";\nimport { Web3Wallet } from \"../web3Wallet\";\nimport { YieldBearingReminder } from \"../yieldBearingReminder\";\nimport {\n SWAP_USDC_PRECISION,\n type DepositFormScriptReturn,\n} from \"./depositForm.script\";\n\nexport const DepositForm: FC<DepositFormScriptReturn> = (props) => {\n const {\n sourceToken,\n targetToken,\n sourceTokens,\n targetTokens,\n onSourceTokenChange,\n onTargetTokenChange,\n amount,\n quantity,\n collateralContributionQuantity,\n maxQuantity,\n maxDepositAmount,\n onQuantityChange,\n hintMessage,\n inputStatus,\n chains,\n currentChain,\n settingChain,\n onChainChange,\n actionType,\n onDeposit,\n onApprove,\n onApproveAndDeposit,\n fetchBalance,\n wrongNetwork,\n balanceRevalidating,\n loading,\n disabled,\n networkId,\n fee,\n collateralRatio,\n currentLTV,\n nextLTV,\n slippage,\n onSlippageChange,\n minimumReceived,\n needSwap,\n needCrossSwap,\n swapPrice,\n swapFee,\n warningMessage,\n usdcToken,\n targetQuantity,\n targetQuantityLoading,\n } = props;\n\n const { t } = useTranslation();\n\n const showRegularTokenRenderer =\n sourceToken?.user_max_qty !== undefined && sourceToken?.user_max_qty === -1;\n\n const { isMobile } = useScreen();\n\n const renderDepositCapTooltipContent = (tokenLabel: string) => (\n <Flex direction=\"column\" itemAlign=\"start\">\n <Text size=\"2xs\" weight=\"semibold\" intensity={36}>\n {t(\"transfer.depositCap.tooltip\")}\n <Text as=\"span\" size=\"2xs\" weight=\"semibold\" intensity={80}>\n {tokenLabel}.\n </Text>\n </Text>\n <a\n href=\"https://orderly.network/docs/introduction/trade-on-orderly/multi-collateral#max-deposits-user\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"oui-text-2xs oui-text-primary\"\n >\n {t(\"common.learnMore\")}\n </a>\n </Flex>\n );\n\n const tokenValueFormatter = (value: string) => (\n <Flex direction=\"column\" itemAlign=\"end\" gapY={1}>\n <Flex gapX={1} itemAlign=\"center\">\n <TokenIcon name={value} className=\"oui-size-[16px]\" />\n <Text weight=\"semibold\" intensity={54}>\n {value}\n </Text>\n <CaretDownIcon\n size={12}\n className=\"oui-text-base-contrast-54\"\n opacity={1}\n />\n </Flex>\n <Flex itemAlign=\"center\" className=\"oui-gap-[2px]\">\n <Text\n size=\"2xs\"\n intensity={36}\n weight=\"regular\"\n className=\"oui-leading-[10px]\"\n >\n {t(\"transfer.depositCap\", \"Deposit cap\")}{\" \"}\n <Text.numeral\n as=\"span\"\n size=\"2xs\"\n intensity={80}\n weight=\"regular\"\n className=\"oui-leading-[10px]\"\n dp={0}\n >\n {sourceToken?.user_max_qty?.toString() || \"0\"}\n </Text.numeral>\n </Text>\n {isMobile ? (\n <button\n type=\"button\"\n className=\"oui-flex oui-items-center\"\n onClick={(event) => {\n event.stopPropagation();\n modal.alert({\n title: t(\"common.tips\"),\n message: <Box>{renderDepositCapTooltipContent(value)}</Box>,\n });\n }}\n onMouseDown={(event) => {\n event.stopPropagation();\n }}\n onPointerDown={(event) => {\n event.stopPropagation();\n }}\n >\n <InfoCircleIcon\n className=\"oui-size-3 oui-shrink-0 oui-cursor-pointer\"\n opacity={0.36}\n />\n </button>\n ) : (\n <Tooltip\n content={\n <Box\n onMouseDown={(event) => {\n event.stopPropagation();\n }}\n onPointerDown={(event) => {\n event.stopPropagation();\n }}\n >\n {renderDepositCapTooltipContent(value)}\n </Box>\n }\n >\n <InfoCircleIcon\n className=\"oui-size-3 oui-shrink-0 oui-cursor-pointer\"\n opacity={0.36}\n />\n </Tooltip>\n )}\n </Flex>\n </Flex>\n );\n\n const renderContent = () => {\n if (needSwap || needCrossSwap) {\n return (\n <Flex direction=\"column\" itemAlign=\"start\" mt={1} gapY={1}>\n <Flex width={\"100%\"} itemAlign=\"center\" justify=\"between\">\n <Text size=\"2xs\" intensity={36}>\n {t(\"transfer.deposit.convertRate\")}\n </Text>\n <SwapCoin\n sourceSymbol={sourceToken?.display_name || sourceToken?.symbol}\n targetSymbol={targetToken?.display_name || targetToken?.symbol}\n precision={SWAP_USDC_PRECISION}\n indexPrice={swapPrice}\n />\n </Flex>\n <Slippage value={slippage} onValueChange={onSlippageChange} />\n <MinimumReceived\n value={minimumReceived}\n symbol={targetToken?.symbol ?? \"\"}\n precision={SWAP_USDC_PRECISION}\n />\n <SwapFee {...swapFee} />\n </Flex>\n );\n }\n\n return (\n <Flex direction=\"column\" itemAlign=\"start\" mt={2} gap={1}>\n <CollateralRatioWidget value={collateralRatio} />\n <CollateralContribution\n // it need to use USDC precision\n precision={usdcToken?.precision ?? 6}\n value={collateralContributionQuantity}\n />\n <LtvWidget\n showDiff={typeof quantity !== \"undefined\" && Number(quantity) > 0}\n currentLtv={currentLTV}\n nextLTV={nextLTV}\n />\n <Fee {...fee} nativeSymbol={props.nativeSymbol} />\n </Flex>\n );\n };\n\n return (\n <Box id=\"oui-deposit-form\" className={textVariants({ weight: \"semibold\" })}>\n <Box className=\"oui-mb-6 lg:oui-mb-8\">\n <Web3Wallet />\n <Box mt={3} mb={1}>\n <ChainSelect\n chains={chains}\n value={currentChain!}\n onValueChange={onChainChange}\n wrongNetwork={wrongNetwork}\n loading={settingChain}\n disabled={!props.isLoggedIn}\n />\n <QuantityInput\n classNames={{\n root: \"oui-mt-[2px] oui-rounded-t-sm oui-rounded-b-xl\",\n }}\n value={quantity}\n onValueChange={onQuantityChange}\n token={sourceToken}\n tokens={sourceTokens}\n onTokenChange={onSourceTokenChange}\n status={inputStatus}\n hintMessage={hintMessage}\n fetchBalance={fetchBalance}\n tokenBalances={props.tokenBalances}\n tokenShowCaret={showRegularTokenRenderer}\n tokenValueFormatter={\n showRegularTokenRenderer ? undefined : tokenValueFormatter\n }\n data-testId=\"oui-testid-deposit-dialog-quantity-input\"\n disabled={!props.isLoggedIn}\n />\n </Box>\n\n <AvailableQuantity\n token={sourceToken}\n amount={amount}\n maxQuantity={maxQuantity}\n loading={balanceRevalidating}\n onClick={() => {\n onQuantityChange(maxDepositAmount);\n }}\n />\n\n {/* Yield-bearing collateral reminder */}\n <YieldBearingReminder\n symbol={targetToken?.symbol}\n className=\"oui-mt-3\"\n />\n\n <ExchangeDivider />\n\n <BrokerWallet />\n\n <QuantityInput\n readOnly\n token={targetToken}\n tokens={targetTokens}\n onTokenChange={onTargetTokenChange}\n value={targetQuantity}\n loading={targetQuantityLoading}\n classNames={{\n root: \"oui-mt-3 oui-border-transparent focus-within:oui-outline-transparent\",\n }}\n disabled={!props.isLoggedIn}\n />\n {renderContent()}\n </Box>\n\n <SwapIndicator\n sourceToken={sourceToken?.symbol}\n targetToken={targetToken?.symbol}\n className=\"oui-mb-3\"\n />\n\n <Notice\n message={warningMessage}\n needSwap={needSwap}\n needCrossSwap={needCrossSwap}\n wrongNetwork={wrongNetwork}\n networkId={networkId}\n />\n\n <Flex justify=\"center\">\n <ActionButton\n actionType={actionType}\n symbol={sourceToken?.symbol}\n disabled={disabled}\n loading={loading}\n onDeposit={onDeposit}\n onApprove={onApprove}\n onApproveAndDeposit={onApproveAndDeposit}\n networkId={networkId}\n />\n </Flex>\n </Box>\n );\n};\n","import { FC } from \"react\";\nimport {\n useDepositFormScript,\n DepositFormScriptOptions,\n} from \"./depositForm.script\";\nimport { DepositForm } from \"./depositForm.ui\";\n\nexport type DepositFormWidgetProps = DepositFormScriptOptions;\n\nexport const DepositFormWidget: FC<DepositFormWidgetProps> = (props) => {\n const state = useDepositFormScript(props);\n return <DepositForm {...state} />;\n};\n","import { useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n Box,\n Checkbox,\n cn,\n Flex,\n Text,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n DropdownMenuPortal,\n DropdownMenuContent,\n} from \"@orderly.network/ui\";\nimport { InputStatus } from \"../../types\";\nimport type { AccountInfo } from \"../withdrawForm/hooks/useWithdrawAccountId\";\n\nexport type TextAreaInputProps = {\n value: string;\n onChange: (value: string) => void;\n status?: InputStatus;\n hintMessage?: string;\n placeholder?: string;\n className?: string;\n label: string;\n disabled?: boolean;\n enableAccountLookup?: boolean;\n accountInfo?: AccountInfo | null;\n accountDropdownOpen?: boolean;\n setAccountDropdownOpen?: (open: boolean) => void;\n};\n\nexport const TextAreaInput = (props: TextAreaInputProps) => {\n const { t } = useTranslation();\n const {\n value,\n onChange,\n status,\n hintMessage,\n placeholder,\n label,\n enableAccountLookup,\n accountInfo,\n accountDropdownOpen,\n setAccountDropdownOpen,\n } = props;\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const [selectedAccount, setSelectedAccount] = useState<AccountInfo | null>(\n null,\n );\n\n const displayStatus: InputStatus | undefined = status;\n const displayHint = hintMessage;\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const nextValue = e.target.value;\n if (selectedAccount) {\n setSelectedAccount(null);\n }\n onChange?.(nextValue);\n\n // auto adjust height\n const textarea = textareaRef.current;\n if (textarea) {\n textarea.style.height = \"auto\";\n textarea.style.height = `${textarea.scrollHeight}px`;\n }\n };\n\n useEffect(() => {\n const textarea = textareaRef.current;\n if (textarea) {\n textarea.style.height = \"auto\";\n textarea.style.height = `${textarea.scrollHeight}px`;\n }\n }, [value, selectedAccount?.address]);\n\n const prefix = (\n <div className=\"oui-absolute oui-left-3 oui-top-0.5 oui-z-[1]\">\n <Text size=\"2xs\" intensity={36}>\n {label}\n </Text>\n </div>\n );\n\n const message = (\n <Flex mb={1} gapX={1} px={1}>\n <Box\n width={4}\n height={4}\n r=\"full\"\n className={cn(\n displayStatus === \"error\" && \"oui-bg-danger-light\",\n displayStatus === \"warning\" && \"oui-bg-warning-light\",\n )}\n ></Box>\n <Text\n size=\"2xs\"\n className={cn(\n displayStatus === \"error\" && \"oui-text-danger-light\",\n displayStatus === \"warning\" && \"oui-text-warning-light\",\n )}\n >\n {displayHint}\n </Text>\n </Flex>\n );\n\n const textareaNode = (\n <div className=\"oui-relative\">\n {prefix}\n <div\n className={cn(\n \"oui-relative oui-w-full oui-rounded-lg oui-border oui-border-line oui-mb-1\",\n \"oui-bg-base-5 oui-text-sm oui-text-base-contrast\",\n \"focus-within:oui-border-primary-light\",\n displayStatus === \"error\" &&\n \"oui-border-danger-light focus-within:oui-border-danger-light\",\n displayStatus === \"warning\" &&\n \"oui-border-warning-light focus-within:oui-border-warning-light\",\n \"disabled:oui-cursor-not-allowed\",\n )}\n >\n <textarea\n ref={textareaRef}\n placeholder={placeholder}\n className={cn(\n // hide resize height control and scrollbar\n \"oui-resize-none oui-overflow-y-hidden\",\n \"oui-block oui-w-full oui-bg-transparent\",\n \"oui-px-3 oui-pt-5\",\n selectedAccount?.address ? \"oui-pb-0\" : \"oui-pb-2\",\n \"oui-text-sm oui-text-base-contrast\",\n \"oui-rounded-lg oui-outline-none\",\n \"placeholder:oui-text-base-contrast-20\",\n props.className,\n )}\n rows={1}\n value={value}\n onChange={handleChange}\n onFocus={() => {\n if (accountInfo) {\n setAccountDropdownOpen?.(true);\n }\n }}\n disabled={props.disabled}\n />\n {selectedAccount?.address && (\n <div className=\"oui-flex oui-items-center oui-justify-between oui-px-3 oui-pb-2 oui-pt-1\">\n <Text\n size=\"2xs\"\n intensity={36}\n className=\"oui-truncate oui-leading-[15px]\"\n >\n ({t(\"common.address\")}:{\" \"}\n <Text.formatted as=\"span\" rule=\"address\" range={[6, 4]}>\n {selectedAccount.address}\n </Text.formatted>\n )\n </Text>\n </div>\n )}\n {enableAccountLookup && (\n <DropdownMenuTrigger asChild>\n <span className=\"oui-absolute oui-left-0 oui-bottom-0 oui-w-0 oui-h-0\" />\n </DropdownMenuTrigger>\n )}\n </div>\n </div>\n );\n\n if (!enableAccountLookup) {\n return (\n <div className=\"oui-relative\">\n {textareaNode}\n {displayHint && message}\n </div>\n );\n }\n\n return (\n <DropdownMenuRoot\n open={!!(accountInfo && accountDropdownOpen)}\n onOpenChange={(open) => {\n if (!open) {\n setAccountDropdownOpen?.(false);\n }\n }}\n >\n {textareaNode}\n {displayHint && message}\n <DropdownMenuTrigger asChild>\n <span className=\"oui-invisible oui-w-0 oui-h-0 oui-overflow-hidden\" />\n </DropdownMenuTrigger>\n {accountInfo && accountDropdownOpen && (\n <DropdownMenuPortal>\n <DropdownMenuContent\n align=\"start\"\n className={cn(\n \"oui-bg-base-8\",\n \"oui-rounded-md oui-shadow-lg\",\n \"oui--mt-1 oui-w-[378px] oui-p-1\",\n )}\n {...({\n onOpenAutoFocus: (event: any) => event.preventDefault(),\n } as any)}\n >\n <AccountResultItem\n item={accountInfo}\n disabled={props.disabled}\n selected={\n !!selectedAccount &&\n selectedAccount.accountId === accountInfo.accountId\n }\n onSelect={(account) => {\n onChange?.(account.accountId);\n setSelectedAccount(account);\n setAccountDropdownOpen?.(false);\n }}\n />\n </DropdownMenuContent>\n </DropdownMenuPortal>\n )}\n </DropdownMenuRoot>\n );\n};\n\ntype AccountResultItemProps = {\n item: AccountInfo;\n disabled?: boolean;\n selected?: boolean;\n onSelect: (account: AccountInfo) => void;\n};\n\nconst AccountResultItem = ({\n item,\n disabled,\n selected,\n onSelect,\n}: AccountResultItemProps) => {\n const { t } = useTranslation();\n return (\n <div\n className={cn(\n \"oui-flex oui-w-full oui-items-center oui-justify-between\",\n \"oui-gap-1.5 oui-rounded-[4px] oui-px-2 oui-py-1.5\",\n \"oui-cursor-pointer hover:oui-bg-base-5\",\n disabled && \"oui-cursor-not-allowed oui-opacity-50\",\n )}\n onClick={() => !disabled && onSelect(item)}\n >\n <div className=\"oui-flex oui-flex-col oui-items-start oui-gap-0.5\">\n <Text\n size=\"sm\"\n intensity={54}\n weight=\"semibold\"\n className=\"oui-tracking-wide\"\n >\n {t(\"common.accountId\")}:{\" \"}\n <Text.formatted\n rule=\"address\"\n range={[6, 4]}\n as=\"span\"\n className=\"oui-text-primary-light\"\n >\n {item.accountId}\n </Text.formatted>\n </Text>\n <Text size=\"2xs\" intensity={36}>\n ({item.address})\n </Text>\n </div>\n <Checkbox checked={!!selected} />\n </div>\n );\n};\n","import { ReactNode } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n ExclamationFillIcon,\n Flex,\n modal,\n Text,\n Tooltip,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { RefreshIcon } from \"../../icons\";\n\ntype UnsettlePnlInfoProps = {\n hasPositions: boolean;\n unsettledPnl?: number;\n onSettlePnl: () => Promise<any>;\n tooltipContent?: ReactNode;\n dialogContent?: ReactNode;\n};\n\nexport const UnsettlePnlInfo = (props: UnsettlePnlInfoProps) => {\n const {\n hasPositions,\n unsettledPnl,\n onSettlePnl,\n tooltipContent,\n dialogContent,\n } = props;\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n\n const renderUnsettledLabel = () => {\n return (\n <Flex itemAlign=\"center\" justify=\"start\" gap={1}>\n <ExclamationFillIcon size={14} className=\"oui-text-warning-darken\" />\n <Text className=\"oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12\">\n {`${t(\"settle.unsettled\")}:`}\n </Text>\n </Flex>\n );\n };\n\n if (unsettledPnl === 0 && !hasPositions) {\n return <></>;\n }\n\n const settlePnlDialog = () => {\n modal.confirm({\n title: t(\"settle.settlePnl\"),\n content: dialogContent,\n onOk: () => {\n return onSettlePnl();\n },\n });\n };\n\n return (\n <Flex justify=\"between\" className=\"oui-text-2xs oui-text-base-contrast-36\">\n <Flex itemAlign=\"center\" justify=\"start\" gap={1}>\n {tooltipContent ? (\n isMobile ? (\n <button\n type=\"button\"\n className=\"oui-p-0\"\n onClick={() => {\n modal.alert({\n title: t(\"common.tips\"),\n message: tooltipContent,\n });\n }}\n >\n {renderUnsettledLabel()}\n </button>\n ) : (\n <Tooltip\n className=\"oui-max-w-[274px] oui-font-semibold\"\n content={tooltipContent as any}\n >\n {renderUnsettledLabel()}\n </Tooltip>\n )\n ) : (\n renderUnsettledLabel()\n )}\n <Text.numeral\n showIdentifier\n coloring\n weight=\"semibold\"\n dp={6}\n data-testid=\"oui-testid-withdraw-dialog-unsettledPnl-value\"\n >\n {unsettledPnl ?? \"--\"}\n </Text.numeral>\n <Text>USDC</Text>\n </Flex>\n <Flex itemAlign=\"center\" gap={1} className=\"oui-cursor-pointer\">\n <RefreshIcon className=\"oui-text-primary\" />\n <Text\n data-testid=\"oui-testid-withdraw-dialog-settle-text\"\n size=\"2xs\"\n color=\"primary\"\n className=\" oui-select-none\"\n onClick={settlePnlDialog}\n >\n {t(\"common.settle\")}\n </Text>\n </Flex>\n </Flex>\n );\n};\n","import { Box, ChainIcon, Flex, Text } from \"@orderly.network/ui\";\nimport { useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\ninterface IProps {\n currentChain: any;\n amount: number;\n address: string;\n}\n\nexport const CrossWithdrawConfirm = ({\n address,\n amount,\n currentChain,\n}: IProps) => {\n const { t } = useTranslation();\n\n const networkName = useMemo(() => {\n if (currentChain && currentChain.info && currentChain.info.network_infos) {\n return currentChain.info.network_infos.name;\n }\n return undefined;\n }, [currentChain]);\n\n return (\n <Flex\n direction=\"column\"\n itemAlign=\"start\"\n justify=\"start\"\n className=\"oui-gap-1 lg:oui-gap-3\"\n >\n <Flex\n direction=\"column\"\n itemAlign=\"start\"\n mb={5}\n className=\"oui-gap-3 lg:oui-gap-4\"\n >\n <Flex direction=\"column\" justify=\"start\" itemAlign=\"start\">\n <Text size=\"2xs\" intensity={36}>\n {t(\"transfer.withdraw.crossChain.recipientAddress\")}\n </Text>\n <Text size=\"sm\" intensity={98} className=\"oui-break-all\">\n {address}\n </Text>\n </Flex>\n <Flex direction=\"column\" justify=\"start\" itemAlign=\"start\">\n <Text size=\"2xs\" intensity={36}>\n {t(\"transfer.withdraw.crossChain.recipientNetwork\")}\n </Text>\n <Flex gap={1}>\n <ChainIcon\n className=\"oui-h-[18px] oui-w-[18px]\"\n size={\"sm\"}\n chainId={currentChain.id}\n />\n\n <Text size=\"sm\" intensity={98}>\n {networkName}\n </Text>\n </Flex>\n </Flex>\n <Flex direction=\"column\" justify=\"start\" itemAlign=\"start\">\n <Text size=\"2xs\" intensity={36}>\n {`${t(\"transfer.withdraw.crossChain.withdrawAmount\")} (USDC)`}\n </Text>\n <Text.numeral size=\"sm\" intensity={98} dp={2}>\n {amount}\n </Text.numeral>\n </Flex>\n </Flex>\n <Flex\n justify=\"center\"\n className=\"oui-text-warning-darken oui-text-2xs lg:oui-text-xs oui-text-center\"\n mb={3}\n >\n {t(\"transfer.withdraw.crossChain.warning\")}\n </Flex>\n </Flex>\n );\n};\n","import { Button, ButtonProps, Flex, modal, toast } from \"@orderly.network/ui\";\nimport { ChainSelectorDialogId } from \"@orderly.network/ui-chain-selector\";\nimport { NetworkId } from \"@orderly.network/types\";\nimport { useTranslation } from \"@orderly.network/i18n\";\ninterface IProps {\n networkId?: NetworkId;\n size: ButtonProps[\"size\"];\n}\n\nexport default function SwitchChainButton(props: IProps) {\n const { t } = useTranslation();\n\n const switchChain = () => {\n modal\n .show<{\n wrongNetwork: boolean;\n }>(ChainSelectorDialogId, {\n networkId: props.networkId,\n bridgeLessOnly: true,\n })\n .then(\n (r) => {\n toast.success(t(\"connector.networkSwitched\"));\n },\n (error) => console.log(\"[switchChain error]\", error)\n );\n };\n\n return (\n <Flex direction={\"column\"}>\n <Button\n color=\"warning\"\n size={props.size}\n fullWidth\n onClick={() => {\n switchChain();\n }}\n >\n {t(\"connector.switchNetwork\")}\n </Button>\n </Flex>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { AccountStatusEnum, NetworkId } from \"@orderly.network/types\";\nimport { Box, Button, modal } from \"@orderly.network/ui\";\nimport { AuthGuard } from \"@orderly.network/ui-connector\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { WithdrawTo } from \"../../types\";\nimport { CrossWithdrawConfirm } from \"../crossWithdrawConfirm\";\nimport SwitchChainButton from \"./SwitchChainButton\";\n\ninterface IProps {\n disabled?: boolean;\n loading?: boolean;\n onWithdraw: () => Promise<void>;\n networkId?: NetworkId;\n crossChainWithdraw: boolean;\n address?: string;\n currentChain?: any;\n quantity: string;\n fee: number;\n checkIsBridgeless: boolean;\n withdrawTo: WithdrawTo;\n onTransfer: () => void;\n}\n\nexport const WithdrawAction = (props: IProps) => {\n const {\n disabled,\n loading,\n onWithdraw,\n networkId,\n crossChainWithdraw,\n address,\n currentChain,\n quantity,\n fee,\n checkIsBridgeless,\n onTransfer,\n } = props;\n const { t } = useTranslation();\n\n const amount = useMemo(() => {\n if (!quantity) {\n return 0;\n }\n return new Decimal(quantity).minus(fee ?? 0).toNumber();\n }, [quantity, fee]);\n\n const preWithdraw = () => {\n if (crossChainWithdraw) {\n modal.confirm({\n title: t(\"transfer.withdraw.crossChain.confirmWithdraw\"),\n content: (\n <CrossWithdrawConfirm\n address={address!}\n amount={amount}\n currentChain={currentChain}\n />\n ),\n classNames: {\n content: \"oui-font-semibold\",\n body: \"!oui-pb-0\",\n footer: \"!oui-pt-0\",\n },\n\n onOk: async () => {\n onWithdraw();\n },\n });\n return;\n }\n onWithdraw();\n };\n\n const buttonSize = { initial: \"md\", lg: \"lg\" } as const;\n\n const renderButton = () => {\n if (props.withdrawTo === WithdrawTo.Account) {\n return (\n <Button\n fullWidth\n disabled={disabled}\n loading={loading}\n onClick={onTransfer}\n size={buttonSize}\n >\n {t(\"common.withdraw\")}\n </Button>\n );\n }\n\n if (checkIsBridgeless) {\n return (\n <Button\n data-testid=\"oui-testid-withdraw-dialog-withdraw-btn\"\n fullWidth\n disabled={disabled}\n loading={loading}\n onClick={preWithdraw}\n size={buttonSize}\n >\n {t(\"common.withdraw\")}\n </Button>\n );\n }\n return <SwitchChainButton networkId={networkId} size={buttonSize} />;\n };\n\n return (\n <Box className=\"oui-w-full lg:oui-w-auto lg:oui-min-w-[184px]\">\n <AuthGuard\n status={AccountStatusEnum.EnableTrading}\n networkId={networkId}\n bridgeLessOnly\n buttonProps={{ fullWidth: true, size: buttonSize }}\n >\n {renderButton()}\n </AuthGuard>\n </Box>\n );\n};\n","import React from \"react\";\nimport { useAccount } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { Flex } from \"@orderly.network/ui\";\n\ninterface WarningMessageProps {\n crossChainTrans: boolean;\n checkIsBridgeless: boolean;\n qtyGreaterThanMaxAmount: boolean;\n message?: string;\n}\n\nexport const WithdrawWarningMessage: React.FC<WarningMessageProps> = (\n props,\n) => {\n const { crossChainTrans, qtyGreaterThanMaxAmount } = props;\n const { t } = useTranslation();\n const { state } = useAccount();\n\n const renderContent = () => {\n if (state.status === AccountStatusEnum.NotConnected) {\n return null;\n }\n if (crossChainTrans) {\n return t(\"transfer.withdraw.crossChain.process\");\n }\n if (qtyGreaterThanMaxAmount) {\n return t(\"transfer.insufficientBalance\");\n }\n\n return props.message;\n };\n\n const content = renderContent();\n\n if (!content) {\n return null;\n }\n\n return (\n <Flex\n my={4}\n className=\"oui-justify-center oui-text-center oui-text-xs oui-text-warning-darken\"\n >\n {content}\n </Flex>\n );\n};\n","import { useMemo } from \"react\";\nimport {\n useAccount,\n useEventEmitter,\n usePositionStream,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { toast } from \"@orderly.network/ui\";\n\nexport type SettlePnlOptions = {\n accountId?: string;\n};\n\nexport const useSettlePnl = (options?: SettlePnlOptions) => {\n const { accountId } = options || {};\n const { t } = useTranslation();\n const ee = useEventEmitter();\n const { account, state } = useAccount();\n const [positionData] = usePositionStream();\n\n const hasPositions = useMemo(\n () => !!positionData?.rows?.length,\n [positionData],\n );\n\n const onSettlePnl = async () => {\n const isSubAccount = accountId && state.mainAccountId !== accountId;\n const settleFn = isSubAccount\n ? account.settleSubAccount({ subAccountId: accountId })\n : account.settle({ accountId });\n return settleFn\n .then((res) => {\n toast.success(t(\"settle.settlement.requested\"));\n return Promise.resolve(res);\n })\n .catch((e) => {\n if (e.code == -1104) {\n toast.error(t(\"settle.settlement.error\"));\n } else if (\n e.message.indexOf(\n \"Signing off chain messages with Ledger is not yet supported\",\n ) !== -1\n ) {\n ee.emit(\"wallet:sign-message-with-ledger-error\", {\n message: e.message,\n userAddress: account.address,\n });\n } else if (e.message.indexOf(\"user rejected\") !== -1) {\n toast.error(t(\"transfer.rejectTransaction\"));\n } else {\n toast.error(e.message);\n return Promise.reject(e);\n }\n });\n };\n\n return {\n hasPositions,\n onSettlePnl,\n };\n};\n","import { useMemo } from \"react\";\nimport { useQuery } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API } from \"@orderly.network/types\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { WithdrawTo } from \"../../../types\";\nimport { CurrentChain } from \"../../depositForm/hooks\";\n\n// CCTP (Cross-Chain Transfer Protocol) Supported AVAX, ETH, POL, ARB, OP, BASE, SEI\nconst cctpSupportedChains = [43114, 1, 137, 42161, 10, 8453, 1329];\n// CCTP Supported Tokens\nconst cctpSupportedTokens = [\"USDC\"];\n\nexport const useVaultBalance = (inputs: {\n currentChain?: CurrentChain | null;\n sourceToken?: API.TokenInfo;\n withdrawTo: WithdrawTo;\n quantity: string;\n qtyGreaterThanMaxAmount: boolean;\n}) => {\n const {\n currentChain,\n sourceToken,\n withdrawTo,\n quantity,\n qtyGreaterThanMaxAmount,\n } = inputs;\n\n const { t } = useTranslation();\n\n const { data: vaultBalanceData } = useQuery<API.VaultBalance[]>(\n `/v1/public/vault_balance`,\n {\n revalidateOnMount: true,\n errorRetryCount: 3,\n },\n );\n\n const vaultBalanceList = useMemo(() => {\n if (\n withdrawTo === WithdrawTo.Account ||\n !currentChain ||\n !Array.isArray(vaultBalanceData)\n ) {\n return [];\n }\n return vaultBalanceData.filter(\n (item) => Number.parseInt(item.chain_id) === currentChain?.id,\n );\n }, [vaultBalanceData, currentChain, withdrawTo]);\n\n const chainVaultBalance = useMemo(() => {\n const vaultBalance = vaultBalanceList?.find(\n (item) => item.token === sourceToken?.symbol,\n );\n return vaultBalance?.balance;\n }, [vaultBalanceList, sourceToken]);\n\n const qtyGreaterThanVault = useMemo<boolean>(() => {\n if (\n !quantity ||\n Number.isNaN(quantity) ||\n !chainVaultBalance ||\n Number.isNaN(chainVaultBalance)\n ) {\n return false;\n }\n\n return new Decimal(quantity).gt(chainVaultBalance);\n }, [quantity, chainVaultBalance, withdrawTo]);\n\n const crossChainWithdraw = useMemo(() => {\n const canCCTP =\n currentChain?.id && sourceToken?.symbol\n ? cctpSupportedChains.includes(currentChain?.id) &&\n cctpSupportedTokens.includes(sourceToken?.symbol)\n : false;\n\n return qtyGreaterThanVault && canCCTP && !qtyGreaterThanMaxAmount;\n }, [qtyGreaterThanVault, qtyGreaterThanMaxAmount, currentChain, sourceToken]);\n\n const chainName = useMemo(() => {\n if (currentChain && currentChain.info && currentChain.info.network_infos) {\n return currentChain.info.network_infos.name;\n }\n return \"\";\n }, [currentChain]);\n\n const vaultBalanceMessage = useMemo(() => {\n if (qtyGreaterThanVault && !crossChainWithdraw && chainName) {\n return t(\"transfer.withdraw.vaultWarning\", {\n tokenName: sourceToken?.symbol!,\n chainName: chainName,\n balance: chainVaultBalance,\n });\n }\n return \"\";\n }, [\n qtyGreaterThanVault,\n crossChainWithdraw,\n chainName,\n sourceToken,\n chainVaultBalance,\n ]);\n\n const vaultBalanceListFilterCCTP = useMemo(() => {\n if (cctpSupportedChains.includes(currentChain?.id!)) {\n return vaultBalanceList?.filter(\n (item) => !cctpSupportedTokens.includes(item.token),\n );\n }\n return vaultBalanceList;\n }, [vaultBalanceList, currentChain]);\n\n return {\n vaultBalanceList: vaultBalanceListFilterCCTP,\n // chainVaultBalance,\n // if the token is cross chain withdraw supported, the qtyGreaterThanVault will be false\n qtyGreaterThanVault: qtyGreaterThanVault && !crossChainWithdraw,\n crossChainWithdraw,\n vaultBalanceMessage,\n };\n};\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport {\n useConfig,\n useDebouncedCallback,\n useInternalTransfer,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { toast } from \"@orderly.network/ui\";\nimport { InputStatus } from \"../../../types\";\nimport { checkIsAccountId, getTransferErrorMessage } from \"../../../utils\";\nimport { validateWalletAddress } from \"../withdrawForm.script\";\n\ntype InternalWithdrawOptions = {\n token: string;\n decimals: number;\n quantity: string;\n setQuantity: (quantity: string) => void;\n close?: () => void;\n setLoading: (loading: boolean) => void;\n};\n\nexport type AccountInfo = {\n accountId: string;\n address: string;\n};\n\nexport function useWithdrawAccountId(options: InternalWithdrawOptions) {\n const { token, quantity, setQuantity, close, setLoading, decimals } = options;\n const { t } = useTranslation();\n const [toAccountId, setToAccountId] = useState<string>(\"\");\n const [inputStatus, setInputStatus] = useState<InputStatus>(\"default\");\n const [hintMessage, setHintMessage] = useState<string>();\n const [accountInfo, setAccountInfo] = useState<AccountInfo | null>(null);\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const latestLookupInputRef = useRef<string>(\"\");\n\n const config = useConfig();\n const brokerId = config.get(\"brokerId\") as string | undefined;\n const apiBaseUrl = config.get(\"apiBaseUrl\") as string | undefined;\n\n const { transfer, submitting } = useInternalTransfer();\n\n const onTransfer = useCallback(() => {\n const num = Number(quantity);\n\n if (Number.isNaN(num) || num <= 0) {\n toast.error(t(\"transfer.quantity.invalid\"));\n return;\n }\n\n if (submitting || !toAccountId) {\n return;\n }\n setLoading(true);\n\n transfer({\n token,\n receiver: toAccountId,\n amount: quantity,\n decimals,\n })\n .then(() => {\n toast.success(t(\"transfer.internalTransfer.success\"));\n setQuantity(\"\");\n close?.();\n })\n .catch((err) => {\n console.log(\"transfer error\", err);\n const errorMsg = getTransferErrorMessage(err.code);\n toast.error(errorMsg);\n })\n .finally(() => {\n setLoading(false);\n });\n }, [t, quantity, token, submitting, toAccountId, transfer]);\n\n useEffect(() => {\n if (!toAccountId) {\n setInputStatus(\"default\");\n setHintMessage(\"\");\n setAccountInfo(null);\n setIsDropdownOpen(false);\n return;\n }\n\n if (checkIsAccountId(toAccountId)) {\n setInputStatus(\"default\");\n setHintMessage(\"\");\n return;\n }\n }, [toAccountId]);\n\n const walletLookup = async (\n input: string,\n network?: \"EVM\" | \"SOL\",\n ): Promise<AccountInfo | null> => {\n if (!network || !brokerId) return null;\n\n const chainType = network;\n const res = await fetch(\n `${apiBaseUrl}/v1/get_account?address=${encodeURIComponent(\n input,\n )}&broker_id=${encodeURIComponent(\n brokerId,\n )}&chain_type=${encodeURIComponent(chainType)}`,\n );\n const json = await res.json();\n\n if (res.ok && json?.success && json?.data?.account_id) {\n return {\n accountId: json.data.account_id,\n address: input,\n };\n }\n\n return null;\n };\n\n const accountLookup = async (input: string): Promise<AccountInfo | null> => {\n const res = await fetch(\n `${apiBaseUrl}/v1/public/account?account_id=${encodeURIComponent(input)}`,\n );\n const json = await res.json();\n\n if (\n res.ok &&\n json?.success &&\n json?.data?.address &&\n (!brokerId || json.data.broker_id === brokerId)\n ) {\n return {\n accountId: input,\n address: json.data.address,\n };\n }\n\n if (res.ok && json?.success && brokerId) {\n console.log(\n \"This account belongs to a different broker and cannot be used here.\",\n );\n }\n\n return null;\n };\n\n const performLookup = useCallback(\n async (rawInput: string) => {\n const input = rawInput.trim();\n\n if (!input || input !== latestLookupInputRef.current) {\n return;\n }\n\n const { valid, network } = validateWalletAddress(input);\n\n try {\n let resolved: AccountInfo | null = null;\n\n if (valid) {\n resolved = await walletLookup(input, network);\n } else {\n resolved = await accountLookup(input);\n }\n\n if (!resolved) {\n setAccountInfo(null);\n setIsDropdownOpen(false);\n setInputStatus(\"error\");\n setHintMessage(t(\"transfer.withdraw.accountId.invalid\"));\n } else {\n setAccountInfo(resolved);\n setIsDropdownOpen(true);\n setInputStatus(\"default\");\n setHintMessage(\"\");\n }\n } catch (error) {\n console.log(\"Failed to search account. Please try again.\", error);\n setAccountInfo(null);\n setIsDropdownOpen(false);\n setInputStatus(\"error\");\n setHintMessage(t(\"transfer.withdraw.accountId.invalid\"));\n }\n },\n [brokerId, t],\n );\n\n const debouncedLookup = useDebouncedCallback((input: string) => {\n void performLookup(input);\n }, 500);\n\n const handleAccountIdChange = useCallback(\n (val: string) => {\n setToAccountId(val);\n const trimmed = val.trim();\n if (!trimmed) {\n setAccountInfo(null);\n setIsDropdownOpen(false);\n latestLookupInputRef.current = \"\";\n return;\n }\n latestLookupInputRef.current = trimmed;\n\n if (checkIsAccountId(trimmed) && accountInfo?.accountId === trimmed) {\n setIsDropdownOpen(false);\n setInputStatus(\"default\");\n setHintMessage(\"\");\n return;\n }\n debouncedLookup(trimmed);\n },\n [debouncedLookup, accountInfo],\n );\n\n return {\n toAccountId,\n setToAccountId: handleAccountIdChange,\n onTransfer,\n internalWithdrawSubmitting: submitting,\n toAccountIdInputStatus: inputStatus,\n toAccountIdHintMessage: hintMessage,\n toAccountInfo: accountInfo,\n toAccountInfoDropdownOpen: isDropdownOpen,\n setToAccountInfoDropdownOpen: setIsDropdownOpen,\n };\n}\n","import { useMemo } from \"react\";\nimport { useTokenInfo } from \"@orderly.network/hooks\";\nimport { WithdrawTo } from \"../../../types\";\nimport { CurrentChain } from \"../../depositForm/hooks\";\n\nexport function useWithdrawFee(options: {\n token: string;\n currentChain?: CurrentChain | null;\n crossChainWithdraw: boolean;\n withdrawTo: WithdrawTo;\n}) {\n const { crossChainWithdraw, currentChain, token, withdrawTo } = options;\n\n const tokenInfo = useTokenInfo(token);\n\n const fee = useMemo(() => {\n if (withdrawTo === WithdrawTo.Account) {\n return 0;\n }\n\n if (!currentChain) {\n return 0;\n }\n\n const item = tokenInfo?.chain_details?.find(\n (chain) => Number.parseInt(chain.chain_id) === currentChain.id,\n );\n\n if (!item) {\n return 0;\n }\n\n if (crossChainWithdraw) {\n return (\n (item.withdrawal_fee || 0) + (item.cross_chain_withdrawal_fee || 0)\n );\n }\n\n return item.withdrawal_fee || 0;\n }, [tokenInfo, token, currentChain, crossChainWithdraw, withdrawTo]);\n\n return fee;\n}\n","import { useMemo } from \"react\";\nimport { useComputedLTV, useQuery } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API } from \"@orderly.network/types\";\n\nexport const useWithdrawLTV = (params: { token: string; quantity: string }) => {\n const { token, quantity } = params;\n const { ltv_threshold } = useConvertThreshold();\n const { t } = useTranslation();\n\n const currentLTV = useComputedLTV();\n\n const nextLTV = useComputedLTV({\n input: quantity ? -Number(quantity) : 0,\n token,\n });\n\n const ltvWarningMessage = useMemo(() => {\n if (ltv_threshold && nextLTV) {\n const threshold = ltv_threshold * 100;\n if (nextLTV > threshold) {\n return t(\"transfer.withdraw.LTV.error\", {\n threshold,\n });\n }\n }\n return \"\";\n }, [nextLTV, ltv_threshold]);\n\n return {\n currentLTV,\n nextLTV,\n ltvWarningMessage,\n t,\n };\n};\n\nconst useConvertThreshold = () => {\n const { data } = useQuery<API.ConvertThreshold>(\n \"/v1/public/auto_convert_threshold\",\n {\n revalidateOnFocus: false,\n },\n );\n\n return {\n ltv_threshold: data?.ltv_threshold,\n negative_usdc_threshold: data?.negative_usdc_threshold,\n };\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport {\n useHoldingStream,\n useMemoizedFn,\n useTokensInfo,\n} from \"@orderly.network/hooks\";\nimport { API } from \"@orderly.network/types\";\nimport { WithdrawTo } from \"../../../types\";\nimport { getTokenByTokenList } from \"../../../utils\";\nimport { CurrentChain } from \"../../depositForm/hooks\";\nimport { useToken } from \"../../depositForm/hooks/useToken\";\n\nexport function useWithdrawToken(params: {\n currentChain?: CurrentChain | null;\n withdrawTo: WithdrawTo;\n}) {\n const { currentChain, withdrawTo } = params;\n const [token, setToken] = useState<API.TokenInfo>();\n const [tokens, setTokens] = useState<API.TokenInfo[]>([]);\n\n const tokensInfo = useTokensInfo();\n const { data: holdings } = useHoldingStream();\n\n const { sourceToken, onSourceTokenChange, sourceTokens } = useToken(\n currentChain,\n (token) => token.symbol === \"USDC\" || token.is_collateral,\n );\n\n // Get user holding\n const allTokens = useMemo(() => {\n if (!tokensInfo?.length) return [];\n\n const holdingMap = new Map<string, API.Holding>();\n holdings?.forEach((item) => {\n holdingMap.set(item.token, item);\n });\n\n const mappedTokens = tokensInfo.map((item) => ({\n ...item,\n symbol: item.token,\n token_decimal: item.decimals,\n precision: item.decimals,\n }));\n\n const list = mappedTokens.filter((token) => {\n const holding = holdingMap.get(token.symbol!);\n if (!holdings) return true;\n return !!holding && holding.holding > 0;\n });\n\n // If user has no holdings, show USDC by default\n if (list.length === 0) {\n const usdcToken = mappedTokens.find((t) => t.symbol === \"USDC\");\n if (usdcToken) {\n return [usdcToken];\n }\n }\n // sort tokens, USDC should be the first\n list.sort((a, b) => {\n if (a.symbol === \"USDC\") return -1;\n if (b.symbol === \"USDC\") return 1;\n return 0;\n });\n\n return list;\n }, [tokensInfo, holdings]);\n\n useEffect(() => {\n if (!allTokens.length) return;\n\n const usdcToken = getTokenByTokenList(allTokens);\n setToken(usdcToken || allTokens?.[0]);\n setTokens(allTokens);\n }, [allTokens]);\n\n // Check if a token is supported on the current chain\n const isTokenSupportedOnChain = useMemoizedFn(\n (tokenSymbol: string): boolean => {\n if (!currentChain?.info?.token_infos) {\n return false;\n }\n return currentChain.info.token_infos.some(\n (token) => token.symbol === tokenSymbol,\n );\n },\n );\n\n const handleSourceTokenChange = useMemoizedFn((newToken: API.TokenInfo) => {\n if (withdrawTo === WithdrawTo.Wallet && currentChain && newToken.symbol) {\n const matchingToken = sourceTokens.find(\n (t) => t.symbol === newToken.symbol,\n );\n if (matchingToken) {\n onSourceTokenChange(matchingToken);\n } else {\n onSourceTokenChange(newToken);\n }\n return;\n }\n // Withdraw to account\n onSourceTokenChange(newToken);\n });\n\n const syncToken = useMemoizedFn(() => {\n if (withdrawTo === WithdrawTo.Account) {\n const findToken = tokens.find(\n (item) => item.symbol === sourceToken?.symbol,\n ) as API.TokenInfo;\n if (findToken) {\n setToken(findToken);\n }\n }\n });\n\n useEffect(() => {\n if (withdrawTo !== WithdrawTo.Wallet || !allTokens.length) return;\n\n const holdingSymbols = new Set(allTokens.map((t) => t.symbol));\n if (!sourceToken?.symbol || !holdingSymbols.has(sourceToken.symbol)) {\n const defaultToken = getTokenByTokenList(allTokens);\n if (defaultToken) {\n handleSourceTokenChange(defaultToken);\n }\n }\n }, [withdrawTo, allTokens, sourceToken?.symbol, handleSourceTokenChange]);\n\n useEffect(() => {\n syncToken();\n }, [\n withdrawTo,\n allTokens,\n sourceToken,\n sourceTokens,\n currentChain,\n syncToken,\n ]);\n\n if (withdrawTo === WithdrawTo.Account) {\n return {\n sourceToken: token,\n onSourceTokenChange: setToken,\n sourceTokens: tokens,\n isTokenSupportedOnChain,\n };\n }\n\n return {\n sourceToken,\n onSourceTokenChange: handleSourceTokenChange,\n sourceTokens: allTokens,\n isTokenSupportedOnChain,\n };\n}\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { PublicKey } from \"@solana/web3.js\";\nimport { ethers } from \"ethers\";\nimport {\n useAccount,\n useAssetsHistory,\n useChains,\n useConfig,\n useEventEmitter,\n useLocalStorage,\n useMemoizedFn,\n useWalletConnector,\n useWalletTopic,\n useWithdraw,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport {\n API,\n AccountStatusEnum,\n AssetHistorySideEnum,\n AssetHistoryStatusEnum,\n NetworkId,\n} from \"@orderly.network/types\";\nimport { toast } from \"@orderly.network/ui\";\nimport { useAuthGuard } from \"@orderly.network/ui-connector\";\nimport {\n Decimal,\n int2hex,\n praseChainIdToNumber,\n toNonExponential,\n} from \"@orderly.network/utils\";\nimport { InputStatus, WithdrawTo } from \"../../types\";\nimport { CurrentChain } from \"../depositForm/hooks\";\nimport { useSettlePnl } from \"../unsettlePnlInfo/useSettlePnl\";\nimport { useVaultBalance } from \"./hooks/useVaultBalance\";\nimport { useWithdrawAccountId } from \"./hooks/useWithdrawAccountId\";\nimport { useWithdrawFee } from \"./hooks/useWithdrawFee\";\nimport { useWithdrawLTV } from \"./hooks/useWithdrawLTV\";\nimport { useWithdrawToken } from \"./hooks/useWithdrawToken\";\n\nexport const validateWalletAddress = (\n address: string,\n): { valid: boolean; network?: \"EVM\" | \"SOL\" } => {\n if (ethers.isAddress(address)) {\n return { valid: true, network: \"EVM\" };\n }\n\n try {\n const pubKey = new PublicKey(address);\n if (PublicKey.isOnCurve(pubKey.toBytes())) {\n return { valid: true, network: \"SOL\" };\n }\n } catch {}\n\n return { valid: false };\n};\n\nexport type WithdrawFormScriptReturn = ReturnType<typeof useWithdrawFormScript>;\n\nconst markPrice = 1;\n\nexport type WithdrawFormScriptOptions = {\n close?: () => void;\n};\n\nexport const useWithdrawFormScript = (options: WithdrawFormScriptOptions) => {\n const { t } = useTranslation();\n const [crossChainTrans, setCrossChainTrans] = useState<boolean>(false);\n const [loading, setLoading] = useState(false);\n const [assetHistory] = useAssetsHistory(\n {\n page: 1,\n pageSize: 1,\n side: AssetHistorySideEnum.WITHDRAW,\n status: AssetHistoryStatusEnum.PENDING_REBALANCE,\n },\n // update when withdraw status changed\n {\n shouldUpdateOnWalletChanged: (data) =>\n data.side === AssetHistorySideEnum.WITHDRAW,\n },\n );\n\n const config = useConfig();\n\n const brokerName = config.get(\"brokerName\");\n const networkId = config.get(\"networkId\") as NetworkId;\n\n const ee = useEventEmitter();\n\n const [quantity, setQuantity] = useState<string>(\"\");\n const [inputStatus, setInputStatus] = useState<InputStatus>(\"default\");\n const [hintMessage, setHintMessage] = useState<string>();\n\n const [withdrawTo, setWithdrawTo] = useState<WithdrawTo>(WithdrawTo.Wallet);\n\n const { wrongNetwork, widgetConfigs } = useAppContext();\n const { account, state } = useAccount();\n\n const [chains, { findByChainId }] = useChains(networkId, {\n filter: (chain: any) =>\n chain.network_infos?.bridge_enable || chain.network_infos?.bridgeless,\n });\n\n const [linkDeviceStorage] = useLocalStorage(\"orderly_link_device\", {});\n\n const {\n connectedChain,\n wallet,\n setChain: switchChain,\n settingChain,\n } = useWalletConnector();\n\n const isLoggedIn = useAuthGuard();\n\n const [pendingTokenSymbol, setPendingTokenSymbol] = useState<\n string | undefined\n >();\n\n const currentChain = useMemo(() => {\n // if (!connectedChain) return null;\n\n const chainId = connectedChain\n ? praseChainIdToNumber(connectedChain.id)\n : Number.parseInt(linkDeviceStorage?.chainId);\n\n if (!chainId) {\n return null;\n }\n\n const chain = findByChainId(chainId);\n\n return {\n ...connectedChain,\n id: chainId,\n info: chain!,\n } as CurrentChain;\n }, [findByChainId, connectedChain, linkDeviceStorage]);\n\n const {\n sourceToken,\n onSourceTokenChange: _OnSourceTokenChange,\n sourceTokens,\n isTokenSupportedOnChain,\n } = useWithdrawToken({\n currentChain,\n withdrawTo,\n });\n\n const onSourceTokenChange = useMemoizedFn((token: API.TokenInfo) => {\n setQuantity(\"\");\n _OnSourceTokenChange(token);\n setPendingTokenSymbol(token.symbol);\n });\n\n const tokenChains = useMemo(() => {\n if (!chains) return [];\n\n const list = chains.map((chain) => {\n const isSupported = chain.token_infos?.some(\n (token) => token.symbol === sourceToken?.symbol,\n );\n\n return {\n ...chain.network_infos,\n isSupported,\n };\n });\n\n // Put supported chains on top, unsupported ones at the bottom\n list.sort((a, b) => {\n const aSupported = !!a.isSupported;\n const bSupported = !!b.isSupported;\n if (aSupported === bSupported) return 0;\n return aSupported ? -1 : 1;\n });\n\n return list;\n }, [chains, sourceToken?.symbol]);\n\n const enableWithdrawToExternalWallet =\n widgetConfigs?.withdraw?.enableWithdrawToExternalWallet ?? false;\n\n const { walletName, address } = useMemo(\n () => ({\n walletName: wallet?.label,\n address: wallet?.accounts?.[0].address,\n }),\n [wallet],\n );\n\n const [externalWallets, setExternalWallets] = useLocalStorage<\n { address: string; network?: \"EVM\" | \"SOL\" }[]\n >(\"orderly_external_wallets\", []);\n\n const [selectedWalletAddress, setSelectedWalletAddress] = useState<string>();\n\n useEffect(() => {\n setSelectedWalletAddress(undefined);\n }, [currentChain?.namespace]);\n\n useEffect(() => {\n if (address && !selectedWalletAddress) {\n setSelectedWalletAddress(address);\n }\n }, [address, selectedWalletAddress]);\n\n const onSelectWallet = (address: string) => {\n setSelectedWalletAddress(address);\n };\n\n const onAddExternalWallet = (addr: string, network?: \"EVM\" | \"SOL\") => {\n const normalizedAddr = addr.trim();\n if (!normalizedAddr) return;\n\n const connectedAddress = address?.trim();\n if (\n connectedAddress &&\n connectedAddress.toLowerCase() === normalizedAddr.toLowerCase()\n ) {\n setSelectedWalletAddress(normalizedAddr);\n return;\n }\n\n const exists = (externalWallets || []).some((w: { address: string }) => {\n return w.address?.trim().toLowerCase() === normalizedAddr.toLowerCase();\n });\n\n if (!exists) {\n setExternalWallets([\n ...(externalWallets || []),\n { address: normalizedAddr, network },\n ]);\n }\n\n setSelectedWalletAddress(normalizedAddr);\n };\n\n const onQuantityChange = (qty: string) => {\n setQuantity(qty);\n };\n\n const amount = useMemo(() => {\n return new Decimal(quantity || 0).mul(markPrice).toNumber();\n }, [quantity, markPrice]);\n\n const { withdraw, maxAmount, unsettledPnL } = useWithdraw({\n token: sourceToken?.symbol,\n decimals: sourceToken?.token_decimal,\n });\n\n const qtyGreaterThanMaxAmount = useMemo<boolean>(() => {\n if (!quantity || Number.isNaN(quantity)) {\n return false;\n }\n if (!maxAmount || Number.isNaN(maxAmount)) {\n return true;\n }\n return new Decimal(quantity).gt(maxAmount);\n }, [quantity, maxAmount]);\n\n const {\n vaultBalanceList,\n qtyGreaterThanVault,\n crossChainWithdraw,\n vaultBalanceMessage,\n } = useVaultBalance({\n currentChain,\n sourceToken,\n withdrawTo,\n quantity,\n qtyGreaterThanMaxAmount,\n });\n\n const withdrawAccountIdState = useWithdrawAccountId({\n token: sourceToken?.symbol!,\n decimals: sourceToken?.token_decimal!,\n quantity,\n setQuantity,\n close: options.close,\n setLoading,\n });\n\n const checkIsBridgeless = useMemo(() => {\n if (wrongNetwork) {\n return false;\n }\n if (!currentChain) {\n return false;\n }\n if (networkId === \"testnet\") {\n return true;\n }\n if (!currentChain.info) {\n return false;\n }\n if (\n !currentChain.info.network_infos ||\n !currentChain.info.network_infos.bridgeless\n ) {\n return false;\n }\n return true;\n }, [currentChain, wrongNetwork]);\n\n const cleanData = () => {\n setQuantity(\"\");\n };\n\n const onChainChange = useCallback(\n async (chain: API.NetworkInfos) => {\n const chainInfo = findByChainId(chain.chain_id);\n\n if (\n !chainInfo ||\n chainInfo.network_infos?.chain_id === currentChain?.id\n ) {\n return Promise.resolve();\n }\n\n return switchChain?.({\n chainId: int2hex(Number(chainInfo.network_infos?.chain_id)),\n })\n .then((switched) => {\n if (switched) {\n toast.success(t(\"connector.networkSwitched\"));\n // clean input value\n cleanData();\n } else {\n toast.error(t(\"connector.switchChain.failed\"));\n }\n })\n .catch((error) => {\n toast.error(`${t(\"connector.switchChain.failed\")}: ${error.message}`);\n });\n },\n [currentChain, switchChain, findByChainId, t],\n );\n\n useEffect(() => {\n if (!pendingTokenSymbol || !sourceTokens || sourceTokens.length === 0) {\n return;\n }\n\n const matchedToken = sourceTokens.find(\n (token) => token.symbol === pendingTokenSymbol,\n );\n if (matchedToken) {\n onSourceTokenChange(matchedToken);\n }\n }, [pendingTokenSymbol, sourceTokens, onSourceTokenChange, currentChain]);\n\n const onWithdraw = async () => {\n if (loading) {\n return;\n }\n if (inputStatus !== \"default\") {\n return;\n }\n\n setLoading(true);\n return withdraw({\n amount: quantity,\n token: sourceToken?.symbol!,\n chainId: currentChain?.id!,\n allowCrossChainWithdraw: crossChainWithdraw,\n receiver: selectedWalletAddress,\n })\n .then((res) => {\n toast.success(t(\"transfer.withdraw.requested\"));\n ee.emit(\"withdraw:requested\");\n options.close?.();\n setQuantity(\"\");\n })\n .catch((e) => {\n if (e.message.indexOf(\"user rejected\") !== -1) {\n toast.error(t(\"transfer.rejectTransaction\"));\n return;\n }\n if (\n e.message.indexOf(\n \"Signing off chain messages with Ledger is not yet supported\",\n ) !== -1\n ) {\n ee.emit(\"wallet:sign-message-with-ledger-error\", {\n message: e.message,\n userAddress: account.address,\n });\n return;\n }\n\n toast.error(e.message);\n })\n .finally(() => {\n setLoading(false);\n });\n };\n\n const fee = useWithdrawFee({\n crossChainWithdraw,\n currentChain,\n token: sourceToken?.symbol!,\n withdrawTo,\n });\n\n const minAmountWarningMessage = useMemo(() => {\n const minAmount = new Decimal(\n sourceToken?.minimum_withdraw_amount ?? 0,\n ).add(fee);\n\n if (quantity && new Decimal(quantity).lt(minAmount)) {\n return t(\"transfer.withdraw.minAmount.error\", {\n minAmount: toNonExponential(minAmount.toNumber()),\n currency: sourceToken?.symbol,\n });\n }\n }, [quantity, sourceToken?.minimum_withdraw_amount, fee, t]);\n\n const showQty = useMemo(() => {\n if (!quantity) {\n return \"\";\n }\n\n const value = new Decimal(quantity).sub(fee ?? 0);\n if (value.isNegative()) {\n return \"\";\n }\n return toNonExponential(value.toNumber());\n }, [fee, quantity]);\n\n const isTokenUnsupported = useMemo(() => {\n if (\n withdrawTo !== WithdrawTo.Wallet ||\n !currentChain ||\n !sourceToken?.symbol\n ) {\n return false;\n }\n return !isTokenSupportedOnChain(sourceToken.symbol);\n }, [withdrawTo, currentChain, sourceToken?.symbol, isTokenSupportedOnChain]);\n\n useEffect(() => {\n if (isTokenUnsupported && sourceToken?.symbol) {\n setInputStatus(\"error\");\n setHintMessage(\n t(\"transfer.withdraw.unsupported.token\", { token: sourceToken.symbol }),\n );\n return;\n }\n\n if (!quantity) {\n setInputStatus(\"default\");\n setHintMessage(\"\");\n return;\n }\n const qty = new Decimal(quantity ?? 0);\n if (unsettledPnL < 0) {\n if (qty.gt(maxAmount)) {\n setInputStatus(\"error\");\n setHintMessage(t(\"transfer.insufficientBalance\"));\n } else {\n setInputStatus(\"default\");\n setHintMessage(\"\");\n }\n }\n }, [\n quantity,\n maxAmount,\n unsettledPnL,\n crossChainTrans,\n isTokenUnsupported,\n sourceToken?.symbol,\n t,\n ]);\n\n const disabled =\n crossChainTrans ||\n !quantity ||\n Number(quantity) === 0 ||\n [\"error\", \"warning\"].includes(inputStatus) ||\n (withdrawTo === WithdrawTo.Account &&\n !withdrawAccountIdState.toAccountId) ||\n qtyGreaterThanMaxAmount ||\n qtyGreaterThanVault ||\n !!minAmountWarningMessage ||\n isTokenUnsupported;\n\n useEffect(() => {\n setCrossChainTrans(!!assetHistory?.length);\n }, [assetHistory?.length]);\n\n // it need to use useMemoizedFn wrap ,otherwise crossChainTrans and assetHistory will be first render data\n const handleWalletTopic = useMemoizedFn((data: any) => {\n if (!crossChainTrans) {\n return;\n }\n const txId = assetHistory?.[0]?.tx_id;\n const { trxId, transStatus } = data;\n if (trxId === txId && transStatus === \"COMPLETED\") {\n setCrossChainTrans(false);\n }\n });\n\n useWalletTopic({\n onMessage: handleWalletTopic,\n });\n\n const { hasPositions, onSettlePnl } = useSettlePnl();\n\n const { currentLTV, nextLTV, ltvWarningMessage } = useWithdrawLTV({\n token: sourceToken?.symbol!,\n quantity,\n });\n\n const warningMessage =\n ltvWarningMessage || minAmountWarningMessage || vaultBalanceMessage;\n\n const filteredVaultBalanceList = useMemo(() => {\n if (withdrawTo === WithdrawTo.Account) {\n return [];\n }\n return vaultBalanceList?.filter(\n (item) => Number.parseInt(item.chain_id) === currentChain?.id,\n );\n }, [vaultBalanceList, currentChain, withdrawTo]);\n\n const onSwitchToSupportedNetwork = useMemoizedFn(async () => {\n if (!tokenChains || tokenChains.length === 0) return;\n\n const targetNetwork =\n tokenChains.find((item) => item.isSupported) ?? tokenChains[0];\n\n await onChainChange(targetNetwork);\n });\n\n return {\n walletName,\n address,\n quantity,\n onQuantityChange,\n sourceToken,\n onSourceTokenChange,\n sourceTokens,\n inputStatus,\n hintMessage,\n amount,\n balanceRevalidating: false,\n maxQuantity: maxAmount,\n disabled,\n loading,\n unsettledPnL,\n wrongNetwork,\n settingChain,\n tokenChains,\n currentChain,\n onChainChange,\n onWithdraw,\n fee,\n crossChainWithdraw,\n crossChainTrans,\n showQty,\n networkId,\n checkIsBridgeless,\n hasPositions,\n onSettlePnl,\n brokerName,\n qtyGreaterThanMaxAmount,\n vaultBalanceList,\n ...withdrawAccountIdState,\n withdrawTo,\n setWithdrawTo,\n currentLTV,\n nextLTV,\n warningMessage,\n\n isLoggedIn,\n isTokenUnsupported,\n onSwitchToSupportedNetwork,\n\n enableWithdrawToExternalWallet,\n externalWallets,\n selectedWalletAddress: selectedWalletAddress || address,\n onSelectWallet,\n onAddExternalWallet,\n setExternalWallets,\n isEnableTrading:\n state.status >= AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected,\n };\n};\n","import { FC, useState, useEffect } from \"react\";\nimport { useDebouncedCallback } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { ChainNamespace } from \"@orderly.network/types\";\nimport {\n Box,\n Button,\n Input,\n SimpleDialog,\n Text,\n Spinner,\n cn,\n Flex,\n CloseRoundFillIcon,\n ChainIcon,\n} from \"@orderly.network/ui\";\nimport { CurrentChain } from \"../depositForm/hooks\";\nimport { validateWalletAddress } from \"./withdrawForm.script\";\n\ninterface AddWalletDialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n onConfirm: (address: string, network?: \"EVM\" | \"SOL\") => void;\n chain: CurrentChain | null;\n}\n\nexport const AddWalletDialog: FC<AddWalletDialogProps> = ({\n open,\n onOpenChange,\n onConfirm,\n chain,\n}) => {\n const { t } = useTranslation();\n const [address, setAddress] = useState(\"\");\n const [isValidating, setIsValidating] = useState(false);\n const [validationResult, setValidationResult] = useState<{\n valid: boolean;\n network?: \"EVM\" | \"SOL\";\n } | null>(null);\n\n const checkAddress = useDebouncedCallback((addr: string) => {\n if (!addr) {\n setValidationResult(null);\n setIsValidating(false);\n return;\n }\n const result = validateWalletAddress(addr);\n setValidationResult(result);\n setIsValidating(false);\n }, 500);\n\n const onAddressChange = (val: string) => {\n setAddress(val);\n if (!val) {\n setValidationResult(null);\n setIsValidating(false);\n return;\n }\n setIsValidating(true);\n setValidationResult(null);\n checkAddress(val);\n };\n\n const onClear = () => {\n setAddress(\"\");\n setValidationResult(null);\n setIsValidating(false);\n };\n\n useEffect(() => {\n if (!open) onClear();\n }, [open]);\n\n const requiredNetwork: \"EVM\" | \"SOL\" | undefined =\n chain?.namespace === ChainNamespace.solana\n ? \"SOL\"\n : chain?.namespace === ChainNamespace.evm\n ? \"EVM\"\n : undefined;\n\n const requiredNetworkLabel =\n requiredNetwork === \"SOL\"\n ? \"Solana\"\n : requiredNetwork === \"EVM\"\n ? \"EVM\"\n : \"\";\n\n const hasValidation = !!validationResult;\n const isValid = !!validationResult?.valid;\n const isInvalidFormat = hasValidation && !validationResult!.valid;\n const isNetworkMismatch =\n isValid &&\n !!requiredNetwork &&\n validationResult!.network !== requiredNetwork;\n\n const showBorderDanger =\n !isValidating && hasValidation && (isInvalidFormat || isNetworkMismatch);\n const showProtocolLabel = !isValidating && isValid;\n const showInlineInvalid = !isValidating && isInvalidFormat;\n const showErrorHint = !isValidating && isNetworkMismatch;\n\n const handleConfirm = () => {\n if (!address || isValidating || !isValid || isNetworkMismatch) return;\n\n onConfirm(address, validationResult!.network === \"SOL\" ? \"SOL\" : \"EVM\");\n onOpenChange(false);\n };\n\n return (\n <SimpleDialog\n open={open}\n onOpenChange={onOpenChange}\n title={t(\"transfer.withdraw.addExternalWallet\")}\n size=\"sm\"\n >\n <Box className=\"oui-flex oui-flex-col oui-gap-6 oui-font-semibold oui-tracking-[0.03em]\">\n <Flex justify=\"between\">\n <Text size=\"sm\" intensity={54}>\n {t(\"common.network\")}\n </Text>\n <Flex gapX={1}>\n <ChainIcon chainId={\"\" + chain?.id} className=\"oui-w-4 oui-h-4\" />\n <Text size=\"sm\">{chain?.info?.network_infos?.shortName}</Text>\n </Flex>\n </Flex>\n <Flex direction=\"column\" itemAlign=\"start\" gapY={2}>\n <Text size=\"sm\" intensity={54}>\n {t(\"transfer.withdraw.addExternalWallet.addressDescription\")}\n </Text>\n {requiredNetworkLabel && (\n <Text size=\"sm\" intensity={54}>\n {t(\"transfer.withdraw.addExternalWallet.addressWarning\", {\n networkLabel: requiredNetworkLabel,\n })}\n </Text>\n )}\n </Flex>\n <Box className=\"oui-flex oui-flex-col oui-gap-1\">\n <Flex justify=\"between\">\n <Text size=\"2xs\" intensity={54}>\n {t(\"transfer.withdraw.addExternalWallet.label\")}\n </Text>\n {isValidating && (\n <Spinner className=\"oui-w-3.5 oui-h-3.5 oui-text-base-contrast-36\" />\n )}\n {showProtocolLabel && (\n <Text\n size=\"2xs\"\n className={cn(\n isNetworkMismatch\n ? \"oui-text-danger\"\n : \"oui-text-primary-light\",\n )}\n >\n {validationResult!.network === \"EVM\" ? \"EVM\" : \"Solana\"}\n </Text>\n )}\n {showInlineInvalid && (\n <Text size=\"2xs\" className=\"oui-text-danger\">\n {t(\"common.invalid\")}\n </Text>\n )}\n </Flex>\n <Input\n value={address}\n onValueChange={onAddressChange}\n autoFocus\n color={showBorderDanger ? \"danger\" : undefined}\n className={cn(\"oui-bg-transparent oui-bg-base-6\")}\n classNames={{ input: \"oui-text-white\" }}\n suffix={\n address && (\n <Box className=\"oui-ml-2.5 oui-mr-2 oui-cursor-pointer\">\n <CloseRoundFillIcon\n size={16}\n onClick={onClear}\n className=\"oui-text-base-contrast-20 hover:oui-text-base-contrast-54\"\n />\n </Box>\n )\n }\n />\n {showErrorHint && (\n <Flex gapX={1} px={1} justify=\"between\" itemAlign=\"center\">\n <Flex gapX={1} itemAlign=\"center\">\n <Box\n width={4}\n height={4}\n r=\"full\"\n className=\"oui-bg-danger-light\"\n />\n <Text size=\"2xs\" className=\"oui-text-danger-light\">\n {t(\"transfer.withdraw.addExternalWallet.networkMismatch\", {\n networkLabel: requiredNetworkLabel,\n })}\n </Text>\n </Flex>\n </Flex>\n )}\n </Box>\n <Button\n variant=\"contained\"\n fullWidth\n onClick={handleConfirm}\n disabled={!address || isValidating || !isValid || isNetworkMismatch}\n className=\"oui-mt-2\"\n >\n {t(\"common.confirm\")}\n </Button>\n </Box>\n </SimpleDialog>\n );\n};\n","import { FC, ReactNode, SVGProps, useMemo, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n cn,\n DropdownMenuContent,\n DropdownMenuPortal,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n Flex,\n Text,\n WalletIcon,\n CaretDownIcon,\n CaretUpIcon,\n} from \"@orderly.network/ui\";\n\nconst AddIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M8.99316 2.19731C8.57916 2.19731 8.24316 2.53331 8.24316 2.94731V8.19731H2.99316C2.57916 8.19731 2.24316 8.53331 2.24316 8.94731C2.24316 9.36131 2.57916 9.69731 2.99316 9.69731H8.24316V14.9473C8.24316 15.3613 8.57916 15.6973 8.99316 15.6973C9.40716 15.6973 9.74316 15.3613 9.74316 14.9473V9.69731H14.9932C15.4072 9.69731 15.7432 9.36131 15.7432 8.94731C15.7432 8.53331 15.4072 8.19731 14.9932 8.19731H9.74316V2.94731C9.74316 2.53331 9.40716 2.19731 8.99316 2.19731Z\" />\n </svg>\n);\n\nexport type WalletOption = {\n address: string;\n name?: string;\n network?: \"EVM\" | \"SOL\";\n};\n\ninterface WalletMenuItemProps {\n onClick: () => void;\n children: ReactNode;\n className?: string;\n}\n\nconst WalletMenuItem: FC<WalletMenuItemProps> = ({\n onClick,\n children,\n className,\n}) => {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={cn(\n \"oui-flex oui-items-center oui-gap-2 oui-py-1.5 oui-px-2 hover:oui-bg-base-5\",\n \"oui-rounded-[4px]\",\n \"oui-font-semibold oui-tracking-[0.03em]\",\n className,\n )}\n >\n {children}\n </button>\n );\n};\n\ninterface WalletSelectorProps {\n connectedWallet?: {\n name: string;\n address: string;\n namespace?: string;\n };\n externalWallets: WalletOption[];\n selectedAddress: string;\n onSelect: (address: string) => void;\n onAddExternalWallet: () => void;\n}\n\nexport const WalletSelector: FC<WalletSelectorProps> = ({\n connectedWallet,\n externalWallets,\n selectedAddress,\n onSelect,\n onAddExternalWallet,\n}) => {\n const { t } = useTranslation();\n const [isOpen, setIsOpen] = useState(false);\n\n const currentNetwork = useMemo<\"EVM\" | \"SOL\" | undefined>(() => {\n if (!connectedWallet?.namespace) return undefined;\n const ns = connectedWallet.namespace.toLowerCase();\n if (ns.includes(\"sol\")) return \"SOL\";\n return \"EVM\";\n }, [connectedWallet?.namespace]);\n\n const filteredExternalWallets = useMemo(() => {\n if (!currentNetwork) return externalWallets;\n return externalWallets.filter(\n (wallet) => wallet.network === currentNetwork,\n );\n }, [externalWallets, currentNetwork]);\n\n const selectedWalletOpt = useMemo(() => {\n if (connectedWallet && selectedAddress === connectedWallet.address) {\n return {\n address: connectedWallet.address,\n name: connectedWallet.name,\n network: currentNetwork,\n };\n }\n return filteredExternalWallets.find(\n (w: WalletOption) => w.address === selectedAddress,\n );\n }, [\n connectedWallet,\n currentNetwork,\n filteredExternalWallets,\n selectedAddress,\n ]);\n\n const hasExternalWallets = filteredExternalWallets.length > 0;\n const showConnectedItem = !!connectedWallet && hasExternalWallets;\n\n const getChainLabel = (network?: \"EVM\" | \"SOL\") => {\n if (!network) return \"\";\n if (network === \"SOL\") return \"Solana\";\n return \"EVM\";\n };\n\n const handleSelectWallet = (address: string) => {\n onSelect(address);\n setIsOpen(false);\n };\n\n const handleAddExternalWalletClick = () => {\n onAddExternalWallet();\n setIsOpen(false);\n };\n\n const dropdownContent = (\n <DropdownMenuPortal>\n <DropdownMenuContent\n align=\"end\"\n className=\"oui-max-h-[240px] oui-overflow-y-auto oui-custom-scrollbar\"\n >\n {showConnectedItem && connectedWallet && (\n <WalletMenuItem\n onClick={() => handleSelectWallet(connectedWallet.address)}\n className=\"oui-w-[368px]\"\n >\n <Flex direction=\"column\" itemAlign=\"start\" gapY={1}>\n <Text size=\"2xs\" className=\"oui-text-base-contrast-54\">\n {t(\"common.myWallet\")}\n </Text>\n <Text\n size=\"2xs\"\n intensity={54}\n className=\"oui-text-base-contrast-36 oui-leading-[15px]\"\n >\n {`(${getChainLabel(currentNetwork)}) ${connectedWallet.address}`}\n </Text>\n </Flex>\n </WalletMenuItem>\n )}\n\n {hasExternalWallets && (\n <>\n {filteredExternalWallets.map((wallet) => (\n <WalletMenuItem\n key={wallet.address}\n onClick={() => handleSelectWallet(wallet.address)}\n className=\"oui-w-[368px]\"\n >\n <Flex direction=\"column\" itemAlign=\"start\" gapY={1}>\n <Text size=\"2xs\" className=\"oui-text-base-contrast-54\">\n {t(\"common.externalWallet\")}\n </Text>\n <Text\n size=\"2xs\"\n intensity={54}\n className=\"oui-text-base-contrast-36 oui-leading-[15px]\"\n >\n {`(${getChainLabel(wallet.network)}) ${wallet.address}`}\n </Text>\n </Flex>\n </WalletMenuItem>\n ))}\n </>\n )}\n\n <WalletMenuItem\n onClick={handleAddExternalWalletClick}\n className={cn(\n \"oui-justify-center\",\n hasExternalWallets && \"oui-w-full\",\n !hasExternalWallets && \"oui-w-[190px]\",\n )}\n >\n <Flex\n itemAlign=\"center\"\n gapX={1}\n className=\"oui-text-primary oui-font-semibold oui-tracking-[0.03em]\"\n >\n <AddIcon className=\"oui-size-[18px]\" />\n <Text size=\"2xs\">{t(\"transfer.withdraw.addExternalWallet\")}</Text>\n </Flex>\n </WalletMenuItem>\n </DropdownMenuContent>\n </DropdownMenuPortal>\n );\n\n return (\n <Flex justify=\"between\" className=\"oui-w-full oui-mb-3\">\n <Text size=\"2xs\" intensity={36}>\n {t(\"common.wallet\")}\n </Text>\n <DropdownMenuRoot open={isOpen} onOpenChange={setIsOpen}>\n <DropdownMenuTrigger asChild>\n <div className=\"oui-flex oui-items-center oui-gap-1 oui-cursor-pointer oui-text-base-contrast-54 hover:oui-text-base-contrast-80\">\n {selectedWalletOpt?.name && (\n <WalletIcon name={selectedWalletOpt.name} size=\"3xs\" />\n )}\n <Text.formatted size=\"2xs\" intensity={54} rule=\"address\">\n {selectedWalletOpt?.address || \"\"}\n </Text.formatted>\n <Text\n size=\"2xs\"\n intensity={54}\n className=\"oui-text-base-contrast-36\"\n >\n {` (${getChainLabel(selectedWalletOpt?.network)})`}\n </Text>\n {isOpen ? (\n <CaretUpIcon size={12} className=\"oui-text-inherit\" />\n ) : (\n <CaretDownIcon size={12} className=\"oui-text-inherit\" />\n )}\n </div>\n </DropdownMenuTrigger>\n {dropdownContent}\n </DropdownMenuRoot>\n </Flex>\n );\n};\n","import { FC, useState } from \"react\";\nimport { Trans, useTranslation } from \"@orderly.network/i18n\";\nimport {\n Box,\n Flex,\n Text,\n textVariants,\n Tabs,\n TabPanel,\n ArrowLeftRightIcon,\n WalletIcon,\n} from \"@orderly.network/ui\";\nimport { WithdrawTo } from \"../../types\";\nimport { LtvWidget } from \"../LTV\";\nimport { TextAreaInput } from \"../accountIdInput\";\nimport { AvailableQuantity } from \"../availableQuantity\";\nimport { BrokerWallet } from \"../brokerWallet\";\nimport { ChainSelect } from \"../chainSelect\";\nimport { ExchangeDivider } from \"../exchangeDivider\";\nimport { QuantityInput } from \"../quantityInput\";\nimport { UnsettlePnlInfo } from \"../unsettlePnlInfo\";\nimport { WithdrawAction } from \"../withdrawAction\";\nimport { WithdrawWarningMessage } from \"../withdrawWarningMessage\";\nimport { AddWalletDialog } from \"./addWalletDialog\";\nimport { WalletSelector } from \"./walletSelector\";\nimport { WithdrawFormScriptReturn } from \"./withdrawForm.script\";\n\nexport type WithdrawFormProps = WithdrawFormScriptReturn;\n\nexport const WithdrawForm: React.FC<WithdrawFormProps> = (props) => {\n const {\n address,\n walletName,\n loading,\n disabled,\n quantity,\n onQuantityChange,\n sourceToken,\n amount,\n maxQuantity,\n tokenChains,\n currentChain,\n fee,\n settingChain,\n crossChainTrans,\n checkIsBridgeless,\n withdrawTo,\n sourceTokens,\n onSourceTokenChange,\n vaultBalanceList,\n qtyGreaterThanMaxAmount,\n isTokenUnsupported,\n onSwitchToSupportedNetwork,\n externalWallets,\n selectedWalletAddress,\n onSelectWallet,\n onAddExternalWallet,\n isEnableTrading,\n enableWithdrawToExternalWallet,\n } = props;\n\n const { t } = useTranslation();\n const [addWalletOpen, setAddWalletOpen] = useState(false);\n\n const handleAddExternalWallet = (\n address: string,\n network?: \"EVM\" | \"SOL\",\n ) => {\n onAddExternalWallet?.(address, network);\n };\n\n const internalWithdrawPanel = (\n <TabPanel\n title={t(\"transfer.withdraw.otherAccount\", {\n brokerName: props.brokerName,\n })}\n value={WithdrawTo.Account}\n >\n <TextAreaInput\n label={t(\"common.accountId\")}\n value={props.toAccountId}\n onChange={props.setToAccountId}\n status={props.toAccountIdInputStatus}\n hintMessage={props.toAccountIdHintMessage}\n disabled={!props.isLoggedIn}\n placeholder={t(\"transfer.withdraw.accountIdOrAddress.placeholder\")}\n enableAccountLookup\n accountInfo={props.toAccountInfo}\n accountDropdownOpen={props.toAccountInfoDropdownOpen}\n setAccountDropdownOpen={props.setToAccountInfoDropdownOpen}\n />\n <Box mb={1} px={2}>\n <Text size=\"xs\" intensity={54}>\n {t(\"transfer.withdraw.accountIdOrAddress.hint\")}\n </Text>\n </Box>\n </TabPanel>\n );\n\n return (\n <Box\n id=\"oui-withdraw-form\"\n className={textVariants({ weight: \"semibold\" })}\n >\n <Box className=\"oui-mb-6 lg:oui-mb-8\">\n <BrokerWallet />\n <Box mt={3} mb={1}>\n <QuantityInput\n value={quantity}\n onValueChange={onQuantityChange}\n token={sourceToken}\n tokens={sourceTokens}\n onTokenChange={onSourceTokenChange}\n status={props.inputStatus}\n hintMessage={props.hintMessage}\n hintSuffix={\n isTokenUnsupported ? (\n <button\n type=\"button\"\n onClick={onSwitchToSupportedNetwork}\n className=\"oui-inline-flex oui-items-center oui-gap-1 oui-text-2xs oui-font-semibold oui-text-primary\"\n >\n {t(\"common.switch\")}\n <ArrowLeftRightIcon\n size={16}\n className=\"oui-text-primary oui-mt-0.5\"\n opacity={1}\n />\n </button>\n ) : undefined\n }\n vaultBalanceList={vaultBalanceList}\n testId=\"oui-testid-withdraw-dialog-quantity-input\"\n displayType=\"vaultBalance\"\n disabled={!props.isLoggedIn}\n />\n </Box>\n <AvailableQuantity\n token={sourceToken}\n amount={amount}\n maxQuantity={maxQuantity.toString()}\n loading={props.balanceRevalidating}\n onClick={() => {\n onQuantityChange(maxQuantity.toString());\n }}\n tooltipContent={t(\"transfer.withdraw.available.tooltip\", {\n amount: maxQuantity.toString(),\n })}\n />\n <Box mx={2} mt={1}>\n <UnsettlePnlInfo\n unsettledPnl={props.unsettledPnL}\n hasPositions={props.hasPositions}\n onSettlePnl={props.onSettlePnl}\n tooltipContent={t(\"settle.unsettled.tooltip\")}\n dialogContent={<Trans i18nKey=\"settle.settlePnl.description\" />}\n />\n </Box>\n <ExchangeDivider />\n <Tabs\n value={withdrawTo}\n onValueChange={props.setWithdrawTo as (tab: string) => void}\n variant=\"contained\"\n size=\"lg\"\n classNames={{\n tabsList: \"oui-px-0\",\n tabsContent: \"oui-pt-3\",\n }}\n >\n <TabPanel\n title={t(\"transfer.web3Wallet.my\")}\n icon={\n props.walletName ? (\n <WalletIcon size={\"xs\"} name={props.walletName ?? \"\"} />\n ) : undefined\n }\n value={WithdrawTo.Wallet}\n >\n {isEnableTrading && enableWithdrawToExternalWallet && (\n <WalletSelector\n connectedWallet={\n address\n ? {\n name: walletName || t(\"common.wallet\"),\n address,\n namespace: currentChain?.namespace,\n }\n : undefined\n }\n externalWallets={externalWallets || []}\n selectedAddress={selectedWalletAddress ?? \"\"}\n onSelect={onSelectWallet}\n onAddExternalWallet={() => setAddWalletOpen(true)}\n />\n )}\n <Box mb={1}>\n <ChainSelect\n chains={tokenChains}\n value={currentChain!}\n onValueChange={props.onChainChange}\n wrongNetwork={props.wrongNetwork}\n loading={settingChain}\n disabled={!props.isLoggedIn}\n />\n </Box>\n <QuantityInput\n classNames={{\n root: \"oui-mt-[2px] oui-rounded-t-sm oui-rounded-b-xl\",\n }}\n token={sourceToken}\n value={props.showQty}\n readOnly\n />\n </TabPanel>\n {internalWithdrawPanel}\n </Tabs>\n <Box mt={2} px={2}>\n <LtvWidget\n showDiff={typeof quantity !== \"undefined\" && Number(quantity) > 0}\n currentLtv={props.currentLTV}\n nextLTV={props.nextLTV}\n />\n </Box>\n <Flex direction=\"column\" mt={1} gapY={1} px={2} itemAlign=\"start\">\n <Text size=\"xs\" intensity={36}>\n {t(\"common.fee\")}\n {withdrawTo === WithdrawTo.Wallet ? \" ≈ \" : \" = \"}\n <Text size=\"xs\" intensity={80}>\n {fee}\n </Text>\n </Text>\n </Flex>\n </Box>\n <WithdrawWarningMessage\n checkIsBridgeless={checkIsBridgeless}\n crossChainTrans={crossChainTrans}\n qtyGreaterThanMaxAmount={qtyGreaterThanMaxAmount}\n message={props.warningMessage}\n />\n <Flex justify=\"center\">\n <WithdrawAction\n checkIsBridgeless={checkIsBridgeless}\n networkId={props.networkId}\n disabled={disabled}\n loading={loading}\n onWithdraw={props.onWithdraw}\n crossChainWithdraw={props.crossChainWithdraw}\n currentChain={currentChain}\n address={address}\n quantity={quantity}\n fee={fee}\n withdrawTo={withdrawTo}\n onTransfer={props.onTransfer}\n />\n </Flex>\n {enableWithdrawToExternalWallet && (\n <AddWalletDialog\n open={addWalletOpen}\n onOpenChange={setAddWalletOpen}\n onConfirm={handleAddExternalWallet}\n chain={currentChain}\n />\n )}\n </Box>\n );\n};\n","import { FC } from \"react\";\nimport {\n useWithdrawFormScript,\n WithdrawFormScriptOptions,\n} from \"./withdrawForm.script\";\nimport { WithdrawForm } from \"./withdrawForm.ui\";\n\nexport type WithdrawFormWidgetProps = WithdrawFormScriptOptions;\n\nexport const WithdrawFormWidget: FC<WithdrawFormWidgetProps> = (props) => {\n const state = useWithdrawFormScript(props);\n return <WithdrawForm {...state} />;\n};\n","import { ExtensionPositionEnum, ExtensionSlot } from \"@orderly.network/ui\";\nimport { DepositFormWidget } from \"../depositForm\";\nimport { DepositFormWidgetProps } from \"../depositForm/depositForm.widget\";\n\nexport const DepositSlot = (props: DepositFormWidgetProps) => {\n return (\n <ExtensionSlot\n position={ExtensionPositionEnum.DepositForm}\n defaultWidget={DepositFormWidget}\n {...props}\n />\n );\n};\n","import { ExtensionPositionEnum, ExtensionSlot } from \"@orderly.network/ui\";\nimport { WithdrawFormWidget } from \"../withdrawForm\";\nimport { WithdrawFormWidgetProps } from \"../withdrawForm/withdrawForm.widget\";\n\nexport const WithdrawSlot = (props: WithdrawFormWidgetProps) => {\n return (\n <ExtensionSlot\n position={ExtensionPositionEnum.WithdrawForm}\n defaultWidget={WithdrawFormWidget}\n {...props}\n />\n );\n};\n","import { FC, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n ArrowDownSquareFillIcon,\n ArrowUpSquareFillIcon,\n registerSimpleDialog,\n registerSimpleSheet,\n TabPanel,\n Tabs,\n} from \"@orderly.network/ui\";\nimport { DepositSlot } from \"./depositSlot\";\nimport { WithdrawSlot } from \"./withdrawSlot\";\n\nexport const DepositAndWithdrawWithDialogId = \"DepositAndWithdrawWithDialogId\";\nexport const DepositAndWithdrawWithSheetId = \"DepositAndWithdrawWithSheetId\";\n\nexport type DepositAndWithdrawProps = {\n activeTab?: \"deposit\" | \"withdraw\";\n close?: () => void;\n};\n\nexport const DepositAndWithdraw: FC<DepositAndWithdrawProps> = (props) => {\n const [activeTab, setActiveTab] = useState<string>(\n props.activeTab || \"deposit\",\n );\n const { t } = useTranslation();\n\n return (\n <Tabs\n value={activeTab}\n onValueChange={setActiveTab}\n variant=\"contained\"\n size=\"lg\"\n classNames={{\n tabsList: \"oui-px-0\",\n tabsContent: \"oui-pt-5\",\n }}\n >\n <TabPanel\n title={t(\"common.deposit\")}\n icon={<ArrowDownSquareFillIcon />}\n value=\"deposit\"\n >\n <DepositSlot close={props.close} />\n {/* <DepositFormWidget close={props.close} /> */}\n </TabPanel>\n <TabPanel\n title={t(\"common.withdraw\")}\n icon={<ArrowUpSquareFillIcon />}\n value=\"withdraw\"\n >\n <WithdrawSlot close={props.close} />\n {/* <WithdrawFormWidget close={props.close} /> */}\n </TabPanel>\n </Tabs>\n );\n};\n\nregisterSimpleDialog(DepositAndWithdrawWithDialogId, DepositAndWithdraw, {\n size: \"md\",\n classNames: {\n content: \"oui-border oui-border-line-6\",\n },\n});\n\nregisterSimpleSheet(DepositAndWithdrawWithSheetId, DepositAndWithdraw);\n","import { FC } from \"react\";\nimport { Box, Flex, textVariants } from \"@orderly.network/ui\";\nimport { ActionButton } from \"../../actionButton\";\nimport { AvailableQuantity } from \"../../availableQuantity\";\nimport { BrokerWallet } from \"../../brokerWallet\";\nimport { ChainSelect } from \"../../chainSelect\";\nimport { ExchangeDivider } from \"../../exchangeDivider\";\nimport { QuantityInput } from \"../../quantityInput\";\nimport { Slippage } from \"../../slippage\";\nimport { SwapCoin } from \"../../swapCoin\";\nimport { Web3Wallet } from \"../../web3Wallet\";\nimport { Notice } from \"../components/notice\";\nimport { SwapFee } from \"../components/swapFee\";\nimport { UseSwapDepositFormScriptReturn } from \"./swapDepositForm.script\";\n\nexport const SwapDepositForm: FC<UseSwapDepositFormScriptReturn> = (props) => {\n const {\n token,\n tokens,\n onTokenChange,\n amount,\n quantity,\n maxQuantity,\n swapQuantity,\n onQuantityChange,\n hintMessage,\n inputStatus,\n chains,\n currentChain,\n settingChain,\n onChainChange,\n actionType,\n onDeposit,\n onApprove,\n fetchBalance,\n dst,\n wrongNetwork,\n balanceRevalidating,\n loading,\n disabled,\n networkId,\n slippage,\n onSlippageChange,\n needSwap,\n needCrossSwap,\n swapPrice,\n swapRevalidating,\n warningMessage,\n fee,\n } = props;\n\n return (\n <Box\n id=\"oui-swap-deposit-form\"\n className={textVariants({ weight: \"semibold\" })}\n >\n <Box className=\"oui-mb-6 lg:oui-mb-8\">\n <Web3Wallet />\n\n <Box mt={3} mb={1}>\n <ChainSelect\n chains={chains}\n value={currentChain!}\n onValueChange={onChainChange}\n wrongNetwork={wrongNetwork}\n loading={settingChain}\n />\n <QuantityInput\n classNames={{\n root: \"oui-mt-[2px] oui-rounded-t-sm oui-rounded-b-xl\",\n }}\n value={quantity}\n onValueChange={onQuantityChange}\n tokens={tokens}\n token={token}\n onTokenChange={onTokenChange}\n status={inputStatus}\n hintMessage={hintMessage}\n fetchBalance={fetchBalance}\n data-testid=\"oui-testid-swap-deposit-dialog-quantity-input\"\n />\n </Box>\n\n <AvailableQuantity\n token={token}\n amount={amount}\n maxQuantity={maxQuantity}\n loading={balanceRevalidating}\n onClick={() => {\n onQuantityChange(maxQuantity);\n }}\n />\n <ExchangeDivider />\n\n <BrokerWallet />\n\n <QuantityInput\n readOnly\n token={dst as any}\n value={swapQuantity}\n loading={swapRevalidating}\n classNames={{\n root: \"oui-mt-3 oui-border-transparent focus-within:oui-outline-transparent\",\n }}\n />\n\n <Flex direction=\"column\" itemAlign=\"start\" mt={1} gapY={1}>\n <Flex justify=\"between\" width=\"100%\">\n {/* <SwapCoin token={token as any} dst={dst} price={swapPrice} /> */}\n {/* <SwapCoin\n sourceSymbol={token as any}\n targetSymbol={dst.symbol}\n indexPrice={swapPrice}\n /> */}\n {(needSwap || needCrossSwap) && (\n <Slippage value={slippage} onValueChange={onSlippageChange} />\n )}\n </Flex>\n\n <SwapFee {...fee} />\n </Flex>\n </Box>\n\n <Notice\n message={warningMessage}\n needSwap={needSwap}\n needCrossSwap={needCrossSwap}\n wrongNetwork={wrongNetwork}\n networkId={networkId}\n />\n\n <Flex justify=\"center\">\n <ActionButton\n actionType={actionType}\n symbol={token?.symbol}\n disabled={disabled}\n loading={loading}\n onDeposit={onDeposit}\n onApprove={onApprove}\n networkId={networkId}\n />\n </Flex>\n </Box>\n );\n};\n","import { useCallback, useEffect, useState } from \"react\";\nimport { API } from \"@orderly.network/types\";\nimport { getTokenByTokenList } from \"../../../utils\";\nimport { CurrentChain } from \"../../depositForm/hooks/useChainSelect\";\n\ntype Options = {\n currentChain: CurrentChain | null;\n tokensFilter?: (chainInfo: API.Chain) => API.TokenInfo[];\n};\n\nexport function useToken(options: Options) {\n const { currentChain, tokensFilter } = options;\n const [token, setToken] = useState<API.TokenInfo>();\n const [tokens, setTokens] = useState<API.TokenInfo[]>([]);\n\n // when chain changed and chain data ready then call this function\n const onChainInited = useCallback(\n (chainInfo?: API.Chain) => {\n if (chainInfo && chainInfo?.token_infos?.length > 0) {\n const tokens =\n typeof tokensFilter === \"function\"\n ? tokensFilter(chainInfo)\n : chainInfo.token_infos;\n\n setTokens(tokens);\n\n const newToken = getTokenByTokenList(tokens);\n\n if (!newToken) return;\n\n setToken(newToken);\n }\n },\n [tokensFilter],\n );\n\n useEffect(() => {\n onChainInited(currentChain?.info);\n // if settingChain is true, the currentChain will change, so use currentChain.id\n }, [currentChain?.id, onChainInited]);\n\n return { token, tokens, onTokenChange: setToken };\n}\n","import { useCallback, useEffect, useMemo } from \"react\";\nimport { useConfig, useDeposit, useLocalStorage } from \"@orderly.network/hooks\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { API, NetworkId } from \"@orderly.network/types\";\nimport { modal } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport {\n useActionType,\n useChainSelect,\n useDepositAction,\n useInputStatus,\n} from \"../../depositForm/hooks\";\nimport { SwapDialog } from \"../components/swapDialog\";\nimport { useNeedSwapAndCross } from \"../hooks/useNeedSwapAndCross\";\nimport { useSwapEnquiry } from \"../hooks/useSwapEnquiry\";\nimport { useSwapFee } from \"../hooks/useSwapFee\";\nimport { useToken } from \"../hooks/useToken\";\nimport { SwapMode } from \"../types\";\n\nexport type UseSwapDepositFormScriptReturn = ReturnType<\n typeof useSwapDepositFormScript\n>;\n\nexport type UseSwapDepositFormScriptOptions = {\n onClose?: () => void;\n};\n\nexport const useSwapDepositFormScript = (\n options: UseSwapDepositFormScriptOptions,\n) => {\n const [slippage, setSlippage] = useLocalStorage(\n \"orderly_swap_deposit_slippage\",\n 1,\n );\n\n const config = useConfig();\n const brokerName = config.get(\"brokerName\") || \"\";\n const networkId = config.get(\"networkId\") as NetworkId;\n\n const { wrongNetwork } = useAppContext();\n\n const { chains, currentChain, settingChain, onChainChange } =\n useChainSelect();\n\n const tokensFilter = useCallback((chainInfo: API.Chain) => {\n return (\n chainInfo.token_infos.filter((token) => {\n if (chainInfo.network_infos.bridgeless && token.symbol === \"USDC\") {\n return true;\n }\n return !!(token as API.TokenInfo).swap_enable;\n }) ?? []\n );\n }, []);\n\n const { token, tokens, onTokenChange } = useToken({\n currentChain,\n tokensFilter,\n });\n\n const {\n dst,\n balance,\n allowance,\n depositFeeRevalidating,\n depositFee,\n quantity,\n setQuantity,\n approve,\n deposit,\n isNativeToken,\n balanceRevalidating,\n fetchBalance,\n } = useDeposit({\n address: token?.address,\n decimals: token?.decimals,\n srcChainId: currentChain?.id,\n srcToken: token?.symbol,\n crossChainRouteAddress: (\n currentChain?.info?.network_infos as API.NetworkInfos\n )?.cross_chain_router,\n depositorAddress: (currentChain?.info?.network_infos as API.NetworkInfos)\n ?.depositor,\n });\n\n const maxQuantity = useMemo(\n () =>\n new Decimal(balance || 0)\n .todp(token?.precision ?? 2, Decimal.ROUND_DOWN)\n .toString(),\n [balance, token],\n );\n\n const { inputStatus, hintMessage } = useInputStatus({\n quantity,\n maxQuantity,\n });\n\n const { needSwap, needCrossSwap } = useNeedSwapAndCross({\n srcToken: token,\n srcChainId: currentChain?.id,\n dstChainId: dst?.chainId,\n });\n\n const {\n enquiry,\n transactionInfo,\n amount: swapAmount,\n querying: swapRevalidating,\n warningMessage,\n cleanTransactionInfo,\n } = useSwapEnquiry({\n quantity,\n dst,\n queryParams: {\n network: dst.network,\n srcToken: token?.address,\n srcNetwork: currentChain?.info?.network_infos?.shortName,\n dstToken: dst.address,\n crossChainRouteAddress: (\n currentChain?.info?.network_infos as API.NetworkInfos\n )?.cross_chain_router,\n amount: new Decimal(quantity || 0)\n .mul(10 ** (token?.decimals || 0))\n .toString(),\n slippage,\n },\n needSwap,\n needCrossSwap,\n });\n\n const cleanData = () => {\n cleanTransactionInfo();\n setQuantity(\"\");\n };\n\n const onSuccess = useCallback(() => {\n cleanData();\n options.onClose?.();\n }, [options.onClose]);\n\n const onSwapDeposit = useCallback(async () => {\n // const _params = getSwapTestData(needCrossSwap);\n // return modal.show(SwapDialog, _params);\n\n return enquiry()\n .then((transaction) => {\n const amountValue = needCrossSwap\n ? transaction.route_infos?.dst.amounts[1]\n : transaction.route_infos?.amounts[1];\n\n const params = {\n mode: needCrossSwap ? SwapMode.Cross : SwapMode.Single,\n src: {\n chain: currentChain?.id,\n token: token!.symbol,\n // swap precision\n displayDecimals: token?.precision,\n amount: quantity,\n decimals: token!.decimals,\n },\n dst: {\n chain: dst.chainId,\n token: dst.symbol,\n displayDecimals: 2,\n amount: new Decimal(amountValue)\n .div(Math.pow(10, dst.decimals!))\n .toString(),\n decimals: dst.decimals,\n },\n chain: currentChain?.info?.network_infos,\n nativeToken: currentChain?.info?.nativeToken,\n depositFee,\n transactionData: transaction,\n slippage,\n brokerName,\n };\n\n return modal.show(SwapDialog, params);\n })\n .then((isSuccss) => {\n if (isSuccss) {\n cleanData();\n }\n })\n .catch((error) => {\n // toast.error(error?.message || \"Error\");\n });\n }, [quantity, needCrossSwap, dst, currentChain, slippage, depositFee]);\n\n const { submitting, onApprove, onDeposit } = useDepositAction({\n quantity,\n allowance,\n approve,\n deposit,\n enableCustomDeposit: needSwap || needCrossSwap,\n customDeposit: onSwapDeposit,\n onSuccess,\n });\n\n const loading = submitting || depositFeeRevalidating! || swapRevalidating;\n\n const disabled =\n !quantity ||\n Number(quantity) === 0 ||\n inputStatus === \"error\" ||\n depositFeeRevalidating! ||\n swapRevalidating;\n\n const swapPrice = useMemo(() => {\n if (needCrossSwap || needSwap) {\n return transactionInfo.price;\n }\n return 1;\n }, [transactionInfo]);\n\n const markPrice = useMemo(() => {\n if (needCrossSwap || needSwap) {\n return isNativeToken\n ? transactionInfo.markPrices.native_token\n : transactionInfo.markPrices.from_token;\n }\n\n return 1;\n }, [needSwap, needCrossSwap, isNativeToken, transactionInfo]);\n\n const amount = useMemo(() => {\n return new Decimal(quantity || 0).mul(markPrice).toNumber();\n }, [quantity, markPrice]);\n\n const swapQuantity = needSwap || needCrossSwap ? swapAmount : quantity;\n\n const actionType = useActionType({\n isNativeToken,\n allowance,\n quantity,\n maxQuantity,\n });\n\n const fee = useSwapFee({\n nativeToken: currentChain?.info?.nativeToken,\n isNativeToken,\n src: token,\n depositFee,\n transactionInfo,\n needSwap,\n needCrossSwap,\n });\n\n useEffect(() => {\n cleanData();\n }, [token, currentChain?.id]);\n\n return {\n token,\n tokens,\n onTokenChange,\n amount,\n quantity,\n maxQuantity,\n swapQuantity,\n onQuantityChange: setQuantity,\n hintMessage,\n inputStatus,\n chains,\n currentChain,\n settingChain,\n onChainChange,\n actionType,\n onDeposit,\n onApprove,\n fetchBalance,\n dst,\n wrongNetwork,\n balanceRevalidating,\n loading,\n disabled,\n networkId,\n slippage,\n onSlippageChange: setSlippage,\n needSwap,\n needCrossSwap,\n swapPrice,\n swapRevalidating,\n warningMessage,\n fee,\n };\n};\n","import { FC } from \"react\";\nimport {\n useSwapDepositFormScript,\n UseSwapDepositFormScriptOptions,\n} from \"./swapDepositForm.script\";\nimport { SwapDepositForm } from \"./swapDepositForm.ui\";\n\nexport type SwapDepositFormWidgetProps = UseSwapDepositFormScriptOptions;\n\nexport const SwapDepositFormWidget: FC<SwapDepositFormWidgetProps> = (\n props,\n) => {\n const state = useSwapDepositFormScript(props);\n return <SwapDepositForm {...state} />;\n};\n","import { useState } from \"react\";\nimport { SubAccount } from \"@orderly.network/hooks\";\nimport {\n Box,\n DropdownMenuContent,\n DropdownMenuPortal,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n Flex,\n ScrollArea,\n Text,\n cn,\n} from \"@orderly.network/ui\";\nimport { ExchangeIcon } from \"../../icons\";\n\ntype AccountSelectProps = {\n subAccounts?: SubAccount[];\n value?: SubAccount;\n onValueChange?: (subAccount: SubAccount) => void;\n};\n\nexport const AccountSelect: React.FC<AccountSelectProps> = (props) => {\n const { subAccounts = [], value } = props;\n const [open, setOpen] = useState(false);\n\n const selectable = subAccounts.length > 1;\n\n const trigger = (\n <Flex\n intensity={500}\n className={cn(\n \"oui-rounded-b-sm oui-rounded-t-xl oui-border oui-border-line\",\n selectable ? \"oui-cursor-pointer\" : \"oui-cursor-auto oui-bg-base-6\",\n )}\n height={54}\n px={3}\n justify=\"between\"\n itemAlign=\"center\"\n >\n <Flex direction=\"column\" itemAlign=\"start\">\n <Text.formatted\n size=\"xs\"\n intensity={80}\n rule={value?.description ? undefined : \"address\"}\n >\n {value?.description || value?.id}\n </Text.formatted>\n <Text intensity={36} size=\"2xs\">\n {`ID: `}\n <Text.formatted rule=\"address\">{value?.id}</Text.formatted>\n </Text>\n </Flex>\n {selectable && <ExchangeIcon className=\"oui-text-base-contrast-54\" />}\n </Flex>\n );\n\n const content = subAccounts.map((subAccount, index) => {\n const isActive = subAccount.id === value?.id;\n\n const asset = subAccount?.holding?.find(\n (item) => item.token === \"USDC\",\n )?.holding;\n\n return (\n <Flex\n key={subAccount.id}\n px={2}\n r=\"base\"\n justify=\"between\"\n className={cn(\n \"oui-transfer-form-account-select-item\",\n \"oui-cursor-pointer oui-py-[6px] hover:oui-bg-base-5\",\n isActive && \"oui-bg-base-5\",\n index !== 0 && \"oui-mt-[2px]\",\n )}\n onClick={async () => {\n setOpen(false);\n props.onValueChange?.(subAccount);\n }}\n >\n <Flex gapX={1} itemAlign=\"center\">\n <Flex direction=\"column\" itemAlign=\"start\" className=\"oui-text-2xs\">\n <Text.formatted\n rule={subAccount?.description ? undefined : \"address\"}\n intensity={80}\n >\n {subAccount?.description || subAccount?.id}\n </Text.formatted>\n <Text intensity={36} size=\"2xs\">\n {`ID: `}\n <Text.formatted rule=\"address\">{subAccount?.id}</Text.formatted>\n </Text>\n </Flex>\n </Flex>\n <Flex gapX={3}>\n <Text.numeral size=\"2xs\" intensity={54} unit=\" USDC\">\n {asset || 0}\n </Text.numeral>\n {isActive && (\n <Box\n width={4}\n height={4}\n r=\"full\"\n className=\"oui-transfer-form-account-select-active-dot oui-bg-[linear-gradient(270deg,#59B0FE_0%,#26FEFE_100%)]\"\n />\n )}\n </Flex>\n </Flex>\n );\n });\n\n return (\n <DropdownMenuRoot open={selectable ? open : false} onOpenChange={setOpen}>\n <DropdownMenuTrigger asChild>{trigger}</DropdownMenuTrigger>\n <DropdownMenuPortal>\n <DropdownMenuContent\n onCloseAutoFocus={(e) => e.preventDefault()}\n align=\"start\"\n sideOffset={2}\n className={cn(\n \"oui-transfer-form-account-select-dropdown-menu-content\",\n \"oui-font-semibold\",\n \"oui-bg-base-8 oui-p-1\",\n \"oui-w-[var(--radix-dropdown-menu-trigger-width)]\",\n \"oui-select-none oui-rounded-md\",\n )}\n >\n <ScrollArea>\n <div className=\"oui-max-h-[254px]\">{content} </div>\n </ScrollArea>\n </DropdownMenuContent>\n </DropdownMenuPortal>\n </DropdownMenuRoot>\n );\n};\n","import { FC } from \"react\";\nimport { Trans, useTranslation } from \"@orderly.network/i18n\";\nimport { Box, Button, Flex, textVariants, Text, cn } from \"@orderly.network/ui\";\nimport { AuthGuard } from \"@orderly.network/ui-connector\";\nimport { TransferVerticalIcon } from \"../../icons\";\nimport { AccountSelect } from \"../accountSelect\";\nimport { AvailableQuantity } from \"../availableQuantity\";\nimport { ExchangeDivider } from \"../exchangeDivider\";\nimport { QuantityInput } from \"../quantityInput\";\nimport { UnsettlePnlInfo } from \"../unsettlePnlInfo\";\nimport { TransferFormScriptReturn } from \"./transferForm.script\";\n\nexport type TransferFormProps = TransferFormScriptReturn;\n\nexport const TransferForm: FC<TransferFormProps> = (props) => {\n const {\n networkId,\n disabled,\n onTransfer,\n quantity,\n onQuantityChange,\n amount,\n tokens,\n token,\n onTokenChange,\n maxQuantity,\n submitting,\n hintMessage,\n inputStatus,\n hasPositions,\n onSettlePnl,\n unsettledPnL,\n toAccountAsset,\n fromAccounts,\n toAccounts,\n fromAccount,\n onFromAccountChange,\n toAccount,\n onToAccountChange,\n onExchange,\n } = props;\n\n const { t } = useTranslation();\n\n const buttonSize = { initial: \"md\", lg: \"lg\" } as const;\n\n return (\n <Box id=\"oui-deposit-form\" className={textVariants({ weight: \"semibold\" })}>\n <Box className=\"oui-mb-6 lg:oui-mb-8\">\n <Text size=\"sm\" intensity={98}>\n {t(\"transfer.internalTransfer.from\")}\n </Text>\n <Box mt={1} mb={1}>\n <AccountSelect\n subAccounts={fromAccounts}\n value={fromAccount}\n onValueChange={onFromAccountChange}\n />\n <QuantityInput\n classNames={{\n root: \"oui-mt-[2px] oui-rounded-t-sm oui-rounded-b-xl\",\n }}\n value={quantity}\n onValueChange={onQuantityChange}\n tokens={tokens}\n token={token}\n onTokenChange={onTokenChange}\n hintMessage={hintMessage}\n status={inputStatus}\n />\n </Box>\n <AvailableQuantity\n token={token}\n amount={amount}\n maxQuantity={maxQuantity}\n onClick={() => {\n onQuantityChange(maxQuantity.toString());\n }}\n />\n <Box mx={2} mt={1}>\n <UnsettlePnlInfo\n unsettledPnl={unsettledPnL}\n hasPositions={hasPositions}\n onSettlePnl={onSettlePnl}\n tooltipContent={t(\"transfer.internalTransfer.unsettled.tooltip\")}\n dialogContent={\n // @ts-ignore\n <Trans i18nKey=\"transfer.internalTransfer.settlePnl.description\" />\n }\n />\n </Box>\n\n <ExchangeDivider\n icon={\n <TransferVerticalIcon\n // TODO: determines if the current orderly key is the main account\n // className={cn(\n // isMainAccount\n // ? \"oui-cursor-pointer oui-text-primary\"\n // : \" oui-cursor-not-allowed oui-text-base-contrast-20\",\n // )}\n // onClick={isMainAccount ? onExchange : undefined}\n className=\"oui-cursor-pointer oui-text-primary\"\n onClick={onExchange}\n />\n }\n />\n\n <Text size=\"sm\" intensity={98}>\n {t(\"transfer.internalTransfer.to\")}\n </Text>\n <Box mt={1}>\n <AccountSelect\n subAccounts={toAccounts}\n value={toAccount}\n onValueChange={onToAccountChange}\n />\n <Flex\n className={cn(\n \"oui-mt-[2px] oui-h-[31px] oui-text-base-contrast-54\",\n \"oui-rounded-b-xl oui-rounded-t-sm\",\n )}\n justify=\"between\"\n itemAlign=\"center\"\n px={3}\n intensity={600}\n >\n <Text size=\"2xs\">\n {t(\"transfer.internalTransfer.currentAssetValue\")}\n </Text>\n <Text.numeral\n size=\"2xs\"\n intensity={54}\n unit={` ${token.symbol}`}\n dp={token?.precision}\n padding={false}\n >\n {toAccountAsset}\n </Text.numeral>\n </Flex>\n </Box>\n </Box>\n\n <Flex justify=\"center\">\n <Box className=\"oui-w-full lg:oui-w-auto lg:oui-min-w-[184px]\">\n <AuthGuard\n networkId={networkId}\n buttonProps={{\n fullWidth: true,\n size: buttonSize,\n }}\n >\n <Button\n fullWidth\n disabled={disabled}\n loading={submitting}\n size={buttonSize}\n onClick={onTransfer}\n >\n {t(\"common.transfer\")}\n </Button>\n </AuthGuard>\n </Box>\n </Flex>\n </Box>\n );\n};\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport {\n SubAccount,\n useAccount,\n useConfig,\n useSubAccountDataObserver,\n useSubAccountMaxWithdrawal,\n useTransfer,\n} from \"@orderly.network/hooks\";\nimport { useAppStore } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API, NetworkId } from \"@orderly.network/types\";\nimport { toast } from \"@orderly.network/ui\";\nimport { Decimal, zero } from \"@orderly.network/utils\";\nimport { InputStatus } from \"../../types\";\nimport { getTransferErrorMessage } from \"../../utils\";\nimport { useSettlePnl } from \"../unsettlePnlInfo/useSettlePnl\";\n\nexport type TransferFormScriptReturn = ReturnType<typeof useTransferFormScript>;\n\nexport type TransferFormScriptOptions = {\n /** target sub account id */\n toAccountId?: string;\n token?: string;\n close?: () => void;\n};\n\nconst DEFAULT_TOKEN = {\n symbol: \"USDC\",\n} as API.TokenInfo;\n\nexport const useTransferFormScript = (options: TransferFormScriptOptions) => {\n const { t } = useTranslation();\n const [quantity, setQuantity] = useState<string>(\"\");\n const [fromAccount, setFromAccount] = useState<SubAccount>();\n const [toAccount, setToAccount] = useState<SubAccount>();\n const [mainAccount, setMainAccount] = useState<SubAccount>();\n const [tokens, setTokens] = useState<API.TokenInfo[]>([DEFAULT_TOKEN]);\n const [token, setToken] = useState<API.TokenInfo>(DEFAULT_TOKEN);\n const [holdingMap, setHoldingMap] = useState<Record<string, API.Holding[]>>(\n {},\n );\n\n const networkId = useConfig(\"networkId\") as NetworkId;\n\n const { state, isMainAccount, subAccount } = useAccount();\n\n const tokensInfo = useAppStore((state) => state.tokensInfo);\n\n const {\n transfer,\n submitting,\n maxAmount: currentMaxAmount,\n unsettledPnL: currentUnsettledPnL,\n } = useTransfer({ fromAccountId: fromAccount?.id, token: token.symbol });\n\n const subAccounts = state.subAccounts;\n const mainAccountId = state.mainAccountId;\n const accountId = state.accountId;\n\n // when current account is main account, and fromAccount is not main account, set observerAccountId to fromAccountId\n // current sub account use main account orderly key to transfer, so fromAccount can be main account or current sub account\n const observerAccountId = isMainAccount\n ? fromAccount?.id !== mainAccountId\n ? fromAccount?.id\n : undefined\n : fromAccount?.id;\n\n const { hasPositions: currentHasPositions, onSettlePnl } = useSettlePnl({\n accountId: fromAccount?.id,\n });\n\n // when select sub account, open the private websocket\n const { portfolio, positions } = useSubAccountDataObserver(observerAccountId);\n const subAccountMaxAmount = useSubAccountMaxWithdrawal({\n token: token.symbol,\n unsettledPnL: portfolio?.unsettledPnL,\n freeCollateral: portfolio?.freeCollateral ?? zero,\n holdings: portfolio?.holding,\n });\n\n const formHasPositions = useMemo(\n () => !!positions?.rows?.length,\n [positions],\n );\n\n const hasPositions = useMemo(() => {\n return observerAccountId ? formHasPositions : currentHasPositions;\n }, [observerAccountId, formHasPositions, currentHasPositions]);\n\n const { unsettledPnL, maxQuantity } = useMemo(() => {\n if (observerAccountId) {\n return {\n unsettledPnL: portfolio?.unsettledPnL,\n maxQuantity: subAccountMaxAmount,\n };\n }\n return {\n unsettledPnL: currentUnsettledPnL,\n maxQuantity: currentMaxAmount,\n };\n }, [\n observerAccountId,\n currentUnsettledPnL,\n currentMaxAmount,\n portfolio?.unsettledPnL,\n subAccountMaxAmount,\n ]);\n\n const { inputStatus, hintMessage } = useInputStatus({\n quantity,\n maxQuantity,\n unsettledPnL,\n });\n\n const onTransfer = useCallback(() => {\n const num = Number(quantity);\n\n if (isNaN(num) || num <= 0) {\n toast.error(t(\"transfer.quantity.invalid\"));\n return;\n }\n\n if (submitting || !toAccount) return;\n\n transfer(token.symbol!, {\n account_id: toAccount.id,\n amount: new Decimal(quantity).toNumber(),\n })\n .then(() => {\n toast.success(t(\"transfer.internalTransfer.success\"));\n setQuantity(\"\");\n options.close?.();\n })\n .catch((err) => {\n console.error(\"transfer error: \", err);\n const errorMsg = getTransferErrorMessage(err.code);\n toast.error(errorMsg);\n });\n }, [t, token, quantity, submitting, transfer, toAccount]);\n\n const disabled = submitting || !quantity || inputStatus === \"error\";\n\n const amount = useMemo(() => {\n const markPrice = 1;\n return new Decimal(quantity || 0).mul(markPrice).toNumber();\n }, [quantity]);\n\n const toAccountAsset = useMemo(() => {\n if (!toAccount?.id) {\n return 0;\n }\n const holdings = holdingMap[toAccount.id];\n const asset = holdings?.find((item) => item.token === token.symbol);\n return asset?.holding || 0;\n }, [toAccount, token, holdingMap]);\n\n const { fromAccounts, toAccounts } = useMemo(() => {\n if (isMainAccount) {\n return {\n fromAccounts: mainAccount ? [mainAccount, ...(subAccounts || [])] : [],\n toAccounts:\n // only from account is main account, can transfer to other sub accounts\n fromAccount?.id === mainAccountId ? subAccounts : [],\n };\n }\n\n return {\n fromAccounts: [],\n toAccounts: [],\n };\n }, [isMainAccount, mainAccountId, mainAccount, subAccounts, fromAccount]);\n\n // init and update main account holding\n useEffect(() => {\n if (!mainAccountId) return;\n\n const _mainAccount = {\n id: mainAccountId!,\n description: t(\"common.mainAccount\"),\n holding: [],\n };\n\n setMainAccount(_mainAccount);\n\n subAccount.refresh().then((res) => {\n setHoldingMap(res);\n setMainAccount({\n ..._mainAccount,\n holding: res[mainAccountId],\n });\n });\n }, [t, mainAccountId]);\n\n // init fromAccount\n useEffect(() => {\n // if current account is main account, set fromAccount to main account\n // if current account is sub account, set fromAccount to current sub account\n setFromAccount(\n isMainAccount\n ? mainAccount\n : subAccounts?.find((item) => item.id === accountId),\n );\n }, [isMainAccount, mainAccount, subAccounts, accountId]);\n\n // init toAccount\n useEffect(() => {\n // if current account is main account\n if (isMainAccount) {\n const firstSubAccount = subAccounts?.[0];\n\n // if toAccount is not set, set toAccount to first sub account\n const selectAccount = options.toAccountId\n ? subAccounts?.find((item) => item.id === options.toAccountId) ||\n firstSubAccount\n : firstSubAccount;\n\n if (selectAccount) {\n setToAccount(selectAccount);\n }\n } else {\n // if current account is sub account, set toAccount to main account\n setToAccount(mainAccount);\n }\n }, [options?.toAccountId, isMainAccount, mainAccount, subAccounts]);\n\n useEffect(() => {\n const tokens = tokensInfo?.map((item) => ({\n symbol: item.token,\n precision: item.decimals,\n })) as API.TokenInfo[];\n\n if (tokens?.length) {\n // sort tokens, USDC should be the first\n tokens.sort((a, b) => {\n if (a.symbol === \"USDC\") return -1;\n if (b.symbol === \"USDC\") return 1;\n return 0;\n });\n\n const targetToken = tokens?.find((item) => item.symbol === options.token);\n\n setTokens(tokens);\n setToken(targetToken || tokens?.[0] || DEFAULT_TOKEN);\n }\n }, [tokensInfo, options.token]);\n\n const onFromAccountChange = useCallback(\n (account: SubAccount) => {\n setFromAccount(account);\n\n const firstSubAccount = subAccounts?.[0];\n // if fromAccount is main account, set toAccount to first sub account\n if (account?.id === mainAccountId) {\n setToAccount(firstSubAccount);\n return;\n }\n\n // if fromAccount is not main account, set toAccount to main account\n // sub account only can transfer to main account\n if (account?.id && account?.id !== mainAccountId) {\n setToAccount(mainAccount);\n return;\n }\n },\n [mainAccountId, mainAccount, subAccounts],\n );\n\n const onToAccountChange = useCallback((account: SubAccount) => {\n setToAccount(account);\n }, []);\n\n const onExchange = useCallback(() => {\n setFromAccount(toAccount);\n setToAccount(fromAccount);\n }, [fromAccount, toAccount]);\n\n return {\n networkId,\n onTransfer,\n quantity,\n amount,\n onQuantityChange: setQuantity,\n maxQuantity,\n tokens,\n token,\n onTokenChange: setToken,\n disabled,\n submitting,\n hintMessage,\n inputStatus,\n hasPositions,\n onSettlePnl,\n unsettledPnL,\n toAccountAsset,\n fromAccount,\n toAccount,\n fromAccounts,\n onFromAccountChange,\n toAccounts,\n onToAccountChange,\n onExchange,\n isMainAccount,\n };\n};\n\ntype Options = {\n quantity: string;\n maxQuantity: string | number;\n unsettledPnL?: number;\n};\n\nexport function useInputStatus(options: Options) {\n const { quantity, maxQuantity, unsettledPnL = 0 } = options;\n const { t } = useTranslation();\n\n const [inputStatus, setInputStatus] = useState<InputStatus>(\"default\");\n const [hintMessage, setHintMessage] = useState<string>();\n\n useEffect(() => {\n if (!quantity) {\n // reset input status when value is empty\n setInputStatus(\"default\");\n setHintMessage(\"\");\n return;\n }\n\n const qty = new Decimal(quantity);\n\n if (unsettledPnL < 0) {\n if (qty.gt(maxQuantity)) {\n setInputStatus(\"error\");\n setHintMessage(t(\"transfer.insufficientBalance\"));\n } else {\n setInputStatus(\"default\");\n setHintMessage(\"\");\n }\n } else {\n if (qty.gt(maxQuantity)) {\n setInputStatus(\"error\");\n setHintMessage(t(\"transfer.insufficientBalance\"));\n } else if (\n qty.gt(new Decimal(maxQuantity).minus(unsettledPnL)) &&\n qty.lessThanOrEqualTo(maxQuantity)\n ) {\n setInputStatus(\"warning\");\n setHintMessage(t(\"settle.settlePnl.warning\"));\n } else {\n // reset input status\n setInputStatus(\"default\");\n setHintMessage(\"\");\n }\n }\n }, [quantity, maxQuantity]);\n\n return { inputStatus, hintMessage };\n}\n","import { FC } from \"react\";\nimport { i18n } from \"@orderly.network/i18n\";\nimport { registerSimpleDialog } from \"@orderly.network/ui\";\nimport { registerSimpleSheet } from \"@orderly.network/ui\";\nimport {\n TransferFormScriptOptions,\n useTransferFormScript,\n} from \"./transferForm.script\";\nimport { TransferForm } from \"./transferForm.ui\";\n\nexport const TransferDialogId = \"TransferDialogId\";\nexport const TransferSheetId = \"TransferSheetId\";\n\nexport type TransferFormWidgetProps = TransferFormScriptOptions;\n\nexport const TransferFormWidget = (props: TransferFormWidgetProps) => {\n const state = useTransferFormScript({\n toAccountId: props.toAccountId,\n token: props.token,\n close: props.close,\n });\n return <TransferForm {...state} />;\n};\n\nexport const TransferWidget: FC<TransferFormWidgetProps> = (props) => {\n return (\n <TransferFormWidget\n close={props.close}\n toAccountId={props.toAccountId}\n token={props.token}\n />\n );\n};\n\nregisterSimpleDialog(TransferDialogId, TransferWidget, {\n size: \"md\",\n classNames: {\n content: \"oui-border oui-border-line-6\",\n },\n title: () => i18n.t(\"common.transfer\"),\n});\n\nregisterSimpleSheet(TransferSheetId, TransferWidget, {\n title: () => i18n.t(\"common.transfer\"),\n});\n","import React from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { AccountStatusEnum, NetworkId } from \"@orderly.network/types\";\nimport { Box, Button } from \"@orderly.network/ui\";\nimport { AuthGuard } from \"@orderly.network/ui-connector\";\n\nexport interface ConvertActionButtonProps {\n disabled?: boolean;\n loading?: boolean;\n symbol?: string;\n networkId?: NetworkId;\n onConvert?: React.MouseEventHandler<HTMLButtonElement>;\n}\n\nexport const ConvertAction: React.FC<ConvertActionButtonProps> = (props) => {\n const { disabled, loading, networkId, onConvert } = props;\n const { t } = useTranslation();\n return (\n <Box className=\"oui-w-full lg:oui-w-auto lg:oui-min-w-[184px]\">\n <AuthGuard\n status={AccountStatusEnum.EnableTrading}\n networkId={networkId}\n buttonProps={{ fullWidth: true, size: { initial: \"md\", lg: \"lg\" } }}\n >\n <Button\n fullWidth\n disabled={disabled}\n loading={loading}\n size={{ initial: \"md\", lg: \"lg\" }}\n onClick={onConvert}\n >\n {t(\"transfer.convert\")}\n </Button>\n </AuthGuard>\n </Box>\n );\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { useTokensInfo } from \"@orderly.network/hooks\";\nimport { Arbitrum, type API } from \"@orderly.network/types\";\n\nconst splitTokenBySymbol = <T extends API.Chain>(items: T[]) => {\n return items.reduce<Record<\"usdc\" | \"others\", T[]>>(\n (result, item) => {\n if (item.token?.toUpperCase() === \"USDC\") {\n result.usdc.push(item);\n } else {\n result.others.push(item);\n }\n return result;\n },\n { usdc: [], others: [] },\n );\n};\n\nconst findChainInfo = (tokenInfo: API.Chain) => {\n const arbitrumChainInfo = tokenInfo.chain_details.find(\n (item) => parseInt(item.chain_id) === Arbitrum.id,\n );\n\n const nativeTokenChainInfo = tokenInfo.chain_details.find(\n (item) => !item.contract_address,\n );\n\n const nativeTokenAddress = \"0x0000000000000000000000000000000000000000\";\n\n if (arbitrumChainInfo) {\n return {\n contract_address:\n arbitrumChainInfo.contract_address || nativeTokenAddress,\n quoteChainId: arbitrumChainInfo.chain_id,\n decimals: arbitrumChainInfo.decimals,\n };\n }\n\n if (nativeTokenChainInfo) {\n return {\n contract_address: nativeTokenAddress,\n quoteChainId: nativeTokenChainInfo.chain_id,\n decimals: nativeTokenChainInfo.decimals,\n };\n }\n\n return {\n contract_address: tokenInfo.chain_details[0]?.contract_address,\n quoteChainId: tokenInfo.chain_details[0]?.chain_id,\n decimals: tokenInfo.chain_details[0]?.decimals,\n };\n};\n\ninterface Options {\n defaultValue?: string;\n}\n\ntype ConvertTokenInfo = API.Chain & {\n contract_address: string;\n quoteChainId: string;\n precision: number;\n};\n\nexport const useToken = (options: Options) => {\n const { defaultValue } = options;\n\n const [sourceToken, setSourceToken] = useState<ConvertTokenInfo>();\n const [targetToken, setTargetToken] = useState<ConvertTokenInfo>();\n const [sourceTokens, setSourceTokens] = useState<ConvertTokenInfo[]>([]);\n\n const tokensInfo = useTokensInfo();\n\n const newTokensInfo = useMemo(() => {\n const filteredTokensInfo = tokensInfo.filter((item) => item.on_chain_swap);\n\n return filteredTokensInfo.map((item) => {\n const chainInfo = findChainInfo(item);\n return {\n ...item,\n symbol: item.token,\n precision: item.decimals ?? 6,\n ...chainInfo,\n };\n });\n }, [tokensInfo]);\n\n useEffect(() => {\n const { usdc, others } = splitTokenBySymbol(newTokensInfo);\n setSourceToken(() => {\n if (defaultValue) {\n const defaultToken = others.find(({ token }) => token === defaultValue);\n return defaultToken ? defaultToken : others[0];\n }\n return others[0];\n });\n setSourceTokens(others);\n setTargetToken(usdc[0]);\n }, [defaultValue, newTokensInfo]);\n\n const targetChainInfo = useMemo(() => {\n const info = targetToken?.chain_details?.find(\n (item) => item.chain_id === sourceToken?.quoteChainId,\n );\n return {\n ...info,\n precision: targetToken?.precision,\n };\n }, [sourceToken, targetToken]);\n\n return {\n sourceToken,\n sourceTokens,\n onSourceTokenChange: setSourceToken,\n targetToken,\n targetChainInfo,\n };\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport {\n useConfig,\n useConvert,\n useComputedLTV,\n useLocalStorage,\n useOdosQuote,\n useWalletConnector,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { account } from \"@orderly.network/perp\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport type { NetworkId } from \"@orderly.network/types\";\nimport { toast } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useSettlePnl } from \"../unsettlePnlInfo/useSettlePnl\";\nimport { useToken } from \"./hooks/useToken\";\n\nconst { calcMinimumReceived } = account;\n\nexport type ConvertFormScriptReturn = ReturnType<typeof useConvertFormScript>;\n\nconst ORDERLY_CONVERT_SLIPPAGE_KEY = \"orderly_convert_slippage\";\n\nexport interface ConvertFormScriptOptions {\n token?: string;\n close?: () => void;\n}\n\nexport const normalizeAmount = (amount: string, decimals: number) => {\n return new Decimal(amount).mul(new Decimal(10).pow(decimals)).toFixed(0);\n};\n\nexport const unnormalizeAmount = (amount: string, decimals: number) => {\n return new Decimal(amount).div(new Decimal(10).pow(decimals)).toString();\n};\n\nexport const useConvertFormScript = (options: ConvertFormScriptOptions) => {\n const { token: defaultToken, close } = options;\n\n const { t } = useTranslation();\n const [loading, setLoading] = useState<boolean>(false);\n\n const config = useConfig();\n\n const networkId = config.get(\"networkId\") as NetworkId;\n\n const [quantity, setQuantity] = useState<string>(\"\");\n\n const { wrongNetwork } = useAppContext();\n\n const { wallet } = useWalletConnector();\n\n const {\n sourceToken,\n sourceTokens,\n onSourceTokenChange,\n targetToken,\n targetChainInfo,\n } = useToken({ defaultValue: defaultToken });\n\n const { walletName, address } = useMemo(\n () => ({\n walletName: wallet?.label,\n address: wallet?.accounts?.[0].address,\n }),\n [wallet],\n );\n\n const onQuantityChange = (qty: string) => {\n setQuantity(qty);\n };\n\n const [slippage, setSlippage] = useLocalStorage(\n ORDERLY_CONVERT_SLIPPAGE_KEY,\n 1,\n );\n\n const { maxAmount, convert } = useConvert({ token: sourceToken?.token });\n\n const onConvert = async () => {\n if (loading) {\n return;\n }\n setLoading(true);\n return convert({\n amount: Number(quantity),\n slippage: new Decimal(slippage).div(100).toNumber(),\n })\n .then(() => {\n toast.success(t(\"transfer.convert.completed\"));\n close?.();\n setQuantity(\"\");\n })\n .catch((err: Error) => {\n toast.error(\n err.message?.includes(\"user rejected\")\n ? t(\"transfer.convert.failed\")\n : err.message,\n );\n })\n .finally(() => {\n setLoading(false);\n });\n };\n\n const [postQuote, { data: quoteData, isMutating: isQuoteLoading }] =\n useOdosQuote();\n\n useEffect(() => {\n const { quoteChainId, contract_address, decimals } = sourceToken || {};\n const targetAddress = targetChainInfo?.contract_address;\n\n if (quantity && quoteChainId && contract_address && targetAddress) {\n // https://docs.odos.xyz/build/api-docs\n postQuote({\n chainId: parseInt(quoteChainId),\n inputTokens: [\n {\n amount: normalizeAmount(quantity, decimals!),\n tokenAddress: contract_address,\n },\n ],\n outputTokens: [\n {\n proportion: 1,\n tokenAddress: targetAddress,\n },\n ],\n // simple: true,\n });\n }\n }, [quantity, sourceToken, targetChainInfo, postQuote]);\n\n const memoizedOutAmounts = useMemo<string>(() => {\n if (!quoteData || isQuoteLoading) {\n return \"-\";\n }\n return quoteData?.outAmounts[0];\n }, [quoteData, isQuoteLoading]);\n\n const memoizedConvertRate = useMemo(() => {\n if (!quoteData || isQuoteLoading) {\n return \"-\";\n }\n\n const rate = new Decimal(\n unnormalizeAmount(\n quoteData.outAmounts[0],\n targetChainInfo?.decimals ?? 6,\n ),\n )\n .div(\n unnormalizeAmount(quoteData.inAmounts[0], sourceToken?.decimals ?? 6),\n )\n .toString();\n return rate;\n }, [isQuoteLoading, quoteData, sourceToken, targetChainInfo]);\n\n const memoizedMinimumReceived = useMemo(() => {\n if (!quoteData || isQuoteLoading) {\n return 0;\n }\n return calcMinimumReceived({\n amount: quoteData?.outAmounts[0],\n slippage: Number(slippage),\n });\n }, [quoteData, isQuoteLoading, slippage]);\n\n const currentLtv = useComputedLTV();\n\n const nextLTV = useComputedLTV({\n input: Number(quantity),\n token: sourceToken?.token,\n });\n\n const disabled = !quantity || Number(quantity) === 0;\n\n const { hasPositions, onSettlePnl } = useSettlePnl();\n\n return {\n walletName,\n address,\n quantity,\n onQuantityChange,\n token: sourceToken,\n sourceTokens,\n onSourceTokenChange,\n targetToken,\n balanceRevalidating: false,\n maxQuantity: maxAmount,\n disabled,\n loading,\n wrongNetwork,\n onConvert,\n hasPositions,\n onSettlePnl,\n networkId,\n slippage,\n onSlippageChange: setSlippage,\n convertRate: memoizedConvertRate,\n minimumReceived: memoizedMinimumReceived,\n outAmounts: memoizedOutAmounts,\n isQuoteLoading,\n currentLTV: currentLtv,\n nextLTV: nextLTV,\n targetChainInfo,\n };\n};\n","import React from \"react\";\nimport { Box, Flex, textVariants } from \"@orderly.network/ui\";\nimport { LtvWidget } from \"../LTV\";\nimport { AvailableQuantity } from \"../availableQuantity\";\nimport { ConvertAction } from \"../convertAction\";\nimport { ExchangeDivider } from \"../exchangeDivider\";\nimport { MinimumReceived } from \"../minimumReceived\";\nimport { QuantityInput } from \"../quantityInput\";\nimport { Slippage } from \"../slippage\";\nimport { SwapCoin } from \"../swapCoin\";\nimport {\n unnormalizeAmount,\n type ConvertFormScriptReturn,\n} from \"./convertForm.script\";\n\nexport type ConvertFormProps = ConvertFormScriptReturn;\n\nexport const ConvertFormUI: React.FC<ConvertFormProps> = (props) => {\n const {\n loading,\n disabled,\n quantity,\n onQuantityChange,\n maxQuantity,\n token,\n targetToken,\n sourceTokens,\n onSourceTokenChange,\n onConvert,\n slippage,\n onSlippageChange,\n convertRate,\n outAmounts,\n minimumReceived,\n isQuoteLoading,\n currentLTV,\n nextLTV,\n networkId,\n balanceRevalidating,\n targetChainInfo,\n } = props;\n\n return (\n <Box className={textVariants({ weight: \"semibold\" })}>\n <Box className=\"oui-mb-6 lg:oui-mb-8\">\n <Box mt={3} mb={1}>\n <QuantityInput\n value={quantity}\n onValueChange={onQuantityChange}\n token={token}\n tokens={sourceTokens}\n onTokenChange={onSourceTokenChange}\n />\n </Box>\n <AvailableQuantity\n token={token}\n amount={quantity}\n maxQuantity={maxQuantity.toString()}\n loading={balanceRevalidating}\n onClick={() => {\n onQuantityChange(maxQuantity.toString());\n }}\n />\n <ExchangeDivider />\n <QuantityInput\n readOnly\n loading={isQuoteLoading}\n token={targetToken}\n value={\n isQuoteLoading || !quantity || Number.isNaN(Number(outAmounts))\n ? \"\"\n : unnormalizeAmount(outAmounts, targetChainInfo?.decimals ?? 6)\n }\n />\n <Flex direction=\"column\" itemAlign=\"start\" mt={2} gap={1}>\n <SwapCoin\n indexPrice={\n isQuoteLoading || !quantity || Number.isNaN(Number(convertRate))\n ? \"-\"\n : convertRate\n }\n sourceSymbol={token?.token}\n targetSymbol={targetToken?.token}\n />\n <Slippage value={slippage} onValueChange={onSlippageChange} />\n <MinimumReceived\n symbol={targetToken?.token || \"\"}\n precision={targetChainInfo?.precision ?? 6}\n value={\n isQuoteLoading ||\n !quantity ||\n Number.isNaN(Number(minimumReceived))\n ? \"-\"\n : unnormalizeAmount(\n minimumReceived.toString(),\n targetChainInfo?.decimals ?? 6,\n )\n }\n />\n <LtvWidget\n showDiff={typeof quantity !== \"undefined\" && Number(quantity) > 0}\n currentLtv={currentLTV}\n nextLTV={nextLTV}\n />\n </Flex>\n </Box>\n <Flex itemAlign={\"center\"} justify=\"center\">\n <ConvertAction\n networkId={networkId}\n disabled={disabled}\n loading={loading}\n onConvert={onConvert}\n />\n </Flex>\n </Box>\n );\n};\n","import React from \"react\";\n// import pick from \"ramda/es/pick\";\nimport { i18n } from \"@orderly.network/i18n\";\nimport { registerSimpleDialog, registerSimpleSheet } from \"@orderly.network/ui\";\nimport type { ConvertFormScriptOptions } from \"./convertForm.script\";\nimport { useConvertFormScript } from \"./convertForm.script\";\nimport { ConvertFormUI } from \"./convertForm.ui\";\n\nexport const ConvertDialogId = \"ConvertDialogId\";\nexport const ConvertSheetId = \"ConvertSheetId\";\n\nexport const ConvertFormWidget: React.FC<ConvertFormScriptOptions> = (\n props,\n) => {\n const state = useConvertFormScript(props);\n return <ConvertFormUI {...state} />;\n};\n\nregisterSimpleDialog(ConvertDialogId, ConvertFormWidget, {\n size: \"md\",\n classNames: { content: \"oui-border oui-border-line-6\" },\n title: () => i18n.t(\"transfer.convert\"),\n});\n\nregisterSimpleSheet(ConvertSheetId, ConvertFormWidget, {\n title: () => i18n.t(\"transfer.convert\"),\n});\n","import React, { FC, ReactNode, useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { AssetHistoryStatusEnum } from \"@orderly.network/types\";\nimport { Flex, cn, Text, CloseIcon } from \"@orderly.network/ui\";\nimport { DepositStatusScriptReturn } from \"./depostiStatus.script\";\n\nexport type DepositStatusProps = {\n className?: string;\n classNames?: {\n root?: string;\n items?: string;\n };\n onClick?: () => void;\n} & DepositStatusScriptReturn;\n\nexport const DepositStatus: React.FC<DepositStatusProps> = (props) => {\n const { canTrade, className, classNames, pendingCount, completedCount } =\n props;\n\n if (!canTrade || (pendingCount === 0 && completedCount === 0)) {\n return null;\n }\n\n return (\n <Flex\n direction=\"column\"\n gapY={1}\n width=\"100%\"\n className={cn(className, classNames?.root)}\n >\n <DepositStatusContent\n className={classNames?.items}\n count={pendingCount}\n status={AssetHistoryStatusEnum.PENDING}\n onClick={props.onClick}\n estimatedTime={props.estimatedTime}\n onClose={props.onClose}\n />\n <DepositStatusContent\n className={classNames?.items}\n count={completedCount}\n status={AssetHistoryStatusEnum.COMPLETED}\n onClick={props.onClick}\n onClose={props.onClose}\n />\n </Flex>\n );\n};\n\ntype DepositStatusContentProps = {\n count: number;\n status: AssetHistoryStatusEnum.PENDING | AssetHistoryStatusEnum.COMPLETED;\n onClick?: () => void;\n className?: string;\n estimatedTime?: string | number;\n onClose: (status: AssetHistoryStatusEnum) => void;\n};\n\nexport const DepositStatusContent = (props: DepositStatusContentProps) => {\n const { t } = useTranslation();\n const { count, status, estimatedTime } = props;\n\n const content = useMemo(() => {\n if (status === AssetHistoryStatusEnum.PENDING) {\n return count > 1\n ? t(\"transfer.deposit.status.pending.multiple\")\n : t(\"transfer.deposit.status.pending.one\");\n }\n\n return count > 1\n ? t(\"transfer.deposit.status.completed.multiple\")\n : t(\"transfer.deposit.status.completed.one\");\n }, [t, status, count]);\n\n if (count === 0) {\n return null;\n }\n\n const clickable = typeof props.onClick === \"function\";\n\n const renderContent = () => {\n if (\n status === AssetHistoryStatusEnum.PENDING &&\n count === 1 &&\n estimatedTime\n ) {\n return (\n <Text size=\"2xs\" color=\"primary\">\n ~ {estimatedTime}\n </Text>\n );\n }\n\n return <Badge>{props.count}</Badge>;\n };\n\n return (\n <Flex\n intensity={900}\n gapX={1}\n width=\"100%\"\n r=\"full\"\n className={cn(\n \"oui-px-3 lg:oui-px-0\",\n \"oui-py-2 lg:oui-py-0\",\n props.className,\n )}\n >\n <Flex\n justify=\"between\"\n itemAlign=\"center\"\n className={cn(\n \"oui-font-normal\",\n \"oui-text-base-contrast-80 hover:oui-text-base-contrast\",\n clickable && \"oui-cursor-pointer\",\n )}\n width=\"100%\"\n onClick={props.onClick}\n >\n <Flex gapX={1}>\n <Dot\n className={\n status === AssetHistoryStatusEnum.COMPLETED\n ? \"oui-bg-success\"\n : \"oui-bg-primary\"\n }\n />\n <Text size=\"2xs\">{content}</Text>\n </Flex>\n {renderContent()}\n </Flex>\n <CloseIcon\n size={14}\n opacity={1}\n className=\"oui-text-base-contrast-54 hover:oui-text-base-contrast\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n props.onClose(status);\n }}\n />\n </Flex>\n );\n};\n\nconst Badge: FC<{ className?: string; children: ReactNode }> = (props) => {\n return (\n <Flex\n justify=\"center\"\n itemAlign=\"center\"\n r=\"full\"\n width={18}\n height={18}\n className={cn(\"oui-bg-line-12\", props.className)}\n >\n <Text size=\"3xs\" intensity={80}>\n {props.children}\n </Text>\n </Flex>\n );\n};\n\nconst Dot: FC<{ className?: string }> = (props) => {\n return (\n <div\n className={cn(\n \"oui-mx-[5px] oui-size-2 oui-shrink-0 oui-rounded-full\",\n props.className,\n )}\n />\n );\n};\n","import { ethers } from \"ethers\";\nimport type { API } from \"@orderly.network/types\";\n\nconst blockCount = 5;\n\nexport async function getEvmBlockTime(chain: API.Chain) {\n const provider = new ethers.JsonRpcProvider(\n chain.network_infos.public_rpc_url,\n );\n\n const latest = await provider.getBlockNumber();\n\n const blocks = await Promise.all(\n Array.from({ length: blockCount }, (_, i) => provider.getBlock(latest - i)),\n );\n\n const timestamps = blocks\n .filter((b) => b?.timestamp != null)\n .map((b) => Number(b?.timestamp));\n\n if (timestamps.length < 2) {\n return 0;\n }\n\n let sum = 0;\n for (let i = 0; i < timestamps.length - 1; i++) {\n const diff = timestamps[i] - timestamps[i + 1];\n sum += diff;\n }\n\n return sum / (timestamps.length - 1);\n}\n","import {\n DefaultSolanaWalletAdapter,\n SolanaWalletProvider,\n} from \"@orderly.network/default-solana-adapter\";\nimport { WalletState } from \"@orderly.network/hooks\";\nimport { API } from \"@orderly.network/types\";\n\nexport async function getSolanaBlockTime(\n chain: API.Chain,\n wallet: WalletState | null,\n) {\n if (!wallet) {\n return 0;\n }\n\n const walletAdapter = new DefaultSolanaWalletAdapter();\n\n walletAdapter.active({\n address: wallet.accounts[0].address,\n chain: { id: chain.network_infos.chain_id },\n provider: wallet.provider as SolanaWalletProvider,\n });\n\n // console.log(\"walletAdapter\", walletAdapter);\n\n // The Solana RPC node keeps a history of performance samples, typically for a few hours.\n // A limit of 60 samples gives us a good average over the last hour or so.\n const samples =\n await walletAdapter.connection.getRecentPerformanceSamples(60);\n\n let totalBlockTime = 0;\n let validSamples = 0;\n\n for (const sample of samples) {\n if (sample.numSlots > 0 && sample.samplePeriodSecs > 0) {\n const blockTime = sample.samplePeriodSecs / sample.numSlots;\n totalBlockTime += blockTime;\n validSamples++;\n }\n }\n\n return totalBlockTime / validSamples;\n}\n","import { WalletState } from \"@orderly.network/hooks\";\nimport { API } from \"@orderly.network/types\";\nimport { isSolana } from \"@orderly.network/utils\";\nimport { getEvmBlockTime } from \"./getEvmBlockTime\";\nimport { getSolanaBlockTime } from \"./getSolanaBlockTime\";\n\n// https://tokenterminal.com/explorer/metrics/block-time\nexport async function getBlockTime(inputs: {\n chainId: number;\n chain: API.Chain;\n wallet: WalletState | null;\n}) {\n const { chainId, chain, wallet } = inputs;\n if (isSolana(chainId)) {\n return getSolanaBlockTime(chain, wallet);\n }\n return getEvmBlockTime(chain);\n}\n","[\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_oapp\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint32\",\n \"name\": \"_remoteEid\",\n \"type\": \"uint32\"\n }\n ],\n \"name\": \"getAppUlnConfig\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"confirmations\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"requiredDVNCount\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"optionalDVNCount\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"optionalDVNThreshold\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"address[]\",\n \"name\": \"requiredDVNs\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"address[]\",\n \"name\": \"optionalDVNs\",\n \"type\": \"address[]\"\n }\n ],\n \"internalType\": \"struct UlnConfig\",\n \"name\": \"\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n]\n","/**\n * https://docs.layerzero.network/v2/deployments/deployed-contracts\n * Chain ID to Endpoint ID mapping for LayerZero V2\n *\n * This mapping contains all supported chains and their corresponding LayerZero Endpoint IDs.\n *\n * Endpoint ID ranges:\n * - 30xxx: Mainnet chains\n * - 40xxx: Testnet chains\n */\n\nexport const CHAIN_ID_TO_ENDPOINT_ID: Record<number | string, number> = {\n // Ethereum and L2s\n 1: 30101, // Ethereum Mainnet\n 10: 30111, // Optimism Mainnet\n 42161: 30110, // Arbitrum Mainnet\n 137: 30109, // Polygon Mainnet\n 8453: 30184, // Base Mainnet\n 59144: 30183, // Linea Mainnet\n 534352: 30214, // Scroll Mainnet\n 324: 30165, // zkSync Era Mainnet\n 1101: 30158, // Polygon zkEVM Mainnet\n 169: 30217, // Manta Pacific Mainnet\n 5000: 30181, // Mantle Mainnet\n 81457: 30243, // Blast Mainnet\n 252: 30255, // Fraxtal Mainnet\n 34443: 30260, // Mode Mainnet\n 167000: 30290, // Taiko Mainnet\n 7777777: 30195, // Zora Mainnet\n\n // Testnets\n 11155420: 40232, // Optimism Sepolia Testnet\n 421614: 40231, // Arbitrum Sepolia Testnet\n 84532: 40245, // Base Sepolia Testnet\n 300: 40305, // zkSync Sepolia Testnet\n 11155111: 40161, // Ethereum Sepolia Testnet\n 17000: 40217, // Ethereum Holesky Testnet\n\n // BNB Chain and related\n 56: 30102, // BNB Smart Chain (BSC) Mainnet\n 204: 30202, // opBNB Mainnet\n 97: 40102, // BNB Smart Chain (BSC) Testnet\n\n // Avalanche\n 43114: 30106, // Avalanche Mainnet\n 43113: 40106, // Avalanche Fuji Testnet\n\n // Fantom\n 250: 30112, // Fantom Mainnet\n\n // Gnosis\n 100: 30145, // Gnosis Mainnet\n\n // Celo\n 42220: 30125, // Celo Mainnet\n\n // Harmony\n 1666600000: 30116, // Harmony Mainnet\n\n // Cronos\n 25: 30359, // Cronos EVM Mainnet\n 388: 30360, // Cronos zkEVM Mainnet\n\n // Metis\n 1088: 30151, // Metis Mainnet\n\n // Moonbeam/Moonriver\n 1284: 30126, // Moonbeam Mainnet\n 1285: 30167, // Moonriver Mainnet\n\n // Astar\n 592: 30210, // Astar Mainnet\n 3776: 30257, // Astar zkEVM Mainnet\n\n // Canto\n 7700: 30159, // Canto Mainnet\n\n // Fuse\n 122: 30138, // Fuse Mainnet\n\n // Kava\n 2222: 30177, // Kava Mainnet\n\n // Meter\n 82: 30176, // Meter Mainnet\n\n // Near Aurora\n 1313161554: 30211, // Near Aurora Mainnet\n\n // DFK Chain\n 53935: 30115, // DFK Chain\n\n // DOS Chain\n 7979: 30149, // DOS Chain Mainnet\n\n // Degen\n 666666666: 30267, // Degen Mainnet\n\n // Dexalot Subnet\n 432204: 30118, // Dexalot Subnet Mainnet\n\n // Homeverse\n 19011: 30265, // Homeverse Mainnet\n\n // Horizen EON\n 7332: 30215, // Horizen EON Mainnet\n\n // Hubble\n 1992: 30182, // Hubble Mainnet\n\n // Tenet\n 1559: 30173, // Tenet Mainnet\n\n // TelosEVM\n 40: 30199, // TelosEVM Mainnet\n\n // Tiltyard\n 710420: 30238, // Tiltyard Mainnet\n\n // Viction\n 88: 30196, // Viction Mainnet\n\n // XPLA\n 37: 30216, // XPLA Mainnet\n\n // Xai\n 660279: 30236, // Xai Mainnet\n\n // re.al\n 111188: 30237, // re.al Mainnet\n\n // inEVM\n 2525: 30234, // inEVM Mainnet\n\n // Rari Chain\n 1380012617: 30235, // Rari Chain Mainnet\n\n // Shimmer\n 148: 30230, // Shimmer Mainnet\n\n // Skale\n 2046399126: 30273, // Skale Mainnet\n\n // Orderly\n 291: 30213, // Orderly Mainnet\n\n // CoreDAO\n 1116: 30153, // CoreDAO Mainnet\n\n // Conflux eSpace\n 1030: 30212, // Conflux eSpace Mainnet\n\n // Flare\n 14: 30295, // Flare Mainnet\n\n // Gravity\n 1625: 30294, // Gravity Mainnet\n\n // Japan Open Chain\n 81: 30285, // Japan Open Chain Mainnet\n\n // Kaia (formerly Klaytn)\n 8217: 30150, // Kaia Mainnet (formerly Klaytn)\n\n // OKX\n 66: 30155, // OKX Mainnet\n\n // Beam\n 4337: 30198, // Beam Mainnet\n\n // Loot\n 5151706: 30197, // Loot Mainnet\n\n // Lyra\n 957: 30311, // Lyra Mainnet\n\n // Morph\n 2818: 30322, // Morph Mainnet\n\n // Movement\n \"\": 30325, // Movement Mainnet (no chain ID)\n\n // Bouncebit\n 6001: 30293, // Bouncebit Mainnet\n\n // Cyber\n 7560: 30283, // Cyber Mainnet\n\n // Iota\n 8822: 30284, // Iota Mainnet\n\n // Sanko\n 1996: 30278, // Sanko Mainnet\n\n // Sei\n 1329: 30280, // Sei Mainnet\n\n // BOB\n 60808: 30279, // BOB Mainnet\n\n // Bahamut\n 5165: 30363, // Bahamut Mainnet\n\n // Animechain\n 69000: 30372, // Animechain Mainnet\n\n // Ape\n 33139: 30312, // Ape Mainnet\n\n // Berachain\n 80094: 30362, // Berachain Mainnet\n\n // Bevm\n 11501: 30317, // Bevm Mainnet\n\n // Bitlayer\n 200901: 30314, // Bitlayer Mainnet\n\n // Botanix\n 3637: 30376, // Botanix\n\n // Codex\n 81224: 30323, // Codex Mainnet\n\n // Concrete\n 12739: 30366, // Concrete\n\n // DM2 Verse\n 68770: 30315, // DM2 Verse Mainnet\n\n // EDU Chain\n 41923: 30328, // EDU Chain Mainnet\n\n // EVM on Flow\n 747: 30336, // EVM on Flow Mainnet\n\n // Etherlink\n 42793: 30292, // Etherlink Mainnet\n\n // Glue\n 1300: 30342, // Glue Mainnet\n\n // Goat\n 2345: 30361, // Goat Mainnet\n\n // Gunz\n 43419: 30371, // Gunz Mainnet\n\n // Hedera\n 295: 30316, // Hedera Mainnet\n\n // Hemi\n 43111: 30329, // Hemi Mainnet\n\n // HyperEVM\n 999: 30367, // HyperEVM Mainnet\n\n // Initia\n // \"\": 30326, // Initia Mainnet (no chain ID)\n\n // Ink\n 57073: 30339, // Ink Mainnet\n\n // Katana\n 747474: 30375, // Katana\n\n // Lens\n 232: 30373, // Lens Mainnet\n\n // Lightlink\n 1890: 30309, // Lightlink Mainnet\n\n // Lisk\n 1135: 30321, // Lisk Mainnet\n\n // Merlin\n 4200: 30266, // Merlin Mainnet\n\n // Nibiru\n 6900: 30369, // Nibiru Mainnet\n\n // Otherworld Space\n 8227: 30341, // Otherworld Space Mainnet\n\n // Peaq\n 3338: 30302, // Peaq Mainnet\n\n // Plume\n 98866: 30370, // Plume Mainnet\n\n // Reya\n 1729: 30313, // Reya Mainnet\n\n // Rootstock\n 30: 30333, // Rootstock Mainnet\n\n // Soneium\n 1868: 30340, // Soneium Mainnet\n\n // Sonic\n 146: 30332, // Sonic Mainnet\n\n // Sophon\n 50104: 30334, // Sophon Mainnet\n\n // Story\n 1514: 30364, // Story Mainnet\n\n // Subtensor EVM\n 964: 30374, // Subtensor EVM Mainnet\n\n // Superposition\n 55244: 30327, // Superposition Mainnet\n\n // Swell\n 1923: 30335, // Swell Mainnet\n\n // Tac\n 239: 30377, // Tac\n\n // TON\n // \"\": 30343, // TON Mainnet (no chain ID)\n\n // Unichain\n 130: 30320, // Unichain Mainnet\n\n // Vana\n 1480: 30330, // Vana Mainnet\n\n // Worldchain\n 480: 30319, // Worldchain Mainnet\n\n // X Layer\n 196: 30274, // X Layer Mainnet\n\n // XChain\n 94524: 30291, // XChain Mainnet\n\n // XDC\n 50: 30365, // XDC Mainnet\n\n // Zircuit\n 48900: 30303, // Zircuit Mainnet\n\n // zkLink\n 810180: 30301, // zkLink Mainnet\n\n // Abstract\n 2741: 30324, // Abstract Mainnet\n\n // Aptos (non-EVM)\n // 1: 30108, // Aptos Mainnet\n\n // Arbitrum Nova\n 42170: 30175, // Arbitrum Nova Mainnet\n\n // Corn\n 21000000: 30331, // Corn Mainnet\n\n // Initia Testnet\n // \"\": 40326, // Initia Testnet (no chain ID)\n\n // HyperEVM Testnet\n 998: 40362, // HyperEVM Testnet\n\n // Berachain Bepolia Testnet\n 80069: 40371, // Berachain Bepolia Testnet\n\n // Monad Testnet\n 10143: 40204, // Monad Testnet\n\n // Polygon Amoy Testnet\n 80002: 40267, // Polygon Amoy Testnet\n\n // Solana (non-EVM)\n 101: 30168, // Solana Mainnet\n 103: 40168, // Solana Devnet\n 900900900: 30168, // Solana Mainnet\n 901901901: 40168, // Solana Devnet\n\n // Tron\n 728126428: 30420, // Tron Mainnet\n 2494104990: 40420, // Tron Testnet\n};\n\n/**\n * Get Endpoint ID for a given Chain ID\n * @param chainId - The chain ID to look up\n * @returns The corresponding Endpoint ID or undefined if not found\n */\nexport function getEndpointId(chainId: number | string): number | undefined {\n return CHAIN_ID_TO_ENDPOINT_ID[chainId];\n}\n","import { ethers } from \"ethers\";\nimport { API } from \"@orderly.network/types\";\nimport getAppUlnConfigAbi from \"./abi/getAppUlnConfigAbi.json\";\nimport { getEndpointId } from \"./endpointId\";\n\n/**\n * no need to distinguish between EVM and SOL\n */\nexport async function getChainConfirmations(chain: API.Chain) {\n const chainId = chain.network_infos.chain_id;\n const isMainnet = chain.network_infos.mainnet;\n\n const publicRpcUrl = isMainnet\n ? \"https://rpc.orderly.network\"\n : \"https://testnet-rpc.orderly.org\";\n\n // mainnet: https://explorer-orderly-mainnet-0.t.conduit.xyz/address/0xCFf08a35A5f27F306e2DA99ff198dB90f13DEF77?tab=read_write_contract\n // testnet: https://testnet-explorer.orderly.org/address/0x3013C32e5F45E69ceA9baD4d96786704C2aE148c?tab=read_contract#39e3f938\n const contractAddress = isMainnet\n ? \"0xCFf08a35A5f27F306e2DA99ff198dB90f13DEF77\"\n : \"0x3013C32e5F45E69ceA9baD4d96786704C2aE148c\";\n\n const endpointId = getEndpointId(chainId);\n\n const address = \"0x0000000000000000000000000000000000000000\";\n\n const provider = new ethers.JsonRpcProvider(publicRpcUrl);\n\n const contract = new ethers.Contract(\n contractAddress,\n // full abi: https://explorer-orderly-mainnet-0.t.conduit.xyz/address/0xCFf08a35A5f27F306e2DA99ff198dB90f13DEF77?tab=contract_abi\n // this only need to use getAppUlnConfig abi, other functions are not needed\n getAppUlnConfigAbi,\n provider,\n );\n\n const result = await contract.getAppUlnConfig(address, endpointId);\n\n // console.log(\"getChainConfirmations\", chainId, result);\n\n return Number(result.confirmations || 0);\n}\n","import { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useChains, useWalletConnector } from \"@orderly.network/hooks\";\nimport { getBlockTime } from \"./getBlockTime\";\nimport { getChainConfirmations } from \"./getChainConfirmations\";\n\nexport const useTransactionTime = (chainId?: number | string) => {\n const [blockTime, setBlockTime] = useState(0);\n const [confirmations, setConfirmations] = useState(0);\n const timeMap = useRef<Record<string, number>>({});\n const confirmationsMap = useRef<Record<string, number>>({});\n\n const [, { findByChainId }] = useChains();\n const { wallet } = useWalletConnector();\n\n const chain = useMemo(() => {\n if (!chainId) {\n return;\n }\n const id = typeof chainId === \"number\" ? chainId : Number.parseInt(chainId);\n return findByChainId(id);\n }, [chainId, findByChainId]);\n\n useEffect(() => {\n if (!chain || !wallet) {\n return;\n }\n\n const chainId = chain.network_infos.chain_id;\n\n if (timeMap.current[chainId]) {\n setBlockTime(timeMap.current[chainId]);\n } else {\n getBlockTime({\n chainId,\n chain,\n wallet,\n })\n .then((time) => {\n console.log(\"average block time\", chainId, time);\n setBlockTime(time);\n // record chain block time\n timeMap.current[chainId] = time;\n })\n .catch((error) => {\n console.error(\"getBlockTime error\", error);\n });\n }\n\n if (confirmationsMap.current[chainId]) {\n setConfirmations(confirmationsMap.current[chainId]);\n } else {\n getChainConfirmations(chain)\n .then((confirmations) => {\n console.log(\"confirmations\", chainId, confirmations);\n setConfirmations(confirmations);\n // record chain confirmations\n confirmationsMap.current[chainId] = confirmations;\n })\n .catch((error) => {\n console.error(\"getChainConfirmations error\", error);\n });\n }\n }, [chain, wallet]);\n\n const transactionTime = useMemo(() => {\n if (blockTime && confirmations) {\n return blockTime * confirmations;\n }\n return 0;\n }, [blockTime, confirmations]);\n\n return transactionTime;\n};\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport {\n useAccount,\n useAssetsHistory,\n useBalanceTopic,\n useDebouncedCallback,\n useLocalStorage,\n useTransferHistory,\n useWalletTopic,\n} from \"@orderly.network/hooks\";\nimport {\n AccountStatusEnum,\n API,\n AssetHistorySideEnum,\n AssetHistoryStatusEnum,\n} from \"@orderly.network/types\";\nimport { useTransactionTime } from \"../../contract/useTransactionTime\";\n\nexport type DepositStatusScriptReturn = ReturnType<\n typeof useDepositStatusScript\n>;\n\nfunction getTimeRange() {\n const endTime = Date.now();\n // 1 hour ago\n const startTime = endTime - 1000 * 60 * 60;\n\n return [startTime, endTime];\n}\n\nexport function useDepositStatusScript() {\n const [depositDataRange, setDepositDataRange] = useState(getTimeRange());\n const [transferDataRange, setTransferDataRange] = useState(getTimeRange());\n // only deposit have pending status\n const [depositPending, setDepositPending] = useState(0);\n const [depositCompleted, setDepositCompleted] = useState(0);\n const [transferCompleted, setTransferCompleted] = useState(0);\n const [pendingList, setPendingList] = useState<API.TransferHistoryRow[]>([]);\n\n const [hideNotificationTimeMap, setHideNotificationTimeMap] = useLocalStorage(\n \"orderly_deposit_status_hide_notification_time\",\n {\n [AssetHistoryStatusEnum.PENDING]: 0,\n [AssetHistoryStatusEnum.COMPLETED]: 0,\n },\n );\n\n const { state } = useAccount();\n\n const canTrade =\n state.status === AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected;\n\n const { chainId, blockTime } = useMemo(() => {\n if (canTrade && pendingList.length === 1) {\n return {\n chainId: pendingList[0].chain_id,\n blockTime: pendingList[0].block_time,\n };\n }\n\n return {\n chainId: undefined,\n blockTime: undefined,\n };\n }, [canTrade, pendingList]);\n\n const transactionTime = useTransactionTime(chainId);\n\n // Estimated time remaining = tx_block_time +(total confirmations x average block time) - current time\n const estimatedTime = useMemo(() => {\n if (transactionTime && blockTime) {\n const seconds = blockTime / 1000 + transactionTime - Date.now() / 1000;\n console.log(\"transactionTime\", transactionTime, seconds);\n return formatEstimatedTime(seconds);\n }\n\n return 0;\n }, [transactionTime, blockTime]);\n\n const [assetHistory, { isLoading }] = useAssetsHistory(\n {\n startTime: depositDataRange[0],\n endTime: depositDataRange[1],\n page: 1,\n pageSize: 200,\n side: \"DEPOSIT\",\n },\n {\n shouldUpdateOnWalletChanged: () => false,\n },\n );\n\n // pending and completed use one request to reduce api request, because assets history api limit 10 per 60s\n const [transferHistory] = useTransferHistory({\n dataRange: transferDataRange,\n side: \"IN\",\n size: 200,\n page: 1,\n main_sub_only: false,\n });\n\n // update time range when wallet and balance changed\n // because DEPOSIT and WITHDRAW will push twice COMPLETED event in a shorttime, so we need to debounce it\n // TODO: refresh one when push more than twice again\n const updateDepositTimeRange = useDebouncedCallback((data: any) => {\n setDepositDataRange(getTimeRange());\n }, 300);\n\n useWalletTopic({\n onMessage(data) {\n const { side, transStatus } = data;\n if (\n side === AssetHistorySideEnum.DEPOSIT &&\n (transStatus === AssetHistoryStatusEnum.PENDING ||\n transStatus === AssetHistoryStatusEnum.COMPLETED)\n ) {\n console.log(\"deposit status updated\", data);\n updateDepositTimeRange(data);\n }\n },\n });\n\n // update transfer time range when balance changed\n const updateTransferTimeRange = useDebouncedCallback((data: any) => {\n setTransferDataRange(getTimeRange());\n }, 300);\n\n useBalanceTopic({\n onMessage(data) {\n console.log(\"balance updated\", data);\n updateTransferTimeRange(data);\n },\n });\n\n useEffect(() => {\n if (!assetHistory || isLoading) {\n return;\n }\n const hidePendingNotificationTime =\n hideNotificationTimeMap[AssetHistoryStatusEnum.PENDING];\n\n const hideCompletedNotificationTime =\n hideNotificationTimeMap[AssetHistoryStatusEnum.COMPLETED];\n\n let pendingList = assetHistory.filter(\n (item) => item.trans_status === AssetHistoryStatusEnum.PENDING,\n );\n\n if (hidePendingNotificationTime) {\n pendingList = pendingList.filter(\n (item) => item.created_time > hidePendingNotificationTime,\n );\n }\n\n let completedList = assetHistory.filter(\n (item) => item.trans_status === AssetHistoryStatusEnum.COMPLETED,\n );\n\n if (hideCompletedNotificationTime) {\n completedList = completedList.filter(\n (item) => item.created_time > hideCompletedNotificationTime,\n );\n }\n\n setDepositPending(pendingList?.length || 0);\n setDepositCompleted(completedList?.length || 0);\n setPendingList(pendingList || []);\n }, [assetHistory, isLoading, hideNotificationTimeMap]);\n\n useEffect(() => {\n if (!transferHistory) {\n return;\n }\n const hideCompletedNotificationTime =\n hideNotificationTimeMap[AssetHistoryStatusEnum.COMPLETED];\n\n const completedList = hideCompletedNotificationTime\n ? transferHistory.filter(\n (item) => item.created_time > hideCompletedNotificationTime,\n )\n : transferHistory;\n\n setTransferCompleted(completedList.length);\n }, [transferHistory, hideNotificationTimeMap]);\n\n const completedCount = useMemo(() => {\n return depositCompleted + transferCompleted;\n }, [depositCompleted, transferCompleted]);\n\n const onClose = useCallback(\n (status: AssetHistoryStatusEnum) => {\n setHideNotificationTimeMap({\n ...hideNotificationTimeMap,\n [status]: Date.now(),\n });\n },\n [hideNotificationTimeMap],\n );\n\n return {\n pendingCount: depositPending,\n completedCount,\n canTrade,\n estimatedTime,\n onClose,\n };\n}\n\nfunction formatEstimatedTime(totalSeconds: number) {\n const sec = Math.max(30, totalSeconds);\n let minutes = Math.floor(sec / 60);\n let seconds = sec % 60;\n\n if (seconds > 0 && seconds <= 30) {\n seconds = 30;\n } else if (seconds > 30) {\n minutes += 1;\n seconds = 0;\n }\n\n if (minutes > 0) {\n return seconds > 0 ? `${minutes} m ${seconds} s` : `${minutes} m`;\n }\n\n return `${seconds} s`;\n\n // minutes = Math.max(1, Math.ceil(seconds / 60));\n}\n","import React from \"react\";\nimport { useDepositStatusScript } from \"./depostiStatus.script\";\nimport { DepositStatus, DepositStatusProps } from \"./depostiStatus.ui\";\n\nexport type DepositStatusWidgetProps = Pick<\n DepositStatusProps,\n \"className\" | \"onClick\"\n>;\n\nexport const DepositStatusWidget: React.FC<DepositStatusWidgetProps> = (\n props,\n) => {\n const state = useDepositStatusScript();\n return <DepositStatus {...state} {...props} />;\n};\n"]}
|