@orderly.network/hooks 1.2.0 → 1.3.2
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/esm/configProvider.d.ts +7 -1
- package/esm/configProvider.d.ts.map +1 -1
- package/esm/configProvider.js +44 -18
- package/esm/configProvider.js.map +1 -0
- package/esm/dataProvider.js +24 -19
- package/esm/dataProvider.js.map +1 -0
- package/esm/index.d.ts +1 -0
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +4 -1
- package/esm/index.js.map +1 -0
- package/esm/middleware/signatureMiddleware.js +9 -8
- package/esm/middleware/signatureMiddleware.js.map +1 -0
- package/esm/orderly/orderbook.service.js +39 -28
- package/esm/orderly/orderbook.service.js.map +1 -0
- package/esm/orderly/orderlyHooks.d.ts +3 -0
- package/esm/orderly/orderlyHooks.d.ts.map +1 -1
- package/esm/orderly/orderlyHooks.js +2 -0
- package/esm/orderly/orderlyHooks.js.map +1 -0
- package/esm/orderly/useAccountInfo.js +3 -1
- package/esm/orderly/useAccountInfo.js.map +1 -0
- package/esm/orderly/useChain.js +16 -9
- package/esm/orderly/useChain.js.map +1 -0
- package/esm/orderly/useChains.d.ts +11 -12
- package/esm/orderly/useChains.d.ts.map +1 -1
- package/esm/orderly/useChains.js +68 -46
- package/esm/orderly/useChains.js.map +1 -0
- package/esm/orderly/useCollateral.d.ts +3 -4
- package/esm/orderly/useCollateral.d.ts.map +1 -1
- package/esm/orderly/useCollateral.js +53 -20
- package/esm/orderly/useCollateral.js.map +1 -0
- package/esm/orderly/useDeposit.js +123 -125
- package/esm/orderly/useDeposit.js.map +1 -0
- package/esm/orderly/useFundingRate.js +14 -13
- package/esm/orderly/useFundingRate.js.map +1 -0
- package/esm/orderly/useFundingRates.js +6 -4
- package/esm/orderly/useFundingRates.js.map +1 -0
- package/esm/orderly/useHoldingStream.js +19 -15
- package/esm/orderly/useHoldingStream.js.map +1 -0
- package/esm/orderly/useIndexPrice.js +7 -5
- package/esm/orderly/useIndexPrice.js.map +1 -0
- package/esm/orderly/useLeverage.js +9 -12
- package/esm/orderly/useLeverage.js.map +1 -0
- package/esm/orderly/useMarginRatio.js +27 -13
- package/esm/orderly/useMarginRatio.js.map +1 -0
- package/esm/orderly/useMarkPrice.js +13 -7
- package/esm/orderly/useMarkPrice.js.map +1 -0
- package/esm/orderly/useMarkPricesStream.d.ts +1 -1
- package/esm/orderly/useMarkPricesStream.d.ts.map +1 -1
- package/esm/orderly/useMarkPricesStream.js +9 -8
- package/esm/orderly/useMarkPricesStream.js.map +1 -0
- package/esm/orderly/useMarketTradeStream.js +33 -18
- package/esm/orderly/useMarketTradeStream.js.map +1 -0
- package/esm/orderly/useMarkets.js +144 -81
- package/esm/orderly/useMarkets.js.map +1 -0
- package/esm/orderly/useMarketsStream.js +23 -28
- package/esm/orderly/useMarketsStream.js.map +1 -0
- package/esm/orderly/useMaxQty.d.ts +6 -0
- package/esm/orderly/useMaxQty.d.ts.map +1 -1
- package/esm/orderly/useMaxQty.js +26 -18
- package/esm/orderly/useMaxQty.js.map +1 -0
- package/esm/orderly/useOpenInterest.js +7 -5
- package/esm/orderly/useOpenInterest.js.map +1 -0
- package/esm/orderly/useOrderEntry.js +182 -160
- package/esm/orderly/useOrderEntry.js.map +1 -0
- package/esm/orderly/useOrderStream.js +85 -66
- package/esm/orderly/useOrderStream.js.map +1 -0
- package/esm/orderly/useOrderbookStream.d.ts +2 -3
- package/esm/orderly/useOrderbookStream.d.ts.map +1 -1
- package/esm/orderly/useOrderbookStream.js +173 -103
- package/esm/orderly/useOrderbookStream.js.map +1 -0
- package/esm/orderly/usePositionStream.js +82 -62
- package/esm/orderly/usePositionStream.js.map +1 -0
- package/esm/orderly/usePrivateDataObserver.js +55 -48
- package/esm/orderly/usePrivateDataObserver.js.map +1 -0
- package/esm/orderly/useSettleSubscription.js +8 -6
- package/esm/orderly/useSettleSubscription.js.map +1 -0
- package/esm/orderly/useSymbolPriceRange.js +14 -8
- package/esm/orderly/useSymbolPriceRange.js.map +1 -0
- package/esm/orderly/useSymbolsInfo.js +7 -5
- package/esm/orderly/useSymbolsInfo.js.map +1 -0
- package/esm/orderly/useTickerStream.d.ts +5 -1
- package/esm/orderly/useTickerStream.d.ts.map +1 -1
- package/esm/orderly/useTickerStream.js +26 -29
- package/esm/orderly/useTickerStream.js.map +1 -0
- package/esm/orderly/useWalletSubscription.js +8 -6
- package/esm/orderly/useWalletSubscription.js.map +1 -0
- package/esm/orderly/useWithdraw.js +19 -11
- package/esm/orderly/useWithdraw.js.map +1 -0
- package/esm/orderlyContext.d.ts +8 -1
- package/esm/orderlyContext.d.ts.map +1 -1
- package/esm/orderlyContext.js +2 -1
- package/esm/orderlyContext.js.map +1 -0
- package/esm/services/dataCenter.js +10 -8
- package/esm/services/dataCenter.js.map +1 -0
- package/esm/services/painter/backgroundPaint.js +11 -14
- package/esm/services/painter/backgroundPaint.js.map +1 -0
- package/esm/services/painter/basePaint.js +5 -1
- package/esm/services/painter/basePaint.js.map +1 -0
- package/esm/services/painter/dataPaint.js +53 -50
- package/esm/services/painter/dataPaint.js.map +1 -0
- package/esm/services/painter/layout.config.js +15 -13
- package/esm/services/painter/layout.config.js.map +1 -0
- package/esm/services/painter/painter.js +14 -13
- package/esm/services/painter/painter.js.map +1 -0
- package/esm/services/painter/resource.js +6 -4
- package/esm/services/painter/resource.js.map +1 -0
- package/esm/statusProvider.js +10 -3
- package/esm/statusProvider.js.map +1 -0
- package/esm/unuse/apiPrefixMiddleware.js +18 -16
- package/esm/unuse/apiPrefixMiddleware.js.map +1 -0
- package/esm/unuse/fn.js +3 -1
- package/esm/unuse/fn.js.map +1 -0
- package/esm/unuse/useBalance.js +6 -4
- package/esm/unuse/useBalance.js.map +1 -0
- package/esm/unuse/useFetures.js +26 -18
- package/esm/unuse/useFetures.js.map +1 -0
- package/esm/unuse/useRunOnce.js +10 -7
- package/esm/unuse/useRunOnce.js.map +1 -0
- package/esm/unuse/useSyncEnd.js +5 -4
- package/esm/unuse/useSyncEnd.js.map +1 -0
- package/esm/unuse/useTokenInfo.js +7 -5
- package/esm/unuse/useTokenInfo.js.map +1 -0
- package/esm/unuse/useUnsettlementPnL.js +7 -3
- package/esm/unuse/useUnsettlementPnL.js.map +1 -0
- package/esm/useAccount.js +18 -21
- package/esm/useAccount.js.map +1 -0
- package/esm/useAccountInstance.js +6 -7
- package/esm/useAccountInstance.js.map +1 -0
- package/esm/useBoolean.js +14 -5
- package/esm/useBoolean.js.map +1 -0
- package/esm/useConfig.js +3 -1
- package/esm/useConfig.js.map +1 -0
- package/esm/useEventEmitter.js +4 -2
- package/esm/useEventEmitter.js.map +1 -0
- package/esm/useLazyQuery.js +6 -7
- package/esm/useLazyQuery.js.map +1 -0
- package/esm/useLocalStorage.js +30 -20
- package/esm/useLocalStorage.js.map +1 -0
- package/esm/useMediaQuery.js +11 -9
- package/esm/useMediaQuery.js.map +1 -0
- package/esm/useMutation.js +26 -37
- package/esm/useMutation.js.map +1 -0
- package/esm/useObserve.js +4 -4
- package/esm/useObserve.js.map +1 -0
- package/esm/useParamsCheck.js +8 -10
- package/esm/useParamsCheck.js.map +1 -0
- package/esm/usePoster.js +56 -45
- package/esm/usePoster.js.map +1 -0
- package/esm/usePreloadData.js +9 -5
- package/esm/usePreloadData.js.map +1 -0
- package/esm/usePrivateInfiniteQuery.js +15 -9
- package/esm/usePrivateInfiniteQuery.js.map +1 -0
- package/esm/usePrivateQuery.js +15 -8
- package/esm/usePrivateQuery.js.map +1 -0
- package/esm/useQuery.js +6 -5
- package/esm/useQuery.js.map +1 -0
- package/esm/useSessionStorage.js +28 -19
- package/esm/useSessionStorage.js.map +1 -0
- package/esm/useWS.js +15 -13
- package/esm/useWS.js.map +1 -0
- package/esm/useWsStatus.js +12 -12
- package/esm/useWsStatus.js.map +1 -0
- package/esm/utils/createGetter.js +8 -8
- package/esm/utils/createGetter.js.map +1 -0
- package/esm/utils/createOrder.d.ts +1 -0
- package/esm/utils/createOrder.d.ts.map +1 -1
- package/esm/utils/createOrder.js +59 -43
- package/esm/utils/createOrder.js.map +1 -0
- package/esm/utils/dev.js +6 -4
- package/esm/utils/dev.js.map +1 -0
- package/esm/utils/fetcher.js +3 -1
- package/esm/utils/fetcher.js.map +1 -0
- package/esm/utils/json.js +3 -2
- package/esm/utils/json.js.map +1 -0
- package/esm/utils/orderEntryHelper.js +92 -63
- package/esm/utils/orderEntryHelper.js.map +1 -0
- package/esm/utils/parseHolding.js +10 -6
- package/esm/utils/parseHolding.js.map +1 -0
- package/esm/utils/swr.js +114 -104
- package/esm/utils/swr.js.map +1 -0
- package/esm/version.d.ts +1 -1
- package/esm/version.js +4 -3
- package/esm/version.js.map +1 -0
- package/esm/walletConnectorContext.js +4 -2
- package/esm/walletConnectorContext.js.map +1 -0
- package/lib/configProvider.d.ts +7 -1
- package/lib/configProvider.d.ts.map +1 -1
- package/lib/configProvider.js +108 -56
- package/lib/configProvider.js.map +1 -0
- package/lib/dataProvider.js +50 -29
- package/lib/dataProvider.js.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +191 -88
- package/lib/index.js.map +1 -0
- package/lib/middleware/signatureMiddleware.js +22 -15
- package/lib/middleware/signatureMiddleware.js.map +1 -0
- package/lib/orderly/orderbook.service.js +59 -33
- package/lib/orderly/orderbook.service.js.map +1 -0
- package/lib/orderly/orderlyHooks.d.ts +3 -0
- package/lib/orderly/orderlyHooks.d.ts.map +1 -1
- package/lib/orderly/orderlyHooks.js +124 -57
- package/lib/orderly/orderlyHooks.js.map +1 -0
- package/lib/orderly/useAccountInfo.js +14 -6
- package/lib/orderly/useAccountInfo.js.map +1 -0
- package/lib/orderly/useChain.js +30 -17
- package/lib/orderly/useChain.js.map +1 -0
- package/lib/orderly/useChains.d.ts +11 -12
- package/lib/orderly/useChains.d.ts.map +1 -1
- package/lib/orderly/useChains.js +100 -59
- package/lib/orderly/useChains.js.map +1 -0
- package/lib/orderly/useCollateral.d.ts +3 -4
- package/lib/orderly/useCollateral.d.ts.map +1 -1
- package/lib/orderly/useCollateral.js +81 -42
- package/lib/orderly/useCollateral.js.map +1 -0
- package/lib/orderly/useDeposit.js +154 -150
- package/lib/orderly/useDeposit.js.map +1 -0
- package/lib/orderly/useFundingRate.js +29 -22
- package/lib/orderly/useFundingRate.js.map +1 -0
- package/lib/orderly/useFundingRates.js +19 -11
- package/lib/orderly/useFundingRates.js.map +1 -0
- package/lib/orderly/useHoldingStream.js +39 -27
- package/lib/orderly/useHoldingStream.js.map +1 -0
- package/lib/orderly/useIndexPrice.js +24 -14
- package/lib/orderly/useIndexPrice.js.map +1 -0
- package/lib/orderly/useLeverage.js +27 -24
- package/lib/orderly/useLeverage.js.map +1 -0
- package/lib/orderly/useMarginRatio.js +49 -29
- package/lib/orderly/useMarginRatio.js.map +1 -0
- package/lib/orderly/useMarkPrice.js +26 -15
- package/lib/orderly/useMarkPrice.js.map +1 -0
- package/lib/orderly/useMarkPricesStream.d.ts +1 -1
- package/lib/orderly/useMarkPricesStream.d.ts.map +1 -1
- package/lib/orderly/useMarkPricesStream.js +26 -17
- package/lib/orderly/useMarkPricesStream.js.map +1 -0
- package/lib/orderly/useMarketTradeStream.js +47 -26
- package/lib/orderly/useMarketTradeStream.js.map +1 -0
- package/lib/orderly/useMarkets.js +172 -95
- package/lib/orderly/useMarkets.js.map +1 -0
- package/lib/orderly/useMarketsStream.js +44 -41
- package/lib/orderly/useMarketsStream.js.map +1 -0
- package/lib/orderly/useMaxQty.d.ts +6 -0
- package/lib/orderly/useMaxQty.d.ts.map +1 -1
- package/lib/orderly/useMaxQty.js +52 -43
- package/lib/orderly/useMaxQty.js.map +1 -0
- package/lib/orderly/useOpenInterest.js +24 -14
- package/lib/orderly/useOpenInterest.js.map +1 -0
- package/lib/orderly/useOrderEntry.js +238 -210
- package/lib/orderly/useOrderEntry.js.map +1 -0
- package/lib/orderly/useOrderStream.js +111 -84
- package/lib/orderly/useOrderStream.js.map +1 -0
- package/lib/orderly/useOrderbookStream.d.ts +2 -3
- package/lib/orderly/useOrderbookStream.d.ts.map +1 -1
- package/lib/orderly/useOrderbookStream.js +227 -148
- package/lib/orderly/useOrderbookStream.js.map +1 -0
- package/lib/orderly/usePositionStream.js +134 -100
- package/lib/orderly/usePositionStream.js.map +1 -0
- package/lib/orderly/usePrivateDataObserver.js +76 -63
- package/lib/orderly/usePrivateDataObserver.js.map +1 -0
- package/lib/orderly/useSettleSubscription.js +25 -15
- package/lib/orderly/useSettleSubscription.js.map +1 -0
- package/lib/orderly/useSymbolPriceRange.js +29 -23
- package/lib/orderly/useSymbolPriceRange.js.map +1 -0
- package/lib/orderly/useSymbolsInfo.js +23 -15
- package/lib/orderly/useSymbolsInfo.js.map +1 -0
- package/lib/orderly/useTickerStream.d.ts +5 -1
- package/lib/orderly/useTickerStream.d.ts.map +1 -1
- package/lib/orderly/useTickerStream.js +51 -48
- package/lib/orderly/useTickerStream.js.map +1 -0
- package/lib/orderly/useWalletSubscription.js +25 -15
- package/lib/orderly/useWalletSubscription.js.map +1 -0
- package/lib/orderly/useWithdraw.js +36 -22
- package/lib/orderly/useWithdraw.js.map +1 -0
- package/lib/orderlyContext.d.ts +8 -1
- package/lib/orderlyContext.d.ts.map +1 -1
- package/lib/orderlyContext.js +22 -6
- package/lib/orderlyContext.js.map +1 -0
- package/lib/services/dataCenter.js +15 -11
- package/lib/services/dataCenter.js.map +1 -0
- package/lib/services/painter/backgroundPaint.js +21 -18
- package/lib/services/painter/backgroundPaint.js.map +1 -0
- package/lib/services/painter/basePaint.js +14 -4
- package/lib/services/painter/basePaint.js.map +1 -0
- package/lib/services/painter/dataPaint.js +67 -58
- package/lib/services/painter/dataPaint.js.map +1 -0
- package/lib/services/painter/layout.config.js +25 -16
- package/lib/services/painter/layout.config.js.map +1 -0
- package/lib/services/painter/painter.js +27 -20
- package/lib/services/painter/painter.js.map +1 -0
- package/lib/services/painter/resource.js +15 -7
- package/lib/services/painter/resource.js.map +1 -0
- package/lib/statusProvider.js +31 -10
- package/lib/statusProvider.js.map +1 -0
- package/lib/unuse/apiPrefixMiddleware.js +30 -22
- package/lib/unuse/apiPrefixMiddleware.js.map +1 -0
- package/lib/unuse/fn.js +14 -5
- package/lib/unuse/fn.js.map +1 -0
- package/lib/unuse/useBalance.js +23 -13
- package/lib/unuse/useBalance.js.map +1 -0
- package/lib/unuse/useFetures.js +41 -28
- package/lib/unuse/useFetures.js.map +1 -0
- package/lib/unuse/useRunOnce.js +61 -11
- package/lib/unuse/useRunOnce.js.map +1 -0
- package/lib/unuse/useSyncEnd.js +17 -10
- package/lib/unuse/useSyncEnd.js.map +1 -0
- package/lib/unuse/useTokenInfo.js +20 -12
- package/lib/unuse/useTokenInfo.js.map +1 -0
- package/lib/unuse/useUnsettlementPnL.js +21 -11
- package/lib/unuse/useUnsettlementPnL.js.map +1 -0
- package/lib/useAccount.js +32 -29
- package/lib/useAccount.js.map +1 -0
- package/lib/useAccountInstance.js +27 -20
- package/lib/useAccountInstance.js.map +1 -0
- package/lib/useBoolean.js +25 -10
- package/lib/useBoolean.js.map +1 -0
- package/lib/useConfig.js +15 -7
- package/lib/useConfig.js.map +1 -0
- package/lib/useEventEmitter.js +23 -13
- package/lib/useEventEmitter.js.map +1 -0
- package/lib/useLazyQuery.js +25 -23
- package/lib/useLazyQuery.js.map +1 -0
- package/lib/useLocalStorage.js +44 -28
- package/lib/useLocalStorage.js.map +1 -0
- package/lib/useMediaQuery.js +22 -14
- package/lib/useMediaQuery.js.map +1 -0
- package/lib/useMutation.js +47 -52
- package/lib/useMutation.js.map +1 -0
- package/lib/useObserve.js +22 -8
- package/lib/useObserve.js.map +1 -0
- package/lib/useParamsCheck.js +18 -14
- package/lib/useParamsCheck.js.map +1 -0
- package/lib/usePoster.js +80 -74
- package/lib/usePoster.js.map +1 -0
- package/lib/usePreloadData.js +21 -11
- package/lib/usePreloadData.js.map +1 -0
- package/lib/usePrivateInfiniteQuery.js +36 -22
- package/lib/usePrivateInfiniteQuery.js.map +1 -0
- package/lib/usePrivateQuery.js +35 -25
- package/lib/usePrivateQuery.js.map +1 -0
- package/lib/useQuery.js +24 -20
- package/lib/useQuery.js.map +1 -0
- package/lib/useSessionStorage.js +41 -26
- package/lib/useSessionStorage.js.map +1 -0
- package/lib/useWS.js +42 -32
- package/lib/useWS.js.map +1 -0
- package/lib/useWsStatus.js +34 -20
- package/lib/useWsStatus.js.map +1 -0
- package/lib/utils/createGetter.js +19 -14
- package/lib/utils/createGetter.js.map +1 -0
- package/lib/utils/createOrder.d.ts +1 -0
- package/lib/utils/createOrder.d.ts.map +1 -1
- package/lib/utils/createOrder.js +133 -82
- package/lib/utils/createOrder.js.map +1 -0
- package/lib/utils/dev.js +13 -9
- package/lib/utils/dev.js.map +1 -0
- package/lib/utils/fetcher.js +13 -5
- package/lib/utils/fetcher.js.map +1 -0
- package/lib/utils/json.js +12 -5
- package/lib/utils/json.js.map +1 -0
- package/lib/utils/orderEntryHelper.js +125 -82
- package/lib/utils/orderEntryHelper.js.map +1 -0
- package/lib/utils/parseHolding.js +19 -9
- package/lib/utils/parseHolding.js.map +1 -0
- package/lib/utils/swr.js +134 -111
- package/lib/utils/swr.js.map +1 -0
- package/lib/version.d.ts +1 -1
- package/lib/version.js +13 -4
- package/lib/version.js.map +1 -0
- package/lib/walletConnectorContext.js +23 -7
- package/lib/walletConnectorContext.js.map +1 -0
- package/package.json +17 -9
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
2
2
|
import { useAccount } from "../useAccount";
|
|
3
|
-
import { ARBITRUM_MAINNET_CHAINID, ARBITRUM_TESTNET_CHAINID, AccountStatusEnum, DEPOSIT_FEE_RATE, isNativeTokenChecker
|
|
3
|
+
import { ARBITRUM_MAINNET_CHAINID, ARBITRUM_TESTNET_CHAINID, AccountStatusEnum, DEPOSIT_FEE_RATE, isNativeTokenChecker } from "@orderly.network/types";
|
|
4
4
|
import { Decimal } from "@orderly.network/utils";
|
|
5
5
|
import { useChains } from "./useChains";
|
|
6
6
|
import { useConfig } from "../useConfig";
|
|
7
7
|
import { useDebouncedCallback } from "use-debounce";
|
|
8
|
-
export const useDeposit = (options)
|
|
8
|
+
export const useDeposit = (options)=>{
|
|
9
9
|
const networkId = useConfig("networkId");
|
|
10
10
|
const [balanceRevalidating, setBalanceRevalidating] = useState(false);
|
|
11
11
|
const [allowanceRevalidating, setAllowanceRevalidating] = useState(false);
|
|
@@ -18,13 +18,12 @@ export const useDeposit = (options) => {
|
|
|
18
18
|
const { account, state } = useAccount();
|
|
19
19
|
const prevAddress = useRef();
|
|
20
20
|
const getBalanceListener = useRef();
|
|
21
|
-
const targetChain = useMemo(()
|
|
21
|
+
const targetChain = useMemo(()=>{
|
|
22
22
|
let chain;
|
|
23
23
|
// Orderly testnet supported chain
|
|
24
24
|
if (networkId === "testnet") {
|
|
25
25
|
chain = findByChainId(ARBITRUM_TESTNET_CHAINID);
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
26
|
+
} else {
|
|
28
27
|
chain = findByChainId(options?.srcChainId);
|
|
29
28
|
// if is orderly un-supported chain
|
|
30
29
|
if (!chain?.network_infos?.bridgeless) {
|
|
@@ -33,53 +32,60 @@ export const useDeposit = (options) => {
|
|
|
33
32
|
}
|
|
34
33
|
}
|
|
35
34
|
return chain;
|
|
36
|
-
}, [
|
|
37
|
-
|
|
35
|
+
}, [
|
|
36
|
+
networkId,
|
|
37
|
+
findByChainId,
|
|
38
|
+
options?.srcChainId
|
|
39
|
+
]);
|
|
40
|
+
const dst = useMemo(()=>{
|
|
38
41
|
if (!targetChain) {
|
|
39
42
|
throw new Error("dst chain not found");
|
|
40
43
|
}
|
|
41
|
-
const USDC = targetChain?.token_infos.find((token)
|
|
44
|
+
const USDC = targetChain?.token_infos.find((token)=>token.symbol === "USDC");
|
|
42
45
|
return {
|
|
43
46
|
symbol: "USDC",
|
|
44
47
|
address: USDC?.address,
|
|
45
48
|
decimals: USDC?.decimals,
|
|
46
49
|
chainId: targetChain.network_infos.chain_id,
|
|
47
|
-
network: targetChain.network_infos.shortName
|
|
50
|
+
network: targetChain.network_infos.shortName
|
|
48
51
|
};
|
|
49
|
-
}, [
|
|
50
|
-
|
|
51
|
-
|
|
52
|
+
}, [
|
|
53
|
+
targetChain
|
|
54
|
+
]);
|
|
55
|
+
const isNativeToken = useMemo(()=>isNativeTokenChecker(options?.address || ""), [
|
|
56
|
+
options?.address
|
|
57
|
+
]);
|
|
58
|
+
const fetchBalanceHandler = useCallback(async (address, decimals)=>{
|
|
52
59
|
let balance;
|
|
53
60
|
if (!!address && isNativeTokenChecker(address)) {
|
|
54
61
|
balance = await account.assetsManager.getNativeBalance({
|
|
55
|
-
decimals
|
|
62
|
+
decimals
|
|
63
|
+
});
|
|
64
|
+
} else {
|
|
65
|
+
balance = await account.assetsManager.getBalance(address, {
|
|
66
|
+
decimals
|
|
56
67
|
});
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
balance = await account.assetsManager.getBalance(address, { decimals });
|
|
60
68
|
}
|
|
61
69
|
return balance;
|
|
62
70
|
}, []);
|
|
63
|
-
const fetchBalance = useCallback(async (
|
|
64
|
-
//
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
decimals) => {
|
|
68
|
-
if (!address)
|
|
69
|
-
return;
|
|
71
|
+
const fetchBalance = useCallback(async (// token contract address
|
|
72
|
+
address, // format decimals
|
|
73
|
+
decimals)=>{
|
|
74
|
+
if (!address) return;
|
|
70
75
|
try {
|
|
71
76
|
// if (balanceRevalidating) return;
|
|
72
77
|
const balance = await fetchBalanceHandler(address, decimals);
|
|
73
|
-
setBalance(()
|
|
78
|
+
setBalance(()=>balance);
|
|
79
|
+
} catch (e) {
|
|
80
|
+
;
|
|
81
|
+
setBalance(()=>"0");
|
|
74
82
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}, [state]);
|
|
80
|
-
const fetchBalances = useCallback(async (tokens) => {
|
|
83
|
+
}, [
|
|
84
|
+
state
|
|
85
|
+
]);
|
|
86
|
+
const fetchBalances = useCallback(async (tokens)=>{
|
|
81
87
|
const tasks = [];
|
|
82
|
-
for (const token of tokens)
|
|
88
|
+
for (const token of tokens){
|
|
83
89
|
// native token skip
|
|
84
90
|
if (isNativeTokenChecker(token.address)) {
|
|
85
91
|
continue;
|
|
@@ -87,46 +93,40 @@ export const useDeposit = (options) => {
|
|
|
87
93
|
tasks.push(account.assetsManager.getBalanceByAddress(token.address));
|
|
88
94
|
}
|
|
89
95
|
const balances = await Promise.all(tasks);
|
|
90
|
-
|
|
91
|
-
|
|
96
|
+
// const balances = await account.assetsManager.getBalances(tokens);
|
|
97
|
+
// setBalance(() => balances);
|
|
92
98
|
}, []);
|
|
93
|
-
const getAllowance = async (address, vaultAddress)
|
|
99
|
+
const getAllowance = async (address, vaultAddress)=>{
|
|
94
100
|
// if (!address || !vaultAddress) return;
|
|
95
101
|
const key = `${address}-${vaultAddress}`;
|
|
96
|
-
if (prevAddress.current === key)
|
|
97
|
-
|
|
98
|
-
if (
|
|
99
|
-
return;
|
|
100
|
-
if (address && isNativeTokenChecker(address))
|
|
101
|
-
return;
|
|
102
|
+
if (prevAddress.current === key) return;
|
|
103
|
+
if (!address || !vaultAddress) return;
|
|
104
|
+
if (address && isNativeTokenChecker(address)) return;
|
|
102
105
|
// if (allowanceRevalidating) return;
|
|
103
106
|
// setAllowanceRevalidating(true);
|
|
104
107
|
prevAddress.current = key;
|
|
105
108
|
const allowance = await account.assetsManager.getAllowance(address, vaultAddress);
|
|
106
|
-
setAllowance(()
|
|
109
|
+
setAllowance(()=>allowance);
|
|
107
110
|
// setAllowanceRevalidating(false);
|
|
108
111
|
return allowance;
|
|
109
112
|
};
|
|
110
|
-
const getAllowanceByDefaultAddress = async (address)
|
|
111
|
-
if (prevAddress.current === address)
|
|
112
|
-
|
|
113
|
-
if (!address || isNativeTokenChecker(address))
|
|
114
|
-
return;
|
|
113
|
+
const getAllowanceByDefaultAddress = async (address)=>{
|
|
114
|
+
if (prevAddress.current === address) return;
|
|
115
|
+
if (!address || isNativeTokenChecker(address)) return;
|
|
115
116
|
prevAddress.current = address;
|
|
116
117
|
const allowance = await account.assetsManager.getAllowance(address);
|
|
117
|
-
setAllowance(()
|
|
118
|
+
setAllowance(()=>allowance);
|
|
118
119
|
};
|
|
119
|
-
const queryBalance = useDebouncedCallback((tokenAddress, decimals)
|
|
120
|
-
fetchBalance(options?.address, options?.decimals).finally(()
|
|
120
|
+
const queryBalance = useDebouncedCallback((tokenAddress, decimals)=>{
|
|
121
|
+
fetchBalance(options?.address, options?.decimals).finally(()=>{
|
|
121
122
|
setBalanceRevalidating(false);
|
|
122
123
|
});
|
|
123
124
|
}, 100);
|
|
124
|
-
const queryAllowance = useDebouncedCallback((tokenAddress, vaultAddress)
|
|
125
|
+
const queryAllowance = useDebouncedCallback((tokenAddress, vaultAddress)=>{
|
|
125
126
|
getAllowance(tokenAddress, vaultAddress);
|
|
126
127
|
}, 100);
|
|
127
|
-
useEffect(()
|
|
128
|
-
if (state.status < AccountStatusEnum.Connected)
|
|
129
|
-
return;
|
|
128
|
+
useEffect(()=>{
|
|
129
|
+
if (state.status < AccountStatusEnum.Connected) return;
|
|
130
130
|
setBalanceRevalidating(true);
|
|
131
131
|
// fetchBalance(options?.address, options?.decimals).finally(() => {
|
|
132
132
|
// setBalanceRevalidating(false);
|
|
@@ -134,12 +134,10 @@ export const useDeposit = (options) => {
|
|
|
134
134
|
queryBalance(options?.address, options?.decimals);
|
|
135
135
|
if (dst.chainId !== options?.srcChainId) {
|
|
136
136
|
queryAllowance(options?.address);
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
137
|
+
} else {
|
|
139
138
|
if (dst.symbol !== options?.srcToken) {
|
|
140
139
|
queryAllowance(options?.address);
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
140
|
+
} else {
|
|
143
141
|
getAllowanceByDefaultAddress(options?.address);
|
|
144
142
|
}
|
|
145
143
|
}
|
|
@@ -150,121 +148,121 @@ export const useDeposit = (options) => {
|
|
|
150
148
|
options?.srcToken,
|
|
151
149
|
account.address,
|
|
152
150
|
dst.chainId,
|
|
153
|
-
dst.symbol
|
|
151
|
+
dst.symbol
|
|
154
152
|
]);
|
|
155
|
-
const approve = useCallback(async (amount)
|
|
153
|
+
const approve = useCallback(async (amount)=>{
|
|
156
154
|
if (!options?.address) {
|
|
157
155
|
throw new Error("address is required");
|
|
158
156
|
}
|
|
159
|
-
return account.assetsManager
|
|
160
|
-
.
|
|
161
|
-
.then((result) => {
|
|
162
|
-
return account.walletClient
|
|
163
|
-
?.pollTransactionReceiptWithBackoff(result.hash)
|
|
164
|
-
.then((receipt) => {
|
|
157
|
+
return account.assetsManager.approve(options.address, amount).then((result)=>{
|
|
158
|
+
return account.walletClient?.pollTransactionReceiptWithBackoff(result.hash).then((receipt)=>{
|
|
165
159
|
if (receipt.status === 1) {
|
|
166
|
-
account.assetsManager
|
|
167
|
-
|
|
168
|
-
.then((allowance) => {
|
|
169
|
-
setAllowance(() => allowance);
|
|
160
|
+
account.assetsManager.getAllowance(options.address).then((allowance)=>{
|
|
161
|
+
setAllowance(()=>allowance);
|
|
170
162
|
});
|
|
171
163
|
}
|
|
172
164
|
});
|
|
173
165
|
});
|
|
174
|
-
}, [
|
|
175
|
-
|
|
166
|
+
}, [
|
|
167
|
+
account,
|
|
168
|
+
getAllowance,
|
|
169
|
+
options,
|
|
170
|
+
dst
|
|
171
|
+
]);
|
|
172
|
+
const deposit = useCallback(async ()=>{
|
|
176
173
|
// only support orderly deposit
|
|
177
|
-
return account.assetsManager
|
|
178
|
-
.
|
|
179
|
-
|
|
180
|
-
account.assetsManager
|
|
181
|
-
.getAllowance(options?.address)
|
|
182
|
-
.then((allowance) => {
|
|
183
|
-
setAllowance(() => allowance);
|
|
174
|
+
return account.assetsManager.deposit(quantity, depositFee).then((res)=>{
|
|
175
|
+
account.assetsManager.getAllowance(options?.address).then((allowance)=>{
|
|
176
|
+
setAllowance(()=>allowance);
|
|
184
177
|
});
|
|
185
|
-
setBalance((value)
|
|
178
|
+
setBalance((value)=>new Decimal(value).sub(quantity).toString());
|
|
186
179
|
return res;
|
|
187
180
|
});
|
|
188
|
-
}, [
|
|
189
|
-
|
|
181
|
+
}, [
|
|
182
|
+
account,
|
|
183
|
+
fetchBalance,
|
|
184
|
+
quantity,
|
|
185
|
+
depositFee
|
|
186
|
+
]);
|
|
187
|
+
const loopGetBalance = async ()=>{
|
|
190
188
|
getBalanceListener.current && clearTimeout(getBalanceListener.current);
|
|
191
|
-
getBalanceListener.current = setTimeout(async ()
|
|
189
|
+
getBalanceListener.current = setTimeout(async ()=>{
|
|
192
190
|
try {
|
|
193
191
|
const balance = await fetchBalanceHandler(options?.address, options?.decimals);
|
|
194
192
|
setBalance(balance);
|
|
195
193
|
loopGetBalance();
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
console.log("fetchBalanceHandler error", err);
|
|
194
|
+
} catch (err) {
|
|
195
|
+
;
|
|
199
196
|
}
|
|
200
197
|
}, 3000);
|
|
201
198
|
};
|
|
202
|
-
const getDepositFee = useCallback(async (quantity)
|
|
199
|
+
const getDepositFee = useCallback(async (quantity)=>{
|
|
203
200
|
return account.assetsManager.getDepositFee(quantity, targetChain?.network_infos);
|
|
204
|
-
}, [
|
|
205
|
-
|
|
201
|
+
}, [
|
|
202
|
+
account,
|
|
203
|
+
targetChain
|
|
204
|
+
]);
|
|
205
|
+
const enquiryDepositFee = useCallback(()=>{
|
|
206
206
|
if (isNaN(Number(quantity)) || !quantity) {
|
|
207
207
|
setDepositFee(0n);
|
|
208
208
|
setDepositFeeRevalidating(false);
|
|
209
209
|
return;
|
|
210
210
|
}
|
|
211
211
|
setDepositFeeRevalidating(true);
|
|
212
|
-
getDepositFee(quantity)
|
|
213
|
-
.
|
|
214
|
-
const fee = BigInt(new Decimal(res.toString())
|
|
215
|
-
.mul(DEPOSIT_FEE_RATE)
|
|
216
|
-
.toFixed(0, Decimal.ROUND_UP)
|
|
217
|
-
.toString());
|
|
212
|
+
getDepositFee(quantity).then((res = 0n)=>{
|
|
213
|
+
const fee = BigInt(new Decimal(res.toString()).mul(DEPOSIT_FEE_RATE).toFixed(0, Decimal.ROUND_UP).toString());
|
|
218
214
|
setDepositFee(fee);
|
|
219
|
-
|
|
220
|
-
})
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
})
|
|
224
|
-
.finally(() => {
|
|
215
|
+
;
|
|
216
|
+
}).catch((error)=>{
|
|
217
|
+
;
|
|
218
|
+
}).finally(()=>{
|
|
225
219
|
setDepositFeeRevalidating(false);
|
|
226
220
|
});
|
|
227
|
-
}, [
|
|
228
|
-
|
|
221
|
+
}, [
|
|
222
|
+
quantity
|
|
223
|
+
]);
|
|
224
|
+
useEffect(()=>{
|
|
229
225
|
enquiryDepositFee();
|
|
230
|
-
}, [
|
|
231
|
-
|
|
226
|
+
}, [
|
|
227
|
+
quantity
|
|
228
|
+
]);
|
|
229
|
+
useEffect(()=>{
|
|
232
230
|
if (!options?.address) {
|
|
233
231
|
return;
|
|
234
232
|
}
|
|
235
233
|
loopGetBalance();
|
|
236
|
-
return ()
|
|
234
|
+
return ()=>{
|
|
237
235
|
getBalanceListener.current && clearTimeout(getBalanceListener.current);
|
|
238
236
|
};
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
}, [
|
|
237
|
+
// account.walletClient.on(
|
|
238
|
+
// // {
|
|
239
|
+
// // address: options?.address,
|
|
240
|
+
// // },
|
|
241
|
+
// "block",
|
|
242
|
+
// (log: any, event: any) => {
|
|
243
|
+
// console.log("account.walletClient.on", log, event);
|
|
244
|
+
// }
|
|
245
|
+
// );
|
|
246
|
+
}, [
|
|
247
|
+
options?.address,
|
|
248
|
+
options?.decimals
|
|
249
|
+
]);
|
|
249
250
|
return {
|
|
250
|
-
/** orderly support chain dst */
|
|
251
|
-
dst,
|
|
251
|
+
/** orderly support chain dst */ dst,
|
|
252
252
|
balance,
|
|
253
253
|
allowance,
|
|
254
254
|
isNativeToken,
|
|
255
255
|
balanceRevalidating,
|
|
256
256
|
allowanceRevalidating,
|
|
257
|
-
/** input quantiy */
|
|
258
|
-
|
|
259
|
-
/**
|
|
260
|
-
depositFee,
|
|
261
|
-
/** enquiring depositFee status on chain */
|
|
262
|
-
depositFeeRevalidating,
|
|
257
|
+
/** input quantiy */ quantity,
|
|
258
|
+
/** orderly deposit fee, unit: wei */ depositFee,
|
|
259
|
+
/** enquiring depositFee status on chain */ depositFeeRevalidating,
|
|
263
260
|
approve,
|
|
264
261
|
deposit,
|
|
265
262
|
fetchBalances,
|
|
266
263
|
fetchBalance: fetchBalanceHandler,
|
|
267
|
-
/** set input quantity */
|
|
268
|
-
setQuantity,
|
|
264
|
+
/** set input quantity */ setQuantity
|
|
269
265
|
};
|
|
270
266
|
};
|
|
267
|
+
|
|
268
|
+
//# sourceMappingURL=useDeposit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/orderly/useDeposit.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useAccount } from \"../useAccount\";\nimport {\n API,\n ARBITRUM_MAINNET_CHAINID,\n ARBITRUM_TESTNET_CHAINID,\n AccountStatusEnum,\n DEPOSIT_FEE_RATE,\n MaxUint256,\n NetworkId,\n isNativeTokenChecker,\n} from \"@orderly.network/types\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useChains } from \"./useChains\";\nimport { useConfig } from \"../useConfig\";\nimport { useDebouncedCallback } from \"use-debounce\";\n\nexport type useDepositOptions = {\n // from address\n address?: string;\n decimals?: number;\n networkId?: NetworkId;\n srcChainId?: number;\n srcToken?: string;\n quantity?: string;\n};\n\nexport const useDeposit = (options?: useDepositOptions) => {\n const networkId = useConfig(\"networkId\");\n const [balanceRevalidating, setBalanceRevalidating] = useState(false);\n const [allowanceRevalidating, setAllowanceRevalidating] = useState(false);\n\n const [_, { findByChainId }] = useChains(undefined);\n\n const [quantity, setQuantity] = useState<string>(\"\");\n const [depositFee, setDepositFee] = useState<bigint>(0n);\n const [depositFeeRevalidating, setDepositFeeRevalidating] = useState(false);\n\n const [balance, setBalance] = useState(\"0\");\n const [allowance, setAllowance] = useState(\"0\");\n\n const { account, state } = useAccount();\n\n const prevAddress = useRef<string | undefined>();\n const getBalanceListener = useRef<ReturnType<typeof setTimeout>>();\n\n const targetChain = useMemo(() => {\n let chain: API.Chain | undefined;\n\n // Orderly testnet supported chain\n if (networkId === \"testnet\") {\n chain = findByChainId(ARBITRUM_TESTNET_CHAINID) as API.Chain;\n } else {\n chain = findByChainId(options?.srcChainId!) as API.Chain;\n // if is orderly un-supported chain\n if (!chain?.network_infos?.bridgeless) {\n // Orderly mainnet supported chain\n chain = findByChainId(ARBITRUM_MAINNET_CHAINID) as API.Chain;\n }\n }\n return chain;\n }, [networkId, findByChainId, options?.srcChainId]);\n\n const dst = useMemo(() => {\n if (!targetChain) {\n throw new Error(\"dst chain not found\");\n }\n\n const USDC = targetChain?.token_infos.find(\n (token: API.TokenInfo) => token.symbol === \"USDC\"\n );\n\n return {\n symbol: \"USDC\",\n address: USDC?.address,\n decimals: USDC?.decimals,\n chainId: targetChain.network_infos.chain_id,\n network: targetChain.network_infos.shortName,\n };\n }, [targetChain]);\n\n const isNativeToken = useMemo(\n () => isNativeTokenChecker(options?.address || \"\"),\n [options?.address]\n );\n\n const fetchBalanceHandler = useCallback(\n async (address: string, decimals?: number) => {\n let balance: string;\n\n if (!!address && isNativeTokenChecker(address)) {\n balance = await account.assetsManager.getNativeBalance({\n decimals,\n });\n } else {\n balance = await account.assetsManager.getBalance(address, { decimals });\n }\n\n return balance;\n },\n []\n );\n\n const fetchBalance = useCallback(\n async (\n // token contract address\n address?: string,\n // format decimals\n decimals?: number\n ) => {\n if (!address) return;\n\n try {\n // if (balanceRevalidating) return;\n const balance = await fetchBalanceHandler(address, decimals);\n\n setBalance(() => balance);\n } catch (e) {\n console.warn(\"----- refresh balance error -----\", e);\n\n setBalance(() => \"0\");\n }\n },\n [state]\n );\n\n const fetchBalances = useCallback(async (tokens: API.TokenInfo[]) => {\n const tasks = [];\n\n for (const token of tokens) {\n // native token skip\n if (isNativeTokenChecker(token.address)) {\n continue;\n }\n tasks.push(account.assetsManager.getBalanceByAddress(token.address));\n }\n\n const balances = await Promise.all(tasks);\n\n // const balances = await account.assetsManager.getBalances(tokens);\n // setBalance(() => balances);\n }, []);\n\n const getAllowance = async (address?: string, vaultAddress?: string) => {\n // if (!address || !vaultAddress) return;\n const key = `${address}-${vaultAddress}`;\n\n if (prevAddress.current === key) return;\n\n if (!address || !vaultAddress) return;\n if (address && isNativeTokenChecker(address)) return;\n // if (allowanceRevalidating) return;\n // setAllowanceRevalidating(true);\n\n prevAddress.current = key;\n\n const allowance = await account.assetsManager.getAllowance(\n address,\n vaultAddress\n );\n\n setAllowance(() => allowance);\n // setAllowanceRevalidating(false);\n return allowance;\n };\n\n const getAllowanceByDefaultAddress = async (address?: string) => {\n if (prevAddress.current === address) return;\n\n if (!address || isNativeTokenChecker(address)) return;\n\n prevAddress.current = address;\n\n const allowance = await account.assetsManager.getAllowance(address);\n setAllowance(() => allowance);\n };\n\n const queryBalance = useDebouncedCallback(\n (tokenAddress?: string, decimals?: number) => {\n fetchBalance(options?.address, options?.decimals).finally(() => {\n setBalanceRevalidating(false);\n });\n },\n 100\n );\n\n const queryAllowance = useDebouncedCallback(\n (tokenAddress?: string, vaultAddress?: string) => {\n getAllowance(tokenAddress, vaultAddress);\n },\n 100\n );\n\n useEffect(() => {\n if (state.status < AccountStatusEnum.Connected) return;\n setBalanceRevalidating(true);\n // fetchBalance(options?.address, options?.decimals).finally(() => {\n // setBalanceRevalidating(false);\n // });\n\n queryBalance(options?.address, options?.decimals);\n\n if (dst.chainId !== options?.srcChainId) {\n queryAllowance(options?.address);\n } else {\n if (dst.symbol !== options?.srcToken) {\n queryAllowance(options?.address);\n } else {\n getAllowanceByDefaultAddress(options?.address);\n }\n }\n }, [\n state.status,\n options?.address,\n options?.srcChainId,\n options?.srcToken,\n account.address,\n dst.chainId,\n dst.symbol,\n ]);\n\n const approve = useCallback(\n async (amount?: string) => {\n if (!options?.address) {\n throw new Error(\"address is required\");\n }\n return account.assetsManager\n .approve(options.address, amount)\n .then((result: any) => {\n return account.walletClient\n ?.pollTransactionReceiptWithBackoff(result.hash)\n .then((receipt) => {\n if (receipt.status === 1) {\n account.assetsManager\n .getAllowance(options.address)\n .then((allowance) => {\n setAllowance(() => allowance);\n });\n }\n });\n });\n },\n [account, getAllowance, options, dst]\n );\n\n const deposit = useCallback(async () => {\n // only support orderly deposit\n return account.assetsManager\n .deposit(quantity, depositFee)\n .then((res: any) => {\n account.assetsManager\n .getAllowance(options?.address)\n .then((allowance) => {\n setAllowance(() => allowance);\n });\n setBalance((value) => new Decimal(value).sub(quantity).toString());\n return res;\n });\n }, [account, fetchBalance, quantity, depositFee]);\n\n const loopGetBalance = async () => {\n getBalanceListener.current && clearTimeout(getBalanceListener.current);\n getBalanceListener.current = setTimeout(async () => {\n try {\n const balance = await fetchBalanceHandler(\n options?.address!,\n options?.decimals\n );\n\n setBalance(balance);\n loopGetBalance();\n } catch (err) {\n console.log(\"fetchBalanceHandler error\", err);\n }\n }, 3000);\n };\n\n const getDepositFee = useCallback(\n async (quantity: string) => {\n return account.assetsManager.getDepositFee(\n quantity,\n targetChain?.network_infos\n );\n },\n [account, targetChain]\n );\n\n const enquiryDepositFee = useCallback(() => {\n if (isNaN(Number(quantity)) || !quantity) {\n setDepositFee(0n);\n setDepositFeeRevalidating(false);\n return;\n }\n\n setDepositFeeRevalidating(true);\n\n getDepositFee(quantity)\n .then((res: bigint = 0n) => {\n const fee = BigInt(\n new Decimal(res.toString())\n .mul(DEPOSIT_FEE_RATE)\n .toFixed(0, Decimal.ROUND_UP)\n .toString()\n );\n\n setDepositFee(fee);\n console.log(\"getDepositFee\", fee);\n })\n .catch((error) => {\n console.log(\"getDepositFee error\", error);\n })\n .finally(() => {\n setDepositFeeRevalidating(false);\n });\n }, [quantity]);\n\n useEffect(() => {\n enquiryDepositFee();\n }, [quantity]);\n\n useEffect(() => {\n if (!options?.address) {\n return;\n }\n\n loopGetBalance();\n\n return () => {\n getBalanceListener.current && clearTimeout(getBalanceListener.current);\n };\n\n // account.walletClient.on(\n // // {\n // // address: options?.address,\n // // },\n // \"block\",\n // (log: any, event: any) => {\n // console.log(\"account.walletClient.on\", log, event);\n // }\n // );\n }, [options?.address, options?.decimals]);\n\n return {\n /** orderly support chain dst */\n dst,\n balance,\n allowance,\n isNativeToken,\n balanceRevalidating,\n allowanceRevalidating,\n /** input quantiy */\n quantity,\n /** orderly deposit fee, unit: wei */\n depositFee,\n /** enquiring depositFee status on chain */\n depositFeeRevalidating,\n approve,\n deposit,\n fetchBalances,\n fetchBalance: fetchBalanceHandler,\n /** set input quantity */\n setQuantity,\n };\n};\n"],"names":["useCallback","useEffect","useMemo","useRef","useState","useAccount","ARBITRUM_MAINNET_CHAINID","ARBITRUM_TESTNET_CHAINID","AccountStatusEnum","DEPOSIT_FEE_RATE","isNativeTokenChecker","Decimal","useChains","useConfig","useDebouncedCallback","useDeposit","options","networkId","balanceRevalidating","setBalanceRevalidating","allowanceRevalidating","setAllowanceRevalidating","_","findByChainId","undefined","quantity","setQuantity","depositFee","setDepositFee","depositFeeRevalidating","setDepositFeeRevalidating","balance","setBalance","allowance","setAllowance","account","state","prevAddress","getBalanceListener","targetChain","chain","srcChainId","network_infos","bridgeless","dst","Error","USDC","token_infos","find","token","symbol","address","decimals","chainId","chain_id","network","shortName","isNativeToken","fetchBalanceHandler","assetsManager","getNativeBalance","getBalance","fetchBalance","e","fetchBalances","tokens","tasks","push","getBalanceByAddress","balances","Promise","all","getAllowance","vaultAddress","key","current","getAllowanceByDefaultAddress","queryBalance","tokenAddress","finally","queryAllowance","status","Connected","srcToken","approve","amount","then","result","walletClient","pollTransactionReceiptWithBackoff","hash","receipt","deposit","res","value","sub","toString","loopGetBalance","clearTimeout","setTimeout","err","getDepositFee","enquiryDepositFee","isNaN","Number","fee","BigInt","mul","toFixed","ROUND_UP","catch","error"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useQuery } from "../useQuery";
|
|
2
2
|
import { useEffect, useState } from "react";
|
|
3
3
|
import { timeConvertString } from "@orderly.network/utils";
|
|
4
|
-
export const useFundingRate = (symbol)
|
|
4
|
+
export const useFundingRate = (symbol)=>{
|
|
5
5
|
if (!symbol) {
|
|
6
6
|
throw new Error("useFuturesForSymbol requires a symbol");
|
|
7
7
|
}
|
|
@@ -9,32 +9,33 @@ export const useFundingRate = (symbol) => {
|
|
|
9
9
|
const { data } = useQuery(`/v1/public/funding_rate/${symbol}`, {
|
|
10
10
|
fallbackData: {
|
|
11
11
|
est_funding_rate: 0,
|
|
12
|
-
next_funing_time: 0
|
|
13
|
-
}
|
|
12
|
+
next_funing_time: 0
|
|
13
|
+
}
|
|
14
14
|
});
|
|
15
|
-
useEffect(()
|
|
16
|
-
if (!data)
|
|
17
|
-
return;
|
|
15
|
+
useEffect(()=>{
|
|
16
|
+
if (!data) return;
|
|
18
17
|
const { next_funding_time } = data;
|
|
19
18
|
if (!next_funding_time || next_funding_time <= 0) {
|
|
20
19
|
return;
|
|
21
20
|
}
|
|
22
|
-
const timer = setInterval(()
|
|
21
|
+
const timer = setInterval(()=>{
|
|
23
22
|
const diff = new Date(next_funding_time).getTime() - Date.now();
|
|
24
23
|
const result = timeConvertString(diff);
|
|
25
24
|
if (result.length === 3) {
|
|
26
|
-
setCountDown(`${result[0].toString().padStart(2, "0")}:${result[1]
|
|
27
|
-
.toString()
|
|
28
|
-
.padStart(2, "0")}:${result[2].toString().padStart(2, "0")}`);
|
|
25
|
+
setCountDown(`${result[0].toString().padStart(2, "0")}:${result[1].toString().padStart(2, "0")}:${result[2].toString().padStart(2, "0")}`);
|
|
29
26
|
}
|
|
30
27
|
}, 1000);
|
|
31
|
-
return ()
|
|
28
|
+
return ()=>{
|
|
32
29
|
clearInterval(timer);
|
|
33
30
|
};
|
|
34
|
-
}, [
|
|
31
|
+
}, [
|
|
32
|
+
data
|
|
33
|
+
]);
|
|
35
34
|
return {
|
|
36
35
|
...data,
|
|
37
36
|
est_funding_rate: (Number(data?.est_funding_rate ?? 0) * 100).toFixed(4),
|
|
38
|
-
countDown
|
|
37
|
+
countDown
|
|
39
38
|
};
|
|
40
39
|
};
|
|
40
|
+
|
|
41
|
+
//# sourceMappingURL=useFundingRate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/orderly/useFundingRate.ts"],"sourcesContent":["import { API } from \"@orderly.network/types\";\nimport { useQuery } from \"../useQuery\";\nimport { useEffect, useState } from \"react\";\nimport { timeConvertString } from \"@orderly.network/utils\";\n\nexport const useFundingRate = (symbol: string) => {\n if (!symbol) {\n throw new Error(\"useFuturesForSymbol requires a symbol\");\n }\n\n const [countDown, setCountDown] = useState(\"00:00:00\");\n\n const { data } = useQuery<API.FundingRate>(\n `/v1/public/funding_rate/${symbol}`,\n {\n fallbackData: {\n est_funding_rate: 0,\n next_funing_time: 0,\n },\n }\n );\n\n useEffect(() => {\n if (!data) return;\n const { next_funding_time } = data;\n if (!next_funding_time || next_funding_time <= 0) {\n return;\n }\n const timer = setInterval(() => {\n const diff = new Date(next_funding_time).getTime() - Date.now();\n const result = timeConvertString(diff);\n if (result.length === 3) {\n setCountDown(\n `${result[0].toString().padStart(2, \"0\")}:${result[1]\n .toString()\n .padStart(2, \"0\")}:${result[2].toString().padStart(2, \"0\")}`\n );\n }\n }, 1000);\n return () => {\n clearInterval(timer);\n };\n }, [data]);\n\n return {\n ...data,\n est_funding_rate: (Number(data?.est_funding_rate ?? 0) * 100).toFixed(4),\n countDown,\n };\n};\n"],"names":["useQuery","useEffect","useState","timeConvertString","useFundingRate","symbol","Error","countDown","setCountDown","data","fallbackData","est_funding_rate","next_funing_time","next_funding_time","timer","setInterval","diff","Date","getTime","now","result","length","toString","padStart","clearInterval","Number","toFixed"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AACA,SAASA,QAAQ,QAAQ,cAAc;AACvC,SAASC,SAAS,EAAEC,QAAQ,QAAQ,QAAQ;AAC5C,SAASC,iBAAiB,QAAQ,yBAAyB;AAE3D,OAAO,MAAMC,iBAAiB,CAACC;IAC7B,IAAI,CAACA,QAAQ;QACX,MAAM,IAAIC,MAAM;IAClB;IAEA,MAAM,CAACC,WAAWC,aAAa,GAAGN,SAAS;IAE3C,MAAM,EAAEO,IAAI,EAAE,GAAGT,SACf,CAAC,wBAAwB,EAAEK,OAAO,CAAC,EACnC;QACEK,cAAc;YACZC,kBAAkB;YAClBC,kBAAkB;QACpB;IACF;IAGFX,UAAU;QACR,IAAI,CAACQ,MAAM;QACX,MAAM,EAAEI,iBAAiB,EAAE,GAAGJ;QAC9B,IAAI,CAACI,qBAAqBA,qBAAqB,GAAG;YAChD;QACF;QACA,MAAMC,QAAQC,YAAY;YACxB,MAAMC,OAAO,IAAIC,KAAKJ,mBAAmBK,OAAO,KAAKD,KAAKE,GAAG;YAC7D,MAAMC,SAASjB,kBAAkBa;YACjC,IAAII,OAAOC,MAAM,KAAK,GAAG;gBACvBb,aACE,CAAC,EAAEY,MAAM,CAAC,EAAE,CAACE,QAAQ,GAAGC,QAAQ,CAAC,GAAG,KAAK,CAAC,EAAEH,MAAM,CAAC,EAAE,CAClDE,QAAQ,GACRC,QAAQ,CAAC,GAAG,KAAK,CAAC,EAAEH,MAAM,CAAC,EAAE,CAACE,QAAQ,GAAGC,QAAQ,CAAC,GAAG,KAAK,CAAC;YAElE;QACF,GAAG;QACH,OAAO;YACLC,cAAcV;QAChB;IACF,GAAG;QAACL;KAAK;IAET,OAAO;QACL,GAAGA,IAAI;QACPE,kBAAkB,AAACc,CAAAA,OAAOhB,MAAME,oBAAoB,KAAK,GAAE,EAAGe,OAAO,CAAC;QACtEnB;IACF;AACF,EAAE"}
|
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
import { useQuery } from "../useQuery";
|
|
2
2
|
import { createGetter } from "../utils/createGetter";
|
|
3
|
-
export const useFundingRates = ()
|
|
3
|
+
export const useFundingRates = ()=>{
|
|
4
4
|
const { data } = useQuery(`/v1/public/funding_rates`, {
|
|
5
5
|
focusThrottleInterval: 1000 * 60 * 60 * 24,
|
|
6
6
|
revalidateOnFocus: false,
|
|
7
|
-
formatter(data) {
|
|
7
|
+
formatter (data) {
|
|
8
8
|
if (!data?.rows || !data?.rows?.length) {
|
|
9
9
|
return {};
|
|
10
10
|
}
|
|
11
11
|
const obj = Object.create(null);
|
|
12
|
-
for
|
|
12
|
+
for(let index = 0; index < data.rows.length; index++){
|
|
13
13
|
const item = data.rows[index];
|
|
14
14
|
obj[item.symbol] = item;
|
|
15
15
|
}
|
|
16
16
|
return obj;
|
|
17
|
-
}
|
|
17
|
+
}
|
|
18
18
|
});
|
|
19
19
|
return createGetter(data);
|
|
20
20
|
};
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=useFundingRates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/orderly/useFundingRates.ts"],"sourcesContent":["import { useQuery } from \"../useQuery\";\nimport { type API } from \"@orderly.network/types\";\nimport { createGetter } from \"../utils/createGetter\";\n\nexport const useFundingRates = () => {\n const { data } = useQuery<{ [key: string]: API.FundingRate }>(\n `/v1/public/funding_rates`,\n {\n focusThrottleInterval: 1000 * 60 * 60 * 24,\n revalidateOnFocus: false,\n formatter(data: { rows: API.FundingRate[] }) {\n if (!data?.rows || !data?.rows?.length) {\n return {};\n }\n const obj = Object.create(null);\n\n for (let index = 0; index < data.rows.length; index++) {\n const item = data.rows[index];\n obj[item.symbol] = item;\n }\n\n return obj;\n },\n }\n );\n\n return createGetter<API.FundingRate>(data);\n};\n"],"names":["useQuery","createGetter","useFundingRates","data","focusThrottleInterval","revalidateOnFocus","formatter","rows","length","obj","Object","create","index","item","symbol"],"rangeMappings":";;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,QAAQ,QAAQ,cAAc;AAEvC,SAASC,YAAY,QAAQ,wBAAwB;AAErD,OAAO,MAAMC,kBAAkB;IAC7B,MAAM,EAAEC,IAAI,EAAE,GAAGH,SACf,CAAC,wBAAwB,CAAC,EAC1B;QACEI,uBAAuB,OAAO,KAAK,KAAK;QACxCC,mBAAmB;QACnBC,WAAUH,IAAiC;YACzC,IAAI,CAACA,MAAMI,QAAQ,CAACJ,MAAMI,MAAMC,QAAQ;gBACtC,OAAO,CAAC;YACV;YACA,MAAMC,MAAMC,OAAOC,MAAM,CAAC;YAE1B,IAAK,IAAIC,QAAQ,GAAGA,QAAQT,KAAKI,IAAI,CAACC,MAAM,EAAEI,QAAS;gBACrD,MAAMC,OAAOV,KAAKI,IAAI,CAACK,MAAM;gBAC7BH,GAAG,CAACI,KAAKC,MAAM,CAAC,GAAGD;YACrB;YAEA,OAAOJ;QACT;IACF;IAGF,OAAOR,aAA8BE;AACvC,EAAE"}
|
|
@@ -2,46 +2,50 @@ import { usePrivateQuery } from "../usePrivateQuery";
|
|
|
2
2
|
import { useMemo } from "react";
|
|
3
3
|
import { useWS } from "../useWS";
|
|
4
4
|
import useSWRSubscription from "swr/subscription";
|
|
5
|
-
export const useHoldingStream = ()
|
|
5
|
+
export const useHoldingStream = ()=>{
|
|
6
6
|
const ws = useWS();
|
|
7
7
|
const { data, isLoading, mutate } = usePrivateQuery("/v1/client/holding", {
|
|
8
|
-
formatter: (data)
|
|
8
|
+
formatter: (data)=>{
|
|
9
9
|
return data.holding;
|
|
10
|
-
}
|
|
10
|
+
}
|
|
11
11
|
});
|
|
12
|
-
const usdc = useMemo(()
|
|
13
|
-
const usdc = data?.find((item)
|
|
12
|
+
const usdc = useMemo(()=>{
|
|
13
|
+
const usdc = data?.find((item)=>item.token === "USDC");
|
|
14
14
|
return usdc;
|
|
15
|
-
}, [
|
|
16
|
-
|
|
15
|
+
}, [
|
|
16
|
+
data
|
|
17
|
+
]);
|
|
18
|
+
useSWRSubscription("holding", (_, { next })=>{
|
|
17
19
|
const unsubscribe = ws.privateSubscribe({
|
|
18
20
|
id: "balance",
|
|
19
21
|
event: "subscribe",
|
|
20
22
|
topic: "balance",
|
|
21
|
-
ts: Date.now()
|
|
23
|
+
ts: Date.now()
|
|
22
24
|
}, {
|
|
23
|
-
onMessage: (data)
|
|
25
|
+
onMessage: (data)=>{
|
|
24
26
|
const holding = data?.balances ?? {};
|
|
25
27
|
if (holding) {
|
|
26
|
-
mutate((prevData)
|
|
27
|
-
return prevData?.map((item)
|
|
28
|
+
mutate((prevData)=>{
|
|
29
|
+
return prevData?.map((item)=>{
|
|
28
30
|
const token = holding[item.token];
|
|
29
31
|
return {
|
|
30
32
|
...item,
|
|
31
33
|
frozen: token.frozen,
|
|
32
|
-
holding: token.holding
|
|
34
|
+
holding: token.holding
|
|
33
35
|
};
|
|
34
36
|
});
|
|
35
37
|
});
|
|
36
38
|
next(holding);
|
|
37
39
|
}
|
|
38
|
-
}
|
|
40
|
+
}
|
|
39
41
|
});
|
|
40
|
-
return ()
|
|
42
|
+
return ()=>unsubscribe();
|
|
41
43
|
});
|
|
42
44
|
return {
|
|
43
45
|
data,
|
|
44
46
|
usdc,
|
|
45
|
-
isLoading
|
|
47
|
+
isLoading
|
|
46
48
|
};
|
|
47
49
|
};
|
|
50
|
+
|
|
51
|
+
//# sourceMappingURL=useHoldingStream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/orderly/useHoldingStream.ts"],"sourcesContent":["import { API } from \"@orderly.network/types\";\nimport { usePrivateQuery } from \"../usePrivateQuery\";\nimport { useMemo } from \"react\";\nimport { useWS } from \"../useWS\";\nimport useSWRSubscription from \"swr/subscription\";\n\nexport const useHoldingStream = () => {\n const ws = useWS();\n\n const { data, isLoading, mutate } = usePrivateQuery<API.Holding[]>(\n \"/v1/client/holding\",\n {\n formatter: (data) => {\n return data.holding;\n },\n }\n );\n\n const usdc = useMemo(() => {\n const usdc = data?.find((item) => item.token === \"USDC\");\n return usdc;\n }, [data]);\n\n useSWRSubscription(\"holding\", (_, { next }) => {\n const unsubscribe = ws.privateSubscribe(\n {\n id: \"balance\",\n event: \"subscribe\",\n topic: \"balance\",\n ts: Date.now(),\n },\n {\n onMessage: (data: any) => {\n const holding = data?.balances ?? ({} as Record<string, any>);\n\n if (holding) {\n mutate((prevData) => {\n return prevData?.map((item) => {\n const token = holding[item.token];\n return {\n ...item,\n frozen: token.frozen,\n holding: token.holding,\n };\n });\n });\n\n next(holding);\n }\n },\n }\n );\n\n return () => unsubscribe();\n });\n\n return {\n data,\n usdc,\n isLoading,\n };\n};\n"],"names":["usePrivateQuery","useMemo","useWS","useSWRSubscription","useHoldingStream","ws","data","isLoading","mutate","formatter","holding","usdc","find","item","token","_","next","unsubscribe","privateSubscribe","id","event","topic","ts","Date","now","onMessage","balances","prevData","map","frozen"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AACA,SAASA,eAAe,QAAQ,qBAAqB;AACrD,SAASC,OAAO,QAAQ,QAAQ;AAChC,SAASC,KAAK,QAAQ,WAAW;AACjC,OAAOC,wBAAwB,mBAAmB;AAElD,OAAO,MAAMC,mBAAmB;IAC9B,MAAMC,KAAKH;IAEX,MAAM,EAAEI,IAAI,EAAEC,SAAS,EAAEC,MAAM,EAAE,GAAGR,gBAClC,sBACA;QACES,WAAW,CAACH;YACV,OAAOA,KAAKI,OAAO;QACrB;IACF;IAGF,MAAMC,OAAOV,QAAQ;QACnB,MAAMU,OAAOL,MAAMM,KAAK,CAACC,OAASA,KAAKC,KAAK,KAAK;QACjD,OAAOH;IACT,GAAG;QAACL;KAAK;IAETH,mBAAmB,WAAW,CAACY,GAAG,EAAEC,IAAI,EAAE;QACxC,MAAMC,cAAcZ,GAAGa,gBAAgB,CACrC;YACEC,IAAI;YACJC,OAAO;YACPC,OAAO;YACPC,IAAIC,KAAKC,GAAG;QACd,GACA;YACEC,WAAW,CAACnB;gBACV,MAAMI,UAAUJ,MAAMoB,YAAa,CAAC;gBAEpC,IAAIhB,SAAS;oBACXF,OAAO,CAACmB;wBACN,OAAOA,UAAUC,IAAI,CAACf;4BACpB,MAAMC,QAAQJ,OAAO,CAACG,KAAKC,KAAK,CAAC;4BACjC,OAAO;gCACL,GAAGD,IAAI;gCACPgB,QAAQf,MAAMe,MAAM;gCACpBnB,SAASI,MAAMJ,OAAO;4BACxB;wBACF;oBACF;oBAEAM,KAAKN;gBACP;YACF;QACF;QAGF,OAAO,IAAMO;IACf;IAEA,OAAO;QACLX;QACAK;QACAJ;IACF;AACF,EAAE"}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import { useWS } from "../useWS";
|
|
2
2
|
import useSWRSubscription from "swr/subscription";
|
|
3
|
-
export const useIndexPrice = (symbol)
|
|
3
|
+
export const useIndexPrice = (symbol)=>{
|
|
4
4
|
// WARNING: force change perp to spot, because there is no perp now
|
|
5
5
|
symbol = symbol.replace("PERP", "SPOT");
|
|
6
6
|
const ws = useWS();
|
|
7
|
-
return useSWRSubscription(`${symbol}@indexprice`, (key, { next })
|
|
7
|
+
return useSWRSubscription(`${symbol}@indexprice`, (key, { next })=>{
|
|
8
8
|
const unsubscribe = ws.subscribe(`${symbol}@indexprice`, {
|
|
9
|
-
onMessage: (message)
|
|
9
|
+
onMessage: (message)=>{
|
|
10
10
|
next(null, message.price);
|
|
11
|
-
}
|
|
11
|
+
}
|
|
12
12
|
});
|
|
13
|
-
return ()
|
|
13
|
+
return ()=>{
|
|
14
14
|
unsubscribe?.();
|
|
15
15
|
};
|
|
16
16
|
});
|
|
17
17
|
};
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=useIndexPrice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/orderly/useIndexPrice.ts"],"sourcesContent":["import { useWS } from \"../useWS\";\nimport useSWRSubscription from \"swr/subscription\";\n\nexport const useIndexPrice = (symbol: string) => {\n // WARNING: force change perp to spot, because there is no perp now\n symbol = symbol.replace(\"PERP\", \"SPOT\");\n const ws = useWS();\n return useSWRSubscription(`${symbol}@indexprice`, (key, { next }) => {\n const unsubscribe = ws.subscribe(`${symbol}@indexprice`, {\n onMessage: (message: any) => {\n next(null, message.price);\n },\n });\n\n return () => {\n unsubscribe?.();\n };\n });\n};\n"],"names":["useWS","useSWRSubscription","useIndexPrice","symbol","replace","ws","key","next","unsubscribe","subscribe","onMessage","message","price"],"rangeMappings":";;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,KAAK,QAAQ,WAAW;AACjC,OAAOC,wBAAwB,mBAAmB;AAElD,OAAO,MAAMC,gBAAgB,CAACC;IAC5B,mEAAmE;IACnEA,SAASA,OAAOC,OAAO,CAAC,QAAQ;IAChC,MAAMC,KAAKL;IACX,OAAOC,mBAAmB,CAAC,EAAEE,OAAO,WAAW,CAAC,EAAE,CAACG,KAAK,EAAEC,IAAI,EAAE;QAC9D,MAAMC,cAAcH,GAAGI,SAAS,CAAC,CAAC,EAAEN,OAAO,WAAW,CAAC,EAAE;YACvDO,WAAW,CAACC;gBACVJ,KAAK,MAAMI,QAAQC,KAAK;YAC1B;QACF;QAEA,OAAO;YACLJ;QACF;IACF;AACF,EAAE"}
|