@orderly.network/hooks 1.5.4 → 1.5.5
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/orderly/useChains.d.ts.map +1 -1
- package/esm/orderly/useChains.js +5 -4
- package/esm/orderly/useChains.js.map +1 -1
- package/esm/orderly/useDeposit.d.ts.map +1 -1
- package/esm/orderly/useDeposit.js +3 -3
- package/esm/orderly/useDeposit.js.map +1 -1
- package/esm/orderly/useWithdraw.d.ts +11 -1
- package/esm/orderly/useWithdraw.d.ts.map +1 -1
- package/esm/orderly/useWithdraw.js +40 -1
- package/esm/orderly/useWithdraw.js.map +1 -1
- package/esm/version.d.ts +1 -1
- package/esm/version.js +2 -2
- package/esm/version.js.map +1 -1
- package/esm/walletConnectorContext.d.ts +3 -2
- package/esm/walletConnectorContext.d.ts.map +1 -1
- package/esm/walletConnectorContext.js.map +1 -1
- package/lib/orderly/useChains.d.ts.map +1 -1
- package/lib/orderly/useChains.js +5 -4
- package/lib/orderly/useChains.js.map +1 -1
- package/lib/orderly/useDeposit.d.ts.map +1 -1
- package/lib/orderly/useDeposit.js +2 -2
- package/lib/orderly/useDeposit.js.map +1 -1
- package/lib/orderly/useWithdraw.d.ts +11 -1
- package/lib/orderly/useWithdraw.d.ts.map +1 -1
- package/lib/orderly/useWithdraw.js +40 -1
- package/lib/orderly/useWithdraw.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +2 -2
- package/lib/version.js.map +1 -1
- package/lib/walletConnectorContext.d.ts +3 -2
- package/lib/walletConnectorContext.d.ts.map +1 -1
- package/lib/walletConnectorContext.js.map +1 -1
- package/package.json +8 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useChains.d.ts","sourceRoot":"","sources":["../../src/orderly/useChains.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,KAAK,GAAG,EAER,KAAK,IAAI,SAAS,EACnB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,KAAK,CAAC;AAOvC,MAAM,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG;IAC9B,WAAW,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,MAAM,CAChB,CAAC,SAAS,SAAS,GAAG,SAAS,GAAG,SAAS,EAC3C,CAAC,SAAS,MAAM,GAAG,CAAC,KAAK,GAAG,SAAS,GAAG,SAAS,IAC/C,CAAC,SAAS,SAAS,GACnB,CAAC,SAAS,MAAM,GAAG,CAAC,KAAK,GACvB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GACd,GAAG,CAAC,KAAK,EAAE,GACb,CAAC,SAAS,MAAM,GAAG,CAAC,KAAK,GACzB;IACE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACxB,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;CACzB,GACD;IACE,OAAO,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;IACrB,OAAO,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;CACtB,CAAC;AAEN,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,KAAK,OAAO,CAAC;IACtC,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,aAAa,CAAC;CACjD,GAAG,gBAAgB,CAAC;AAErB,MAAM,MAAM,qBAAqB,GAAG;IAClC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,KAAK,GAAG,SAAS,CAAC;IACtE,KAAK,EAAE,GAAG,CAAC;CACZ,CAAC;AAEF,wBAAgB,SAAS,CACvB,SAAS,CAAC,EAAE,SAAS,EACrB,OAAO,CAAC,EAAE,SAAS,GAClB,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,qBAAqB,CAAC,CAAC;AAEzD,wBAAgB,SAAS,CACvB,CAAC,SAAS,SAAS,GAAG,SAAS,EAC/B,CAAC,SAAS,gBAAgB,GAAG,SAAS,EAEtC,SAAS,CAAC,EAAE,CAAC,EACb,OAAO,CAAC,EAAE,CAAC,GACV;IACD,MAAM,CACJ,CAAC,EACD,CAAC,SAAS,gBAAgB,GACtB,CAAC,CAAC,MAAM,CAAC,SAAS,MAAM,GAAG,CAAC,KAAK,GAC/B,CAAC,CAAC,MAAM,CAAC,GACT,SAAS,GACX,SAAS,CACd;IACD,qBAAqB;CACtB,CAAC;
|
|
1
|
+
{"version":3,"file":"useChains.d.ts","sourceRoot":"","sources":["../../src/orderly/useChains.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,KAAK,GAAG,EAER,KAAK,IAAI,SAAS,EACnB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,KAAK,CAAC;AAOvC,MAAM,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG;IAC9B,WAAW,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,MAAM,CAChB,CAAC,SAAS,SAAS,GAAG,SAAS,GAAG,SAAS,EAC3C,CAAC,SAAS,MAAM,GAAG,CAAC,KAAK,GAAG,SAAS,GAAG,SAAS,IAC/C,CAAC,SAAS,SAAS,GACnB,CAAC,SAAS,MAAM,GAAG,CAAC,KAAK,GACvB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GACd,GAAG,CAAC,KAAK,EAAE,GACb,CAAC,SAAS,MAAM,GAAG,CAAC,KAAK,GACzB;IACE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACxB,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;CACzB,GACD;IACE,OAAO,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;IACrB,OAAO,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;CACtB,CAAC;AAEN,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,KAAK,OAAO,CAAC;IACtC,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,aAAa,CAAC;CACjD,GAAG,gBAAgB,CAAC;AAErB,MAAM,MAAM,qBAAqB,GAAG;IAClC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,KAAK,GAAG,SAAS,CAAC;IACtE,KAAK,EAAE,GAAG,CAAC;CACZ,CAAC;AAEF,wBAAgB,SAAS,CACvB,SAAS,CAAC,EAAE,SAAS,EACrB,OAAO,CAAC,EAAE,SAAS,GAClB,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,qBAAqB,CAAC,CAAC;AAEzD,wBAAgB,SAAS,CACvB,CAAC,SAAS,SAAS,GAAG,SAAS,EAC/B,CAAC,SAAS,gBAAgB,GAAG,SAAS,EAEtC,SAAS,CAAC,EAAE,CAAC,EACb,OAAO,CAAC,EAAE,CAAC,GACV;IACD,MAAM,CACJ,CAAC,EACD,CAAC,SAAS,gBAAgB,GACtB,CAAC,CAAC,MAAM,CAAC,SAAS,MAAM,GAAG,CAAC,KAAK,GAC/B,CAAC,CAAC,MAAM,CAAC,GACT,SAAS,GACX,SAAS,CACd;IACD,qBAAqB;CACtB,CAAC;AAwIF,uDAAuD;AACvD,wBAAgB,cAAc,CAC5B,MAAM,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,EACpB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,eAoCjC;AAED,mEAAmE;AACnE,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,EACnB,UAAU,EAAE,GAAG,EACf,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,eAkCjC;AAED,wDAAwD;AACxD,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,GAAG,CAAC,KAAK,EAAE,EACvB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,GAAG,CAAC,KAAK,QAUjB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,EACnB,aAAa,CAAC,EAAE,SAAS,EAAE,eAY5B"}
|
package/esm/orderly/useChains.js
CHANGED
|
@@ -7,7 +7,7 @@ import { TestnetChains, nativeTokenAddress } from "@orderly.network/types";
|
|
|
7
7
|
import { OrderlyContext } from "../orderlyContext";
|
|
8
8
|
export function useChains(networkId, options = {}) {
|
|
9
9
|
const { pick: pickField, ...swrOptions } = options;
|
|
10
|
-
const { filteredChains: allowedChains } = useContext(OrderlyContext);
|
|
10
|
+
const { filteredChains: allowedChains, configStore } = useContext(OrderlyContext);
|
|
11
11
|
const filterFun = useRef(options?.filter);
|
|
12
12
|
filterFun.current = options?.filter;
|
|
13
13
|
const chainsMap = useRef(new Map());
|
|
@@ -22,12 +22,12 @@ export function useChains(networkId, options = {}) {
|
|
|
22
22
|
...swrOptions
|
|
23
23
|
};
|
|
24
24
|
// only prod env return mainnet chains info
|
|
25
|
-
// TODO: remove https://api-evm.orderly.org api base
|
|
26
25
|
const { data: tokenChains, error: tokenError } = useQuery("https://api-evm.orderly.org/v1/public/token", {
|
|
27
26
|
...commonSwrOpts
|
|
28
27
|
});
|
|
28
|
+
const brokerId = configStore.get("brokerId");
|
|
29
29
|
// only prod env return mainnet chains info
|
|
30
|
-
const { data: chainInfos, error: chainInfoErr } = useQuery(
|
|
30
|
+
const { data: chainInfos, error: chainInfoErr } = useQuery(`/v1/public/chain_info${brokerId !== "orderly" ? `?broker_id=${brokerId}` : ""}`, {
|
|
31
31
|
...commonSwrOpts
|
|
32
32
|
});
|
|
33
33
|
const chains = useMemo(()=>{
|
|
@@ -123,7 +123,8 @@ export function useChains(networkId, options = {}) {
|
|
|
123
123
|
{
|
|
124
124
|
symbol: item.token,
|
|
125
125
|
address: chain.contract_address,
|
|
126
|
-
decimals: chain.decimals
|
|
126
|
+
decimals: chain.decimals,
|
|
127
|
+
display_name: chain.display_name
|
|
127
128
|
}
|
|
128
129
|
]
|
|
129
130
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/orderly/useChains.ts"],"sourcesContent":["import {\n NetworkId,\n type API,\n chainsInfoMap,\n Chain as FlatChain,\n} from \"@orderly.network/types\";\nimport { useCallback, useContext, useMemo, useRef } from \"react\";\nimport { SWRConfiguration } from \"swr\";\nimport { useQuery } from \"../useQuery\";\nimport { prop } from \"ramda\";\nimport { isTestnet } from \"@orderly.network/utils\";\nimport { TestnetChains, nativeTokenAddress } from \"@orderly.network/types\";\nimport { OrderlyContext } from \"../orderlyContext\";\n\nexport type Chain = API.Chain & {\n nativeToken?: API.TokenInfo;\n};\n\nexport type Chains<\n T extends NetworkId | undefined = undefined,\n K extends keyof API.Chain | undefined = undefined\n> = T extends NetworkId\n ? K extends keyof API.Chain\n ? API.Chain[K][]\n : API.Chain[]\n : K extends keyof API.Chain\n ? {\n testnet: API.Chain[K][];\n mainnet: API.Chain[K][];\n }\n : {\n testnet: API.Chain[];\n mainnet: API.Chain[];\n };\n\nexport type UseChainsOptions = {\n filter?: (item: API.Chain) => boolean;\n pick?: \"dexs\" | \"network_infos\" | \"token_infos\";\n} & SWRConfiguration;\n\nexport type UseChainsReturnObject = {\n findByChainId: (chainId: number, field?: string) => Chain | undefined;\n error: any;\n};\n\nexport function useChains(\n networkId?: undefined,\n options?: undefined\n): [Chains<undefined, undefined>, UseChainsReturnObject];\n\nexport function useChains<\n T extends NetworkId | undefined,\n K extends UseChainsOptions | undefined\n>(\n networkId?: T,\n options?: K\n): [\n Chains<\n T,\n K extends UseChainsOptions\n ? K[\"pick\"] extends keyof API.Chain\n ? K[\"pick\"]\n : undefined\n : undefined\n >,\n UseChainsReturnObject\n];\n\nexport function useChains(\n networkId?: NetworkId,\n options: UseChainsOptions = {}\n) {\n const { pick: pickField, ...swrOptions } = options;\n const { filteredChains: allowedChains } = useContext(OrderlyContext);\n\n const filterFun = useRef(options?.filter);\n filterFun.current = options?.filter;\n\n const chainsMap = useRef(new Map<number, Chain>());\n\n const commonSwrOpts = {\n revalidateIfStale: false,\n revalidateOnFocus: false,\n revalidateOnReconnect: false,\n // If false, undefined data gets cached against the key.\n revalidateOnMount: true,\n // dont duplicate a request w/ same key for 1hr\n dedupingInterval: 3_600_000,\n ...swrOptions,\n };\n\n // only prod env return mainnet chains info\n // TODO: remove https://api-evm.orderly.org api base\n const { data: tokenChains, error: tokenError } = useQuery<API.Chain[]>(\n \"https://api-evm.orderly.org/v1/public/token\",\n { ...commonSwrOpts }\n );\n\n // only prod env return mainnet chains info\n const { data: chainInfos, error: chainInfoErr } = useQuery(\n \"/v1/public/chain_info\",\n { ...commonSwrOpts }\n );\n\n const chains = useMemo(() => {\n const orderlyChainsArr = fillChainsInfo(tokenChains, filterFun.current);\n\n let testnetArr = [...TestnetChains] as API.Chain[];\n\n orderlyChainsArr?.forEach((item) => {\n const chainId = item.network_infos?.chain_id;\n chainsMap.current.set(chainId, item);\n updateTestnetInfo(testnetArr, chainId, item);\n });\n\n testnetArr.forEach((chain) => {\n chainsMap.current.set(chain.network_infos?.chain_id, chain);\n });\n\n let mainnetArr: API.Chain[] = [];\n\n // TODO: /v1/public/chain_info api data is not match /v1/public/token api data, so it can effect is prod\n mainnetArr = updateOrderlyChains(\n orderlyChainsArr,\n chainInfos,\n filterFun.current\n );\n\n mainnetArr.forEach((item) => {\n const chainId = item.network_infos?.chain_id;\n chainsMap.current.set(chainId, item);\n updateTestnetInfo(testnetArr, chainId, item);\n });\n\n mainnetArr.sort((a, b) => {\n return a.network_infos.bridgeless ? -1 : 1;\n });\n\n testnetArr.sort((a, b) => {\n return a.network_infos.bridgeless ? -1 : 1;\n });\n\n mainnetArr = filterByAllowedChains(mainnetArr, allowedChains?.mainnet);\n testnetArr = filterByAllowedChains(testnetArr, allowedChains?.testnet);\n\n if (!!pickField) {\n //@ts-ignore\n testnetArr = testnetArr.map((item) => item[pickField]);\n //@ts-ignore\n mainnetArr = mainnetArr.map((item) => item[pickField]);\n }\n\n if (networkId === \"mainnet\") {\n return mainnetArr;\n }\n\n if (networkId === \"testnet\") {\n return testnetArr;\n }\n\n return {\n testnet: testnetArr,\n mainnet: mainnetArr,\n };\n }, [networkId, tokenChains, chainInfos, pickField, allowedChains]);\n\n const findByChainId = useCallback(\n (chainId: number, field?: string) => {\n const chain = chainsMap.current.get(chainId);\n\n if (chain) {\n chain.nativeToken =\n chain.token_infos?.find(\n (item) => item.address === nativeTokenAddress\n ) ||\n ({\n symbol: chain.network_infos?.currency_symbol,\n } as any);\n }\n\n if (typeof field === \"string\") {\n return prop(field as never, chain);\n }\n\n return chain;\n },\n [chains, chainsMap]\n );\n\n return [\n chains,\n {\n findByChainId,\n error: tokenError,\n },\n ];\n}\n\n/** orderly chains array form (/v1/public/token) api */\nexport function fillChainsInfo(\n chains?: API.Chain[],\n filter?: (chain: any) => boolean\n) {\n let _chains: API.Chain[] = [];\n\n chains?.forEach((item) => {\n item.chain_details.forEach((chain: any) => {\n const chainId = Number(chain.chain_id);\n const chainInfo = chainsInfoMap.get(chainId);\n\n const _chain: any = {\n network_infos: {\n name: chain.chain_name ?? chainInfo?.chainName ?? \"--\",\n chain_id: chainId,\n withdrawal_fee: chain.withdrawal_fee,\n cross_chain_withdrawal_fee: chain.cross_chain_withdrawal_fee,\n bridgeless: true,\n },\n token_infos: [\n {\n symbol: item.token,\n address: chain.contract_address,\n decimals: chain.decimals,\n },\n ],\n };\n\n if (typeof filter === \"function\") {\n if (!filter(_chain)) return;\n }\n\n _chains.push(_chain);\n });\n });\n\n return _chains;\n}\n\n/** update network_infos by chain_info api(v1/public/chain_info) */\nexport function updateOrderlyChains(\n chains: API.Chain[],\n chainInfos: any,\n filter?: (chain: any) => boolean\n) {\n const _chains: API.Chain[] = [];\n chains.forEach((chain) => {\n let _chain = { ...chain };\n\n const networkInfo = chainInfos?.find(\n (item: any) => item.chain_id == chain.network_infos.chain_id\n );\n\n if (networkInfo) {\n const { name, public_rpc_url, currency_symbol, explorer_base_url } =\n networkInfo;\n _chain.network_infos = {\n ..._chain.network_infos,\n name,\n shortName: name,\n public_rpc_url,\n currency_symbol,\n bridge_enable: true,\n mainnet: true,\n explorer_base_url,\n est_txn_mins: null,\n };\n }\n\n if (typeof filter === \"function\") {\n if (!filter(_chain)) return;\n }\n\n _chains.push(_chain);\n });\n\n return _chains;\n}\n\n/** if chain is testnet, update testnet network_infos */\nexport function updateTestnetInfo(\n testnetArr: API.Chain[],\n chainId: number,\n chain: API.Chain\n) {\n if (isTestnet(chainId)) {\n const index = testnetArr?.findIndex(\n (item) => item.network_infos.chain_id === chainId\n );\n if (index > -1) {\n testnetArr[index] = chain;\n }\n }\n}\n\nexport function filterByAllowedChains(\n chains: API.Chain[],\n allowedChains?: FlatChain[]\n) {\n if (!allowedChains) {\n return chains;\n }\n\n return chains.filter((chain) =>\n allowedChains.some(\n (allowedChain) =>\n allowedChain.id === parseInt(chain?.network_infos?.chain_id as any)\n )\n );\n}\n"],"names":["chainsInfoMap","useCallback","useContext","useMemo","useRef","useQuery","prop","isTestnet","TestnetChains","nativeTokenAddress","OrderlyContext","useChains","networkId","options","pick","pickField","swrOptions","filteredChains","allowedChains","filterFun","filter","current","chainsMap","Map","commonSwrOpts","revalidateIfStale","revalidateOnFocus","revalidateOnReconnect","revalidateOnMount","dedupingInterval","data","tokenChains","error","tokenError","chainInfos","chainInfoErr","chains","orderlyChainsArr","fillChainsInfo","testnetArr","forEach","item","chainId","network_infos","chain_id","set","updateTestnetInfo","chain","mainnetArr","updateOrderlyChains","sort","a","b","bridgeless","filterByAllowedChains","mainnet","testnet","map","findByChainId","field","get","nativeToken","token_infos","find","address","symbol","currency_symbol","_chains","chain_details","Number","chainInfo","_chain","name","chain_name","chainName","withdrawal_fee","cross_chain_withdrawal_fee","token","contract_address","decimals","push","networkInfo","public_rpc_url","explorer_base_url","shortName","bridge_enable","est_txn_mins","index","findIndex","some","allowedChain","id","parseInt"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/orderly/useChains.ts"],"sourcesContent":["import {\n NetworkId,\n type API,\n chainsInfoMap,\n Chain as FlatChain,\n} from \"@orderly.network/types\";\nimport { useCallback, useContext, useMemo, useRef } from \"react\";\nimport { SWRConfiguration } from \"swr\";\nimport { useQuery } from \"../useQuery\";\nimport { prop } from \"ramda\";\nimport { isTestnet } from \"@orderly.network/utils\";\nimport { TestnetChains, nativeTokenAddress } from \"@orderly.network/types\";\nimport { OrderlyContext } from \"../orderlyContext\";\n\nexport type Chain = API.Chain & {\n nativeToken?: API.TokenInfo;\n};\n\nexport type Chains<\n T extends NetworkId | undefined = undefined,\n K extends keyof API.Chain | undefined = undefined\n> = T extends NetworkId\n ? K extends keyof API.Chain\n ? API.Chain[K][]\n : API.Chain[]\n : K extends keyof API.Chain\n ? {\n testnet: API.Chain[K][];\n mainnet: API.Chain[K][];\n }\n : {\n testnet: API.Chain[];\n mainnet: API.Chain[];\n };\n\nexport type UseChainsOptions = {\n filter?: (item: API.Chain) => boolean;\n pick?: \"dexs\" | \"network_infos\" | \"token_infos\";\n} & SWRConfiguration;\n\nexport type UseChainsReturnObject = {\n findByChainId: (chainId: number, field?: string) => Chain | undefined;\n error: any;\n};\n\nexport function useChains(\n networkId?: undefined,\n options?: undefined\n): [Chains<undefined, undefined>, UseChainsReturnObject];\n\nexport function useChains<\n T extends NetworkId | undefined,\n K extends UseChainsOptions | undefined\n>(\n networkId?: T,\n options?: K\n): [\n Chains<\n T,\n K extends UseChainsOptions\n ? K[\"pick\"] extends keyof API.Chain\n ? K[\"pick\"]\n : undefined\n : undefined\n >,\n UseChainsReturnObject\n];\n\nexport function useChains(\n networkId?: NetworkId,\n options: UseChainsOptions = {}\n) {\n const { pick: pickField, ...swrOptions } = options;\n const { filteredChains: allowedChains, configStore } =\n useContext(OrderlyContext);\n\n const filterFun = useRef(options?.filter);\n filterFun.current = options?.filter;\n\n const chainsMap = useRef(new Map<number, Chain>());\n\n const commonSwrOpts = {\n revalidateIfStale: false,\n revalidateOnFocus: false,\n revalidateOnReconnect: false,\n // If false, undefined data gets cached against the key.\n revalidateOnMount: true,\n // dont duplicate a request w/ same key for 1hr\n dedupingInterval: 3_600_000,\n ...swrOptions,\n };\n\n // only prod env return mainnet chains info\n const { data: tokenChains, error: tokenError } = useQuery<API.Chain[]>(\n \"https://api-evm.orderly.org/v1/public/token\",\n { ...commonSwrOpts }\n );\n\n const brokerId = configStore.get(\"brokerId\");\n\n // only prod env return mainnet chains info\n const { data: chainInfos, error: chainInfoErr } = useQuery(\n `/v1/public/chain_info${\n brokerId !== \"orderly\" ? `?broker_id=${brokerId}` : \"\"\n }`,\n { ...commonSwrOpts }\n );\n\n const chains = useMemo(() => {\n const orderlyChainsArr = fillChainsInfo(tokenChains, filterFun.current);\n\n let testnetArr = [...TestnetChains] as API.Chain[];\n\n orderlyChainsArr?.forEach((item) => {\n const chainId = item.network_infos?.chain_id;\n chainsMap.current.set(chainId, item);\n updateTestnetInfo(testnetArr, chainId, item);\n });\n\n testnetArr.forEach((chain) => {\n chainsMap.current.set(chain.network_infos?.chain_id, chain);\n });\n\n let mainnetArr: API.Chain[] = [];\n\n // TODO: /v1/public/chain_info api data is not match /v1/public/token api data, so it can effect is prod\n mainnetArr = updateOrderlyChains(\n orderlyChainsArr,\n chainInfos,\n filterFun.current\n );\n\n mainnetArr.forEach((item) => {\n const chainId = item.network_infos?.chain_id;\n chainsMap.current.set(chainId, item);\n updateTestnetInfo(testnetArr, chainId, item);\n });\n\n mainnetArr.sort((a, b) => {\n return a.network_infos.bridgeless ? -1 : 1;\n });\n\n testnetArr.sort((a, b) => {\n return a.network_infos.bridgeless ? -1 : 1;\n });\n\n mainnetArr = filterByAllowedChains(mainnetArr, allowedChains?.mainnet);\n testnetArr = filterByAllowedChains(testnetArr, allowedChains?.testnet);\n\n if (!!pickField) {\n //@ts-ignore\n testnetArr = testnetArr.map((item) => item[pickField]);\n //@ts-ignore\n mainnetArr = mainnetArr.map((item) => item[pickField]);\n }\n\n if (networkId === \"mainnet\") {\n return mainnetArr;\n }\n\n if (networkId === \"testnet\") {\n return testnetArr;\n }\n\n return {\n testnet: testnetArr,\n mainnet: mainnetArr,\n };\n }, [networkId, tokenChains, chainInfos, pickField, allowedChains]);\n\n const findByChainId = useCallback(\n (chainId: number, field?: string) => {\n const chain = chainsMap.current.get(chainId);\n\n if (chain) {\n chain.nativeToken =\n chain.token_infos?.find(\n (item) => item.address === nativeTokenAddress\n ) ||\n ({\n symbol: chain.network_infos?.currency_symbol,\n } as any);\n }\n\n if (typeof field === \"string\") {\n return prop(field as never, chain);\n }\n\n return chain;\n },\n [chains, chainsMap]\n );\n\n return [\n chains,\n {\n findByChainId,\n error: tokenError,\n },\n ];\n}\n\n/** orderly chains array form (/v1/public/token) api */\nexport function fillChainsInfo(\n chains?: API.Chain[],\n filter?: (chain: any) => boolean\n) {\n let _chains: API.Chain[] = [];\n\n chains?.forEach((item) => {\n item.chain_details.forEach((chain: any) => {\n const chainId = Number(chain.chain_id);\n const chainInfo = chainsInfoMap.get(chainId);\n\n const _chain: any = {\n network_infos: {\n name: chain.chain_name ?? chainInfo?.chainName ?? \"--\",\n chain_id: chainId,\n withdrawal_fee: chain.withdrawal_fee,\n cross_chain_withdrawal_fee: chain.cross_chain_withdrawal_fee,\n bridgeless: true,\n },\n token_infos: [\n {\n symbol: item.token,\n address: chain.contract_address,\n decimals: chain.decimals,\n display_name: chain.display_name,\n },\n ],\n };\n\n if (typeof filter === \"function\") {\n if (!filter(_chain)) return;\n }\n\n _chains.push(_chain);\n });\n });\n\n return _chains;\n}\n\n/** update network_infos by chain_info api(v1/public/chain_info) */\nexport function updateOrderlyChains(\n chains: API.Chain[],\n chainInfos: any,\n filter?: (chain: any) => boolean\n) {\n const _chains: API.Chain[] = [];\n chains.forEach((chain) => {\n let _chain = { ...chain };\n\n const networkInfo = chainInfos?.find(\n (item: any) => item.chain_id == chain.network_infos.chain_id\n );\n\n if (networkInfo) {\n const { name, public_rpc_url, currency_symbol, explorer_base_url } =\n networkInfo;\n _chain.network_infos = {\n ..._chain.network_infos,\n name,\n shortName: name,\n public_rpc_url,\n currency_symbol,\n bridge_enable: true,\n mainnet: true,\n explorer_base_url,\n est_txn_mins: null,\n };\n }\n\n if (typeof filter === \"function\") {\n if (!filter(_chain)) return;\n }\n\n _chains.push(_chain);\n });\n\n return _chains;\n}\n\n/** if chain is testnet, update testnet network_infos */\nexport function updateTestnetInfo(\n testnetArr: API.Chain[],\n chainId: number,\n chain: API.Chain\n) {\n if (isTestnet(chainId)) {\n const index = testnetArr?.findIndex(\n (item) => item.network_infos.chain_id === chainId\n );\n if (index > -1) {\n testnetArr[index] = chain;\n }\n }\n}\n\nexport function filterByAllowedChains(\n chains: API.Chain[],\n allowedChains?: FlatChain[]\n) {\n if (!allowedChains) {\n return chains;\n }\n\n return chains.filter((chain) =>\n allowedChains.some(\n (allowedChain) =>\n allowedChain.id === parseInt(chain?.network_infos?.chain_id as any)\n )\n );\n}\n"],"names":["chainsInfoMap","useCallback","useContext","useMemo","useRef","useQuery","prop","isTestnet","TestnetChains","nativeTokenAddress","OrderlyContext","useChains","networkId","options","pick","pickField","swrOptions","filteredChains","allowedChains","configStore","filterFun","filter","current","chainsMap","Map","commonSwrOpts","revalidateIfStale","revalidateOnFocus","revalidateOnReconnect","revalidateOnMount","dedupingInterval","data","tokenChains","error","tokenError","brokerId","get","chainInfos","chainInfoErr","chains","orderlyChainsArr","fillChainsInfo","testnetArr","forEach","item","chainId","network_infos","chain_id","set","updateTestnetInfo","chain","mainnetArr","updateOrderlyChains","sort","a","b","bridgeless","filterByAllowedChains","mainnet","testnet","map","findByChainId","field","nativeToken","token_infos","find","address","symbol","currency_symbol","_chains","chain_details","Number","chainInfo","_chain","name","chain_name","chainName","withdrawal_fee","cross_chain_withdrawal_fee","token","contract_address","decimals","display_name","push","networkInfo","public_rpc_url","explorer_base_url","shortName","bridge_enable","est_txn_mins","index","findIndex","some","allowedChain","id","parseInt"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDeposit.d.ts","sourceRoot":"","sources":["../../src/orderly/useDeposit.ts"],"names":[],"mappings":";AAEA,OAAO,EACL,GAAG,
|
|
1
|
+
{"version":3,"file":"useDeposit.d.ts","sourceRoot":"","sources":["../../src/orderly/useDeposit.ts"],"names":[],"mappings":";AAEA,OAAO,EACL,GAAG,EAKH,SAAS,EAEV,MAAM,wBAAwB,CAAC;AAMhC,MAAM,MAAM,iBAAiB,GAAG;IAE9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,UAAU,aAAc,iBAAiB;IAgUlD,gCAAgC;;;;;;;;;;;;;IAOhC,oBAAoB;;IAEpB,qCAAqC;;IAErC,2CAA2C;;uBApI3B,MAAM;;4BAhGyB,IAAI,SAAS,EAAE;4BAvC9C,MAAM,aAAa,MAAM;IAiRzC,yBAAyB;;CAG5B,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
2
2
|
import { useAccount } from "../useAccount";
|
|
3
3
|
import { ARBITRUM_MAINNET_CHAINID, ARBITRUM_TESTNET_CHAINID, AccountStatusEnum, DEPOSIT_FEE_RATE, isNativeTokenChecker } from "@orderly.network/types";
|
|
4
|
-
import { Decimal } from "@orderly.network/utils";
|
|
4
|
+
import { Decimal, isTestnet } from "@orderly.network/utils";
|
|
5
5
|
import { useChains } from "./useChains";
|
|
6
6
|
import { useConfig } from "../useConfig";
|
|
7
7
|
import { useDebouncedCallback } from "use-debounce";
|
|
@@ -22,7 +22,7 @@ export const useDeposit = (options)=>{
|
|
|
22
22
|
let chain;
|
|
23
23
|
// Orderly testnet supported chain
|
|
24
24
|
if (networkId === "testnet") {
|
|
25
|
-
chain = findByChainId(ARBITRUM_TESTNET_CHAINID);
|
|
25
|
+
chain = findByChainId(isTestnet(options?.srcChainId) ? options?.srcChainId : ARBITRUM_TESTNET_CHAINID);
|
|
26
26
|
} else {
|
|
27
27
|
chain = findByChainId(options?.srcChainId);
|
|
28
28
|
// if is orderly un-supported chain
|
|
@@ -214,7 +214,7 @@ export const useDeposit = (options)=>{
|
|
|
214
214
|
setDepositFee(fee);
|
|
215
215
|
;
|
|
216
216
|
}).catch((error)=>{
|
|
217
|
-
;
|
|
217
|
+
console.error("getDepositFee", error);
|
|
218
218
|
}).finally(()=>{
|
|
219
219
|
setDepositFeeRevalidating(false);
|
|
220
220
|
});
|
|
@@ -1 +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
|
+
{"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 NetworkId,\n isNativeTokenChecker,\n} from \"@orderly.network/types\";\nimport { Decimal, isTestnet } 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(\n isTestnet(options?.srcChainId!)\n ? options?.srcChainId!\n : ARBITRUM_TESTNET_CHAINID\n ) 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.error(\"getDepositFee\", 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","isTestnet","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","console"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1,4 +1,14 @@
|
|
|
1
|
-
export
|
|
1
|
+
export type UseWithdrawOptions = {
|
|
2
|
+
srcChainId?: number;
|
|
3
|
+
};
|
|
4
|
+
export declare const useWithdraw: (options?: UseWithdrawOptions) => {
|
|
5
|
+
dst: {
|
|
6
|
+
symbol: string;
|
|
7
|
+
decimals: number;
|
|
8
|
+
address: string | undefined;
|
|
9
|
+
chainId: number;
|
|
10
|
+
network: string;
|
|
11
|
+
};
|
|
2
12
|
withdraw: (inputs: {
|
|
3
13
|
chainId: number;
|
|
4
14
|
token: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWithdraw.d.ts","sourceRoot":"","sources":["../../src/orderly/useWithdraw.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useWithdraw.d.ts","sourceRoot":"","sources":["../../src/orderly/useWithdraw.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,kBAAkB,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,eAAO,MAAM,WAAW,aAAc,kBAAkB;;;;;;;;uBAc3C;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,uBAAuB,EAAE,OAAO,CAAC;KAClC,KAAG,QAAQ,GAAG,CAAC;;;;;;CAsGnB,CAAC"}
|
|
@@ -2,10 +2,16 @@ import { useCallback, useMemo, useState } from "react";
|
|
|
2
2
|
import { useHoldingStream } from "./useHoldingStream";
|
|
3
3
|
import { useCollateral } from "./useCollateral";
|
|
4
4
|
import { useAccount } from "../useAccount";
|
|
5
|
-
|
|
5
|
+
import { useChains } from "./useChains";
|
|
6
|
+
import { ARBITRUM_MAINNET_CHAINID, ARBITRUM_TESTNET_CHAINID } from "@orderly.network/types";
|
|
7
|
+
import { useConfig } from "../useConfig";
|
|
8
|
+
import { isTestnet } from "@orderly.network/utils";
|
|
9
|
+
export const useWithdraw = (options)=>{
|
|
6
10
|
const { account, state } = useAccount();
|
|
7
11
|
const [isLoading, setIsLoading] = useState(false);
|
|
8
12
|
const { unsettledPnL, availableBalance, freeCollateral } = useCollateral();
|
|
13
|
+
const networkId = useConfig("networkId");
|
|
14
|
+
const [_, { findByChainId }] = useChains(undefined);
|
|
9
15
|
// const withdrawQueue = useRef<number[]>([]);
|
|
10
16
|
const withdraw = useCallback((inputs)=>{
|
|
11
17
|
return account.assetsManager.withdraw(inputs).then((res)=>{
|
|
@@ -59,7 +65,40 @@ export const useWithdraw = ()=>{
|
|
|
59
65
|
freeCollateral,
|
|
60
66
|
unsettledPnL
|
|
61
67
|
]);
|
|
68
|
+
const targetChain = useMemo(()=>{
|
|
69
|
+
let chain;
|
|
70
|
+
// Orderly testnet supported chain
|
|
71
|
+
if (networkId === "testnet") {
|
|
72
|
+
chain = findByChainId(isTestnet(options?.srcChainId) ? options?.srcChainId : ARBITRUM_TESTNET_CHAINID);
|
|
73
|
+
} else {
|
|
74
|
+
chain = findByChainId(options?.srcChainId);
|
|
75
|
+
// if is orderly un-supported chain
|
|
76
|
+
if (!chain?.network_infos?.bridgeless) {
|
|
77
|
+
// Orderly mainnet supported chain
|
|
78
|
+
chain = findByChainId(ARBITRUM_MAINNET_CHAINID);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return chain;
|
|
82
|
+
}, [
|
|
83
|
+
networkId,
|
|
84
|
+
findByChainId,
|
|
85
|
+
options?.srcChainId
|
|
86
|
+
]);
|
|
87
|
+
// Mantle chain: USDC → USDC.e
|
|
88
|
+
const dst = useMemo(()=>{
|
|
89
|
+
const USDC = targetChain?.token_infos.find((token)=>token.symbol === "USDC");
|
|
90
|
+
return {
|
|
91
|
+
symbol: USDC?.display_name || "USDC",
|
|
92
|
+
decimals: USDC?.decimals || 6,
|
|
93
|
+
address: USDC?.address,
|
|
94
|
+
chainId: targetChain?.network_infos?.chain_id,
|
|
95
|
+
network: targetChain?.network_infos?.shortName
|
|
96
|
+
};
|
|
97
|
+
}, [
|
|
98
|
+
targetChain
|
|
99
|
+
]);
|
|
62
100
|
return {
|
|
101
|
+
dst,
|
|
63
102
|
withdraw,
|
|
64
103
|
isLoading,
|
|
65
104
|
maxAmount,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/orderly/useWithdraw.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\nimport { useHoldingStream } from \"./useHoldingStream\";\nimport { useCollateral } from \"./useCollateral\";\nimport { useAccount } from \"../useAccount\";\n\nexport const useWithdraw = () => {\n const { account, state } = useAccount();\n\n const [isLoading, setIsLoading] = useState(false);\n\n const { unsettledPnL, availableBalance, freeCollateral } = useCollateral();\n\n // const withdrawQueue = useRef<number[]>([]);\n\n const withdraw = useCallback(\n (inputs: {\n chainId: number;\n token: string;\n amount: string;\n allowCrossChainWithdraw: boolean;\n }): Promise<any> => {\n return account.assetsManager.withdraw(inputs).then((res: any) => {\n // if (res.success) {\n // withdrawQueue.current.push(res.data.withdraw_id);\n // }\n return res;\n });\n },\n [state]\n );\n\n const { usdc } = useHoldingStream();\n\n // useEffect(() => {\n // const unsubscribe = ws.privateSubscribe(\n // {\n // id: \"wallet\",\n // event: \"subscribe\",\n // topic: \"wallet\",\n // ts: Date.now(),\n // },\n // {\n // onMessage: (data: any) => {\n // //\n // const { id } = data;\n\n // if (withdrawQueue.current.includes(id)) {\n // withdrawQueue.current = withdrawQueue.current.filter(\n // (item) => item !== id\n // );\n // ee.emit(\"withdraw:success\", data);\n // }\n // },\n // }\n // );\n\n // return () => unsubscribe();\n // }, []);\n\n const maxAmount = useMemo(() => {\n // if (!usdc || !usdc.holding) return 0;\n\n // if (unsettledPnL >= 0) return usdc?.holding ?? 0;\n\n // return new Decimal(usdc.holding).add(unsettledPnL).toNumber();\n\n return freeCollateral;\n }, [freeCollateral]);\n\n const availableWithdraw = useMemo(() => {\n if (unsettledPnL < 0) {\n return freeCollateral;\n } else {\n return freeCollateral - unsettledPnL;\n }\n }, [freeCollateral, unsettledPnL]);\n\n return {\n withdraw,\n isLoading,\n maxAmount,\n availableBalance,\n availableWithdraw,\n unsettledPnL,\n };\n};\n"],"names":["useCallback","useMemo","useState","useHoldingStream","useCollateral","useAccount","useWithdraw","account","state","isLoading","setIsLoading","unsettledPnL","availableBalance","freeCollateral","withdraw","inputs","assetsManager","then","res","usdc","maxAmount","availableWithdraw"],"rangeMappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/orderly/useWithdraw.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\nimport { useHoldingStream } from \"./useHoldingStream\";\nimport { useCollateral } from \"./useCollateral\";\nimport { useAccount } from \"../useAccount\";\nimport { useChains } from \"./useChains\";\nimport {\n API,\n ARBITRUM_MAINNET_CHAINID,\n ARBITRUM_TESTNET_CHAINID,\n} from \"@orderly.network/types\";\nimport { useConfig } from \"../useConfig\";\nimport { isTestnet } from \"@orderly.network/utils\";\n\nexport type UseWithdrawOptions = { srcChainId?: number };\n\nexport const useWithdraw = (options?: UseWithdrawOptions) => {\n const { account, state } = useAccount();\n\n const [isLoading, setIsLoading] = useState(false);\n\n const { unsettledPnL, availableBalance, freeCollateral } = useCollateral();\n\n const networkId = useConfig(\"networkId\");\n\n const [_, { findByChainId }] = useChains(undefined);\n\n // const withdrawQueue = useRef<number[]>([]);\n\n const withdraw = useCallback(\n (inputs: {\n chainId: number;\n token: string;\n amount: string;\n allowCrossChainWithdraw: boolean;\n }): Promise<any> => {\n return account.assetsManager.withdraw(inputs).then((res: any) => {\n // if (res.success) {\n // withdrawQueue.current.push(res.data.withdraw_id);\n // }\n return res;\n });\n },\n [state]\n );\n\n const { usdc } = useHoldingStream();\n\n // useEffect(() => {\n // const unsubscribe = ws.privateSubscribe(\n // {\n // id: \"wallet\",\n // event: \"subscribe\",\n // topic: \"wallet\",\n // ts: Date.now(),\n // },\n // {\n // onMessage: (data: any) => {\n // //\n // const { id } = data;\n\n // if (withdrawQueue.current.includes(id)) {\n // withdrawQueue.current = withdrawQueue.current.filter(\n // (item) => item !== id\n // );\n // ee.emit(\"withdraw:success\", data);\n // }\n // },\n // }\n // );\n\n // return () => unsubscribe();\n // }, []);\n\n const maxAmount = useMemo(() => {\n // if (!usdc || !usdc.holding) return 0;\n\n // if (unsettledPnL >= 0) return usdc?.holding ?? 0;\n\n // return new Decimal(usdc.holding).add(unsettledPnL).toNumber();\n\n return freeCollateral;\n }, [freeCollateral]);\n\n const availableWithdraw = useMemo(() => {\n if (unsettledPnL < 0) {\n return freeCollateral;\n } else {\n return freeCollateral - unsettledPnL;\n }\n }, [freeCollateral, unsettledPnL]);\n\n const targetChain = useMemo(() => {\n let chain: API.Chain | undefined;\n\n // Orderly testnet supported chain\n if (networkId === \"testnet\") {\n chain = findByChainId(\n isTestnet(options?.srcChainId!)\n ? options?.srcChainId!\n : ARBITRUM_TESTNET_CHAINID\n ) 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 // Mantle chain: USDC → USDC.e\n const dst = useMemo(() => {\n const USDC = targetChain?.token_infos.find(\n (token: API.TokenInfo) => token.symbol === \"USDC\"\n );\n\n return {\n symbol: USDC?.display_name || \"USDC\",\n decimals: USDC?.decimals || 6,\n address: USDC?.address,\n chainId: targetChain?.network_infos?.chain_id,\n network: targetChain?.network_infos?.shortName,\n };\n }, [targetChain]);\n\n return {\n dst,\n withdraw,\n isLoading,\n maxAmount,\n availableBalance,\n availableWithdraw,\n unsettledPnL,\n };\n};\n"],"names":["useCallback","useMemo","useState","useHoldingStream","useCollateral","useAccount","useChains","ARBITRUM_MAINNET_CHAINID","ARBITRUM_TESTNET_CHAINID","useConfig","isTestnet","useWithdraw","options","account","state","isLoading","setIsLoading","unsettledPnL","availableBalance","freeCollateral","networkId","_","findByChainId","undefined","withdraw","inputs","assetsManager","then","res","usdc","maxAmount","availableWithdraw","targetChain","chain","srcChainId","network_infos","bridgeless","dst","USDC","token_infos","find","token","symbol","display_name","decimals","address","chainId","chain_id","network","shortName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,WAAW,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,QAAQ;AACvD,SAASC,gBAAgB,QAAQ,qBAAqB;AACtD,SAASC,aAAa,QAAQ,kBAAkB;AAChD,SAASC,UAAU,QAAQ,gBAAgB;AAC3C,SAASC,SAAS,QAAQ,cAAc;AACxC,SAEEC,wBAAwB,EACxBC,wBAAwB,QACnB,yBAAyB;AAChC,SAASC,SAAS,QAAQ,eAAe;AACzC,SAASC,SAAS,QAAQ,yBAAyB;AAInD,OAAO,MAAMC,cAAc,CAACC;IAC1B,MAAM,EAAEC,OAAO,EAAEC,KAAK,EAAE,GAAGT;IAE3B,MAAM,CAACU,WAAWC,aAAa,GAAGd,SAAS;IAE3C,MAAM,EAAEe,YAAY,EAAEC,gBAAgB,EAAEC,cAAc,EAAE,GAAGf;IAE3D,MAAMgB,YAAYX,UAAU;IAE5B,MAAM,CAACY,GAAG,EAAEC,aAAa,EAAE,CAAC,GAAGhB,UAAUiB;IAEzC,8CAA8C;IAE9C,MAAMC,WAAWxB,YACf,CAACyB;QAMC,OAAOZ,QAAQa,aAAa,CAACF,QAAQ,CAACC,QAAQE,IAAI,CAAC,CAACC;YAClD,qBAAqB;YACrB,sDAAsD;YACtD,IAAI;YACJ,OAAOA;QACT;IACF,GACA;QAACd;KAAM;IAGT,MAAM,EAAEe,IAAI,EAAE,GAAG1B;IAEjB,oBAAoB;IACpB,6CAA6C;IAC7C,QAAQ;IACR,sBAAsB;IACtB,4BAA4B;IAC5B,yBAAyB;IACzB,wBAAwB;IACxB,SAAS;IACT,QAAQ;IACR,oCAAoC;IACpC,aAAa;IACb,+BAA+B;IAE/B,oDAAoD;IACpD,kEAAkE;IAClE,oCAAoC;IACpC,eAAe;IACf,+CAA+C;IAC/C,YAAY;IACZ,WAAW;IACX,QAAQ;IACR,OAAO;IAEP,gCAAgC;IAChC,UAAU;IAEV,MAAM2B,YAAY7B,QAAQ;QACxB,wCAAwC;QAExC,oDAAoD;QAEpD,iEAAiE;QAEjE,OAAOkB;IACT,GAAG;QAACA;KAAe;IAEnB,MAAMY,oBAAoB9B,QAAQ;QAChC,IAAIgB,eAAe,GAAG;YACpB,OAAOE;QACT,OAAO;YACL,OAAOA,iBAAiBF;QAC1B;IACF,GAAG;QAACE;QAAgBF;KAAa;IAEjC,MAAMe,cAAc/B,QAAQ;QAC1B,IAAIgC;QAEJ,kCAAkC;QAClC,IAAIb,cAAc,WAAW;YAC3Ba,QAAQX,cACNZ,UAAUE,SAASsB,cACftB,SAASsB,aACT1B;QAER,OAAO;YACLyB,QAAQX,cAAcV,SAASsB;YAC/B,mCAAmC;YACnC,IAAI,CAACD,OAAOE,eAAeC,YAAY;gBACrC,kCAAkC;gBAClCH,QAAQX,cAAcf;YACxB;QACF;QACA,OAAO0B;IACT,GAAG;QAACb;QAAWE;QAAeV,SAASsB;KAAW;IAElD,8BAA8B;IAC9B,MAAMG,MAAMpC,QAAQ;QAClB,MAAMqC,OAAON,aAAaO,YAAYC,KACpC,CAACC,QAAyBA,MAAMC,MAAM,KAAK;QAG7C,OAAO;YACLA,QAAQJ,MAAMK,gBAAgB;YAC9BC,UAAUN,MAAMM,YAAY;YAC5BC,SAASP,MAAMO;YACfC,SAASd,aAAaG,eAAeY;YACrCC,SAAShB,aAAaG,eAAec;QACvC;IACF,GAAG;QAACjB;KAAY;IAEhB,OAAO;QACLK;QACAb;QACAT;QACAe;QACAZ;QACAa;QACAd;IACF;AACF,EAAE"}
|
package/esm/version.d.ts
CHANGED
package/esm/version.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
if (typeof window !== 'undefined') {
|
|
2
2
|
window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};
|
|
3
|
-
window.__ORDERLY_VERSION__["@orderly.network/hooks"] = "1.5.
|
|
3
|
+
window.__ORDERLY_VERSION__["@orderly.network/hooks"] = "1.5.5";
|
|
4
4
|
}
|
|
5
|
-
export default "1.5.
|
|
5
|
+
export default "1.5.5";
|
|
6
6
|
|
|
7
7
|
//# sourceMappingURL=version.js.map
|
package/esm/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/version.ts"],"sourcesContent":["\ndeclare global {\n interface Window {\n __ORDERLY_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif(typeof window !== 'undefined') {\n window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};\n window.__ORDERLY_VERSION__[\"@orderly.network/hooks\"] = \"1.5.
|
|
1
|
+
{"version":3,"sources":["../src/version.ts"],"sourcesContent":["\ndeclare global {\n interface Window {\n __ORDERLY_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif(typeof window !== 'undefined') {\n window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};\n window.__ORDERLY_VERSION__[\"@orderly.network/hooks\"] = \"1.5.5\";\n};\n\nexport default \"1.5.5\";\n"],"names":["window","__ORDERLY_VERSION__"],"rangeMappings":";;;;","mappings":"AAQA,IAAG,OAAOA,WAAW,aAAa;IAC9BA,OAAOC,mBAAmB,GAAGD,OAAOC,mBAAmB,IAAI,CAAC;IAC5DD,OAAOC,mBAAmB,CAAC,yBAAyB,GAAG;AAC3D;AAEA,eAAe,QAAQ"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
+
import type { EIP1193Provider } from '@web3-onboard/common';
|
|
2
3
|
export type ConnectedChain = {
|
|
3
4
|
id: number | string;
|
|
4
5
|
};
|
|
@@ -8,7 +9,7 @@ export type WalletAccount = {
|
|
|
8
9
|
export interface WalletState {
|
|
9
10
|
label: string;
|
|
10
11
|
icon: string;
|
|
11
|
-
provider:
|
|
12
|
+
provider: EIP1193Provider;
|
|
12
13
|
accounts: WalletAccount[];
|
|
13
14
|
chains: ConnectedChain[];
|
|
14
15
|
instance?: unknown;
|
|
@@ -21,7 +22,7 @@ export interface WalletConnectorContextState {
|
|
|
21
22
|
chainId: string | number;
|
|
22
23
|
}) => Promise<any>;
|
|
23
24
|
chains: any[];
|
|
24
|
-
wallet:
|
|
25
|
+
wallet: WalletState;
|
|
25
26
|
connectedChain: ConnectedChain | null;
|
|
26
27
|
settingChain: boolean;
|
|
27
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walletConnectorContext.d.ts","sourceRoot":"","sources":["../src/walletConnectorContext.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"walletConnectorContext.d.ts","sourceRoot":"","sources":["../src/walletConnectorContext.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAG3D,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;CACrB,CAAC;AACF,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;CAKjB,CAAC;AACF,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACtC,UAAU,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7C,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,CAAC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAClE,MAAM,EAAE,GAAG,EAAE,CAAC;IAEd,MAAM,EAAE,WAAW,CAAC;IACpB,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IAEtC,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,eAAO,MAAM,sBAAsB,sDAC4C,CAAC;AAEhF,eAAO,MAAM,kBAAkB,mCAE9B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/walletConnectorContext.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\n\nexport type ConnectedChain = {\n id: number | string;\n};\nexport type WalletAccount = {\n address: string;\n // ens: Ens | null;\n // uns: Uns | null;\n // balance: Balances | null;\n // secondaryTokens?: SecondaryTokenBalances[] | null;\n};\nexport interface WalletState {\n label: string;\n icon: string;\n provider:
|
|
1
|
+
{"version":3,"sources":["../src/walletConnectorContext.tsx"],"sourcesContent":["import type { EIP1193Provider } from '@web3-onboard/common'\nimport { createContext, useContext } from \"react\";\n\nexport type ConnectedChain = {\n id: number | string;\n};\nexport type WalletAccount = {\n address: string;\n // ens: Ens | null;\n // uns: Uns | null;\n // balance: Balances | null;\n // secondaryTokens?: SecondaryTokenBalances[] | null;\n};\nexport interface WalletState {\n label: string;\n icon: string;\n provider: EIP1193Provider;\n accounts: WalletAccount[];\n chains: ConnectedChain[];\n instance?: unknown;\n}\n\nexport interface WalletConnectorContextState {\n connect: () => Promise<WalletState[]>;\n disconnect: (options: any) => Promise<any[]>;\n connecting: boolean;\n setChain: (options: { chainId: string | number }) => Promise<any>;\n chains: any[];\n // switchChain: (options: { chainId: string }) => Promise<any>;\n wallet: WalletState;\n connectedChain: ConnectedChain | null;\n\n settingChain: boolean;\n}\n\nexport const WalletConnectorContext =\n createContext<WalletConnectorContextState>({} as WalletConnectorContextState);\n\nexport const useWalletConnector = () => {\n return useContext(WalletConnectorContext);\n};\n"],"names":["createContext","useContext","WalletConnectorContext","useWalletConnector"],"rangeMappings":";;;;","mappings":"AACA,SAASA,aAAa,EAAEC,UAAU,QAAQ,QAAQ;AAkClD,OAAO,MAAMC,uCACXF,cAA2C,CAAC,GAAkC;AAEhF,OAAO,MAAMG,qBAAqB;IAChC,OAAOF,WAAWC;AACpB,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useChains.d.ts","sourceRoot":"","sources":["../../src/orderly/useChains.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,KAAK,GAAG,EAER,KAAK,IAAI,SAAS,EACnB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,KAAK,CAAC;AAOvC,MAAM,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG;IAC9B,WAAW,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,MAAM,CAChB,CAAC,SAAS,SAAS,GAAG,SAAS,GAAG,SAAS,EAC3C,CAAC,SAAS,MAAM,GAAG,CAAC,KAAK,GAAG,SAAS,GAAG,SAAS,IAC/C,CAAC,SAAS,SAAS,GACnB,CAAC,SAAS,MAAM,GAAG,CAAC,KAAK,GACvB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GACd,GAAG,CAAC,KAAK,EAAE,GACb,CAAC,SAAS,MAAM,GAAG,CAAC,KAAK,GACzB;IACE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACxB,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;CACzB,GACD;IACE,OAAO,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;IACrB,OAAO,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;CACtB,CAAC;AAEN,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,KAAK,OAAO,CAAC;IACtC,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,aAAa,CAAC;CACjD,GAAG,gBAAgB,CAAC;AAErB,MAAM,MAAM,qBAAqB,GAAG;IAClC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,KAAK,GAAG,SAAS,CAAC;IACtE,KAAK,EAAE,GAAG,CAAC;CACZ,CAAC;AAEF,wBAAgB,SAAS,CACvB,SAAS,CAAC,EAAE,SAAS,EACrB,OAAO,CAAC,EAAE,SAAS,GAClB,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,qBAAqB,CAAC,CAAC;AAEzD,wBAAgB,SAAS,CACvB,CAAC,SAAS,SAAS,GAAG,SAAS,EAC/B,CAAC,SAAS,gBAAgB,GAAG,SAAS,EAEtC,SAAS,CAAC,EAAE,CAAC,EACb,OAAO,CAAC,EAAE,CAAC,GACV;IACD,MAAM,CACJ,CAAC,EACD,CAAC,SAAS,gBAAgB,GACtB,CAAC,CAAC,MAAM,CAAC,SAAS,MAAM,GAAG,CAAC,KAAK,GAC/B,CAAC,CAAC,MAAM,CAAC,GACT,SAAS,GACX,SAAS,CACd;IACD,qBAAqB;CACtB,CAAC;
|
|
1
|
+
{"version":3,"file":"useChains.d.ts","sourceRoot":"","sources":["../../src/orderly/useChains.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,KAAK,GAAG,EAER,KAAK,IAAI,SAAS,EACnB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,KAAK,CAAC;AAOvC,MAAM,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG;IAC9B,WAAW,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,MAAM,CAChB,CAAC,SAAS,SAAS,GAAG,SAAS,GAAG,SAAS,EAC3C,CAAC,SAAS,MAAM,GAAG,CAAC,KAAK,GAAG,SAAS,GAAG,SAAS,IAC/C,CAAC,SAAS,SAAS,GACnB,CAAC,SAAS,MAAM,GAAG,CAAC,KAAK,GACvB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GACd,GAAG,CAAC,KAAK,EAAE,GACb,CAAC,SAAS,MAAM,GAAG,CAAC,KAAK,GACzB;IACE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACxB,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;CACzB,GACD;IACE,OAAO,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;IACrB,OAAO,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;CACtB,CAAC;AAEN,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,KAAK,OAAO,CAAC;IACtC,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,aAAa,CAAC;CACjD,GAAG,gBAAgB,CAAC;AAErB,MAAM,MAAM,qBAAqB,GAAG;IAClC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,KAAK,GAAG,SAAS,CAAC;IACtE,KAAK,EAAE,GAAG,CAAC;CACZ,CAAC;AAEF,wBAAgB,SAAS,CACvB,SAAS,CAAC,EAAE,SAAS,EACrB,OAAO,CAAC,EAAE,SAAS,GAClB,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,qBAAqB,CAAC,CAAC;AAEzD,wBAAgB,SAAS,CACvB,CAAC,SAAS,SAAS,GAAG,SAAS,EAC/B,CAAC,SAAS,gBAAgB,GAAG,SAAS,EAEtC,SAAS,CAAC,EAAE,CAAC,EACb,OAAO,CAAC,EAAE,CAAC,GACV;IACD,MAAM,CACJ,CAAC,EACD,CAAC,SAAS,gBAAgB,GACtB,CAAC,CAAC,MAAM,CAAC,SAAS,MAAM,GAAG,CAAC,KAAK,GAC/B,CAAC,CAAC,MAAM,CAAC,GACT,SAAS,GACX,SAAS,CACd;IACD,qBAAqB;CACtB,CAAC;AAwIF,uDAAuD;AACvD,wBAAgB,cAAc,CAC5B,MAAM,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,EACpB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,eAoCjC;AAED,mEAAmE;AACnE,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,EACnB,UAAU,EAAE,GAAG,EACf,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,eAkCjC;AAED,wDAAwD;AACxD,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,GAAG,CAAC,KAAK,EAAE,EACvB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,GAAG,CAAC,KAAK,QAUjB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,EACnB,aAAa,CAAC,EAAE,SAAS,EAAE,eAY5B"}
|
package/lib/orderly/useChains.js
CHANGED
|
@@ -33,7 +33,7 @@ const _utils = require("@orderly.network/utils");
|
|
|
33
33
|
const _orderlyContext = require("../orderlyContext");
|
|
34
34
|
function useChains(networkId, options = {}) {
|
|
35
35
|
const { pick: pickField, ...swrOptions } = options;
|
|
36
|
-
const { filteredChains: allowedChains } = (0, _react.useContext)(_orderlyContext.OrderlyContext);
|
|
36
|
+
const { filteredChains: allowedChains, configStore } = (0, _react.useContext)(_orderlyContext.OrderlyContext);
|
|
37
37
|
const filterFun = (0, _react.useRef)(options?.filter);
|
|
38
38
|
filterFun.current = options?.filter;
|
|
39
39
|
const chainsMap = (0, _react.useRef)(new Map());
|
|
@@ -48,12 +48,12 @@ function useChains(networkId, options = {}) {
|
|
|
48
48
|
...swrOptions
|
|
49
49
|
};
|
|
50
50
|
// only prod env return mainnet chains info
|
|
51
|
-
// TODO: remove https://api-evm.orderly.org api base
|
|
52
51
|
const { data: tokenChains, error: tokenError } = (0, _useQuery.useQuery)("https://api-evm.orderly.org/v1/public/token", {
|
|
53
52
|
...commonSwrOpts
|
|
54
53
|
});
|
|
54
|
+
const brokerId = configStore.get("brokerId");
|
|
55
55
|
// only prod env return mainnet chains info
|
|
56
|
-
const { data: chainInfos, error: chainInfoErr } = (0, _useQuery.useQuery)(
|
|
56
|
+
const { data: chainInfos, error: chainInfoErr } = (0, _useQuery.useQuery)(`/v1/public/chain_info${brokerId !== "orderly" ? `?broker_id=${brokerId}` : ""}`, {
|
|
57
57
|
...commonSwrOpts
|
|
58
58
|
});
|
|
59
59
|
const chains = (0, _react.useMemo)(()=>{
|
|
@@ -149,7 +149,8 @@ function fillChainsInfo(chains, filter) {
|
|
|
149
149
|
{
|
|
150
150
|
symbol: item.token,
|
|
151
151
|
address: chain.contract_address,
|
|
152
|
-
decimals: chain.decimals
|
|
152
|
+
decimals: chain.decimals,
|
|
153
|
+
display_name: chain.display_name
|
|
153
154
|
}
|
|
154
155
|
]
|
|
155
156
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/orderly/useChains.ts"],"sourcesContent":["import {\n NetworkId,\n type API,\n chainsInfoMap,\n Chain as FlatChain,\n} from \"@orderly.network/types\";\nimport { useCallback, useContext, useMemo, useRef } from \"react\";\nimport { SWRConfiguration } from \"swr\";\nimport { useQuery } from \"../useQuery\";\nimport { prop } from \"ramda\";\nimport { isTestnet } from \"@orderly.network/utils\";\nimport { TestnetChains, nativeTokenAddress } from \"@orderly.network/types\";\nimport { OrderlyContext } from \"../orderlyContext\";\n\nexport type Chain = API.Chain & {\n nativeToken?: API.TokenInfo;\n};\n\nexport type Chains<\n T extends NetworkId | undefined = undefined,\n K extends keyof API.Chain | undefined = undefined\n> = T extends NetworkId\n ? K extends keyof API.Chain\n ? API.Chain[K][]\n : API.Chain[]\n : K extends keyof API.Chain\n ? {\n testnet: API.Chain[K][];\n mainnet: API.Chain[K][];\n }\n : {\n testnet: API.Chain[];\n mainnet: API.Chain[];\n };\n\nexport type UseChainsOptions = {\n filter?: (item: API.Chain) => boolean;\n pick?: \"dexs\" | \"network_infos\" | \"token_infos\";\n} & SWRConfiguration;\n\nexport type UseChainsReturnObject = {\n findByChainId: (chainId: number, field?: string) => Chain | undefined;\n error: any;\n};\n\nexport function useChains(\n networkId?: undefined,\n options?: undefined\n): [Chains<undefined, undefined>, UseChainsReturnObject];\n\nexport function useChains<\n T extends NetworkId | undefined,\n K extends UseChainsOptions | undefined\n>(\n networkId?: T,\n options?: K\n): [\n Chains<\n T,\n K extends UseChainsOptions\n ? K[\"pick\"] extends keyof API.Chain\n ? K[\"pick\"]\n : undefined\n : undefined\n >,\n UseChainsReturnObject\n];\n\nexport function useChains(\n networkId?: NetworkId,\n options: UseChainsOptions = {}\n) {\n const { pick: pickField, ...swrOptions } = options;\n const { filteredChains: allowedChains } = useContext(OrderlyContext);\n\n const filterFun = useRef(options?.filter);\n filterFun.current = options?.filter;\n\n const chainsMap = useRef(new Map<number, Chain>());\n\n const commonSwrOpts = {\n revalidateIfStale: false,\n revalidateOnFocus: false,\n revalidateOnReconnect: false,\n // If false, undefined data gets cached against the key.\n revalidateOnMount: true,\n // dont duplicate a request w/ same key for 1hr\n dedupingInterval: 3_600_000,\n ...swrOptions,\n };\n\n // only prod env return mainnet chains info\n // TODO: remove https://api-evm.orderly.org api base\n const { data: tokenChains, error: tokenError } = useQuery<API.Chain[]>(\n \"https://api-evm.orderly.org/v1/public/token\",\n { ...commonSwrOpts }\n );\n\n // only prod env return mainnet chains info\n const { data: chainInfos, error: chainInfoErr } = useQuery(\n \"/v1/public/chain_info\",\n { ...commonSwrOpts }\n );\n\n const chains = useMemo(() => {\n const orderlyChainsArr = fillChainsInfo(tokenChains, filterFun.current);\n\n let testnetArr = [...TestnetChains] as API.Chain[];\n\n orderlyChainsArr?.forEach((item) => {\n const chainId = item.network_infos?.chain_id;\n chainsMap.current.set(chainId, item);\n updateTestnetInfo(testnetArr, chainId, item);\n });\n\n testnetArr.forEach((chain) => {\n chainsMap.current.set(chain.network_infos?.chain_id, chain);\n });\n\n let mainnetArr: API.Chain[] = [];\n\n // TODO: /v1/public/chain_info api data is not match /v1/public/token api data, so it can effect is prod\n mainnetArr = updateOrderlyChains(\n orderlyChainsArr,\n chainInfos,\n filterFun.current\n );\n\n mainnetArr.forEach((item) => {\n const chainId = item.network_infos?.chain_id;\n chainsMap.current.set(chainId, item);\n updateTestnetInfo(testnetArr, chainId, item);\n });\n\n mainnetArr.sort((a, b) => {\n return a.network_infos.bridgeless ? -1 : 1;\n });\n\n testnetArr.sort((a, b) => {\n return a.network_infos.bridgeless ? -1 : 1;\n });\n\n mainnetArr = filterByAllowedChains(mainnetArr, allowedChains?.mainnet);\n testnetArr = filterByAllowedChains(testnetArr, allowedChains?.testnet);\n\n if (!!pickField) {\n //@ts-ignore\n testnetArr = testnetArr.map((item) => item[pickField]);\n //@ts-ignore\n mainnetArr = mainnetArr.map((item) => item[pickField]);\n }\n\n if (networkId === \"mainnet\") {\n return mainnetArr;\n }\n\n if (networkId === \"testnet\") {\n return testnetArr;\n }\n\n return {\n testnet: testnetArr,\n mainnet: mainnetArr,\n };\n }, [networkId, tokenChains, chainInfos, pickField, allowedChains]);\n\n const findByChainId = useCallback(\n (chainId: number, field?: string) => {\n const chain = chainsMap.current.get(chainId);\n\n if (chain) {\n chain.nativeToken =\n chain.token_infos?.find(\n (item) => item.address === nativeTokenAddress\n ) ||\n ({\n symbol: chain.network_infos?.currency_symbol,\n } as any);\n }\n\n if (typeof field === \"string\") {\n return prop(field as never, chain);\n }\n\n return chain;\n },\n [chains, chainsMap]\n );\n\n return [\n chains,\n {\n findByChainId,\n error: tokenError,\n },\n ];\n}\n\n/** orderly chains array form (/v1/public/token) api */\nexport function fillChainsInfo(\n chains?: API.Chain[],\n filter?: (chain: any) => boolean\n) {\n let _chains: API.Chain[] = [];\n\n chains?.forEach((item) => {\n item.chain_details.forEach((chain: any) => {\n const chainId = Number(chain.chain_id);\n const chainInfo = chainsInfoMap.get(chainId);\n\n const _chain: any = {\n network_infos: {\n name: chain.chain_name ?? chainInfo?.chainName ?? \"--\",\n chain_id: chainId,\n withdrawal_fee: chain.withdrawal_fee,\n cross_chain_withdrawal_fee: chain.cross_chain_withdrawal_fee,\n bridgeless: true,\n },\n token_infos: [\n {\n symbol: item.token,\n address: chain.contract_address,\n decimals: chain.decimals,\n },\n ],\n };\n\n if (typeof filter === \"function\") {\n if (!filter(_chain)) return;\n }\n\n _chains.push(_chain);\n });\n });\n\n return _chains;\n}\n\n/** update network_infos by chain_info api(v1/public/chain_info) */\nexport function updateOrderlyChains(\n chains: API.Chain[],\n chainInfos: any,\n filter?: (chain: any) => boolean\n) {\n const _chains: API.Chain[] = [];\n chains.forEach((chain) => {\n let _chain = { ...chain };\n\n const networkInfo = chainInfos?.find(\n (item: any) => item.chain_id == chain.network_infos.chain_id\n );\n\n if (networkInfo) {\n const { name, public_rpc_url, currency_symbol, explorer_base_url } =\n networkInfo;\n _chain.network_infos = {\n ..._chain.network_infos,\n name,\n shortName: name,\n public_rpc_url,\n currency_symbol,\n bridge_enable: true,\n mainnet: true,\n explorer_base_url,\n est_txn_mins: null,\n };\n }\n\n if (typeof filter === \"function\") {\n if (!filter(_chain)) return;\n }\n\n _chains.push(_chain);\n });\n\n return _chains;\n}\n\n/** if chain is testnet, update testnet network_infos */\nexport function updateTestnetInfo(\n testnetArr: API.Chain[],\n chainId: number,\n chain: API.Chain\n) {\n if (isTestnet(chainId)) {\n const index = testnetArr?.findIndex(\n (item) => item.network_infos.chain_id === chainId\n );\n if (index > -1) {\n testnetArr[index] = chain;\n }\n }\n}\n\nexport function filterByAllowedChains(\n chains: API.Chain[],\n allowedChains?: FlatChain[]\n) {\n if (!allowedChains) {\n return chains;\n }\n\n return chains.filter((chain) =>\n allowedChains.some(\n (allowedChain) =>\n allowedChain.id === parseInt(chain?.network_infos?.chain_id as any)\n )\n );\n}\n"],"names":["fillChainsInfo","filterByAllowedChains","updateOrderlyChains","updateTestnetInfo","useChains","networkId","options","pick","pickField","swrOptions","filteredChains","allowedChains","useContext","OrderlyContext","filterFun","useRef","filter","current","chainsMap","Map","commonSwrOpts","revalidateIfStale","revalidateOnFocus","revalidateOnReconnect","revalidateOnMount","dedupingInterval","data","tokenChains","error","tokenError","useQuery","chainInfos","chainInfoErr","chains","useMemo","orderlyChainsArr","testnetArr","TestnetChains","forEach","item","chainId","network_infos","chain_id","set","chain","mainnetArr","sort","a","b","bridgeless","mainnet","testnet","map","findByChainId","useCallback","field","get","nativeToken","token_infos","find","address","nativeTokenAddress","symbol","currency_symbol","prop","_chains","chain_details","Number","chainInfo","chainsInfoMap","_chain","name","chain_name","chainName","withdrawal_fee","cross_chain_withdrawal_fee","token","contract_address","decimals","push","networkInfo","public_rpc_url","explorer_base_url","shortName","bridge_enable","est_txn_mins","isTestnet","index","findIndex","some","allowedChain","id","parseInt"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/orderly/useChains.ts"],"sourcesContent":["import {\n NetworkId,\n type API,\n chainsInfoMap,\n Chain as FlatChain,\n} from \"@orderly.network/types\";\nimport { useCallback, useContext, useMemo, useRef } from \"react\";\nimport { SWRConfiguration } from \"swr\";\nimport { useQuery } from \"../useQuery\";\nimport { prop } from \"ramda\";\nimport { isTestnet } from \"@orderly.network/utils\";\nimport { TestnetChains, nativeTokenAddress } from \"@orderly.network/types\";\nimport { OrderlyContext } from \"../orderlyContext\";\n\nexport type Chain = API.Chain & {\n nativeToken?: API.TokenInfo;\n};\n\nexport type Chains<\n T extends NetworkId | undefined = undefined,\n K extends keyof API.Chain | undefined = undefined\n> = T extends NetworkId\n ? K extends keyof API.Chain\n ? API.Chain[K][]\n : API.Chain[]\n : K extends keyof API.Chain\n ? {\n testnet: API.Chain[K][];\n mainnet: API.Chain[K][];\n }\n : {\n testnet: API.Chain[];\n mainnet: API.Chain[];\n };\n\nexport type UseChainsOptions = {\n filter?: (item: API.Chain) => boolean;\n pick?: \"dexs\" | \"network_infos\" | \"token_infos\";\n} & SWRConfiguration;\n\nexport type UseChainsReturnObject = {\n findByChainId: (chainId: number, field?: string) => Chain | undefined;\n error: any;\n};\n\nexport function useChains(\n networkId?: undefined,\n options?: undefined\n): [Chains<undefined, undefined>, UseChainsReturnObject];\n\nexport function useChains<\n T extends NetworkId | undefined,\n K extends UseChainsOptions | undefined\n>(\n networkId?: T,\n options?: K\n): [\n Chains<\n T,\n K extends UseChainsOptions\n ? K[\"pick\"] extends keyof API.Chain\n ? K[\"pick\"]\n : undefined\n : undefined\n >,\n UseChainsReturnObject\n];\n\nexport function useChains(\n networkId?: NetworkId,\n options: UseChainsOptions = {}\n) {\n const { pick: pickField, ...swrOptions } = options;\n const { filteredChains: allowedChains, configStore } =\n useContext(OrderlyContext);\n\n const filterFun = useRef(options?.filter);\n filterFun.current = options?.filter;\n\n const chainsMap = useRef(new Map<number, Chain>());\n\n const commonSwrOpts = {\n revalidateIfStale: false,\n revalidateOnFocus: false,\n revalidateOnReconnect: false,\n // If false, undefined data gets cached against the key.\n revalidateOnMount: true,\n // dont duplicate a request w/ same key for 1hr\n dedupingInterval: 3_600_000,\n ...swrOptions,\n };\n\n // only prod env return mainnet chains info\n const { data: tokenChains, error: tokenError } = useQuery<API.Chain[]>(\n \"https://api-evm.orderly.org/v1/public/token\",\n { ...commonSwrOpts }\n );\n\n const brokerId = configStore.get(\"brokerId\");\n\n // only prod env return mainnet chains info\n const { data: chainInfos, error: chainInfoErr } = useQuery(\n `/v1/public/chain_info${\n brokerId !== \"orderly\" ? `?broker_id=${brokerId}` : \"\"\n }`,\n { ...commonSwrOpts }\n );\n\n const chains = useMemo(() => {\n const orderlyChainsArr = fillChainsInfo(tokenChains, filterFun.current);\n\n let testnetArr = [...TestnetChains] as API.Chain[];\n\n orderlyChainsArr?.forEach((item) => {\n const chainId = item.network_infos?.chain_id;\n chainsMap.current.set(chainId, item);\n updateTestnetInfo(testnetArr, chainId, item);\n });\n\n testnetArr.forEach((chain) => {\n chainsMap.current.set(chain.network_infos?.chain_id, chain);\n });\n\n let mainnetArr: API.Chain[] = [];\n\n // TODO: /v1/public/chain_info api data is not match /v1/public/token api data, so it can effect is prod\n mainnetArr = updateOrderlyChains(\n orderlyChainsArr,\n chainInfos,\n filterFun.current\n );\n\n mainnetArr.forEach((item) => {\n const chainId = item.network_infos?.chain_id;\n chainsMap.current.set(chainId, item);\n updateTestnetInfo(testnetArr, chainId, item);\n });\n\n mainnetArr.sort((a, b) => {\n return a.network_infos.bridgeless ? -1 : 1;\n });\n\n testnetArr.sort((a, b) => {\n return a.network_infos.bridgeless ? -1 : 1;\n });\n\n mainnetArr = filterByAllowedChains(mainnetArr, allowedChains?.mainnet);\n testnetArr = filterByAllowedChains(testnetArr, allowedChains?.testnet);\n\n if (!!pickField) {\n //@ts-ignore\n testnetArr = testnetArr.map((item) => item[pickField]);\n //@ts-ignore\n mainnetArr = mainnetArr.map((item) => item[pickField]);\n }\n\n if (networkId === \"mainnet\") {\n return mainnetArr;\n }\n\n if (networkId === \"testnet\") {\n return testnetArr;\n }\n\n return {\n testnet: testnetArr,\n mainnet: mainnetArr,\n };\n }, [networkId, tokenChains, chainInfos, pickField, allowedChains]);\n\n const findByChainId = useCallback(\n (chainId: number, field?: string) => {\n const chain = chainsMap.current.get(chainId);\n\n if (chain) {\n chain.nativeToken =\n chain.token_infos?.find(\n (item) => item.address === nativeTokenAddress\n ) ||\n ({\n symbol: chain.network_infos?.currency_symbol,\n } as any);\n }\n\n if (typeof field === \"string\") {\n return prop(field as never, chain);\n }\n\n return chain;\n },\n [chains, chainsMap]\n );\n\n return [\n chains,\n {\n findByChainId,\n error: tokenError,\n },\n ];\n}\n\n/** orderly chains array form (/v1/public/token) api */\nexport function fillChainsInfo(\n chains?: API.Chain[],\n filter?: (chain: any) => boolean\n) {\n let _chains: API.Chain[] = [];\n\n chains?.forEach((item) => {\n item.chain_details.forEach((chain: any) => {\n const chainId = Number(chain.chain_id);\n const chainInfo = chainsInfoMap.get(chainId);\n\n const _chain: any = {\n network_infos: {\n name: chain.chain_name ?? chainInfo?.chainName ?? \"--\",\n chain_id: chainId,\n withdrawal_fee: chain.withdrawal_fee,\n cross_chain_withdrawal_fee: chain.cross_chain_withdrawal_fee,\n bridgeless: true,\n },\n token_infos: [\n {\n symbol: item.token,\n address: chain.contract_address,\n decimals: chain.decimals,\n display_name: chain.display_name,\n },\n ],\n };\n\n if (typeof filter === \"function\") {\n if (!filter(_chain)) return;\n }\n\n _chains.push(_chain);\n });\n });\n\n return _chains;\n}\n\n/** update network_infos by chain_info api(v1/public/chain_info) */\nexport function updateOrderlyChains(\n chains: API.Chain[],\n chainInfos: any,\n filter?: (chain: any) => boolean\n) {\n const _chains: API.Chain[] = [];\n chains.forEach((chain) => {\n let _chain = { ...chain };\n\n const networkInfo = chainInfos?.find(\n (item: any) => item.chain_id == chain.network_infos.chain_id\n );\n\n if (networkInfo) {\n const { name, public_rpc_url, currency_symbol, explorer_base_url } =\n networkInfo;\n _chain.network_infos = {\n ..._chain.network_infos,\n name,\n shortName: name,\n public_rpc_url,\n currency_symbol,\n bridge_enable: true,\n mainnet: true,\n explorer_base_url,\n est_txn_mins: null,\n };\n }\n\n if (typeof filter === \"function\") {\n if (!filter(_chain)) return;\n }\n\n _chains.push(_chain);\n });\n\n return _chains;\n}\n\n/** if chain is testnet, update testnet network_infos */\nexport function updateTestnetInfo(\n testnetArr: API.Chain[],\n chainId: number,\n chain: API.Chain\n) {\n if (isTestnet(chainId)) {\n const index = testnetArr?.findIndex(\n (item) => item.network_infos.chain_id === chainId\n );\n if (index > -1) {\n testnetArr[index] = chain;\n }\n }\n}\n\nexport function filterByAllowedChains(\n chains: API.Chain[],\n allowedChains?: FlatChain[]\n) {\n if (!allowedChains) {\n return chains;\n }\n\n return chains.filter((chain) =>\n allowedChains.some(\n (allowedChain) =>\n allowedChain.id === parseInt(chain?.network_infos?.chain_id as any)\n )\n );\n}\n"],"names":["fillChainsInfo","filterByAllowedChains","updateOrderlyChains","updateTestnetInfo","useChains","networkId","options","pick","pickField","swrOptions","filteredChains","allowedChains","configStore","useContext","OrderlyContext","filterFun","useRef","filter","current","chainsMap","Map","commonSwrOpts","revalidateIfStale","revalidateOnFocus","revalidateOnReconnect","revalidateOnMount","dedupingInterval","data","tokenChains","error","tokenError","useQuery","brokerId","get","chainInfos","chainInfoErr","chains","useMemo","orderlyChainsArr","testnetArr","TestnetChains","forEach","item","chainId","network_infos","chain_id","set","chain","mainnetArr","sort","a","b","bridgeless","mainnet","testnet","map","findByChainId","useCallback","field","nativeToken","token_infos","find","address","nativeTokenAddress","symbol","currency_symbol","prop","_chains","chain_details","Number","chainInfo","chainsInfoMap","_chain","name","chain_name","chainName","withdrawal_fee","cross_chain_withdrawal_fee","token","contract_address","decimals","display_name","push","networkInfo","public_rpc_url","explorer_base_url","shortName","bridge_enable","est_txn_mins","isTestnet","index","findIndex","some","allowedChain","id","parseInt"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDeposit.d.ts","sourceRoot":"","sources":["../../src/orderly/useDeposit.ts"],"names":[],"mappings":";AAEA,OAAO,EACL,GAAG,
|
|
1
|
+
{"version":3,"file":"useDeposit.d.ts","sourceRoot":"","sources":["../../src/orderly/useDeposit.ts"],"names":[],"mappings":";AAEA,OAAO,EACL,GAAG,EAKH,SAAS,EAEV,MAAM,wBAAwB,CAAC;AAMhC,MAAM,MAAM,iBAAiB,GAAG;IAE9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,UAAU,aAAc,iBAAiB;IAgUlD,gCAAgC;;;;;;;;;;;;;IAOhC,oBAAoB;;IAEpB,qCAAqC;;IAErC,2CAA2C;;uBApI3B,MAAM;;4BAhGyB,IAAI,SAAS,EAAE;4BAvC9C,MAAM,aAAa,MAAM;IAiRzC,yBAAyB;;CAG5B,CAAC"}
|
|
@@ -32,7 +32,7 @@ const useDeposit = (options)=>{
|
|
|
32
32
|
let chain;
|
|
33
33
|
// Orderly testnet supported chain
|
|
34
34
|
if (networkId === "testnet") {
|
|
35
|
-
chain = findByChainId(_types.ARBITRUM_TESTNET_CHAINID);
|
|
35
|
+
chain = findByChainId((0, _utils.isTestnet)(options?.srcChainId) ? options?.srcChainId : _types.ARBITRUM_TESTNET_CHAINID);
|
|
36
36
|
} else {
|
|
37
37
|
chain = findByChainId(options?.srcChainId);
|
|
38
38
|
// if is orderly un-supported chain
|
|
@@ -224,7 +224,7 @@ const useDeposit = (options)=>{
|
|
|
224
224
|
setDepositFee(fee);
|
|
225
225
|
;
|
|
226
226
|
}).catch((error)=>{
|
|
227
|
-
;
|
|
227
|
+
console.error("getDepositFee", error);
|
|
228
228
|
}).finally(()=>{
|
|
229
229
|
setDepositFeeRevalidating(false);
|
|
230
230
|
});
|
|
@@ -1 +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":["useDeposit","options","networkId","useConfig","balanceRevalidating","setBalanceRevalidating","useState","allowanceRevalidating","setAllowanceRevalidating","_","findByChainId","useChains","undefined","quantity","setQuantity","depositFee","setDepositFee","depositFeeRevalidating","setDepositFeeRevalidating","balance","setBalance","allowance","setAllowance","account","state","useAccount","prevAddress","useRef","getBalanceListener","targetChain","useMemo","chain","ARBITRUM_TESTNET_CHAINID","srcChainId","network_infos","bridgeless","ARBITRUM_MAINNET_CHAINID","dst","Error","USDC","token_infos","find","token","symbol","address","decimals","chainId","chain_id","network","shortName","isNativeToken","isNativeTokenChecker","fetchBalanceHandler","useCallback","assetsManager","getNativeBalance","getBalance","fetchBalance","e","fetchBalances","tokens","tasks","push","getBalanceByAddress","balances","Promise","all","getAllowance","vaultAddress","key","current","getAllowanceByDefaultAddress","queryBalance","useDebouncedCallback","tokenAddress","finally","queryAllowance","useEffect","status","AccountStatusEnum","Connected","srcToken","approve","amount","then","result","walletClient","pollTransactionReceiptWithBackoff","hash","receipt","deposit","res","value","Decimal","sub","toString","loopGetBalance","clearTimeout","setTimeout","err","getDepositFee","enquiryDepositFee","isNaN","Number","fee","BigInt","mul","DEPOSIT_FEE_RATE","toFixed","ROUND_UP","catch","error"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
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 NetworkId,\n isNativeTokenChecker,\n} from \"@orderly.network/types\";\nimport { Decimal, isTestnet } 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(\n isTestnet(options?.srcChainId!)\n ? options?.srcChainId!\n : ARBITRUM_TESTNET_CHAINID\n ) 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.error(\"getDepositFee\", 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":["useDeposit","options","networkId","useConfig","balanceRevalidating","setBalanceRevalidating","useState","allowanceRevalidating","setAllowanceRevalidating","_","findByChainId","useChains","undefined","quantity","setQuantity","depositFee","setDepositFee","depositFeeRevalidating","setDepositFeeRevalidating","balance","setBalance","allowance","setAllowance","account","state","useAccount","prevAddress","useRef","getBalanceListener","targetChain","useMemo","chain","isTestnet","srcChainId","ARBITRUM_TESTNET_CHAINID","network_infos","bridgeless","ARBITRUM_MAINNET_CHAINID","dst","Error","USDC","token_infos","find","token","symbol","address","decimals","chainId","chain_id","network","shortName","isNativeToken","isNativeTokenChecker","fetchBalanceHandler","useCallback","assetsManager","getNativeBalance","getBalance","fetchBalance","e","fetchBalances","tokens","tasks","push","getBalanceByAddress","balances","Promise","all","getAllowance","vaultAddress","key","current","getAllowanceByDefaultAddress","queryBalance","useDebouncedCallback","tokenAddress","finally","queryAllowance","useEffect","status","AccountStatusEnum","Connected","srcToken","approve","amount","then","result","walletClient","pollTransactionReceiptWithBackoff","hash","receipt","deposit","res","value","Decimal","sub","toString","loopGetBalance","clearTimeout","setTimeout","err","getDepositFee","enquiryDepositFee","isNaN","Number","fee","BigInt","mul","DEPOSIT_FEE_RATE","toFixed","ROUND_UP","catch","error","console"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1,4 +1,14 @@
|
|
|
1
|
-
export
|
|
1
|
+
export type UseWithdrawOptions = {
|
|
2
|
+
srcChainId?: number;
|
|
3
|
+
};
|
|
4
|
+
export declare const useWithdraw: (options?: UseWithdrawOptions) => {
|
|
5
|
+
dst: {
|
|
6
|
+
symbol: string;
|
|
7
|
+
decimals: number;
|
|
8
|
+
address: string | undefined;
|
|
9
|
+
chainId: number;
|
|
10
|
+
network: string;
|
|
11
|
+
};
|
|
2
12
|
withdraw: (inputs: {
|
|
3
13
|
chainId: number;
|
|
4
14
|
token: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWithdraw.d.ts","sourceRoot":"","sources":["../../src/orderly/useWithdraw.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useWithdraw.d.ts","sourceRoot":"","sources":["../../src/orderly/useWithdraw.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,kBAAkB,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,eAAO,MAAM,WAAW,aAAc,kBAAkB;;;;;;;;uBAc3C;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,uBAAuB,EAAE,OAAO,CAAC;KAClC,KAAG,QAAQ,GAAG,CAAC;;;;;;CAsGnB,CAAC"}
|
|
@@ -12,10 +12,16 @@ const _react = require("react");
|
|
|
12
12
|
const _useHoldingStream = require("./useHoldingStream");
|
|
13
13
|
const _useCollateral = require("./useCollateral");
|
|
14
14
|
const _useAccount = require("../useAccount");
|
|
15
|
-
const
|
|
15
|
+
const _useChains = require("./useChains");
|
|
16
|
+
const _types = require("@orderly.network/types");
|
|
17
|
+
const _useConfig = require("../useConfig");
|
|
18
|
+
const _utils = require("@orderly.network/utils");
|
|
19
|
+
const useWithdraw = (options)=>{
|
|
16
20
|
const { account, state } = (0, _useAccount.useAccount)();
|
|
17
21
|
const [isLoading, setIsLoading] = (0, _react.useState)(false);
|
|
18
22
|
const { unsettledPnL, availableBalance, freeCollateral } = (0, _useCollateral.useCollateral)();
|
|
23
|
+
const networkId = (0, _useConfig.useConfig)("networkId");
|
|
24
|
+
const [_, { findByChainId }] = (0, _useChains.useChains)(undefined);
|
|
19
25
|
// const withdrawQueue = useRef<number[]>([]);
|
|
20
26
|
const withdraw = (0, _react.useCallback)((inputs)=>{
|
|
21
27
|
return account.assetsManager.withdraw(inputs).then((res)=>{
|
|
@@ -69,7 +75,40 @@ const useWithdraw = ()=>{
|
|
|
69
75
|
freeCollateral,
|
|
70
76
|
unsettledPnL
|
|
71
77
|
]);
|
|
78
|
+
const targetChain = (0, _react.useMemo)(()=>{
|
|
79
|
+
let chain;
|
|
80
|
+
// Orderly testnet supported chain
|
|
81
|
+
if (networkId === "testnet") {
|
|
82
|
+
chain = findByChainId((0, _utils.isTestnet)(options?.srcChainId) ? options?.srcChainId : _types.ARBITRUM_TESTNET_CHAINID);
|
|
83
|
+
} else {
|
|
84
|
+
chain = findByChainId(options?.srcChainId);
|
|
85
|
+
// if is orderly un-supported chain
|
|
86
|
+
if (!chain?.network_infos?.bridgeless) {
|
|
87
|
+
// Orderly mainnet supported chain
|
|
88
|
+
chain = findByChainId(_types.ARBITRUM_MAINNET_CHAINID);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return chain;
|
|
92
|
+
}, [
|
|
93
|
+
networkId,
|
|
94
|
+
findByChainId,
|
|
95
|
+
options?.srcChainId
|
|
96
|
+
]);
|
|
97
|
+
// Mantle chain: USDC → USDC.e
|
|
98
|
+
const dst = (0, _react.useMemo)(()=>{
|
|
99
|
+
const USDC = targetChain?.token_infos.find((token)=>token.symbol === "USDC");
|
|
100
|
+
return {
|
|
101
|
+
symbol: USDC?.display_name || "USDC",
|
|
102
|
+
decimals: USDC?.decimals || 6,
|
|
103
|
+
address: USDC?.address,
|
|
104
|
+
chainId: targetChain?.network_infos?.chain_id,
|
|
105
|
+
network: targetChain?.network_infos?.shortName
|
|
106
|
+
};
|
|
107
|
+
}, [
|
|
108
|
+
targetChain
|
|
109
|
+
]);
|
|
72
110
|
return {
|
|
111
|
+
dst,
|
|
73
112
|
withdraw,
|
|
74
113
|
isLoading,
|
|
75
114
|
maxAmount,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/orderly/useWithdraw.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\nimport { useHoldingStream } from \"./useHoldingStream\";\nimport { useCollateral } from \"./useCollateral\";\nimport { useAccount } from \"../useAccount\";\n\nexport const useWithdraw = () => {\n const { account, state } = useAccount();\n\n const [isLoading, setIsLoading] = useState(false);\n\n const { unsettledPnL, availableBalance, freeCollateral } = useCollateral();\n\n // const withdrawQueue = useRef<number[]>([]);\n\n const withdraw = useCallback(\n (inputs: {\n chainId: number;\n token: string;\n amount: string;\n allowCrossChainWithdraw: boolean;\n }): Promise<any> => {\n return account.assetsManager.withdraw(inputs).then((res: any) => {\n // if (res.success) {\n // withdrawQueue.current.push(res.data.withdraw_id);\n // }\n return res;\n });\n },\n [state]\n );\n\n const { usdc } = useHoldingStream();\n\n // useEffect(() => {\n // const unsubscribe = ws.privateSubscribe(\n // {\n // id: \"wallet\",\n // event: \"subscribe\",\n // topic: \"wallet\",\n // ts: Date.now(),\n // },\n // {\n // onMessage: (data: any) => {\n // //\n // const { id } = data;\n\n // if (withdrawQueue.current.includes(id)) {\n // withdrawQueue.current = withdrawQueue.current.filter(\n // (item) => item !== id\n // );\n // ee.emit(\"withdraw:success\", data);\n // }\n // },\n // }\n // );\n\n // return () => unsubscribe();\n // }, []);\n\n const maxAmount = useMemo(() => {\n // if (!usdc || !usdc.holding) return 0;\n\n // if (unsettledPnL >= 0) return usdc?.holding ?? 0;\n\n // return new Decimal(usdc.holding).add(unsettledPnL).toNumber();\n\n return freeCollateral;\n }, [freeCollateral]);\n\n const availableWithdraw = useMemo(() => {\n if (unsettledPnL < 0) {\n return freeCollateral;\n } else {\n return freeCollateral - unsettledPnL;\n }\n }, [freeCollateral, unsettledPnL]);\n\n return {\n withdraw,\n isLoading,\n maxAmount,\n availableBalance,\n availableWithdraw,\n unsettledPnL,\n };\n};\n"],"names":["useWithdraw","account","state","useAccount","isLoading","setIsLoading","useState","unsettledPnL","availableBalance","freeCollateral","useCollateral","withdraw","useCallback","inputs","assetsManager","then","res","usdc","useHoldingStream","maxAmount","useMemo","availableWithdraw"],"rangeMappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/orderly/useWithdraw.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\nimport { useHoldingStream } from \"./useHoldingStream\";\nimport { useCollateral } from \"./useCollateral\";\nimport { useAccount } from \"../useAccount\";\nimport { useChains } from \"./useChains\";\nimport {\n API,\n ARBITRUM_MAINNET_CHAINID,\n ARBITRUM_TESTNET_CHAINID,\n} from \"@orderly.network/types\";\nimport { useConfig } from \"../useConfig\";\nimport { isTestnet } from \"@orderly.network/utils\";\n\nexport type UseWithdrawOptions = { srcChainId?: number };\n\nexport const useWithdraw = (options?: UseWithdrawOptions) => {\n const { account, state } = useAccount();\n\n const [isLoading, setIsLoading] = useState(false);\n\n const { unsettledPnL, availableBalance, freeCollateral } = useCollateral();\n\n const networkId = useConfig(\"networkId\");\n\n const [_, { findByChainId }] = useChains(undefined);\n\n // const withdrawQueue = useRef<number[]>([]);\n\n const withdraw = useCallback(\n (inputs: {\n chainId: number;\n token: string;\n amount: string;\n allowCrossChainWithdraw: boolean;\n }): Promise<any> => {\n return account.assetsManager.withdraw(inputs).then((res: any) => {\n // if (res.success) {\n // withdrawQueue.current.push(res.data.withdraw_id);\n // }\n return res;\n });\n },\n [state]\n );\n\n const { usdc } = useHoldingStream();\n\n // useEffect(() => {\n // const unsubscribe = ws.privateSubscribe(\n // {\n // id: \"wallet\",\n // event: \"subscribe\",\n // topic: \"wallet\",\n // ts: Date.now(),\n // },\n // {\n // onMessage: (data: any) => {\n // //\n // const { id } = data;\n\n // if (withdrawQueue.current.includes(id)) {\n // withdrawQueue.current = withdrawQueue.current.filter(\n // (item) => item !== id\n // );\n // ee.emit(\"withdraw:success\", data);\n // }\n // },\n // }\n // );\n\n // return () => unsubscribe();\n // }, []);\n\n const maxAmount = useMemo(() => {\n // if (!usdc || !usdc.holding) return 0;\n\n // if (unsettledPnL >= 0) return usdc?.holding ?? 0;\n\n // return new Decimal(usdc.holding).add(unsettledPnL).toNumber();\n\n return freeCollateral;\n }, [freeCollateral]);\n\n const availableWithdraw = useMemo(() => {\n if (unsettledPnL < 0) {\n return freeCollateral;\n } else {\n return freeCollateral - unsettledPnL;\n }\n }, [freeCollateral, unsettledPnL]);\n\n const targetChain = useMemo(() => {\n let chain: API.Chain | undefined;\n\n // Orderly testnet supported chain\n if (networkId === \"testnet\") {\n chain = findByChainId(\n isTestnet(options?.srcChainId!)\n ? options?.srcChainId!\n : ARBITRUM_TESTNET_CHAINID\n ) 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 // Mantle chain: USDC → USDC.e\n const dst = useMemo(() => {\n const USDC = targetChain?.token_infos.find(\n (token: API.TokenInfo) => token.symbol === \"USDC\"\n );\n\n return {\n symbol: USDC?.display_name || \"USDC\",\n decimals: USDC?.decimals || 6,\n address: USDC?.address,\n chainId: targetChain?.network_infos?.chain_id,\n network: targetChain?.network_infos?.shortName,\n };\n }, [targetChain]);\n\n return {\n dst,\n withdraw,\n isLoading,\n maxAmount,\n availableBalance,\n availableWithdraw,\n unsettledPnL,\n };\n};\n"],"names":["useWithdraw","options","account","state","useAccount","isLoading","setIsLoading","useState","unsettledPnL","availableBalance","freeCollateral","useCollateral","networkId","useConfig","_","findByChainId","useChains","undefined","withdraw","useCallback","inputs","assetsManager","then","res","usdc","useHoldingStream","maxAmount","useMemo","availableWithdraw","targetChain","chain","isTestnet","srcChainId","ARBITRUM_TESTNET_CHAINID","network_infos","bridgeless","ARBITRUM_MAINNET_CHAINID","dst","USDC","token_infos","find","token","symbol","display_name","decimals","address","chainId","chain_id","network","shortName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;+BAeaA;;;eAAAA;;;uBAfkC;kCACd;+BACH;4BACH;2BACD;uBAKnB;2BACmB;uBACA;AAInB,MAAMA,cAAc,CAACC;IAC1B,MAAM,EAAEC,OAAO,EAAEC,KAAK,EAAE,GAAGC,IAAAA,sBAAU;IAErC,MAAM,CAACC,WAAWC,aAAa,GAAGC,IAAAA,eAAQ,EAAC;IAE3C,MAAM,EAAEC,YAAY,EAAEC,gBAAgB,EAAEC,cAAc,EAAE,GAAGC,IAAAA,4BAAa;IAExE,MAAMC,YAAYC,IAAAA,oBAAS,EAAC;IAE5B,MAAM,CAACC,GAAG,EAAEC,aAAa,EAAE,CAAC,GAAGC,IAAAA,oBAAS,EAACC;IAEzC,8CAA8C;IAE9C,MAAMC,WAAWC,IAAAA,kBAAW,EAC1B,CAACC;QAMC,OAAOlB,QAAQmB,aAAa,CAACH,QAAQ,CAACE,QAAQE,IAAI,CAAC,CAACC;YAClD,qBAAqB;YACrB,sDAAsD;YACtD,IAAI;YACJ,OAAOA;QACT;IACF,GACA;QAACpB;KAAM;IAGT,MAAM,EAAEqB,IAAI,EAAE,GAAGC,IAAAA,kCAAgB;IAEjC,oBAAoB;IACpB,6CAA6C;IAC7C,QAAQ;IACR,sBAAsB;IACtB,4BAA4B;IAC5B,yBAAyB;IACzB,wBAAwB;IACxB,SAAS;IACT,QAAQ;IACR,oCAAoC;IACpC,aAAa;IACb,+BAA+B;IAE/B,oDAAoD;IACpD,kEAAkE;IAClE,oCAAoC;IACpC,eAAe;IACf,+CAA+C;IAC/C,YAAY;IACZ,WAAW;IACX,QAAQ;IACR,OAAO;IAEP,gCAAgC;IAChC,UAAU;IAEV,MAAMC,YAAYC,IAAAA,cAAO,EAAC;QACxB,wCAAwC;QAExC,oDAAoD;QAEpD,iEAAiE;QAEjE,OAAOjB;IACT,GAAG;QAACA;KAAe;IAEnB,MAAMkB,oBAAoBD,IAAAA,cAAO,EAAC;QAChC,IAAInB,eAAe,GAAG;YACpB,OAAOE;QACT,OAAO;YACL,OAAOA,iBAAiBF;QAC1B;IACF,GAAG;QAACE;QAAgBF;KAAa;IAEjC,MAAMqB,cAAcF,IAAAA,cAAO,EAAC;QAC1B,IAAIG;QAEJ,kCAAkC;QAClC,IAAIlB,cAAc,WAAW;YAC3BkB,QAAQf,cACNgB,IAAAA,gBAAS,EAAC9B,SAAS+B,cACf/B,SAAS+B,aACTC,+BAAwB;QAEhC,OAAO;YACLH,QAAQf,cAAcd,SAAS+B;YAC/B,mCAAmC;YACnC,IAAI,CAACF,OAAOI,eAAeC,YAAY;gBACrC,kCAAkC;gBAClCL,QAAQf,cAAcqB,+BAAwB;YAChD;QACF;QACA,OAAON;IACT,GAAG;QAAClB;QAAWG;QAAed,SAAS+B;KAAW;IAElD,8BAA8B;IAC9B,MAAMK,MAAMV,IAAAA,cAAO,EAAC;QAClB,MAAMW,OAAOT,aAAaU,YAAYC,KACpC,CAACC,QAAyBA,MAAMC,MAAM,KAAK;QAG7C,OAAO;YACLA,QAAQJ,MAAMK,gBAAgB;YAC9BC,UAAUN,MAAMM,YAAY;YAC5BC,SAASP,MAAMO;YACfC,SAASjB,aAAaK,eAAea;YACrCC,SAASnB,aAAaK,eAAee;QACvC;IACF,GAAG;QAACpB;KAAY;IAEhB,OAAO;QACLQ;QACAnB;QACAb;QACAqB;QACAjB;QACAmB;QACApB;IACF;AACF"}
|
package/lib/version.d.ts
CHANGED
package/lib/version.js
CHANGED
|
@@ -10,8 +10,8 @@ Object.defineProperty(exports, "default", {
|
|
|
10
10
|
});
|
|
11
11
|
if (typeof window !== 'undefined') {
|
|
12
12
|
window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};
|
|
13
|
-
window.__ORDERLY_VERSION__["@orderly.network/hooks"] = "1.5.
|
|
13
|
+
window.__ORDERLY_VERSION__["@orderly.network/hooks"] = "1.5.5";
|
|
14
14
|
}
|
|
15
|
-
const _default = "1.5.
|
|
15
|
+
const _default = "1.5.5";
|
|
16
16
|
|
|
17
17
|
//# sourceMappingURL=version.js.map
|
package/lib/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/version.ts"],"sourcesContent":["\ndeclare global {\n interface Window {\n __ORDERLY_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif(typeof window !== 'undefined') {\n window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};\n window.__ORDERLY_VERSION__[\"@orderly.network/hooks\"] = \"1.5.
|
|
1
|
+
{"version":3,"sources":["../src/version.ts"],"sourcesContent":["\ndeclare global {\n interface Window {\n __ORDERLY_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif(typeof window !== 'undefined') {\n window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};\n window.__ORDERLY_VERSION__[\"@orderly.network/hooks\"] = \"1.5.5\";\n};\n\nexport default \"1.5.5\";\n"],"names":["window","__ORDERLY_VERSION__"],"rangeMappings":";;;;;;;;;;;;;;","mappings":";;;;+BAaA;;;eAAA;;;AALA,IAAG,OAAOA,WAAW,aAAa;IAC9BA,OAAOC,mBAAmB,GAAGD,OAAOC,mBAAmB,IAAI,CAAC;IAC5DD,OAAOC,mBAAmB,CAAC,yBAAyB,GAAG;AAC3D;MAEA,WAAe"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
+
import type { EIP1193Provider } from '@web3-onboard/common';
|
|
2
3
|
export type ConnectedChain = {
|
|
3
4
|
id: number | string;
|
|
4
5
|
};
|
|
@@ -8,7 +9,7 @@ export type WalletAccount = {
|
|
|
8
9
|
export interface WalletState {
|
|
9
10
|
label: string;
|
|
10
11
|
icon: string;
|
|
11
|
-
provider:
|
|
12
|
+
provider: EIP1193Provider;
|
|
12
13
|
accounts: WalletAccount[];
|
|
13
14
|
chains: ConnectedChain[];
|
|
14
15
|
instance?: unknown;
|
|
@@ -21,7 +22,7 @@ export interface WalletConnectorContextState {
|
|
|
21
22
|
chainId: string | number;
|
|
22
23
|
}) => Promise<any>;
|
|
23
24
|
chains: any[];
|
|
24
|
-
wallet:
|
|
25
|
+
wallet: WalletState;
|
|
25
26
|
connectedChain: ConnectedChain | null;
|
|
26
27
|
settingChain: boolean;
|
|
27
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walletConnectorContext.d.ts","sourceRoot":"","sources":["../src/walletConnectorContext.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"walletConnectorContext.d.ts","sourceRoot":"","sources":["../src/walletConnectorContext.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAG3D,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;CACrB,CAAC;AACF,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;CAKjB,CAAC;AACF,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACtC,UAAU,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7C,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,CAAC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAClE,MAAM,EAAE,GAAG,EAAE,CAAC;IAEd,MAAM,EAAE,WAAW,CAAC;IACpB,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IAEtC,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,eAAO,MAAM,sBAAsB,sDAC4C,CAAC;AAEhF,eAAO,MAAM,kBAAkB,mCAE9B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/walletConnectorContext.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\n\nexport type ConnectedChain = {\n id: number | string;\n};\nexport type WalletAccount = {\n address: string;\n // ens: Ens | null;\n // uns: Uns | null;\n // balance: Balances | null;\n // secondaryTokens?: SecondaryTokenBalances[] | null;\n};\nexport interface WalletState {\n label: string;\n icon: string;\n provider:
|
|
1
|
+
{"version":3,"sources":["../src/walletConnectorContext.tsx"],"sourcesContent":["import type { EIP1193Provider } from '@web3-onboard/common'\nimport { createContext, useContext } from \"react\";\n\nexport type ConnectedChain = {\n id: number | string;\n};\nexport type WalletAccount = {\n address: string;\n // ens: Ens | null;\n // uns: Uns | null;\n // balance: Balances | null;\n // secondaryTokens?: SecondaryTokenBalances[] | null;\n};\nexport interface WalletState {\n label: string;\n icon: string;\n provider: EIP1193Provider;\n accounts: WalletAccount[];\n chains: ConnectedChain[];\n instance?: unknown;\n}\n\nexport interface WalletConnectorContextState {\n connect: () => Promise<WalletState[]>;\n disconnect: (options: any) => Promise<any[]>;\n connecting: boolean;\n setChain: (options: { chainId: string | number }) => Promise<any>;\n chains: any[];\n // switchChain: (options: { chainId: string }) => Promise<any>;\n wallet: WalletState;\n connectedChain: ConnectedChain | null;\n\n settingChain: boolean;\n}\n\nexport const WalletConnectorContext =\n createContext<WalletConnectorContextState>({} as WalletConnectorContextState);\n\nexport const useWalletConnector = () => {\n return useContext(WalletConnectorContext);\n};\n"],"names":["WalletConnectorContext","useWalletConnector","createContext","useContext"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;;;;IAmCaA,sBAAsB;eAAtBA;;IAGAC,kBAAkB;eAAlBA;;;uBArC6B;AAkCnC,MAAMD,uCACXE,IAAAA,oBAAa,EAA8B,CAAC;AAEvC,MAAMD,qBAAqB;IAChC,OAAOE,IAAAA,iBAAU,EAACH;AACpB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orderly.network/hooks",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.5",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "esm/index.js",
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
"@types/jest": "^29.5.3",
|
|
26
26
|
"@types/ramda": "^0.29.3",
|
|
27
27
|
"@types/react": "^18.2.38",
|
|
28
|
+
"@web3-onboard/common": "^2.3.4",
|
|
28
29
|
"babel-jest": "^29.6.1",
|
|
29
30
|
"jest": "^29.6.1",
|
|
30
31
|
"react-test-renderer": "^18.2.0",
|
|
@@ -32,7 +33,7 @@
|
|
|
32
33
|
"tsup": "^7.1.0",
|
|
33
34
|
"typedoc": "^0.24.8",
|
|
34
35
|
"typescript": "^5.1.6",
|
|
35
|
-
"tsconfig": "0.3.
|
|
36
|
+
"tsconfig": "0.3.5"
|
|
36
37
|
},
|
|
37
38
|
"dependencies": {
|
|
38
39
|
"@akamfoad/qr": "^0.4.0",
|
|
@@ -40,11 +41,11 @@
|
|
|
40
41
|
"swr": "2.2.4",
|
|
41
42
|
"use-constant": "^1.1.1",
|
|
42
43
|
"use-debounce": "^9.0.4",
|
|
43
|
-
"@orderly.network/
|
|
44
|
-
"@orderly.network/
|
|
45
|
-
"@orderly.network/
|
|
46
|
-
"@orderly.network/
|
|
47
|
-
"@orderly.network/utils": "1.5.
|
|
44
|
+
"@orderly.network/core": "1.5.5",
|
|
45
|
+
"@orderly.network/net": "1.5.5",
|
|
46
|
+
"@orderly.network/perp": "3.3.5",
|
|
47
|
+
"@orderly.network/types": "1.5.5",
|
|
48
|
+
"@orderly.network/utils": "1.5.5"
|
|
48
49
|
},
|
|
49
50
|
"publishConfig": {
|
|
50
51
|
"access": "public"
|