@orderly.network/ui-transfer 2.10.2 → 3.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/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/tokenOption.tsx","../src/components/quantityInput/index.tsx","../src/components/slippage/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/depositForm/components/convertRate.tsx","../src/components/depositForm/components/depositTokenValueFormatter.tsx","../src/components/depositForm/components/notice.tsx","../src/components/depositForm/depositForm.ui.tsx","../src/components/depositForm/hooks/useActionType.ts","../src/components/depositForm/hooks/useChainSelect.ts","../src/components/depositForm/hooks/useCollateralValue.ts","../src/components/depositForm/hooks/useConvertThreshold.ts","../src/utils.ts","../src/components/depositForm/hooks/useDepositAction.tsx","../src/components/depositForm/hooks/useDepositFee.ts","../src/components/depositForm/hooks/useMaxDepositAmount.ts","../src/components/depositForm/hooks/useDepositQuantities.ts","../src/components/depositForm/hooks/useDepositValidation.tsx","../src/components/depositForm/hooks/useNativeBalance.ts","../src/components/depositForm/hooks/useOrderlyTokens.ts","../src/components/depositForm/hooks/useToken.ts","../src/components/depositForm/utils.ts","../src/components/depositForm/hooks/useTokenBalances.ts","../src/components/depositForm/swap/useSwapSupportedChains.ts","../src/components/depositForm/swap/use1inchTokens.ts","../src/components/depositForm/swap/perp_vault_depositor.json","../src/components/depositForm/swap/useSlippage.ts","../src/components/depositForm/swap/useSwapQuote.ts","../src/components/depositForm/swap/useSwapDeposit.ts","../src/components/depositForm/depositForm.script.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/useToken.ts","../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/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/swapCoin/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","TokenIcon","useRef","token","value","item","Select","Input","inputFormatter","Tips","AlertDialog","EditIcon","useWalletConnector","account","useAccount","address","ABSTRACT_CHAIN_ID_MAP","WalletIcon","Trans","formatWithPrecision","CaretDownIcon","collateralRatio","textVariants","options","useLocalStorage","useChains","praseChainIdToNumber","int2hex","toast","accountPerp","useComputedLTV","i18n","useEventEmitter","useTokenInfo","ChainNamespace","indexPrice","fetcher","balance","nativeTokenAddress","useSWR","orderlyTokens","isNativeTokenChecker","EMPTY_OBJECT","balances","swapQuantity","swapMinReceived","utils","useAppContext","useOrderlyContext","useDeposit","useAuthGuard","Checkbox","ExclamationFillIcon","ChainSelectorDialogId","usePositionStream","useInternalTransfer","useDebouncedCallback","useConvertThreshold","useToken","useTokensInfo","useHoldingStream","useMemoizedFn","ethers","PublicKey","useAssetsHistory","AssetHistorySideEnum","AssetHistoryStatusEnum","toNonExponential","useWalletTopic","SimpleDialog","CloseRoundFillIcon","CaretUpIcon","TabPanel","ArrowLeftRightIcon","Tabs","ExtensionSlot","ExtensionPositionEnum","ArrowDownSquareFillIcon","ArrowUpSquareFillIcon","registerSimpleDialog","registerSimpleSheet","useAppStore","state","useTransfer","useSubAccountDataObserver","useSubAccountMaxWithdrawal","zero","markPrice","tokens","Arbitrum","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","import { Chain, ConnectedChain } from \"@orderly.network/hooks\";\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\nexport type CurrentChain = Pick<ConnectedChain, \"namespace\"> & {\n id: number;\n info?: Chain;\n};\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 quantity?: string | number;\n maxQuantity?: string | number;\n onClick?: () => void;\n loading?: boolean;\n tooltipContent?: React.ReactNode;\n notional?: number;\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 { quantity, 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 (props.notional !== undefined && props.notional !== null) {\n return props.notional;\n }\n\n if (quantity && token?.symbol) {\n return new Decimal(quantity)\n .mul(getIndexPrice(token?.symbol) || 1)\n .toNumber();\n }\n return 0;\n }, [quantity, token?.symbol, props.notional]);\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 { useConfig } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useAppConfig } from \"@orderly.network/react-app\";\nimport { Flex, Text } from \"@orderly.network/ui\";\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) {\n return <img src={secondary?.img} className=\"oui-size-5\" />;\n }\n\n if (secondary?.component) {\n return <>{secondary.component}</>;\n }\n\n return null;\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 \"../../types\";\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 = 6 } = 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 { modal, Text } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { UseDepositFeeReturn } from \"../depositForm/hooks/useDepositFee\";\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 modal.alert({\n title: t(\"transfer.deposit.estGasFee\"),\n message: (\n <Text intensity={36} size=\"2xs\">\n {t(\"transfer.deposit.estGasFee.tooltip\")}\n </Text>\n ),\n });\n };\n\n const showFeeQty = !!dstGasFee && dstGasFee !== \"0\";\n\n return (\n <Text\n size=\"2xs\"\n intensity={36}\n className=\"oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12\"\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\ntype MinimumReceivedProps = {\n symbol: string;\n value: number | string;\n precision?: number;\n};\n\nexport const MinimumReceived: React.FC<MinimumReceivedProps> = (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 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\";\n\ninterface TokenOptionProps {\n token: API.TokenInfo & {\n label: string;\n value: string;\n insufficientBalance?: boolean;\n balance?: string;\n quantity?: string;\n amount?: number;\n };\n onTokenChange?: (token: API.TokenInfo) => void;\n isActive: boolean;\n index?: number;\n displayType?: \"balance\" | \"vaultBalance\";\n open?: boolean;\n isLoading?: boolean;\n showBalance?: boolean;\n}\n\nexport const TokenOption: React.FC<TokenOptionProps> = (props) => {\n const {\n token,\n isActive,\n displayType,\n onTokenChange,\n open,\n isLoading,\n showBalance,\n } = props;\n const { symbol, precision, insufficientBalance } = token;\n const { apy } = useYieldAPY(symbol);\n\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\n url={(token as any).logo_uri}\n name={symbol}\n className=\"oui-size-[16px] oui-opacity-50\"\n />\n <Text intensity={36} className=\"oui-max-w-[200px] oui-truncate\">\n {token.label}\n </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 (isLoading && !token.amount) {\n return <Spinner size=\"sm\" />;\n }\n\n return (\n <Text.numeral\n rule=\"price\"\n dp={precision}\n rm={Decimal.ROUND_DOWN}\n ignoreDP\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 {token.amount!}\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\n name={symbol}\n url={(token as any).logo_uri}\n className=\"oui-size-[16px]\"\n />\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 \"oui-max-w-[200px] oui-truncate\",\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 loading?: boolean;\n testId?: string;\n formatters?: InputFormatter[];\n // TOOD: remove this prop\n vaultBalanceList?: API.VaultBalance[];\n displayType?: \"balance\" | \"vaultBalance\";\n tokenValueFormatter?: (value: string) => ReactNode;\n tokenShowCaret?: boolean;\n balancesRevalidating?: boolean;\n showBalance?: 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 onTokenChange,\n loading,\n placeholder,\n formatters,\n vaultBalanceList,\n displayType,\n tokenValueFormatter,\n tokenShowCaret,\n balancesRevalidating,\n showBalance,\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 };\n });\n }, [tokens, value, vaultBalanceList]);\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 displayType={displayType}\n onTokenChange={(item) => {\n onTokenChange?.(item);\n setOpen(false);\n }}\n open={selectOpen}\n isLoading={balancesRevalidating}\n showBalance={showBalance}\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, ReactNode, useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n AlertDialog,\n cn,\n EditIcon,\n Flex,\n Input,\n inputFormatter,\n Text,\n Tips,\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 dp?: number;\n message?: ReactNode;\n validate?: (value: number) => string;\n}\n\nconst options = [0.5, 1, 2];\n\nexport const Slippage: FC<SlippageProps> = (props) => {\n const { min = 0.2, max = 10, dp = 2 } = 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 errorMessage = useMemo(() => {\n return props.validate?.(getValue()!);\n }, [value, customValue, props.validate]);\n\n const content = (\n <div className=\"oui-text-2xs\">\n <Flex gapX={1} itemAlign=\"center\">\n <Text size=\"sm\" intensity={54}>\n {t(\"transfer.slippage.slippageTolerance\")}\n </Text>\n <Tips\n content={t(\"transfer.slippage.slippageTolerance.description\")}\n title={t(\"common.tips\")}\n classNamss={{\n trigger: \"oui-mt-[2px] oui-size-4\",\n }}\n />\n </Flex>\n\n <Flex gapX={2} mt={3}>\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(dp),\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 suffix: \"oui-text-base-contrast-36\",\n }}\n />\n </Flex>\n {errorMessage && (\n <Flex mt={6}>\n <Text\n size=\"2xs\"\n color=\"warning\"\n className=\"oui-w-full oui-text-center\"\n >\n {errorMessage}\n </Text>\n </Flex>\n )}\n </div>\n );\n\n return (\n <>\n <AlertDialog\n open={open}\n onOpenChange={setOpen}\n title={t(\"transfer.slippage\")}\n okLabel={t(\"common.save\")}\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-darken 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 } 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 { FC, useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { cn, Flex, Text } from \"@orderly.network/ui\";\nimport { Decimal, formatWithPrecision } from \"@orderly.network/utils\";\n\ninterface ConvertRateProps {\n className?: string;\n sourceSymbol?: string;\n targetSymbol?: string;\n swapPrice: number | string;\n precision?: number;\n swapPriceInUSD?: number | string;\n}\n\nexport const ConvertRate: FC<ConvertRateProps> = (props) => {\n const {\n sourceSymbol,\n targetSymbol,\n swapPrice,\n precision = 6,\n swapPriceInUSD,\n } = props;\n\n const { t } = useTranslation();\n\n const formatSwapPrice = useMemo(() => {\n return formatWithPrecision(swapPrice, precision);\n }, [swapPrice, precision]);\n\n const suffix = swapPriceInUSD ? (\n <div>\n ($<Text>{swapPriceInUSD}</Text>)\n </div>\n ) : undefined;\n\n return (\n <Flex width={\"100%\"} itemAlign=\"center\" justify=\"between\">\n <Text size=\"2xs\" intensity={36}>\n {t(\"transfer.deposit.convertRate\")}\n </Text>\n <Flex\n itemAlign=\"center\"\n gap={1}\n className={cn(\n props.className,\n \"oui-text-2xs oui-text-base-contrast-36\",\n )}\n >\n <Text intensity={80}>1</Text>\n <span>{sourceSymbol}</span>\n <span>=</span>\n\n <Text intensity={80}>{formatSwapPrice}</Text>\n\n <span>{targetSymbol}</span>\n {suffix}\n </Flex>\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n CaretDownIcon,\n Flex,\n Text,\n TokenIcon,\n Tips,\n} from \"@orderly.network/ui\";\n\ntype DepositTokenValueFormatterProps = {\n value: string;\n userMaxQty?: number | null;\n};\n\nexport const DepositTokenValueFormatter: FC<\n DepositTokenValueFormatterProps\n> = ({ value, userMaxQty }) => {\n const { t } = useTranslation();\n\n const tipContent = (\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 {value}.\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 return (\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 {userMaxQty ?? 0}\n </Text.numeral>\n </Text>\n <Tips content={tipContent} title={t(\"common.tips\")} />\n </Flex>\n </Flex>\n );\n};\n","import { FC, useMemo, ReactNode } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Box } from \"@orderly.network/ui\";\n\ntype NoticeProps = {\n message?: ReactNode;\n wrongNetwork?: boolean;\n};\n\nexport const Notice: FC<NoticeProps> = (props) => {\n const { message, wrongNetwork } = props;\n const { t } = useTranslation();\n\n const content = useMemo(() => {\n if (wrongNetwork) {\n return t(\"connector.wrongNetwork.tooltip\");\n }\n\n return message;\n }, [message, 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, Flex, textVariants } 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 { Web3Wallet } from \"../web3Wallet\";\nimport { YieldBearingReminder } from \"../yieldBearingReminder\";\nimport { ConvertRate } from \"./components/convertRate\";\nimport { DepositTokenValueFormatter } from \"./components/depositTokenValueFormatter\";\nimport { Notice } from \"./components/notice\";\nimport { type DepositFormScriptReturn } 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 quantity,\n collateralContributionQuantity,\n maxQuantity,\n maxDepositAmount,\n onQuantityChange,\n hintMessage,\n inputStatus,\n targetInputStatus,\n targetHintMessage,\n chains,\n currentChain,\n settingChain,\n onChainChange,\n actionType,\n onDeposit,\n onApprove,\n onApproveAndDeposit,\n wrongNetwork,\n balanceRevalidating,\n loading,\n disabled,\n networkId,\n fee,\n collateralRatio,\n currentLTV,\n nextLTV,\n slippage,\n onSlippageChange,\n swapMinReceived,\n needSwap,\n swapPrice,\n swapPriceInUSD,\n warningMessage,\n usdcToken,\n targetQuantity,\n targetQuantityLoading,\n batchBalancesRevalidating,\n showSourceDepositCap,\n showTargetDepositCap,\n slippageValidate,\n quantityNotional,\n } = props;\n\n const { t } = useTranslation();\n\n const tokenValueFormatter = (value: string) => (\n <DepositTokenValueFormatter\n value={value}\n userMaxQty={targetToken?.user_max_qty}\n />\n );\n\n const renderContent = () => {\n return (\n <Flex direction=\"column\" itemAlign=\"start\" mt={2} gap={1}>\n {needSwap && (\n <ConvertRate\n sourceSymbol={sourceToken?.display_name || sourceToken?.symbol}\n targetSymbol={targetToken?.display_name || targetToken?.symbol}\n precision={targetToken?.precision}\n swapPrice={swapPrice!}\n swapPriceInUSD={swapPriceInUSD}\n />\n )}\n <CollateralRatioWidget value={collateralRatio} />\n <CollateralContribution\n // it need to use USDC precision\n precision={usdcToken?.precision}\n value={collateralContributionQuantity}\n />\n <LtvWidget\n showDiff={typeof quantity !== \"undefined\" && Number(quantity) > 0}\n currentLtv={currentLTV}\n nextLTV={nextLTV}\n />\n\n {needSwap && (\n <>\n <Slippage\n value={slippage}\n onValueChange={onSlippageChange}\n min={0.01}\n max={50}\n validate={slippageValidate}\n />\n <MinimumReceived\n value={swapMinReceived!}\n symbol={targetToken?.symbol ?? \"\"}\n precision={targetToken?.precision}\n />\n </>\n )}\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 data-testId=\"oui-testid-deposit-dialog-quantity-input\"\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 // when show deposit cap, hide select caret\n tokenShowCaret={!showSourceDepositCap && sourceTokens?.length > 1}\n tokenValueFormatter={\n showSourceDepositCap ? tokenValueFormatter : undefined\n }\n disabled={!props.isLoggedIn}\n balancesRevalidating={batchBalancesRevalidating}\n showBalance\n />\n </Box>\n\n <AvailableQuantity\n token={sourceToken}\n quantity={quantity}\n maxQuantity={maxQuantity}\n notional={quantityNotional}\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 classNames={{\n root: \"oui-mt-3 oui-border-transparent focus-within:oui-outline-transparent\",\n }}\n token={targetToken}\n tokens={targetTokens}\n onTokenChange={onTargetTokenChange}\n value={targetQuantity}\n loading={targetQuantityLoading}\n disabled={!props.isLoggedIn}\n readOnly\n status={targetInputStatus}\n hintMessage={targetHintMessage}\n // when show deposit cap, hide select caret\n tokenShowCaret={!showTargetDepositCap && targetTokens?.length > 1}\n tokenValueFormatter={\n showTargetDepositCap ? tokenValueFormatter : undefined\n }\n />\n {renderContent()}\n </Box>\n\n <Notice message={warningMessage} wrongNetwork={wrongNetwork} />\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 { useMemo } from \"react\";\nimport { DepositAction } from \"../../../types\";\n\ntype Options = {\n allowance: string;\n quantity: string;\n maxQuantity: string;\n};\n\nexport function useActionType(options: Options) {\n const { allowance, quantity, maxQuantity } = options;\n\n const actionType = useMemo(() => {\n const allowanceNum = 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.ApproveAndDeposit;\n }\n\n return DepositAction.Deposit;\n }, [allowance, quantity, maxQuantity]);\n\n return actionType;\n}\n","import { useCallback, useMemo } from \"react\";\nimport {\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\";\nimport { CurrentChain } from \"../../../types\";\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 { useMemo } from \"react\";\nimport { useComputedLTV } from \"@orderly.network/hooks\";\nimport { account as accountPerp } from \"@orderly.network/perp\";\nimport { API } from \"@orderly.network/types\";\n\nconst { collateralRatio, collateralContribution } = accountPerp;\n\nexport const useCollateralValue = (params: {\n sourceToken?: API.TokenInfo;\n targetToken?: API.TokenInfo;\n quantity: string;\n indexPrice?: number;\n}) => {\n const { sourceToken, targetToken, indexPrice } = params;\n\n const quantity = Number(params.quantity);\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: indexPrice ?? 0,\n });\n }, [targetToken, quantity, sourceToken?.user_max_qty, indexPrice]);\n\n const collateralContributionQuantity = useMemo(() => {\n return collateralContribution({\n collateralQty: quantity,\n collateralCap: sourceToken?.user_max_qty ?? quantity,\n collateralRatio: memoizedCollateralRatio.toNumber(),\n indexPrice: indexPrice ?? 0,\n });\n }, [\n quantity,\n sourceToken?.user_max_qty,\n memoizedCollateralRatio,\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,\n nextLTV,\n };\n};\n","import { useQuery } from \"@orderly.network/hooks\";\nimport { API } from \"@orderly.network/types\";\n\nexport const useConvertThreshold = () => {\n const { data, error, isLoading } = useQuery<API.ConvertThreshold>(\n \"/v1/public/auto_convert_threshold\",\n {\n revalidateOnFocus: true,\n errorRetryCount: 3,\n },\n );\n\n return {\n ltv_threshold: data?.ltv_threshold,\n negative_usdc_threshold: data?.negative_usdc_threshold,\n isLoading,\n error,\n };\n};\n","import { i18n } from \"@orderly.network/i18n\";\nimport { API } from \"@orderly.network/types\";\n\nexport function sortTokensWithUSDCFirst(tokens: API.TokenInfo[] = []) {\n const sortedTokens = [...tokens];\n sortedTokens.sort((a, b) => {\n if (a.symbol === \"USDC\") return -1;\n if (b.symbol === \"USDC\") return 1;\n return 0;\n });\n return sortedTokens;\n}\n\n/** Prefer USDC, then USDC.e, then USDbC, then first token. Single pass, no extra object allocation. */\nexport const getUSDCToken = (\n tokens: API.TokenInfo[] = [],\n): API.TokenInfo | undefined => {\n let first: API.TokenInfo | undefined;\n let usdce: API.TokenInfo | undefined;\n let usdbc: API.TokenInfo | undefined;\n\n for (const token of tokens) {\n if (first === undefined) first = token;\n if (token.symbol === \"USDC\") return token;\n if (token.symbol === \"USDC.e\") usdce = token;\n if (token.symbol === \"USDbC\") usdbc = token;\n }\n\n return usdce ?? usdbc ?? first;\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\nexport const DEPOSIT_ERROR_CODE_MAP = {\n AccessControlBadConfirmation: \"0x6697b232\",\n AccessControlUnauthorizedAccount: \"0xe2517d3f\",\n AccountIdInvalid: \"0xc7ee9ce6\",\n AddressZero: \"0x9fabe1c1\",\n BalanceNotEnough: \"0x4b3815a6\",\n BrokerNotAllowed: \"0x59d9b863\",\n CeffuAddressMismatch: \"0xf67c6d78\",\n DepositExceedLimit: \"0xd969df24\",\n EnumerableSetError: \"0xa65b249b\",\n InvalidSwapSignature: \"0x06a0cf4a\",\n InvalidTokenAddress: \"0x1eb00b06\",\n NativeTokenDepositAmountMismatch: \"0xfa7c7537\",\n NotRebalanceEnableToken: \"0xad674ae6\",\n NotZeroCodeLength: \"0x623793c9\",\n OnlyCrossChainManagerCanCall: \"0x833d33e7\",\n ReentrancyGuardReentrantCall: \"0x3ee5aeb5\",\n SwapAlreadySubmitted: \"0x0b693144\",\n TokenNotAllowed: \"0xa29c4986\",\n ZeroCodeLength: \"0x30773dbb\",\n ZeroDeposit: \"0x56316e87\",\n ZeroDepositFee: \"0x93d3bb4d\",\n};\n\nexport function getDepositKnownErrorMessage(message: string) {\n if (!message) {\n return \"\";\n }\n\n for (const key of Object.keys(DEPOSIT_ERROR_CODE_MAP)) {\n const value =\n DEPOSIT_ERROR_CODE_MAP[key as keyof typeof DEPOSIT_ERROR_CODE_MAP];\n\n if (message.includes(value)) {\n return `${key} (${value})`;\n }\n }\n\n return \"\";\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 approve: (quantity?: string) => Promise<any>;\n deposit: () => Promise<any>;\n onSuccess?: () => void;\n swapDeposit?: () => Promise<any>;\n needSwap?: boolean;\n};\n\nexport function useDepositAction(options: Options) {\n const { quantity, approve, deposit, swapDeposit, onSuccess, needSwap } =\n options;\n const [isMutating, setIsMutating] = useState(false);\n const [depositError, setDepositError] = useState(\"\");\n\n const ee = useEventEmitter();\n const { t } = useTranslation();\n\n const doDeposit = useCallback(async () => {\n try {\n await deposit();\n setDepositError(\"\");\n } catch (err: any) {\n console.error(\"orderly deposit error\", err);\n const knownErrorMessage = getDepositKnownErrorMessage(err.message);\n if (knownErrorMessage) {\n setDepositError(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 throw err;\n }\n }, [deposit, onSuccess, t, ee]);\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 (isMutating) return;\n\n setIsMutating(true);\n\n try {\n if (needSwap) {\n await swapDeposit?.();\n } else {\n await doDeposit();\n }\n toast.success(t(\"transfer.deposit.requested\"));\n ee.emit(\"deposit:requested\");\n onSuccess?.();\n } catch (err: any) {\n // all errors are handled by toast.error in doDeposit or swapDeposit\n } finally {\n setIsMutating(false);\n }\n }, [quantity, isMutating, needSwap, doDeposit, swapDeposit, t]);\n\n const onApprove = useCallback(async () => {\n if (isMutating) return;\n setIsMutating(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 setIsMutating(false);\n }\n }, [approve, isMutating, quantity, t]);\n\n const onApproveAndDeposit = useCallback(async () => {\n if (isMutating) return;\n setIsMutating(true);\n\n try {\n await onApprove();\n await onDeposit();\n } catch (err) {\n console.error(\"approve and deposit error\", err);\n } finally {\n setIsMutating(false);\n }\n }, [isMutating, onApprove, onDeposit]);\n\n return {\n isMutating,\n depositError,\n setDepositError,\n onApprove,\n onDeposit,\n onApproveAndDeposit,\n };\n}\n","import { useMemo } from \"react\";\nimport { useAccount, useTokenInfo } from \"@orderly.network/hooks\";\nimport { ChainNamespace } from \"@orderly.network/types\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport type UseDepositFeeReturn = ReturnType<typeof useDepositFee>;\n\nexport function useDepositFee(options: {\n nativeSymbol?: string;\n depositFee?: bigint;\n getIndexPrice: (token: string) => number;\n}) {\n const { nativeSymbol, depositFee = 0, getIndexPrice } = options;\n const { account } = useAccount();\n\n const tokenInfo = useTokenInfo(nativeSymbol!);\n\n const feeProps = useMemo(() => {\n // deposit fee is native token, so evm decimals is 18, solana is 9\n const decimals =\n account.walletAdapter?.chainNamespace === ChainNamespace.solana ? 9 : 18;\n\n const dstGasFee = new Decimal(depositFee.toString())\n .div(new Decimal(10).pow(decimals))\n .toString();\n\n const indexPrice = getIndexPrice(nativeSymbol!);\n\n const feeAmount = new Decimal(dstGasFee).mul(indexPrice || 0).toString();\n\n return {\n dstGasFee,\n feeQty: dstGasFee,\n feeAmount,\n dp: tokenInfo?.decimals || 8,\n };\n }, [depositFee, tokenInfo]);\n\n return feeProps;\n}\n","import { useMemo } from \"react\";\nimport { API } from \"@orderly.network/types\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport const useMaxDepositAmount = (\n sourceToken?: API.TokenInfo,\n balance?: string,\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 }, [sourceToken, balance]);\n\n return maxDepositAmount;\n};\n","import { useMemo } from \"react\";\nimport { API } from \"@orderly.network/types\";\nimport { Decimal, formatWithPrecision } from \"@orderly.network/utils\";\nimport { useMaxDepositAmount } from \"./useMaxDepositAmount\";\n\nexport type GetIndexPrice = (symbol: string) => number | undefined;\n\nexport type UseDepositFormQuantitiesParams = {\n sourceToken?: API.TokenInfo;\n targetToken?: API.TokenInfo;\n balance?: string;\n quantity: string;\n needSwap: boolean;\n swapQuantity?: string;\n swapPrice?: number;\n getIndexPrice: GetIndexPrice;\n};\n\nexport const useDepositFormQuantities = ({\n sourceToken,\n targetToken,\n balance,\n quantity,\n needSwap,\n swapQuantity,\n swapPrice,\n getIndexPrice,\n}: UseDepositFormQuantitiesParams) => {\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 = useMaxDepositAmount(sourceToken, balance);\n\n const targetQuantity = useMemo(() => {\n if (needSwap) {\n return swapQuantity\n ? new Decimal(swapQuantity)\n ?.todp(targetToken?.precision ?? 6, Decimal.ROUND_DOWN)\n .toString()\n : undefined;\n }\n return quantity;\n }, [needSwap, swapQuantity, quantity, targetToken?.precision]);\n\n const swapPriceInUSD = useMemo(() => {\n if (swapPrice && targetToken?.symbol) {\n const indexPrice = getIndexPrice(targetToken.symbol);\n if (!indexPrice) return undefined;\n const num = new Decimal(swapPrice).mul(indexPrice);\n return formatWithPrecision(num, 2);\n }\n }, [swapPrice, targetToken?.symbol, getIndexPrice]);\n\n const quantityNotional = useMemo(() => {\n const indexPrice = needSwap\n ? swapPrice\n : getIndexPrice(sourceToken?.symbol!);\n\n if (quantity && indexPrice) {\n return new Decimal(quantity).mul(indexPrice).toNumber();\n }\n return 0;\n }, [quantity, sourceToken?.symbol, swapPrice, needSwap, getIndexPrice]);\n\n const indexPrice = useMemo(() => {\n return getIndexPrice(sourceToken?.symbol!);\n // update by quantity changes (revalidate when quantity changes)\n }, [quantity, sourceToken?.symbol]);\n\n const swapIndexPrice = useMemo(() => {\n return getIndexPrice(sourceToken?.symbol!);\n // update by swapPrice changes (revalidate when swapPrice changes)\n }, [swapPrice, sourceToken?.symbol]);\n\n return {\n maxQuantity,\n maxDepositAmount,\n targetQuantity,\n swapPriceInUSD,\n quantityNotional,\n indexPrice,\n swapIndexPrice,\n };\n};\n","import { useCallback, useMemo } from \"react\";\nimport { useAccount } from \"@orderly.network/hooks\";\nimport { Trans, useTranslation } from \"@orderly.network/i18n\";\nimport { API, ChainNamespace } from \"@orderly.network/types\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { InputStatus } from \"../../../types\";\nimport { CurrentChain } from \"../../../types\";\nimport { DEPOSIT_ERROR_CODE_MAP } from \"../../../utils\";\n\ntype Options = {\n sourceToken?: API.TokenInfo;\n targetToken?: API.TokenInfo;\n quantity: string;\n targetQuantity?: string;\n maxQuantity: string;\n isNativeToken: boolean;\n depositFee: bigint;\n depositFeeRevalidating: boolean;\n nativeBalanceRevalidating: boolean;\n dstGasFee: string;\n nativeSymbol?: string;\n nativeBalance?: string;\n account: ReturnType<typeof useAccount>[\"account\"];\n currentChain: CurrentChain | null;\n depositError: string;\n needSwap: boolean;\n};\n\nexport const useDepositValidation = (options: Options) => {\n const {\n sourceToken,\n targetToken,\n quantity,\n targetQuantity,\n maxQuantity,\n isNativeToken,\n depositFee,\n depositFeeRevalidating,\n nativeBalanceRevalidating,\n dstGasFee,\n nativeSymbol,\n nativeBalance,\n account,\n currentChain,\n depositError,\n needSwap,\n } = options;\n const { t } = useTranslation();\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 const totalNeeded = new Decimal(quantity).add(dstGasFee || 0);\n return totalNeeded.gt(maxQuantity || 0);\n }\n return false;\n }, [\n isNativeToken,\n quantity,\n depositFeeRevalidating,\n insufficientBalance,\n dstGasFee,\n maxQuantity,\n ]);\n\n const isExceedSourceTokenCap = 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 new Decimal(quantity).gt(sourceToken.user_max_qty);\n }\n return false;\n }, [sourceToken, targetToken, quantity]);\n\n const isExceedTargetTokenCap = useMemo(() => {\n if (\n targetToken?.symbol !== \"USDC\" &&\n sourceToken?.symbol !== targetToken?.symbol &&\n targetToken?.is_collateral &&\n targetToken?.user_max_qty !== undefined &&\n targetToken?.user_max_qty !== -1 &&\n targetQuantity &&\n !isNaN(Number(targetQuantity))\n ) {\n // when target quantity exceeds 90% of the max quantity\n return new Decimal(targetQuantity).gte(\n new Decimal(targetToken.user_max_qty).mul(0.9),\n );\n }\n return false;\n }, [targetToken, targetQuantity]);\n\n const showSourceDepositCap =\n !needSwap &&\n sourceToken?.user_max_qty !== undefined &&\n sourceToken?.user_max_qty !== -1;\n\n const showTargetDepositCap =\n needSwap &&\n targetToken?.user_max_qty !== undefined &&\n targetToken?.user_max_qty !== -1;\n\n const depositExceedLimit = useMemo(() => {\n return depositError?.includes(DEPOSIT_ERROR_CODE_MAP.DepositExceedLimit);\n }, [depositError]);\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 !nativeBalanceRevalidating &&\n (account.walletAdapter?.chainNamespace === ChainNamespace.solana ||\n dstGasFee)\n ) {\n const notEnoughGas = new Decimal(nativeBalance || 0).lt(dstGasFee || 0);\n\n // when solana, if dstGasFee is 0, and nativeTokenBalance is 0, it means not token balance\n const isNotSolBalance =\n Number(dstGasFee) === 0 && Number(nativeBalance) == Number(dstGasFee);\n\n if (notEnoughGas || isNotSolBalance) {\n return t(\"transfer.deposit.notEnoughGas\", {\n token: nativeSymbol,\n });\n }\n }\n }, [\n dstGasFee,\n quantity,\n nativeBalanceRevalidating,\n depositFeeRevalidating,\n t,\n nativeSymbol,\n insufficientBalance,\n account,\n nativeBalance,\n ]);\n\n const gasFeeMessage = useMemo(() => {\n if (insufficientNativeTotal) {\n return t(\"transfer.deposit.gasFee.error\", {\n token: sourceToken?.symbol,\n });\n }\n }, [t, insufficientNativeTotal, sourceToken?.symbol]);\n\n const globalMaxQtyMessage = useMemo(() => {\n if (\n sourceToken?.symbol !== \"USDC\" &&\n sourceToken?.symbol === targetToken?.symbol &&\n sourceToken?.is_collateral &&\n depositExceedLimit\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 }, [\n depositExceedLimit,\n sourceToken?.symbol,\n sourceToken?.is_collateral,\n targetToken?.symbol,\n currentChain,\n t,\n ]);\n\n const feeWarningMessage = useMemo(() => {\n if (\n quantity &&\n Number(quantity) > 0 &&\n depositFee === 0n &&\n !depositFeeRevalidating &&\n account.walletAdapter?.chainNamespace !== ChainNamespace.solana\n ) {\n return t(\"transfer.deposit.feeUnavailable\");\n }\n }, [t, quantity, depositFee, depositFeeRevalidating, account]);\n\n const { inputStatus, hintMessage } = useMemo<{\n inputStatus: InputStatus;\n hintMessage: string;\n }>(() => {\n if (!quantity) {\n return { inputStatus: \"default\", hintMessage: \"\" };\n }\n\n if (insufficientBalance) {\n return {\n inputStatus: \"error\",\n hintMessage: t(\"transfer.insufficientBalance\"),\n };\n }\n\n if (isExceedSourceTokenCap) {\n return {\n inputStatus: \"error\",\n hintMessage: t(\"transfer.deposit.exceedCap\"),\n };\n }\n\n return { inputStatus: \"default\", hintMessage: \"\" };\n }, [t, insufficientBalance, isExceedSourceTokenCap]);\n\n const { targetInputStatus, targetHintMessage } = useMemo<{\n targetInputStatus: InputStatus;\n targetHintMessage: string;\n }>(() => {\n // when target error, set target input status to default\n if (!targetQuantity || inputStatus === \"error\") {\n return { targetInputStatus: \"default\", targetHintMessage: \"\" };\n }\n\n if (isExceedTargetTokenCap) {\n return {\n targetInputStatus: \"error\",\n targetHintMessage: t(\"transfer.deposit.closeToMaxLimit\"),\n };\n }\n\n return { targetInputStatus: \"default\", targetHintMessage: \"\" };\n }, [t, targetQuantity, isExceedTargetTokenCap, inputStatus]);\n\n const slippageValidate = useCallback(\n (value: number) => {\n if (value && value >= 5) {\n return t(\"transfer.slippage.error.high\");\n }\n return \"\";\n },\n [t],\n );\n\n const validationMessage =\n globalMaxQtyMessage ||\n gasFeeMessage ||\n feeWarningMessage ||\n insufficientGasMessage;\n\n const depositDisabled =\n inputStatus === \"error\" ||\n // if exceed collateral cap, disable deposit button\n isExceedSourceTokenCap ||\n !!feeWarningMessage ||\n !!insufficientNativeTotal ||\n !!insufficientGasMessage;\n\n return {\n validationMessage,\n hintMessage,\n inputStatus,\n targetInputStatus,\n targetHintMessage,\n depositDisabled,\n showSourceDepositCap,\n showTargetDepositCap,\n slippageValidate,\n };\n};\n","import { useMemo } from \"react\";\nimport { UseDepositReturn, useSWR } from \"@orderly.network/hooks\";\nimport { API, nativeTokenAddress } from \"@orderly.network/types\";\n\nexport function useNativeBalance(options: {\n targetChain?: API.Chain;\n fetchBalance: UseDepositReturn[\"fetchBalance\"];\n}) {\n const { targetChain, fetchBalance } = options;\n\n const decimal = targetChain?.network_infos?.currency_decimal;\n\n const key = useMemo(() => {\n const chainId = targetChain?.network_infos?.chain_id;\n\n if (!chainId || !decimal) {\n return null;\n }\n\n return [\"nativeBalance\", chainId, decimal];\n }, [fetchBalance, targetChain, decimal]);\n\n const fetcher = async () => {\n const balance = await fetchBalance(nativeTokenAddress, decimal);\n return balance;\n };\n\n const { data: balance, isLoading } = useSWR<string>(key, fetcher, {\n revalidateOnFocus: true,\n refreshInterval: 3000,\n errorRetryCount: 3,\n });\n\n return { balance, isLoading };\n}\n","import { useCallback, useEffect, useState } from \"react\";\nimport { API } from \"@orderly.network/types\";\nimport { CurrentChain } from \"../../../types\";\nimport { sortTokensWithUSDCFirst } from \"../../../utils\";\n\nexport const useOrderlyTokens = (currentChain?: CurrentChain | null) => {\n const [orderlyTokens, setOrderlyTokens] = useState<API.TokenInfo[]>([]);\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 orderlyTokens = chainInfo.token_infos;\n\n const tokens = sortTokensWithUSDCFirst(orderlyTokens);\n\n setOrderlyTokens(tokens);\n }\n }, []);\n\n useEffect(() => {\n onChainInited(currentChain?.info);\n }, [currentChain]);\n\n return orderlyTokens;\n};\n","import { useEffect, useState } from \"react\";\nimport { useConfig } from \"@orderly.network/hooks\";\nimport { NetworkId, type API } from \"@orderly.network/types\";\n\nexport const useToken = (orderlyTokens: API.TokenInfo[]) => {\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 networkId = useConfig(\"networkId\") as NetworkId;\n\n useEffect(() => {\n const usdcToken = orderlyTokens[0];\n if (!usdcToken) {\n return;\n }\n setSourceToken(usdcToken);\n setTargetToken(usdcToken);\n\n setSourceTokens(orderlyTokens);\n setTargetTokens([usdcToken]);\n }, [orderlyTokens]);\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 collateralTokens = sourceTokens.filter((item) => item.is_collateral)!;\n const usdcToken = sourceTokens.find((item) => item.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([\n sourceToken,\n ...collateralTokens.filter(\n (item) => item.symbol !== sourceToken.symbol,\n ),\n ]);\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(usdcToken || collateralTokens[0]);\n setTargetTokens(collateralTokens);\n }, [networkId, sourceToken, sourceTokens]);\n\n return {\n sourceToken,\n targetToken,\n\n sourceTokens,\n targetTokens,\n\n setSourceTokens,\n\n onSourceTokenChange: setSourceToken,\n onTargetTokenChange: setTargetToken,\n };\n};\n","import { API, isNativeTokenChecker } from \"@orderly.network/types\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport const fetcher = (url: string) => fetch(url).then((res) => res.json());\n\nexport function mergeTokens(\n orderlyTokens: API.TokenInfo[],\n swapTokens: API.TokenInfo[],\n) {\n const tokens = orderlyTokens.map((item) => {\n return {\n ...item,\n swap_enable: swapTokens.some((swapToken) => {\n return swapToken.address?.toLowerCase() === item.address?.toLowerCase();\n }),\n } as API.TokenInfo;\n });\n\n swapTokens.forEach((swapToken) => {\n const orderlyToken = orderlyTokens.find((item) => {\n return (\n item.address?.toLowerCase() === swapToken.address?.toLowerCase() ||\n item.symbol === swapToken.symbol\n );\n });\n\n if (!orderlyToken) {\n tokens.push(swapToken);\n }\n });\n\n return tokens;\n}\n\nexport function filterAndSortTokens(\n orderlyTokens: API.TokenInfo[] = [],\n swapTokens: API.TokenInfo[] = [],\n tokenBalances: Record<string, string> = {},\n getIndexPrice: (token: string) => number,\n) {\n const mergedTokens = mergeTokens(orderlyTokens, swapTokens);\n\n const filteredTokens = mergedTokens\n .map((item) => {\n const quantity = tokenBalances[item.symbol!];\n const amount = new Decimal(quantity || 0)\n .todp(item.precision || 6, Decimal.ROUND_DOWN)\n .toNumber();\n\n return {\n ...item,\n quantity,\n amount,\n };\n })\n .filter((item) => {\n return item.is_collateral || item.amount > 0;\n });\n\n const list = filteredTokens.map((item) => {\n const indexPrice = getIndexPrice(item.symbol!);\n\n const balance = new Decimal(item.amount || 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 const STABLECOIN_ORDER: Record<string, number> = {\n USDC: 0,\n \"USDC.e\": 1,\n USDT: 2,\n };\n const getStablecoinRank = (symbol: string | undefined) =>\n symbol !== undefined && symbol in STABLECOIN_ORDER\n ? STABLECOIN_ORDER[symbol]\n : Number.MAX_SAFE_INTEGER;\n\n return list.sort((a, b) => {\n // 1. Orderly supported collateral first\n if (a.is_collateral !== b.is_collateral) {\n return a.is_collateral ? -1 : 1;\n }\n\n // 2. Among collateral: stablecoins (USDC, USDC.e, USDT) first\n if (a.is_collateral && b.is_collateral) {\n const rankA = getStablecoinRank(a.symbol);\n const rankB = getStablecoinRank(b.symbol);\n if (rankA !== rankB) return rankA - rankB;\n\n // 3. Gas/native token (only when also collateral) after stablecoins\n if (a.isNativeToken !== b.isNativeToken) {\n return a.isNativeToken ? -1 : 1;\n }\n }\n\n // 4. Alphabetically A–Z\n return (a.symbol || \"\").localeCompare(b.symbol || \"\");\n });\n}\n","import { useMemo } from \"react\";\nimport { UseDepositReturn, useSWR } from \"@orderly.network/hooks\";\nimport { API, EMPTY_OBJECT } from \"@orderly.network/types\";\nimport { mergeTokens } from \"../utils\";\n\nexport const useTokenBalances = (options: {\n orderlyTokens: API.TokenInfo[];\n swapTokens: API.TokenInfo[];\n fetchBalances: UseDepositReturn[\"fetchBalances\"];\n}) => {\n const { orderlyTokens, swapTokens, fetchBalances } = options;\n\n const tokens = useMemo(\n () => mergeTokens(orderlyTokens, swapTokens),\n [orderlyTokens, swapTokens],\n );\n\n const key = useMemo(() => {\n if (tokens?.length > 0) {\n // use tokens serialization as key, ensure tokens change to re-request\n return [\"tokenBalances\", tokens.map((item) => item.symbol).join(\",\")];\n }\n return null;\n }, [tokens]);\n\n const fetcher = async () => {\n if (!tokens || tokens.length === 0) {\n return EMPTY_OBJECT;\n }\n const balances = await fetchBalances(tokens);\n // console.info(\"tokenBalances =>\", balances);\n\n return balances;\n };\n\n const { data: balances = EMPTY_OBJECT, isLoading } = useSWR(key, fetcher, {\n revalidateOnFocus: true,\n refreshInterval: 10000,\n errorRetryInterval: 3000,\n errorRetryCount: 3,\n });\n\n const loading = useMemo(() => {\n if (Object.keys(balances).length === 0) {\n return true;\n }\n return isLoading;\n }, [isLoading, balances]);\n\n return { balances, isLoading: loading };\n};\n","import { useMemo } from \"react\";\nimport { useSWR } from \"@orderly.network/hooks\";\nimport { fetcher } from \"../utils\";\nimport type { SupportedChainItem, SupportedChainsResponse } from \"./type\";\n\nconst SUPPORTED_CHAINS_URL =\n \"https://api.woofi.com/woofi_dex/depositor/supported_chains\";\n\nexport const useSwapSupportedChains = (chainId?: number | string) => {\n const { data, isLoading } = useSWR<SupportedChainsResponse>(\n SUPPORTED_CHAINS_URL,\n fetcher,\n {\n revalidateOnFocus: false,\n },\n );\n\n const chains = useMemo((): SupportedChainItem[] => {\n if (!data || data.status !== \"ok\") return [];\n return data.data?.perp_vault?.filter((c) => c.same_chain_deposit === true);\n }, [data]);\n\n const chain = useMemo(() => {\n if (!chainId || !chains?.length) return null;\n return chains.find((c) => c.chain_id === parseInt(chainId as string));\n }, [chains, chainId]);\n\n return {\n chains,\n chain,\n isLoading,\n };\n};\n","import { useMemo } from \"react\";\nimport { useSWR } from \"@orderly.network/hooks\";\nimport { API } from \"@orderly.network/types\";\nimport { fetcher } from \"../utils\";\nimport { useSwapSupportedChains } from \"./useSwapSupportedChains\";\n\ntype SwapToken = {\n address: string;\n symbol: string;\n decimals: number;\n name: string;\n logoURI: string;\n eip2612: boolean;\n tags: string[];\n};\n\nexport const useSwapTokens = (\n chainId?: string | number,\n enableSwapDeposit?: boolean,\n) => {\n const { chain: swapSupportedChain } = useSwapSupportedChains(chainId);\n const url = useMemo(() => {\n if (enableSwapDeposit && swapSupportedChain) {\n return `https://widget-api.woofi.com/1inch_tokens?network=${swapSupportedChain.chain_key}`;\n }\n\n return null;\n }, [chainId, enableSwapDeposit, swapSupportedChain]);\n\n const { data } = useSWR(url, fetcher, {\n revalidateOnFocus: false,\n });\n\n // {\n // \"0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\": {\n // address: \"0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\",\n // symbol: \"ETH\",\n // decimals: 18,\n // name: \"Ether\",\n // logoURI:\n // \"https://tokens.1inch.io/0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee.png\",\n // eip2612: false,\n // tags: [\"crosschain\", \"GROUP:ETH\", \"native\", \"PEG:ETH\"],\n // }\n // }\n const tokens = useMemo(() => {\n const tokenMap = data?.tokens as Record<string, SwapToken>;\n return Object.values(tokenMap || {}).map((item) => ({\n symbol: item.symbol,\n address: item.address,\n decimals: item.decimals,\n // default precision is 8 for 1inch tokens\n precision: 8,\n swap_enable: true,\n // need to show token icon\n logo_uri: item.logoURI,\n }));\n }, [data]);\n\n return tokens as unknown as API.TokenInfo[];\n};\n","[\n {\n \"inputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [],\n \"name\": \"BridgeTokenNotEnough\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"DepositAmountExceed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"DstDepositorNotSet\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"EnforcedPause\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ExpectedPause\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"FromNotPair\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidBridgeAmount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidBridgeSlippage\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidCaller\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidDepositor\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidDstToToken\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidInitialization\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint16\",\n \"name\": \"optionType\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"InvalidOptionType\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidPerpVault\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidReceiver\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidSrcBridgeToken\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidSrcFromAmount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidSrcFromToken\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidWOOFiRouter\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotInitializing\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableInvalidOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableUnauthorizedAccount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"bits\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"SafeCastOverflowedUintDowncast\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint64\",\n \"name\": \"version\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint32\",\n \"name\": \"srcEid\",\n \"type\": \"uint32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"guid\",\n \"type\": \"bytes32\"\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\": \"bridgeToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"bridgeAmount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"swapBridgeAmount\",\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\": \"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\": \"enum IOrderlyDepositor.SwapType\",\n \"name\": \"swapType\",\n \"type\": \"uint8\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bool\",\n \"name\": \"ableToDeposit\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"OrderlyCrossDepositOnDstChain\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint32\",\n \"name\": \"dstEid\",\n \"type\": \"uint32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"guid\",\n \"type\": \"bytes32\"\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\": \"realBridgeAmount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"enum IOrderlyDepositor.SwapType\",\n \"name\": \"swapType\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"OrderlyCrossDepositOnSrcChain\",\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 {\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\": \"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\": \"enum IOrderlyDepositor.SwapType\",\n \"name\": \"swapType\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"OrderlyDeposit\",\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 \"inputs\": [],\n \"name\": \"BRIDGE_SLIPPAGE_BASE\",\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\": \"ETH_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 \"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\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"address\",\n \"name\": \"fromToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"bridgeToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"fromAmount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"minBridgeAmount\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct IOrderlyDepositor.SrcInfo\",\n \"name\": \"srcInfo\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"eid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"bridgeToken\",\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\": \"uint128\",\n \"name\": \"orderlyBridgeFee\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"dstGasForCall\",\n \"type\": \"uint128\"\n }\n ],\n \"internalType\": \"struct IOrderlyDepositor.DstInfo\",\n \"name\": \"dstInfo\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"address\",\n \"name\": \"swapRouter\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct IOrderlyDepositor.SrcExtSwapInfo\",\n \"name\": \"srcExtSwapInfo\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"address\",\n \"name\": \"swapRouter\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"swapAmount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct IOrderlyDepositor.DstExtSwapInfo\",\n \"name\": \"dstExtSwapInfo\",\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 IOrderlyDepositor.PerpAccountInfo\",\n \"name\": \"dstPerpAccountInfo\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"crossDeposit\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"orderlyBridgeFee\",\n \"type\": \"uint128\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"address\",\n \"name\": \"fromToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"bridgeToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"fromAmount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"minBridgeAmount\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct IOrderlyDepositor.SrcInfo\",\n \"name\": \"info\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"address\",\n \"name\": \"swapRouter\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct IOrderlyDepositor.SrcExtSwapInfo\",\n \"name\": \"extSwapInfo\",\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 IOrderlyDepositor.PerpAccountInfo\",\n \"name\": \"perpAccountInfo\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"deposit\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"\",\n \"type\": \"uint32\"\n }\n ],\n \"name\": \"depositors\",\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\": \"_stuckToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"_amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"inCaseTokenGotStuck\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_weth\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_woofiRouter\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_sgInfo\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_guid\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"_message\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"lzCompose\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\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\": \"uint32\",\n \"name\": \"\",\n \"type\": \"uint32\"\n }\n ],\n \"name\": \"perpVaults\",\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 \"components\": [\n {\n \"internalType\": \"address\",\n \"name\": \"fromToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"bridgeToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"fromAmount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"minBridgeAmount\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct IOrderlyDepositor.SrcInfo\",\n \"name\": \"srcInfo\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"eid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"bridgeToken\",\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\": \"uint128\",\n \"name\": \"orderlyBridgeFee\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"dstGasForCall\",\n \"type\": \"uint128\"\n }\n ],\n \"internalType\": \"struct IOrderlyDepositor.DstInfo\",\n \"name\": \"dstInfo\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"composeMsg\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"quoteLayerZeroFee\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\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\": [\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\": \"uint16\",\n \"name\": \"_chainId\",\n \"type\": \"uint16\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_depositor\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setDepositor\",\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\": \"_perpVault\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setPerpVault\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_woofiRouter\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setWOOFiRouter\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"sgInfo\",\n \"outputs\": [\n {\n \"internalType\": \"contract ISgInfoV2\",\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\": \"woofiRouter\",\n \"outputs\": [\n {\n \"internalType\": \"contract IWOOFiRouterV2\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"stateMutability\": \"payable\",\n \"type\": \"receive\"\n }\n]\n","import { useLocalStorage } from \"@orderly.network/hooks\";\n\nconst ORDERLY_SWAP_DEPOSIT_SLIPPAGE_KEY = \"orderly_swap_deposit_slippage\";\n\nexport const useSlippage = () => {\n const [slippage, setSlippage] = useLocalStorage(\n ORDERLY_SWAP_DEPOSIT_SLIPPAGE_KEY,\n 1,\n );\n\n return { slippage, onSlippageChange: setSlippage };\n};\n","import { useMemo } from \"react\";\nimport { useSWR } from \"@orderly.network/hooks\";\nimport { API } from \"@orderly.network/types\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { fetcher } from \"../utils\";\nimport { type SwapQuoteResponse } from \"./type\";\nimport { useSwapSupportedChains } from \"./useSwapSupportedChains\";\n\nexport const useSwapQuote = (options: {\n sourceToken?: API.TokenInfo;\n targetToken?: API.TokenInfo;\n quantity: string;\n chainId?: number;\n slippage: number;\n}) => {\n const { sourceToken, targetToken, quantity, chainId, slippage } = options;\n\n const { chain: swapSupportedChain } = useSwapSupportedChains(chainId);\n\n const url = useMemo(() => {\n const chainKey = swapSupportedChain?.chain_key;\n\n const urlSearchParams = new URLSearchParams();\n\n const isSwapDeposit =\n sourceToken?.swap_enable &&\n sourceToken?.address &&\n targetToken?.address &&\n sourceToken?.address !== targetToken?.address;\n\n if (!isSwapDeposit || !chainKey || !quantity || !slippage) {\n return null;\n }\n\n const amount = new Decimal(quantity)\n .mul(Math.pow(10, sourceToken.decimals!))\n // use toFixed(0) to avoid show 1e+21 value\n .toFixed(0);\n\n urlSearchParams.set(\"from_token\", sourceToken.address!);\n urlSearchParams.set(\"to_token\", targetToken.address!);\n urlSearchParams.set(\"from_amount\", amount);\n urlSearchParams.set(\"network\", chainKey);\n urlSearchParams.set(\"slippage\", slippage.toString());\n urlSearchParams.set(\"extra_fee_rate\", \"0\");\n\n return `https://api.woofi.com/v2/swap?${urlSearchParams.toString()}`;\n }, [\n sourceToken,\n targetToken,\n quantity,\n chainId,\n slippage,\n swapSupportedChain,\n ]);\n\n const { data, isLoading: swapPriceRevalidating } = useSWR<SwapQuoteResponse>(\n url,\n fetcher,\n {\n revalidateOnFocus: false,\n refreshInterval: 10000,\n shouldRetryOnError: false,\n },\n );\n\n const swapData = useMemo(() => {\n if (!data) return;\n if (data.status === \"ok\") {\n return data.data;\n }\n }, [data]);\n\n const error = useMemo(() => {\n if (!data) return;\n if (data.status === \"fail\") {\n return data.error?.message?.[\"1inch\"]?.error?.description;\n }\n }, [data]);\n\n const { swapQuantity, swapMinReceived } = useMemo(() => {\n if (!swapData) return {};\n const decimals = targetToken?.decimals! || 0;\n const swapQuantity = new Decimal(swapData.outcomes.amount || 0)\n .div(Math.pow(10, decimals))\n .toString();\n\n const swapMinReceived = new Decimal(swapData.infos.min_to_amount || 0)\n .div(Math.pow(10, decimals))\n .toString();\n\n return { swapQuantity, swapMinReceived };\n }, [swapData, targetToken?.decimals]);\n\n return {\n swapData,\n swapPrice: swapData?.price,\n swapMinReceived,\n swapQuantity,\n swapPriceRevalidating,\n error,\n };\n};\n","import { useCallback } from \"react\";\nimport { utils } from \"@orderly.network/core\";\nimport { useAccount, useConfig } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API, isNativeTokenChecker } from \"@orderly.network/types\";\nimport { toast } from \"@orderly.network/ui\";\nimport { CurrentChain } from \"../../../types\";\nimport swapContractAbi from \"./perp_vault_depositor.json\";\nimport { useSlippage } from \"./useSlippage\";\nimport { useSwapQuote } from \"./useSwapQuote\";\n\ntype SwapDepositOptions = {\n sourceToken?: API.TokenInfo;\n targetToken?: API.TokenInfo;\n currentChain?: CurrentChain | null;\n quantity: string;\n depositFee: bigint;\n};\n\nexport const SWAP_CONTRACT_ADDRESS =\n \"0xe18f1051d1cCeCb61572eb686e1beb34A8612bf3\";\n\nexport const useSwapDeposit = (options: SwapDepositOptions) => {\n const { sourceToken, targetToken, currentChain, quantity, depositFee } =\n options;\n const { account } = useAccount();\n const brokerId = useConfig(\"brokerId\") as string;\n\n const { slippage, onSlippageChange } = useSlippage();\n\n const { t } = useTranslation();\n\n const {\n swapData,\n swapPrice,\n swapQuantity,\n swapMinReceived,\n swapPriceRevalidating,\n error,\n } = useSwapQuote({\n sourceToken,\n targetToken,\n quantity,\n chainId: currentChain?.id,\n slippage,\n });\n\n const onSwapDeposit = useCallback(async () => {\n if (\n !account.address ||\n !account.walletAdapter ||\n !swapData ||\n !sourceToken ||\n !targetToken ||\n !brokerId\n ) {\n return;\n }\n\n const userAddress = account.address;\n\n const receiver = userAddress;\n const orderlyBridgeFee = depositFee;\n\n const info = {\n fromToken: swapData.infos.from_token,\n bridgeToken: swapData.infos.to_token,\n fromAmount: swapData.infos.from_amount,\n minBridgeAmount: swapData.infos.min_to_amount,\n };\n\n const extSwapInfo = {\n swapRouter: swapData[\"1inch\"].swap_router,\n data: swapData[\"1inch\"].data,\n };\n\n const perpAccountInfo = {\n accountId: account.accountIdHashStr,\n brokerHash: utils.parseBrokerHash(brokerId),\n tokenHash: utils.parseTokenHash(targetToken.symbol!),\n };\n\n const value = isNativeTokenChecker(sourceToken.address!)\n ? BigInt(swapData.infos.from_amount) + orderlyBridgeFee\n : orderlyBridgeFee;\n\n const payload = {\n from: userAddress,\n to: SWAP_CONTRACT_ADDRESS,\n data: [receiver, orderlyBridgeFee, info, extSwapInfo, perpAccountInfo],\n value,\n };\n\n console.info(\"swap deposit payload\", payload);\n\n try {\n const result = await account.walletAdapter.sendTransaction(\n SWAP_CONTRACT_ADDRESS,\n \"deposit\",\n payload,\n {\n abi: swapContractAbi,\n },\n );\n\n console.info(\"swap deposit result\", result);\n\n return result;\n } catch (err: any) {\n console.error(\"swap deposit error\", err);\n toast.error(err.message || t(\"common.somethingWentWrong\"));\n throw err;\n }\n }, [account, brokerId, swapData, sourceToken, targetToken, depositFee]);\n\n return {\n swapPrice,\n swapQuantity,\n swapMinReceived,\n swapPriceRevalidating,\n slippage,\n onSlippageChange,\n onSwapDeposit,\n error,\n };\n};\n","import { useCallback, useEffect, useMemo } from \"react\";\nimport {\n useAccount,\n useConfig,\n useDeposit,\n useIndexPricesStream,\n useOrderlyContext,\n} from \"@orderly.network/hooks\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { NetworkId } from \"@orderly.network/types\";\nimport { useAuthGuard } from \"@orderly.network/ui-connector\";\nimport { useActionType } from \"./hooks/useActionType\";\nimport { useChainSelect } from \"./hooks/useChainSelect\";\nimport { useCollateralValue } from \"./hooks/useCollateralValue\";\nimport { useConvertThreshold } from \"./hooks/useConvertThreshold\";\nimport { useDepositAction } from \"./hooks/useDepositAction\";\nimport { useDepositFee } from \"./hooks/useDepositFee\";\nimport { useDepositFormQuantities } from \"./hooks/useDepositQuantities\";\nimport { useDepositValidation } from \"./hooks/useDepositValidation\";\nimport { useNativeBalance } from \"./hooks/useNativeBalance\";\nimport { useOrderlyTokens } from \"./hooks/useOrderlyTokens\";\nimport { useToken } from \"./hooks/useToken\";\nimport { useTokenBalances } from \"./hooks/useTokenBalances\";\nimport { useSwapTokens } from \"./swap/use1inchTokens\";\nimport { SWAP_CONTRACT_ADDRESS, useSwapDeposit } from \"./swap/useSwapDeposit\";\nimport { filterAndSortTokens } from \"./utils\";\n\nexport type DepositFormScriptReturn = ReturnType<typeof useDepositFormScript>;\n\nexport type DepositFormScriptOptions = {\n close?: () => void;\n};\n\nexport const useDepositFormScript = (options: DepositFormScriptOptions) => {\n const { wrongNetwork } = useAppContext();\n const { enableSwapDeposit } = useOrderlyContext();\n const { account } = useAccount();\n const networkId = useConfig(\"networkId\") as NetworkId;\n\n const { chains, currentChain, settingChain, onChainChange } =\n useChainSelect();\n\n const swapTokens = useSwapTokens(currentChain?.id, enableSwapDeposit);\n const orderlyTokens = useOrderlyTokens(currentChain);\n\n const {\n sourceToken,\n targetToken,\n sourceTokens,\n targetTokens,\n onSourceTokenChange,\n setSourceTokens,\n onTargetTokenChange,\n } = useToken(orderlyTokens);\n\n const { getIndexPrice } = useIndexPricesStream();\n\n const {\n balance,\n allowance,\n depositFee,\n balanceRevalidating,\n depositFeeRevalidating,\n quantity,\n setQuantity,\n approve,\n deposit,\n fetchBalance,\n fetchBalances,\n targetChain,\n isNativeToken,\n } = useDeposit({\n address: sourceToken?.address,\n decimals: sourceToken?.decimals,\n srcChainId: currentChain?.id,\n srcToken: sourceToken?.symbol,\n dstToken: targetToken?.symbol,\n depositorAddress: enableSwapDeposit ? SWAP_CONTRACT_ADDRESS : undefined,\n });\n\n const { balance: nativeBalance, isLoading: nativeBalanceRevalidating } =\n useNativeBalance({\n fetchBalance,\n targetChain,\n });\n\n const { balances: tokenBalances, isLoading: batchBalancesRevalidating } =\n useTokenBalances({ orderlyTokens, swapTokens, fetchBalances });\n\n useEffect(() => {\n const sortedTokens = filterAndSortTokens(\n orderlyTokens,\n swapTokens,\n tokenBalances,\n getIndexPrice,\n );\n setSourceTokens(sortedTokens);\n }, [orderlyTokens, swapTokens, tokenBalances]);\n\n const needSwap = useMemo(() => {\n return (\n !!sourceToken?.symbol &&\n !!targetToken?.symbol &&\n sourceToken.symbol !== targetToken?.symbol\n );\n }, [sourceToken, targetToken]);\n\n const {\n swapPrice,\n swapQuantity,\n swapMinReceived,\n swapPriceRevalidating,\n slippage,\n onSlippageChange,\n onSwapDeposit,\n error: swapErrorMessage,\n } = useSwapDeposit({\n sourceToken,\n targetToken,\n currentChain,\n quantity,\n depositFee,\n });\n\n const {\n maxQuantity,\n maxDepositAmount,\n targetQuantity,\n swapPriceInUSD,\n quantityNotional,\n indexPrice,\n swapIndexPrice,\n } = useDepositFormQuantities({\n sourceToken,\n targetToken,\n balance,\n quantity,\n needSwap,\n swapQuantity,\n swapPrice,\n getIndexPrice,\n });\n\n const nativeSymbol = useMemo(() => {\n return currentChain?.info?.nativeToken?.symbol;\n }, [currentChain]);\n\n const onDepositSuccess = useCallback(() => {\n setQuantity(\"\");\n options.close?.();\n }, []);\n\n const {\n isMutating: depositRevalidating,\n depositError,\n setDepositError,\n onApprove,\n onDeposit,\n onApproveAndDeposit,\n } = useDepositAction({\n quantity,\n approve,\n deposit,\n needSwap,\n swapDeposit: onSwapDeposit,\n onSuccess: onDepositSuccess,\n });\n\n useEffect(() => {\n setQuantity(\"\");\n setDepositError(\"\");\n // when sourceToken or currentChain?.id changes, clean state\n }, [sourceToken, currentChain?.id]);\n\n const fee = useDepositFee({ nativeSymbol, depositFee, getIndexPrice });\n\n const {\n inputStatus,\n hintMessage,\n validationMessage,\n depositDisabled,\n targetInputStatus,\n targetHintMessage,\n showSourceDepositCap,\n showTargetDepositCap,\n slippageValidate,\n } = useDepositValidation({\n sourceToken,\n targetToken,\n quantity,\n targetQuantity,\n maxQuantity,\n isNativeToken,\n depositFee,\n depositFeeRevalidating,\n nativeBalanceRevalidating,\n dstGasFee: fee.dstGasFee,\n nativeSymbol,\n nativeBalance,\n account,\n currentChain,\n depositError,\n needSwap,\n });\n\n const usdcToken = useMemo(() => {\n return sourceTokens?.find((item) => item.symbol === \"USDC\");\n }, [sourceTokens]);\n\n const actionType = useActionType({ allowance, quantity, maxQuantity });\n\n const isLoggedIn = useAuthGuard();\n\n const {\n collateralRatio,\n collateralContributionQuantity,\n currentLTV,\n nextLTV,\n } = useCollateralValue({\n sourceToken,\n targetToken,\n quantity,\n indexPrice: needSwap ? swapIndexPrice : indexPrice,\n });\n\n const {\n ltv_threshold,\n negative_usdc_threshold,\n isLoading: isConvertThresholdLoading,\n } = useConvertThreshold();\n\n const loading =\n depositFeeRevalidating || depositRevalidating || swapPriceRevalidating;\n\n const disabled =\n !sourceToken ||\n !quantity ||\n Number(quantity) === 0 ||\n depositDisabled ||\n loading ||\n !!swapErrorMessage;\n\n const targetQuantityLoading = swapPriceRevalidating;\n\n const warningMessage = validationMessage || swapErrorMessage;\n\n return {\n sourceToken,\n targetToken,\n sourceTokens,\n targetTokens,\n onSourceTokenChange,\n onTargetTokenChange,\n\n nativeSymbol,\n isNativeToken,\n quantity,\n collateralContributionQuantity,\n maxQuantity,\n maxDepositAmount,\n onQuantityChange: setQuantity,\n hintMessage,\n inputStatus,\n targetInputStatus,\n targetHintMessage,\n chains,\n currentChain,\n settingChain,\n onChainChange,\n actionType,\n onDeposit,\n onApprove,\n onApproveAndDeposit,\n wrongNetwork,\n balanceRevalidating,\n batchBalancesRevalidating,\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 slippageValidate,\n swapMinReceived,\n usdcToken,\n\n needSwap,\n swapPrice,\n swapPriceInUSD,\n warningMessage,\n targetQuantity,\n targetQuantityLoading,\n\n isLoggedIn,\n showSourceDepositCap,\n showTargetDepositCap,\n quantityNotional,\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 { useCallback, useEffect, useRef, useState } from \"react\";\nimport { Chain, ConnectedChain, useConfig } from \"@orderly.network/hooks\";\nimport { NetworkId, type API } from \"@orderly.network/types\";\nimport { getUSDCToken } from \"../../../utils\";\n\nexport type CurrentChain = Pick<ConnectedChain, \"namespace\"> & {\n id: number;\n info?: Chain;\n};\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 = getUSDCToken(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 { useEffect, useMemo, useState } from \"react\";\nimport {\n useHoldingStream,\n useMemoizedFn,\n useTokensInfo,\n} from \"@orderly.network/hooks\";\nimport { API } from \"@orderly.network/types\";\nimport { CurrentChain, WithdrawTo } from \"../../../types\";\nimport { getUSDCToken } from \"../../../utils\";\nimport { useToken } from \"../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 = getUSDCToken(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 = getUSDCToken(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 \"../../types\";\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-base-6 oui-bg-transparent\")}\n classNames={{ input: \"oui-text-base-contrast\" }}\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 quantity={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 { 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 quantity={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 { FC, ReactNode } 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 suffix?: ReactNode;\n}\n\nexport const SwapCoin: FC<SwapCoinProps> = (props) => {\n const {\n sourceSymbol,\n targetSymbol,\n indexPrice,\n precision = 6,\n suffix,\n } = props;\n\n return (\n <Flex\n itemAlign=\"center\"\n gap={1}\n className={cn(props.className, \"oui-text-2xs oui-text-base-contrast-36\")}\n >\n <Text intensity={80}>1</Text>\n <span>{sourceSymbol}</span>\n <span>=</span>\n\n <Text.numeral intensity={80} dp={precision} padding={false}>\n {indexPrice}\n </Text.numeral>\n\n <span>{targetSymbol}</span>\n {suffix}\n </Flex>\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 quantity={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/tokenOption.tsx","../src/components/quantityInput/index.tsx","../src/components/slippage/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/depositForm/components/convertRate.tsx","../src/components/depositForm/components/depositTokenValueFormatter.tsx","../src/components/depositForm/components/notice.tsx","../src/components/depositForm/depositForm.ui.tsx","../src/components/depositForm/hooks/useActionType.ts","../src/components/depositForm/hooks/useChainSelect.ts","../src/components/depositForm/hooks/useCollateralValue.ts","../src/components/depositForm/hooks/useConvertThreshold.ts","../src/utils.ts","../src/components/depositForm/hooks/useDepositAction.tsx","../src/components/depositForm/hooks/useDepositFee.ts","../src/components/depositForm/hooks/useMaxDepositAmount.ts","../src/components/depositForm/hooks/useDepositQuantities.ts","../src/components/depositForm/hooks/useDepositValidation.tsx","../src/components/depositForm/hooks/useNativeBalance.ts","../src/components/depositForm/hooks/useOrderlyTokens.ts","../src/components/depositForm/hooks/useToken.ts","../src/components/depositForm/utils.ts","../src/components/depositForm/hooks/useTokenBalances.ts","../src/components/depositForm/swap/useSwapSupportedChains.ts","../src/components/depositForm/swap/use1inchTokens.ts","../src/components/depositForm/swap/perp_vault_depositor.json","../src/components/depositForm/swap/useSlippage.ts","../src/components/depositForm/swap/useSwapQuote.ts","../src/components/depositForm/swap/useSwapDeposit.ts","../src/components/depositForm/depositForm.script.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/useToken.ts","../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/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/swapCoin/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","TokenIcon","useRef","token","value","item","Select","Input","inputFormatter","Tips","AlertDialog","EditIcon","useWalletConnector","account","useAccount","address","ABSTRACT_CHAIN_ID_MAP","WalletIcon","Trans","formatWithPrecision","CaretDownIcon","collateralRatio","textVariants","options","useLocalStorage","useChains","praseChainIdToNumber","int2hex","toast","accountPerp","useComputedLTV","i18n","useEventEmitter","useTokenInfo","ChainNamespace","indexPrice","fetcher","balance","nativeTokenAddress","useSWR","orderlyTokens","isNativeTokenChecker","EMPTY_OBJECT","balances","swapQuantity","swapMinReceived","utils","useAppContext","useOrderlyContext","useDeposit","useAuthGuard","Checkbox","ExclamationFillIcon","ChainSelectorDialogId","usePositionStream","useInternalTransfer","useDebouncedCallback","useConvertThreshold","useToken","useTokensInfo","useHoldingStream","useMemoizedFn","ethers","PublicKey","useAssetsHistory","AssetHistorySideEnum","AssetHistoryStatusEnum","toNonExponential","useWalletTopic","SimpleDialog","CloseRoundFillIcon","CaretUpIcon","TabPanel","ArrowLeftRightIcon","Tabs","ExtensionSlot","ExtensionPositionEnum","ArrowDownSquareFillIcon","ArrowUpSquareFillIcon","registerSimpleDialog","registerSimpleSheet","useAppStore","state","useTransfer","useSubAccountDataObserver","useSubAccountMaxWithdrawal","zero","markPrice","tokens","Arbitrum","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","import { Chain, ConnectedChain } from \"@orderly.network/hooks\";\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\nexport type CurrentChain = Pick<ConnectedChain, \"namespace\"> & {\n id: number;\n info?: Chain;\n};\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 quantity?: string | number;\n maxQuantity?: string | number;\n onClick?: () => void;\n loading?: boolean;\n tooltipContent?: React.ReactNode;\n notional?: number;\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 { quantity, 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 (props.notional !== undefined && props.notional !== null) {\n return props.notional;\n }\n\n if (quantity && token?.symbol) {\n return new Decimal(quantity)\n .mul(getIndexPrice(token?.symbol) || 1)\n .toNumber();\n }\n return 0;\n }, [quantity, token?.symbol, props.notional]);\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 { useConfig } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useAppConfig } from \"@orderly.network/react-app\";\nimport { Flex, Text } from \"@orderly.network/ui\";\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) {\n return <img src={secondary?.img} className=\"oui-size-5\" />;\n }\n\n if (secondary?.component) {\n return <>{secondary.component}</>;\n }\n\n return null;\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 \"../../types\";\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 = 6 } = 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 { modal, Text } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { UseDepositFeeReturn } from \"../depositForm/hooks/useDepositFee\";\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 modal.alert({\n title: t(\"transfer.deposit.estGasFee\"),\n message: (\n <Text intensity={36} size=\"2xs\">\n {t(\"transfer.deposit.estGasFee.tooltip\")}\n </Text>\n ),\n });\n };\n\n const showFeeQty = !!dstGasFee && dstGasFee !== \"0\";\n\n return (\n <Text\n size=\"2xs\"\n intensity={36}\n className=\"oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12\"\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\ntype MinimumReceivedProps = {\n symbol: string;\n value: number | string;\n precision?: number;\n};\n\nexport const MinimumReceived: React.FC<MinimumReceivedProps> = (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 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\";\n\ninterface TokenOptionProps {\n token: API.TokenInfo & {\n label: string;\n value: string;\n insufficientBalance?: boolean;\n balance?: string;\n quantity?: string;\n amount?: number;\n };\n onTokenChange?: (token: API.TokenInfo) => void;\n isActive: boolean;\n index?: number;\n displayType?: \"balance\" | \"vaultBalance\";\n open?: boolean;\n isLoading?: boolean;\n showBalance?: boolean;\n}\n\nexport const TokenOption: React.FC<TokenOptionProps> = (props) => {\n const {\n token,\n isActive,\n displayType,\n onTokenChange,\n open,\n isLoading,\n showBalance,\n } = props;\n const { symbol, precision, insufficientBalance } = token;\n const { apy } = useYieldAPY(symbol);\n\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\n url={(token as any).logo_uri}\n name={symbol}\n className=\"oui-size-[16px] oui-opacity-50\"\n />\n <Text intensity={36} className=\"oui-max-w-[200px] oui-truncate\">\n {token.label}\n </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 (isLoading && !token.amount) {\n return <Spinner size=\"sm\" />;\n }\n\n return (\n <Text.numeral\n rule=\"price\"\n dp={precision}\n rm={Decimal.ROUND_DOWN}\n ignoreDP\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 {token.amount!}\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\n name={symbol}\n url={(token as any).logo_uri}\n className=\"oui-size-[16px]\"\n />\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 \"oui-max-w-[200px] oui-truncate\",\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 loading?: boolean;\n testId?: string;\n formatters?: InputFormatter[];\n // TOOD: remove this prop\n vaultBalanceList?: API.VaultBalance[];\n displayType?: \"balance\" | \"vaultBalance\";\n tokenValueFormatter?: (value: string) => ReactNode;\n tokenShowCaret?: boolean;\n balancesRevalidating?: boolean;\n showBalance?: 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 onTokenChange,\n loading,\n placeholder,\n formatters,\n vaultBalanceList,\n displayType,\n tokenValueFormatter,\n tokenShowCaret,\n balancesRevalidating,\n showBalance,\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 };\n });\n }, [tokens, value, vaultBalanceList]);\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 displayType={displayType}\n onTokenChange={(item) => {\n onTokenChange?.(item);\n setOpen(false);\n }}\n open={selectOpen}\n isLoading={balancesRevalidating}\n showBalance={showBalance}\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, ReactNode, useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n AlertDialog,\n cn,\n EditIcon,\n Flex,\n Input,\n inputFormatter,\n Text,\n Tips,\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 dp?: number;\n message?: ReactNode;\n validate?: (value: number) => string;\n}\n\nconst options = [0.5, 1, 2];\n\nexport const Slippage: FC<SlippageProps> = (props) => {\n const { min = 0.2, max = 10, dp = 2 } = 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 errorMessage = useMemo(() => {\n return props.validate?.(getValue()!);\n }, [value, customValue, props.validate]);\n\n const content = (\n <div className=\"oui-text-2xs\">\n <Flex gapX={1} itemAlign=\"center\">\n <Text size=\"sm\" intensity={54}>\n {t(\"transfer.slippage.slippageTolerance\")}\n </Text>\n <Tips\n content={t(\"transfer.slippage.slippageTolerance.description\")}\n title={t(\"common.tips\")}\n classNamss={{\n trigger: \"oui-mt-[2px] oui-size-4\",\n }}\n />\n </Flex>\n\n <Flex gapX={2} mt={3}>\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(dp),\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 suffix: \"oui-text-base-contrast-36\",\n }}\n />\n </Flex>\n {errorMessage && (\n <Flex mt={6}>\n <Text\n size=\"2xs\"\n color=\"warning\"\n className=\"oui-w-full oui-text-center\"\n >\n {errorMessage}\n </Text>\n </Flex>\n )}\n </div>\n );\n\n return (\n <>\n <AlertDialog\n open={open}\n onOpenChange={setOpen}\n title={t(\"transfer.slippage\")}\n okLabel={t(\"common.save\")}\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-darken 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 } 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 { FC, useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { cn, Flex, Text } from \"@orderly.network/ui\";\nimport { Decimal, formatWithPrecision } from \"@orderly.network/utils\";\n\ninterface ConvertRateProps {\n className?: string;\n sourceSymbol?: string;\n targetSymbol?: string;\n swapPrice: number | string;\n precision?: number;\n swapPriceInUSD?: number | string;\n}\n\nexport const ConvertRate: FC<ConvertRateProps> = (props) => {\n const {\n sourceSymbol,\n targetSymbol,\n swapPrice,\n precision = 6,\n swapPriceInUSD,\n } = props;\n\n const { t } = useTranslation();\n\n const formatSwapPrice = useMemo(() => {\n return formatWithPrecision(swapPrice, precision);\n }, [swapPrice, precision]);\n\n const suffix = swapPriceInUSD ? (\n <div>\n ($<Text>{swapPriceInUSD}</Text>)\n </div>\n ) : undefined;\n\n return (\n <Flex width={\"100%\"} itemAlign=\"center\" justify=\"between\">\n <Text size=\"2xs\" intensity={36}>\n {t(\"transfer.deposit.convertRate\")}\n </Text>\n <Flex\n itemAlign=\"center\"\n gap={1}\n className={cn(\n props.className,\n \"oui-text-2xs oui-text-base-contrast-36\",\n )}\n >\n <Text intensity={80}>1</Text>\n <span>{sourceSymbol}</span>\n <span>=</span>\n\n <Text intensity={80}>{formatSwapPrice}</Text>\n\n <span>{targetSymbol}</span>\n {suffix}\n </Flex>\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n CaretDownIcon,\n Flex,\n Text,\n TokenIcon,\n Tips,\n} from \"@orderly.network/ui\";\n\ntype DepositTokenValueFormatterProps = {\n value: string;\n userMaxQty?: number | null;\n};\n\nexport const DepositTokenValueFormatter: FC<\n DepositTokenValueFormatterProps\n> = ({ value, userMaxQty }) => {\n const { t } = useTranslation();\n\n const tipContent = (\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 {value}.\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 return (\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 {userMaxQty ?? 0}\n </Text.numeral>\n </Text>\n <Tips content={tipContent} title={t(\"common.tips\")} />\n </Flex>\n </Flex>\n );\n};\n","import { FC, useMemo, ReactNode } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Box } from \"@orderly.network/ui\";\n\ntype NoticeProps = {\n message?: ReactNode;\n wrongNetwork?: boolean;\n};\n\nexport const Notice: FC<NoticeProps> = (props) => {\n const { message, wrongNetwork } = props;\n const { t } = useTranslation();\n\n const content = useMemo(() => {\n if (wrongNetwork) {\n return t(\"connector.wrongNetwork.tooltip\");\n }\n\n return message;\n }, [message, 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, Flex, textVariants } 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 { Web3Wallet } from \"../web3Wallet\";\nimport { YieldBearingReminder } from \"../yieldBearingReminder\";\nimport { ConvertRate } from \"./components/convertRate\";\nimport { DepositTokenValueFormatter } from \"./components/depositTokenValueFormatter\";\nimport { Notice } from \"./components/notice\";\nimport { type DepositFormScriptReturn } 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 quantity,\n collateralContributionQuantity,\n maxQuantity,\n maxDepositAmount,\n onQuantityChange,\n hintMessage,\n inputStatus,\n targetInputStatus,\n targetHintMessage,\n chains,\n currentChain,\n settingChain,\n onChainChange,\n actionType,\n onDeposit,\n onApprove,\n onApproveAndDeposit,\n wrongNetwork,\n balanceRevalidating,\n loading,\n disabled,\n networkId,\n fee,\n collateralRatio,\n currentLTV,\n nextLTV,\n slippage,\n onSlippageChange,\n swapMinReceived,\n needSwap,\n swapPrice,\n swapPriceInUSD,\n warningMessage,\n usdcToken,\n targetQuantity,\n targetQuantityLoading,\n batchBalancesRevalidating,\n showSourceDepositCap,\n showTargetDepositCap,\n slippageValidate,\n quantityNotional,\n } = props;\n\n const { t } = useTranslation();\n\n const tokenValueFormatter = (value: string) => (\n <DepositTokenValueFormatter\n value={value}\n userMaxQty={targetToken?.user_max_qty}\n />\n );\n\n const renderContent = () => {\n return (\n <Flex direction=\"column\" itemAlign=\"start\" mt={2} gap={1}>\n {needSwap && (\n <ConvertRate\n sourceSymbol={sourceToken?.display_name || sourceToken?.symbol}\n targetSymbol={targetToken?.display_name || targetToken?.symbol}\n precision={targetToken?.precision}\n swapPrice={swapPrice!}\n swapPriceInUSD={swapPriceInUSD}\n />\n )}\n <CollateralRatioWidget value={collateralRatio} />\n <CollateralContribution\n // it need to use USDC precision\n precision={usdcToken?.precision}\n value={collateralContributionQuantity}\n />\n <LtvWidget\n showDiff={typeof quantity !== \"undefined\" && Number(quantity) > 0}\n currentLtv={currentLTV}\n nextLTV={nextLTV}\n />\n\n {needSwap && (\n <>\n <Slippage\n value={slippage}\n onValueChange={onSlippageChange}\n min={0.01}\n max={50}\n validate={slippageValidate}\n />\n <MinimumReceived\n value={swapMinReceived!}\n symbol={targetToken?.symbol ?? \"\"}\n precision={targetToken?.precision}\n />\n </>\n )}\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 data-testId=\"oui-testid-deposit-dialog-quantity-input\"\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 // when show deposit cap, hide select caret\n tokenShowCaret={!showSourceDepositCap && sourceTokens?.length > 1}\n tokenValueFormatter={\n showSourceDepositCap ? tokenValueFormatter : undefined\n }\n disabled={!props.isLoggedIn}\n balancesRevalidating={batchBalancesRevalidating}\n showBalance\n />\n </Box>\n\n <AvailableQuantity\n token={sourceToken}\n quantity={quantity}\n maxQuantity={maxQuantity}\n notional={quantityNotional}\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 classNames={{\n root: \"oui-mt-3 oui-border-transparent focus-within:oui-outline-transparent\",\n }}\n token={targetToken}\n tokens={targetTokens}\n onTokenChange={onTargetTokenChange}\n value={targetQuantity}\n loading={targetQuantityLoading}\n disabled={!props.isLoggedIn}\n readOnly\n status={targetInputStatus}\n hintMessage={targetHintMessage}\n // when show deposit cap, hide select caret\n tokenShowCaret={!showTargetDepositCap && targetTokens?.length > 1}\n tokenValueFormatter={\n showTargetDepositCap ? tokenValueFormatter : undefined\n }\n />\n {renderContent()}\n </Box>\n\n <Notice message={warningMessage} wrongNetwork={wrongNetwork} />\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 { useMemo } from \"react\";\nimport { DepositAction } from \"../../../types\";\n\ntype Options = {\n allowance: string;\n quantity: string;\n maxQuantity: string;\n};\n\nexport function useActionType(options: Options) {\n const { allowance, quantity, maxQuantity } = options;\n\n const actionType = useMemo(() => {\n const allowanceNum = 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.ApproveAndDeposit;\n }\n\n return DepositAction.Deposit;\n }, [allowance, quantity, maxQuantity]);\n\n return actionType;\n}\n","import { useCallback, useMemo } from \"react\";\nimport {\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\";\nimport { CurrentChain } from \"../../../types\";\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 { useMemo } from \"react\";\nimport { useComputedLTV } from \"@orderly.network/hooks\";\nimport { account as accountPerp } from \"@orderly.network/perp\";\nimport { API } from \"@orderly.network/types\";\n\nconst { collateralRatio, collateralContribution } = accountPerp;\n\nexport const useCollateralValue = (params: {\n sourceToken?: API.TokenInfo;\n targetToken?: API.TokenInfo;\n quantity: string;\n indexPrice?: number;\n}) => {\n const { sourceToken, targetToken, indexPrice } = params;\n\n const quantity = Number(params.quantity);\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: indexPrice ?? 0,\n });\n }, [targetToken, quantity, sourceToken?.user_max_qty, indexPrice]);\n\n const collateralContributionQuantity = useMemo(() => {\n return collateralContribution({\n collateralQty: quantity,\n collateralCap: sourceToken?.user_max_qty ?? quantity,\n collateralRatio: memoizedCollateralRatio.toNumber(),\n indexPrice: indexPrice ?? 0,\n });\n }, [\n quantity,\n sourceToken?.user_max_qty,\n memoizedCollateralRatio,\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,\n nextLTV,\n };\n};\n","import { useQuery } from \"@orderly.network/hooks\";\nimport { API } from \"@orderly.network/types\";\n\nexport const useConvertThreshold = () => {\n const { data, error, isLoading } = useQuery<API.ConvertThreshold>(\n \"/v1/public/auto_convert_threshold\",\n {\n revalidateOnFocus: true,\n errorRetryCount: 3,\n },\n );\n\n return {\n ltv_threshold: data?.ltv_threshold,\n negative_usdc_threshold: data?.negative_usdc_threshold,\n isLoading,\n error,\n };\n};\n","import { i18n } from \"@orderly.network/i18n\";\nimport { API } from \"@orderly.network/types\";\n\nexport function sortTokensWithUSDCFirst(tokens: API.TokenInfo[] = []) {\n const sortedTokens = [...tokens];\n sortedTokens.sort((a, b) => {\n if (a.symbol === \"USDC\") return -1;\n if (b.symbol === \"USDC\") return 1;\n return 0;\n });\n return sortedTokens;\n}\n\n/** Prefer USDC, then USDC.e, then USDbC, then first token. Single pass, no extra object allocation. */\nexport const getUSDCToken = (\n tokens: API.TokenInfo[] = [],\n): API.TokenInfo | undefined => {\n let first: API.TokenInfo | undefined;\n let usdce: API.TokenInfo | undefined;\n let usdbc: API.TokenInfo | undefined;\n\n for (const token of tokens) {\n if (first === undefined) first = token;\n if (token.symbol === \"USDC\") return token;\n if (token.symbol === \"USDC.e\") usdce = token;\n if (token.symbol === \"USDbC\") usdbc = token;\n }\n\n return usdce ?? usdbc ?? first;\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\nexport const DEPOSIT_ERROR_CODE_MAP = {\n AccessControlBadConfirmation: \"0x6697b232\",\n AccessControlUnauthorizedAccount: \"0xe2517d3f\",\n AccountIdInvalid: \"0xc7ee9ce6\",\n AddressZero: \"0x9fabe1c1\",\n BalanceNotEnough: \"0x4b3815a6\",\n BrokerNotAllowed: \"0x59d9b863\",\n CeffuAddressMismatch: \"0xf67c6d78\",\n DepositExceedLimit: \"0xd969df24\",\n EnumerableSetError: \"0xa65b249b\",\n InvalidSwapSignature: \"0x06a0cf4a\",\n InvalidTokenAddress: \"0x1eb00b06\",\n NativeTokenDepositAmountMismatch: \"0xfa7c7537\",\n NotRebalanceEnableToken: \"0xad674ae6\",\n NotZeroCodeLength: \"0x623793c9\",\n OnlyCrossChainManagerCanCall: \"0x833d33e7\",\n ReentrancyGuardReentrantCall: \"0x3ee5aeb5\",\n SwapAlreadySubmitted: \"0x0b693144\",\n TokenNotAllowed: \"0xa29c4986\",\n ZeroCodeLength: \"0x30773dbb\",\n ZeroDeposit: \"0x56316e87\",\n ZeroDepositFee: \"0x93d3bb4d\",\n};\n\nexport function getDepositKnownErrorMessage(message: string) {\n if (!message) {\n return \"\";\n }\n\n for (const key of Object.keys(DEPOSIT_ERROR_CODE_MAP)) {\n const value =\n DEPOSIT_ERROR_CODE_MAP[key as keyof typeof DEPOSIT_ERROR_CODE_MAP];\n\n if (message.includes(value)) {\n return `${key} (${value})`;\n }\n }\n\n return \"\";\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 approve: (quantity?: string) => Promise<any>;\n deposit: () => Promise<any>;\n onSuccess?: () => void;\n swapDeposit?: () => Promise<any>;\n needSwap?: boolean;\n};\n\nexport function useDepositAction(options: Options) {\n const { quantity, approve, deposit, swapDeposit, onSuccess, needSwap } =\n options;\n const [isMutating, setIsMutating] = useState(false);\n const [depositError, setDepositError] = useState(\"\");\n\n const ee = useEventEmitter();\n const { t } = useTranslation();\n\n const doDeposit = useCallback(async () => {\n try {\n await deposit();\n setDepositError(\"\");\n } catch (err: any) {\n console.error(\"orderly deposit error\", err);\n const knownErrorMessage = getDepositKnownErrorMessage(err.message);\n if (knownErrorMessage) {\n setDepositError(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 throw err;\n }\n }, [deposit, onSuccess, t, ee]);\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 (isMutating) return;\n\n setIsMutating(true);\n\n try {\n if (needSwap) {\n await swapDeposit?.();\n } else {\n await doDeposit();\n }\n toast.success(t(\"transfer.deposit.requested\"));\n ee.emit(\"deposit:requested\");\n onSuccess?.();\n } catch (err: any) {\n // all errors are handled by toast.error in doDeposit or swapDeposit\n } finally {\n setIsMutating(false);\n }\n }, [quantity, isMutating, needSwap, doDeposit, swapDeposit, t]);\n\n const onApprove = useCallback(async () => {\n if (isMutating) return;\n setIsMutating(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 setIsMutating(false);\n }\n }, [approve, isMutating, quantity, t]);\n\n const onApproveAndDeposit = useCallback(async () => {\n if (isMutating) return;\n setIsMutating(true);\n\n try {\n await onApprove();\n await onDeposit();\n } catch (err) {\n console.error(\"approve and deposit error\", err);\n } finally {\n setIsMutating(false);\n }\n }, [isMutating, onApprove, onDeposit]);\n\n return {\n isMutating,\n depositError,\n setDepositError,\n onApprove,\n onDeposit,\n onApproveAndDeposit,\n };\n}\n","import { useMemo } from \"react\";\nimport { useAccount, useTokenInfo } from \"@orderly.network/hooks\";\nimport { ChainNamespace } from \"@orderly.network/types\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport type UseDepositFeeReturn = ReturnType<typeof useDepositFee>;\n\nexport function useDepositFee(options: {\n nativeSymbol?: string;\n depositFee?: bigint;\n getIndexPrice: (token: string) => number;\n}) {\n const { nativeSymbol, depositFee = 0, getIndexPrice } = options;\n const { account } = useAccount();\n\n const tokenInfo = useTokenInfo(nativeSymbol!);\n\n const feeProps = useMemo(() => {\n // deposit fee is native token, so evm decimals is 18, solana is 9\n const decimals =\n account.walletAdapter?.chainNamespace === ChainNamespace.solana ? 9 : 18;\n\n const dstGasFee = new Decimal(depositFee.toString())\n .div(new Decimal(10).pow(decimals))\n .toString();\n\n const indexPrice = getIndexPrice(nativeSymbol!);\n\n const feeAmount = new Decimal(dstGasFee).mul(indexPrice || 0).toString();\n\n return {\n dstGasFee,\n feeQty: dstGasFee,\n feeAmount,\n dp: tokenInfo?.decimals || 8,\n };\n }, [depositFee, tokenInfo]);\n\n return feeProps;\n}\n","import { useMemo } from \"react\";\nimport { API } from \"@orderly.network/types\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport const useMaxDepositAmount = (\n sourceToken?: API.TokenInfo,\n balance?: string,\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 }, [sourceToken, balance]);\n\n return maxDepositAmount;\n};\n","import { useMemo } from \"react\";\nimport { API } from \"@orderly.network/types\";\nimport { Decimal, formatWithPrecision } from \"@orderly.network/utils\";\nimport { useMaxDepositAmount } from \"./useMaxDepositAmount\";\n\nexport type GetIndexPrice = (symbol: string) => number | undefined;\n\nexport type UseDepositFormQuantitiesParams = {\n sourceToken?: API.TokenInfo;\n targetToken?: API.TokenInfo;\n balance?: string;\n quantity: string;\n needSwap: boolean;\n swapQuantity?: string;\n swapPrice?: number;\n getIndexPrice: GetIndexPrice;\n};\n\nexport const useDepositFormQuantities = ({\n sourceToken,\n targetToken,\n balance,\n quantity,\n needSwap,\n swapQuantity,\n swapPrice,\n getIndexPrice,\n}: UseDepositFormQuantitiesParams) => {\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 = useMaxDepositAmount(sourceToken, balance);\n\n const targetQuantity = useMemo(() => {\n if (needSwap) {\n return swapQuantity\n ? new Decimal(swapQuantity)\n ?.todp(targetToken?.precision ?? 6, Decimal.ROUND_DOWN)\n .toString()\n : undefined;\n }\n return quantity;\n }, [needSwap, swapQuantity, quantity, targetToken?.precision]);\n\n const swapPriceInUSD = useMemo(() => {\n if (swapPrice && targetToken?.symbol) {\n const indexPrice = getIndexPrice(targetToken.symbol);\n if (!indexPrice) return undefined;\n const num = new Decimal(swapPrice).mul(indexPrice);\n return formatWithPrecision(num, 2);\n }\n }, [swapPrice, targetToken?.symbol, getIndexPrice]);\n\n const quantityNotional = useMemo(() => {\n const indexPrice = needSwap\n ? swapPrice\n : getIndexPrice(sourceToken?.symbol!);\n\n if (quantity && indexPrice) {\n return new Decimal(quantity).mul(indexPrice).toNumber();\n }\n return 0;\n }, [quantity, sourceToken?.symbol, swapPrice, needSwap, getIndexPrice]);\n\n const indexPrice = useMemo(() => {\n return getIndexPrice(sourceToken?.symbol!);\n // update by quantity changes (revalidate when quantity changes)\n }, [quantity, sourceToken?.symbol]);\n\n const swapIndexPrice = useMemo(() => {\n return getIndexPrice(sourceToken?.symbol!);\n // update by swapPrice changes (revalidate when swapPrice changes)\n }, [swapPrice, sourceToken?.symbol]);\n\n return {\n maxQuantity,\n maxDepositAmount,\n targetQuantity,\n swapPriceInUSD,\n quantityNotional,\n indexPrice,\n swapIndexPrice,\n };\n};\n","import { useCallback, useMemo } from \"react\";\nimport { useAccount } from \"@orderly.network/hooks\";\nimport { Trans, useTranslation } from \"@orderly.network/i18n\";\nimport { API, ChainNamespace } from \"@orderly.network/types\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { InputStatus } from \"../../../types\";\nimport { CurrentChain } from \"../../../types\";\nimport { DEPOSIT_ERROR_CODE_MAP } from \"../../../utils\";\n\ntype Options = {\n sourceToken?: API.TokenInfo;\n targetToken?: API.TokenInfo;\n quantity: string;\n targetQuantity?: string;\n maxQuantity: string;\n isNativeToken: boolean;\n depositFee: bigint;\n depositFeeRevalidating: boolean;\n nativeBalanceRevalidating: boolean;\n dstGasFee: string;\n nativeSymbol?: string;\n nativeBalance?: string;\n account: ReturnType<typeof useAccount>[\"account\"];\n currentChain: CurrentChain | null;\n depositError: string;\n needSwap: boolean;\n};\n\nexport const useDepositValidation = (options: Options) => {\n const {\n sourceToken,\n targetToken,\n quantity,\n targetQuantity,\n maxQuantity,\n isNativeToken,\n depositFee,\n depositFeeRevalidating,\n nativeBalanceRevalidating,\n dstGasFee,\n nativeSymbol,\n nativeBalance,\n account,\n currentChain,\n depositError,\n needSwap,\n } = options;\n const { t } = useTranslation();\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 const totalNeeded = new Decimal(quantity).add(dstGasFee || 0);\n return totalNeeded.gt(maxQuantity || 0);\n }\n return false;\n }, [\n isNativeToken,\n quantity,\n depositFeeRevalidating,\n insufficientBalance,\n dstGasFee,\n maxQuantity,\n ]);\n\n const isExceedSourceTokenCap = 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 new Decimal(quantity).gt(sourceToken.user_max_qty);\n }\n return false;\n }, [sourceToken, targetToken, quantity]);\n\n const isExceedTargetTokenCap = useMemo(() => {\n if (\n targetToken?.symbol !== \"USDC\" &&\n sourceToken?.symbol !== targetToken?.symbol &&\n targetToken?.is_collateral &&\n targetToken?.user_max_qty !== undefined &&\n targetToken?.user_max_qty !== -1 &&\n targetQuantity &&\n !isNaN(Number(targetQuantity))\n ) {\n // when target quantity exceeds 90% of the max quantity\n return new Decimal(targetQuantity).gte(\n new Decimal(targetToken.user_max_qty).mul(0.9),\n );\n }\n return false;\n }, [targetToken, targetQuantity]);\n\n const showSourceDepositCap =\n !needSwap &&\n sourceToken?.user_max_qty !== undefined &&\n sourceToken?.user_max_qty !== -1;\n\n const showTargetDepositCap =\n needSwap &&\n targetToken?.user_max_qty !== undefined &&\n targetToken?.user_max_qty !== -1;\n\n const depositExceedLimit = useMemo(() => {\n return depositError?.includes(DEPOSIT_ERROR_CODE_MAP.DepositExceedLimit);\n }, [depositError]);\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 !nativeBalanceRevalidating &&\n (account.walletAdapter?.chainNamespace === ChainNamespace.solana ||\n dstGasFee)\n ) {\n const notEnoughGas = new Decimal(nativeBalance || 0).lt(dstGasFee || 0);\n\n // when solana, if dstGasFee is 0, and nativeTokenBalance is 0, it means not token balance\n const isNotSolBalance =\n Number(dstGasFee) === 0 && Number(nativeBalance) == Number(dstGasFee);\n\n if (notEnoughGas || isNotSolBalance) {\n return t(\"transfer.deposit.notEnoughGas\", {\n token: nativeSymbol,\n });\n }\n }\n }, [\n dstGasFee,\n quantity,\n nativeBalanceRevalidating,\n depositFeeRevalidating,\n t,\n nativeSymbol,\n insufficientBalance,\n account,\n nativeBalance,\n ]);\n\n const gasFeeMessage = useMemo(() => {\n if (insufficientNativeTotal) {\n return t(\"transfer.deposit.gasFee.error\", {\n token: sourceToken?.symbol,\n });\n }\n }, [t, insufficientNativeTotal, sourceToken?.symbol]);\n\n const globalMaxQtyMessage = useMemo(() => {\n if (\n sourceToken?.symbol !== \"USDC\" &&\n sourceToken?.symbol === targetToken?.symbol &&\n sourceToken?.is_collateral &&\n depositExceedLimit\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 }, [\n depositExceedLimit,\n sourceToken?.symbol,\n sourceToken?.is_collateral,\n targetToken?.symbol,\n currentChain,\n t,\n ]);\n\n const feeWarningMessage = useMemo(() => {\n if (\n quantity &&\n Number(quantity) > 0 &&\n depositFee === 0n &&\n !depositFeeRevalidating &&\n account.walletAdapter?.chainNamespace !== ChainNamespace.solana\n ) {\n return t(\"transfer.deposit.feeUnavailable\");\n }\n }, [t, quantity, depositFee, depositFeeRevalidating, account]);\n\n const { inputStatus, hintMessage } = useMemo<{\n inputStatus: InputStatus;\n hintMessage: string;\n }>(() => {\n if (!quantity) {\n return { inputStatus: \"default\", hintMessage: \"\" };\n }\n\n if (insufficientBalance) {\n return {\n inputStatus: \"error\",\n hintMessage: t(\"transfer.insufficientBalance\"),\n };\n }\n\n if (isExceedSourceTokenCap) {\n return {\n inputStatus: \"error\",\n hintMessage: t(\"transfer.deposit.exceedCap\"),\n };\n }\n\n return { inputStatus: \"default\", hintMessage: \"\" };\n }, [t, insufficientBalance, isExceedSourceTokenCap]);\n\n const { targetInputStatus, targetHintMessage } = useMemo<{\n targetInputStatus: InputStatus;\n targetHintMessage: string;\n }>(() => {\n // when target error, set target input status to default\n if (!targetQuantity || inputStatus === \"error\") {\n return { targetInputStatus: \"default\", targetHintMessage: \"\" };\n }\n\n if (isExceedTargetTokenCap) {\n return {\n targetInputStatus: \"error\",\n targetHintMessage: t(\"transfer.deposit.closeToMaxLimit\"),\n };\n }\n\n return { targetInputStatus: \"default\", targetHintMessage: \"\" };\n }, [t, targetQuantity, isExceedTargetTokenCap, inputStatus]);\n\n const slippageValidate = useCallback(\n (value: number) => {\n if (value && value >= 5) {\n return t(\"transfer.slippage.error.high\");\n }\n return \"\";\n },\n [t],\n );\n\n const validationMessage =\n globalMaxQtyMessage ||\n gasFeeMessage ||\n feeWarningMessage ||\n insufficientGasMessage;\n\n const depositDisabled =\n inputStatus === \"error\" ||\n // if exceed collateral cap, disable deposit button\n isExceedSourceTokenCap ||\n !!feeWarningMessage ||\n !!insufficientNativeTotal ||\n !!insufficientGasMessage;\n\n return {\n validationMessage,\n hintMessage,\n inputStatus,\n targetInputStatus,\n targetHintMessage,\n depositDisabled,\n showSourceDepositCap,\n showTargetDepositCap,\n slippageValidate,\n };\n};\n","import { useMemo } from \"react\";\nimport { UseDepositReturn, useSWR } from \"@orderly.network/hooks\";\nimport { API, nativeTokenAddress } from \"@orderly.network/types\";\n\nexport function useNativeBalance(options: {\n targetChain?: API.Chain;\n fetchBalance: UseDepositReturn[\"fetchBalance\"];\n}) {\n const { targetChain, fetchBalance } = options;\n\n const decimal = targetChain?.network_infos?.currency_decimal;\n\n const key = useMemo(() => {\n const chainId = targetChain?.network_infos?.chain_id;\n\n if (!chainId || !decimal) {\n return null;\n }\n\n return [\"nativeBalance\", chainId, decimal];\n }, [fetchBalance, targetChain, decimal]);\n\n const fetcher = async () => {\n const balance = await fetchBalance(nativeTokenAddress, decimal);\n return balance;\n };\n\n const { data: balance, isLoading } = useSWR<string>(key, fetcher, {\n revalidateOnFocus: true,\n refreshInterval: 3000,\n errorRetryCount: 3,\n });\n\n return { balance, isLoading };\n}\n","import { useCallback, useEffect, useState } from \"react\";\nimport { API } from \"@orderly.network/types\";\nimport { CurrentChain } from \"../../../types\";\nimport { sortTokensWithUSDCFirst } from \"../../../utils\";\n\nexport const useOrderlyTokens = (currentChain?: CurrentChain | null) => {\n const [orderlyTokens, setOrderlyTokens] = useState<API.TokenInfo[]>([]);\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 orderlyTokens = chainInfo.token_infos;\n\n const tokens = sortTokensWithUSDCFirst(orderlyTokens);\n\n setOrderlyTokens(tokens);\n }\n }, []);\n\n useEffect(() => {\n onChainInited(currentChain?.info);\n }, [currentChain]);\n\n return orderlyTokens;\n};\n","import { useEffect, useState } from \"react\";\nimport { useConfig } from \"@orderly.network/hooks\";\nimport { NetworkId, type API } from \"@orderly.network/types\";\n\nexport const useToken = (orderlyTokens: API.TokenInfo[]) => {\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 networkId = useConfig(\"networkId\") as NetworkId;\n\n useEffect(() => {\n const usdcToken = orderlyTokens[0];\n if (!usdcToken) {\n return;\n }\n setSourceToken(usdcToken);\n setTargetToken(usdcToken);\n\n setSourceTokens(orderlyTokens);\n setTargetTokens([usdcToken]);\n }, [orderlyTokens]);\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 collateralTokens = sourceTokens.filter((item) => item.is_collateral)!;\n const usdcToken = sourceTokens.find((item) => item.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([\n sourceToken,\n ...collateralTokens.filter(\n (item) => item.symbol !== sourceToken.symbol,\n ),\n ]);\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(usdcToken || collateralTokens[0]);\n setTargetTokens(collateralTokens);\n }, [networkId, sourceToken, sourceTokens]);\n\n return {\n sourceToken,\n targetToken,\n\n sourceTokens,\n targetTokens,\n\n setSourceTokens,\n\n onSourceTokenChange: setSourceToken,\n onTargetTokenChange: setTargetToken,\n };\n};\n","import { API, isNativeTokenChecker } from \"@orderly.network/types\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport const fetcher = (url: string) => fetch(url).then((res) => res.json());\n\nexport function mergeTokens(\n orderlyTokens: API.TokenInfo[],\n swapTokens: API.TokenInfo[],\n) {\n const tokens = orderlyTokens.map((item) => {\n return {\n ...item,\n swap_enable: swapTokens.some((swapToken) => {\n return swapToken.address?.toLowerCase() === item.address?.toLowerCase();\n }),\n } as API.TokenInfo;\n });\n\n swapTokens.forEach((swapToken) => {\n const orderlyToken = orderlyTokens.find((item) => {\n return (\n item.address?.toLowerCase() === swapToken.address?.toLowerCase() ||\n item.symbol === swapToken.symbol\n );\n });\n\n if (!orderlyToken) {\n tokens.push(swapToken);\n }\n });\n\n return tokens;\n}\n\nexport function filterAndSortTokens(\n orderlyTokens: API.TokenInfo[] = [],\n swapTokens: API.TokenInfo[] = [],\n tokenBalances: Record<string, string> = {},\n getIndexPrice: (token: string) => number,\n) {\n const mergedTokens = mergeTokens(orderlyTokens, swapTokens);\n\n const filteredTokens = mergedTokens\n .map((item) => {\n const quantity = tokenBalances[item.symbol!];\n const amount = new Decimal(quantity || 0)\n .todp(item.precision || 6, Decimal.ROUND_DOWN)\n .toNumber();\n\n return {\n ...item,\n quantity,\n amount,\n };\n })\n .filter((item) => {\n return item.is_collateral || item.amount > 0;\n });\n\n const list = filteredTokens.map((item) => {\n const indexPrice = getIndexPrice(item.symbol!);\n\n const balance = new Decimal(item.amount || 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 const STABLECOIN_ORDER: Record<string, number> = {\n USDC: 0,\n \"USDC.e\": 1,\n USDT: 2,\n };\n const getStablecoinRank = (symbol: string | undefined) =>\n symbol !== undefined && symbol in STABLECOIN_ORDER\n ? STABLECOIN_ORDER[symbol]\n : Number.MAX_SAFE_INTEGER;\n\n return list.sort((a, b) => {\n // 1. Orderly supported collateral first\n if (a.is_collateral !== b.is_collateral) {\n return a.is_collateral ? -1 : 1;\n }\n\n // 2. Among collateral: stablecoins (USDC, USDC.e, USDT) first\n if (a.is_collateral && b.is_collateral) {\n const rankA = getStablecoinRank(a.symbol);\n const rankB = getStablecoinRank(b.symbol);\n if (rankA !== rankB) return rankA - rankB;\n\n // 3. Gas/native token (only when also collateral) after stablecoins\n if (a.isNativeToken !== b.isNativeToken) {\n return a.isNativeToken ? -1 : 1;\n }\n }\n\n // 4. Alphabetically A–Z\n return (a.symbol || \"\").localeCompare(b.symbol || \"\");\n });\n}\n","import { useMemo } from \"react\";\nimport { UseDepositReturn, useSWR } from \"@orderly.network/hooks\";\nimport { API, EMPTY_OBJECT } from \"@orderly.network/types\";\nimport { mergeTokens } from \"../utils\";\n\nexport const useTokenBalances = (options: {\n orderlyTokens: API.TokenInfo[];\n swapTokens: API.TokenInfo[];\n fetchBalances: UseDepositReturn[\"fetchBalances\"];\n}) => {\n const { orderlyTokens, swapTokens, fetchBalances } = options;\n\n const tokens = useMemo(\n () => mergeTokens(orderlyTokens, swapTokens),\n [orderlyTokens, swapTokens],\n );\n\n const key = useMemo(() => {\n if (tokens?.length > 0) {\n // use tokens serialization as key, ensure tokens change to re-request\n return [\"tokenBalances\", tokens.map((item) => item.symbol).join(\",\")];\n }\n return null;\n }, [tokens]);\n\n const fetcher = async () => {\n if (!tokens || tokens.length === 0) {\n return EMPTY_OBJECT;\n }\n const balances = await fetchBalances(tokens);\n // console.info(\"tokenBalances =>\", balances);\n\n return balances;\n };\n\n const { data: balances = EMPTY_OBJECT, isLoading } = useSWR(key, fetcher, {\n revalidateOnFocus: true,\n refreshInterval: 10000,\n errorRetryInterval: 3000,\n errorRetryCount: 3,\n });\n\n const loading = useMemo(() => {\n if (Object.keys(balances).length === 0) {\n return true;\n }\n return isLoading;\n }, [isLoading, balances]);\n\n return { balances, isLoading: loading };\n};\n","import { useMemo } from \"react\";\nimport { useSWR } from \"@orderly.network/hooks\";\nimport { fetcher } from \"../utils\";\nimport type { SupportedChainItem, SupportedChainsResponse } from \"./type\";\n\nconst SUPPORTED_CHAINS_URL =\n \"https://api.woofi.com/woofi_dex/depositor/supported_chains\";\n\nexport const useSwapSupportedChains = (chainId?: number | string) => {\n const { data, isLoading } = useSWR<SupportedChainsResponse>(\n SUPPORTED_CHAINS_URL,\n fetcher,\n {\n revalidateOnFocus: false,\n },\n );\n\n const chains = useMemo((): SupportedChainItem[] => {\n if (!data || data.status !== \"ok\") return [];\n return data.data?.perp_vault?.filter((c) => c.same_chain_deposit === true);\n }, [data]);\n\n const chain = useMemo(() => {\n if (!chainId || !chains?.length) return null;\n return chains.find((c) => c.chain_id === parseInt(chainId as string));\n }, [chains, chainId]);\n\n return {\n chains,\n chain,\n isLoading,\n };\n};\n","import { useMemo } from \"react\";\nimport { useSWR } from \"@orderly.network/hooks\";\nimport { API } from \"@orderly.network/types\";\nimport { fetcher } from \"../utils\";\nimport { useSwapSupportedChains } from \"./useSwapSupportedChains\";\n\ntype SwapToken = {\n address: string;\n symbol: string;\n decimals: number;\n name: string;\n logoURI: string;\n eip2612: boolean;\n tags: string[];\n};\n\nexport const useSwapTokens = (\n chainId?: string | number,\n enableSwapDeposit?: boolean,\n) => {\n const { chain: swapSupportedChain } = useSwapSupportedChains(chainId);\n const url = useMemo(() => {\n if (enableSwapDeposit && swapSupportedChain) {\n return `https://widget-api.woofi.com/1inch_tokens?network=${swapSupportedChain.chain_key}`;\n }\n\n return null;\n }, [chainId, enableSwapDeposit, swapSupportedChain]);\n\n const { data } = useSWR(url, fetcher, {\n revalidateOnFocus: false,\n });\n\n // {\n // \"0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\": {\n // address: \"0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\",\n // symbol: \"ETH\",\n // decimals: 18,\n // name: \"Ether\",\n // logoURI:\n // \"https://tokens.1inch.io/0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee.png\",\n // eip2612: false,\n // tags: [\"crosschain\", \"GROUP:ETH\", \"native\", \"PEG:ETH\"],\n // }\n // }\n const tokens = useMemo(() => {\n const tokenMap = data?.tokens as Record<string, SwapToken>;\n return Object.values(tokenMap || {}).map((item) => ({\n symbol: item.symbol,\n address: item.address,\n decimals: item.decimals,\n // default precision is 8 for 1inch tokens\n precision: 8,\n swap_enable: true,\n // need to show token icon\n logo_uri: item.logoURI,\n }));\n }, [data]);\n\n if (!enableSwapDeposit) {\n return [];\n }\n\n return tokens as unknown as API.TokenInfo[];\n};\n","[\n {\n \"inputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [],\n \"name\": \"BridgeTokenNotEnough\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"DepositAmountExceed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"DstDepositorNotSet\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"EnforcedPause\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ExpectedPause\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"FromNotPair\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidBridgeAmount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidBridgeSlippage\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidCaller\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidDepositor\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidDstToToken\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidInitialization\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint16\",\n \"name\": \"optionType\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"InvalidOptionType\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidPerpVault\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidReceiver\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidSrcBridgeToken\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidSrcFromAmount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidSrcFromToken\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidWOOFiRouter\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotInitializing\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableInvalidOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableUnauthorizedAccount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"bits\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"SafeCastOverflowedUintDowncast\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint64\",\n \"name\": \"version\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint32\",\n \"name\": \"srcEid\",\n \"type\": \"uint32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"guid\",\n \"type\": \"bytes32\"\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\": \"bridgeToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"bridgeAmount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"swapBridgeAmount\",\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\": \"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\": \"enum IOrderlyDepositor.SwapType\",\n \"name\": \"swapType\",\n \"type\": \"uint8\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bool\",\n \"name\": \"ableToDeposit\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"OrderlyCrossDepositOnDstChain\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint32\",\n \"name\": \"dstEid\",\n \"type\": \"uint32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"guid\",\n \"type\": \"bytes32\"\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\": \"realBridgeAmount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"enum IOrderlyDepositor.SwapType\",\n \"name\": \"swapType\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"OrderlyCrossDepositOnSrcChain\",\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 {\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\": \"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\": \"enum IOrderlyDepositor.SwapType\",\n \"name\": \"swapType\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"OrderlyDeposit\",\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 \"inputs\": [],\n \"name\": \"BRIDGE_SLIPPAGE_BASE\",\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\": \"ETH_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 \"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\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"address\",\n \"name\": \"fromToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"bridgeToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"fromAmount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"minBridgeAmount\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct IOrderlyDepositor.SrcInfo\",\n \"name\": \"srcInfo\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"eid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"bridgeToken\",\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\": \"uint128\",\n \"name\": \"orderlyBridgeFee\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"dstGasForCall\",\n \"type\": \"uint128\"\n }\n ],\n \"internalType\": \"struct IOrderlyDepositor.DstInfo\",\n \"name\": \"dstInfo\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"address\",\n \"name\": \"swapRouter\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct IOrderlyDepositor.SrcExtSwapInfo\",\n \"name\": \"srcExtSwapInfo\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"address\",\n \"name\": \"swapRouter\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"swapAmount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct IOrderlyDepositor.DstExtSwapInfo\",\n \"name\": \"dstExtSwapInfo\",\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 IOrderlyDepositor.PerpAccountInfo\",\n \"name\": \"dstPerpAccountInfo\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"crossDeposit\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"orderlyBridgeFee\",\n \"type\": \"uint128\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"address\",\n \"name\": \"fromToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"bridgeToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"fromAmount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"minBridgeAmount\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct IOrderlyDepositor.SrcInfo\",\n \"name\": \"info\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"address\",\n \"name\": \"swapRouter\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct IOrderlyDepositor.SrcExtSwapInfo\",\n \"name\": \"extSwapInfo\",\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 IOrderlyDepositor.PerpAccountInfo\",\n \"name\": \"perpAccountInfo\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"deposit\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"\",\n \"type\": \"uint32\"\n }\n ],\n \"name\": \"depositors\",\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\": \"_stuckToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"_amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"inCaseTokenGotStuck\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_weth\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_woofiRouter\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_sgInfo\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_guid\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"_message\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"lzCompose\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\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\": \"uint32\",\n \"name\": \"\",\n \"type\": \"uint32\"\n }\n ],\n \"name\": \"perpVaults\",\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 \"components\": [\n {\n \"internalType\": \"address\",\n \"name\": \"fromToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"bridgeToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"fromAmount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"minBridgeAmount\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct IOrderlyDepositor.SrcInfo\",\n \"name\": \"srcInfo\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"eid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"bridgeToken\",\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\": \"uint128\",\n \"name\": \"orderlyBridgeFee\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"dstGasForCall\",\n \"type\": \"uint128\"\n }\n ],\n \"internalType\": \"struct IOrderlyDepositor.DstInfo\",\n \"name\": \"dstInfo\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"composeMsg\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"quoteLayerZeroFee\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\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\": [\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\": \"uint16\",\n \"name\": \"_chainId\",\n \"type\": \"uint16\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_depositor\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setDepositor\",\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\": \"_perpVault\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setPerpVault\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_woofiRouter\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setWOOFiRouter\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"sgInfo\",\n \"outputs\": [\n {\n \"internalType\": \"contract ISgInfoV2\",\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\": \"woofiRouter\",\n \"outputs\": [\n {\n \"internalType\": \"contract IWOOFiRouterV2\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"stateMutability\": \"payable\",\n \"type\": \"receive\"\n }\n]\n","import { useLocalStorage } from \"@orderly.network/hooks\";\n\nconst ORDERLY_SWAP_DEPOSIT_SLIPPAGE_KEY = \"orderly_swap_deposit_slippage\";\n\nexport const useSlippage = () => {\n const [slippage, setSlippage] = useLocalStorage(\n ORDERLY_SWAP_DEPOSIT_SLIPPAGE_KEY,\n 1,\n );\n\n return { slippage, onSlippageChange: setSlippage };\n};\n","import { useMemo } from \"react\";\nimport { useSWR } from \"@orderly.network/hooks\";\nimport { API } from \"@orderly.network/types\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { fetcher } from \"../utils\";\nimport { type SwapQuoteResponse } from \"./type\";\nimport { useSwapSupportedChains } from \"./useSwapSupportedChains\";\n\nexport const useSwapQuote = (options: {\n sourceToken?: API.TokenInfo;\n targetToken?: API.TokenInfo;\n quantity: string;\n chainId?: number;\n slippage: number;\n}) => {\n const { sourceToken, targetToken, quantity, chainId, slippage } = options;\n\n const { chain: swapSupportedChain } = useSwapSupportedChains(chainId);\n\n const url = useMemo(() => {\n const chainKey = swapSupportedChain?.chain_key;\n\n const urlSearchParams = new URLSearchParams();\n\n const isSwapDeposit =\n sourceToken?.swap_enable &&\n sourceToken?.address &&\n targetToken?.address &&\n sourceToken?.address !== targetToken?.address;\n\n if (!isSwapDeposit || !chainKey || !quantity || !slippage) {\n return null;\n }\n\n const amount = new Decimal(quantity)\n .mul(Math.pow(10, sourceToken.decimals!))\n // use toFixed(0) to avoid show 1e+21 value\n .toFixed(0);\n\n urlSearchParams.set(\"from_token\", sourceToken.address!);\n urlSearchParams.set(\"to_token\", targetToken.address!);\n urlSearchParams.set(\"from_amount\", amount);\n urlSearchParams.set(\"network\", chainKey);\n urlSearchParams.set(\"slippage\", slippage.toString());\n urlSearchParams.set(\"extra_fee_rate\", \"0\");\n\n return `https://api.woofi.com/v2/swap?${urlSearchParams.toString()}`;\n }, [\n sourceToken,\n targetToken,\n quantity,\n chainId,\n slippage,\n swapSupportedChain,\n ]);\n\n const { data, isLoading: swapPriceRevalidating } = useSWR<SwapQuoteResponse>(\n url,\n fetcher,\n {\n revalidateOnFocus: false,\n refreshInterval: 10000,\n shouldRetryOnError: false,\n },\n );\n\n const swapData = useMemo(() => {\n if (!data) return;\n if (data.status === \"ok\") {\n return data.data;\n }\n }, [data]);\n\n const error = useMemo(() => {\n if (!data) return;\n if (data.status === \"fail\") {\n return data.error?.message?.[\"1inch\"]?.error?.description;\n }\n }, [data]);\n\n const { swapQuantity, swapMinReceived } = useMemo(() => {\n if (!swapData) return {};\n const decimals = targetToken?.decimals! || 0;\n const swapQuantity = new Decimal(swapData.outcomes.amount || 0)\n .div(Math.pow(10, decimals))\n .toString();\n\n const swapMinReceived = new Decimal(swapData.infos.min_to_amount || 0)\n .div(Math.pow(10, decimals))\n .toString();\n\n return { swapQuantity, swapMinReceived };\n }, [swapData, targetToken?.decimals]);\n\n return {\n swapData,\n swapPrice: swapData?.price,\n swapMinReceived,\n swapQuantity,\n swapPriceRevalidating,\n error,\n };\n};\n","import { useCallback } from \"react\";\nimport { utils } from \"@orderly.network/core\";\nimport { useAccount, useConfig } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { API, isNativeTokenChecker } from \"@orderly.network/types\";\nimport { toast } from \"@orderly.network/ui\";\nimport { CurrentChain } from \"../../../types\";\nimport swapContractAbi from \"./perp_vault_depositor.json\";\nimport { useSlippage } from \"./useSlippage\";\nimport { useSwapQuote } from \"./useSwapQuote\";\n\ntype SwapDepositOptions = {\n sourceToken?: API.TokenInfo;\n targetToken?: API.TokenInfo;\n currentChain?: CurrentChain | null;\n quantity: string;\n depositFee: bigint;\n};\n\nexport const SWAP_CONTRACT_ADDRESS =\n \"0xe18f1051d1cCeCb61572eb686e1beb34A8612bf3\";\n\nexport const useSwapDeposit = (options: SwapDepositOptions) => {\n const { sourceToken, targetToken, currentChain, quantity, depositFee } =\n options;\n const { account } = useAccount();\n const brokerId = useConfig(\"brokerId\") as string;\n\n const { slippage, onSlippageChange } = useSlippage();\n\n const { t } = useTranslation();\n\n const {\n swapData,\n swapPrice,\n swapQuantity,\n swapMinReceived,\n swapPriceRevalidating,\n error,\n } = useSwapQuote({\n sourceToken,\n targetToken,\n quantity,\n chainId: currentChain?.id,\n slippage,\n });\n\n const onSwapDeposit = useCallback(async () => {\n if (\n !account.address ||\n !account.walletAdapter ||\n !swapData ||\n !sourceToken ||\n !targetToken ||\n !brokerId\n ) {\n return;\n }\n\n const userAddress = account.address;\n\n const receiver = userAddress;\n const orderlyBridgeFee = depositFee;\n\n const info = {\n fromToken: swapData.infos.from_token,\n bridgeToken: swapData.infos.to_token,\n fromAmount: swapData.infos.from_amount,\n minBridgeAmount: swapData.infos.min_to_amount,\n };\n\n const extSwapInfo = {\n swapRouter: swapData[\"1inch\"].swap_router,\n data: swapData[\"1inch\"].data,\n };\n\n const perpAccountInfo = {\n accountId: account.accountIdHashStr,\n brokerHash: utils.parseBrokerHash(brokerId),\n tokenHash: utils.parseTokenHash(targetToken.symbol!),\n };\n\n const value = isNativeTokenChecker(sourceToken.address!)\n ? BigInt(swapData.infos.from_amount) + orderlyBridgeFee\n : orderlyBridgeFee;\n\n const payload = {\n from: userAddress,\n to: SWAP_CONTRACT_ADDRESS,\n data: [receiver, orderlyBridgeFee, info, extSwapInfo, perpAccountInfo],\n value,\n };\n\n console.info(\"swap deposit payload\", payload);\n\n try {\n const result = await account.walletAdapter.sendTransaction(\n SWAP_CONTRACT_ADDRESS,\n \"deposit\",\n payload,\n {\n abi: swapContractAbi,\n },\n );\n\n console.info(\"swap deposit result\", result);\n\n return result;\n } catch (err: any) {\n console.error(\"swap deposit error\", err);\n toast.error(err.message || t(\"common.somethingWentWrong\"));\n throw err;\n }\n }, [account, brokerId, swapData, sourceToken, targetToken, depositFee]);\n\n return {\n swapPrice,\n swapQuantity,\n swapMinReceived,\n swapPriceRevalidating,\n slippage,\n onSlippageChange,\n onSwapDeposit,\n error,\n };\n};\n","import { useCallback, useEffect, useMemo } from \"react\";\nimport {\n useAccount,\n useConfig,\n useDeposit,\n useIndexPricesStream,\n useOrderlyContext,\n} from \"@orderly.network/hooks\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { NetworkId } from \"@orderly.network/types\";\nimport { useAuthGuard } from \"@orderly.network/ui-connector\";\nimport { useActionType } from \"./hooks/useActionType\";\nimport { useChainSelect } from \"./hooks/useChainSelect\";\nimport { useCollateralValue } from \"./hooks/useCollateralValue\";\nimport { useConvertThreshold } from \"./hooks/useConvertThreshold\";\nimport { useDepositAction } from \"./hooks/useDepositAction\";\nimport { useDepositFee } from \"./hooks/useDepositFee\";\nimport { useDepositFormQuantities } from \"./hooks/useDepositQuantities\";\nimport { useDepositValidation } from \"./hooks/useDepositValidation\";\nimport { useNativeBalance } from \"./hooks/useNativeBalance\";\nimport { useOrderlyTokens } from \"./hooks/useOrderlyTokens\";\nimport { useToken } from \"./hooks/useToken\";\nimport { useTokenBalances } from \"./hooks/useTokenBalances\";\nimport { useSwapTokens } from \"./swap/use1inchTokens\";\nimport { SWAP_CONTRACT_ADDRESS, useSwapDeposit } from \"./swap/useSwapDeposit\";\nimport { filterAndSortTokens } from \"./utils\";\n\nexport type DepositFormScriptReturn = ReturnType<typeof useDepositFormScript>;\n\nexport type DepositFormScriptOptions = {\n close?: () => void;\n};\n\nexport const useDepositFormScript = (options: DepositFormScriptOptions) => {\n const { wrongNetwork } = useAppContext();\n const { enableSwapDeposit } = useOrderlyContext();\n const { account } = useAccount();\n const networkId = useConfig(\"networkId\") as NetworkId;\n\n const { chains, currentChain, settingChain, onChainChange } =\n useChainSelect();\n\n const swapTokens = useSwapTokens(currentChain?.id, enableSwapDeposit);\n const orderlyTokens = useOrderlyTokens(currentChain);\n\n const {\n sourceToken,\n targetToken,\n sourceTokens,\n targetTokens,\n onSourceTokenChange,\n setSourceTokens,\n onTargetTokenChange,\n } = useToken(orderlyTokens);\n\n const { getIndexPrice } = useIndexPricesStream();\n\n const {\n balance,\n allowance,\n depositFee,\n balanceRevalidating,\n depositFeeRevalidating,\n quantity,\n setQuantity,\n approve,\n deposit,\n fetchBalance,\n fetchBalances,\n targetChain,\n isNativeToken,\n } = useDeposit({\n address: sourceToken?.address,\n decimals: sourceToken?.decimals,\n srcChainId: currentChain?.id,\n srcToken: sourceToken?.symbol,\n dstToken: targetToken?.symbol,\n depositorAddress: enableSwapDeposit ? SWAP_CONTRACT_ADDRESS : undefined,\n });\n\n const { balance: nativeBalance, isLoading: nativeBalanceRevalidating } =\n useNativeBalance({\n fetchBalance,\n targetChain,\n });\n\n const { balances: tokenBalances, isLoading: batchBalancesRevalidating } =\n useTokenBalances({ orderlyTokens, swapTokens, fetchBalances });\n\n useEffect(() => {\n const sortedTokens = filterAndSortTokens(\n orderlyTokens,\n swapTokens,\n tokenBalances,\n getIndexPrice,\n );\n setSourceTokens(sortedTokens);\n }, [orderlyTokens, swapTokens, tokenBalances]);\n\n const needSwap = useMemo(() => {\n return (\n !!sourceToken?.symbol &&\n !!targetToken?.symbol &&\n sourceToken.symbol !== targetToken?.symbol\n );\n }, [sourceToken, targetToken]);\n\n const {\n swapPrice,\n swapQuantity,\n swapMinReceived,\n swapPriceRevalidating,\n slippage,\n onSlippageChange,\n onSwapDeposit,\n error: swapErrorMessage,\n } = useSwapDeposit({\n sourceToken,\n targetToken,\n currentChain,\n quantity,\n depositFee,\n });\n\n const {\n maxQuantity,\n maxDepositAmount,\n targetQuantity,\n swapPriceInUSD,\n quantityNotional,\n indexPrice,\n swapIndexPrice,\n } = useDepositFormQuantities({\n sourceToken,\n targetToken,\n balance,\n quantity,\n needSwap,\n swapQuantity,\n swapPrice,\n getIndexPrice,\n });\n\n const nativeSymbol = useMemo(() => {\n return currentChain?.info?.nativeToken?.symbol;\n }, [currentChain]);\n\n const onDepositSuccess = useCallback(() => {\n setQuantity(\"\");\n options.close?.();\n }, []);\n\n const {\n isMutating: depositRevalidating,\n depositError,\n setDepositError,\n onApprove,\n onDeposit,\n onApproveAndDeposit,\n } = useDepositAction({\n quantity,\n approve,\n deposit,\n needSwap,\n swapDeposit: onSwapDeposit,\n onSuccess: onDepositSuccess,\n });\n\n useEffect(() => {\n setQuantity(\"\");\n setDepositError(\"\");\n // when sourceToken or currentChain?.id changes, clean state\n }, [sourceToken, currentChain?.id]);\n\n const fee = useDepositFee({ nativeSymbol, depositFee, getIndexPrice });\n\n const {\n inputStatus,\n hintMessage,\n validationMessage,\n depositDisabled,\n targetInputStatus,\n targetHintMessage,\n showSourceDepositCap,\n showTargetDepositCap,\n slippageValidate,\n } = useDepositValidation({\n sourceToken,\n targetToken,\n quantity,\n targetQuantity,\n maxQuantity,\n isNativeToken,\n depositFee,\n depositFeeRevalidating,\n nativeBalanceRevalidating,\n dstGasFee: fee.dstGasFee,\n nativeSymbol,\n nativeBalance,\n account,\n currentChain,\n depositError,\n needSwap,\n });\n\n const usdcToken = useMemo(() => {\n return sourceTokens?.find((item) => item.symbol === \"USDC\");\n }, [sourceTokens]);\n\n const actionType = useActionType({ allowance, quantity, maxQuantity });\n\n const isLoggedIn = useAuthGuard();\n\n const {\n collateralRatio,\n collateralContributionQuantity,\n currentLTV,\n nextLTV,\n } = useCollateralValue({\n sourceToken,\n targetToken,\n quantity,\n indexPrice: needSwap ? swapIndexPrice : indexPrice,\n });\n\n const {\n ltv_threshold,\n negative_usdc_threshold,\n isLoading: isConvertThresholdLoading,\n } = useConvertThreshold();\n\n const loading =\n depositFeeRevalidating || depositRevalidating || swapPriceRevalidating;\n\n const disabled =\n !sourceToken ||\n !quantity ||\n Number(quantity) === 0 ||\n depositDisabled ||\n loading ||\n !!swapErrorMessage;\n\n const targetQuantityLoading = swapPriceRevalidating;\n\n const warningMessage = validationMessage || swapErrorMessage;\n\n return {\n sourceToken,\n targetToken,\n sourceTokens,\n targetTokens,\n onSourceTokenChange,\n onTargetTokenChange,\n\n nativeSymbol,\n isNativeToken,\n quantity,\n collateralContributionQuantity,\n maxQuantity,\n maxDepositAmount,\n onQuantityChange: setQuantity,\n hintMessage,\n inputStatus,\n targetInputStatus,\n targetHintMessage,\n chains,\n currentChain,\n settingChain,\n onChainChange,\n actionType,\n onDeposit,\n onApprove,\n onApproveAndDeposit,\n wrongNetwork,\n balanceRevalidating,\n batchBalancesRevalidating,\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 slippageValidate,\n swapMinReceived,\n usdcToken,\n\n needSwap,\n swapPrice,\n swapPriceInUSD,\n warningMessage,\n targetQuantity,\n targetQuantityLoading,\n\n isLoggedIn,\n showSourceDepositCap,\n showTargetDepositCap,\n quantityNotional,\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 { useCallback, useEffect, useRef, useState } from \"react\";\nimport { Chain, ConnectedChain, useConfig } from \"@orderly.network/hooks\";\nimport { NetworkId, type API } from \"@orderly.network/types\";\nimport { getUSDCToken } from \"../../../utils\";\n\nexport type CurrentChain = Pick<ConnectedChain, \"namespace\"> & {\n id: number;\n info?: Chain;\n};\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 = getUSDCToken(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 { useEffect, useMemo, useState } from \"react\";\nimport {\n useHoldingStream,\n useMemoizedFn,\n useTokensInfo,\n} from \"@orderly.network/hooks\";\nimport { API } from \"@orderly.network/types\";\nimport { CurrentChain, WithdrawTo } from \"../../../types\";\nimport { getUSDCToken } from \"../../../utils\";\nimport { useToken } from \"../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 = getUSDCToken(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 = getUSDCToken(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 \"../../types\";\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-base-6 oui-bg-transparent\")}\n classNames={{ input: \"oui-text-base-contrast\" }}\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 quantity={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 { 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 quantity={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 { FC, ReactNode } 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 suffix?: ReactNode;\n}\n\nexport const SwapCoin: FC<SwapCoinProps> = (props) => {\n const {\n sourceSymbol,\n targetSymbol,\n indexPrice,\n precision = 6,\n suffix,\n } = props;\n\n return (\n <Flex\n itemAlign=\"center\"\n gap={1}\n className={cn(props.className, \"oui-text-2xs oui-text-base-contrast-36\")}\n >\n <Text intensity={80}>1</Text>\n <span>{sourceSymbol}</span>\n <span>=</span>\n\n <Text.numeral intensity={80} dp={precision} padding={false}>\n {indexPrice}\n </Text.numeral>\n\n <span>{targetSymbol}</span>\n {suffix}\n </Flex>\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 quantity={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"]}